annotate variant_effect_predictor/Bio/SearchIO/hmmer.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: hmmer.pm,v 1.13.2.3 2003/08/07 15:40:36 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SearchIO::hmmer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::SearchIO::hmmer - A parser for HMMER output (hmmpfam, hmmsearch)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 # do not use this class directly it is available through Bio::SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $in = new Bio::SearchIO(-format => 'hmmer',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 -file => 't/data/L77119.hmmer');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 while( my $result = $in->next_result ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 # this is a Bio::Search::Result::HMMERResult object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 print $result->query_name(), " for HMM ", $result->hmm_name(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 while( my $hit = $result->next_hit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 print $hit->name(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 while( my $hsp = $hit->next_hsp ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 print "length is ", $hsp->length(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 This object implements a parser for HMMER output.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 package Bio::SearchIO::hmmer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use vars qw(@ISA %MAPPING %MODEMAP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 $DEFAULT_HSP_FACTORY_CLASS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 $DEFAULT_HIT_FACTORY_CLASS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 $DEFAULT_RESULT_FACTORY_CLASS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::Factory::ObjectFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 @ISA = qw(Bio::SearchIO );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 # mapping of HMMER items to Bioperl hash keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 %MODEMAP = ('HMMER_Output' => 'result',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 'Hit' => 'hit',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 'Hsp' => 'hsp'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 %MAPPING = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 'Hsp_bit-score' => 'HSP-bits',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 'Hsp_score' => 'HSP-score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 'Hsp_evalue' => 'HSP-evalue',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 'Hsp_query-from' => 'HSP-query_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 'Hsp_query-to' => 'HSP-query_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 'Hsp_hit-from' => 'HSP-hit_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 'Hsp_hit-to' => 'HSP-hit_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 'Hsp_positive' => 'HSP-conserved',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 'Hsp_identity' => 'HSP-identical',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 'Hsp_gaps' => 'HSP-hsp_gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 'Hsp_hitgaps' => 'HSP-hit_gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 'Hsp_querygaps' => 'HSP-query_gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 'Hsp_qseq' => 'HSP-query_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 'Hsp_hseq' => 'HSP-hit_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 'Hsp_midline' => 'HSP-homology_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 'Hsp_align-len' => 'HSP-hsp_length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 'Hsp_query-frame'=> 'HSP-query_frame',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 'Hsp_hit-frame' => 'HSP-hit_frame',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 'Hit_id' => 'HIT-name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 'Hit_len' => 'HIT-length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 'Hit_accession' => 'HIT-accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 'Hit_desc' => 'HIT-description',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 'Hit_signif' => 'HIT-significance',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 'Hit_score' => 'HIT-score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 'HMMER_program' => 'RESULT-algorithm_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 'HMMER_version' => 'RESULT-algorithm_version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 'HMMER_query-def' => 'RESULT-query_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 'HMMER_query-len' => 'RESULT-query_length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 'HMMER_query-acc' => 'RESULT-query_accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 'HMMER_querydesc' => 'RESULT-query_description',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 'HMMER_hmm' => 'RESULT-hmm_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 'HMMER_seqfile' => 'RESULT-sequence_file',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 $DEFAULT_HIT_FACTORY_CLASS = 'Bio::Factory::HMMERHitFactory';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $DEFAULT_HSP_FACTORY_CLASS = 'Bio::Factory::HMMERHSPFactory';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $DEFAULT_RESULT_FACTORY_CLASS = 'Bio::Factory::HMMERResultFactory';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Usage : my $obj = new Bio::SearchIO::hmmer();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Function: Builds a new Bio::SearchIO::hmmer object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Returns : Bio::SearchIO::hmmer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Args : -fh/-file => HMMER filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 -format => 'hmmer'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $handler = $self->_eventHandler;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 # new object initialization code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $handler->register_factory('result',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Bio::Factory::ObjectFactory->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 -type => 'Bio::Search::Result::HMMERResult',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 -interface => 'Bio::Search::Result::ResultI'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 $handler->register_factory('hit',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Bio::Factory::ObjectFactory->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 -type => 'Bio::Search::Hit::HMMERHit',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 -interface => 'Bio::Search::Hit::HitI'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $handler->register_factory('hsp',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Bio::Factory::ObjectFactory->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 -type => 'Bio::Search::HSP::HMMERHSP',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 -interface => 'Bio::Search::HSP::HSPI'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $self->{'_hmmidline'} = 'HMMER 2.2g (August 2001)';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =head2 next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Title : next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Usage : my $hit = $searchio->next_result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Function: Returns the next Result from a search
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 sub next_result{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my $seentop = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 my $reporttype;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my ($last,@hitinfo,@hspinfo,%hspinfo,%hitinfo);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 my @alignemnt_lines;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $self->start_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 while( defined ($_ = $self->_readline )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my $lineorig = $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 if( /^HMMER\s+(\S+)\s+\((.+)\)/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 my ($prog,$version) = split;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 if( $seentop ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $self->_pushback($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->end_element({'Name' => 'HMMER_Output'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 return $self->end_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $self->{'_hmmidline'} = $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $self->start_element({'Name' => 'HMMER_Output'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->{'_result_count'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $seentop = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 if( defined $last ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 ($reporttype) = split(/\s+/,$last);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $self->element({'Name' => 'HMMER_program',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 'Data' => uc ($reporttype)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->element({'Name' => 'HMMER_version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 'Data' => $version});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 } elsif( s/^HMM file:\s+//o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $self->{'_hmmfileline'} = $lineorig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $self->element({'Name' => 'HMMER_hmm',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 } elsif( s/^Sequence\s+(file|database):\s+//o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->{'_hmmseqline'} = $lineorig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $self->element({'Name' => 'HMMER_seqfile',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 } elsif( s/^Query(\s+(sequence|HMM))?:\s+//o) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 if( ! $seentop ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 # we're in a multi-query report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->_pushback($self->{'_hmmidline'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->_pushback($self->{'_hmmfileline'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->_pushback($self->{'_hmmseqline'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $self->_pushback($lineorig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $self->element({'Name' => 'HMMER_query-def',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 } elsif( s/^Accession:\s+//o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $self->element({'Name' => 'HMMER_query-acc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 } elsif( s/^Description:\s+//o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $self->element({'Name' => 'HMMER_querydesc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 } elsif( defined $self->{'_reporttype'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $self->{'_reporttype'} eq 'HMMSEARCH' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # PROCESS HMMSEARCH RESULTS HERE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 if( /^Scores for complete sequences/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 last if( /^\s+$/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 next if( /^Sequence\s+Description/o || /^\-\-\-/o );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my @line = split;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 my ($name, $n,$evalue,$score)= (shift @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 pop @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 pop @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 pop @line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $desc = join(' ', @line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 push @hitinfo, [ $name, $desc,$evalue,$score];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $hitinfo{$name} = $#hitinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 } elsif( /^Parsed for domains:/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 @hspinfo = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 last if( /^\s+$/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 next if( /^(Model|Sequence)\s+Domain/o || /^\-\-\-/o );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 if( my ($n,$domainnum,$domainct, @vals) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 (m!^(\S+)\s+ # host name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 (\d+)/(\d+)\s+ # num/num (ie 1 of 2)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 (\d+)\s+(\d+).+? # sequence start and end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 (\d+)\s+(\d+)\s+ # hmm start and end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 \S+\s+ # []
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 (\S+)\s+ # score
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 (\S+) # evalue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 \s*$!ox ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 # array lookup so that we can get rid of things
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 # when they've been processed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 my $info = $hitinfo[$hitinfo{$n}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 if( !defined $info ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $self->warn("Incomplete Sequence information, can't find $n hitinfo says $hitinfo{$n}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 push @hspinfo, [ $n, @vals];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 } elsif( /^Alignments of top/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my ($prelength,$lastdomain,$count,$width);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my %domaincounter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my $second_tier=0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 next if( /^Align/o ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 /^\s+RF\s+[x\s]+$/o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 if( /^Histogram/o || m!^//!o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 if( $self->in_element('hsp')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 if( $self->within_element('hit')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 if( /^\s*(.+):\s+domain\s+(\d+)\s+of\s+(\d+)\,\s+from\s+(\d+)\s+to\s+(\d+)/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 my ($name,$domainct,$domaintotal,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $from,$to) = ($1,$2,$3,$4,$5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $domaincounter{$name}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 if( ! defined $lastdomain || $lastdomain ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if( $self->within_element('hit') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if( $self->within_element('hsp') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $self->start_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my $info = [@{$hitinfo[$hitinfo{$name}] || $self->throw("Could not find hit info for $name: Insure that your database contains only unique sequence names")}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 if( $info->[0] ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 $self->throw("Somehow the Model table order does not match the order in the domains (got ".$info->[0].", expected $name)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 $self->element({'Name' => 'Hit_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $self->element({'Name' => 'Hit_desc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $self->element({'Name' => 'Hit_signif',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $self->element({'Name' => 'Hit_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $self->end_element({'Name' => 'Hsp'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 if $self->in_element('hsp');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $self->start_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $self->element({'Name' => 'Hsp_identity',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $self->element({'Name' => 'Hsp_positive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 my $HSPinfo = shift @hspinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $id = shift @$HSPinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 if( $id ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 $self->throw("Somehow the domain list details do not match the table (got $id, expected $name)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 if( $domaincounter{$name} == $domaintotal) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $hitinfo[$hitinfo{$name}] = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $self->element({'Name' => 'Hsp_hit-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 $self->element({'Name' => 'Hsp_hit-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $self->element({'Name' => 'Hsp_query-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 $self->element({'Name' => 'Hsp_query-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $self->element({'Name' => 'Hsp_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $self->element({'Name' => 'Hsp_evalue',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $lastdomain = $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 # Might want to change this so that it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 # accumulates all the of the alignment lines into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 # three array slots and then tests for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 # end of the line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if( /^(\s+\*\-\>)(\S+)/o ) { # start of domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 $prelength = CORE::length($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $width = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 # $width = CORE::length($2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 $self->element({'Name' =>'Hsp_qseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 'Data' => $2});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $second_tier = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 } elsif ( /^(\s+)(\S+)\<\-\*\s*$/o ) { #end of domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $self->element({'Name' =>'Hsp_qseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 'Data' => $2});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 $width = CORE::length($2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 } elsif( ($count != 1 && /^\s+$/o) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 CORE::length($_) == 0 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 /^\s+\-?\*\s*$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 } elsif( $count == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $prelength -= 3 unless ($second_tier++);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 unless( defined $prelength) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 # $self->warn("prelength not set");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $self->element({'Name' => 'Hsp_qseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 'Data' => substr($_,$prelength)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 } elsif( $count == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 if( ! defined $prelength ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 $self->warn("prelength not set");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 if( $width ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $self->element({'Name' => 'Hsp_midline',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 'Data' => substr($_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $prelength,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $width)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $self->debug( "midline is $_\n") if( CORE::length($_) <= $prelength && $self->verbose > 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $self->element({'Name' => 'Hsp_midline',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 'Data' => substr($_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 $prelength)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 } elsif( $count == 2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 if( /^\s+(\S+)\s+(\d+|\-)\s+(\S*)\s+(\d+|\-)/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 $self->element({'Name' => 'Hsp_hseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 'Data' => $3});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $self->warn("unrecognized line: $_\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 $count = 0 if $count++ >= 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 } elsif( /^Histogram/o || m!^//!o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 while( my $HSPinfo = shift @hspinfo ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my $id = shift @$HSPinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 my $info = [@{$hitinfo[$hitinfo{$id}]}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 next unless defined $info;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $self->start_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $self->element({'Name' => 'Hit_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $self->element({'Name' => 'Hit_desc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $self->element({'Name' => 'Hit_signif',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $self->element({'Name' => 'Hit_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 $self->start_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 $self->element({'Name' => 'Hsp_query-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $self->element({'Name' => 'Hsp_query-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $self->element({'Name' => 'Hsp_hit-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $self->element({'Name' => 'Hsp_hit-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $self->element({'Name' => 'Hsp_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $self->element({'Name' => 'Hsp_evalue',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 $self->element({'Name' => 'Hsp_identity',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $self->element({'Name' => 'Hsp_positive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 $self->element({'Name' => 'Hsp_positive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 @hitinfo = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 %hitinfo = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 } elsif( defined $self->{'_reporttype'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $self->{'_reporttype'} eq 'HMMPFAM' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 if( /^Scores for sequence family/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 last if( /^\s+$/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 next if( /^Model\s+Description/o || /^\-\-\-/o );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 my @line = split;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 my ($model,$n,$evalue,$score) = (shift @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 pop @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 pop @line,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 pop @line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 my $desc = join(' ', @line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 push @hitinfo, [ $model, $desc,$score,$evalue,$n];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $hitinfo{$model} = $#hitinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 } elsif( /^Parsed for domains:/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 @hspinfo = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 last if( /^\s+$/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 next if( /^Model\s+Domain/o || /^\-\-\-/o );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 if( my ($n,$domainnum,$domainct,@vals) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 (m!^(\S+)\s+ # domain name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 \s+(\d+)/(\d+)\s+ # domain num out of num
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 (\d+)\s+(\d+).+? # seq start, end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 (\d+)\s+(\d+)\s+ # hmm start, end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 \S+\s+ # []
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 (\S+)\s+ # score
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 (\S+) # evalue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 \s*$!ox ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 my $hindex = $hitinfo{$n};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 if( ! defined $hindex ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 push @hitinfo, [ $n, '',$vals[5],$vals[6],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $domainct];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $hitinfo{$n} = $#hitinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $hindex = $#hitinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 my $info = $hitinfo[$hindex];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 if( ! defined $info ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $self->warn("incomplete Domain information, can't find $n hitinfo says $hitinfo{$n}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 push @hspinfo, [ $n, @vals];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 } elsif( /^Alignments of top/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 my ($prelength,$lastdomain,$count,$width);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 my $second_tier=0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 while( defined($_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 next if( /^Align/o || /^\s+RF\s+[x\s]+$/o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 if( /^Histogram/o || m!^//!o || /^Query sequence/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 if( $self->in_element('hsp')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 if( $self->in_element('hit') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $self->end_element({'Name' => 'HMMER_Output'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 if( /^Query sequence/o ) { $self->_pushback($_); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 return $self->end_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 if( m/(\S+):.*from\s+(\d+)\s+to\s+(\d+)/o ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 my ($name,$from,$to) = ($1,$2,$3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 if( ! defined $lastdomain || $lastdomain ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 if( $self->within_element('hit') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 if( $self->in_element('hsp') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 $self->start_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 my $info = [@{$hitinfo[$hitinfo{$name}]}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 if( ! defined $info ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 $info->[0] ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 $self->warn("Somehow the Model table order does not match the order in the domains (got ".$info->[0].", expected $name). We're
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 back loading this from the alignment information instead");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $info = [$name, '',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 /score\s+([^,\s]+),\s+E\s+=\s+(\S+)/ox];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 push @hitinfo, $info;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 $hitinfo{$name} = $#hitinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 $self->element({'Name' => 'Hit_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 $self->element({'Name' => 'Hit_desc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 $self->element({'Name' => 'Hit_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 $self->element({'Name' => 'Hit_signif',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 'Data' => shift @{$info}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 if( $self->within_element('hsp') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 #if( defined $lastdomain ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $self->start_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 $self->element({'Name' => 'Hsp_identity',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 $self->element({'Name' => 'Hsp_positive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 'Data' => 0});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 my $HSPinfo = shift @hspinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 my $id = shift @$HSPinfo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 if( $id ne $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 $self->throw("Somehow the domain list details do not match the table (got $id, expected $name)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 $self->element({'Name' => 'Hsp_query-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 $self->element({'Name' => 'Hsp_query-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $self->element({'Name' => 'Hsp_hit-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $self->element({'Name' => 'Hsp_hit-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 $self->element({'Name' => 'Hsp_score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 $self->element({'Name' => 'Hsp_evalue',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 'Data' => shift @$HSPinfo});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $lastdomain = $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 if( /^(\s+\*\-\>)(\S+)/o ) { # start of domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $prelength = CORE::length($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $width = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 # $width = CORE::length($2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $self->element({'Name' =>'Hsp_hseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 'Data' => $2});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 $second_tier = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 } elsif ( /^(\s+)(\S+)\<\-?\*?\s*$/o ) { #end of domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 $prelength -= 3 unless ($second_tier++);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 $self->element({'Name' =>'Hsp_hseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 'Data' => $2});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 $width = CORE::length($2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 } elsif( CORE::length($_) == 0 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 ($count != 1 && /^\s+$/o) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 /^\s+\-?\*\s*$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 } elsif( $count == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $prelength -= 3 unless ($second_tier++);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 unless( defined $prelength) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 # $self->warn("prelength not set");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 $self->element({'Name' => 'Hsp_hseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 'Data' => substr($_,$prelength)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 } elsif( $count == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 if( ! defined $prelength ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 $self->warn("prelength not set");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 if( $width ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 $self->element({'Name' => 'Hsp_midline',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 'Data' => substr($_,$prelength,$width)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 $self->element({'Name' => 'Hsp_midline',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 'Data' => substr($_,$prelength)});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 } elsif( $count == 2 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 if( /^\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+)/o ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 /^\s+(\S+)\s+(\-)\s+(\S*)\s+(\-)/o
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 $self->element({'Name' => 'Hsp_qseq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 'Data' => $3});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $self->warn("unrecognized line ($count): $_\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 $count = 0 if $count++ >= 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 $self->debug($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 $last = $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 $self->end_element({'Name' => 'HMMER_Output'}) unless ! $seentop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 return $self->end_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 =head2 start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Usage : $eventgenerator->start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Function: Handles a start element event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 Args : hashref with at least 2 keys 'Data' and 'Name'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 sub start_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 # we currently don't care about attributes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 my $type = $MODEMAP{$nm};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 if( $type ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 my $func = sprintf("start_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 $self->_eventHandler->$func($data->{'Attributes'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 unshift @{$self->{'_elements'}}, $type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 if(defined $type &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 $type eq 'result') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 =head2 end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 Usage : $eventgenerator->end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 Function: Handles an end element event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Args : hashref with at least 2 keys 'Data' and 'Name'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 sub end_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 my $type = $MODEMAP{$nm};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 my $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 if($nm eq 'HMMER_program' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 if( $self->{'_last_data'} =~ /(HMM\S+)/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 $self->{'_reporttype'} = uc $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 # Hsp are sort of weird, in that they end when another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 # object begins so have to detect this in end_element for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 if( $nm eq 'Hsp' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 foreach ( qw(Hsp_qseq Hsp_midline Hsp_hseq) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 $self->element({'Name' => $_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 'Data' => $self->{'_last_hspdata'}->{$_}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 $self->{'_last_hspdata'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 if( $type ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 my $func = sprintf("end_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 $rc = $self->_eventHandler->$func($self->{'_reporttype'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 $self->{'_values'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 my $lastelem = shift @{$self->{'_elements'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 } elsif( $MAPPING{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 if ( ref($MAPPING{$nm}) =~ /hash/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 my $key = (keys %{$MAPPING{$nm}})[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $self->{'_values'}->{$key}->{$MAPPING{$nm}->{$key}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 $self->{'_values'}->{$MAPPING{$nm}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 $self->debug( "unknown nm $nm, ignoring\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $self->{'_last_data'} = ''; # remove read data if we are at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 # end of an element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 $self->{'_result'} = $rc if( defined $type && $type eq 'result' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 return $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 =head2 element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 Title : element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 Usage : $eventhandler->element({'Name' => $name, 'Data' => $str});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 Function: Convience method that calls start_element, characters, end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 Args : Hash ref with the keys 'Name' and 'Data'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 sub element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 $self->start_element($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 $self->characters($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 $self->end_element($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 =head2 characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 Title : characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 Usage : $eventgenerator->characters($str)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 Function: Send a character events
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 Args : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 sub characters{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 if( $self->in_element('hsp') &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 $data->{'Name'} =~ /Hsp\_(qseq|hseq|midline)/o &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 defined $data->{'Data'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 $self->{'_last_hspdata'}->{$data->{'Name'}} .= $data->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 return unless ( defined $data->{'Data'} && $data->{'Data'} !~ /^\s+$/o );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 $self->{'_last_data'} = $data->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 =head2 within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Title : within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 Usage : if( $eventgenerator->within_element($element) ) {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 Function: Test if we are within a particular element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 This is different than 'in' because within can be tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 for a whole block.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 Args : string element name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 sub within_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 return 0 if ( ! defined $name ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 ! defined $self->{'_elements'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 scalar @{$self->{'_elements'}} == 0) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 foreach ( @{$self->{'_elements'}} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 return 1 if( $_ eq $name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 =head2 in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 Title : in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 Usage : if( $eventgenerator->in_element($element) ) {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 Function: Test if we are in a particular element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 This is different than 'within' because 'in' only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 tests its immediete parent.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 Args : string element name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 sub in_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 return 0 if ! defined $self->{'_elements'}->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 return ( $self->{'_elements'}->[0] eq $name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 =head2 start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 Title : start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 Usage : $eventgenerator->start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 Function: Handle a start document event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 sub start_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 $self->{'_lasttype'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 $self->{'_elements'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 =head2 end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 Title : end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 Usage : $eventgenerator->end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 Function: Handles an end document event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 sub end_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 return $self->{'_result'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 =head2 result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 Title : result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 Usage : my $count = $searchio->result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 Function: Returns the number of results we have processed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 sub result_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 return $self->{'_result_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 1;