サンプル1. GenBankからデータを取得

まずは、BioPerlの動作テストを兼ねてネット上のGenBankからデータを取得してみます。
以下のサンプルプログラムはhttp://www.bioperl.org/wiki/HOWTO:Beginnersを参照しています。
GenBankからGenBank Acc=J01673のデータを取得して、J01673.gbkというGenBankフォーマットのファイルを作ります。



#!/usr/bin/perl -w


use Bio::DB::GenBank;
use Bio::SeqIO;


$db_obj = Bio::DB::GenBank->new;
$seq_obj = $db_obj->get_Seq_by_acc("J01673");
$seqio_obj = Bio::SeqIO->new(-file => '>J01673.gbk', -format => 'genbank' );
$seqio_obj->write_seq($seq_obj);


出力をファイルにするのではなくて、データを取り出して表示するには以下のようにします。



#!/usr/bin/perl -w


use Bio::DB::GenBank;
use Bio::Species;


$db_obj = Bio::DB::GenBank->new;
$seq_obj = $db_obj->get_Seq_by_acc("J01673");


print "display_id\t", $seq_obj->display_id, "\n";
print "desc\t", $seq_obj->desc, "\n";
print "display_name\t", $seq_obj->display_name, "\n";
print "accession\t", $seq_obj->accession, "\n";
print "primary_id\t", $seq_obj->primary_id, "\n";
print "seq_version\t", $seq_obj->seq_version, "\n";
print "keywords\t", $seq_obj->keywords, "\n";
print "length\t", $seq_obj->length, "\n";
my $species_obj = $seq_obj->species;
print "species\t", $species_obj->binomial(), "\n";
print "seq\t", $seq_obj->seq, "\n";


実際に検索する際には、GenBankAccなどはわかっていないので、キーワード検索をすることになります。
キーワード検索した結果一覧を表示してみます。



#!/usr/bin/perl -w


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


$query = "Homo sapiens[ORGN] AND CYP2C[TITL] AND 100:3000[SLEN]";
$query_obj = Bio::DB::Query::GenBank->new(-db => 'nucleotide', -query => $query );

$gb_obj = Bio::DB::GenBank->new;

$stream_obj = $gb_obj->get_Stream_by_query($query_obj);

while ($seq_obj = $stream_obj->next_seq) {
$n++;
print $n, ". ",$seq_obj->display_id, " (",$seq_obj->length, ") ",
substr($seq_obj->desc,0,50), "...\n", ;
}


検索対象を「タンパク質」にして、一覧をfasta形式のファイルに出力してみます。



#!/usr/bin/perl -w


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


$query = "Homo sapiens[ORGN] AND TNFa[TITL]";
$query_obj = Bio::DB::Query::GenBank->new(-db => 'protein', -query => $query );

$gb_obj = Bio::DB::GenBank->new;
$stream_obj = $gb_obj->get_Stream_by_query($query_obj);
$seqio_obj = Bio::SeqIO->new(-file => '>sequence.fas', -format => 'fasta' );

while ($seq_obj = $stream_obj->next_seq) {
$seqio_obj->write_seq($seq_obj);
}