annotate variant_effect_predictor/Bio/Tools/BPbl2seq.pm @ 0:2bc9b66ada89 draft default tip

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