我有一个充满了入藏号的数组,我想知道是否有办法使用BioPerl自动保存genbank文件。我知道你可以获取序列信息,但我想要整个GenBank记录。
#!/usr/bin/env perl
use strict;
use warnings;
use Bio::DB::GenBank;
my @accession;
open (REFINED, "./refine.txt") || die "Could not open: $!";
while(<REFINED>){
if(/^(\D+)\|(.*?)\|/){
push(@accession, $2);
}
}
close REFINED;
foreach my $number(@accession){
my $db_obj = Bio::DB::GenBank->new;
}
答案 0 :(得分:4)
您可以使用Bio::DB::EUtilities
保存完整的genbank记录。下面是一个示例,它将在名为 myseqs.gb 的文件中为每个ID列出并保存genbank记录:
#!/usr/bin/env perl
use strict;
use warnings;
use Bio::DB::EUtilities;
my @ids = qw(1621261 89318838 68536103 20807972 730439);
my $factory = Bio::DB::EUtilities->new(-eutil => 'efetch',
-db => 'protein',
-rettype => 'gb',
-email => 'mymail@foo.bar',
-id => \@ids);
my $file = 'myseqs.gb';
# dump HTTP::Response content to a file (not retained in memory)
$factory->get_Response(-file => $file);
如果要拆分返回的单个记录而不是将它们全部放在一个文件中,可以使用Bio::SeqIO
轻松完成。有关更多示例和说明,请查看EUtilities HOWTO和EUtilities Cookbook。