输出序列文件
下面将展示如何利用两个模块创建一个序列文件。上例中,已经有了一个序列对象$seq_obj,然后需要创建另一个用于读写文件的对象,SeqIO对象。IO表示Input-Output(输入输出)。Bio::SeqIO可用于读取和输出各种Bioperl支持的序列格式文件(支持的序列格式列表详见SeqIO HOWTO)。创建Bio::SeqIO对象和前述使用new()创建序列对象的方法类似,如下所示:
use Bio::SeqIO; $seqio_obj = Bio::SeqIO->new(-file => '>sequence.fasta', -format => 'fasta' );
注:在-file参数中,“>”符号表示要创建一个名字为“sequence.fasta”的文件用于内容输出。这和一般Perl脚本中,使用函数open()来写文件也是用“>”。(译者注:< 输入、> 输出)。在“-format”参数中声明序列格式是“fasta”,所以创建的会是一个fasta格式的序列文件。
现在来把刚才的两个例子放在一起:
#!/bin/perl -w use Bio::Seq; use Bio::SeqIO; $seq_obj = Bio::Seq->new(-seq => "aaaatgggggggggggccccgtt", -display_id => "#12345", -desc => "example 1", -alphabet => "dna" ); $seqio_obj = Bio::SeqIO->new(-file => '>sequence.fasta', -format => 'fasta' ); $seqio_obj->write_seq($seq_obj);
最后一行write_seq()是个新东西,是不?在这一行中,序列对象$seq_obj作为write_seq()的参数传递给了SeqIO对象。从另一个角度看,SeqIO对象能够识别并处理序列对象,并将此序列对象以fasta格式输出到一个文件中。来试着运行一下这个脚本:
perl seqio.pl
在同一文件夹下会有一个新的文件,“sequence.fasta”,内容如下:
>#12345 example 1 aaaatgggggggggggccccgtt
SeqIO非常聪明,比如我们把-format参数设置为“genbank”,序列文件会变成这样:
LOCUS #12345 23 bp dna linear UNK DEFINITION example 1 ACCESSION unknown FEATURES Location/Qualifiers BASE COUNT 4 a 4 c 12 g 3 t ORIGIN 1 aaaatggggg ggggggcccc gtt //
本文来源:http://bioops.info/2011/09/bioperl-howto-write-seq-to-file/