[Bioperl-l] Bio::FeatureHolderI
Jason Stajich
jason@cgt.mc.duke.edu
Mon, 18 Nov 2002 14:43:50 -0500 (EST)
On Mon, 18 Nov 2002, Hilmar Lapp wrote:
> Yes, that's one way. An alternative is to define an interface an
> implementation of which must be passed in. Cleaner (and I think
> that's how BioJava does it), but maybe unnecessarily complicated in
> bioperl. I'm leaning towards your shortcut for simplicity reasons.
>
> If simple filtering by matching attribute values is to be
> implemented by the FeatureHolderI itself like you suggest, I'd vote
> for having those args match the parameter names you supply to new().
> I.e., for filtering by tag this would mean -primary and -source,
> depending on which attribute you want to filter (which BTW exposes
> another annoying inconsistency we have: parameter names should be
> the same as the method names [with a hyphen preprended]).
>
> Votes/comments/suggestions solicited ...
What about filtering on location?
>
> -hilmar
>
> On Monday, November 18, 2002, at 12:03 AM, Lincoln Stein wrote:
>
> > The Bio::Das and Bio::DB::GFF get_SeqFeatures methods both support
> > filters, so
> > I am happy if you formalize this.
> >
> > I suggest two ways to filter, to start with:
> >
> > (-tag => \@tag_list)
> >
> > Filter on the basis of a list of primary tags. The returned
> > features are a
> > union or ORing the tags.
> >
> > (-filter => \&filter)
> >
> > Pass each feature to the filter subroutine. Return features for
> > which the
> > subroutine returns true.
> >
> > Lincoln
> >
> > On Sunday 17 November 2002 06:55 am, Hilmar Lapp wrote:
> >> I'd suggest adding this alongside AnnotatableI. The benefit is not
> >> new functionality, but rather imposing a more rigorous and fostering
> >> a more consistent API structure on those classes that have features.
> >>
> >> I have the module ready to commit, and I'd adjust Bio::Seq and
> >> SeqFeature::Generic to implement this (clearly not very difficult).
> >> What do people thing? Core guys? This should be very similar to the
> >> biojava model, but I haven't checked that for a while.
> >>
> >> =head2 get_SeqFeatures
> >>
> >> Title : get_SeqFeatures
> >> Usage :
> >> Function: Get the feature objects held by this feature holder.
> >> Example :
> >> Returns : an array of Bio::SeqFeatureI implementing objects
> >> Args : none
> >>
> >> At some day we may want to expand this method to allow for a feature
> >> filter to be passed in.
> >>
> >> =cut
> >>
> >> =head2 feature_count
> >>
> >> Title : feature_count
> >> Usage : $obj->feature_count()
> >> Function: Return the number of SeqFeatures attached to a feature
> >> holder.
> >>
> >> This is before flattening a possible sub-feature tree.
> >>
> >> We provide a default implementation here that just counts
> >> the number of objects returned by get_SeqFeatures().
> >> Implementors may want to override this with a more
> >> efficient implementation.
> >>
> >> Returns : integer representing the number of SeqFeatures
> >> Args : None
> >>
> >> At some day we may want to expand this method to allow for a feature
> >> filter to be passed in.
> >>
> >> Our default implementation allows for any number of additional
> >> arguments and will pass them on get_SeqFeatures(). I.e., in order to
> >> support filter arguments, just support them in get_SeqFeatures().
> >>
> >> =cut
> >>
> >> =head2 get_all_SeqFeatures
> >>
> >> Title : get_all_SeqFeatures
> >> Usage :
> >> Function: Get the flattened tree of feature objects held by this
> >> feature holder. The difference to get_SeqFeatures is that
> >> the entire tree of sub-features will be flattened out.
> >>
> >> We provide a default implementation here, so implementors
> >> don''t necessarily need to implement this method.
> >>
> >> Example :
> >> Returns : an array of Bio::SeqFeatureI implementing objects
> >> Args : none
> >>
> >> At some day we may want to expand this method to allow for a feature
> >> filter to be passed in.
> >>
> >> Our default implementation allows for any number of additional
> >> arguments and will pass them on to any invocation of
> >> get_SeqFeatures(), wherever a component of the tree implements
> >> FeatureHolderI. I.e., in order to support filter arguments, just
> >> support them in get_SeqFeatures().
> >>
> >> =cut
> >>
> --
> -------------------------------------------------------------
> Hilmar Lapp email: lapp at gnf.org
> GNF, San Diego, Ca. 92121 phone: +1-858-812-1757
> -------------------------------------------------------------
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l@bioperl.org
> http://bioperl.org/mailman/listinfo/bioperl-l
>
--
Jason Stajich
Duke University
jason at cgt.mc.duke.edu