annotate variant_effect_predictor/Bio/SearchIO/waba.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: waba.pm,v 1.8 2002/12/11 22:12:32 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SearchIO::waba
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::waba - SearchIO parser for Jim Kent WABA program
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 alignment output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # do not use this object directly, rather through Bio::SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 my $in = new Bio::SearchIO(-format => 'waba',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 -file => 'output.wab');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 while( my $result = $in->next_result ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 while( my $hit = $result->next_hit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 while( my $hsp = $result->next_hsp ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 }
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 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 This parser will process the waba output (NOT the human readable format).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 package Bio::SearchIO::waba;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use vars qw(@ISA %MODEMAP %MAPPING @STATES);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # Object preamble - inherits from Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use POSIX;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 # mapping of NCBI Blast terms to Bioperl hash keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 %MODEMAP = ('WABAOutput' => '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 @STATES = qw(Hsp_qseq Hsp_hseq Hsp_stateseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 %MAPPING =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 'Hsp_query-from'=> 'HSP-query_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 'Hsp_query-to' => 'HSP-query_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 'Hsp_hit-from' => 'HSP-hit_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 'Hsp_hit-to' => 'HSP-hit_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 'Hsp_qseq' => 'HSP-query_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 'Hsp_hseq' => 'HSP-hit_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 'Hsp_midline' => 'HSP-homology_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 'Hsp_stateseq' => 'HSP-hmmstate_seq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 'Hsp_align-len' => 'HSP-hsp_length',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 'Hit_id' => 'HIT-name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 'Hit_accession' => 'HIT-accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 'WABAOutput_program' => 'RESULT-algorithm_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 'WABAOutput_version' => 'RESULT-algorithm_version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 'WABAOutput_query-def'=> 'RESULT-query_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 'WABAOutput_query-db' => 'RESULT-query_database',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 'WABAOutput_db' => 'RESULT-database_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 @ISA = qw(Bio::SearchIO );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Usage : my $obj = new Bio::SearchIO::waba();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Function: Builds a new Bio::SearchIO::waba object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Returns : Bio::SearchIO::waba
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Args : see Bio::SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $self->_eventHandler->register_factory('result', Bio::Search::Result::ResultFactory->new(-type => 'Bio::Search::Result::WABAResult'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $self->_eventHandler->register_factory('hsp', Bio::Search::HSP::HSPFactory->new(-type => 'Bio::Search::HSP::WABAHSP'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 =head2 next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Title : next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Usage : my $hit = $searchio->next_result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Function: Returns the next Result from a search
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 sub next_result{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my ($curquery,$curhit);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $state = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->start_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my @hit_signifs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 while( defined ($_ = $self->_readline )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 if( $state == -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my ($qid, $qhspid,$qpercent, $junk,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $alnlen,$qdb,$qacc,$qstart,$qend,$qstrand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $hitdb,$hacc,$hstart,$hend,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $hstrand) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 ( /^(\S+)\.(\S+)\s+align\s+ # get the queryid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 (\d+(\.\d+)?)\%\s+ # get the percentage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 of\s+(\d+)\s+ # get the length of the alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 (\S+)\s+ # this is the query database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 (\S+):(\d+)\-(\d+) # The accession:start-end for query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 \s+([\-\+]) # query strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 \s+(\S+)\. # hit db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 (\S+):(\d+)\-(\d+) # The accession:start-end for hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 \s+([\-\+])\s*$ # hit strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 /ox );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 # Curses. Jim's code is 0 based, the following is to readjust
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 $hstart++; $hend++; $qstart++; $qend++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 if( ! defined $alnlen ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $self->warn("Unable to parse the rest of the WABA alignment info for: $_");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $self->{'_reporttype'} = 'WABA'; # hardcoded - only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 # one type of WABA AFAIK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 if( defined $curquery &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $curquery ne $qid ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $self->_pushback($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 $self->end_element({'Name' => 'WABAOutput'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 return $self->end_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 if( defined $curhit &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $curhit ne $hacc) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 # slight duplication here -- keep these in SYNC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $self->start_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $self->element({'Name' => 'Hit_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 'Data' => $hacc});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $self->element({'Name' => 'Hit_accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 'Data' => $hacc});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 } elsif ( ! defined $curquery ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $self->start_element({'Name' => 'WABAOutput'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $self->{'_result_count'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->element({'Name' => 'WABAOutput_query-def',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 'Data' => $qid });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->element({'Name' => 'WABAOutput_program',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 'Data' => 'WABA'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $self->element({'Name' => 'WABAOutput_query-db',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 'Data' => $qdb});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $self->element({'Name' => 'WABAOutput_db',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 'Data' => $hitdb});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 # slight duplication here -- keep these N'SYNC ;-)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $self->start_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 $self->element({'Name' => 'Hit_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 'Data' => $hacc});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 $self->element({'Name' => 'Hit_accession',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 'Data' => $hacc});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 # strand is inferred by start,end values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 # in the Result Builder
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 if( $qstrand eq '-' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 ($qstart,$qend) = ($qend,$qstart);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 if( $hstrand eq '-' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 ($hstart,$hend) = ($hend,$hstart);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->start_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $self->element({'Name' => 'Hsp_query-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 'Data' => $qstart});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $self->element({'Name' => 'Hsp_query-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 'Data' => $qend});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $self->element({'Name' => 'Hsp_hit-from',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 'Data' => $hstart});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $self->element({'Name' => 'Hsp_hit-to',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 'Data' => $hend});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $self->element({'Name' => 'Hsp_align-len',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 'Data' => $alnlen});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 $curquery = $qid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $curhit = $hacc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $state = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 } elsif( ! defined $curquery ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $self->warn("skipping because no Hit begin line was recognized\n$_") if( $_ !~ /^\s+$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 chomp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $self->element({'Name' => $STATES[$state++],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 'Data' => $_});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 if( $state >= scalar @STATES ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $state = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $self->end_element({'Name' => 'Hsp'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 if( defined $curquery ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $self->end_element({'Name' => 'Hit'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $self->end_element({'Name' => 'WABAOutput'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 return $self->end_document();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 =head2 start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Usage : $eventgenerator->start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Function: Handles a start element event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Args : hashref with at least 2 keys 'Data' and 'Name'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 sub start_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 # we currently don't care about attributes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 if( my $type = $MODEMAP{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $self->_mode($type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 my $func = sprintf("start_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 $self->_eventHandler->$func($data->{'Attributes'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 unshift @{$self->{'_elements'}}, $type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if($nm eq 'WABAOutput') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 $self->{'_mode'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 =head2 end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Usage : $eventgenerator->end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Function: Handles an end element event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Args : hashref with at least 2 keys 'Data' and 'Name'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 sub end_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my $nm = $data->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 my $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 # Hsp are sort of weird, in that they end when another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 # object begins so have to detect this in end_element for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 if( $nm eq 'Hsp' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 foreach ( qw(Hsp_qseq Hsp_midline Hsp_hseq) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $self->element({'Name' => $_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 'Data' => $self->{'_last_hspdata'}->{$_}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $self->{'_last_hspdata'} = {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 if( my $type = $MODEMAP{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 if( $self->_eventHandler->will_handle($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 my $func = sprintf("end_%s",lc $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $rc = $self->_eventHandler->$func($self->{'_reporttype'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $self->{'_values'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 shift @{$self->{'_elements'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 } elsif( $MAPPING{$nm} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 if ( ref($MAPPING{$nm}) =~ /hash/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $key = (keys %{$MAPPING{$nm}})[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 $self->{'_values'}->{$key}->{$MAPPING{$nm}->{$key}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 $self->{'_values'}->{$MAPPING{$nm}} = $self->{'_last_data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 $self->warn( "unknown nm $nm ignoring\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $self->{'_last_data'} = ''; # remove read data if we are at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 # end of an element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $self->{'_result'} = $rc if( $nm eq 'WABAOutput' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 return $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 =head2 element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Title : element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Usage : $eventhandler->element({'Name' => $name, 'Data' => $str});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Function: Convience method that calls start_element, characters, end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Args : Hash ref with the keys 'Name' and 'Data'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 sub element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 $self->start_element($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $self->characters($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $self->end_element($data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 =head2 characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Title : characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Usage : $eventgenerator->characters($str)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 Function: Send a character events
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 Args : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 sub characters{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 my ($self,$data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 return unless ( defined $data->{'Data'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 if( $data->{'Data'} =~ /^\s+$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 return unless $data->{'Name'} =~ /Hsp\_(midline|qseq|hseq)/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 if( $self->in_element('hsp') &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 $data->{'Name'} =~ /Hsp\_(qseq|hseq|midline)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $self->{'_last_hspdata'}->{$data->{'Name'}} .= $data->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $self->{'_last_data'} = $data->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 =head2 _mode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Title : _mode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Usage : $obj->_mode($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 Returns : value of _mode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 sub _mode{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $self->{'_mode'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 return $self->{'_mode'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 =head2 within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Title : within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Usage : if( $eventgenerator->within_element($element) ) {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Function: Test if we are within a particular element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 This is different than 'in' because within can be tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 for a whole block.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Args : string element name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 sub within_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 return 0 if ( ! defined $name &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 ! defined $self->{'_elements'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 scalar @{$self->{'_elements'}} == 0) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 foreach ( @{$self->{'_elements'}} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 if( $_ eq $name ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 =head2 in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 Title : in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 Usage : if( $eventgenerator->in_element($element) ) {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 Function: Test if we are in a particular element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 This is different than 'in' because within can be tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 for a whole block.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 Args : string element name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 sub in_element{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 return 0 if ! defined $self->{'_elements'}->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 return ( $self->{'_elements'}->[0] eq $name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 =head2 start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 Title : start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 Usage : $eventgenerator->start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Function: Handles a start document event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 sub start_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 $self->{'_lasttype'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $self->{'_values'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 $self->{'_result'}= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 $self->{'_mode'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 $self->{'_elements'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 =head2 end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 Title : end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 Usage : $eventgenerator->end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Function: Handles an end document event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Returns : Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 sub end_document{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 return $self->{'_result'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 =head2 result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 Title : result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 Usage : my $count = $searchio->result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 Function: Returns the number of results we have processed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 sub result_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 return $self->{'_result_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 sub report_count { shift->result_count }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 1;