annotate variant_effect_predictor/Bio/SearchIO/blastxml.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: blastxml.pm,v 1.24 2002/10/26 09:32:16 sac Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SearchIO::blastxml
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::blastxml - A SearchIO implementation of NCBI Blast XML parsing.
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 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $searchin = new Bio::SearchIO(-format => 'blastxml',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 -file => 't/data/plague_yeast.bls.xml');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 while( my $result = $searchin->next_result ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # one can also request that the parser NOT keep the XML data in memory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 # by using the tempfile initialization flag.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 my $searchin = new Bio::SearchIO(-tempfile => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 -format => 'blastxml',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 -file => 't/data/plague_yeast.bls.xml');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 while( my $result = $searchin->next_result ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 This object implements a NCBI Blast XML parser.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 There is one additional initialization flag from the SearchIO defaults
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 - that is the -tempfile flag. If specified as true, then the parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 will write out each report to a temporary filehandle rather than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 holding the entire report as a string in memory. The reason this is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 done in the first place is NCBI reports have an uncessary E<lt>?xml
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 version="1.0"?E<gt> at the beginning of each report and RPS-BLAST reports
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 have an additional unecessary RPS-BLAST tag at the top of each report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 So we currently have implemented the work around by preparsing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 file (yes it makes the process slower, but it works).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 package Bio::SearchIO::blastxml;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 use vars qw(@ISA $DTD %MAPPING %MODEMAP $DEBUG);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 $DTD = 'ftp://ftp.ncbi.nlm.nih.gov/blast/documents/NCBI_BlastOutput.dtd';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 # Object preamble - inherits from Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 use XML::Parser::PerlSAX;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 use XML::Handler::Subs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 use HTML::Entities;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 use IO::File;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 # mapping of NCBI Blast terms to Bioperl hash keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 %MODEMAP = ('BlastOutput' => 'result',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 'Hit' => 'hit',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 'Hsp' => 'hsp'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 %MAPPING = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 # HSP specific fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 'Hsp_bit-score' => 'HSP-bits',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 'Hsp_score' => 'HSP-score',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 'Hsp_evalue' => 'HSP-evalue',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 'Hsp_query-from' => 'HSP-query_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 'Hsp_query-to' => 'HSP-query_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 'Hsp_hit-from' => 'HSP-hit_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 'Hsp_hit-to' => 'HSP-hit_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 'Hsp_positive' => 'HSP-conserved',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 'Hsp_identity' => 'HSP-identical',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 'Hsp_gaps' => 'HSP-gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 'Hsp_hitgaps' => 'HSP-hit_gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 'Hsp_querygaps' => 'HSP-query_gaps',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 'Hsp_qseq' => 'HSP-query_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 'Hsp_hseq' => 'HSP-hit_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 'Hsp_midline' => 'HSP-homology_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 'Hsp_align-len' => 'HSP-hsp_length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 'Hsp_query-frame'=> 'HSP-query_frame',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 'Hsp_hit-frame' => 'HSP-hit_frame',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 # these are ignored for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 'Hsp_num' => 'HSP-order',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 'Hsp_pattern-from' => 'patternend',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 'Hsp_pattern-to' => 'patternstart',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 'Hsp_density' => 'hspdensity',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 # Hit specific fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 'Hit_id' => 'HIT-name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 'Hit_len' => 'HIT-length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 'Hit_accession' => 'HIT-accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 'Hit_def' => 'HIT-description',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 'Hit_num' => 'HIT-order',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 'Iteration_iter-num' => 'HIT-iteration',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 'Iteration_stat' => 'HIT-iteration_statistic',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 'BlastOutput_program' => 'RESULT-algorithm_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 'BlastOutput_version' => 'RESULT-algorithm_version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 'BlastOutput_query-def' => 'RESULT-query_description',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 'BlastOutput_query-len' => 'RESULT-query_length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 'BlastOutput_db' => 'RESULT-database_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 'BlastOutput_reference' => 'RESULT-program_reference',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 'BlastOutput_query-ID' => 'runid',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 'Parameters_matrix' => { 'RESULT-parameters' => 'matrix'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 'Parameters_expect' => { 'RESULT-parameters' => 'expect'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 'Parameters_include' => { 'RESULT-parameters' => 'include'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 'Parameters_sc-match' => { 'RESULT-parameters' => 'match'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 'Parameters_sc-mismatch' => { 'RESULT-parameters' => 'mismatch'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 'Parameters_gap-open' => { 'RESULT-parameters' => 'gapopen'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 'Parameters_gap-extend'=> { 'RESULT-parameters' => 'gapext'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 'Parameters_filter' => {'RESULT-parameters' => 'filter'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 'Statistics_db-num' => 'RESULT-database_entries',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 'Statistics_db-len' => 'RESULT-database_letters',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 'Statistics_hsp-len' => { 'RESULT-statistics' => 'hsplength'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 'Statistics_eff-space' => { 'RESULT-statistics' => 'effectivespace'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 'Statistics_kappa' => { 'RESULT-statistics' => 'kappa' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 'Statistics_lambda' => { 'RESULT-statistics' => 'lambda' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 'Statistics_entropy' => { 'RESULT-statistics' => 'entropy'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 eval { require Time::HiRes };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 if( $@ ) { $DEBUG = 0; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 @ISA = qw(Bio::SearchIO );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Usage : my $searchio = new Bio::SearchIO(-format => 'blastxml',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 -file => 'filename',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 -tempfile => 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Function: Initializes the object - this is chained through new in SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Returns : Bio::SearchIO::blastxml object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Args : One additional argument from the format and file/fh parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 -tempfile => boolean. Defaults to false. Write out XML data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 to a temporary filehandle to send to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 PerlSAX parser.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 =head2 _initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Title : _initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Usage : private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Function: Initializes the object - this is chained through new in SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 sub _initialize{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 my ($usetempfile) = $self->_rearrange([qw(TEMPFILE)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 defined $usetempfile && $self->use_tempfile($usetempfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $self->{'_xmlparser'} = new XML::Parser::PerlSAX();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $DEBUG = 1 if( ! defined $DEBUG && $self->verbose > 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 =head2 next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Title : next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Usage : my $hit = $searchio->next_result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Function: Returns the next Result from a search
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 sub next_result {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my $data = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $firstline = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my ($tfh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 if( $self->use_tempfile ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $tfh = IO::File->new_tmpfile or $self->throw("Unable to open temp file: $!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $tfh->autoflush(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my $okaytoprocess;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 while( defined( $_ = $self->_readline) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if( /^RPS-BLAST/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->{'_type'} = 'RPSBLAST';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if( /^<\?xml version/ && ! $firstline) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $self->_pushback($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $_ = decode_entities($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 # s/\&apos;/\`/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # s/\&gt;/\>/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 # s/\&lt;/\</g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $okaytoprocess = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 if( defined $tfh ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 print $tfh $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $data .= $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $firstline = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 return undef unless( $okaytoprocess);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my %parser_args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 if( defined $tfh ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 seek($tfh,0,0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 %parser_args = ('Source' => { 'ByteStream' => $tfh },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 'Handler' => $self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 %parser_args = ('Source' => { 'String' => $data },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 'Handler' => $self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 my $result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 my $starttime;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 if( $DEBUG ) { $starttime = [ Time::HiRes::gettimeofday() ]; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $result = $self->{'_xmlparser'}->parse(%parser_args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $self->{'_result_count'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 if( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $self->warn("error in parsing a report:\n $@");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 $result = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 if( $DEBUG ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 $self->debug( sprintf("parsing took %f seconds\n", Time::HiRes::tv_interval($starttime)));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 # parsing magic here - but we call event handlers rather than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 # instantiating things
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 return $result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =head2 SAX methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 =head2 start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Title : start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Usage : $parser->start_document;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Function: SAX method to indicate starting to parse a new document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 sub start_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $self->{'_lasttype'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 =head2 end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Title : end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Usage : $parser->end_document;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 Function: SAX method to indicate finishing parsing a new document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 sub end_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 return $self->{'_result'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 =head2 start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Usage : $parser->start_element($data)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Function: SAX method to indicate starting a new element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Args : hash ref for data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 sub start_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 # we currently don't care about attributes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 if( my $type = $MODEMAP{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $func = sprintf("start_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $self->_eventHandler->$func($data->{'Attributes'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 if($nm eq 'BlastOutput') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 =head2 end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Title : end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 Usage : $parser->end_element($data)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Function: Signals finishing an element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Returns : Bio::Search object dpending on what type of element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Args : hash ref for data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 sub end_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 if($nm eq 'BlastOutput_program' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 $self->{'_last_data'} =~ /(t?blast[npx])/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $self->{'_type'} = uc $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 if( my $type = $MODEMAP{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 my $func = sprintf("end_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 $rc = $self->_eventHandler->$func($self->{'_type'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 $self->{'_values'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 } elsif( $MAPPING{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 if ( ref($MAPPING{$nm}) =~ /hash/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my $key = (keys %{$MAPPING{$nm}})[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $self->{'_values'}->{$key}->{$MAPPING{$nm}->{$key}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 $self->{'_values'}->{$MAPPING{$nm}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 } elsif( $nm eq 'Iteration' || $nm eq 'Hit_hsps' || $nm eq 'Parameters' ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $nm eq 'BlastOutput_param' || $nm eq 'Iteration_hits' ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 $nm eq 'Statistics' || $nm eq 'BlastOutput_iterations' ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $self->debug("ignoring unrecognized element type $nm\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $self->{'_last_data'} = ''; # remove read data if we are at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 # end of an element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $self->{'_result'} = $rc if( $nm eq 'BlastOutput' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 return $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 =head2 characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 Title : characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Usage : $parser->characters($data)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Function: Signals new characters to be processed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Returns : characters read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Args : hash ref with the key 'Data'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 sub characters{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 return unless ( defined $data->{'Data'} && $data->{'Data'} !~ /^\s+$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $self->{'_last_data'} = $data->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 =head2 use_tempfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Title : use_tempfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Usage : $obj->use_tempfile($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Function: Get/Set boolean flag on whether or not use a tempfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Returns : value of use_tempfile
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 sub use_tempfile{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $self->{'_use_tempfile'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 return $self->{'_use_tempfile'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 sub result_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 return $self->{'_result_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 1;