[Bioperl-l] AnnotationCollectionI and SeqFeatureI changes

Allen Day allenday at ucla.edu
Tue Nov 23 22:48:40 EST 2004


On Tue, 23 Nov 2004, Chris Mungall wrote:

> 
> So let's see:
> 
> AnnotatableI->annotation returns AnnotationCollectionI
> 			 (*not* an AnnotationI)
> 
> AnnotationCollectionI->get_Annotations returns list-of AnnotationI
> 
> why can't accessor methods be named after the class of objects they
> return, rather than a different class? It makes things a lot easier for
> the easily confused like myself.

I agree, but this is how it was when I found it.

> More seriously: is the plan to move everyone across from
> SeqFeatureI->get_tag_values to SeqFeatureI->annotation?

Yes.

> Have you considered the impact on the memory footprint and speed?
> Especially for large genbank files.

Yes.  For heavy lifting I think we'll need to have alternate
AnnotationI/AnnotationCollectionI lightweight implementations that are
stripped down and optimized for memory and speed.  I imagine they'll be
array-based and the AnnotationCollectionI will use a flyweight pattern.  
whatever is generating the SeqFeatureIs will need to be responsible for
which type of AnnotationCollection is used.

-Allen


> Cheers
> Chris
> 
> 
> On Tue, 23 Nov 2004, Allen Day wrote:
> 
> > Fixed.  Here is a summary of what I did to make this happen.  I went ahead
> > and did the work necessary to make Bio::SeqFeatureI AnnotatableI instead
> > of being itself an AnnotationCollectionI.
> >
> > . Bio::SeqFeatureI inherits Bio::AnnotatableI NOT
> >   Bio::AnnotationCollectionI
> > . *_tag_* methods are in Bio::AnnotatableI, and internally defer to
> >   Bio::AnnotatableI->annotation->some_analagous_mapped_function()
> >   . method behavior is now more similar to original *_tag_* method
> >     behavior ; tag "values" are now instantiated as
> >     Bio::Annotation::SimpleValue objects by default, unless their name
> >     indicates they should be otherwise (e.g. tag name "comment" or
> >     "dblink")
> > . deprecation warnings commented until 1.6
> > . Bio::AnnotatableI now keeps a tag->annotation_type registry to allow
> >   new tags to be created (see Bio::SeqFeature::AnnotationAdaptor).
> >   . Bio::SeqFeature::AnnotationAdaptor is now not very useful, as *_tag_*
> >     methods map directly onto Bio::AnnotationI's
> >     Bio::AnnotationCollectionI instance.
> > . Unflattener and Unflattener2 tests pass with no changes.
> > . All tests pass.
> >
> > -Allen
> >
> >
> > On Tue, 23 Nov 2004, Chris Mungall wrote:
> >
> > >
> > > Unflattener.t is failing because someone has messed up get_tagset_values()
> > > - this is a convenience method I originally added to SeqFeatureI. I'm not
> > > familiar enough with the new changes and AnnotationCollections to fix
> > > this.
> > >
> > > Surely the onus has always been on the person making changes to make sure
> > > the test suite passes before committing their changes? In which case, how
> > > did these changes make it in in the first place?
> > >
> > > On Tue, 23 Nov 2004, Jason Stajich wrote:
> > >
> > > >
> > > > On Nov 23, 2004, at 4:47 PM, Allen Day wrote:
> > > >
> > > > > On Tue, 23 Nov 2004, Jason Stajich wrote:
> > > > >
> > > > >> I think if we just don't issue deprecation warnings it will be fine by
> > > > >> me -- even if we are just calling the new subroutine under the hood.
> > > > >> Tests seem to pass although Unflattner.t is falling over today not
> > > > >> sure
> > > > >> what is problem.
> > > > >
> > > > > that fails for me too, in addition to spewing out lots of
> > > > > diagnotistics.
> > > > > however, if you run 'make test_Unflattener2', it passes.  strange.
> > > > >
> > > > no it is Unflattner not Unflattner2
> > > >
> > > > % make test_Unflattener
> > > > [SNIP OUT SOME STUFF]
> > > >
> > > > -------------------- WARNING ---------------------
> > > > MSG: get_tagset_values() is deprecated.  use get_Annotations()
> > > > ---------------------------------------------------
> > > >
> > > > ------------- EXCEPTION: Bio::Root::Exception -------------
> > > > MSG: Abstract method "Bio::AnnotationCollectionI::get_Annotations" is
> > > > not implemented by package Bio::SeqFeature::Generic.
> > > >
> > > >
> > > > > -allen
> > > > >
> > > > >>
> > > > >> -jason
> > > > >> On Nov 23, 2004, at 2:28 PM, Aaron J. Mackey wrote:
> > > > >>
> > > > >>>
> > > > >>>> On Friday, November 19, 2004, at 02:50  PM, Allen Day wrote:
> > > > >>>>
> > > > >>>>> * Bio::SeqFeatureI now ISA Bio::AnnotationCollectionI
> > > > >>>>> * All Bio::SeqFeatureI *_tag_* methods have been moved to
> > > > >>>>>   Bio::AnnotationCollectionI, marked as deprecated, and mapped to
> > > > >>>>> their
> > > > >>>>>   analogous and mostly pre-existing Bio::AnnotationCollectionI
> > > > >>>>> methods.
> > > > >>>>>
> > > > >>>>>   Methods which were not in Bio::AnnotationCollectionI, but were i
> > > > >>>>>   Bio::Annotation::Collection and were necessary for *_tag_* method
> > > > >>>>>   remapping were created in Bio::AnnotationCollecitonI.
> > > > >>>
> > > > >>> I've been paying some attention to this, but thought that the changes
> > > > >>> were only those required to get Bio::FeatureIO working (i.e.
> > > > >>> recapitulate GFF3 logic) without hampering object usage; do our tests
> > > > >>> pass with these changes in place?
> > > > >>>
> > > > >>> On Nov 23, 2004, at 2:12 PM, Jason Stajich wrote:
> > > > >>>
> > > > >>>> it has not been tagged yet.  I think Aaron is just really busy on
> > > > >>>> this front.
> > > > >>>
> > > > >>> I did tag the HEAD at RC1, so we could branch from there if we needed
> > > > >>> to; if this is really the big bug-bear that Hilmar and Jason are
> > > > >>> claiming, then I'd ask Allen to retract his patches that alter
> > > > >>> interface definitions, and branch.
> > > > >>>
> > > > >>> And I was so hoping to get RC2 packaged up later today ...
> > > > >>>
> > > > >>> -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
> > > > >>>
> > > > >>>
> > > > >> --
> > > > >> Jason Stajich
> > > > >> jason.stajich at duke.edu
> > > > >> http://www.duke.edu/~jes12/
> > > > >>
> > > > >> _______________________________________________
> > > > >> Bioperl-l mailing list
> > > > >> Bioperl-l at portal.open-bio.org
> > > > >> http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > > >>
> > > > > _______________________________________________
> > > > > Bioperl-l mailing list
> > > > > Bioperl-l at portal.open-bio.org
> > > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > > >
> > > > >
> > > > --
> > > > Jason Stajich
> > > > jason.stajich at duke.edu
> > > > http://www.duke.edu/~jes12/
> > > >
> > > > _______________________________________________
> > > > Bioperl-l mailing list
> > > > Bioperl-l at portal.open-bio.org
> > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > >
> > >
> >
> 


More information about the Bioperl-l mailing list