diff variant_effect_predictor/Bio/Annotation/Reference.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/Reference.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,477 @@
+# $Id: Reference.pm,v 1.18 2002/09/25 18:11:33 lapp Exp $
+#
+# BioPerl module for Bio::Annotation::Reference
+#
+# Cared for by Ewan Birney <birney@ebi.ac.uk>
+#
+# Copyright Ewan Birney
+#
+# You may distribute this module under the same terms as perl itself
+
+# POD documentation - main docs before the code
+
+=head1 NAME
+
+Bio::Annotation::Reference - Specialised DBLink object for Literature References
+
+=head1 SYNOPSIS
+
+    $reg = Bio::Annotation::Reference->new( -title => 'title line',
+					    -location => 'location line',
+					    -authors => 'author line',
+					    -medline => 998122 );
+
+=head1 DESCRIPTION
+
+Object which presents a literature reference. This is considered to be
+a specialised form of database link. The additional methods provided
+are all set/get methods to store strings commonly associated with
+references, in particular title, location (ie, journal page) and
+authors line.
+
+There is no attempt to do anything more than store these things as
+strings for processing elsewhere. This is mainly because parsing these
+things suck and generally are specific to the specific format one is
+using. To provide an easy route to go format --E<gt> object --E<gt> format
+without losing data, we keep them as strings. Feel free to post the
+list for a better solution, but in general this gets very messy very
+fast...
+
+=head1 CONTACT
+
+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::Reference;
+use vars qw(@ISA);
+use strict;
+
+use Bio::Annotation::DBLink;
+use Bio::AnnotationI;
+
+@ISA = qw(Bio::Annotation::DBLink);
+
+=head2 new
+
+ Title   : new
+ Usage   : $ref = Bio::Annotation::Reference->new( -title => 'title line',
+						   -authors => 'author line',
+						   -location => 'location line',
+						   -medline => 9988812);
+ Function:
+ Example :
+ Returns : a new Bio::Annotation::Reference object
+ Args    : a hash with optional title, authors, location, medline, start and end
+           attributes
+
+
+=cut
+
+sub new{
+    my ($class,@args) = @_;
+
+    my $self = $class->SUPER::new(@args);
+
+    my ($start,$end,$authors,$location,$title,$medline,$tag) =
+	$self->_rearrange([qw(START
+			      END
+			      AUTHORS
+			      LOCATION
+			      TITLE
+			      MEDLINE
+			      TAGNAME
+			      )],@args);
+
+    defined $start    && $self->start($start);
+    defined $end      && $self->end($end);
+    defined $authors  && $self->authors($authors);
+    defined $location && $self->location($location);
+    defined $title    && $self->title($title);
+    defined $medline  && $self->medline($medline);
+    defined $tag      && $self->tagname($tag);
+
+    return $self;
+}
+
+
+=head1 AnnotationI implementing functions
+
+=cut
+
+=head2 as_text
+
+ Title   : as_text
+ Usage   :
+ Function:
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub as_text{
+   my ($self) = @_;
+
+   # this could get out of hand!
+   return "Reference: ".$self->title;
+}
+
+
+=head2 hash_tree
+
+ Title   : hash_tree
+ Usage   :
+ Function:
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub hash_tree{
+   my ($self) = @_;
+   
+   my $h = {};
+   $h->{'title'}   = $self->title;
+   $h->{'authors'} = $self->authors;
+   $h->{'location'} = $self->location;
+   if( defined $self->start ) {
+       $h->{'start'}   = $self->start;
+   }
+   if( defined $self->end ) {
+       $h->{'end'} = $self->end;
+   }
+   $h->{'medline'} = $self->medline;
+
+   return $h;
+}
+
+=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 Bio::AnnotationCollectionI when adding this object. When
+           obtaining an AnnotationI object from the collection, the collection
+           will set the value to the tag under which it was stored unless the
+           object has a tag stored already.
+ Example : 
+ Returns : value of tagname (a scalar)
+ Args    : new value (a scalar, optional)
+
+
+=cut
+
+sub tagname{
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'tagname'} = $value;
+    }
+    return $self->{'tagname'};
+}
+
+
+=head1 Specific accessors for References
+
+=cut
+
+
+=head2 start
+
+ Title   : start
+ Usage   : $self->start($newval)
+ Function: Gives the reference start base
+ Example : 
+ Returns : value of start
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub start {
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'start'} = $value;
+    }
+    return $self->{'start'};
+
+}
+
+=head2 end
+
+ Title   : end
+ Usage   : $self->end($newval)
+ Function: Gives the reference end base
+ Example : 
+ Returns : value of end
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub end {
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'end'} = $value;
+    }
+    return $self->{'end'};
+}
+
+=head2 rp
+
+ Title   : rp
+ Usage   : $self->rp($newval)
+ Function: Gives the RP line. No attempt is made to parse this line.
+ Example : 
+ Returns : value of rp
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub rp{
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'rp'} = $value;
+    }
+    return $self->{'rp'};
+
+}
+
+=head2 authors
+
+ Title   : authors
+ Usage   : $self->authors($newval)
+ Function: Gives the author line. No attempt is made to parse the author line
+ Example : 
+ Returns : value of authors
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub authors{
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'authors'} = $value;
+    }
+    return $self->{'authors'};
+
+}
+
+=head2 location
+
+ Title   : location
+ Usage   : $self->location($newval)
+ Function: Gives the location line. No attempt is made to parse the location line
+ Example : 
+ Returns : value of location
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub location{
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'location'} = $value;
+    }
+    return $self->{'location'};
+
+}
+
+=head2 title
+
+ Title   : title
+ Usage   : $self->title($newval)
+ Function: Gives the title line (if exists)
+ Example : 
+ Returns : value of title
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub title{
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'title'} = $value;
+    }
+    return $self->{'title'};
+
+}
+
+=head2 medline
+
+ Title   : medline
+ Usage   : $self->medline($newval)
+ Function: Gives the medline number
+ Example : 
+ Returns : value of medline
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub medline{
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'medline'} = $value;
+    }
+    return $self->{'medline'};
+}
+
+=head2 pubmed
+
+ Title   : pubmed
+ Usage   : $refobj->pubmed($newval)
+ Function: Get/Set the PubMed number, if it is different from the MedLine
+           number.
+ Example : 
+ Returns : value of medline
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub pubmed {
+    my ($self,$value) = @_;
+    if( defined $value) {
+	$self->{'pubmed'} = $value;
+    }
+    return $self->{'pubmed'};
+}
+
+=head2 database
+
+ Title   : database
+ Usage   :
+ Function: Overrides DBLink database to be hard coded to 'MEDLINE', unless
+           the database has been set explicitely before.
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub database{
+   my ($self, @args) = @_;
+
+   return $self->SUPER::database(@args) || 'MEDLINE';
+}
+
+=head2 primary_id
+
+ Title   : primary_id
+ Usage   :
+ Function: Overrides DBLink primary_id to provide medline number
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub primary_id{
+   my ($self, @args) = @_;
+
+   return $self->medline(@args);
+}
+
+=head2 optional_id
+
+ Title   : optional_id
+ Usage   :
+ Function: Overrides DBLink optional_id to provide the PubMed number.
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub optional_id{
+   my ($self, @args) = @_;
+
+   return $self->pubmed(@args);
+}
+
+=head2 publisher
+
+ Title   : publisher
+ Usage   : $self->publisher($newval)
+ Function: Gives the publisher line. No attempt is made to parse the publisher line
+ Example : 
+ Returns : value of publisher
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub publisher {
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'publisher'} = $value;
+   }
+   return $self->{'publisher'};
+}
+
+
+=head2 editors
+
+ Title   : editors
+ Usage   : $self->editors($newval)
+ Function: Gives the editors line. No attempt is made to parse the editors line
+ Example : 
+ Returns : value of editors
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub editors {
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'editors'} = $value;
+   }
+   return $self->{'editors'};
+}
+
+
+=head2 encoded_ref
+
+ Title   : encoded_ref
+ Usage   : $self->encoded_ref($newval)
+ Function: Gives the encoded_ref line. No attempt is made to parse the encoded_ref line
+ 	(this is added for reading PDB records (REFN record), where this contains
+	 ISBN/ISSN/ASTM code)
+ Example : 
+ Returns : value of encoded_ref
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub encoded_ref {
+   my ($self,$value) = @_;
+   if( defined $value) {
+      $self->{'encoded_ref'} = $value;
+   }
+   return $self->{'encoded_ref'};
+}
+
+
+1;