这里所说的序列格式,都是实际应用中常常碰到的格式。例如Genbank格式、Fasta格式等。
大致上支持以下的格式:
AB1 ABI tracefile format ABI ABI tracefile format ALF ALF tracefile format CTF CTF tracefile format EMBL EMBL format EXP Staden tagged experiment tracefile format Fasta FASTA format Fastq Fastq format GCG GCG format GenBank GenBank format PIR Protein Information Resource format PLN Staden plain tracefile format SCF SCF tracefile format ZTR ZTR tracefile format ace ACeDB sequence format game GAME XML format locuslink LocusLink annotation (LL_tmpl format only) phd phred output qual Quality values (get a sequence of quality scores) raw Raw format (one sequence per line, no ID) swiss Swissprot format
不过,最经常用到的也不多。按我的经验来说有:Fasta,GenBank,EMBL,swiss。如果你不知道这些格式的具体含义,想要了解一下的话,没问题。下面给你看些例子就能大概明白了。
下面是Fasta的格式,点击下面的链接查看完整的序列
>NM_008261.2 Mus musculus hepatic nuclear factor 4, alpha (Hnf4a), mRNA GGGACCTGGGAGGAGGCAGGAGGAGGGCGGGGACGGGGGGGGCTGGGGC ............
下面是GenBank格式,点击下面的链接查看完整的格式
LOCUS NM_008261 4371 bp mRNA linear ROD 07-JUN-2009 DEFINITION Mus musculus hepatic nuclear factor 4, alpha (Hnf4a), mRNA. ACCESSION NM_008261 VERSION NM_008261.2 GI:46575915 ..........
下面是EMBL格式,点击下面的链接查看完整的格式(swiss的格式类似这样,但序列是蛋白的)
ID AF509467; SV 1; linear; genomic DNA; STD; HUM; 311 BP. XX AC AF509467; XX DT 27-MAY-2002 (Rel. 71, Created)
大概类似这样。如果你想了解这些格式的详细信息,可以搜索一下本站的内容。一定程序上不会让你失望。好了,废话少讲。下面进入正题,为你介绍用BioPerl来实现这些格式间的相互转换。
1,你的序列文件放在’inputfile’,输出后放在’>output.fa’,下面的结果是把GenBank格式转换为Fasta格式。这些参数根据你的需要更改。
#!/usr/bin/perl use Bio::SeqIO; $seqin = Bio::SeqIO->new( -format => 'GenBank' , -file => 'inputfile'); $seqout= Bio::SeqIO->new( -format => 'Fasta', -file => '>output.fa'); while((my $seqobj = $seqin->next_seq())) { $seqout->write_seq($seqobj); }
2,下面的又比较高级点。基本上无需更改源文件。把下面的命名为’reformat’的文件,用下面的命令运行:
perl reformat format1 format2 < input > output
这样子程序就会把input这个文件的格式(format1)转换为另一个格式(format2),并输出到output。
#!/usr/bin/perl $format1 = shift; $format2 = shift || die "Usage: reformat format1 format2 < input > output"; use Bio::SeqIO; $in = Bio::SeqIO->newFh(-format => $format1, -fh => \*ARGV ); $out = Bio::SeqIO->newFh(-format => $format2 ); print $out $_ while <$in>;
强大而又高效率的代码。想了解更多,用命令perldoc Bio::SeqIO,不明白这个命令的朋友也就无需明白啦。如果你有兴趣进一步了解的话,这当然不是个难题。
另外还有一个更加强大的脚本,支持更多的格式转换。例如像序列比对的格式之类的。在这里就不多讲啦,如果你的好奇心无药可救,那就给个链接看看:bpsreformat – convert sequence formats。如果看完还有兴趣,那就留个言,我们可以坐下来一起慢慢探讨。
14条回应:“BioPerl指南 – 序列格式的转换”
正在用bioperl,多多讨论。
larry推荐加上
use strict;
bioperl官网也建议加上。shabang行加上 -w
用PERL语言实现FASTA格式转换为EMBL格式的源程序…
–
嗯 刚刚是试一下.. 尴尬
就是求一个 perl语言 是FSATA格式转换为 EMBL 或其他格式的 程序 .. 需要源代码…..
上面文章里的代码不是可以么??
他用的是perldoc Bio::SeqIO 这个确实太高端了 .. 我的意思是说 只用一些 比如 模式匹配 文件系统以及格式化输出 以及文件读写 等比较常用一点的来写 … 他这个 Bio::SeqIO 直接就得到了结果…. 具体过程没有..
biopython 比 bioperl 语句更少,呵呵
use Bio::SeqIO;
my $in = Bio::SeqIO->new( -format => ‘GenBank’ , -file => ‘sequence.gb’);
my $out= Bio::SeqIO->new( -format => ‘Fasta’, -file => ‘>output.fsa’);
my $seqObj = $in->next_seq();
while ( defined($seqObj) ){
$out->write_seq($seqObj);
$seqObj = $in->next_seq();
}
博主说得很对很同意博主的观点.5
[握手] [强] thanks,the more talks,the better!
我是新手,可是我有很多问题,希望能跟你讨论一下。我的QQ442441455。谢谢!!
可到yunbio.com提问
能给我biopython的代码么?
鉴定完毕.!