BioPerl
view release on metacpan or search on metacpan
Bio/Perl.pm view on Meta::CPAN
=head2 write_blast
Title : write_blast
Usage : write_blast($filename,$blast_report);
Function: Writes a BLAST result object (or more formally
a SearchIO result object) out to a filename
in BLAST-like format
Returns : none
Args : filename as a string
Bio::SearchIO::Results object
=cut
sub write_blast {
my ($filename,$blast) = @_;
if( $filename !~ /^\>/ && $filename !~ /^|/ ) {
$filename = ">".$filename;
}
my $output = Bio::SearchIO->new( -output_format => 'blast', -file => $filename);
$output->write_result($blast);
}
=head2 get_sequence
Title : get_sequence
Usage : $seq_object = get_sequence('swiss',"ROA1_HUMAN");
Function: If the computer has Internet access this method gets
the sequence from Internet accessible databases. Currently
this supports Swissprot ('swiss'), EMBL ('embl'), GenBank
('genbank'), GenPept ('genpept'), and RefSeq ('refseq').
Swissprot and EMBL are more robust than GenBank fetching.
If the user is trying to retrieve a RefSeq entry from
GenBank/EMBL, the query is silently redirected.
Returns : A Bio::Seq object
Args : database type - one of swiss, embl, genbank, genpept, or
refseq
=cut
my $genbank_db = undef;
my $genpept_db = undef;
my $embl_db = undef;
my $swiss_db = undef;
my $refseq_db = undef;
sub get_sequence{
my ($db_type,$identifier) = @_;
if( ! $DBOKAY ) {
confess ("Your system does not have one of LWP, HTTP::Request::Common, IO::String\n".
"installed so the DB retrieval method is not available.\n".
"Full error message is:\n $!\n");
return;
}
$db_type = lc($db_type);
my $db;
if( $db_type =~ /genbank/ ) {
if( !defined $genbank_db ) {
$genbank_db = Bio::DB::GenBank->new();
}
$db = $genbank_db;
}
if( $db_type =~ /genpept/ ) {
if( !defined $genpept_db ) {
$genpept_db = Bio::DB::GenPept->new();
}
$db = $genpept_db;
}
if( $db_type =~ /swiss/ ) {
if( !defined $swiss_db ) {
$swiss_db = Bio::DB::SwissProt->new();
}
$db = $swiss_db;
}
if( $db_type =~ /embl/ ) {
if( !defined $embl_db ) {
$embl_db = Bio::DB::EMBL->new();
}
$db = $embl_db;
}
if( $db_type =~ /refseq/ or ($db_type !~ /swiss/ and
$identifier =~ /^\s*N\S+_/)) {
if( !defined $refseq_db ) {
$refseq_db = Bio::DB::RefSeq->new();
}
$db = $refseq_db;
}
my $seq;
if( $identifier =~ /^\w+\d+$/ ) {
$seq = $db->get_Seq_by_acc($identifier);
} else {
$seq = $db->get_Seq_by_id($identifier);
}
return $seq;
}
=head2 translate
Title : translate
Usage : $seqobj = translate($seq_or_string_scalar)
( run in 3.025 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )