Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 72 lines (56 sloc) 1.64 KB
#!/usr/bin/perl
use strict;
use vars qw($USAGE);
use Carp;
use Getopt::Long;
use Bio::SeqIO;
$USAGE = "get_seqs.pl\t[--db=DBNAME] [--format=FORMAT] \n\t\t[--output=FILENAME] [--proxy=PROXY] accession1, accession2, ...\n Defaults: db=GenBank format=fasta output=STDOUT proxy=none\n See LWP::UserAgent for more information on proxy syntax";
my %dbs = (
'genbank' => 'Bio::DB::GenBank',
'embl' => 'Bio::DB::EMBL',
'swissprot' => 'Bio::DB::SwissProt',
);
my ($db,$format,$file,$proxy,$help) = ( 'genbank', 'fasta' );
&GetOptions
(
'db:s' => \$db,
'f|format:s' => \$format,
"file|out|output:s" => \$file,
'proxy:s' => \$proxy,
"h|\?|help" => \$help ,
);
if( $help ) { print $USAGE, "\n";exit; }
if( $db =~ /gb|gen|genbank/i ) {
$db = 'genbank';
} elsif( $db =~ /embl|em|e/i ) {
$db = 'embl';
} elsif( $db =~ /swiss|sp/i ) {
$db = 'swissprot';
} else {
croak("Unknown db parameter '$db' valid parameters are (" . join(',', keys %dbs) . ")");
}
my %params = ( '-format' => $format );
if( defined $file ) {
$params{'-file'} = ">$file";
} else {
$params{'-fh'} = \*STDOUT;
}
my $seqio = new Bio::SeqIO(%params);
my $remotedb;
eval {
my $filename = "$dbs{$db}.pm";
$filename =~ s!::!/!g;
require $filename;
$remotedb = "$dbs{$db}"->new();
};
die($@) unless ! $@;
if( defined $proxy ) { $remotedb->proxy($proxy); }
my $stream;
if( $remotedb->can('get_Stream_by_batch') ) {
$stream = $remotedb->get_Stream_by_batch(@ARGV);
} else {
$stream = $remotedb->get_Stream_by_acc(\@ARGV);
}
while( my $seq = $stream->next_seq ) {
$seqio->write_seq($seq);
}