[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.

Thanks,

-Aaron

--
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