Annotation Collections are a way of storing a series of interesting
facts about something. We call an interesting fact in Bioperl an
Annotation (this differs from a Sequence Feature, which is called
a Sequence Feature and may or may not have an Annotation Collection).
A benefit of this approach is that all sorts of simple, interesting
observations can be collected, the possibility is endless.
The Bioperl approach is that the interesting facts are represented by
Bio::AnnotationI objects. The interface Bio::AnnotationI guarantees
$obj->as_text(); # string formated to display to users
$obj->hash_tree(); # hash with defined rules for data-orientated discovery
The hash_tree method is designed to play well with XML output and
other nested-tag-of-data-values, think BoulderIO and/or Ace stuff. For more
information see Bio::AnnotationI.
Annotations are stored in AnnotationCollections, each Annotation under a
different tag. The tags allow simple discovery of the available annotations,
and in some cases (like the tag gene_name) indicate how to interpret the
data underneath the tag. The tag is only one tag deep and each tag can have an
array of values.
In addition, AnnotationCollections are guaranteed to maintain consistent
types of objects under each tag - at least that each object complies to one
interface. The standard AnnotationCollection insists the following rules
are set up:
These tags are the implict tags that the SeqIO system needs to round-trip
However, you as a user and us collectively as a community can grow the
standard tag mapping over time and specifically for a particular
Use these for Bio::AnnotationI object access.
Usage : $ac->get_all_annotation_keys()
Function: gives back a list of annotation keys, which are simple text strings
Returns : list of strings
Args : none
Usage : my @annotations = $collection->get_Annotations(key)
Function: Retrieves all the Bio::AnnotationI objects for a specific key
Returns : list of Bio::AnnotationI - empty if no objects stored for a key
Args : string which is key for annotations
Usage : $self->add_Annotation(reference,$object);
Function: Adds an annotation for a specific key.
If the key is omitted, the object to be added must provide a value
via its tagname().
If the archetype is provided, this and future objects added under
that tag have to comply with the archetype and will be rejected
Returns : none
Args : annotation key (disease, dblink, ...)
object to store (must be Bio::AnnotationI compliant)
[optional] object archetype to map future storage of object
of these types to
Function: Remove the annotations for the specified key from this collection.
Returns : an list of Bio::AnnotationI compliant objects which were stored
under the given key(s)
Args : the key(s) (tag name(s), one or more strings) for which to
remove annotations (optional; if none given, flushes all
Usage : my $count = $collection->get_num_of_annotations()
Function: Returns the count of all annotations stored in this collection
Returns : integer
Args : none