diff variant_effect_predictor/Bio/Annotation/OntologyTerm.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/OntologyTerm.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,490 @@
+# $Id: OntologyTerm.pm,v 1.4.2.2 2003/04/04 15:53:20 lapp Exp $
+#
+# BioPerl module for Bio::Annotation::OntologyTerm
+#
+# Cared for by Hilmar Lapp <hlapp at gmx.net>
+#
+# Copyright Hilmar Lapp
+#
+# You may distribute this module under the same terms as perl itself
+
+# 
+# (c) Hilmar Lapp, hlapp at gmx.net, 2002.
+# (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
+#
+# You may distribute this module under the same terms as perl itself.
+# Refer to the Perl Artistic License (see the license accompanying this
+# software package, or see http://www.perl.com/language/misc/Artistic.html)
+# for the terms under which you may use, modify, and redistribute this module.
+# 
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# POD documentation - main docs before the code
+
+=head1 NAME
+
+Bio::Annotation::OntologyTerm - An ontology term adapted to AnnotationI
+
+=head1 SYNOPSIS
+
+   use Bio::Annotation::OntologyTerm;
+   use Bio::Annotation::Collection;
+   use Bio::Ontology::Term;
+
+   my $coll = new Bio::Annotation::Collection;
+
+   # this also implements a tag/value pair, where tag _and_ value are treated
+   # as ontology terms
+   my $annterm = new Bio::Annotation::OntologyTerm(-label => 'ABC1',
+                                                   -tagname => 'Gene Name');
+   # ontology terms can be added directly - they implicitly have a tag
+   $coll->add_Annotation($annterm);
+
+   # implementation is by composition - you can get/set the term object
+   # e.g.
+   my $term = $annterm->term(); # term is-a Bio::Ontology::TermI
+   print "ontology term ",$term->name()," (ID ",$term->identifier(),
+         "), ontology ",$term->ontology()->name(),"\n";
+   $term = Bio::Ontology::Term->new(-name => 'ABC2', -ontology => 'Gene Name');
+   $annterm->term($term);
+
+=head1 DESCRIPTION
+
+Ontology term 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 - Hilmar Lapp
+
+Email bioperl-l@bio.perl.org
+Email hlapp at gmx.net
+
+
+=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::OntologyTerm;
+use vars qw(@ISA);
+use strict;
+
+# Object preamble - inherits from Bio::Root::Root
+
+use Bio::AnnotationI;
+use Bio::Ontology::TermI;
+use Bio::Ontology::Term;
+use Bio::Root::Root;
+
+@ISA = qw(Bio::Root::Root Bio::AnnotationI Bio::Ontology::TermI);
+
+=head2 new
+
+ Title   : new
+ Usage   : my $sv = new Bio::Annotation::OntologyTerm;
+ Function: Instantiate a new OntologyTerm object
+ Returns : Bio::Annotation::OntologyTerm object
+ Args    : -term => $term to initialize the term data field [optional]
+           Most named arguments that Bio::Ontology::Term accepts will work
+           here too. -label is a synonym for -name, -tagname is a synonym for
+           -ontology.
+
+=cut
+
+sub new{
+    my ($class,@args) = @_;
+    
+    my $self = $class->SUPER::new(@args);
+    
+    my ($term,$name,$label,$identifier,$definition,$ont,$tag) =
+	$self->_rearrange([qw(TERM
+			      NAME
+			      LABEL
+			      IDENTIFIER
+			      DEFINITION
+			      ONTOLOGY
+			      TAGNAME)],
+			  @args);
+    if($term) {
+	$self->term($term);
+    } else {
+	$self->name($name || $label) if $name || $label;
+	$self->identifier($identifier) if $identifier;
+	$self->definition($definition) if $definition;
+    }
+    $self->ontology($ont || $tag) if $ont || $tag;
+
+    return $self;
+}
+
+
+=head1 AnnotationI implementing functions
+
+=cut
+
+=head2 as_text
+
+ Title   : as_text
+ Usage   : my $text = $obj->as_text
+ Function: return the string "Name: $v" where $v is the name of the term
+ Returns : string
+ Args    : none
+
+
+=cut
+
+sub as_text{
+   my ($self) = @_;
+
+   return $self->tagname()."|".$self->name()."|".$self->identifier();
+}
+
+=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->{'name'} = $self->name();
+   $h->{'identifier'} = $self->identifier();
+   $h->{'definition'} = $self->definition();
+   $h->{'synonyms'} = [$self->each_synonym()];
+}
+
+
+=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.
+
+           This is aliased to ontology() here.
+ Example : 
+ Returns : value of tagname (a scalar)
+ Args    : new value (a scalar, optional)
+
+
+=cut
+
+sub tagname{
+    my $self = shift;
+
+    return $self->ontology(@_) if @_;
+    # if in get mode we need to get the name from the ontology
+    my $ont = $self->ontology();
+    return ref($ont) ? $ont->name() : $ont;
+}
+
+=head1 Methods for Bio::Ontology::TermI compliance
+
+=cut
+
+=head2 term
+
+ Title   : term
+ Usage   : $obj->term($newval)
+ Function: Get/set the Bio::Ontology::TermI implementing object.
+
+           We implement TermI by composition, and this method sets/gets the
+           object we delegate to.
+ Example : 
+ Returns : value of term (a Bio::Ontology::TermI compliant object)
+ Args    : new value (a Bio::Ontology::TermI compliant object, optional)
+
+
+=cut
+
+sub term{
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'term'} = $value;
+    }
+    if(! exists($self->{'term'})) {
+	$self->{'term'} = Bio::Ontology::Term->new();
+    }
+    return $self->{'term'};
+}
+
+=head2 identifier
+
+ Title   : identifier
+ Usage   : $term->identifier( "0003947" );
+           or
+           print $term->identifier();
+ Function: Set/get for the identifier of this Term.
+ Returns : The identifier [scalar].
+ Args    : The identifier [scalar] (optional).
+
+=cut
+
+sub identifier {
+    return shift->term()->identifier(@_);
+} # identifier
+
+=head2 name
+
+ Title   : name
+ Usage   : $term->name( "N-acetylgalactosaminyltransferase" );
+           or
+           print $term->name();
+ Function: Set/get for the name of this Term.
+ Returns : The name [scalar].
+ Args    : The name [scalar] (optional).
+
+=cut
+
+sub name {
+    return shift->term()->name(@_);
+} # name
+
+
+=head2 definition
+
+ Title   : definition
+ Usage   : $term->definition( "Catalysis of ..." );
+           or
+           print $term->definition();
+ Function: Set/get for the definition of this Term.
+ Returns : The definition [scalar].
+ Args    : The definition [scalar] (optional).
+
+=cut
+
+sub definition {
+    return shift->term()->definition(@_);
+} # definition
+
+=head2 ontology
+
+ Title   : ontology
+ Usage   : $term->ontology( $top );
+           or 
+           $top = $term->ontology();
+ Function: Set/get for a relationship between this Term and
+           another Term (e.g. the top level of the ontology).
+ Returns : The ontology of this Term [TermI].
+ Args    : The ontology of this Term [TermI or scalar -- which
+           becomes the name of the catagory term] (optional).
+
+=cut
+
+sub ontology {
+    return shift->term()->ontology(@_);
+}
+
+=head2 is_obsolete
+
+ Title   : is_obsolete
+ Usage   : $term->is_obsolete( 1 );
+           or
+           if ( $term->is_obsolete() )
+ Function: Set/get for the obsoleteness of this Term.
+ Returns : the obsoleteness [0 or 1].
+ Args    : the obsoleteness [0 or 1] (optional).
+
+=cut
+
+sub is_obsolete {
+    return shift->term()->is_obsolete(@_);
+} # is_obsolete
+
+=head2 comment
+
+ Title   : comment
+ Usage   : $term->comment( "Consider the term ..." );
+           or 
+           print $term->comment();
+ Function: Set/get for an arbitrary comment about this Term.
+ Returns : A comment.
+ Args    : A comment (optional).
+
+=cut
+
+sub comment {
+    return shift->term()->comment(@_);
+} # comment
+
+=head2 get_synonyms
+
+ Title   : get_synonyms()
+ Usage   : @aliases = $term->get_synonyms();                 
+ Function: Returns a list of aliases of this Term.
+ Returns : A list of aliases [array of [scalar]].
+ Args    :
+
+=cut
+
+sub get_synonyms {
+    return shift->term()->get_synonyms(@_);
+} # get_synonyms
+
+=head2 add_synonym
+
+ Title   : add_synonym
+ Usage   : $term->add_synonym( @asynonyms );
+           or
+           $term->add_synonym( $synonym );                  
+ Function: Pushes one or more synonyms into the list of synonyms.
+ Returns : 
+ Args    : One synonym [scalar] or a list of synonyms [array of [scalar]].
+
+=cut
+
+sub add_synonym {
+    return shift->term()->add_synonym(@_);
+} # add_synonym
+
+
+=head2 remove_synonyms
+
+ Title   : remove_synonyms()
+ Usage   : $term->remove_synonyms();
+ Function: Deletes (and returns) the synonyms of this Term.
+ Returns : A list of synonyms [array of [scalar]].
+ Args    :
+
+=cut
+
+sub remove_synonyms {
+    return shift->term()->remove_synonyms(@_);
+} # remove_synonyms
+
+=head2 get_dblinks
+
+ Title   : get_dblinks()
+ Usage   : @ds = $term->get_dblinks();
+ Function: Returns a list of each dblinks of this GO term.
+ Returns : A list of dblinks [array of [scalars]].
+ Args    :
+
+=cut
+
+sub get_dblinks {
+    return shift->term->get_dblinks(@_);
+} # get_dblinks
+
+
+=head2 add_dblink
+
+ Title   : add_dblink
+ Usage   : $term->add_dblink( @dbls );
+           or
+           $term->add_dblink( $dbl );                  
+ Function: Pushes one or more dblinks
+           into the list of dblinks.
+ Returns : 
+ Args    : One  dblink [scalar] or a list of
+            dblinks [array of [scalars]].
+
+=cut
+
+sub add_dblink {
+    return shift->term->add_dblink(@_);
+} # add_dblink
+
+
+=head2 remove_dblinks
+
+ Title   : remove_dblinks()
+ Usage   : $term->remove_dblinks();
+ Function: Deletes (and returns) the definition references of this GO term.
+ Returns : A list of definition references [array of [scalars]].
+ Args    :
+
+=cut
+
+sub remove_dblinks {
+    return shift->term->remove_dblinks(@_);
+} # remove_dblinks
+
+=head2 get_secondary_ids
+
+ Title   : get_secondary_ids
+ Usage   : @ids = $term->get_secondary_ids();
+ Function: Returns a list of secondary identifiers of this Term.
+
+           Secondary identifiers mostly originate from merging terms,
+           or possibly also from splitting terms.
+
+ Returns : A list of secondary identifiers [array of [scalar]]
+ Args    :
+
+=cut
+
+sub get_secondary_ids {
+    return shift->term->get_secondary_ids(@_);
+} # get_secondary_ids
+
+
+=head2 add_secondary_id
+
+ Title   : add_secondary_id
+ Usage   : $term->add_secondary_id( @ids );
+           or
+           $term->add_secondary_id( $id );                  
+ Function: Adds one or more secondary identifiers to this term.
+ Returns : 
+ Args    : One or more secondary identifiers [scalars]
+
+=cut
+
+sub add_secondary_id {
+    return shift->term->add_secondary_id(@_);
+} # add_secondary_id
+
+
+=head2 remove_secondary_ids
+
+ Title   : remove_secondary_ids
+ Usage   : $term->remove_secondary_ids();
+ Function: Deletes (and returns) the secondary identifiers of this Term.
+ Returns : The previous list of secondary identifiers [array of [scalars]]
+ Args    :
+
+=cut
+
+sub remove_secondary_ids {
+    return shift->term->remove_secondary_ids(@_);
+} # remove_secondary_ids
+
+
+1;