Bioperl从网络数据库中提取一个序列(Bioperl HOWTO翻译5)

评论2,545

从网络数据库中提取一个序列

英文原文

Bioperl强大的功能之一就是可以从各种类型的资源中提取序列而不用考虑其格式,序列文件、网络数据库、本地数据库等。在此举例说明如何利用Bio::DB::Genbank模块从Genbank中提取一个序列条目。

先声明要使用的模块:

use Bio::DB::GenBank;

也可以从下列数据库中提取序列:SwissProt (Bio::DB::SwissProt)、GenPept (Bio::DB::GenPept)、 EMBL (Bio::DB::EMBL)、SeqHound (Bio::DB::SeqHound)、Entrez Gene (Bio::DB::EntrezGene)、 RefSeq (Bio::DB::RefSeq)等。

然后创建一个对象:

use Bio::DB::GenBank;
$db_obj = Bio::DB::GenBank->new;

这里创建了一个“数据库对象”,但并没有任何参数。再来看数据库对象的一个有用的功能:

use Bio::DB::GenBank;
$db_obj = Bio::DB::GenBank->new;
$seq_obj = $db_obj->get_Seq_by_id(2);

get_Seq_by_id方法 识别Genbank的GI号。另外,get_Seq_by_acc 可识别accession号 (e.g. “A12345″),

get_Seq_by_version可识别带版本号的accession号(e.g. “A12345.2″)。相应的方法只能识别相应的条目标识号。

Bioperl可以从数据库中提取一个或多个序列。但如果要提取大批量的序列时,要避免使用循环,否则NCBI会认为是滥用其服务资源而封掉使用者的IP。有其他很多更好更快的方法来大批量提取,例如,下载GenBank的某一部分数据(译者注:比如可以从NCBI ftp只下载人类的mRNA序列),然后从中直接提取需要的序列;或者使用格式化过的数据库(使用本地BLAST中formatdb格式化),然后用fastacmd(也在本地BLAST程序中)提取所需要的序列。

本文来源:http://bioops.info/2011/09/bioperl-howto-retrieve-seq-from-database/

发表评论

匿名网友