annotate variant_effect_predictor/Bio/Tools/HMMER/Results.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Results.pm,v 1.22.2.1 2003/01/07 13:58:01 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # Perl Module for HMMResults
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ewan Birney <birney@sanger.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #Copyright Genome Research Limited (1997).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 Bio::Tools::HMMER::Results - Object representing HMMER output results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # parse a hmmsearch file (can also parse a hmmpfam file)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 $res = new Bio::Tools::HMMER::Results( -file => 'output.hmm' , -type => 'hmmsearch');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # print out the results for each sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 foreach $seq ( $res->each_Set ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 print "Sequence bit score is",$seq->bits,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 foreach $domain ( $seq->each_Domain ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 print " Domain start ",$domain->start," end ",$domain->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 " score ",$domain->bits,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # new result object on a sequence/domain cutoff of 25 bits sequence, 15 bits domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 $newresult = $res->filter_on_cutoff(25,15);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 # alternative way of getting out all domains directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 foreach $domain ( $res->each_Domain ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 print "Domain on ",$domain->seq_id," with score ",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 $domain->bits," evalue ",$domain->evalue,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 This object represents HMMER output, either from hmmsearch or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 hmmpfam. For hmmsearch, a series of HMMER::Set objects are made, one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 for each sequence, which have the the bits score for the object. For
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 hmmpfam searches, only one Set object is made.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 These objects come from the original HMMResults modules used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 internally in Pfam, written by Ewan. Ewan then converted them to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 bioperl objects in 1999. That conversion is meant to be backwardly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 compatible, but may not be (caveat emptor).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 http://www.bioperl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 http://www.bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =head1 AUTHOR - Ewan Birney
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Email birney@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Jason Stajich, jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 package Bio::Tools::HMMER::Results;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use Bio::Tools::HMMER::Domain;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use Bio::Tools::HMMER::Set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 use Bio::SeqAnalysisParserI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Symbol;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @ISA = qw(Bio::Root::Root Bio::Root::IO Bio::SeqAnalysisParserI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 $self->{'domain'} = []; # array of HMMUnits
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 $self->{'seq'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my ($parsetype) = $self->_rearrange([qw(TYPE)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 $self->_initialize_io(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 if( !defined $parsetype ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $self->throw("No parse type provided. should be hmmsearch or hmmpfam");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 $self->parsetype($parsetype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 if( defined $self->_fh() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 if( $parsetype eq 'hmmsearch' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $self->_parse_hmmsearch($self->_fh());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 } elsif ( $parsetype eq 'hmmpfam' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 $self->_parse_hmmpfam($self->_fh());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $self->throw("Did not recoginise type $parsetype");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 return $self; # success - we hope!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 =head2 next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Title : next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Usage : while( my $feat = $res->next_feature ) { # do something }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Function: SeqAnalysisParserI implementing function
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Returns : A Bio::SeqFeatureI compliant object, in this case,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 each DomainUnit object, ie, flattening the Sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 aspect of this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 sub next_feature{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 if( $self->{'_started_next_feature'} == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 return shift @{$self->{'_next_feature_array'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $self->{'_started_next_feature'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 foreach my $seq ( $self->each_Set() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 foreach my $unit ( $seq->each_Domain() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 push(@array,$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $res = shift @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->{'_next_feature_array'} = \@array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 return $res;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $self->throw("Should not reach here! Error!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 =head2 number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Title : number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Usage : print "There are ",$res->number," domains hit\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Function: provides the number of domains in the HMMER report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 sub number {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 my @val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $ref = $self->{'domain'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 @val = @{$self->{'domain'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 return scalar @val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 =head2 seqfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Title : seqfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Usage : $obj->seqfile($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Returns : value of seqfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 sub seqfile{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $self->{'seqfile'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 return $self->{'seqfile'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 =head2 hmmfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Title : hmmfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Usage : $obj->hmmfile($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Returns : value of hmmfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 sub hmmfile{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 $self->{'hmmfile'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 return $self->{'hmmfile'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =head2 add_Domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Title : add_Domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Usage : $res->add_Domain($unit)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Function: adds a domain to the results array. Mainly used internally.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Args : A Bio::Tools::HMMER::Domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 sub add_Domain {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $unit = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 my $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $name = $unit->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 if( ! exists $self->{'seq'}->{$name} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $self->warn("Adding a domain of $name but with no HMMSequence. Will be kept in domain array but not added to a HMMSequence");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 $self->{'seq'}->{$name}->add_Domain($unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 push(@{$self->{'domain'}},$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 =head2 each_Domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Title : each_Domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Usage : foreach $domain ( $res->each_Domain() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Function: array of Domain units which are held in this report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Returns : array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 sub each_Domain {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 my (@arr,$u);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 foreach $u ( @{$self->{'domain'}} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 push(@arr,$u);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 return @arr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =head2 domain_bits_cutoff_from_evalue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Title : domain_bits_cutoff_from_evalue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Usage : $cutoff = domain_bits_cutoff_from_evalue(0.01);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Function: return a bits cutoff from an evalue using the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 scores here. Somewhat interesting logic:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Find the two bit score which straddle the evalue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 if( 25 is between these two points) return 25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 else return the midpoint.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 This logic tries to ensure that with large signal to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 noise separation one still has sensible 25 bit cutoff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 sub domain_bits_cutoff_from_evalue {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 my $eval = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my ($dom,$prev,@doms,$cutoff,$sep,$seen);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 @doms = $self->each_Domain;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 @doms = map { $_->[0] }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 sort { $b->[1] <=> $a->[1] }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 map { [ $_, $_->bits] } @doms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $seen = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 foreach $_ ( @doms ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if( $_->evalue > $eval ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $seen = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $dom = $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $prev = $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 if( ! defined $prev || $seen == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $self->throw("Evalue is either above or below the list...");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $sep = $prev->bits - $dom->bits ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 if( $sep < 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 return $prev->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 if( $dom->bits < 25 && $prev->bits > 25 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 return 25;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 return int( $dom->bits + $sep/2 ) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 sub dictate_hmm_acc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $acc = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 my ($unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 foreach $unit ( $self->eachHMMUnit() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 $unit->hmmacc($acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 =head2 write_FT_output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Title : write_FT_output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Usage : $res->write_FT_output(\*STDOUT,'DOMAIN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Function: writes feature table output ala swissprot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 sub write_FT_output {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 my $idt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my ($seq,$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 if( !defined $idt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $idt = "DOMAIN";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 foreach $seq ( $self->each_Set() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 print $file sprintf("ID %s\n",$seq->name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 foreach $unit ( $seq->each_Domain() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 print $file sprintf("FT %s %d %d %s\n",$idt,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $unit->start,$unit->end,$unit->hmmname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 print $file "//\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 =head2 filter_on_cutoff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 Title : filter_on_cutoff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Usage : $newresults = $results->filter_on_cutoff(25,15);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Function: Produces a new HMMER::Results module which has
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 been trimmed at the cutoff.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 Returns : a Bio::Tools::HMMER::Results module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Args : sequence cutoff and domain cutoff. in bits score
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 if you want one cutoff, simply use same number both places
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 sub filter_on_cutoff {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 my $seqthr = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my $domthr = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my ($new,$seq,$unit,@array,@narray);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 if( !defined $domthr ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 $self->throw("hmmresults filter on cutoff needs two arguments");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 $new = Bio::Tools::HMMER::Results->new(-type => $self->parsetype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 foreach $seq ( $self->each_Set()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 next if( $seq->bits() < $seqthr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $new->add_Set($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 foreach $unit ( $seq->each_Domain() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 next if( $unit->bits() < $domthr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $new->add_Domain($unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 =head2 write_ascii_out
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Title : write_ascii_out
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Usage : $res->write_ascii_out(\*STDOUT)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Function: writes as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 seq seq_start seq_end model-acc model_start model_end model_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 FIXME: Now that we have no modelacc, this is probably a bad thing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 # writes as seq sstart send modelacc hstart hend modelname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 sub write_ascii_out {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my $fh = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 my ($unit,$seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 if( !defined $fh) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $fh = \*STDOUT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 foreach $seq ( $self->each_Set()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 foreach $unit ( $seq->each_Domain()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 print $fh sprintf("%s %4d %4d %s %4d %4d %4.2f %4.2g %s\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $unit->seq_id(),$unit->start(),$unit->end(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 $unit->hmmacc,$unit->hstart,$unit->hend,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $unit->bits,$unit->evalue,$unit->hmmname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 =head2 write_GDF_bits
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 Title : write_GDF_bits
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 Usage : $res->write_GDF_bits(25,15,\*STDOUT)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 Function: writes GDF format with a sequence,domain threshold
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 sub write_GDF_bits {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 my $seqt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 my $domt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 my $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 my $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 my (@array,@narray);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 if( !defined $file ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $self->throw("Attempting to use write_GDF_bits without passing in correct arguments!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 foreach $seq ( $self->each_Set()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 if( $seq->bits() < $seqt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 foreach $unit ( $seq->each_Domain() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 if( $unit->bits() < $domt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 push(@array,$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 @narray = sort { my ($aa,$bb,$st_a,$st_b);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $aa = $a->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $bb = $b->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 if ( $aa eq $bb) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 $st_a = $a->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $st_b = $b->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 return $st_a <=> $st_b;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 return $aa cmp $bb;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 } } @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 foreach $unit ( @narray ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 print $file sprintf("%-24s\t%6d\t%6d\t%15s\t%.1f\t%g\n",$unit->get_nse(),$unit->start(),$unit->end(),$unit->seq_id(),$unit->bits(),$unit->evalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 sub write_scores_bits {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 my $seqt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 my $domt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 my $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 my $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 my (@array,@narray);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 if( !defined $file ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 carp("Attempting to use write_scores_bits without passing in correct arguments!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 foreach $seq ( $self->eachHMMSequence()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 if( $seq->bits() < $seqt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 foreach $unit ( $seq->eachHMMUnit() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 if( $unit->bits() < $domt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 push(@array,$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 @narray = sort { my ($aa,$bb,$st_a,$st_b);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $aa = $a->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $bb = $b->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 return $aa <=> $bb;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 } @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 foreach $unit ( @narray ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 print $file sprintf("%4.2f %s\n",$unit->bits(),$unit->get_nse());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 sub write_GDF {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 if( !defined $file ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $file = \*STDOUT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 foreach $unit ( $self->eachHMMUnit() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 print $file sprintf("%-24s\t%6d\t%6d\t%15s\t%.1f\t%g\n",$unit->get_nse(),$unit->start(),$unit->end(),$unit->seq_id(),$unit->bits(),$unit->evalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 sub highest_noise {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 my $seqt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 my $domt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 my ($seq,$unit,$hseq,$hdom,$noiseseq,$noisedom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 $hseq = $hdom = -100000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 foreach $seq ( $self->eachHMMSequence()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 if( $seq->bits() < $seqt && $seq->bits() > $hseq ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $hseq = $seq->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 $noiseseq = $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 foreach $unit ( $seq->eachHMMUnit() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 if( (($seq->bits() < $seqt) || ($seq->bits() > $seqt && $unit->bits < $domt)) && $unit->bits() > $hdom ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 $hdom = $unit->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $noisedom = $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 return ($noiseseq,$noisedom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 sub lowest_true {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 my $seqt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 my $domt = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 my ($seq,$unit,$lowseq,$lowdom,$trueseq,$truedom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 if( ! defined $domt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 carp "lowest true needs at least a domain threshold cut-off";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 return (0,0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $lowseq = $lowdom = 100000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 foreach $seq ( $self->eachHMMSequence()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 if( $seq->bits() >= $seqt && $seq->bits() < $lowseq ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 $lowseq = $seq->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 $trueseq = $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 if( $seq->bits() < $seqt ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 foreach $unit ( $seq->eachHMMUnit() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 if( $unit->bits() >= $domt && $unit->bits() < $lowdom ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 $lowdom = $unit->bits();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 $truedom = $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 return ($trueseq,$truedom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 =head2 add_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Title : add_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 Usage : Mainly internal function
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 sub add_Set {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 my $seq = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 my $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 $name = $seq->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 if( exists $self->{'seq'}->{$name} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 $self->throw("You alredy have $name in HMMResults!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 $self->{'seq'}->{$name} = $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 =head2 each_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 Title : each_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 sub each_Set {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 my (@array,$name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 foreach $name ( keys %{$self->{'seq'}} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 push(@array,$self->{'seq'}->{$name});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 return @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 =head2 get_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 Title : get_Set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Usage : $set = $res->get_Set('sequence-name');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 Function: returns the Set for a particular sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 Returns : a HMMER::Set object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 Args : name of the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 sub get_Set {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 my $name = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 return $self->{'seq'}->{$name};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 =head2 _parse_hmmpfam
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 Title : _parse_hmmpfam
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Usage : $res->_parse_hmmpfam($filehandle)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 sub _parse_hmmpfam {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 my ($id,$sqfrom,$sqto,$hmmf,$hmmt,$sc,$ev,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $unit,$nd,$seq,$name,$seqname,$from,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 $to,%hash,%acc,$acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 if( /^HMM file:\s+(\S+)/ ) { $self->hmmfile($1); next; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 elsif( /^Sequence file:\s+(\S+)/ ) { $self->seqfile($1); next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 elsif( /^Query(\s+sequence)?:\s+(\S+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 $seqname = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 $seq = Bio::Tools::HMMER::Set->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 $seq ->name($seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 $self->add_Set($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 %hash = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 while(<$file>){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 if( /Accession:\s+(\S+)/ ) { $seq->accession($1); next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 elsif( s/^Description:\s+// ) { chomp; $seq->desc($_); next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 /^Parsed for domains/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 # This is to parse out the accession numbers in old Pfam format.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 # now not support due to changes in HMMER.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 if( (($id,$acc, $sc, $ev, $nd) = /^\s*(\S+)\s+(\S+).+?\s(\S+)\s+(\S+)\s+(\d+)\s*$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 $hash{$id} = $sc; # we need this for the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 # core of the domains below!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 $acc {$id} = $acc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 # this is the more common parsing routine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 } elsif ( (($id,$sc, $ev, $nd) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 /^\s*(\S+).+?\s(\S+)\s+(\S+)\s+(\d+)\s*$/) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 $hash{$id} = $sc; # we need this for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 # sequence score of hte domains below!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 /^Align/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 /^\/\// && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 # this is meant to match
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 #Sequence Domain seq-f seq-t hmm-f hmm-t score E-value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 #-------- ------- ----- ----- ----- ----- ----- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 #PF00621 1/1 198 372 .. 1 207 [] 281.6 1e-80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 if( (($id, $sqfrom, $sqto, $hmmf,$hmmt,$sc, $ev) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 /(\S+)\s+\S+\s+(\d+)\s+(\d+).+?(\d+)\s+(\d+)\s+\S+\s+(\S+)\s+(\S+)\s*$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 $unit = Bio::Tools::HMMER::Domain->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 $unit->seq_id ($seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 $unit->hmmname ($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 $unit->start ($sqfrom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 $unit->end ($sqto);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 $unit->hstart($hmmf);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 $unit->hend ($hmmt);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 $unit->bits ($sc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 $unit->evalue ($ev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 if( !exists($hash{$id}) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 $self->throw("HMMResults parsing error in hmmpfam for $id - can't find sequecne score");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 $unit->seqbits($hash{$id});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 if( defined $acc{$id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 $unit->hmmacc($acc{$id});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 # this should find it's own sequence!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 $self->add_Domain($unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 if( /^\/\// ) { next; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 $_ = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 # parses alignment lines. Icky as we have to break on the same line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 # that we need to read to place the alignment lines with the unit.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 (!defined $_ || /^\/\//) && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 # matches:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 # PF00621: domain 1 of 1, from 198 to 372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 if( /^\s*(\S+):.*from\s+(\d+)\s+to\s+(\d+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 $name = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 $from = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 $to = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 # find the HMMUnit which this alignment is from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 $unit = $self->get_unit_nse($seqname,$name,$from,$to);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 if( !defined $unit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $self->warn("Could not find $name $from $to unit even though I am reading it in. ugh!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 $_ = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 /^\/\// && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 /^\s*\S+:.*from\s+\d+\s+to\s+\d+/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $unit->add_alignment_line($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 $_ = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 # back to main 'Query:' loop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 # mainly internal function
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 sub get_unit_nse {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 my $seqname = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 my $domname = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 my $start = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 my $end = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 my($seq,$unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 $seq = $self->get_Set($seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 if( !defined $seq ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 $self->throw("Could not get sequence name $seqname - so can't get its unit");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 foreach $unit ( $seq->each_Domain() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 if( $unit->hmmname() eq $domname && $unit->start() == $start && $unit->end() == $end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 return $unit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 =head2 _parse_hmmsearch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 Title : _parse_hmmsearch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 Usage : $res->_parse_hmmsearch($filehandle)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 sub _parse_hmmsearch {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 my $file = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 my ($id,$sqfrom,$sqto,$sc,$ev,$unit,$nd,$seq,$hmmf,$hmmt,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 $hmmfname,$hmmacc, $hmmid, %seqh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 /^HMM file:\s+(\S+)/ and do { $self->hmmfile($1); $hmmfname = $1 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 /^Accession:\s+(\S+)/ and do { $hmmacc = $1 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 /^Query HMM:\s+(\S+)/ and do { $hmmid = $1 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 /^Sequence database:\s+(\S+)/ and do { $self->seqfile($1) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 /^Scores for complete sequences/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 $hmmfname = "given" if not $hmmfname;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 /^Parsed for domains/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 if( (($id, $sc, $ev, $nd) = /(\S+).+?\s(\S+)\s+(\S+)\s+(\d+)\s*$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 $seq = Bio::Tools::HMMER::Set->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 $seq->name($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 $seq->bits($sc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 $seqh{$id} = $sc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 $seq->evalue($ev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 $self->add_Set($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 $seq->accession($hmmacc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 /^Alignments of top-scoring domains/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 if( (($id, $sqfrom, $sqto, $hmmf, $hmmt, $sc, $ev) = /(\S+)\s+\S+\s+(\d+)\s+(\d+).+?(\d+)\s+(\d+)\s+\S+\s+(\S+)\s+(\S+)\s*$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 $unit = Bio::Tools::HMMER::Domain->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 $unit->seq_id($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 $unit->hmmname($hmmfname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 $unit->start($sqfrom);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 $unit->end($sqto);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 $unit->bits($sc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 $unit->hstart($hmmf);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 $unit->hend($hmmt);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $unit->evalue($ev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 $unit->seqbits($seqh{$id});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 $self->add_Domain($unit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 $_ = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 ## Recognize and store domain alignments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 if( !defined $_ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 /^Histogram of all scores/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 # matches:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 # PF00621: domain 1 of 1, from 198 to 372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 if( /^\s*(\S+):.*from\s+(\d+)\s+to\s+(\d+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 my $name = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 my $from = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 my $to = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 # find the HMMUnit which this alignment is from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 $unit = $self->get_unit_nse($name,$hmmfname,$from,$to);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 if( !defined $unit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 $self->warn("Could not find $name $from $to unit even though I am reading it in. ugh!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 while(<$file>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 /^Histogram of all scores/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 /^\s*\S+:.*from\s+\d+\s+to\s+\d+/ && last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 $unit->add_alignment_line($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 $_ = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 return $count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 =head2 parsetype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 Title : parsetype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 Usage : $obj->parsetype($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 Returns : value of parsetype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 sub parsetype{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 $self->{'_parsetype'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 return $self->{'_parsetype'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 1; # says use was ok
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968