1. 程式人生 > >bioperl 自動化下載genbank 中的序列

bioperl 自動化下載genbank 中的序列

bio sca 1-1 接受 分享 .org gen weight org

當我們想要從genbank 中下載序列的時候,總需要點擊右上角的download 按鈕,選擇對應的格式,然後通過瀏覽器進行下載,這樣反復的點擊很費時間了

其實可以通過bioperl 自動化的完成下載;

代碼如下:

#!/usr/bin/env perl
use Bio::SeqIO;
use Bio::DB::GenBank;


my ($acc, $out_dir) = @ARGV;

die "Usage:perl $0 <acc_number> <out_dir>\n" if scalar @ARGV != 2;


system qq{mkdir -p $out_dir
} if not -d $out_dir; my $seq_obj = retriev_seq($acc); download_seq($seq_obj, fasta, qq{>$out_dir/sequence.fasta}); download_seq($seq_obj, genbank, qq{>$out_dir/sequence.gb}); sub retriev_seq { my $acc = shift; my $db_obj = Bio::DB::GenBank->new; my $seq_obj = $db_obj->get_Seq_by_acc($acc
); return $seq_obj; } sub download_seq { my $seq_obj = shift; my $fmt = shift; my $out = shift; my $seqio_obj = Bio::SeqIO->new(-file => $out, -format => $fmt ); $seqio_obj->write_seq($seq_obj); }

這個腳本接受兩個參數,第一個參數為 序列對應的編號,第二個參數為輸出的目錄

以 https://www.ncbi.nlm.nih.gov/nuccore/NC_024541.1 為例:

通過瀏覽器下載是這個樣子的:

技術分享

點擊Send 按鈕,在彈出的對話框中選擇下載的序列的區間,對應的格式

通過腳本下載是這個樣子的,首先得到序列對應的編號,如下圖所示:

技術分享

然後運行下面的命令:

perl download_reference.pl NC_024541 ./

這樣通過序列對應的編號就可以自動化的下載對應的序列了

其實,bioperl 當中還提供了其他的檢索序列的方式,比如按照 gi號,功能非常強大。

參考資料:

http://bioperl.org/howtos/Beginners_HOWTO.html

bioperl 自動化下載genbank 中的序列