[Bioperl-l] AnnotationCollectionI and SeqFeatureI changes

Aaron J. Mackey amackey at pcbi.upenn.edu
Tue Nov 23 15:30:47 EST 2004

> I didn't want to write the *_tag_* methods into 
> Bio::SeqFeature::Annotated,
> which precipitated their deprecation and mapping to 
> Bio::AnnotationCollectionI.

I read and re-read this sentence a few times, and it took awhile to 
understand what it means.  Now that I've looked at the code, it seems 
that Bio::SeqFeature::Annotated implements the Bio::SeqFeatureI 
interface; Bio::SeqFeatureI calls for get_tag_values() to be 
implemented; so instead of implementing get_tag_values for 
Bio::SeqFeature::Annotated objects, you made Bio::SeqFeatureI inherit 
from Bio::AnnotationCollectionI, and then reimplemented 
get_tag_values() in AnnotationCollectionI to simply call 
get_Annotations() (deprecating it in the process)?

While it "works", I don't see why it had to be done this way; I'd 
prefer a solution that didn't involve changing the definition of 
Bio::SeqFeatureI (at least not yet).  Further, your "deprecations" seem 
to indicate that you simply want Bio::SeqFeatureI to go away entirely, 
and have us treat everything as an annotation collection (which may or 
may not have a location on a sequence).  Is this the agreed-upon way of 
the future?  What are you gaining, besides forcing my fingers to learn 
get_Annotations($tag) instead of get_tag_values($tag)?

I'm all for sweeping change for consistency and logic, and 1.5 is meant 
to be a developer's release on the road to 1.6, so this *might* be the 
right time for it, as long as there is general agreement, and it 
doesn't (significantly) break existing tools without great reason.



Aaron J. Mackey, Ph.D.
Dept. of Biology, Goddard 212
University of Pennsylvania       email:  amackey at pcbi.upenn.edu
415 S. University Avenue         office: 215-898-1205
Philadelphia, PA  19104-6017     fax:    215-746-6697

More information about the Bioperl-l mailing list