annotate variant_effect_predictor/Bio/Annotation/Collection.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Collection.pm,v 1.16 2002/11/22 22:48:25 birney Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 # BioPerl module for Bio::Annotation::Collection.pm
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 # Cared for by Ewan Birney <birney@ebi.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 # Copyright Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 Bio::Annotation::Collection - Default Perl implementation of AnnotationCollectionI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 # get an AnnotationCollectionI somehow, eg
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 $ac = $seq->annotation();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 foreach $key ( $ac->get_all_annotation_keys() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 @values = $ac->get_Annotations($key);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 foreach $value ( @values ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 # value is an Bio::AnnotationI, and defines a "as_text" method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 print "Annotation ",$key," stringified value ",$value->as_text,"\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 # also defined hash_tree method, which allows data orientated
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 # access into this object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 $hash = $value->hash_tree();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Bioperl implementation for Bio::AnnotationCollecitonI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 bioperl-bugs@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 =head1 AUTHOR - Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 Email birney@ebi.ac.uk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 package Bio::Annotation::Collection;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 # Object preamble - inherits from Bio::Root::Root
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 use Bio::AnnotationCollectionI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::AnnotationI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::Annotation::TypeManager;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::Annotation::SimpleValue;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 @ISA = qw(Bio::Root::Root Bio::AnnotationCollectionI Bio::AnnotationI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 Usage : $coll = Bio::Annotation::Collection->new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 Function: Makes a new Annotation::Collection object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 Returns : Bio::Annotation::Collection
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 sub new{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 my ($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 $self->{'_annotation'} = {};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 $self->_typemap(Bio::Annotation::TypeManager->new());
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 =head1 L<Bio::AnnotationCollectionI> implementing methods
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 =head2 get_all_annotation_keys
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 Title : get_all_annotation_keys
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 Usage : $ac->get_all_annotation_keys()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 Function: gives back a list of annotation keys, which are simple text strings
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 Returns : list of strings
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 sub get_all_annotation_keys{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 return keys %{$self->{'_annotation'}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 =head2 get_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 Title : get_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 Usage : my @annotations = $collection->get_Annotations('key')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 Function: Retrieves all the Bio::AnnotationI objects for one or more
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 specific key(s).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 If no key is given, returns all annotation objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 The returned objects will have their tagname() attribute set to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 the key under which they were attached, unless the tagname was
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 already set.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 Returns : list of Bio::AnnotationI - empty if no objects stored for a key
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 Args : keys (list of strings) for annotations (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 sub get_Annotations{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 my ($self,@keys) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 my @anns = ();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 @keys = $self->get_all_annotation_keys() unless @keys;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 foreach my $key (@keys) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 if(exists($self->{'_annotation'}->{$key})) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 push(@anns,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 map {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 $_->tagname($key) if ! $_->tagname(); $_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 } @{$self->{'_annotation'}->{$key}});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 return @anns;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 =head2 get_all_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 Title : get_all_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 Function: Similar to get_Annotations, but traverses and flattens nested
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 annotation collections. This means that collections in the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 tree will be replaced by their components.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 Keys will not be passed on to nested collections. I.e., if the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 tag name of a nested collection matches the key, it will be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 flattened in its entirety.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 Hence, for un-nested annotation collections this will be identical
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 to get_Annotations.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 Returns : an array of L<Bio::AnnotationI> compliant objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 Args : keys (list of strings) for annotations (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 sub get_all_Annotations{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 my ($self,@keys) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 return map {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 $_->isa("Bio::AnnotationCollectionI") ?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 $_->get_all_Annotations() : $_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 } $self->get_Annotations(@keys);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 =head2 get_num_of_annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 Title : get_num_of_annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 Usage : my $count = $collection->get_num_of_annotations()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 Function: Returns the count of all annotations stored in this collection
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 Returns : integer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 sub get_num_of_annotations{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 my $count = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 map { $count += scalar @$_ } values %{$self->{'_annotation'}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 return $count;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 =head1 Implementation specific functions - mainly for adding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 =head2 add_Annotation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 Title : add_Annotation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 Usage : $self->add_Annotation('reference',$object);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 $self->add_Annotation($object,'Bio::MyInterface::DiseaseI');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 $self->add_Annotation($object);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 $self->add_Annotation('disease',$object,'Bio::MyInterface::DiseaseI');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 Function: Adds an annotation for a specific key.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 If the key is omitted, the object to be added must provide a value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 via its tagname().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 If the archetype is provided, this and future objects added under
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 that tag have to comply with the archetype and will be rejected
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 otherwise.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 Returns : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 Args : annotation key ('disease', 'dblink', ...)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 object to store (must be Bio::AnnotationI compliant)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 [optional] object archetype to map future storage of object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 of these types to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 sub add_Annotation{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 my ($self,$key,$object,$archetype) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 # if there's no key we use the tagname() as key
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 if(ref($key) && $key->isa("Bio::AnnotationI") &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 (! ($object && ref($object)))) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 $archetype = $object if $object;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 $object = $key;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 $key = $object->tagname();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 $key = $key->name() if $key && ref($key); # OntologyTermI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 $self->throw("Annotation object must have a tagname if key omitted")
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 unless $key;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 if( !defined $object ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 $self->throw("Must have at least key and object in add_Annotation");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 if( !ref $object ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 $self->throw("Must add an object. Use Bio::Annotation::{Comment,SimpleValue,OntologyTerm} for simple text additions");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 if( !$object->isa("Bio::AnnotationI") ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 $self->throw("object must be AnnotationI compliant, otherwise we wont add it!");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 # ok, now we are ready! If we don't have an archetype, set it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 # from the type of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 if( !defined $archetype ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 $archetype = ref $object;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 # check typemap, storing if needed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 my $stored_map = $self->_typemap->type_for_key($key);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 if( defined $stored_map ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 # check validity, irregardless of archetype. A little cheeky
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 # this means isa stuff is executed correctly
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 if( !$self->_typemap()->is_valid($key,$object) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 $self->throw("Object $object was not valid with key $key. If you were adding new keys in, perhaps you want to make use of the archetype method to allow registration to a more basic type");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 $self->_typemap->_add_type_map($key,$archetype);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 # we are ok to store
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 if( !defined $self->{'_annotation'}->{$key} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 $self->{'_annotation'}->{$key} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 push(@{$self->{'_annotation'}->{$key}},$object);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 =head2 remove_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 Title : remove_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 Function: Remove the annotations for the specified key from this collection.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 Returns : an array Bio::AnnotationI compliant objects which were stored
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 under the given key(s)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 Args : the key(s) (tag name(s), one or more strings) for which to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 remove annotations (optional; if none given, flushes all
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 annotations)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 sub remove_Annotations{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 my ($self, @keys) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 @keys = $self->get_all_annotation_keys() unless @keys;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 my @anns = $self->get_Annotations(@keys);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 # flush
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 foreach (@keys) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 delete $self->{'_annotation'}->{$_};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 return @anns;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 =head2 flatten_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Title : flatten_Annotations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 Function: Flattens part or all of the annotations in this collection.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 This is a convenience method for getting the flattened
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 annotation for the given keys, removing the annotation for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 those keys, and adding back the flattened array.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 This should not change anything for un-nested collections.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 Returns : an array Bio::AnnotationI compliant objects which were stored
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 under the given key(s)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 Args : list of keys (strings) the annotation for which to flatten,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 defaults to all keys if not given
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 sub flatten_Annotations{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 my ($self,@keys) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 my @anns = $self->get_all_Annotations(@keys);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 my @origanns = $self->remove_Annotations(@keys);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 foreach (@anns) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 $self->add_Annotation($_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 return @origanns;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 =head1 Bio::AnnotationI methods implementations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 This is to allow nested annotation: you can a collection as an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 annotation object to an annotation collection.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 =head2 as_text
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 Title : as_text
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 Function: See L<Bio::AnnotationI>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 sub as_text{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 my $txt = "Collection consisting of ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 my @texts = ();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 foreach my $ann ($self->get_Annotations()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 push(@texts, $ann->as_text());
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 if(@texts) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 $txt .= join(", ", map { '['.$_.']'; } @texts);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 $txt .= "no elements";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 return $txt;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 =head2 hash_tree
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 Title : hash_tree
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 Function: See L<Bio::AnnotationI>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 Returns : a hash reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 sub hash_tree{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 my $tree = {};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 foreach my $key ($self->get_all_annotation_keys()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 # all contained objects will support hash_tree()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 # (they are AnnotationIs)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 $tree->{$key} = [$self->get_Annotations($key)];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 return $tree;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 =head2 tagname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420 Title : tagname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 Usage : $obj->tagname($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 Function: Get/set the tagname for this annotation value.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 Setting this is optional. If set, it obviates the need to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 provide a tag to Bio::AnnotationCollectionI when adding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 this object. When obtaining an AnnotationI object from the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 collection, the collection will set the value to the tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 under which it was stored unless the object has a tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 stored already.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 Returns : value of tagname (a scalar)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 Args : new value (a scalar, optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438 sub tagname{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441 return $self->{'tagname'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 return $self->{'tagname'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446 =head1 Backward compatible functions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 Functions put in for backward compatibility with old
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 Bio::Annotation.pm stuff
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453 =head2 description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 Title : description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 sub description{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468 $self->deprecated("Using old style annotation call on new Annotation::Collection object");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470 if( defined $value ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471 my $val = Bio::Annotation::SimpleValue->new();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 $val->value($value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473 $self->add_Annotation('description',$val);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476 my ($desc) = $self->get_Annotations('description');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478 # If no description tag exists, do not attempt to call value on undef:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479 return $desc ? $desc->value : undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483 =head2 add_gene_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485 Title : add_gene_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495 sub add_gene_name{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498 $self->deprecated("Old style add_gene_name called on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 my $val = Bio::Annotation::SimpleValue->new();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501 $val->value($value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 $self->add_Annotation('gene_name',$val);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 =head2 each_gene_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507 Title : each_gene_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517 sub each_gene_name{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520 $self->deprecated("Old style each_gene_name called on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522 my @out;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 my @gene = $self->get_Annotations('gene_name');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525 foreach my $g ( @gene ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 push(@out,$g->value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529 return @out;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532 =head2 add_Reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534 Title : add_Reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544 sub add_Reference{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545 my ($self, @values) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547 $self->deprecated("add_Reference (old style Annotation) on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549 # Allow multiple (or no) references to be passed, as per old method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550 foreach my $value (@values) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551 $self->add_Annotation('reference',$value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555 =head2 each_Reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557 Title : each_Reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
567 sub each_Reference{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
568 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
569
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
570 $self->deprecated("each_Reference (old style Annotation) on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
571
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
572 return $self->get_Annotations('reference');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
573 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
574
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
575
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
576 =head2 add_Comment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
577
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
578 Title : add_Comment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
579 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
580 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
581 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
582 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
583 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
584
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
585
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
586 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
587
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
588 sub add_Comment{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
589 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
590
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
591 $self->deprecated("add_Comment (old style Annotation) on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
592
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
593 $self->add_Annotation('comment',$value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
594
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
595 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
596
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
597 =head2 each_Comment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
598
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
599 Title : each_Comment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
600 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
601 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
602 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
603 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
604 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
605
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
606
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
607 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
608
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
609 sub each_Comment{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
610 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
611
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
612 $self->deprecated("each_Comment (old style Annotation) on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
613
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
614 return $self->get_Annotations('comment');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
615 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
616
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
617
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
618
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
619 =head2 add_DBLink
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
620
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
621 Title : add_DBLink
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
622 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
623 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
624 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
625 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
626 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
627
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
628
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
629 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
630
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
631 sub add_DBLink{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
632 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
633
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
634 $self->deprecated("add_DBLink (old style Annotation) on new style Annotation::Collection");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
635
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
636 $self->add_Annotation('dblink',$value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
637
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
638 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
639
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
640 =head2 each_DBLink
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
641
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
642 Title : each_DBLink
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
643 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
644 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
645 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
646 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
647 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
648
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
649
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
650 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
651
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
652 sub each_DBLink{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
653 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
654
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
655 $self->deprecated("each_DBLink (old style Annotation) on new style Annotation::Collection - use get_Annotations('dblink')");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
656
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
657 return $self->get_Annotations('dblink');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
658 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
659
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
660
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
661
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
662 =head1 Implementation management functions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
663
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
664 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
665
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
666 =head2 _typemap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
667
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
668 Title : _typemap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
669 Usage : $obj->_typemap($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
670 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
671 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
672 Returns : value of _typemap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
673 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
674
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
675
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
676 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
677
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
678 sub _typemap{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
679 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
680 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
681 $self->{'_typemap'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
682 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
683 return $self->{'_typemap'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
684
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
685 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
686
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
687 1;