Bio::A...ctionI(3pm)

πŸ“¦
version 1.7.8 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– Bio::AnnotationCollectionI β€” the manual, but make it make sense πŸ’–

okay bestie, welcome to Bio::A...ctionI(3pm) β€” yes, that's the manual page name, it's giving "the terminal truncated it for drama" but it's us. It lives in the User Contributed Perl Documentation section, and it's literally the vibe manual for annotation collections. Let's go πŸ¦‹


✨ NAME ✨

Bio::AnnotationCollectionI β€” the interface for annotation collections. That's it, that's the whole name. No cap.


🌸 SYNOPSIS 🌸

So first you gotta get yourself an AnnotationCollectionI from somewhere, like:

# get an AnnotationCollectionI somehow, eg

$ac = $seq->annotation();

foreach $key ( $ac->get_all_annotation_keys() ) {
    @values = $ac->get_Annotations($key);
    foreach $value ( @values ) {
       # value is an Bio::AnnotationI, and defines a "as_text" method
       print "Annotation ",$key," stringified value ",$value->as_text,"\n";

       # also defined hash_tree method, which allows data orientated
       # access into this object
       $hash = $value->hash_tree();
    }
}

periodt. that's the whole flow πŸ’…


πŸŽ€ DESCRIPTION πŸŽ€

Annotation Collections are a way of storing a series of "interesting facts" about something. We call an "interesting fact" in Bioperl an Annotation β€” and lowkey this is not the same thing as a Sequence Feature, because a Sequence Feature is called a Sequence Feature and may or may not have an Annotation Collection. They're different things, don't conflate them, that's the whole point 🫢

The glow-up here is that all sorts of simple, interesting observations can be collected, and the possibility is endless. literally endless.

The Bioperl approach is that those "interesting facts" are represented by Bio::AnnotationI objects. And the interface Bio::AnnotationI guarantees two methods:

$obj->as_text(); # string formatted to display to users

and

$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" situations β€” think BoulderIO and/or Ace stuff. For more info, go see Bio::AnnotationI. ✨

Annotations are stored in AnnotationCollections, and every Annotation sits under a different "tag". The tags are what let you do simple discovery of the available annotations, and in some cases (like the tag "gene_name") they tell you how to interpret the data underneath the tag. Important: the tag is only one tag deep, and each tag can have an array of values. iykyk.

Also, AnnotationCollections are guaranteed to maintain consistent types of objects under each tag β€” at minimum, that every object complies to one interface. The "standard" AnnotationCollection insists these rules are set up:

Tag            Object
---            ------
comment        Bio::Annotation::Comment
dblink         Bio::Annotation::DBLink
description    Bio::Annotation::SimpleValue
gene_name      Bio::Annotation::SimpleValue
ontology_term  Bio::Annotation::OntologyTerm
reference      Bio::Annotation::Reference

These tags are the implict tags that the SeqIO system needs to round-trip GenBank/EMBL/Swissprot. (yes, "implict" β€” that's how the original spells it, we don't touch the lore πŸ’€)

But here's the main character energy: you as a user, and us collectively as a community, can grow the "standard" tag mapping over time β€” and specifically for a particular area. obsessed.


πŸ’Œ FEEDBACK πŸ’Œ

🌈 Mailing Lists

User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to one of the Bioperl mailing lists. Your participation is much appreciated, fr fr.

bioperl-l@bioperl.org

🫢 Support

Please direct usage questions or support issues to the mailing list:

bioperl-l@bioperl.org

...rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible. (also "reponsive" is the original spelling, we preserve the artifacts πŸ’…)

πŸ› Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track the bugs and their resolution. Bug reports can be submitted via the web:

https://github.com/bioperl/bioperl-live/issues

πŸ‘‘ AUTHOR - Ewan Birney πŸ‘‘

Email birney@ebi.ac.uk

(iconic, honestly)


πŸ“– APPENDIX πŸ“–

The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ β€” so if you see an underscore, mind your business, that's internal πŸ’€


πŸ”₯ ACCESSOR METHODS πŸ”₯

Use these for Bio::AnnotationI object access. let's goooo πŸŽ€

πŸ’œ get_all_annotation_keys()

  • 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

πŸ’œ get_Annotations()

  • 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

πŸ’œ add_Annotation()

  • Usage:
$self->add_Annotation('reference',$object);
$self->add_Annotation($object,'Bio::MyInterface::DiseaseI');
$self->add_Annotation($object);
$self->add_Annotation('disease',$object,'Bio::MyInterface::DiseaseI');
  • 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 otherwise.

  • 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

πŸ’œ remove_Annotations()

  • Usage:
  • 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 annotations)

πŸ’œ get_num_of_annotations()

  • Usage: my $count = $collection->get_num_of_annotations()
  • Function: Returns the count of all annotations stored in this collection
  • Returns: integer
  • Args: none

and that's the whole page bestie, you ate πŸ“ go forth and annotate responsibly 🧚

kisses, this was perl v5.32.1, dated 2021-08-15, and yes it's the Bio::A...ctionI(3pm) page from the User Contributed Perl Documentation β€” mwah πŸ’‹

πŸ“¦ where this page comes from