Bio::DB
Failover
Summary
Bio::DB::Failover - A Bio::DB::RandomAccessI compliant class which
wraps a prioritized list of DBs
Package variables
No package variables defined.
Inherit
Synopsis
$failover = Bio::DB::Failover->new();
$failover->add_database($db);
# fail over Bio::DB::RandomAccessI.pm
# this will check each database in priority, returning when
# the first one succeeds
$seq = $failover->get_Seq_by_id($id);
Description
This module provides fail over access to a set of Bio::DB::RandomAccessI
objects.
Methods
Methods description
Title : add_database Usage : add_database(%db) Function: Adds a database to the Failover object Returns : Count of number of databases Args : Array of db resources Throws : Not a RandomAccessI exception |
Title : get_Seq_by_id Usage : $seq = $db->get_Seq_by_id('ROA1_HUMAN') Function: Gets a Bio::Seq object by its name Returns : a Bio::Seq object Args : the id (as a string) of a sequence Throws : "no id" exception |
Title : get_Seq_by_acc Usage : $seq = $db->get_Seq_by_acc('X77802'); Function: Gets a Bio::Seq object by accession number Returns : A Bio::Seq object Args : accession number (as a string) Throws : "no id" exception |
Title : get_Seq_by_version Usage : $seq = $db->get_Seq_by_acc('X77802.2'); Function: Gets a Bio::Seq object by versioned accession number Returns : A Bio::Seq object Args : accession number (as a string) Throws : "acc does not exist" exception |
Methods code
sub new
{ my ($class,@args) = @_;
my $self = $class->SUPER::new(@args);
$self->{'_database'} = [];
return $self;} |
sub add_database
{ my ($self,@db) = @_;
for my $db ( @db ) {
if ( !ref $db || !$db->isa('Bio::DB::RandomAccessI') ) {
$self->throw("Database object $db is a not a Bio::DB::RandomAccessI");
next;
}
push(@{$self->{'_database'}},$db);
}
scalar @{$self->{'_database'}};} |
sub get_Seq_by_id
{ my ($self,$id) = @_;
if( !defined $id ) {
$self->throw("no id is given!");
}
foreach my $db ( @{$self->{'_database'}} ) {
my $seq;
eval {
$seq = $db->get_Seq_by_id($id);
};
$self->warn($@) if $@;
if ( defined $seq ) {
return $seq;
} else {
$self->warn("No sequence retrieved by database " . ref($db));
}
}
return;} |
sub get_Seq_by_acc
{ my ($self,$id) = @_;
if( !defined $id ) {
$self->throw("no id is given!");
}
foreach my $db ( @{$self->{'_database'}} ) {
my $seq;
eval {
$seq = $db->get_Seq_by_acc($id);
};
$self->warn($@) if $@;
if ( defined $seq ) {
return $seq;
} else {
$self->warn("No sequence retrieved by database " . ref($db));
}
}
return;} |
sub get_Seq_by_version
{ my ($self,$id) = @_;
if( !defined $id ) {
$self->throw("no acc is given!");
}
foreach my $db ( @{$self->{'_database'}} ) {
my $seq;
eval {
$seq = $db->get_Seq_by_version($id);
};
$self->warn($@) if $@;
if ( defined $seq ) {
return $seq;
} else {
$self->warn("No sequence retrieved by database " . ref($db));
}
}
return;} |
General documentation
Ewan Birney <birney@ebi.ac.uk> originally wrote this class.
Report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution. Bug reports can be submitted via the
web:
http://bugzilla.open-bio.org/
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _