annotate variant_effect_predictor/Bio/Annotation/Collection.pm @ 3:d30fa12e4cc5 default tip

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