[Bioperl-l] Bio::DB::Fasta::get_Seq_by_id()

Jason Stajich jason at bioperl.org
Mon Oct 30 18:08:15 UTC 2006

Bio::PrimarySeq makes sense because Fasta databases only provide  
sequences without features.  But you are actually getting a  
Bio::PrimarySeq::Fasta object which is a proxy object since the  
module won't pull a whole sequence into memory unless seq() is  

The problem is really why you are getting something useless set for  

What do you want it to be - the GI number?  you'll need to explicitly  
set it because DB::Fasta has no concept of GI numbers encoded in the  
header line.
AFAIK you cannot also set the primary_id to a value of your liking  
because this a proxy object.  The best bet is to create a Bio::Seq  
object out of one of these and set the primary_id and display_id to  
values that you can compute from the display_id.

At least that has been my strategy when using this - maybe someone  
wants to code something new into the object itsself.

On Oct 30, 2006, at 12:51 AM, Nathan S. Haigh wrote:

> In my script I retrieve sequences from GenBank in FASTA format by GI
> numbers and optionally store the sequence in a cache using
> Bio::DB::Fasta. On subsequent runs of the script, the cache is first
> checked for the GI and returns the sequence if it is found or the
> sequence is obtained from GenBank as above.
> I would have thought that Bio::DB::Fasta::get_Seq_by_id() would have
> returned a Bio::Seq object but rather it returns a Bio::PrimarySeq
> object which is defined within the Bio::DB::Fasta file. This is
> annoying, since $seq_obj in my script would be either a Bio::Seq if it
> was obtained from GenBank or a Bio::PrimarySeq if obtained from the
> cache and calling primary_id() on it doesn't do the expected thing  
> with
> Bio::PrimarySeq:
> ID:          Bio::PrimarySeq::Fasta=HASH(0x89b4508)
> Is there a reason why Bio::DB::Fasta doesn't return a Bio::Seq object?
> Nath
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

Jason Stajich, PhD
Miller Research Fellow
University of California
Dept of Plant and Microbial Biology
321 Koshland Hall #3102
Berkeley, CA 94720-3102
lab: 510.642.8441

More information about the Bioperl-l mailing list