[Bioperl-l] Compliance of Bio::Seq add_SeqFeature() method
Florent Angly
florent.angly at gmail.com
Wed Mar 7 05:00:50 UTC 2012
On 05/03/12 12:13, Fields, Christopher J wrote:
> Actually, I misread Florent's original post, I was thinking that FeatureHolderI was the outlier here, but it is Bio::Seq. Yes, I think Bio::Seq is abusing the FeatureHolderI interface, it should just be for a single feature (it can safely ignore the 'EXPAND' option). However, use of 'EXPAND' assumes the FeatureHolderI is also a Bio::RangeI (must have a start and end to expand), something that is not mentioned in the interface as a requirement and is not guaranteed, for instance Bio::Seq is not Bio::RangeI.
Ok, I have:
1/ clarified in Bio::FeatureHolderI that there is no guarantee that
'EXPAND' will be honored
2/ made Bio::Seq comply to Bio::FeatureHolderI by accepting the 'EXPAND'
keyword (but do nothing about it)
3/ deprecated the use of passing multiple features to add_SeqFeature()
in Bio::Seq
4/ updated documentation and code that relied on passing multiple features
That should take care of the issue at hand. See this commit:
https://github.com/bioperl/bioperl-live/commit/a5bebe00c505fbf5279f5d717790ed36eefcc2b8
Note that there are still some modules (e.g. Bio::DB::SeqFeature::Store,
Bio::DB::SeqFeature::NormalizedFeature, Bio::SeqFeature::Lite,
Bio::DB::SeqFeature, Bio::Search::Tiling::MapTileUtils) that have an
add_SeqFeature() method that accepts an array of features but they are
not Bio::FeatureHolderI, so that's ok. Maybe they should be
Bio::FeatureHolderI but that's another story.
However, I have found that Bio::SimpleAlign is a Bio::FeatureHolderI and
is not compliant. I fixed it here:
https://github.com/bioperl/bioperl-live/commit/29e0449d05f37c9c748aaaff8cfe596ca7c3d380
Florent
More information about the Bioperl-l
mailing list