comparison pfamScan/Bio/Pfam/HMM/HMM.pm @ 0:68a3648c7d91 draft default tip

Uploaded
author matteoc
date Thu, 22 Dec 2016 04:45:31 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:68a3648c7d91
1 # HMM.pm
2 #
3 # Author: finnr
4 # Maintainer: $Id: HMM.pm,v 1.1 2009-10-08 12:27:28 jt6 Exp $
5 # Version: $Revision: 1.1 $
6 # Created: Nov 24, 2008
7 # Last Modified: $Date: 2009-10-08 12:27:28 $
8 =head1 NAME
9
10 Template - a short description of the class
11
12 =cut
13
14 package Bio::Pfam::HMM::HMM;
15
16 =head1 DESCRIPTION
17
18 A more detailed description of what this class does and how it does it.
19
20 $Id: HMM.pm,v 1.1 2009-10-08 12:27:28 jt6 Exp $
21
22 =head1 COPYRIGHT
23
24 File: HMM.pm
25
26 Copyright (c) 2007: Genome Research Ltd.
27
28 Authors: Rob Finn (rdf@sanger.ac.uk), John Tate (jt6@sanger.ac.uk)
29
30 This is free software; you can redistribute it and/or
31 modify it under the terms of the GNU General Public License
32 as published by the Free Software Foundation; either version 2
33 of the License, or (at your option) any later version.
34
35 This program is distributed in the hope that it will be useful,
36 but WITHOUT ANY WARRANTY; without even the implied warranty of
37 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38 GNU General Public License for more details.
39
40 You should have received a copy of the GNU General Public License
41 along with this program; if not, write to the Free Software
42 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
43 or see the on-line version at http://www.gnu.org/copyleft/gpl.txt
44
45 =cut
46
47 use strict;
48 use warnings;
49
50 use Moose;
51 use Moose::Util::TypeConstraints;
52 use Carp;
53
54 #-------------------------------------------------------------------------------
55
56 =head1 METHODS
57
58 =cut
59
60
61 subtype 'hmmVersion'
62 => as Str
63 => where { $_ =~ m/^HMMER3\/f\s+\[3\.\d+[ab](\d+)?\s+|\s+\[.*\]/ }
64 => message { "|$_| does not look like as HMMER3 version" };
65
66 subtype 'hmmName'
67 => as Str
68 => where { $_ =~ m/\S{1,15}/ }
69 => message { "|$_| does not look like Pfam name or SEED" };
70
71 subtype 'hmmAcc'
72 => as Str
73 => where { $_ =~ m/PF\d{5}/ }
74 => message { "|$_| does not look like Pfam accession" };
75
76
77 subtype 'hmmAlpha'
78 => as Str
79 => where { $_ eq 'amino' or $_ eq 'nucleic' }
80 => message { "|$_| does not look like a HMMER3 alphabet" };
81
82
83 subtype 'hmmMsvStats'
84 => as HashRef
85 => where { defined ($_->{mu}) and defined ($_->{lambda}) and ($_->{lambda} <= 0.8) and ($_->{lambda} >= 0.5) }
86 => message { "Mu |$_->{mu}| and lambda |$_->{lambda}| must be defined and lambda must be between 0.5 and 0.8" };
87
88
89 subtype 'hmmViterbiStats'
90 => as HashRef
91 => where { defined ($_->{mu}) and defined ($_->{lambda}) and ($_->{lambda} <= 0.8) and ($_->{lambda} >= 0.5) }
92 => message { "Mu |$_->{mu}| and lambda |$_->{lambda}| must be defined and lambda must be between 0.5 and 0.8" };
93
94 subtype 'hmmForwardStats'
95 => as HashRef
96 => where { defined ($_->{tau}) and defined ($_->{lambda}) and ($_->{lambda} <= 0.8) and ($_->{lambda} >= 0.5) }
97 => message { "Tau |$_->{tau}| and lambda |$_->{lambda}| must be defined and lambda must be between 0.5 and 0.8" };
98
99 has 'version' => (
100 isa => 'hmmVersion',
101 is => 'rw',
102 required => 1
103 );
104
105 has 'name' => (
106 isa => 'hmmName',
107 is => 'rw',
108 required => 1
109 );
110
111 has 'accession' => (
112 isa => 'hmmAcc',
113 is => 'rw'
114 );
115
116 has 'description' => (
117 isa => 'Str',
118 is => 'rw'
119 );
120
121 has 'length' => (
122 isa => 'Int',
123 is => 'rw',
124 required => 1
125 );
126
127 has 'alpha' => (
128 isa => 'hmmAlpha',
129 is => 'rw',
130 required => 1,
131 );
132
133 has 'rf' => (
134 isa => 'Bool',
135 is => 'rw',
136 required => 1
137 );
138
139 has 'mm' => (
140 isa => 'Bool',
141 is => 'rw',
142 );
143
144 has 'cons' => (
145 isa => 'Bool',
146 is => 'rw',
147 );
148
149 has 'cs' => (
150 isa => 'Bool',
151 is => 'rw',
152 required => 1
153 );
154
155 has 'map' => (
156 isa => 'Bool',
157 is => 'rw',
158 required => 1
159 );
160
161 has 'date' => (
162 isa => 'Str',
163 is => 'rw',
164 required => 1
165 );
166
167 has 'buildLine' => (
168 isa => 'HashRef[Str]',
169 is => 'rw',
170 required => 1,
171 default => sub { {} },
172 );
173
174 has 'searchMethod' => (
175 isa => 'Str',
176 is => 'rw',
177 );
178
179 has 'nSeq' => (
180 isa => 'Int',
181 is => 'rw',
182 required => 1
183 );
184
185 has 'msvStats' => (
186 isa => 'hmmMsvStats',
187 is => 'rw',
188 required => 1
189 );
190
191 has 'viterbiStats' => (
192 isa => 'hmmViterbiStats',
193 is => 'rw',
194 required => 1
195 );
196
197 has 'forwardStats' => (
198 isa => 'hmmForwardStats',
199 is => 'rw',
200 required => 1
201 );
202
203
204 has 'effn' => (
205 isa => 'Num',
206 is => 'rw',
207 required => 1
208 );
209
210 has 'cksum' => (
211 isa => 'Int',
212 is => 'rw',
213 required => 1
214 );
215
216 has 'seqGA' => (
217 isa => 'Num',
218 is => 'rw',
219 );
220
221 has 'domGA' => (
222 isa => 'Num',
223 is => 'rw',
224 );
225
226 has 'seqTC' => (
227 isa => 'Num',
228 is => 'rw',
229 );
230
231 has 'domTC' => (
232 isa => 'Num',
233 is => 'rw',
234 );
235
236 has 'seqNC' => (
237 isa => 'Num',
238 is => 'rw',
239 );
240
241 has 'domNC' => (
242 isa => 'Num',
243 is => 'rw',
244 );
245
246 has 'emissionLines' => (
247 isa => 'ArrayRef[ArrayRef]',
248 is => 'rw',
249 default => sub { [] },
250 );
251
252 has 'mapPos'=> (
253 isa => 'ArrayRef[Int]',
254 is => 'rw',
255 default => sub{ [] }
256 );
257
258 has 'compLines' => (
259 isa => 'ArrayRef[Str]',
260 is => 'rw',
261 default => sub { [] },
262 );
263
264 __PACKAGE__->meta->make_immutable;
265 1;
266