Perl スクリプトを利用して GenBank からデータをダウンロードする方法

DB::GenBank

Accession 番号を指定して、GenBank から自動的にダウンロードしてくるようなプログラムを書くときに、BioPerl の DB::GenBank パッケージを利用する。ダウンロードするファイルのフォーマットを FASTA にするか、GenBank にするかをも指定できる。

配列データのダウンロード

DB::GenBank を利用して、GenBank からデータをダウンロードする方法。次のスクリプトは、Accession 番号が J00522 となっている配列データをダウンロードする例である。

use Bio::DB::GenBank;
my $gb = Bio::DB::GenBank->new;

$seq = $gb->get_Seq_by_acc('J00522');
print $seq->desc , "\n";
## Mouse Ig active H-chain V-region from MOPC21, subgroup VH-II, mRNA.

print $seq->accession , "\n";
## J00522

print $seq->length , "\n";
## 408

複数の配列データのダウンロード

複数の Accession 番号を配列にして、get_Stream_by_acc に代入すると、複数のデータを一つずつ取得してきる。

use Bio::DB::GenBank;

my $gb = Bio::DB::GenBank->new;
my $acc = ['NR_029610', 'NR_029681', 'NR_029617'];
my $seqio = $gb->get_Stream_by_acc($acc);
while (my $seq = $seqio->next_seq) {
   print "Length:", $seq->length, "\n";

}
## Length:110
## Length:100
## Length:110

ダウンロードしたデータをファイルに保存

GenBank から取得したデータをパソコン上に保存するとき、Bio::SeqIOwrite_seq メソッドを利用して行う。

use Bio::DB::GenBank;

my $acc = ['NR_029610', 'NR_029681', 'NR_029617'];
my $gb = Bio::DB::GenBank->new();
my $seqio = $gb->get_Stream_by_acc($acc);
while (my $seq = $seqio->next_seq) {
   print "Downloading ..." . $seq->accession . " \n";
   my $out_io = Bio::SeqIO->new(
                    -file => '>' . $seq->accession . '.gbff',
                    -format => 'genbank'
                );
   $out_io->write_seq($seq);
}

GenBank での検索

GenBank に対して、検索語句を送信し、検索結果をダウンロードする場合は、DB::Query::GenBank パッケージを利用する。

use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;

my $query = Bio::DB::Query::GenBank->new(
              -db => 'nucleotide',
              -query => 'Arabidopsis AND EST'
            );


my $hit_count = $query->count;
print $hit_count . " entries\n";

my $gb = Bio::DB::GenBank->new();

my $seqio = $gb->get_Stream_by_query($query);
while (my $seq = $seqio->next_seq) {
    print "Downloading ..." . $seq->accession . "\n";
    my $out_io = Bio::SeqIO->new(
                   -file => '>' . $seq->accession . '.gbff',
                   -format => 'genbank'
                 );
    $out_io->write_seq($seq);
}