0
|
1 # $Id: SimpleValue.pm,v 1.9.2.1 2003/03/10 22:04:56 lapp Exp $
|
|
2 #
|
|
3 # BioPerl module for Bio::Annotation::SimpleValue
|
|
4 #
|
|
5 # Cared for by bioperl <bioperl-l@bio.perl.org>
|
|
6 #
|
|
7 # Copyright bioperl
|
|
8 #
|
|
9 # You may distribute this module under the same terms as perl itself
|
|
10
|
|
11 # POD documentation - main docs before the code
|
|
12
|
|
13 =head1 NAME
|
|
14
|
|
15 Bio::Annotation::SimpleValue - A simple scalar
|
|
16
|
|
17 =head1 SYNOPSIS
|
|
18
|
|
19 use Bio::Annotation::SimpleValue;
|
|
20 use Bio::Annotation::Collection;
|
|
21
|
|
22 my $col = new Bio::Annotation::Collection;
|
|
23 my $sv = new Bio::Annotation::SimpleValue(-value => 'someval');
|
|
24 $col->add_Annotation('tagname', $sv);
|
|
25
|
|
26 =head1 DESCRIPTION
|
|
27
|
|
28 Scalar value annotation object
|
|
29
|
|
30 =head1 FEEDBACK
|
|
31
|
|
32 =head2 Mailing Lists
|
|
33
|
|
34 User feedback is an integral part of the evolution of this and other
|
|
35 Bioperl modules. Send your comments and suggestions preferably to one
|
|
36 of the Bioperl mailing lists. Your participation is much appreciated.
|
|
37
|
|
38 bioperl-l@bioperl.org - General discussion
|
|
39 http://bio.perl.org/MailList.html - About the mailing lists
|
|
40
|
|
41 =head2 Reporting Bugs
|
|
42
|
|
43 Report bugs to the Bioperl bug tracking system to help us keep track
|
|
44 the bugs and their resolution. Bug reports can be submitted via email
|
|
45 or the web:
|
|
46
|
|
47 bioperl-bugs@bioperl.org
|
|
48 http://bugzilla.bioperl.org/
|
|
49
|
|
50 =head1 AUTHOR - bioperl
|
|
51
|
|
52 Email bioperl-l@bio.perl.org
|
|
53
|
|
54 Describe contact details here
|
|
55
|
|
56 =head1 APPENDIX
|
|
57
|
|
58 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
|
|
59
|
|
60 =cut
|
|
61
|
|
62
|
|
63 # Let the code begin...
|
|
64
|
|
65
|
|
66 package Bio::Annotation::SimpleValue;
|
|
67 use vars qw(@ISA);
|
|
68 use strict;
|
|
69
|
|
70 # Object preamble - inherits from Bio::Root::Root
|
|
71
|
|
72 use Bio::AnnotationI;
|
|
73 #use Bio::Ontology::TermI;
|
|
74 use Bio::Root::Root;
|
|
75
|
|
76 @ISA = qw(Bio::Root::Root Bio::AnnotationI);
|
|
77
|
|
78 =head2 new
|
|
79
|
|
80 Title : new
|
|
81 Usage : my $sv = new Bio::Annotation::SimpleValue;
|
|
82 Function: Instantiate a new SimpleValue object
|
|
83 Returns : Bio::Annotation::SimpleValue object
|
|
84 Args : -value => $value to initialize the object data field [optional]
|
|
85 -tagname => $tag to initialize the tagname [optional]
|
|
86 -tag_term => ontology term representation of the tag [optional]
|
|
87
|
|
88 =cut
|
|
89
|
|
90 sub new{
|
|
91 my ($class,@args) = @_;
|
|
92
|
|
93 my $self = $class->SUPER::new(@args);
|
|
94
|
|
95 my ($value,$tag,$term) =
|
|
96 $self->_rearrange([qw(VALUE TAGNAME TAG_TERM)], @args);
|
|
97
|
|
98 # set the term first
|
|
99 defined $term && $self->tag_term($term);
|
|
100 defined $value && $self->value($value);
|
|
101 defined $tag && $self->tagname($tag);
|
|
102
|
|
103 return $self;
|
|
104 }
|
|
105
|
|
106
|
|
107 =head1 AnnotationI implementing functions
|
|
108
|
|
109 =cut
|
|
110
|
|
111 =head2 as_text
|
|
112
|
|
113 Title : as_text
|
|
114 Usage : my $text = $obj->as_text
|
|
115 Function: return the string "Value: $v" where $v is the value
|
|
116 Returns : string
|
|
117 Args : none
|
|
118
|
|
119
|
|
120 =cut
|
|
121
|
|
122 sub as_text{
|
|
123 my ($self) = @_;
|
|
124
|
|
125 return "Value: ".$self->value;
|
|
126 }
|
|
127
|
|
128 =head2 hash_tree
|
|
129
|
|
130 Title : hash_tree
|
|
131 Usage : my $hashtree = $value->hash_tree
|
|
132 Function: For supporting the AnnotationI interface just returns the value
|
|
133 as a hashref with the key 'value' pointing to the value
|
|
134 Returns : hashrf
|
|
135 Args : none
|
|
136
|
|
137
|
|
138 =cut
|
|
139
|
|
140 sub hash_tree{
|
|
141 my ($self) = @_;
|
|
142
|
|
143 my $h = {};
|
|
144 $h->{'value'} = $self->value;
|
|
145 }
|
|
146
|
|
147 =head2 tagname
|
|
148
|
|
149 Title : tagname
|
|
150 Usage : $obj->tagname($newval)
|
|
151 Function: Get/set the tagname for this annotation value.
|
|
152
|
|
153 Setting this is optional. If set, it obviates the need to
|
|
154 provide a tag to AnnotationCollection when adding this
|
|
155 object.
|
|
156
|
|
157 Example :
|
|
158 Returns : value of tagname (a scalar)
|
|
159 Args : new value (a scalar, optional)
|
|
160
|
|
161
|
|
162 =cut
|
|
163
|
|
164 sub tagname{
|
|
165 my $self = shift;
|
|
166
|
|
167 # check for presence of an ontology term
|
|
168 if($self->{'_tag_term'}) {
|
|
169 # keep a copy in case the term is removed later
|
|
170 $self->{'tagname'} = $_[0] if @_;
|
|
171 # delegate to the ontology term object
|
|
172 return $self->tag_term->name(@_);
|
|
173 }
|
|
174 return $self->{'tagname'} = shift if @_;
|
|
175 return $self->{'tagname'};
|
|
176 }
|
|
177
|
|
178
|
|
179 =head1 Specific accessors for SimpleValue
|
|
180
|
|
181 =cut
|
|
182
|
|
183 =head2 value
|
|
184
|
|
185 Title : value
|
|
186 Usage : $obj->value($newval)
|
|
187 Function: Get/Set the value for simplevalue
|
|
188 Returns : value of value
|
|
189 Args : newvalue (optional)
|
|
190
|
|
191
|
|
192 =cut
|
|
193
|
|
194 sub value{
|
|
195 my ($self,$value) = @_;
|
|
196
|
|
197 if( defined $value) {
|
|
198 $self->{'value'} = $value;
|
|
199 }
|
|
200 return $self->{'value'};
|
|
201 }
|
|
202
|
|
203 =head2 tag_term
|
|
204
|
|
205 Title : tag_term
|
|
206 Usage : $obj->tag_term($newval)
|
|
207 Function: Get/set the L<Bio::Ontology::TermI> object representing
|
|
208 the tag name.
|
|
209
|
|
210 This is so you can specifically relate the tag of this
|
|
211 annotation to an entry in an ontology. You may want to do
|
|
212 this to associate an identifier with the tag, or a
|
|
213 particular category, such that you can better match the tag
|
|
214 against a controlled vocabulary.
|
|
215
|
|
216 This accessor will return undef if it has never been set
|
|
217 before in order to allow this annotation to stay
|
|
218 light-weight if an ontology term representation of the tag
|
|
219 is not needed. Once it is set to a valid value, tagname()
|
|
220 will actually delegate to the name() of this term.
|
|
221
|
|
222 Example :
|
|
223 Returns : a L<Bio::Ontology::TermI> compliant object, or undef
|
|
224 Args : on set, new value (a L<Bio::Ontology::TermI> compliant
|
|
225 object or undef, optional)
|
|
226
|
|
227
|
|
228 =cut
|
|
229
|
|
230 sub tag_term{
|
|
231 my $self = shift;
|
|
232
|
|
233 return $self->{'_tag_term'} = shift if @_;
|
|
234 return $self->{'_tag_term'};
|
|
235 }
|
|
236
|
|
237 1;
|