Bioops

Bioinformatics=(ACGAAG->AK)+(#!/bin/sh)+(P(A|B)=P(B|A)*P(A)/P(B))

Bioperl输出序列文件(Bioperl HOWTO翻译3)

| Comments

输出序列文件

英文原文

下面将展示如何利用两个模块创建一个序列文件。上例中,已经有了一个序列对象$seq_obj,然后需要创建另一个用于读写文件的对象,SeqIO对象。IO表示Input-Output(输入输出)。Bio::SeqIO可用于读取和输出各种Bioperl支持的序列格式文件(支持的序列格式列表详见SeqIO HOWTO)。创建Bio::SeqIO对象和前述使用new()创建序列对象的方法类似,如下所示:

1
2
use Bio::SeqIO;
$seqio_obj = Bio::SeqIO->new(-file => '>sequence.fasta', -format => 'fasta' );

注:在-file参数中,“>”符号表示要创建一个名字为“sequence.fasta”的文件用于内容输出。这和一般Perl脚本中,使用函数open()来写文件也是用“>”。(译者注:< 输入、> 输出)。在“-format”参数中声明序列格式是“fasta”,所以创建的会是一个fasta格式的序列文件。

现在来把刚才的两个例子放在一起:

1
2
3
4
5
6
7
8
9
#!/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
//

Comments