annotate variant_effect_predictor/Bio/SearchIO.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: SearchIO.pm,v 1.18 2002/12/13 13:54:03 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SearchIO
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 - Driver for parsing Sequence Database Searches (Blast,FASTA,...)
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 # format can be 'fasta', 'blast'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $searchio = new Bio::SearchIO( -format => 'blastxml',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 -file => 'blastout.xml' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 while ( my $result = $searchio->next_result() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 while( my $hit = $result->next_hit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # process the Bio::Search::Hit::HitI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 while( my $hsp = $hit->next_hsp ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # process the Bio::Search::HSP::HSPI object
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 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 This is a driver for instantiating a parser for report files from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 sequence database searches. This object serves as a wrapper for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 format parsers in Bio::SearchIO::* - you should not need to ever
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 use those format parsers directly. (For people used to the SeqIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 system it, we are deliberately using the same pattern).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 Once you get a SearchIO object, calling next_result() gives you back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 a L<Bio::Search::Result::ResultI> compliant object, which is an object that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 represents one Blast/Fasta/HMMER whatever report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 =head1 AUTHOR - Jason Stajich & Steve Chervitz
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Email sac@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 package Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 # Object preamble - inherits from Bio::Root::IO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 use Bio::Event::EventGeneratorI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use Bio::SearchIO::SearchResultEventBuilder;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use Bio::AnalysisParserI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use Symbol();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 @ISA = qw( Bio::Root::IO Bio::Event::EventGeneratorI Bio::AnalysisParserI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Usage : my $obj = new Bio::SearchIO();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Function: Builds a new Bio::SearchIO object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Returns : Bio::SearchIO initialized with the correct format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Args : Args : -file => $filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 -format => format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 -fh => filehandle to attach to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 -result_factory => Object implementing Bio::Factory::ResultFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 -hit_factory => Object implementing Bio::Factory::HitFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 -writer => Object implementing Bio::SearchIO::SearchWriterI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 -output_format => output format, which will dynamically load writer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 See L<Bio::Factory::ResultFactoryI>, L<Bio::Factory::HitFactoryI>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 L<Bio::SearchIO::SearchWriterI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my($caller,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 # or do we want to call SUPER on an object if $caller is an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # object?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 if( $class =~ /Bio::SearchIO::(\S+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my ($self) = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 @param{ map { lc $_ } keys %param } = values %param; # lowercase keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 my $format = $param{'-format'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $class->_guess_format( $param{'-file'} || $ARGV[0] ) || 'blast';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my $output_format = $param{'-output_format'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my $writer = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 if( defined $output_format ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 if( defined $param{'-writer'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $dummy = Bio::Root::Root->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $dummy->throw("Both writer and output format specified - not good");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 if( $output_format =~ /^blast$/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $output_format = 'TextResultWriter';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my $output_module = "Bio::SearchIO::Writer::".$output_format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $class->_load_module($output_module);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $writer = $output_module->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 push(@args,"-writer",$writer);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # normalize capitalization to lower case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $format = "\L$format";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 return undef unless( $class->_load_format_module($format) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 return "Bio::SearchIO::${format}"->new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 =head2 newFh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Title : newFh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Usage : $fh = Bio::SearchIO->newFh(-file=>$filename,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 -format=>'Format')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Function: does a new() followed by an fh()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Example : $fh = Bio::SearchIO->newFh(-file=>$filename,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 -format=>'Format')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $result = <$fh>; # read a ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 print $fh $result; # write a ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Returns : filehandle tied to the Bio::SearchIO::Fh class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 sub newFh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 return unless my $self = $class->new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 return $self->fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 =head2 fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Title : fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Usage : $obj->fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Example : $fh = $obj->fh; # make a tied filehandle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $result = <$fh>; # read a ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 print $fh $result; # write a ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Returns : filehandle tied to the Bio::SearchIO::Fh class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 sub fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my $class = ref($self) || $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 my $s = Symbol::gensym;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 tie $$s,$class,$self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 return $s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =head2 attach_EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Title : attach_EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Usage : $parser->attatch_EventHandler($handler)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Function: Adds an event handler to listen for events
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Args : Bio::SearchIO::EventHandlerI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 See L<Bio::SearchIO::EventHandlerI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 sub attach_EventHandler{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my ($self,$handler) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 return if( ! $handler );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 if( ! $handler->isa('Bio::SearchIO::EventHandlerI') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 $self->warn("Ignoring request to attatch handler ".ref($handler). ' because it is not a Bio::SearchIO::EventHandlerI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->{'_handler'} = $handler;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =head2 _eventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Title : _eventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Usage : private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Function: Get the EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Returns : Bio::SearchIO::EventHandlerI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 See L<Bio::SearchIO::EventHandlerI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 sub _eventHandler{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 return $self->{'_handler'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 my($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 $self->{'_handler'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 # not really necessary unless we put more in RootI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 #$self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 # initialize the IO part
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $self->_initialize_io(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $self->attach_EventHandler(new Bio::SearchIO::SearchResultEventBuilder());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $self->{'_reporttype'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my ( $writer, $rfactory, $hfactory, $use_factories ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 $self->_rearrange([qw(WRITER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 RESULT_FACTORY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 HIT_FACTORY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 USE_FACTORIES)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $self->writer( $writer ) if $writer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 # TODO: Resolve this issue:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 # The $use_factories flag is a temporary hack to allow factory-based and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 # non-factory based SearchIO objects to co-exist.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 # steve --- Sat Dec 22 04:41:20 2001
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 if( $use_factories) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 if( not defined $self->{'_result_factory'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $self->result_factory( $rfactory || $self->default_result_factory_class->new );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 if( not defined $self->{'_hit_factory'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $self->hit_factory( $hfactory || $self->default_hit_factory_class->new );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =head2 next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Title : next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Usage : $result = stream->next_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Function: Reads the next ResultI object from the stream and returns it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Certain driver modules may encounter entries in the stream that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 are either misformatted or that use syntax not yet understood
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 by the driver. If such an incident is recoverable, e.g., by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 dismissing a feature of a feature table or some other non-mandatory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 part of an entry, the driver will issue a warning. In the case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 of a non-recoverable situation an exception will be thrown.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Do not assume that you can resume parsing the same stream after
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 catching the exception. Note that you can always turn recoverable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 errors into exceptions by calling $stream->verbose(2) (see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Bio::Root::RootI POD page).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Returns : A Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Args : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 See L<Bio::Root::RootI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 sub next_result {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $self->throw_not_implemented;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 =head2 write_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Title : write_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Usage : $stream->write_result($result_result, @other_args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Function: Writes data from the $result_result object into the stream.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 : Delegates to the to_string() method of the associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 : WriterI object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Args : Bio::Search:Result::ResultI object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 : plus any other arguments for the Writer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Throws : Bio::Root::Exception if a Writer has not been set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 See L<Bio::Root::Exception>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 sub write_result {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 my ($self, $result, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 if( not ref($self->{'_result_writer'}) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $self->throw("ResultWriter not defined.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $str = $self->writer->to_string( $result, @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 #print "Got string: \n$str\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $self->_print( "$str" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 =head2 writer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 Title : writer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Usage : $writer = $stream->writer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Function: Sets/Gets a SearchWriterI object to be used for this searchIO.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Args : Bio::SearchIO::SearchWriterI object (when setting)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Throws : Bio::Root::Exception if a non-Bio::SearchIO::SearchWriterI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 is passed in.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 sub writer {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 my ($self, $writer) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 if( ref($writer) and $writer->isa( 'Bio::SearchIO::SearchWriterI' )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $self->{'_result_writer'} = $writer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 elsif( defined $writer ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $self->throw("Can't set ResultWriter. Not a Bio::SearchIO::SearchWriterI: $writer");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 return $self->{'_result_writer'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 =head2 hit_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 Title : hit_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Usage : $hit_factory = $stream->hit_factory; (get)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 : $stream->hit_factory( $factory ); (set)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Function: Sets/Gets a factory object to create hit objects for this SearchIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Returns : Bio::Factory::HitFactoryI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Args : Bio::Factory::HitFactoryI object (when setting)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Throws : Bio::Root::Exception if a non-Bio::Factory::HitFactoryI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 is passed in.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Comments: A SearchIO implementation should provide a default hit factory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 See L<Bio::Factory::HitFactoryI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 sub hit_factory {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 my ($self, $fact) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 if( ref $fact and $fact->isa( 'Bio::Factory::HitFactoryI' )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $self->{'_hit_factory'} = $fact;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 elsif( defined $fact ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 $self->throw("Can't set HitFactory. Not a Bio::Factory::HitFactoryI: $fact");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 return $self->{'_hit_factory'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 =head2 result_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Title : result_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Usage : $result_factory = $stream->result_factory; (get)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 : $stream->result_factory( $factory ); (set)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 Function: Sets/Gets a factory object to create result objects for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 SearchIO.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Returns : Bio::Factory::ResultFactoryI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Args : Bio::Factory::ResultFactoryI object (when setting)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Throws : Bio::Root::Exception if a non-Bio::Factory::ResultFactoryI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 is passed in.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Comments: A SearchIO implementation should provide a default result factory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 See L<Bio::Factory::ResultFactoryI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 sub result_factory {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my ($self, $fact) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 if( ref $fact and $fact->isa( 'Bio::Factory::ResultFactoryI' )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $self->{'_result_factory'} = $fact;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 elsif( defined $fact ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 $self->throw("Can't set ResultFactory. Not a Bio::Factory::ResultFactoryI: $fact");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 return $self->{'_result_factory'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 =head2 result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Title : result_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Usage : $num = $stream->result_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Function: Gets the number of Blast results that have been parsed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Throws : none
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 result_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $self->throw_not_implemented;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 =head2 default_hit_factory_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Title : default_hit_factory_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 Usage : $res_factory = $obj->default_hit_factory_class()->new( @args )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 Function: Returns the name of the default class to be used for creating
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 Bio::Search::Hit::HitI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 Returns : A string containing the name of a class that implements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 the Bio::Search::Hit::HitI interface.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 Comments: Bio::SearchIO does not implement this method. It throws a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 NotImplemented exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 See L<Bio::Search::Hit::HitI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 sub default_hit_factory_class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 # TODO: Uncomment this when Jason's SearchIO code conforms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 # $self->throw_not_implemented;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 =head2 _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Title : _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Usage : *INTERNAL SearchIO stuff*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 Function: Loads up (like use) a module at run time on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 sub _load_format_module {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my ($self,$format) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 my $module = "Bio::SearchIO::" . $format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 my $ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 $ok = $self->_load_module($module);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 if ( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 print STDERR <<END;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $self: $format cannot be found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Exception $@
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 For more information about the SearchIO system please see the SearchIO docs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 This includes ways of checking for formats at compile time, not run time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 return $ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 =head2 _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 Title : _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Usage : $obj->_guess_format($filename)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Returns : guessed format of filename (lower case)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 sub _guess_format {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 return unless $_ = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 return 'blast' if (/blast/i or /\.bl\w$/i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 return 'fasta' if (/fasta/i or /\.fas$/i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 return 'blastxml' if (/blast/i and /\.xml$/i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 return 'exonerate' if ( /\.exonerate/i or /\.exon/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 sub close {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 if( $self->writer ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $self->_print($self->writer->end_report());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $self->SUPER::close(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $self->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 sub TIEHANDLE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 return bless {processor => shift}, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 sub READLINE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 return $self->{'processor'}->next_result() unless wantarray;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 my (@list, $obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 push @list, $obj while $obj = $self->{'processor'}->next_result();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 return @list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 sub PRINT {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $self->{'processor'}->write_result(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 __END__