Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/AnnotationCollectionI.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/AnnotationCollectionI.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,177 @@ +# $Id: AnnotationCollectionI.pm,v 1.9 2002/10/22 07:38:24 lapp Exp $ + +# +# BioPerl module for Bio::AnnotationCollectionI +# +# Cared for by Ewan Birney <birney@ebi.ac.uk> +# +# Copyright Ewan Birney +# +# You may distribute this module under the same terms as perl itself + +# POD documentation - main docs before the code + +=head1 NAME + +Bio::AnnotationCollectionI - Interface for annotation collections + +=head1 SYNOPSIS + + # 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(); + } + } + +=head1 DESCRIPTION + +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). + +The trouble about this is we are not that sure what "interesting +facts" someone might want to store: the possibility is endless. + +Bioperl's approach is that the "interesting facts" are represented by +Bio::AnnotationI objects. The interface Bio::AnnotationI guarentees +two methods + + $obj->as_text(); # string formated 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" think BoulderIO and/or Ace stuff. For more +info read Bio::AnnotationI docs + +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, AnnotationCollectionI's are guarentee to maintain a consistent +set object values under each tag - at least that each object complies to one +interface. The "standard" AnnotationCollection insists the following rules +are set up + + Tag Object + --- ------ + reference Bio::Annotation::Reference + comment Bio::Annotation::Comment + dblink Bio::Annotation::DBLink + gene_name Bio::Annotation::SimpleValue + description Bio::Annotation::SimpleValue + +These tags are the implict tags that the SeqIO system needs to round-trip +GenBank/EMBL/Swissprot. + +However, you as a user and us collectively as a community can grow the +"standard" tag mapping over time and specifically for a particular +area. + + +=head1 FEEDBACK + +=head2 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. + + bioperl-l@bio.perl.org + +=head2 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 email +or the web: + + bioperl-bugs@bio.perl.org + http://bugzilla.bioperl.org/ + +=head1 AUTHOR - Ewan Birney + +Email birney@ebi.ac.uk + +Describe contact details here + +=head1 APPENDIX + +The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ + +=cut + + +# Let the code begin... + + +package Bio::AnnotationCollectionI; +use vars qw(@ISA); +use strict; + +# Interface preamble - inherits from Bio::Root::RootI + +use Bio::Root::RootI; + +@ISA = qw(Bio::Root::RootI); + + +=head2 get_all_annotation_keys + + Title : 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 + +=cut + +sub get_all_annotation_keys{ + shift->throw_not_implemented(); +} + + +=head2 get_Annotations + + Title : 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 + +=cut + +sub get_Annotations{ + shift->throw_not_implemented(); +} + +=head2 get_num_of_annotations + + Title : 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 + + +=cut + +sub get_num_of_annotations{ + shift->throw_not_implemented(); +} + +1;