Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/DB/Ace.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/DB/Ace.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,209 @@ + +# $Id: Ace.pm,v 1.10 2002/10/22 07:38:29 lapp Exp $ +# +# BioPerl module for Bio::DB::Ace +# +# Cared for by Ewan Birney <birney@sanger.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::DB::Ace - Database object interface to ACeDB servers + +=head1 SYNOPSIS + + $db = Bio::DB::Ace->new( -server => 'myace.server.com', port => '120000'); + + $seq = $db->get_Seq_by_id('MUSIGHBA1'); # Unique ID + + # or ... + + $seq = $db->get_Seq_by_acc('J00522'); # Accession Number + +=head1 DESCRIPTION + +This provides a standard BioPerl database access to Ace, using Lincoln Steins +excellent AcePerl module. You need to download and install the aceperl module from + + http://stein.cshl.org/AcePerl/ + +before this interface will work. + +This interface is designed at the moment to work through a aceclient/aceserver +type mechanism + +=head1 INSTALLING ACEPERL + +Download the latest aceperl tar file, gunzip/untar and cd into the directory. +This is a standard CPAN-style directory, so if you go + + Perl Makefile.PL + make + <become root> + make install + +Then you will have installed Aceperl. Use the PREFIX mechanism to install elsewhere. + +=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://bioperl.org/MailList.shtml - 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@bio.perl.org + http://bugzilla.bioperl.org/ + +=head1 AUTHOR - Ewan Birney + +Email birney@sanger.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::DB::Ace; +use vars qw(@ISA); +use strict; + +# Object preamble - inherits from Bio::DB::RandomAccessI + +use Bio::DB::RandomAccessI; +use Bio::Seq; + +BEGIN { + eval { + require Ace; + }; + if( $@) { + print STDERR "You have not installed Ace.pm.\n Read the docs in Bio::DB::Ace for more information about how to do this.\n It is very easy\n\nError message $@"; + } +} + + +@ISA = qw(Bio::DB::RandomAccessI); + +# new() is inherited from Bio::DB::Abstract + +# _initialize is where the heavy stuff will happen when new is called + +sub new { + my($class,@args) = @_; + my $self = $class->SUPER::new(@args); + my ($host,$port) = $self->_rearrange([qw( + HOST + PORT + )], + @args, + ); + + if( !$host || !$port ) { + $self->throw("Must have a host and port for an acedb server to work"); + } + + my $aceobj = Ace->connect(-host => $host, + -port => $port) || + $self->throw("Could not make acedb object to $host:$port"); + + $self->_aceobj($aceobj); + + + return $self; +} + +=head2 get_Seq_by_id + + Title : get_Seq_by_id + Usage : $seq = $db->get_Seq_by_id($uid); + Function: Gets a Bio::Seq object by its unique identifier/name + Returns : a Bio::Seq object + Args : $id : the id (as a string) of the desired sequence entry + +=cut + +sub get_Seq_by_id { + my $self = shift; + my $id = shift or $self->throw("Must supply an identifier!\n"); + my $ace = $self->_aceobj(); + my ($seq,$dna,$out); + + $seq = $ace->fetch( 'Sequence' , $id); + + # get out the sequence somehow! + + $dna = $seq->asDNA(); + + $dna =~ s/^>.*\n//; + $dna =~ s/\n//g; + + $out = Bio::Seq->new( -id => $id, -type => 'Dna', -seq => $dna, -name => "Sequence from Bio::DB::Ace $id"); + return $out; + +} + +=head2 get_Seq_by_acc + + Title : get_Seq_by_acc + Usage : $seq = $db->get_Seq_by_acc($acc); + Function: Gets a Bio::Seq object by its accession number + Returns : a Bio::Seq object + Args : $acc : the accession number of the desired sequence entry + + +=cut + +sub get_Seq_by_acc { + + my $self = shift; + my $acc = shift or $self->throw("Must supply an accesion number!\n"); + + return $self->get_Seq_by_id($acc); +} + +=head2 _aceobj + + Title : _aceobj + Usage : $ace = $db->_aceobj(); + Function: Get/Set on the acedb object + Returns : Ace object + Args : New value of the ace object + +=cut + +sub _aceobj { + my ($self,$arg) = @_; + + if( $arg ) { + $self->{'_aceobj'} = $arg; + } + + return $self->{'_aceobj'}; +} + +1; + + + + + +