Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/Annotation/SimpleValue.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/Annotation/SimpleValue.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,237 @@ +# $Id: SimpleValue.pm,v 1.9.2.1 2003/03/10 22:04:56 lapp Exp $ +# +# BioPerl module for Bio::Annotation::SimpleValue +# +# Cared for by bioperl <bioperl-l@bio.perl.org> +# +# Copyright bioperl +# +# You may distribute this module under the same terms as perl itself + +# POD documentation - main docs before the code + +=head1 NAME + +Bio::Annotation::SimpleValue - A simple scalar + +=head1 SYNOPSIS + + use Bio::Annotation::SimpleValue; + use Bio::Annotation::Collection; + + my $col = new Bio::Annotation::Collection; + my $sv = new Bio::Annotation::SimpleValue(-value => 'someval'); + $col->add_Annotation('tagname', $sv); + +=head1 DESCRIPTION + +Scalar value annotation object + +=head1 FEEDBACK + +=head2 Mailing Lists + +User feedback is an integral part of the evolution of this and other +Bioperl modules. Send your comments and suggestions preferably to one +of the Bioperl mailing lists. Your participation is much appreciated. + + bioperl-l@bioperl.org - General discussion + http://bio.perl.org/MailList.html - About the mailing lists + +=head2 Reporting Bugs + +Report bugs to the Bioperl bug tracking system to help us keep track +the bugs and their resolution. Bug reports can be submitted via email +or the web: + + bioperl-bugs@bioperl.org + http://bugzilla.bioperl.org/ + +=head1 AUTHOR - bioperl + +Email bioperl-l@bio.perl.org + +Describe contact details here + +=head1 APPENDIX + +The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ + +=cut + + +# Let the code begin... + + +package Bio::Annotation::SimpleValue; +use vars qw(@ISA); +use strict; + +# Object preamble - inherits from Bio::Root::Root + +use Bio::AnnotationI; +#use Bio::Ontology::TermI; +use Bio::Root::Root; + +@ISA = qw(Bio::Root::Root Bio::AnnotationI); + +=head2 new + + Title : new + Usage : my $sv = new Bio::Annotation::SimpleValue; + Function: Instantiate a new SimpleValue object + Returns : Bio::Annotation::SimpleValue object + Args : -value => $value to initialize the object data field [optional] + -tagname => $tag to initialize the tagname [optional] + -tag_term => ontology term representation of the tag [optional] + +=cut + +sub new{ + my ($class,@args) = @_; + + my $self = $class->SUPER::new(@args); + + my ($value,$tag,$term) = + $self->_rearrange([qw(VALUE TAGNAME TAG_TERM)], @args); + + # set the term first + defined $term && $self->tag_term($term); + defined $value && $self->value($value); + defined $tag && $self->tagname($tag); + + return $self; +} + + +=head1 AnnotationI implementing functions + +=cut + +=head2 as_text + + Title : as_text + Usage : my $text = $obj->as_text + Function: return the string "Value: $v" where $v is the value + Returns : string + Args : none + + +=cut + +sub as_text{ + my ($self) = @_; + + return "Value: ".$self->value; +} + +=head2 hash_tree + + Title : hash_tree + Usage : my $hashtree = $value->hash_tree + Function: For supporting the AnnotationI interface just returns the value + as a hashref with the key 'value' pointing to the value + Returns : hashrf + Args : none + + +=cut + +sub hash_tree{ + my ($self) = @_; + + my $h = {}; + $h->{'value'} = $self->value; +} + +=head2 tagname + + Title : tagname + Usage : $obj->tagname($newval) + Function: Get/set the tagname for this annotation value. + + Setting this is optional. If set, it obviates the need to + provide a tag to AnnotationCollection when adding this + object. + + Example : + Returns : value of tagname (a scalar) + Args : new value (a scalar, optional) + + +=cut + +sub tagname{ + my $self = shift; + + # check for presence of an ontology term + if($self->{'_tag_term'}) { + # keep a copy in case the term is removed later + $self->{'tagname'} = $_[0] if @_; + # delegate to the ontology term object + return $self->tag_term->name(@_); + } + return $self->{'tagname'} = shift if @_; + return $self->{'tagname'}; +} + + +=head1 Specific accessors for SimpleValue + +=cut + +=head2 value + + Title : value + Usage : $obj->value($newval) + Function: Get/Set the value for simplevalue + Returns : value of value + Args : newvalue (optional) + + +=cut + +sub value{ + my ($self,$value) = @_; + + if( defined $value) { + $self->{'value'} = $value; + } + return $self->{'value'}; +} + +=head2 tag_term + + Title : tag_term + Usage : $obj->tag_term($newval) + Function: Get/set the L<Bio::Ontology::TermI> object representing + the tag name. + + This is so you can specifically relate the tag of this + annotation to an entry in an ontology. You may want to do + this to associate an identifier with the tag, or a + particular category, such that you can better match the tag + against a controlled vocabulary. + + This accessor will return undef if it has never been set + before in order to allow this annotation to stay + light-weight if an ontology term representation of the tag + is not needed. Once it is set to a valid value, tagname() + will actually delegate to the name() of this term. + + Example : + Returns : a L<Bio::Ontology::TermI> compliant object, or undef + Args : on set, new value (a L<Bio::Ontology::TermI> compliant + object or undef, optional) + + +=cut + +sub tag_term{ + my $self = shift; + + return $self->{'_tag_term'} = shift if @_; + return $self->{'_tag_term'}; +} + +1;