输出序列文件
下面将展示如何利用两个模块创建一个序列文件。上例中,已经有了一个序列对象$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/