Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/Tools/HMMER/Domain.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 # $Id: Domain.pm,v 1.11 2002/10/08 08:38:34 lapp Exp $ | |
2 # | |
3 # BioPerl module for Bio::Tools::HMMER::Domain | |
4 # | |
5 # Cared for by Ewan Birney <birney@sanger.ac.uk> | |
6 # | |
7 # Copyright Ewan Birney | |
8 # | |
9 # You may distribute this module under the same terms as perl itself | |
10 | |
11 # POD documentation - main docs before the code | |
12 | |
13 =head1 NAME | |
14 | |
15 Bio::Tools::HMMER::Domain - One particular domain hit from HMMER | |
16 | |
17 =head1 SYNOPSIS | |
18 | |
19 Read the Bio::Tools::HMMER::Results docs | |
20 | |
21 =head1 DESCRIPTION | |
22 | |
23 A particular domain score. We reuse the Homol SeqFeature system | |
24 here, so this inherits off Homol SeqFeature. As this code | |
25 originally came from a separate project, there are some backward | |
26 compatibility stuff provided to keep this working with old code. | |
27 | |
28 Don't forget this inherits off Bio::SeqFeature, so all your usual | |
29 nice start/end/score stuff is ready for use. | |
30 | |
31 =head1 CONTACT | |
32 | |
33 Ewan Birney, birney@ebi.ac.uk | |
34 | |
35 =head1 CONTRIBUTORS | |
36 | |
37 Jason Stajich, jason@bioperl.org | |
38 | |
39 =head1 APPENDIX | |
40 | |
41 The rest of the documentation details each of the object | |
42 methods. Internal methods are usually preceded with a _ | |
43 | |
44 =cut | |
45 | |
46 #' | |
47 package Bio::Tools::HMMER::Domain; | |
48 | |
49 use vars qw(@ISA); | |
50 use Bio::SeqFeature::FeaturePair; | |
51 use Bio::SeqFeature::Generic; | |
52 use strict; | |
53 | |
54 | |
55 @ISA = qw(Bio::SeqFeature::FeaturePair); | |
56 | |
57 sub new { | |
58 my($class,@args) = @_; | |
59 my $self = $class->SUPER::new(@args); | |
60 | |
61 $self->{'alignlines'} = []; | |
62 | |
63 my $hmmf1 = Bio::SeqFeature::Generic->new(@args); | |
64 my $hmmf2 = Bio::SeqFeature::Generic->new(@args); | |
65 | |
66 $self->feature1($hmmf1); | |
67 $self->feature2($hmmf2); | |
68 | |
69 return $self; | |
70 } | |
71 | |
72 =head2 add_alignment_line | |
73 | |
74 Title : add_alignment_line | |
75 Usage : $domain->add_alignment_line($line_from_hmmer_output); | |
76 Function: add an alignment line to this Domain object | |
77 Returns : Nothing | |
78 Args : scalar | |
79 | |
80 Adds an alignment line, mainly for storing the HMMER alignments | |
81 as flat text which can be reguritated. You're right. This is *not | |
82 nice* and not the right way to do it. C'est la vie. | |
83 | |
84 =cut | |
85 | |
86 sub add_alignment_line { | |
87 my $self = shift; | |
88 my $line = shift; | |
89 push(@{$self->{'alignlines'}},$line); | |
90 } | |
91 | |
92 =head2 each_alignment_line | |
93 | |
94 Title : each_alignment_line | |
95 Usage : foreach $line ( $domain->each_alignment_line ) | |
96 Function: reguritates the alignment lines as they were fed in. | |
97 only useful realistically for printing. | |
98 Example : | |
99 Returns : | |
100 Args : None | |
101 | |
102 | |
103 =cut | |
104 | |
105 sub each_alignment_line { | |
106 my $self = shift; | |
107 return @{$self->{'alignlines'}}; | |
108 } | |
109 | |
110 =head2 get_nse | |
111 | |
112 Title : get_nse | |
113 Usage : $domain->get_nse() | |
114 Function: Provides a seqname/start-end format, useful | |
115 for unique keys. nse stands for name-start-end | |
116 It is used alot in Pfam | |
117 Example : | |
118 Returns : A string | |
119 Args : Optional seperator 1 and seperator 2 (default / and -) | |
120 | |
121 | |
122 =cut | |
123 | |
124 | |
125 | |
126 sub get_nse { | |
127 my $self = shift; | |
128 my $sep1 = shift; | |
129 my $sep2 = shift; | |
130 | |
131 if( !defined $sep2 ) { | |
132 $sep2 = "-"; | |
133 } | |
134 if( !defined $sep1 ) { | |
135 $sep1 = "/"; | |
136 } | |
137 | |
138 return sprintf("%s%s%d%s%d",$self->seq_id,$sep1,$self->start,$sep2,$self->end); | |
139 } | |
140 | |
141 | |
142 # =head2 start_seq | |
143 | |
144 # Title : start_seq | |
145 # Usage : Backward compatibility with old HMMER modules. | |
146 # should use $domain->start | |
147 # Function: | |
148 # Example : | |
149 # Returns : | |
150 # Args : | |
151 | |
152 # =cut | |
153 | |
154 sub start_seq { | |
155 my $self = shift; | |
156 my $start = shift; | |
157 | |
158 $self->warn("Using old domain->start_seq. Should use domain->start"); | |
159 return $self->start($start); | |
160 } | |
161 | |
162 # =head2 end_seq | |
163 | |
164 # Title : end_seq | |
165 # Usage : Backward compatibility with old HMMER modules. | |
166 # should use $domain->end | |
167 # Function: | |
168 # Example : | |
169 # Returns : | |
170 # Args : | |
171 | |
172 # =cut | |
173 | |
174 sub end_seq { | |
175 my $self = shift; | |
176 my $end = shift; | |
177 | |
178 $self->warn("Using old domain->end_seq. Should use domain->end"); | |
179 return $self->end($end); | |
180 } | |
181 | |
182 # =head2 start_hmm | |
183 | |
184 # Title : start_hmm | |
185 # Usage : Backward compatibility with old HMMER modules, and | |
186 # for convience. Equivalent to $self->homol_SeqFeature->start | |
187 # Function: | |
188 # Example : | |
189 # Returns : | |
190 # Args : | |
191 | |
192 # =cut | |
193 | |
194 sub start_hmm { | |
195 my $self = shift; | |
196 my $start = shift; | |
197 $self->warn("Using old domain->start_hmm. Should use domain->hstart"); | |
198 return $self->hstart($start); | |
199 } | |
200 | |
201 # =head2 end_hmm | |
202 | |
203 # Title : end_hmm | |
204 # Usage : Backward compatibility with old HMMER modules, and | |
205 # for convience. Equivalent to $self->homol_SeqFeature->start | |
206 # Function: | |
207 # Example : | |
208 # Returns : | |
209 # Args : | |
210 | |
211 # =cut | |
212 | |
213 sub end_hmm { | |
214 my $self = shift; | |
215 my $end = shift; | |
216 | |
217 $self->warn("Using old domain->end_hmm. Should use domain->hend"); | |
218 return $self->hend($end); | |
219 } | |
220 | |
221 =head2 hmmacc | |
222 | |
223 Title : hmmacc | |
224 Usage : $domain->hmmacc($newacc) | |
225 Function: set get for HMM accession number. This is placed in the homol | |
226 feature of the HMM | |
227 Example : | |
228 Returns : | |
229 Args : | |
230 | |
231 | |
232 =cut | |
233 | |
234 sub hmmacc{ | |
235 my ($self,$acc) = @_; | |
236 if( defined $acc ) { | |
237 $self->feature2->add_tag_value('accession',$acc); | |
238 } | |
239 my @vals = $self->feature2->each_tag_value('accession'); | |
240 return shift @vals; | |
241 } | |
242 | |
243 =head2 hmmname | |
244 | |
245 Title : hmmname | |
246 Usage : $domain->hmmname($newname) | |
247 Function: set get for HMM accession number. This is placed in the homol | |
248 feature of the HMM | |
249 Example : | |
250 Returns : | |
251 Args : | |
252 | |
253 =cut | |
254 | |
255 sub hmmname { | |
256 my ($self,$hname) = @_; | |
257 | |
258 | |
259 if( defined $hname ) { | |
260 $self->hseqname($hname); | |
261 } | |
262 | |
263 return $self->hseqname(); | |
264 } | |
265 | |
266 =head2 bits | |
267 | |
268 Title : bits | |
269 Usage : | |
270 Function: backward compatibility. Same as score | |
271 Example : | |
272 Returns : | |
273 Args : | |
274 | |
275 =cut | |
276 | |
277 sub bits{ | |
278 my ($self,$sc) = @_; | |
279 | |
280 return $self->score($sc); | |
281 } | |
282 | |
283 =head2 evalue | |
284 | |
285 Title : evalue | |
286 Usage : | |
287 Function: $domain->evalue($value); | |
288 Example : | |
289 Returns : | |
290 Args : | |
291 | |
292 =cut | |
293 | |
294 sub evalue{ | |
295 my ($self,$value) = @_; | |
296 | |
297 if( defined $value ) { | |
298 $self->add_tag_value('evalue',$value); | |
299 } | |
300 my @vals = $self->each_tag_value('evalue'); | |
301 return shift @vals; | |
302 } | |
303 | |
304 =head2 seqbits | |
305 | |
306 Title : seqbits | |
307 Usage : | |
308 Function: $domain->seqbits($value); | |
309 Example : | |
310 Returns : | |
311 Args : | |
312 | |
313 =cut | |
314 | |
315 sub seqbits { | |
316 my ($self,$value) = @_; | |
317 if( defined $value ) { | |
318 $self->add_tag_value('seqbits',$value); | |
319 } | |
320 my @vals = $self->each_tag_value('seqbits'); | |
321 return shift @vals; | |
322 } | |
323 | |
324 =head2 seq_range | |
325 | |
326 Title : seq_range | |
327 Usage : | |
328 Function: Throws an exception to catch scripts which need to upgrade | |
329 Example : | |
330 Returns : | |
331 Args : | |
332 | |
333 =cut | |
334 | |
335 sub seq_range{ | |
336 my ($self,@args) = @_; | |
337 | |
338 $self->throw("You have accessed an old method. Please recode your script to the new bioperl HMMER module"); | |
339 } | |
340 | |
341 =head2 hmm_range | |
342 | |
343 Title : hmm_range | |
344 Usage : | |
345 Function: Throws an exception to catch scripts which need to upgrade | |
346 Example : | |
347 Returns : | |
348 Args : | |
349 | |
350 | |
351 =cut | |
352 | |
353 sub hmm_range{ | |
354 my ($self,@args) = @_; | |
355 | |
356 $self->throw("You have accessed an old method. Please recode your script to the new bioperl HMMER module"); | |
357 } | |
358 | |
359 1; # says use was ok | |
360 __END__ | |
361 | |
362 | |
363 |