BioPerl
view release on metacpan or search on metacpan
Bio/Index/AbstractSeq.pm view on Meta::CPAN
push(@file,$file);
}
my $out = Bio::SeqIO::MultiFile->new( '-format' => $self->_file_format , -files => \@file);
return $out;
}
=head2 get_all_primary_ids
Title : get_all_primary_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) = @_;
my $db = $self->db;
# the problem is here that we have indexed things both on
# accession number and name.
# We could take two options
# here - loop over the database, returning only one copy of each
# id that points to the same byte position, or we rely on semantics
# of accession numbers.
# someone is going to index a database with no accession numbers.
# doh!. We have to uniquify the index...
my( %bytepos );
while (my($id, $rec) = each %$db) {
if( $id =~ /^__/ ) {
# internal info
next;
}
my ($file, $begin) = $self->unpack_record( $rec );
$bytepos{"$file:$begin"} = $id;
}
return values %bytepos;
}
=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 : primary id (as a string)
Throws : "acc does not exist" exception
=cut
sub get_Seq_by_primary_id {
my ($self,$id) = @_;
return $self->fetch($id);
}
1;
( run in 0.539 second using v1.01-cache-2.11-cpan-39bf76dae61 )