2 # BioPerl module for Bio::Annotation::SimpleValue
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by bioperl <bioperl-l@bioperl.org>
10 # You may distribute this module under the same terms as perl itself
12 # POD documentation - main docs before the code
16 Bio::Annotation::SimpleValue - A simple scalar
20 use Bio::Annotation::SimpleValue;
21 use Bio::Annotation::Collection;
23 my $col = Bio::Annotation::Collection->new();
24 my $sv = Bio::Annotation::SimpleValue->new(-value => 'someval');
25 $col->add_Annotation('tagname', $sv);
29 Scalar value annotation object
35 User feedback is an integral part of the evolution of this and other
36 Bioperl modules. Send your comments and suggestions preferably to one
37 of the Bioperl mailing lists. Your participation is much appreciated.
39 bioperl-l@bioperl.org - General discussion
40 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
44 Please direct usage questions or support issues to the mailing list:
46 I<bioperl-l@bioperl.org>
48 rather than to the module maintainer directly. Many experienced and
49 reponsive experts will be able look at the problem and quickly
50 address it. Please include a thorough description of the problem
51 with code and data examples if at all possible.
55 Report bugs to the Bioperl bug tracking system to help us keep track
56 the bugs and their resolution. Bug reports can be submitted via
59 https://github.com/bioperl/bioperl-live/issues
61 =head1 AUTHOR - Ewan Birney
63 Email birney@ebi.ac.uk
67 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
72 # Let the code begin...
75 package Bio
::Annotation
::SimpleValue
;
78 # Object preamble - inherits from Bio::Root::Root
80 #use Bio::Ontology::TermI;
82 use base
qw(Bio::Root::Root Bio::AnnotationI);
87 Usage : my $sv = Bio::Annotation::SimpleValue->new();
88 Function: Instantiate a new SimpleValue object
89 Returns : Bio::Annotation::SimpleValue object
90 Args : -value => $value to initialize the object data field [optional]
91 -tagname => $tag to initialize the tagname [optional]
92 -tag_term => ontology term representation of the tag [optional]
97 my ($class,@args) = @_;
99 my $self = $class->SUPER::new
(@args);
101 my ($value,$tag,$term) =
102 $self->_rearrange([qw(VALUE TAGNAME TAG_TERM)], @args);
105 defined $term && $self->tag_term($term);
106 defined $value && $self->value($value);
107 defined $tag && $self->tagname($tag);
113 =head1 AnnotationI implementing functions
120 Usage : my $text = $obj->as_text
121 Function: return the string "Value: $v" where $v is the value
131 return "Value: ".$self->value;
137 Usage : my $str = $ann->display_text();
138 Function: returns a string. Unlike as_text(), this method returns a string
139 formatted as would be expected for te specific implementation.
141 One can pass a callback as an argument which allows custom text
142 generation; the callback is passed the current instance and any text
146 Args : [optional] callback
151 my $DEFAULT_CB = sub { $_[0]->value};
154 my ($self, $cb) = @_;
156 $self->throw("Callback must be a code reference") if ref $cb ne 'CODE';
165 Usage : my $hashtree = $value->hash_tree
166 Function: For supporting the AnnotationI interface just returns the value
167 as a hashref with the key 'value' pointing to the value
178 $h->{'value'} = $self->value;
185 Usage : $obj->tagname($newval)
186 Function: Get/set the tagname for this annotation value.
188 Setting this is optional. If set, it obviates the need to
189 provide a tag to AnnotationCollection when adding this
193 Returns : value of tagname (a scalar)
194 Args : new value (a scalar, optional)
202 # check for presence of an ontology term
203 if($self->{'_tag_term'}) {
204 # keep a copy in case the term is removed later
205 $self->{'tagname'} = $_[0] if @_;
206 # delegate to the ontology term object
207 return $self->tag_term->name(@_);
209 return $self->{'tagname'} = shift if @_;
210 return $self->{'tagname'};
214 =head1 Specific accessors for SimpleValue
221 Usage : $obj->value($newval)
222 Function: Get/Set the value for simplevalue
223 Returns : value of value
224 Args : newvalue (optional)
230 my ($self,$value) = @_;
232 if( defined $value) {
233 $self->{'value'} = $value;
235 return $self->{'value'};
241 Usage : $obj->tag_term($newval)
242 Function: Get/set the L<Bio::Ontology::TermI> object representing
245 This is so you can specifically relate the tag of this
246 annotation to an entry in an ontology. You may want to do
247 this to associate an identifier with the tag, or a
248 particular category, such that you can better match the tag
249 against a controlled vocabulary.
251 This accessor will return undef if it has never been set
252 before in order to allow this annotation to stay
253 light-weight if an ontology term representation of the tag
254 is not needed. Once it is set to a valid value, tagname()
255 will actually delegate to the name() of this term.
258 Returns : a L<Bio::Ontology::TermI> compliant object, or undef
259 Args : on set, new value (a L<Bio::Ontology::TermI> compliant
260 object or undef, optional)
268 return $self->{'_tag_term'} = shift if @_;
269 return $self->{'_tag_term'};