BioPerl-DB
view release on metacpan or search on metacpan
lib/Bio/DB/CacheServer/SeqDB.pm view on Meta::CPAN
}
=head1 Methods [that were] specific for Bio::DB::SeqI
=head2 get_PrimarySeq_stream
Title : get_PrimarySeq_stream
Usage : $stream = get_PrimarySeq_stream
Function: Makes a Bio::DB::SeqStreamI compliant object
which provides a single method, next_primary_seq
Returns : Bio::DB::SeqStreamI
Args : none
=cut
sub get_PrimarySeq_stream{
my ($self) = @_;
# we just delegate back to read - this
# is too complicated to implement at the moment
# (ideally have a look-ahead cach'ing mechanism)
my $stream = $self->read_db->get_PrimarySeq_stream();
return $stream;
}
=head2 get_all_primary_ids
Title : get_all_ids
Usage : @ids = $seqdb->get_all_primary_ids()
Function: gives an array of all the primary_ids of the
sequence objects in the database. These
maybe ids (display style) or accession numbers
or something else completely different - they
*are not* meaningful outside of this database
implementation.
Example :
Returns : an array of strings
Args : none
=cut
sub get_all_primary_ids{
my ($self,@args) = @_;
return $self->read_db->get_all_primary_ids;
}
=head2 get_Seq_by_primary_id
Title : get_Seq_by_primary_id
Usage : $seq = $db->get_Seq_by_primary_id($primary_id_string);
Function: Gets a Bio::Seq object by the primary id. The primary
id in these cases has to come from $db->get_all_primary_ids.
There is no other way to get (or guess) the primary_ids
in a database.
The other possibility is to get Bio::PrimarySeqI objects
via the get_PrimarySeq_stream and the primary_id field
on these objects are specified as the ids to use here.
Returns : A Bio::Seq object
Args : accession number (as a string)
Throws : "acc does not exist" exception
=cut
sub get_Seq_by_primary_id {
my ($self,$id) = @_;
# Ooops. Copy-and-paste. Bad Ewan! Bad Ewan!
# (Doh! Second time as well. Very Bad Ewan!)
my $seq;
eval {
# some future implementation would check when this was stored
# and invalidate the cache.
$seq = $self->db_adaptor->get_Seq_by_primary_id($self->dbid,$id);
};
if( $@ ) {
# need to fetch from cache -
# we wont catch this exception - it passes up to the calling code
$seq = $self->read_db->get_Seq_by_acc($id);
# write it back!
# a better implementation would put this on a queue to insert
# in a fork or at leisure
my $dbid = $self->seq_adaptor->store($self->dbid,$seq);
# having gone to the trouble of storing retrieve it from local
# - the whole point is that this access is better than the other db
$seq = $self->seq_adaptor->fetch_by_dbID($dbid);
}
# return it
return $seq;
}
=head2 Get/Sets for attributes stored in this object
=cut
=head2 seq_adaptor
Title : seq_adaptor
Usage : $obj->seq_adaptor($newval)
Function:
Example :
Returns : value of seq_adaptor
( run in 3.343 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )