Raw content of Bio::Annotation::DBLink
# $Id: DBLink.pm,v 1.12 2002/10/23 18:07:49 lapp Exp $
#
# BioPerl module for Bio::Annotation::Link
#
# Cared for by Ewan Birney
#
# 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::DBLink - DESCRIPTION of Object
=head1 SYNOPSIS
$link1 = new Bio::Annotation::DBLink(-database => 'TSC',
-primary_id => 'TSC0000030'
);
#or
$link2 = new Bio::Annotation::DBLink();
$link2->database('dbSNP');
$link2->primary_id('2367');
# DBLink is-a Bio::AnnotationI object, can be added to annotation
# collections, e.g. the one on features or seqs
$feat->annotation->add_Annotation('dblink', $link2);
=head1 DESCRIPTION
Provides an object which represents a link from one object to something
in another database without prescribing what is in the other database
=head1 AUTHOR - Ewan Birney
Ewan Birney - birney@ebi.ac.uk
=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::DBLink;
use vars qw(@ISA);
use strict;
use Bio::Root::Root;
use Bio::AnnotationI;
use Bio::IdentifiableI;
@ISA = qw(Bio::Root::Root Bio::AnnotationI Bio::IdentifiableI);
sub new {
my($class,@args) = @_;
my $self = $class->SUPER::new(@args);
my ($database, $primary_id, $optional_id, $comment, $tag, $ns, $auth, $v) =
$self->_rearrange([qw(DATABASE
PRIMARY_ID
OPTIONAL_ID
COMMENT
TAGNAME
NAMESPACE
AUTHORITY
VERSION
)], @args);
$database && $self->database($database);
$primary_id && $self->primary_id($primary_id);
$optional_id && $self->optional_id($optional_id);
$comment && $self->comment($comment);
$tag && $self->tagname($tag);
# Bio::IdentifiableI parameters:
$ns && $self->namespace($ns); # this will override $database
$auth && $self->authority($auth);
defined($v) && $self->version($v);
return $self;
}
=head1 AnnotationI implementing functions
=cut
=head2 as_text
Title : as_text
Usage :
Function:
Example :
Returns :
Args :
=cut
sub as_text{
my ($self) = @_;
return "Direct database link to ".$self->primary_id." in database ".$self->database;
}
=head2 hash_tree
Title : hash_tree
Usage :
Function:
Example :
Returns :
Args :
=cut
sub hash_tree{
my ($self) = @_;
my $h = {};
$h->{'database'} = $self->database;
$h->{'primary_id'} = $self->primary_id;
if( defined $self->optional_id ) {
$h->{'optional_id'} = $self->optional_id;
}
if( defined $self->comment ) {
# we know that comments have hash_tree methods
$h->{'comment'} = $self->comment;
}
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 DBLinks
=cut
=head2 database
Title : database
Usage : $self->database($newval)
Function: set/get on the database string. Databases are just
a string here which can then be interpretted elsewhere
Example :
Returns : value of database
Args : newvalue (optional)
=cut
sub database{
my ($self,$value) = @_;
if( defined $value) {
$self->{'database'} = $value;
}
return $self->{'database'};
}
=head2 primary_id
Title : primary_id
Usage : $self->primary_id($newval)
Function: set/get on the primary id (a string)
The primary id is the main identifier used for this object in
the database. Good examples would be accession numbers. The id
is meant to be the main, stable identifier for this object
Example :
Returns : value of primary_id
Args : newvalue (optional)
=cut
sub primary_id{
my ($self,$value) = @_;
if( defined $value) {
$self->{'primary_id'} = $value;
}
return $self->{'primary_id'};
}
=head2 optional_id
Title : optional_id
Usage : $self->optional_id($newval)
Function: get/set for the optional_id (a string)
optional id is a slot for people to use as they wish. The
main issue is that some databases do not have a clean
single string identifier scheme. It is hoped that the
primary_id can behave like a reasonably sane "single string
identifier" of objects, and people can use/abuse optional
ids to their heart's content to provide precise mappings.
Example :
Returns : value of optional_id
Args : newvalue (optional)
=cut
#'
sub optional_id{
my ($self,$value) = @_;
if( defined $value) {
$self->{'optional_id'} = $value;
}
return $self->{'optional_id'};
}
=head2 comment
Title : comment
Usage : $self->comment($newval)
Function: get/set of comments (comment object)
Sets or gets comments of this dblink, which is sometimes relevant
Example :
Returns : value of comment (Bio::Annotation::Comment)
Args : newvalue (optional)
=cut
sub comment {
my ($self,$value) = @_;
if( defined $value) {
$self->{'comment'} = $value;
}
return $self->{'comment'};
}
=head1 Methods for Bio::IdentifiableI compliance
=head2 object_id
Title : object_id
Usage : $string = $obj->object_id()
Function: a string which represents the stable primary identifier
in this namespace of this object. For DNA sequences this
is its accession_number, similarly for protein sequences
This is aliased to primary_id().
Returns : A scalar
=cut
sub object_id {
return shift->primary_id(@_);
}
=head2 version
Title : version
Usage : $version = $obj->version()
Function: a number which differentiates between versions of
the same object. Higher numbers are considered to be
later and more relevant, but a single object described
the same identifier should represent the same concept
Returns : A number
=cut
sub version{
my ($self,$value) = @_;
if( defined $value) {
$self->{'_version'} = $value;
}
return $self->{'_version'};
}
=head2 authority
Title : authority
Usage : $authority = $obj->authority()
Function: a string which represents the organisation which
granted the namespace, written as the DNS name for
organisation (eg, wormbase.org)
Returns : A scalar
=cut
sub authority {
my ($obj,$value) = @_;
if( defined $value) {
$obj->{'authority'} = $value;
}
return $obj->{'authority'};
}
=head2 namespace
Title : namespace
Usage : $string = $obj->namespace()
Function: A string representing the name space this identifier
is valid in, often the database name or the name
describing the collection
For DBLink this is the same as database().
Returns : A scalar
=cut
sub namespace{
return shift->database(@_);
}
1;