[Bioperl-l] SeqFeature/AnnotatableI and rel. 1.6
cjfields at uiuc.edu
Thu Aug 23 00:53:55 EDT 2007
As many of the devs know, there are a number of Feature/Annotation
issues that need to be resolved prior to a 1.6 release:
There has been little work done over the last 2 1/2 years to undo or
rectify problems associated with those additions; I feel like those
of us still routinely contributing have been left holding the bag.
There has also been very little attempt to document any of this
adequately enough; as an example see POD for
Bio::SeqFeature::Annotated (what little there is).
I would like to suggest the radical idea of rolling back AnnotatableI/
SeqFeatureI changes to a much simpler rel. 1.4-like behavior (tags
are simple scalars) and possibly work in implementing Ewan's
SeqFeature::TypedSeqFeatureI for those who want strong data types
(i.e. Bio::FeatureIO/Bio::SeqFeature::Annotated). The various
AnnotatableI changes, odd inheritance, and operator overloading have
really obfuscated the code to the point where no one wants to touch
it in case it breaks something important. However, I believe it is
the one serious impediment to a new stable release.
My thought is we simplify all the relevant interfaces, essentially
reverting back to rel 1.4. For instance, we move the various
Bio::AnnotatableI tag methods back into Bio::SeqFeatureI.
Bio::SeqFeature::Annotated would implement Bio::AnnotatableI
directly, and (if needed) also implement
Bio::SeqFeature::TypedSeqFeatureI, so the impetus is on
Bio::SeqFeature::Annotated to overload the relevant SeqFeatureI
methods correctly, just as any other class would when implementing an
abstract interface. I have played around with this a bit and managed
to get most tests working again for Bio::SeqFeature::Generic and
FeatureIO but a number of others break.
If needed I can try this out on a branch (a bit ironic, since the
changes instigating this mess should have been tested on a branch!).
Maybe this will get the ball rolling towards a 1.6 release. Any
More information about the Bioperl-l