根据网易云课程整理,禁转
测序文件读入写出
use Bio::SeqIO;
use Bio::Seq;
use Data::Dumper;
#fasta
$in = Bio::SeqIO->new(-file => "D:/test.fa", -format => 'Fasta', -alphabet =>"dna");
$out = Bio::SeqIO->new(-file => ">D:/aa.fa", -format => 'EMBL');
while (my$seqobj = $in->next_seq()){
my $id = $seqobj->id(); #the human read-able id of the sequence
my $seq = $seqobj->seq(); #string of sequence
my $desc = $seqobj->desc(); #a description of the sequence
my $alphabet = $seqobj->alphabet(); #one of 'dna', 'rna', 'protein'
my $len = $seqobj->length();
print $seqobj."\n";
print Dumper($seqobj);
$out->write_seq($seqobj); #实现格式转换
last; #只读一条序列
}
#fastq双端
$in1 = Bio::SeqIO -> new(-file =>"D:/test_1.fq", -format => 'fastq');
$in2 = Bio::SeqIO -> new(-file =>"D:/test_2.fq", -format => 'fastq');
$out = Bio::SeqIO->new(-file => ">D:/test_1.fa", -format => 'fasta');
while (my $seqobj1 = $in1 ->next_seq() and my $seqobj2 = $in2 -> next_seq()){
my ($id1, $id2) = ($seqobj1->id, $seqobj2->id);
my ($seq1,$seq2) = ($seqobj1->seq, $seqobj2->seq);
my ($desc1,$desc2) = ($seqobj1->desc, $seqobj2 ->desc);
my ($alphabet1, $alphabet2) = ($seqobj1->alphabet, $seqobj2->alphabet); #one of 'dna', 'rna', 'protein'
my ($len1,$len2) = ($seqobj1->length, $seqobj2 ->length);
my ($qual1, $qual2) = ($seqobj1->qual,$seqobj2->qual);
$out->write_seq($seqobj1,$seqobj2);
last;
}
write_seq()只能传入bioseq对象,接收字符串会报错
序列截取
#创建bioseq对象
$seqobj = Bio::Seq->new(-seq => "aaccggtt", -desc => "Sample Bio::Seq object", -id => "ID1");
$out = Bio::SeqIO->new(-file =>">./subseq.fa", -format=>"Fasta");
#subseq截取,返回字符串
my $subseq = $seqobj->subseq(3,5);
#注意:这里的索引从1开始,所以截取3-5获得的序列是: ccg
print $subseq."\n";
my$newseqobj = Bio::Seq ->new(-seq=$subseq, -desc=>"subseq 3-5", -id="ID2");
$out->write_seq($newseqobj);
#trunc截取,返回bioseq对象,desc和id信息不变
my$subseqobj = $seqobj->trunc(3,5);
$out->write_seq($subseqobj);
反向互补序列
my$revcom = $seqobj ->revcom;返回bioseq对象
蛋白质翻译
my$translate = $seqobj->translate(undef,undef,0);
translate第一个参数stop符号,默认*;第二个参数unknown amino acid (‘X’);第三个参数开始位置,比如0,1,2
版权声明:本文为ruby912原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。