[Bioperl-l] GO annotatinos in BioPerl. A tentative proposal...

Chris Mungall cjm@fruitfly.bdgp.berkeley.edu
Thu, 5 Apr 2001 10:01:04 -0700 (PDT)


On Thu, 5 Apr 2001, Hilmar Lapp wrote:

> Mark Wilkinson wrote:
> > 
> > What I propose to do is to create a new method of Feature objects,
> > $Feature->GO, which would set/return the GO annotation object associated
> > with that feature.  I would also modify the ->to_gff_string call such
> > that it checked for the presence of a GO annotation and dumped that
> > information into the GFF attributes field along with the other tag/value
> > information.
> > 
> > Is there anyone out there who would discourage this, or who might have a
> > better idea of how to approach this problem?  It seems to me that GO is
> > eventually going to be the standard to which we are all annotating, so I
> > think it is a good time to start making BioPerl features more
> > GO-friendly...  or?
> > 
> 
> It may or may not become a standard. $feature->go() would mean
> putting it into the SeqFeatureI interface, which IMHO is too
> vendor-heavy (if you look at GO at a provider of some service,
> similar to databanks). I'd rather like to see this a little bit
> abstracted, if it is possible without too much pain. We can

yup, agree here

> redesign the whole Annotation scheme. What I can see as for what
> could make sense is
> 
> - Bio::AnnotationI as a minimum interface any sort of annotation
> has to implement; this interface should provide for methods at
> least sufficient to dump out the thing to GFF.
> - Bio::Annotation::* to contain various implementations of that
> interface tailored to specific types of annotation, with
> - Bio::Annotation::GO being the one that represents a GO
> annotation
> - Bio::SeqFeatureI gets a method annotation() returning a
> Bio::AnnotationI implementing object.
> 
> Right now, there is no AnnotationI interface, and classes in
> Bio::Annotation are additions to an annotation object, not
> specializations.

sounds good, although I am keen to see a seperation of the Annotation and
the link between the feature and the Annotation, although minimal
implementations of AnnotationI may choose to ignore that

foreach $ann ($feature->annotations) {

  # minimal implementation
  print $ann->description;

  # more useful:
  printf "%s said that %s is a %s because\n",
    $ann->association->person,
    $feature->name,
    $ann->controlled_vocab_term->description,
    $ann->association->evidence_as_text;

  # association could be a 'null' object
  # with 'unknown' in all the attributes
  # for minimal implementations
}

> 	Hilmar
> -- 
> -----------------------------------------------------------------
> Hilmar Lapp                              email: hilmarl@yahoo.com
> GNF, San Diego, Ca. 92122                phone: +1 858 812 1757
> -----------------------------------------------------------------
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l@bioperl.org
> http://bioperl.org/mailman/listinfo/bioperl-l
>