Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/DB/Ace.pm @ 0:1f6dce3d34e0
Uploaded
| author | mahtabm |
|---|---|
| date | Thu, 11 Apr 2013 02:01:53 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1f6dce3d34e0 |
|---|---|
| 1 | |
| 2 # $Id: Ace.pm,v 1.10 2002/10/22 07:38:29 lapp Exp $ | |
| 3 # | |
| 4 # BioPerl module for Bio::DB::Ace | |
| 5 # | |
| 6 # Cared for by Ewan Birney <birney@sanger.ac.uk> | |
| 7 # | |
| 8 # Copyright Ewan Birney | |
| 9 # | |
| 10 # You may distribute this module under the same terms as perl itself | |
| 11 | |
| 12 # POD documentation - main docs before the code | |
| 13 | |
| 14 =head1 NAME | |
| 15 | |
| 16 Bio::DB::Ace - Database object interface to ACeDB servers | |
| 17 | |
| 18 =head1 SYNOPSIS | |
| 19 | |
| 20 $db = Bio::DB::Ace->new( -server => 'myace.server.com', port => '120000'); | |
| 21 | |
| 22 $seq = $db->get_Seq_by_id('MUSIGHBA1'); # Unique ID | |
| 23 | |
| 24 # or ... | |
| 25 | |
| 26 $seq = $db->get_Seq_by_acc('J00522'); # Accession Number | |
| 27 | |
| 28 =head1 DESCRIPTION | |
| 29 | |
| 30 This provides a standard BioPerl database access to Ace, using Lincoln Steins | |
| 31 excellent AcePerl module. You need to download and install the aceperl module from | |
| 32 | |
| 33 http://stein.cshl.org/AcePerl/ | |
| 34 | |
| 35 before this interface will work. | |
| 36 | |
| 37 This interface is designed at the moment to work through a aceclient/aceserver | |
| 38 type mechanism | |
| 39 | |
| 40 =head1 INSTALLING ACEPERL | |
| 41 | |
| 42 Download the latest aceperl tar file, gunzip/untar and cd into the directory. | |
| 43 This is a standard CPAN-style directory, so if you go | |
| 44 | |
| 45 Perl Makefile.PL | |
| 46 make | |
| 47 <become root> | |
| 48 make install | |
| 49 | |
| 50 Then you will have installed Aceperl. Use the PREFIX mechanism to install elsewhere. | |
| 51 | |
| 52 =head1 FEEDBACK | |
| 53 | |
| 54 =head2 Mailing Lists | |
| 55 | |
| 56 User feedback is an integral part of the evolution of this | |
| 57 and other Bioperl modules. Send your comments and suggestions preferably | |
| 58 to one of the Bioperl mailing lists. | |
| 59 Your participation is much appreciated. | |
| 60 | |
| 61 bioperl-l@bioperl.org - General discussion | |
| 62 http://bioperl.org/MailList.shtml - About the mailing lists | |
| 63 | |
| 64 =head2 Reporting Bugs | |
| 65 | |
| 66 Report bugs to the Bioperl bug tracking system to help us keep track | |
| 67 the bugs and their resolution. | |
| 68 Bug reports can be submitted via email or the web: | |
| 69 | |
| 70 bioperl-bugs@bio.perl.org | |
| 71 http://bugzilla.bioperl.org/ | |
| 72 | |
| 73 =head1 AUTHOR - Ewan Birney | |
| 74 | |
| 75 Email birney@sanger.ac.uk | |
| 76 | |
| 77 =head1 APPENDIX | |
| 78 | |
| 79 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ | |
| 80 | |
| 81 =cut | |
| 82 | |
| 83 # Let the code begin... | |
| 84 | |
| 85 package Bio::DB::Ace; | |
| 86 use vars qw(@ISA); | |
| 87 use strict; | |
| 88 | |
| 89 # Object preamble - inherits from Bio::DB::RandomAccessI | |
| 90 | |
| 91 use Bio::DB::RandomAccessI; | |
| 92 use Bio::Seq; | |
| 93 | |
| 94 BEGIN { | |
| 95 eval { | |
| 96 require Ace; | |
| 97 }; | |
| 98 if( $@) { | |
| 99 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 $@"; | |
| 100 } | |
| 101 } | |
| 102 | |
| 103 | |
| 104 @ISA = qw(Bio::DB::RandomAccessI); | |
| 105 | |
| 106 # new() is inherited from Bio::DB::Abstract | |
| 107 | |
| 108 # _initialize is where the heavy stuff will happen when new is called | |
| 109 | |
| 110 sub new { | |
| 111 my($class,@args) = @_; | |
| 112 my $self = $class->SUPER::new(@args); | |
| 113 my ($host,$port) = $self->_rearrange([qw( | |
| 114 HOST | |
| 115 PORT | |
| 116 )], | |
| 117 @args, | |
| 118 ); | |
| 119 | |
| 120 if( !$host || !$port ) { | |
| 121 $self->throw("Must have a host and port for an acedb server to work"); | |
| 122 } | |
| 123 | |
| 124 my $aceobj = Ace->connect(-host => $host, | |
| 125 -port => $port) || | |
| 126 $self->throw("Could not make acedb object to $host:$port"); | |
| 127 | |
| 128 $self->_aceobj($aceobj); | |
| 129 | |
| 130 | |
| 131 return $self; | |
| 132 } | |
| 133 | |
| 134 =head2 get_Seq_by_id | |
| 135 | |
| 136 Title : get_Seq_by_id | |
| 137 Usage : $seq = $db->get_Seq_by_id($uid); | |
| 138 Function: Gets a Bio::Seq object by its unique identifier/name | |
| 139 Returns : a Bio::Seq object | |
| 140 Args : $id : the id (as a string) of the desired sequence entry | |
| 141 | |
| 142 =cut | |
| 143 | |
| 144 sub get_Seq_by_id { | |
| 145 my $self = shift; | |
| 146 my $id = shift or $self->throw("Must supply an identifier!\n"); | |
| 147 my $ace = $self->_aceobj(); | |
| 148 my ($seq,$dna,$out); | |
| 149 | |
| 150 $seq = $ace->fetch( 'Sequence' , $id); | |
| 151 | |
| 152 # get out the sequence somehow! | |
| 153 | |
| 154 $dna = $seq->asDNA(); | |
| 155 | |
| 156 $dna =~ s/^>.*\n//; | |
| 157 $dna =~ s/\n//g; | |
| 158 | |
| 159 $out = Bio::Seq->new( -id => $id, -type => 'Dna', -seq => $dna, -name => "Sequence from Bio::DB::Ace $id"); | |
| 160 return $out; | |
| 161 | |
| 162 } | |
| 163 | |
| 164 =head2 get_Seq_by_acc | |
| 165 | |
| 166 Title : get_Seq_by_acc | |
| 167 Usage : $seq = $db->get_Seq_by_acc($acc); | |
| 168 Function: Gets a Bio::Seq object by its accession number | |
| 169 Returns : a Bio::Seq object | |
| 170 Args : $acc : the accession number of the desired sequence entry | |
| 171 | |
| 172 | |
| 173 =cut | |
| 174 | |
| 175 sub get_Seq_by_acc { | |
| 176 | |
| 177 my $self = shift; | |
| 178 my $acc = shift or $self->throw("Must supply an accesion number!\n"); | |
| 179 | |
| 180 return $self->get_Seq_by_id($acc); | |
| 181 } | |
| 182 | |
| 183 =head2 _aceobj | |
| 184 | |
| 185 Title : _aceobj | |
| 186 Usage : $ace = $db->_aceobj(); | |
| 187 Function: Get/Set on the acedb object | |
| 188 Returns : Ace object | |
| 189 Args : New value of the ace object | |
| 190 | |
| 191 =cut | |
| 192 | |
| 193 sub _aceobj { | |
| 194 my ($self,$arg) = @_; | |
| 195 | |
| 196 if( $arg ) { | |
| 197 $self->{'_aceobj'} = $arg; | |
| 198 } | |
| 199 | |
| 200 return $self->{'_aceobj'}; | |
| 201 } | |
| 202 | |
| 203 1; | |
| 204 | |
| 205 | |
| 206 | |
| 207 | |
| 208 | |
| 209 |
