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 |