annotate variant_effect_predictor/Bio/Annotation/Collection.pm @ 1:d6778b5d8382 draft default tip

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