comparison variant_effect_predictor/Bio/AnnotationCollectionI.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1f6dce3d34e0
1 # $Id: AnnotationCollectionI.pm,v 1.9 2002/10/22 07:38:24 lapp Exp $
2
3 #
4 # BioPerl module for Bio::AnnotationCollectionI
5 #
6 # Cared for by Ewan Birney <birney@ebi.ac.uk>
7 #
8 # Copyright Ewan Birney
9 #
10 # You may distribute this module under the same terms as perl itself
11
12 # POD documentation - main docs before the code
13
14 =head1 NAME
15
16 Bio::AnnotationCollectionI - Interface for annotation collections
17
18 =head1 SYNOPSIS
19
20 # get an AnnotationCollectionI somehow, eg
21
22 $ac = $seq->annotation();
23
24 foreach $key ( $ac->get_all_annotation_keys() ) {
25 @values = $ac->get_Annotations($key);
26 foreach $value ( @values ) {
27 # value is an Bio::AnnotationI, and defines a "as_text" method
28 print "Annotation ",$key," stringified value ",$value->as_text,"\n";
29
30 # also defined hash_tree method, which allows data orientated
31 # access into this object
32 $hash = $value->hash_tree();
33 }
34 }
35
36 =head1 DESCRIPTION
37
38 Annotation Collections are a way of storing a series of "interesting
39 facts" about something. We call an "interesting fact" in Bioperl an
40 Annotation (this differs from a Sequence Feature, which is called
41 a Sequence Feature and may or may not have an Annotation Collection).
42
43 The trouble about this is we are not that sure what "interesting
44 facts" someone might want to store: the possibility is endless.
45
46 Bioperl's approach is that the "interesting facts" are represented by
47 Bio::AnnotationI objects. The interface Bio::AnnotationI guarentees
48 two methods
49
50 $obj->as_text(); # string formated to display to users
51
52 and
53
54 $obj->hash_tree(); # hash with defined rules for data-orientated discovery
55
56 The hash_tree method is designed to play well with XML output and
57 other "nested-tag-of-data-values" think BoulderIO and/or Ace stuff. For more
58 info read Bio::AnnotationI docs
59
60 Annotations are stored in AnnotationCollections, each Annotation under a
61 different "tag". The tags allow simple discovery of the available annotations,
62 and in some cases (like the tag "gene_name") indicate how to interpret the
63 data underneath the tag. The tag is only one tag deep and each tag can have an
64 array of values.
65
66 In addition, AnnotationCollectionI's are guarentee to maintain a consistent
67 set object values under each tag - at least that each object complies to one
68 interface. The "standard" AnnotationCollection insists the following rules
69 are set up
70
71 Tag Object
72 --- ------
73 reference Bio::Annotation::Reference
74 comment Bio::Annotation::Comment
75 dblink Bio::Annotation::DBLink
76 gene_name Bio::Annotation::SimpleValue
77 description Bio::Annotation::SimpleValue
78
79 These tags are the implict tags that the SeqIO system needs to round-trip
80 GenBank/EMBL/Swissprot.
81
82 However, you as a user and us collectively as a community can grow the
83 "standard" tag mapping over time and specifically for a particular
84 area.
85
86
87 =head1 FEEDBACK
88
89 =head2 Mailing Lists
90
91 User feedback is an integral part of the evolution of this and other
92 Bioperl modules. Send your comments and suggestions preferably to one
93 of the Bioperl mailing lists. Your participation is much appreciated.
94
95 bioperl-l@bio.perl.org
96
97 =head2 Reporting Bugs
98
99 Report bugs to the Bioperl bug tracking system to help us keep track
100 the bugs and their resolution. Bug reports can be submitted via email
101 or the web:
102
103 bioperl-bugs@bio.perl.org
104 http://bugzilla.bioperl.org/
105
106 =head1 AUTHOR - Ewan Birney
107
108 Email birney@ebi.ac.uk
109
110 Describe contact details here
111
112 =head1 APPENDIX
113
114 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
115
116 =cut
117
118
119 # Let the code begin...
120
121
122 package Bio::AnnotationCollectionI;
123 use vars qw(@ISA);
124 use strict;
125
126 # Interface preamble - inherits from Bio::Root::RootI
127
128 use Bio::Root::RootI;
129
130 @ISA = qw(Bio::Root::RootI);
131
132
133 =head2 get_all_annotation_keys
134
135 Title : get_all_annotation_keys
136 Usage : $ac->get_all_annotation_keys()
137 Function: gives back a list of annotation keys, which are simple text strings
138 Returns : list of strings
139 Args : none
140
141 =cut
142
143 sub get_all_annotation_keys{
144 shift->throw_not_implemented();
145 }
146
147
148 =head2 get_Annotations
149
150 Title : get_Annotations
151 Usage : my @annotations = $collection->get_Annotations('key')
152 Function: Retrieves all the Bio::AnnotationI objects for a specific key
153 Returns : list of Bio::AnnotationI - empty if no objects stored for a key
154 Args : string which is key for annotations
155
156 =cut
157
158 sub get_Annotations{
159 shift->throw_not_implemented();
160 }
161
162 =head2 get_num_of_annotations
163
164 Title : get_num_of_annotations
165 Usage : my $count = $collection->get_num_of_annotations()
166 Function: Returns the count of all annotations stored in this collection
167 Returns : integer
168 Args : none
169
170
171 =cut
172
173 sub get_num_of_annotations{
174 shift->throw_not_implemented();
175 }
176
177 1;