annotate variant_effect_predictor/Bio/Tools/BPbl2seq.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: BPbl2seq.pm,v 1.21.2.2 2003/06/03 14:38:18 jason Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # Bioperl module Bio::Tools::BPbl2seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 # based closely on the Bio::Tools::BPlite modules
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Ian Korf (ikorf@sapiens.wustl.edu, http://sapiens.wustl.edu/~ikorf),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 # Lorenz Pollak (lorenz@ist.org, bioperl port)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # Copyright Peter Schattner
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 # _history
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 # October 20, 2000
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 # May 29, 2001
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 # Fixed bug which prevented reading of more than one HSP / hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 # This fix required changing calling syntax as described below. (PS)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 Bio::Tools::BPbl2seq - Lightweight BLAST parser for pair-wise sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 alignment using the BLAST algorithm.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 use Bio::Tools::BPbl2seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 my $report = Bio::Tools::BPbl2seq->new(-file => 't/bl2seq.out');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 $report->sbjctName;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 $report->sbjctLength;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 while(my $hsp = $report->next_feature) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 $hsp->score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 $hsp->bits;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 $hsp->percent;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 $hsp->P;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 $hsp->match;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 $hsp->positive;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 $hsp->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 $hsp->querySeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 $hsp->sbjctSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 $hsp->homologySeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 $hsp->query->start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 $hsp->query->end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 $hsp->sbjct->start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 $hsp->sbjct->end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 $hsp->sbjct->seq_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 $hsp->sbjct->overlaps($exon);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 BPbl2seq is a package for parsing BLAST bl2seq reports. BLAST bl2seq is a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 program for comparing and aligning two sequences using BLAST. Although
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 the report format is similar to that of a conventional BLAST, there are a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 few differences so that BPlite is unable to read bl2seq reports directly.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 From the user's perspective, one difference between bl2seq and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 other blast reports is that the bl2seq report does not print out the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 name of the first of the two aligned sequences. (The second sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 name is given in the report as the name of the "hit"). Consequently,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 BPbl2seq has no way of identifying the name of the initial sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 unless it is passed to constructor as a second argument as in:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 my $report = Bio::Tools::BPbl2seq->new(\*FH, "ALEU_HORVU");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 If the name of the first sequence (the "query") is not passed to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 BPbl2seq.pm in this manner, the name of the first sequence will be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 left as "unknown". (Note that to preserve a common interface with the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 other BLAST programs the two sequences being compared are referred to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 in bl2seq as "query" and "subject" although this is perhaps a bit
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 misleading when simply comparing 2 sequences as opposed to querying a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 database.)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 In addition, since there will only be (at most) one "subject" (hit) in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 a bl2seq report, one should use the method $report-E<gt>next_feature,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 rather than $report-E<gt>nextSbjct-E<gt>nextHSP to obtain the next
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 high scoring pair.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 One should note that the previous (0.7) version of BPbl2seq used
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 slightly different syntax. That version had a bug and consequently the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 old syntax has been eliminated. Attempts to use the old syntax will
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 return error messages explaining the (minor) recoding required to use
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 the current syntax.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 Bioperl modules. Send your comments and suggestions preferably to one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 of the Bioperl mailing lists. Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 the bugs and their resolution. Bug reports can be submitted via
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 email or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 =head1 AUTHOR - Peter Schattner
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 Email: schattner@alum.mit.edu
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 =head1 ACKNOWLEDGEMENTS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 Based on work of:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 Ian Korf (ikorf@sapiens.wustl.edu, http://sapiens.wustl.edu/~ikorf),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 Lorenz Pollak (lorenz@ist.org, bioperl port)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 =head1 CONTRIBUTORS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 Jason Stajich, jason@cgt.mc.duke.edu
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 #'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 package Bio::Tools::BPbl2seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 use Bio::Tools::BPlite;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 use Bio::Root::Root;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 use Bio::Root::IO;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 use Bio::Tools::BPlite::Sbjct; # we want to use Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 use Bio::SeqAnalysisParserI;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 use Symbol;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 @ISA = qw(Bio::Root::Root Bio::SeqAnalysisParserI Bio::Root::IO);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 #@ISA = qw(Bio::Tools::BPlite);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 Title : new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 Function: Create a new Bio::Tools::BPbl2seq object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 Returns : Bio::Tools::BPbl2seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 Args : -file input file (alternative to -fh)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 -fh input stream (alternative to -file)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 -queryname name of query sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 my ($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 my $self = $class->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 # initialize IO
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 $self->_initialize_io(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 my ($queryname,$rt) = $self->_rearrange([qw(QUERYNAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 REPORT_TYPE)], @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 $queryname = 'unknown' if( ! defined $queryname );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 if( $rt && $rt =~ /BLAST/i ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 $self->{'BLAST_TYPE'} = uc($rt);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 $self->warn("Must provide which type of BLAST was run (blastp,blastn, tblastn, tblastx, blastx) if you want strand information to get set properly for DNA query or subjects");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 my $sbjct = $self->getSbjct();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 $self->{'_current_sbjct'} = $sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 $self->{'_query'}->{'NAME'} = $queryname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 =head2 getSbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Title :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Usage : $sbjct = $obj->getSbjct();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 Function : Method of obtaining single "subject" of a bl2seq report
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 Example : my $sbjct = $obj->getSbjct ) {}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 Returns : Sbjct object or null if finished
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 sub getSbjct {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 # $self->_fastForward or return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 #######################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 # get bl2seq "sbjct" name and length #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 #######################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 my $length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 my $def;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 READLOOP: while(defined ($_ = $self->_readline) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 if ($_ =~ /^>(.+)$/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 $def = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 next READLOOP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 elsif ($_ =~ /^\s*Length\s.+\D(\d+)/i) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 $length = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 next READLOOP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 elsif ($_ =~ /^\s{0,2}Score/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 $self->_pushback($_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 last READLOOP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 return undef if ! defined $def;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 $def =~ s/\s+/ /g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 $def =~ s/\s+$//g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 ####################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 # the Sbjct object #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 ####################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 my $sbjct = new Bio::Tools::BPlite::Sbjct('-name'=>$def,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 '-length'=>$length,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 '-parent'=>$self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 return $sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 =head2 next_feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 Title : next_feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 Usage : while( my $feat = $res->next_feature ) { # do something }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 Function: calls next_feature function from BPlite.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 Returns : A Bio::SeqFeatureI compliant object, in this case a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 Bio::Tools::BPlite::HSP object, and FALSE if there are no more
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Args : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 sub next_feature{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 my ($sbjct, $hsp);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 $sbjct = $self->{'_current_sbjct'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 unless( defined $sbjct ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 $self->debug(" No hit object found for bl2seq report \n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 $hsp = $sbjct->nextHSP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 return $hsp || undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 =head2 queryName
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 Title :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Usage : $name = $report->queryName();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 Function : get /set the name of the query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Returns : name of the query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 sub queryName {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 my ($self, $queryname) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 if( $queryname ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 $self->{'_query'}->{'NAME'} = $queryname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 $self->{'_query'}->{'NAME'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 =head2 sbjctName
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 Title :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 Usage : $name = $report->sbjctName();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 Function : returns the name of the Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 Returns : name of the Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 sub sbjctName {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 # unless( defined $self->{'_current_sbjct'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 # my $sbjct = $self->{'_current_sbjct'} = $self->nextSbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 # return undef unless defined $sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 $self->{'_current_sbjct'}->{'NAME'} || '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 =head2 sbjctLength
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 Title : sbjctLength
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 Usage : $length = $report->sbjctLength();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 Function : returns the length of the Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 Returns : name of the Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 sub sbjctLength {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 # unless( defined $self->{'_current_sbjct'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 # my $sbjct = $self->{'_current_sbjct'} = $self->nextSbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 # return undef unless defined $sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 $self->{'_current_sbjct'}->{'LENGTH'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 =head2 P
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 Title : P
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 Usage :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 sub P {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 =head2 percent
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 Title : percent
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 Usage : $hsp->percent();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 sub percent {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 =head2 match
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 Title : match
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 Usage : $hsp->match();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 sub match {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 =head2 positive
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 Title : positive
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 Usage : $hsp->positive();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 sub positive {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 =head2 querySeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 Title : querySeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 Usage : $hsp->querySeq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 sub querySeq {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 =head2 sbjctSeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 Title : sbjctSeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 Usage : $hsp->sbjctSeq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 sub sbjctSeq {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 =head2 homologySeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 Title : homologySeq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 Usage : $hsp->homologySeq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 sub homologySeq {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 =head2 qs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 Title : qs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 Usage : $hsp->qs();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 sub qs {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 =head2 ss
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 Title : ss
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 Usage : $hsp->ss();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 sub ss {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 =head2 hs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 Title : hs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 Usage : $hsp->hs();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Function : Syntax no longer supported, error message only
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 sub hs {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 $self->throw("Syntax used is no longer supported.\n See BPbl2seq.pm documentation for current syntax.\n ") ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 sub _fastForward {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 return 0 if $self->{'REPORT_DONE'}; # empty report
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 while(defined( $_ = $self->_readline() ) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 if ($_ =~ /^>|^Parameters|^\s+Database:|^\s+Posted date:|^\s*Lambda/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 $self->_pushback($_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 $self->warn("Possible error (1) while parsing BLAST report!");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 __END__