annotate variant_effect_predictor/Bio/Tools/Blast/Sbjct.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 #------------------------------------------------------------------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 # PACKAGE : Bio::Tools::Blast::Sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # AUTHOR : Steve Chervitz (sac@bioperl.org)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 # CREATED : 7 October 1996
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # STATUS : Alpha
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 # REVISION: $Id: Sbjct.pm,v 1.20 2002/10/22 07:38:48 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 # For the latest version and documentation, visit the distribution site:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # http://genome-www.stanford.edu/perlOOP/bioperl/blast/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # To generate documentation, run this module through pod2html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 # (preferably from Perl v5.004 or better).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 # Copyright (c) 1996-2000 Steve Chervitz. All Rights Reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 # This module is free software; you can redistribute it and/or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 # modify it under the same terms as Perl itself.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 #------------------------------------------------------------------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 package Bio::Tools::Blast::Sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 use Bio::Root::Global qw(:devel);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 use Bio::Root::Object ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 @ISA = qw( Bio::Root::Object Exporter );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 use vars qw($ID %SUMMARY_OFFSET $Revision);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 $ID = 'Bio::Tools::Blast::Sbjct';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 $Revision = '$Id: Sbjct.pm,v 1.20 2002/10/22 07:38:48 lapp Exp $'; #'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 my $_prog = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 my $_signif_fmt = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 ## POD Documentation:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 Bio::Tools::Blast::Sbjct - Bioperl BLAST "Hit" object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 =head2 Object Creation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 The construction of HSP objects is handled by B<Bio::Tools::Blast>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 You should not need to use this package directly. See L<_initialize()|_initialize>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 for a description of constructor parameters.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 require Bio::Tools::Blast::Sbjct;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 $hit = new Bio::Tools::Blast::Sbjct (-DATA =>\@hitData,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 -PARENT =>$self,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 -NAME =>5,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 -RANK =>5,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 -RANK_BY =>'order',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 -MAKE =>'query' (or 'sbjct'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 -OVERLAP =>2,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 -PROGRAM =>'TBLASTN'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 @hitData includes the summary line for the hit as element [0], plus
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 all lines from the HSP alignment section of the BLAST report for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 the present hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 =head1 INSTALLATION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 This module is included with the central Bioperl distribution:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 http://bio.perl.org/Core/Latest
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 ftp://bio.perl.org/pub/DIST
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 Follow the installation instructions included in the README file.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 The Bio::Tools::Blast::Sbjct.pm module encapsulates data and methods for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 parsing and manipulating "hits" from a BLAST report.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 This module is a utility module used by the Bio::Tools::Blast.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 and is not intended for separate use.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 In Blast lingo, the "sbjct" sequences are all the sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 in a target database which were compared against a "query" sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 The terms "sbjct" and "hit" will be used interchangeably in this and related modules.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 This module supports BLAST versions 1.x and 2.x, gapped and ungapped.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 =head2 HSP Tiling and Ambiguous Alignments
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 If a Blast hit has more than one HSP, the Bio::Tools::Blast::Sbjct.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 object has the ability to merge overlapping HSPs into contiguous
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 blocks. This permits the Sbjct object to sum data across all HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 without counting data in the overlapping regions multiple times, which
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 would happen if data from each overlapping HSP are simply summed. HSP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 tiling is performed automatically when methods of the Sbjct object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 that rely on tiled data are invoked. These include
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 L<frac_identical()|frac_identical>, L<frac_conserved()|frac_conserved>, L<gaps()|gaps>,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 L<frac_aligned_query()|frac_aligned_query>, L<frac_aligned_hit()|frac_aligned_hit>,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 L<num_unaligned_query()|num_unaligned_query>, L<num_unaligned_hit()|num_unaligned_hit>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 It also permits the assessment of an "ambiguous alignment" if the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 query (or sbjct) sequences from different HSPs overlap. The existence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 of an overlap could indicate a biologically interesting region in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 sequence, such as a repeated domain. The Sbjct object uses the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 -OVERLAP parameter to determine when two sequences overlap; if this is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 set to 2 -- the default -- then any two sbjct or query HSP sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 must overlap by more than two residues to get merged into the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 contig and counted as an overlap. See the L<BUGS | BUGS> section below for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 "issues" with HSP tiling.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 The results of the HSP tiling is reported with the following ambiguity codes:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 'q' = Query sequence contains multiple sub-sequences matching
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 a single region in the sbjct sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 's' = Sbjct sequence contains multiple sub-sequences matching
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 a single region in the query sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 'qs' = Both query and sbjct sequences contain more than one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 sub-sequence with similarity to the other sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 For addition information about ambiguous BLAST alignments, see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 L<_tile_hsps()|_tile_hsps> and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 http://www-genome.stanford.edu/Sacch3D/help/ambig_aln.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 =head1 DEPENDENCIES
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Bio::Tools::Blast::Sbjct.pm is a concrete class that inherits from B<Bio::Root::Object>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 and relies on two other modules:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 =over 4
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 =item B<Bio::Tools::Blast::HSP>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 Encapsulates a single high-scoring segment pair within a hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 =item B<Bio::Tools::Blast>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 Provides a container for Sbjct.pm objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 =back
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 Bio::Tools::Blast::Sbjct.pm does not currently inherit from
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 Bio::Root::Vector.pm since Bio::Root::Vector.pm may be re-designed to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 make it usable via delegation. Thus, a Blast.pm object would manage a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 vector of Sbjct.pm objects. Stay tuned.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 =head1 BUGS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 One consequence of the HSP tiling is that methods that rely on HSP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 tiling such as L<frac_identical()|frac_identical>, L<frac_conserved()|frac_conserved>, L<gaps()|gaps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 etc. may report misleading numbers when C<-OVERLAP> is set to a large
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 number. For example, say we have two HSPs and the query sequence tile
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 as follows:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 1 8 22 30 40 60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 Full seq: ------------------------------------------------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 * ** * **
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 HSP1: --------------- (6 identical matches)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 ** ** **
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 HSP2: ------------- (6 identical matches)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 If C<-OVERLAP> is set to some number over 4, HSP1 and HSP2 will not be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 tiled into a single contig and their numbers of identical matches will
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 be added, giving a total of 12, not 10 if they had be combined into
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 one contig. This can lead to number greater than 1.0 for methods
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 L<frac_identical()|frac_identical> and L<frac_conserved()|frac_conserved>. This is less of an issue
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 with gapped Blast since it tends to combine HSPs that would be listed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 separately without gapping. (Fractions E<gt>1.0 can be viewed as a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 signal for an interesting alignment that warrants further inspection,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 thus turning this bug into a feature).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 Using large values for C<-OVERLAP> can lead to incorrect numbers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 reported by methods that rely on HSP tiling but can be useful if you
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 care more about detecting ambiguous alignments. Setting C<-OVERLAP>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 to zero will lead to the most accurate numbers for the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 tiling-dependent methods but will be useless for detecting overlapping
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 HSPs since all HSPs will appear to overlap.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 =head1 SEE ALSO
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Bio::Tools::Blast::HSP.pm - Blast HSP object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Bio::Tools::Blast.pm - Blast object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Bio::Root::Object.pm - Proposed base class for all Bioperl objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Links:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 http://bio.perl.org/Core/POD/Tools/Blast/HSP.pm.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 http://bio.perl.org/Projects/modules.html - Online module documentation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 http://bio.perl.org/Projects/Blast/ - Bioperl Blast Project
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 http://bio.perl.org/ - Bioperl Project Homepage
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 Bioperl modules. Send your comments and suggestions preferably to one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 of the Bioperl mailing lists. Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 the bugs and their resolution. Bug reports can be submitted via email
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 =head1 AUTHOR
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 Steve Chervitz, sac@bioperl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 See the L<FEEDBACK | FEEDBACK> section for where to send bug reports and comments.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 =head1 COPYRIGHT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Copyright (c) 1996-2000 Steve Chervitz. All Rights Reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 This module is free software; you can redistribute it and/or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 modify it under the same terms as Perl itself.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 ###
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 #### END of main POD documentation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 ###
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 #'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Methods beginning with a leading underscore are considered private
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 and are intended for internal use by this module. They are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 B<not> considered part of the public interface and are described here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 for documentation purposes only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 ## CONSTRUCTOR ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 =head2 _initialize
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 Usage : n/a; automatically called by Bio::Root::Object::new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 : Bio::Tools::Blast::Sbjct.pm objects are constructed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 : automatically by Bio::Tools::Blast.pm, so there is no need
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 : for direct consumption.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 Purpose : Initializes key varaiables and calls methods to parse a single Blast hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 : Constructs Bio::Tools::Blast::HSP.pm objects for each
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 : high-scoring segment pair (HSP).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 : Calls superclass constructor first (Bio::Root::Object.pm).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 Returns : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 Argument : Named Parameters passed from new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 : ALL TAGS MUST BE UPPERCASE (does not call _rearrange()).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 : -DATA => array reference holding all data for a single hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 : The first element should hold the description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 : line (from the desctiption section at the top of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 : the report), remaining lines should hold all lines
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 : within the HSP alignment listing section of report.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 : -PARENT => object reference to a Bio::Tools::Blast.pm object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 : -NAME => string (typically same as -RANK, just a temporary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 : name to use until the actual name of hit is parsed),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 : -RANK => integer,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 : -RANK_BY => 'order',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 : -OVERLAP => integer (maximum overlap between adjacent
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 : HSPs when tiling)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 : -PROGRAM => string (type of Blast blastp, blastn, etc).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 See Also : L<_set_id()|_set_id>, L<_set_hsps()|_set_hsps>, L<_tile_hsps()|_tile_hsps>, B<Bio::Root::Object::new()>, B<Bio::Tools::Blast::_set_hit_db()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 sub _initialize {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 my( $self, %param ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 # $make not currently used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 my $make = $self->SUPER::_initialize( %param );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 # Set various class data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 $_prog = $param{-PROGRAM} || '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 $_signif_fmt = $param{-SIGNIF_FMT};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 $self->{'_rank'} = $param{-RANK} || '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 $self->_set_id( $param{-DATA}->[0]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 $self->_set_hsps( @{$param{-DATA}} );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 $self->{'_overlap'} = $param{-OVERLAP} || 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 sub destroy {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 my $self=shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 if($self->{'_hsps'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 foreach($self->hsps) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 $_->destroy;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 undef $_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 undef $self->{'_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 $DEBUG==2 && print STDERR "DESTROYING $self ${\$self->name}";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 $self->SUPER::destroy;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 ## ACCESSORS ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 =head2 rank
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 Usage : $sbjct->rank( integer or string );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 Purpose : Sets/Gets the rank of the current Sbjct object relative to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 : other Sbjct objects managed by a given Blast object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 Example : $sbjct->rank(1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 Returns : The current rank value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 Argument : Integer or string to be used for ranking the hit
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 : relative to other hits.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 Comments : The rank usually corresponds to the order the listing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 : of hits in the BLAST report from lowest to highest p-value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 : Rank need not be restricted to this value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 : rank() may be provided by a delegated or inherited
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 : iterator class in the future (such as Bio::Root::Vector.pm).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 sub rank {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 if(@_) {$self->{'_rank'} = shift; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 $self->{'_rank'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 =head2 _set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 Usage : n/a; automatically called by _initialize()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 Purpose : Sets the name of the Sbjct sequence from the BLAST summary line.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 : The identifier is assumed to be the first
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 : chunk of non-whitespace characters in the description line
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 : Does not assume any semantics in the structure of the identifier
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 : (Formerly, this method attempted to extract database name from
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 : the seq identifiers, but this was prone to break).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 Returns : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 Argument : String containing description line of the hit from Blast report
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 : or first line of an alignment section.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 Throws : Warning if cannot locate sequence ID.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 See Also : L<_initialize()|_initialize>, B<Bio::Tools::Blast::database()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 sub _set_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 my( $self, $desc ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 my ($seqID1, $seqID2, $dbID, @seqDat);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 local $_ = $desc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 my @linedat = split();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 my $data = $linedat[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 # New strategy: Assume only that the ID is the first white space
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 # delimited chunk. Not attempting to extract database name.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 # Clients will have to interpret it as necessary.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 if($data =~ /^(\S+)\s*/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 $self->name($1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 $self->warn("Can't locate sequence identifier in summary line.", "Line = $data");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 $data = 'Unknown sequence ID' if not $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 $self->name($data);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 $self->{'_db'} = '-';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 # Old strategy: assumes semantics in the identifier
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 # and tries to separate out database and id components.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 # Too fancy and fragile! SAC, 2000-02-18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 # # Proceeding from more standard (NCBI-like) to less standard.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 # if($data =~ /(\S+?)[:\|]+(\S+?)[:\|]+(\S*)/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 # # matches: database|id1|id2 or database||id1||id2 or database:id1:id2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 # $dbID = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 # $seqID1 = $2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 # $seqID2 = $3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 # if($seqID2 eq $seqID1) { undef($seqID2); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 # } elsif($data =~ /(\S+?)[:\|]+(\S+)/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 # # matches: database|id1 or database:id1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 # $dbID = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 # $seqID1 = $2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 # } elsif($data =~ /^(\S+)\s+([gb|emb|dbj|sp|pir])\s+(\S+)*/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 # # matches: id1 database id2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 # $seqID1 = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 # $dbID = $2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 # $seqID2 = $3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 # } elsif($data =~ /^(\S+)\s*/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 # $seqID1 = $1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 # ## Combine the multiple IDs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 # $seqID2 = scalar($seqID2) ? "/$seqID2" : '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 # if( !scalar $seqID1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 # $self->warn("Can't locate sequence identifier in summary line.", "Line = $data");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 # $self->name('Unknown sequence ID');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 # } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 # $self->name($seqID1.$seqID2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 # $self->{'_db'} = $dbID || '-';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 =head2 _set_hsps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 Usage : n/a; called automatically during object construction.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 Purpose : Creates HSP.pm objects for each HSP in a BLAST hit alignment.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 : Also collects the full description of the hit from the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 : HSP alignment section.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 Returns : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 Argument : List of strings containing raw BLAST report data for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 : a single hit's HSP alignment data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 Throws : Warnings for each HSP.pm object that fails to be constructed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 : Exception if no HSP.pm objects can be constructed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 : Exception if can't parse length data for hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 Comments : Requires Bio::Tools::Blast::HSP.pm.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 : Sets the description using the full string present in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 : the alignment data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 : Also sets Expect and P-values for the Sbjct object by
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 : copying from the HSP object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455 : While this sacrifices some memory efficiency, it
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 : improves access speed for these critical data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 See Also : L<_initialize()|_initialize>, L<_set_desc()|_set_desc>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 sub _set_hsps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 my( $self, @data ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467 my $start = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 my $hspCount = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 require Bio::Tools::Blast::HSP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 # printf STDERR "$ID _set_hsps(). DATA (%d lines) =\n@data\n", scalar(@data); <STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 my( @hspData, @hspList, @errs, @bad_names );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475 my($line, $set_desc, @desc);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 $set_desc = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478 hit_loop:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 foreach $line( @data ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 if( $line =~ /^\s*Length = ([\d,]+)/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 $self->_set_desc(@desc);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 $set_desc = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 ($self->{'_length'} = $1) =~ s/,//g; # get rid of commas
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485 next hit_loop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 } elsif( !$set_desc) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487 $line =~ s/^\s+|\s+$//g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 push @desc, $line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 next hit_loop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 } elsif( $line =~ /^\s*Score/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491 ## This block is for setting multiple HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493 if( not scalar @hspData ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494 $start = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 push @hspData, $line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496 next hit_loop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498 } elsif( scalar @hspData) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 $hspCount++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 $DEBUG and do{ print STDERR +( $hspCount % 10 ? "+" : "+\n" ); };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 # print STDERR "\n$ID: setting HSP: ${\$self->name}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 my $hspObj = eval { new Bio::Tools::Blast::HSP(-DATA =>\@hspData,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504 -PARENT =>$self,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505 -NAME =>$hspCount,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506 -PROGRAM =>$_prog,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 if($@) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 # print "$ID: ERROR:\n$@";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511 push @errs, $@;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 push @bad_names, "#$hspCount";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 $hspObj->destroy if ref $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 undef $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 push @hspList, $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 if (!defined($self->{'_expect'}) || $hspObj->expect() < $self->{'_expect'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 $self->{'_expect'} = $hspObj->expect();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 if (!defined($self->{'_p'}) || $hspObj->p() < $self->{'_p'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 $self->{'_p'} = $hspObj->p();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 @hspData = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 push @hspData, $line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526 next;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528 push @hspData, $line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530 } elsif( $start ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531 ## This block is for setting the last HSP (which may be the first as well!).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 if( $line =~ /^(end|>|Parameters|CPU|Database:)/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533 $hspCount++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 $DEBUG and do{ print STDERR +( $hspCount % 10 ? "+" : "+\n" ); };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 # print STDERR "\n$ID: setting HSP: ${\$self->name}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 my $hspObj = eval { new Bio::Tools::Blast::HSP(-DATA =>\@hspData,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 -PARENT =>$self,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 -NAME =>$hspCount,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 -PROGRAM =>$_prog,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 if($@) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545 # print "$ID: ERROR:\n$@";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 push @errs, $@;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 push @bad_names, "#$hspCount";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 $hspObj->destroy if ref $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549 undef $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551 push @hspList, $hspObj;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552 if (!defined($self->{'_expect'}) || $hspObj->expect() < $self->{'_expect'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553 $self->{'_expect'} = $hspObj->expect();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 if (!defined($self->{'_p'}) || $hspObj->p() < $self->{'_p'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556 $self->{'_p'} = $hspObj->p();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 push @hspData, $line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565 # print STDERR "\n--------> Done building HSPs for ${\$self->name}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567 $self->{'_length'} or $self->throw( "Can't determine hit sequence length.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
569 # Adjust logical length based on BLAST flavor.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
570 if($_prog =~ /TBLAST[NX]/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
571 $self->{'_logical_length'} = $self->{'_length'} / 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
572 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
573
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
574 # Handling errors as done in Blast.pm. (as of version 0.073)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
575
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
576 if(@errs) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
577 my ($str);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
578 # When there are many errors, in most of the cases, they are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
579 # caused by the same problem. Only need to see full data for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
580 # the first one.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
581 if(@errs > 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
582 $str = "SHOWING FIRST EXCEPTION ONLY:\n$errs[0]";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
583 $self->clear_err(); # clearing the existing set of errors.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
584 # Not necessary, unless the -RECORD_ERR =>1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
585 # constructor option was used for Blast object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
586 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
587 $str = join("\n",@errs);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
588 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
589
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
590 if( not scalar @hspList) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
591 $self->throw("Failed to create any HSP objects for $hspCount potential HSP(s).",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
592 "\n\nTRAPPED EXCEPTION(S):\n$str\nEND TRAPPED EXCEPTION(S)\n"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
593 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
594 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
595 $self->warn(sprintf("Could not create HSP objects for %d HSP(s): %s", scalar(@errs), join(', ',@bad_names)),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
596 "\n\nTRAPPED EXCEPTION(S):\n$str\nEND TRAPPED EXCEPTION(S)\n"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
597 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
598 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
599
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
600 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
601 $self->{'_hsps'} = \@hspList;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
602 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
603 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
604
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
605 =head2 _set_desc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
606
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
607 Usage : n/a; called automatically by _set_hsps()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
608 Purpose : Sets the description of the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
609 : For sequence without descriptions, sets description to "-".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
610 Argument : Array containing description (multiple lines).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
611 Comments : _set_hsps() calls this method with the data from the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
612 : HSP alignment listing, which contains the complete description.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
613 : (Formerly, this was called from the _set_desc_data() method initially.)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
614
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
615 See Also : _set_hsps()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
616
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
617 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
618
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
619 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
620 sub _set_desc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
621 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
622 my( $self, @desc ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
623 my( $desc);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
624
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
625 # print "$ID: RAW DESC:\n@desc";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
626
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
627 $desc = join(" ", @desc);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
628
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
629 if($desc) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
630 $desc =~ s/^\s*\S+\s+//; # remove the sequence ID(s)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
631 $desc =~ s/^[\s!]+//;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
632 $desc =~ s/ \d+$//;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
633 $desc =~ s/\.+$//;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
634 $self->{'_desc'} = $desc || '-';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
635 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
636 $self->{'_desc'} = '-';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
637 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
638
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
639 # print "$ID: _set_desc = $desc";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
640 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
641
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
642
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
643 =head2 _tile_hsps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
644
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
645 Usage : n/a; called automatically during object construction or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
646 : as needed by methods that rely on having tiled data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
647 Purpose : Collect statistics about the aligned sequences in a set of HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
648 : Calculates the following data across all HSPs:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
649 : -- total alignment length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
650 : -- total identical residues
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
651 : -- total conserved residues
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
652 Returns : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
653 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
654 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
655 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
656 Comments :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
657 : This method performs more careful summing of data across
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
658 : all HSPs in the Sbjct object. Simply summing the data from all HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
659 : will overestimate the actual length of the alignment if there is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
660 : overlap between different HSPs (often the case).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
661 : The strategy is to tile the HSPs and sum over the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
662 : contigs, collecting data separately from overlapping and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
663 : non-overlapping regions of each HSP. To facilitate this, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
664 : HSP.pm object now permits extraction of data from sub-sections
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
665 : of an HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
666 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
667 : Additional useful information is collected from the results
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
668 : of the tiling. It is possible that sub-sequences in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
669 : different HSPs will overlap significantly. In this case, it
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
670 : is impossible to create a single unambiguous alignment by
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
671 : concatenating the HSPs. The ambiguity may indicate the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
672 : presence of multiple, similar domains in one or both of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
673 : aligned sequences. This ambiguity is recorded using the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
674 : ambiguous_aln() method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
675 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
676 : This method does not attempt to discern biologically
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
677 : significant vs. insignificant overlaps. The allowable amount of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
678 : overlap can be set with the overlap() method or with the -OVERLAP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
679 : parameter used when constructing the Blast & Sbjct objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
680 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
681 : For a given hit, both the query and the sbjct sequences are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
682 : tiled independently.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
683 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
684 : -- If only query sequence HSPs overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
685 : this may suggest multiple domains in the sbjct.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
686 : -- If only sbjct sequence HSPs overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
687 : this may suggest multiple domains in the query.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
688 : -- If both query & sbjct sequence HSPs overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
689 : this suggests multiple domains in both.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
690 : -- If neither query & sbjct sequence HSPs overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
691 : this suggests either no multiple domains in either
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
692 : sequence OR that both sequences have the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
693 : distribution of multiple similar domains.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
694 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
695 : This method can deal with the special case of when multiple
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
696 : HSPs exactly overlap.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
697 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
698 : Efficiency concerns:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
699 : Speed will be an issue for sequences with numerous HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
700 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
701 Bugs : Currently, _tile_hsps() does not properly account for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
702 : the number of non-tiled but overlapping HSPs, which becomes a problem
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
703 : as overlap() grows. Large values overlap() may thus lead to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
704 : incorrect statistics for some hits. For best results, keep overlap()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
705 : below 5 (DEFAULT IS 2). For more about this, see the "HSP Tiling and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
706 : Ambiguous Alignments" section.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
707
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
708 See Also : L<_adjust_contigs()|_adjust_contigs>, L<ambiguous_aln()|ambiguous_aln>, L<overlap()|overlap>, L<frac_identical()|frac_identical>, L<frac_conserved()|frac_conserved>, L<frac_aligned_query()|frac_aligned_query>, L<frac_aligned_hit()|frac_aligned_hit>, L<num_unaligned_query()|num_unaligned_query>, L<num_unaligned_hit()|num_unaligned_hit>, L<HSP Tiling and Ambiguous Alignments>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
709
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
710 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
711
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
712 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
713 sub _tile_hsps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
714 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
715 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
716 # my $gapped = $self->parent->gapped || 0; # no special treatment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
717
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
718 $self->{'_tile_hsps'} = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
719 $self->{'_gaps_query'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
720 $self->{'_gaps_sbjct'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
721
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
722 ## Simple summation scheme. Valid if there is only one HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
723 if((defined($self->{'_n'}) and $self->{'_n'} == 1) or $self->num_hsps == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
724 my $hsp = $self->hsp;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
725 $self->{'_length_aln_query'} = $hsp->length('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
726 $self->{'_length_aln_sbjct'} = $hsp->length('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
727 $self->{'_length_aln_total'} = $hsp->length('total');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
728 ($self->{'_totalIdentical'},$self->{'_totalConserved'}) = $hsp->matches();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
729 $self->{'_gaps_query'} = $hsp->gaps('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
730 $self->{'_gaps_sbjct'} = $hsp->gaps('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
731
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
732 # print "_tile_hsps(): single HSP, easy stats.\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
733 return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
734 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
735 # print STDERR "$ID: _tile_hsps: summing multiple HSPs\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
736 $self->{'_length_aln_query'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
737 $self->{'_length_aln_sbjct'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
738 $self->{'_length_aln_total'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
739 $self->{'_totalIdentical'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
740 $self->{'_totalConserved'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
741 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
742
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
743 ## More than one HSP. Must tile HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
744 # printf "\nTiling HSPs for %s (BLAST: %s)\n",$self->name, $self->parent->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
745 my($hsp, $qstart, $qstop, $sstart, $sstop);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
746 my(@qcontigs, @scontigs);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
747 my $qoverlap = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
748 my $soverlap = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
749 my $max_overlap = $self->{'_overlap'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
750
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
751 foreach $hsp ($self->hsps()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
752 # printf " HSP: %s\n%s\n",$hsp->name, $hsp->str('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
753 # printf " Length = %d; Identical = %d; Conserved = %d; Conserved(1-10): %d",$hsp->length, $hsp->length(-TYPE=>'iden'), $hsp->length(-TYPE=>'cons'), $hsp->length(-TYPE=>'cons',-START=>0,-STOP=>10); <STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
754 ($qstart, $qstop) = $hsp->range('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
755 ($sstart, $sstop) = $hsp->range('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
756
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
757 my ($qgaps, $sgaps) = $hsp->gaps();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
758 $self->{'_gaps_query'} += $qgaps;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
759 $self->{'_gaps_sbjct'} += $sgaps;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
760
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
761 $self->{'_length_aln_total'} += $hsp->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
762 ## Collect contigs in the query sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
763 $qoverlap = &_adjust_contigs('query', $hsp, $qstart, $qstop, \@qcontigs, $max_overlap);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
764
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
765 ## Collect contigs in the sbjct sequence (needed for domain data and gapped Blast).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
766 $soverlap = &_adjust_contigs('sbjct', $hsp, $sstart, $sstop, \@scontigs, $max_overlap);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
767
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
768 ## Collect overall start and stop data for query and sbjct over all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
769 if(not defined $self->{'_queryStart'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
770 $self->{'_queryStart'} = $qstart;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
771 $self->{'_queryStop'} = $qstop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
772 $self->{'_sbjctStart'} = $sstart;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
773 $self->{'_sbjctStop'} = $sstop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
774 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
775 $self->{'_queryStart'} = ($qstart < $self->{'_queryStart'} ? $qstart : $self->{'_queryStart'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
776 $self->{'_queryStop'} = ($qstop > $self->{'_queryStop'} ? $qstop : $self->{'_queryStop'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
777 $self->{'_sbjctStart'} = ($sstart < $self->{'_sbjctStart'} ? $sstart : $self->{'_sbjctStart'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
778 $self->{'_sbjctStop'} = ($sstop > $self->{'_sbjctStop'} ? $sstop : $self->{'_sbjctStop'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
779 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
780 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
781
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
782 ## Collect data across the collected contigs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
783
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
784 # print "\nQUERY CONTIGS:\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
785 # print " gaps = $self->{'_gaps_query'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
786
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
787 foreach(@qcontigs) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
788 # print " query contig: $_->{'start'} - $_->{'stop'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
789 # print " iden = $_->{'iden'}; cons = $_->{'cons'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
790 $self->{'_length_aln_query'} += $_->{'stop'} - $_->{'start'} + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
791 $self->{'_totalIdentical'} += $_->{'iden'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
792 $self->{'_totalConserved'} += $_->{'cons'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
793 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
794
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
795 ## Collect data for sbjct contigs. Important for gapped Blast.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
796 ## The totalIdentical and totalConserved numbers will be the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
797 ## as determined for the query contigs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
798
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
799 # print "\nSBJCT CONTIGS:\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
800 # print " gaps = $self->{'_gaps_sbjct'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
801
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
802 foreach(@scontigs) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
803 # print " sbjct contig: $_->{'start'} - $_->{'stop'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
804 # print " iden = $_->{'iden'}; cons = $_->{'cons'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
805 $self->{'_length_aln_sbjct'} += $_->{'stop'} - $_->{'start'} + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
806 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
807 # <STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
808
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
809 if($qoverlap) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
810 if($soverlap) { $self->ambiguous_aln('qs');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
811 # print "\n*** AMBIGUOUS ALIGNMENT: Query and Sbjct\n\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
812 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
813 else { $self->ambiguous_aln('q');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
814 # print "\n*** AMBIGUOUS ALIGNMENT: Query\n\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
815 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
816 } elsif($soverlap) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
817 $self->ambiguous_aln('s');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
818 # print "\n*** AMBIGUOUS ALIGNMENT: Sbjct\n\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
819 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
820
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
821 # Adjust length based on BLAST flavor.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
822 my $prog = $self->parent->program;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
823 if($prog eq 'TBLASTN') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
824 $self->{'_length_aln_sbjct'} /= 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
825 } elsif($prog eq 'BLASTX' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
826 $self->{'_length_aln_query'} /= 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
827 } elsif($prog eq 'TBLASTX') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
828 $self->{'_length_aln_query'} /= 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
829 $self->{'_length_aln_sbjct'} /= 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
830 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
831 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
832
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
833
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
834
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
835 =head2 _adjust_contigs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
836
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
837 Usage : n/a; called automatically during object construction.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
838 Purpose : Builds HSP contigs for a given BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
839 : Utility method called by _tile_hsps()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
840 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
841 Argument :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
842 Throws : Exceptions propagated from Bio::Tools::Blast::HSP::matches()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
843 : for invalid sub-sequence ranges.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
844 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
845 Comments : This method does not currently support gapped alignments.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
846 : Also, it does not keep track of the number of HSPs that
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
847 : overlap within the amount specified by overlap().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
848 : This will lead to significant tracking errors for large
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
849 : overlap values.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
850
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
851 See Also : L<overlap()|overlap>, L<_tile_hsps()|_tile_hsps>, B<Bio::Tools::Blast::HSP>::matches
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
852
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
853 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
854
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
855 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
856 sub _adjust_contigs {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
857 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
858 my ($seqType, $hsp, $start, $stop, $contigs_ref, $max_overlap) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
859
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
860 my $overlap = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
861 my ($numID, $numCons);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
862
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
863 # print "Testing $seqType data: HSP (${\$hsp->name}); $start, $stop\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
864 foreach(@$contigs_ref) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
865 # print " Contig: $_->{'start'} - $_->{'stop'}, iden= $_->{'iden'}, cons= $_->{'cons'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
866
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
867 ## Test special case of a nested HSP. Skip it.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
868 if($start >= $_->{'start'} and $stop <= $_->{'stop'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
869 # print "----> Nested HSP. Skipping.\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
870 $overlap = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
871 next;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
872 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
873
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
874 ## Test for overlap at beginning of contig.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
875 if($start < $_->{'start'} and $stop > ($_->{'start'} + $max_overlap)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
876 # print "----> Overlaps beg: existing beg,end: $_->{'start'},$_->{'stop'}, new beg,end: $start,$stop\n";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
877 # Collect stats over the non-overlapping region.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
878 eval {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
879 ($numID, $numCons) = $hsp->matches(-SEQ =>$seqType,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
880 -START =>$start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
881 -STOP =>$_->{'start'}-1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
882 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
883 if($@) { warn "\a\n$@\n"; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
884 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
885 $_->{'start'} = $start; # Assign a new start coordinate to the contig
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
886 $_->{'iden'} += $numID; # and add new data to #identical, #conserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
887 $_->{'cons'} += $numCons;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
888 $overlap = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
889 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
890 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
891
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
892 ## Test for overlap at end of contig.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
893 if($stop > $_->{'stop'} and $start < ($_->{'stop'} - $max_overlap)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
894 # print "----> Overlaps end: existing beg,end: $_->{'start'},$_->{'stop'}, new beg,end: $start,$stop\n";<STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
895 # Collect stats over the non-overlapping region.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
896 eval {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
897 ($numID,$numCons) = $hsp->matches(-SEQ =>$seqType,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
898 -START =>$_->{'stop'},
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
899 -STOP =>$stop);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
900 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
901 if($@) { warn "\a\n$@\n"; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
902 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
903 $_->{'stop'} = $stop; # Assign a new stop coordinate to the contig
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
904 $_->{'iden'} += $numID; # and add new data to #identical, #conserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
905 $_->{'cons'} += $numCons;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
906 $overlap = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
907 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
908 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
909 $overlap && do {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
910 # print " New Contig data:\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
911 # print " Contig: $_->{'start'} - $_->{'stop'}, iden= $_->{'iden'}, cons= $_->{'cons'}\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
912 last;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
913 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
914 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
915 ## If there is no overlap, add the complete HSP data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
916 !$overlap && do {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
917 # print "No overlap. Adding new contig.\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
918 ($numID,$numCons) = $hsp->matches(-SEQ=>$seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
919 push @$contigs_ref, {'start'=>$start, 'stop'=>$stop,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
920 'iden'=>$numID, 'cons'=>$numCons };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
921 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
922 # <STDIN>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
923 $overlap;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
924 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
925
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
926
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
927 =head2 ambiguous_aln
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
928
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
929 Usage : $ambig_code = $sbjct_object->ambiguous_aln();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
930 Purpose : Sets/Gets ambiguity code data member.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
931 Example : (see usage)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
932 Returns : String = 'q', 's', 'qs', '-'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
933 : 'q' = query sequence contains overlapping sub-sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
934 : while sbjct does not.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
935 : 's' = sbjct sequence contains overlapping sub-sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
936 : while query does not.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
937 : 'qs' = query and sbjct sequence contains overlapping sub-sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
938 : relative to each other.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
939 : '-' = query and sbjct sequence do not contains multiple domains
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
940 : relative to each other OR both contain the same distribution
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
941 : of similar domains.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
942 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
943 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
944 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
945
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
946 See Also : L<_tile_hsps()|_tile_hsps>, L<HSP Tiling and Ambiguous Alignments>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
947
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
948 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
949
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
950 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
951 sub ambiguous_aln {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
952 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
953 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
954 if(@_) { $self->{'_ambiguous_aln'} = shift; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
955 $self->{'_ambiguous_aln'} || '-';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
956 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
957
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
958
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
959
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
960 =head2 overlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
961
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
962 Usage : $blast_object->overlap( [integer] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
963 Purpose : Gets/Sets the allowable amount overlap between different HSP sequences.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
964 Example : $blast_object->overlap(5);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
965 : $overlap = $blast_object->overlap();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
966 Returns : Integer.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
967 Argument : integer.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
968 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
969 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
970 Comments : Any two HSPs whose sequences overlap by less than or equal
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
971 : to the overlap() number of resides will be considered separate HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
972 : and will not get tiled by _adjust_contigs().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
973
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
974 See Also : L<_adjust_contigs()|_adjust_contigs>, L<BUGS | BUGS>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
975
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
976 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
977
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
978 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
979 sub overlap {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
980 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
981 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
982 if(@_) { $self->{'_overlap'} = shift; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
983 defined $self->{'_overlap'} ? $self->{'_overlap'} : 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
984 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
985
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
986
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
987
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
988
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
989 =head2 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
990
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
991 Usage : $sbjct_object->score();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
992 Purpose : Gets the BLAST score of the best HSP for the current Blast hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
993 Example : $score = $sbjct_object->score();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
994 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
995 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
996 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
997
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
998 See Also : L<bits()|bits>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
999
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1000 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1001
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1002 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1003 sub score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1004 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1005 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1006
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1007 # The check for $self->{'_score'} is a remnant from the 'query' mode days
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1008 # in which the sbjct object would collect data from the description line only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1009
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1010 my ($score);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1011 if(not defined($self->{'_score'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1012 $score = $self->hsp->score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1013 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1014 $score = $self->{'_score'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1015 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1016 return $score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1017 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1018
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1019
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1020
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1021 =head2 bits
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1022
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1023 Usage : $sbjct_object->bits();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1024 Purpose : Gets the BLAST bit score of the best HSP for the current Blast hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1025 Example : $bits = $sbjct_object->bits();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1026 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1027 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1028 Throws : Exception if bit score is not set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1029 Comments : For BLAST1, the non-bit score is listed in the summary line.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1030
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1031 See Also : L<score()|score>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1032
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1033 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1034
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1035 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1036 sub bits {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1037 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1038 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1039
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1040 # The check for $self->{'_bits'} is a remnant from the 'query' mode days
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1041 # in which the sbjct object would collect data from the description line only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1042
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1043 my ($bits);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1044 if(not defined($self->{'_bits'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1045 $bits = $self->hsp->bits;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1046 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1047 $bits = $self->{'_bits'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1048 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1049 return $bits;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1050 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1051
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1052
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1053
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1054 =head2 n
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1055
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1056 Usage : $sbjct_object->n();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1057 Purpose : Gets the N number for the current Blast hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1058 : This is the number of HSPs in the set which was ascribed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1059 : the lowest P-value (listed on the description line).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1060 : This number is not the same as the total number of HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1061 : To get the total number of HSPs, use num_hsps().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1062 Example : $n = $sbjct_object->n();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1063 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1064 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1065 Throws : Exception if HSPs have not been set (BLAST2 reports).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1066 Comments : Note that the N parameter is not reported in gapped BLAST2.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1067 : Calling n() on such reports will result in a call to num_hsps().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1068 : The num_hsps() method will count the actual number of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1069 : HSPs in the alignment listing, which may exceed N in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1070 : some cases.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1071
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1072 See Also : L<num_hsps()|num_hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1073
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1074 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1075
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1076 #-----
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1077 sub n {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1078 #-----
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1079 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1080
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1081 # The check for $self->{'_n'} is a remnant from the 'query' mode days
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1082 # in which the sbjct object would collect data from the description line only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1083
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1084 my ($n);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1085 if(not defined($self->{'_n'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1086 $n = $self->hsp->n;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1087 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1088 $n = $self->{'_n'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1089 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1090 $n ||= $self->num_hsps;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1091
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1092 return $n;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1093 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1094
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1095
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1096
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1097 =head2 frame
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1098
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1099 Usage : $sbjct_object->frame();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1100 Purpose : Gets the reading frame for the hit sequence (TBLASTN/X only).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1101 Example : $frame = $sbjct_object->frame();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1102 Returns : Integer (-3 .. +3).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1103 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1104 Throws : Exception if HSPs have not been set (BLAST2 reports).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1106 See Also : L<hsps()|hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1108 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1110 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1111 sub frame {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1112 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1113 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1114
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1115 # The check for $self->{'_frame'} is a remnant from the 'query' mode days
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1116 # in which the sbjct object would collect data from the description line only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1118 my ($frame);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1119 if(not defined($self->{'_frame'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1120 $frame = $self->hsp->frame;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1121 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1122 $frame = $self->{'_frame'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1123 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1124 return $frame;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1125 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1126
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1129
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1131 =head2 p
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1133 Usage : $sbjct_object->p( [format] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1134 Purpose : Get the P-value for the given BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1135 : (Note that P-values are not provided with NCBI Blast2 reports).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1136 Example : $p = $sbjct->p;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1137 : $p = $sbjct->p('exp'); # get exponent only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1138 : ($num, $exp) = $sbjct->p('parts'); # split sci notation into parts
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1139 Returns : Float or scientific notation number (the raw P-value, DEFAULT).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1140 : Integer if format == 'exp' (the magnitude of the base 10 exponent).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1141 : 2-element list (float, int) if format == 'parts' and P-value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1142 : is in scientific notation (See Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1143 Argument : format: string of 'raw' | 'exp' | 'parts'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1144 : 'raw' returns value given in report. Default. (1.2e-34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1145 : 'exp' returns exponent value only (34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1146 : 'parts' returns the decimal and exponent as a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1147 : 2-element list (1.2, -34) (See Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1148 Throws : Exception if the P-value is not defined, which will occur
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1149 : with any NCBI Blast2 report.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1150 Comments : Using the 'parts' argument is not recommended since it will not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1151 : work as expected if the P-value is not in scientific notation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1152 : That is, floats are not converted into sci notation before
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1153 : splitting into parts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1154
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1155 See Also : L<expect()|expect>, L<signif()|signif>, L<get_exponent()|get_exponent>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1156
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1157 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1159 #--------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1160 sub p {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1161 #--------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1162 # Some duplication of logic for p(), expect() and signif() for the sake of performance.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1163 my ($self, $fmt) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1164
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1165 my ($val);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1166 $fmt ||= $_signif_fmt;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1168 # $val can be zero.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1169 if(not defined($val = $self->{'_p'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1170 ## P-value not defined, must be a NCBI Blast2 report.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1171 my $note = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1172 if($self->parent->_layout() == 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1173 $note = "Blast2 does not report P-values. Use expect() instead.";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1174 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1175 $self->throw("Can't get P-value: undefined.", $note);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1176 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1178 return $val if not $fmt or $fmt =~ /^raw/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1179 ## Special formats: exponent-only or as list.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1180 return &get_exponent($val) if $fmt =~ /^exp/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1181 return (split (/eE/, $val)) if $fmt =~ /^parts/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1183 ## Default: return the raw P-value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1184 return $val;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1185 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1186
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1189 =head2 expect
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1190
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1191 Usage : $sbjct_object->expect( [format] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1192 Purpose : Get the Expect value for the given BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1193 Example : $e = $sbjct->expect;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1194 : $e = $sbjct->expect('exp'); # get exponent only.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1195 : ($num, $exp) = $sbjct->expect('parts'); # split sci notation into parts
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1196 Returns : Float or scientific notation number (the raw expect value, DEFAULT).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1197 : Integer if format == 'exp' (the magnitude of the base 10 exponent).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1198 : 2-element list (float, int) if format == 'parts' and Expect
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1199 : is in scientific notation (see Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1200 Argument : format: string of 'raw' | 'exp' | 'parts'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1201 : 'raw' returns value given in report. Default. (1.2e-34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1202 : 'exp' returns exponent value only (34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1203 : 'parts' returns the decimal and exponent as a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1204 : 2-element list (1.2, -34) (see Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1205 Throws : Exception if the Expect value is not defined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1206 Comments : Using the 'parts' argument is not recommended since it will not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1207 : work as expected if the expect value is not in scientific notation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1208 : That is, floats are not converted into sci notation before
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1209 : splitting into parts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1210
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1211 See Also : L<p()|p>, L<signif()|signif>, L<get_exponent()|get_exponent>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1212
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1213 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1215 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1216 sub expect {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1217 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1218 # Some duplication of logic for p(), expect() and signif() for the sake of performance.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1219 my ($self, $fmt) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1220
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1221 my $val = $self->{'_expect'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1222 $fmt ||= $_signif_fmt;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1224 # $val can be zero.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1225 defined($val) or $self->throw("Can't get Expect value: HSPs may not have been set.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1227 return $val if not $fmt or $fmt =~ /^raw/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1228 ## Special formats: exponent-only or as list.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1229 return &get_exponent($val) if $fmt =~ /^exp/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1230 return (split (/eE/, $val)) if $fmt =~ /^parts/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1232 ## Default: return the raw Expect-value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1233 return $val;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1234 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1236
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1237
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1238 =head2 signif
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1239
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1240 Usage : $sbjct_object->signif( [format] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1241 Purpose : Get the P or Expect value for the given BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1242 : The value returned is the one which is reported in the description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1243 : section of the Blast report. For Blast1 and WU-Blast2, this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1244 : is a P-value, for Blast2, it is an Expect value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1245 Example : $obj->signif() # returns 1.3e-34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1246 : $obj->signif('exp') # returns -34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1247 : $obj->signif('parts') # returns (1.3, -34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1248 Returns : Float or scientific notation number (the raw P/Expect value, DEFAULT).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1249 : Integer if format == 'exp' (the magnitude of the base 10 exponent).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1250 : 2-element list (float, int) if format == 'parts' and P/Expect value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1251 : is in scientific notation (see Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1252 Argument : format: string of 'raw' | 'exp' | 'parts'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1253 : 'raw' returns value given in report. Default. (1.2e-34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1254 : 'exp' returns exponent value only (34)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1255 : 'parts' returns the decimal and exponent as a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1256 : 2-element list (1.2, -34) (see Comments).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1257 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1258 Status : Deprecated. Use p() or expect().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1259 Comments : The signif() method provides a way to deal with the fact that
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1260 : Blast1 and Blast2 formats differ in what is reported in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1261 : description lines of each hit in the Blast report. The signif()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1262 : method frees any client code from having to know if this is a P-value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1263 : or an Expect value, making it easier to write code that can process
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1264 : both Blast1 and Blast2 reports. This is not necessarily a good thing, since
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1265 : one should always know when one is working with P-values or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1266 : Expect values (hence the deprecated status).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1267 : Use of expect() is recommended since all hits will have an Expect value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1268 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1269 : Using the 'parts' argument is not recommended since it will not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1270 : work as expected if the expect value is not in scientific notation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1271 : That is, floats are not converted into sci notation before
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1272 : splitting into parts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1273
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1274 See Also : L<p()|p>, L<expect()|expect>, L<get_exponent()|get_exponent>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1276 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1278 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1279 sub signif {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1280 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1281 # Some duplication of logic for p(), expect() and signif() for the sake of performance.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1282 my ($self, $fmt) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1284 my $val = defined($self->{'_p'}) ? $self->{'_p'} : $self->{'_expect'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1285 $fmt ||= $_signif_fmt;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1287 # $val can be zero.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1288 defined($val) or $self->throw("Can't get P- or Expect value: HSPs may not have been set.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1289
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1290 return $val if not $fmt or $fmt =~ /^raw/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1291 ## Special formats: exponent-only or as list.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1292 return &get_exponent($val) if $fmt =~ /^exp/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1293 return (split (/eE/, $val)) if $fmt =~ /^parts/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1295 ## Default: return the raw P/Expect-value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1296 return $val;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1297 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1298
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1300
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1301 =head2 desc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1303 Usage : $sbjct_object->desc( [integer] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1304 Purpose : Get the description for the given BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1305 Example : (see usage)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1306 Returns : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1307 Argument : Integer (optional) indicating the desired length of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1308 : description string to be returned.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1309 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1310
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1311 See Also : L<_set_desc()|_set_desc>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1312
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1313 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1314
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1315 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1316 sub desc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1317 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1318 my( $self, $len ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1319 $len = (defined $len) ? $len : (CORE::length $self->{'_desc'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1320 substr( $self->{'_desc'}, 0 ,$len );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1321 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1325 =head2 database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1326
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1327 Usage : $sbjct_object->database();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1328 Purpose : Get the name of the database for the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1329 Example : (see usage)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1330 Returns : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1331 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1332 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1333 Status : Deprecated. Use Bio::Tools::Blast::database()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1334 Extracting database name from the seq identifier is error prone.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1335 Comments : Database id should be the same for all hits in a given
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1336 : BLAST report, however, they do not always have the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1337 : name as the database name extraced by the Blast.pm object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1338 : The Sbjct.pm database id is obtained from the summary line.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1340 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1342 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1343 sub database {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1344 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1345 $self->warn("Bio::Tools::Sbjct::database() is deprecated.\nNo useful information is provided by this method.\nUse Bio::Tools::Blast::database().\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1346 return $self->{'_db'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1347 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1348 #--------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1349
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1351
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1353 =head2 hsps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1354
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1355 Usage : $sbjct_object->hsps();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1356 Purpose : Get a list containing all HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1357 : Get the numbers of HSPs for the current hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1358 Example : @hsps = $sbjct_object->hsps();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1359 : $num = $sbjct_object->hsps(); # alternatively, use num_hsps()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1360 Returns : Array context : list of Bio::Tools::Blast::HSP.pm objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1361 : Scalar context: integer (number of HSPs).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1362 : (Equivalent to num_hsps()).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1363 Argument : n/a. Relies on wantarray
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1364 Throws : Exception if the HSPs have not been collected.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1365
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1366 See Also : L<hsp()|hsp>, L<num_hsps()|num_hsps>, L<_set_hsps()|_set_hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1367
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1368 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1369
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1370 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1371 sub hsps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1372 #---------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1373 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1375 if (not ref $self->{'_hsps'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1376 $self->throw("Can't get HSPs: data not collected.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1377 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1378
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1379 return wantarray
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1380 # returning list containing all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1381 ? @{$self->{'_hsps'}}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1382 # returning number of HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1383 : scalar(@{$self->{'_hsps'}});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1384 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1386
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1388 =head2 hsp
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1389
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1390 Usage : $sbjct_object->hsp( [string] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1391 Purpose : Get a single HSP.pm object for the present Sbjct.pm object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1392 Example : $hspObj = $sbjct_object->hsp; # same as 'best'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1393 : $hspObj = $sbjct_object->hsp('best');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1394 : $hspObj = $sbjct_object->hsp('worst');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1395 Returns : Object reference for a Bio::Tools::Blast::HSP.pm object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1396 Argument : String (or no argument).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1397 : No argument (default) = highest scoring HSP (same as 'best').
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1398 : 'best' or 'first' = highest scoring HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1399 : 'worst' or 'last' = lowest scoring HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1400 Throws : Exception if the HSPs have not been collected.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1401 : Exception if an unrecognized argument is used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1402
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1403 See Also : L<hsps()|hsps>, L<num_hsps()|num_hsps>, L<_set_hsps()|_set_hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1404
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1405 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1406
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1407 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1408 sub hsp {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1409 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1410 my( $self, $option ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1411 $option ||= 'best';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1412
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1413 if (not ref $self->{'_hsps'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1414 $self->throw("Can't get HSPs: data not collected.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1415 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1417 my @hsps = @{$self->{'_hsps'}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1418
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1419 return $hsps[0] if $option =~ /best|first|1/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1420 return $hsps[$#hsps] if $option =~ /worst|last/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1422 $self->throw("Can't get HSP for: $option",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1423 "Valid arguments: 'best', 'worst'");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1424 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1425
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1426
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1427
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1428 =head2 num_hsps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1430 Usage : $sbjct_object->num_hsps();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1431 Purpose : Get the number of HSPs for the present Blast hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1432 Example : $nhsps = $sbjct_object->num_hsps();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1433 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1434 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1435 Throws : Exception if the HSPs have not been collected.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1436
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1437 See Also : L<hsps()|hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1438
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1439 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1440
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1441 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1442 sub num_hsps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1443 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1444 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1445
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1446 if (not defined $self->{'_hsps'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1447 $self->throw("Can't get HSPs: data not collected.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1448 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1449
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1450 return scalar(@{$self->{'_hsps'}});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1451 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1452
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1453
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1454
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1455 =head2 length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1456
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1457 Usage : $sbjct_object->length();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1458 Purpose : Get the total length of the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1459 Example : $len = $sbjct_object->length();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1460 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1461 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1462 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1463 Comments : Developer note: when using the built-in length function within
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1464 : this module, call it as CORE::length().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1466 See Also : L<logical_length()|logical_length>, L<length_aln()|length_aln>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1467
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1468 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1469
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1470 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1471 sub length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1472 #-----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1473 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1474 $self->{'_length'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1475 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1476
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1477
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1478 =head2 logical_length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1479
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1480 Usage : $sbjct_object->logical_length( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1481 : (mostly intended for internal use).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1482 Purpose : Get the logical length of the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1483 : If the Blast is a TBLASTN or TBLASTX, the returned length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1484 : is the length of the would-be amino acid sequence (length/3).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1485 : For all other BLAST flavors, this function is the same as length().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1486 Example : $len = $sbjct_object->logical_length();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1487 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1488 Argument : seq_type = 'query' or 'sbjct' (default = 'query')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1489 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1490 Comments : This is important for functions like frac_aligned_query()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1491 : which need to operate in amino acid coordinate space when dealing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1492 : with [T]BLAST[NX] type reports.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1493
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1494 See Also : L<length()|length>, L<frac_aligned_query()|frac_aligned_query>, L<frac_aligned_hit()|frac_aligned_hit>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1495
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1496 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1497
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1498 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1499 sub logical_length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1500 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1501 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1502 my $seqType = shift || 'query';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1503
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1504 # Return logical sbjct length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1505 $seqType eq 'sbjct' and return
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1506 $self->{'_logical_length'} || $self->{'_length'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1507
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1508 # Otherwise, return logical query length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1509 my $qlen = $self->parent->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1510
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1511 # Adjust length based on BLAST flavor.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1512 my $prog = $self->parent->program;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1513 if($prog =~ /T?BLASTX/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1514 $qlen /= 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1515 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1516 return $qlen;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1517 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1518
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1519
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1520
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1521 =head2 length_aln
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1522
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1523 Usage : $sbjct_object->length_aln( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1524 Purpose : Get the total length of the aligned region for query or sbjct seq.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1525 : This number will include all HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1526 Example : $len = $sbjct_object->length_aln(); # default = query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1527 : $lenAln = $sbjct_object->length_aln('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1528 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1529 Argument : seq_Type = 'query' | 'sbjct' (Default = 'query')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1530 Throws : Exception if the argument is not recognized.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1531 Comments : This method will report the logical length of the alignment,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1532 : meaning that for TBLAST[NX] reports, the length is reported
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1533 : using amino acid coordinate space (i.e., nucleotides / 3).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1534 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1535 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1536 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1537 : If you don't want the tiled data, iterate through each HSP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1538 : calling length() on each (use hsps() to get the HSPs).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1539
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1540 See Also : L<length()|length>, L<frac_aligned_query()|frac_aligned_query>, L<frac_aligned_hit()|frac_aligned_hit>, L<gaps()|gaps>, L<_tile_hsps()|_tile_hsps>, B<Bio::Tools::Blast::HSP::length()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1541
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1542 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1543
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1544 #---------------'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1545 sub length_aln {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1546 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1547 my( $self, $type ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1548
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1549 $type ||= 'query';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1550
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1551 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1552
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1553 my $data = $self->{'_length_aln_'.$type};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1554
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1555 ## If we don't have data, figure out what went wrong.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1556 if(!$data) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1557 $self->throw("Can't get length aln for sequence type \"$type\"",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1558 "Valid types are 'query', 'sbjct'");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1559 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1560 $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1561 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1562
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1563
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1564 =head2 gaps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1565
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1566 Usage : $sbjct_object->gaps( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1567 Purpose : Get the number of gaps in the aligned query, sbjct, or both sequences.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1568 : Data is summed across all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1569 Example : $qgaps = $sbjct_object->gaps('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1570 : $sgaps = $sbjct_object->gaps('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1571 : $tgaps = $sbjct_object->gaps(); # default = total (query + sbjct)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1572 Returns : scalar context: integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1573 : array context without args: two-element list of integers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1574 : (queryGaps, sbjctGaps)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1575 : Array context can be "induced" by providing an argument of 'list' or 'array'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1576 Argument : seq_type: 'query' | 'sbjct' | 'total' | 'list' (default = 'total')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1577 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1578 Comments : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1579 : through each HSP object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1580 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1581 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1582 : Not relying on wantarray since that will fail in situations
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1583 : such as printf "%d", $hit->gaps() in which you might expect to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1584 : be printing the total gaps, but evaluates to array context.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1585
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1586 See Also : L<length_aln()|length_aln>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1587
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1588 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1589
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1590 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1591 sub gaps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1592 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1593 my( $self, $seqType ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1594
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1595 $seqType ||= (wantarray ? 'list' : 'total');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1596
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1597 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1598
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1599 $seqType = lc($seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1600
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1601 if($seqType =~ /list|array/i) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1602 return ($self->{'_gaps_query'}, $self->{'_gaps_sbjct'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1603 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1604
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1605 if($seqType eq 'total') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1606 return ($self->{'_gaps_query'} + $self->{'_gaps_sbjct'}) || 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1607 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1608 return $self->{'_gaps_'.$seqType} || 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1609 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1610 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1611
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1612
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1613
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1614 =head2 matches
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1615
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1616 Usage : $sbjct_object->matches( [class] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1617 Purpose : Get the total number of identical or conserved matches
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1618 : (or both) across all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1619 : (Note: 'conservative' matches are indicated as 'positives'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1620 : in the Blast report.)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1621 Example : ($id,$cons) = $sbjct_object->matches(); # no argument
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1622 : $id = $sbjct_object->matches('id');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1623 : $cons = $sbjct_object->matches('cons');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1624 Returns : Integer or a 2-element array of integers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1625 Argument : class = 'id' | 'cons' OR none.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1626 : If no argument is provided, both identical and conservative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1627 : numbers are returned in a two element list.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1628 : (Other terms can be used to refer to the conservative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1629 : matches, e.g., 'positive'. All that is checked is whether or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1630 : not the supplied string starts with 'id'. If not, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1631 : conservative matches are returned.)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1632 Throws : Exception if the requested data cannot be obtained.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1633 Comments : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1634 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1635 : Does not rely on wantarray to return a list. Only checks for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1636 : the presence of an argument (no arg = return list).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1637
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1638 See Also : B<Bio::Tools::Blast::HSP::matches()>, L<hsps()|hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1639
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1640 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1641
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1642 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1643 sub matches {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1644 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1645 my( $self, $arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1646 my(@data,$data);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1647
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1648 if(!$arg) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1649 @data = ($self->{'_totalIdentical'}, $self->{'_totalConserved'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1650
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1651 return @data if @data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1652
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1653 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1654
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1655 if($arg =~ /^id/i) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1656 $data = $self->{'_totalIdentical'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1657 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1658 $data = $self->{'_totalConserved'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1659 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1660 return $data if $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1661 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1662
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1663 ## Something went wrong if we make it to here.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1664 $self->throw("Can't get identical or conserved data: no data.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1665 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1666
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1667
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1668 =head2 start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1669
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1670 Usage : $sbjct->start( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1671 Purpose : Gets the start coordinate for the query, sbjct, or both sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1672 : in the Sbjct object. If there is more than one HSP, the lowest start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1673 : value of all HSPs is returned.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1674 Example : $qbeg = $sbjct->start('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1675 : $sbeg = $sbjct->start('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1676 : ($qbeg, $sbeg) = $sbjct->start();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1677 Returns : scalar context: integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1678 : array context without args: list of two integers (queryStart, sbjctStart)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1679 : Array context can be "induced" by providing an argument of 'list' or 'array'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1680 Argument : In scalar context: seq_type = 'query' or 'sbjct'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1681 : (case insensitive). If not supplied, 'query' is used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1682 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1683 Comments : This method requires that all HSPs be tiled. If there is more than one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1684 : HSP and they have not already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1685 : Remember that the start and end coordinates of all HSPs are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1686 : normalized so that start < end. Strand information can only be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1687 : obtained on an HSP-by-HSP basis by calling $hsp->strand().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1688
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1689 See Also : L<end()|end>, L<range()|range>, L<HSP Tiling and Ambiguous Alignments>, B<Bio::Tools::Blast::HSP::start>()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1690
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1691 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1692
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1693 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1694 sub start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1695 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1696 my ($self, $seqType) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1697
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1698 $seqType ||= (wantarray ? 'list' : 'query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1699
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1700 # If there is only one HSP, defer this call to the solitary HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1701 if($self->num_hsps == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1702 return $self->hsp->start($seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1703 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1704 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1705 if($seqType =~ /list|array/i) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1706 return ($self->{'_queryStart'}, $self->{'_sbjctStart'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1707 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1708 ## Sensitive to member name changes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1709 $seqType = "_\L$seqType\E";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1710 return $self->{$seqType.'Start'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1711 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1712 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1713 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1714
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1715
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1716 =head2 end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1717
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1718 Usage : $sbjct->end( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1719 Purpose : Gets the end coordinate for the query, sbjct, or both sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1720 : in the Sbjct object. If there is more than one HSP, the largest end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1721 : value of all HSPs is returned.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1722 Example : $qend = $sbjct->end('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1723 : $send = $sbjct->end('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1724 : ($qend, $send) = $sbjct->end();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1725 Returns : scalar context: integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1726 : array context without args: list of two integers (queryEnd, sbjctEnd)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1727 : Array context can be "induced" by providing an argument of 'list' or 'array'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1728 Argument : In scalar context: seq_type = 'query' or 'sbjct'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1729 : (case insensitive). If not supplied, 'query' is used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1730 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1731 Comments : This method requires that all HSPs be tiled. If there is more than one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1732 : HSP and they have not already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1733 : Remember that the start and end coordinates of all HSPs are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1734 : normalized so that start < end. Strand information can only be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1735 : obtained on an HSP-by-HSP basis by calling $hsp->strand().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1736
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1737 See Also : L<start()|start>, L<range()|range>, L<HSP Tiling and Ambiguous Alignments>, B<Bio::Tools::Blast::HSP::end>()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1738
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1739 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1740
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1741 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1742 sub end {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1743 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1744 my ($self, $seqType) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1745
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1746 $seqType ||= (wantarray ? 'list' : 'query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1747
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1748 # If there is only one HSP, defer this call to the solitary HSP.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1749 if($self->num_hsps == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1750 return $self->hsp->end($seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1751 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1752 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1753 if($seqType =~ /list|array/i) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1754 return ($self->{'_queryStop'}, $self->{'_sbjctStop'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1755 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1756 ## Sensitive to member name changes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1757 $seqType = "_\L$seqType\E";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1758 return $self->{$seqType.'Stop'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1759 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1760 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1761 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1762
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1763 =head2 range
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1764
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1765 Usage : $sbjct->range( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1766 Purpose : Gets the (start, end) coordinates for the query or sbjct sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1767 : in the HSP alignment.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1768 Example : ($qbeg, $qend) = $sbjct->range('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1769 : ($sbeg, $send) = $sbjct->range('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1770 Returns : Two-element array of integers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1771 Argument : seq_type = string, 'query' or 'sbjct' (default = 'query')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1772 : (case insensitive).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1773 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1774
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1775 See Also : L<start()|start>, L<end()|end>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1776
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1777 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1778
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1779 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1780 sub range {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1781 #----------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1782 my ($self, $seqType) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1783 $seqType ||= 'query';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1784 return ($self->start($seqType), $self->end($seqType));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1785 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1786
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1787
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1788 =head2 frac_identical
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1789
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1790 Usage : $sbjct_object->frac_identical( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1791 Purpose : Get the overall fraction of identical positions across all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1792 : The number refers to only the aligned regions and does not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1793 : account for unaligned regions in between the HSPs, if any.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1794 Example : $frac_iden = $sbjct_object->frac_identical('query');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1795 Returns : Float (2-decimal precision, e.g., 0.75).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1796 Argument : seq_type: 'query' | 'sbjct' | 'total'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1797 : default = 'total' (but see comments below).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1798 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1799 Comments : Different versions of Blast report different values for the total
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1800 : length of the alignment. This is the number reported in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1801 : denominators in the stats section:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1802 : "Identical = 34/120 Positives = 67/120".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1803 : BLAST-GP uses the total length of the alignment (with gaps)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1804 : WU-BLAST uses the length of the query sequence (without gaps).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1805 : Therefore, when called without an argument or an argument of 'total',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1806 : this method will report different values depending on the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1807 : version of BLAST used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1808 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1809 : To get the fraction identical among only the aligned residues,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1810 : ignoring the gaps, call this method with an argument of 'query'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1811 : or 'sbjct'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1812 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1813 : If you need data for each HSP, use hsps() and then iterate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1814 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1815 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1816 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1817
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1818 See Also : L<frac_conserved()|frac_conserved>, L<frac_aligned_query()|frac_aligned_query>, L<matches()|matches>, L<_tile_hsps()|_tile_hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1819
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1820 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1821
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1822 #------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1823 sub frac_identical {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1824 #------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1825 my ($self, $seqType) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1826 $seqType ||= 'total';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1827
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1828 ## Sensitive to member name format.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1829 $seqType = lc($seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1830
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1831 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1832
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1833 sprintf( "%.2f", $self->{'_totalIdentical'}/$self->{'_length_aln_'.$seqType});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1834 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1835
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1836
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1837
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1838 =head2 frac_conserved
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1839
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1840 Usage : $sbjct_object->frac_conserved( [seq_type] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1841 Purpose : Get the overall fraction of conserved positions across all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1842 : The number refers to only the aligned regions and does not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1843 : account for unaligned regions in between the HSPs, if any.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1844 Example : $frac_cons = $sbjct_object->frac_conserved('sbjct');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1845 Returns : Float (2-decimal precision, e.g., 0.75).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1846 Argument : seq_type: 'query' | 'sbjct' | 'total'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1847 : default = 'total' (but see comments below).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1848 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1849 Comments : Different versions of Blast report different values for the total
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1850 : length of the alignment. This is the number reported in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1851 : denominators in the stats section:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1852 : "Identical = 34/120 Positives = 67/120".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1853 : BLAST-GP uses the total length of the alignment (with gaps)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1854 : WU-BLAST uses the length of the query sequence (without gaps).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1855 : Therefore, when called without an argument or an argument of 'total',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1856 : this method will report different values depending on the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1857 : version of BLAST used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1858 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1859 : To get the fraction conserved among only the aligned residues,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1860 : ignoring the gaps, call this method with an argument of 'query'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1861 : or 'sbjct'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1862 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1863 : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1864 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1865 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1866 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1867
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1868 See Also : L<frac_identical()|frac_identical>, L<matches()|matches>, L<_tile_hsps()|_tile_hsps>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1869
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1870 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1871
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1872 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1873 sub frac_conserved {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1874 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1875 my ($self, $seqType) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1876 $seqType ||= 'total';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1877
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1878 ## Sensitive to member name format.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1879 $seqType = lc($seqType);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1880
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1881 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1882
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1883 sprintf( "%.2f", $self->{'_totalConserved'}/$self->{'_length_aln_'.$seqType});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1884 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1885
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1886
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1887
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1888
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1889 =head2 frac_aligned_query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1890
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1891 Usage : $sbjct_object->frac_aligned_query();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1892 Purpose : Get the fraction of the query sequence which has been aligned
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1893 : across all HSPs (not including intervals between non-overlapping
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1894 : HSPs).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1895 Example : $frac_alnq = $sbjct_object->frac_aligned_query();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1896 Returns : Float (2-decimal precision, e.g., 0.75).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1897 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1898 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1899 Comments : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1900 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1901 : To compute the fraction aligned, the logical length of the query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1902 : sequence is used, meaning that for [T]BLASTX reports, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1903 : full length of the query sequence is converted into amino acids
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1904 : by dividing by 3. This is necessary because of the way
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1905 : the lengths of aligned sequences are computed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1906 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1907 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1908
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1909 See Also : L<frac_aligned_hit()|frac_aligned_hit>, L<_tile_hsps()|_tile_hsps>, L<logical_length()|logical_length>, L<length_aln()|length_aln>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1910
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1911 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1912
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1913 #----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1914 sub frac_aligned_query {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1915 #----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1916 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1917
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1918 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1919
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1920 sprintf( "%.2f", $self->{'_length_aln_query'}/$self->logical_length('query'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1921 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1922
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1923
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1924
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1925 =head2 frac_aligned_hit
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1926
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1927 Usage : $sbjct_object->frac_aligned_hit();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1928 Purpose : Get the fraction of the hit (sbjct) sequence which has been aligned
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1929 : across all HSPs (not including intervals between non-overlapping
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1930 : HSPs).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1931 Example : $frac_alnq = $sbjct_object->frac_aligned_hit();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1932 Returns : Float (2-decimal precision, e.g., 0.75).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1933 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1934 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1935 Comments : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1936 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1937 : To compute the fraction aligned, the logical length of the sbjct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1938 : sequence is used, meaning that for TBLAST[NX] reports, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1939 : full length of the sbjct sequence is converted into amino acids
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1940 : by dividing by 3. This is necessary because of the way
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1941 : the lengths of aligned sequences are computed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1942 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1943 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1944
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1945 See Also : L<frac_aligned_query()|frac_aligned_query>, L<matches()|matches>, L<_tile_hsps()|_tile_hsps>, L<logical_length()|logical_length>, L<length_aln()|length_aln>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1946
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1947 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1948
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1949 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1950 sub frac_aligned_hit {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1951 #--------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1952 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1953
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1954 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1955
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1956 sprintf( "%.2f", $self->{'_length_aln_sbjct'}/$self->logical_length('sbjct'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1957 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1958
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1959 # Safety-net methods for those who try don't read or remember the API.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1960 # Redirecting to the proper method. These 'sbjct' versions may be more
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1961 # consistent with the API of this module since there are numerous other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1962 # instances of using 'sbjct' in arguments. However, 'sbjct' is a bit tech-ee.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1963
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1964 #-----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1965 sub frac_aligned_sbjct { my $self=shift; $self->frac_aligned_hit(@_); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1966 #-----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1967 sub num_unaligned_sbjct { my $self=shift; $self->num_unaligned_hit(@_); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1968 #-----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1969
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1970
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1971
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1972 =head2 num_unaligned_hit
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1973
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1974 Usage : $sbjct_object->num_unaligned_hit();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1975 Purpose : Get the number of the unaligned residues in the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1976 : Sums across all all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1977 Example : $num_unaln = $sbjct_object->num_unaligned_hit();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1978 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1979 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1980 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1981 Comments : See notes regarding logical lengths in the comments for frac_aligned_hit().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1982 : They apply here as well.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1983 : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1984 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1985 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1986 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1987
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1988 See Also : L<num_unaligned_query()|num_unaligned_query>, L<_tile_hsps()|_tile_hsps>, L<frac_aligned_hit()|frac_aligned_hit>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1989
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1990 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1991
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1992 #---------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1993 sub num_unaligned_hit {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1994 #---------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1995 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1996
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1997 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1998
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1999 my $num = $self->logical_length('sbjct') - $self->{'_length_aln_sbjct'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2000 ($num < 0 ? 0 : $num );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2001 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2002
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2003
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2004 =head2 num_unaligned_query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2005
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2006 Usage : $sbjct_object->num_unaligned_query();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2007 Purpose : Get the number of the unaligned residues in the query sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2008 : Sums across all all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2009 Example : $num_unaln = $sbjct_object->num_unaligned_query();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2010 Returns : Integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2011 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2012 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2013 Comments : See notes regarding logical lengths in the comments for frac_aligned_query().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2014 : They apply here as well.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2015 : If you need data for each HSP, use hsps() and then interate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2016 : through the HSP objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2017 : This method requires that all HSPs be tiled. If they have not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2018 : already been tiled, they will be tiled first.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2019
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2020 See Also : L<num_unaligned_hit()|num_unaligned_hit>, L<_tile_hsps()|_tile_hsps>, L<frac_aligned_query()|frac_aligned_query>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2021
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2022 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2023
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2024 #-----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2025 sub num_unaligned_query {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2026 #-----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2027 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2028
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2029 $self->_tile_hsps() if not $self->{'_tile_hsps'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2030
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2031 my $num = $self->logical_length('query') - $self->{'_length_aln_query'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2032 ($num < 0 ? 0 : $num );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2033 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2034
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2035
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2036
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2037 =head2 seq_inds
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2038
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2039 Usage : $hit->seq_inds( seq_type, class, collapse );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2040 Purpose : Get a list of residue positions (indices) across all HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2041 : for identical or conserved residues in the query or sbjct sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2042 Example : @ind = $hit->seq_inds('query', 'identical');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2043 : @ind = $hit->seq_inds('sbjct', 'conserved');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2044 : @ind = $hit->seq_inds('sbjct', 'conserved', 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2045 Returns : Array of integers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2046 : May include ranges if collapse is non-zero.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2047 Argument : seq_type = 'query' or 'sbjct' (default = query)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2048 : class = 'identical' or 'conserved' (default = identical)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2049 : (can be shortened to 'id' or 'cons')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2050 : (actually, anything not 'id' will evaluate to 'conserved').
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2051 : collapse = boolean, if non-zero, consecutive positions are merged
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2052 : using a range notation, e.g., "1 2 3 4 5 7 9 10 11"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2053 : collapses to "1-5 7 9-11". This is useful for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2054 : consolidating long lists. Default = no collapse.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2055 Throws : n/a.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2056
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2057 See Also : B<Bio::Tools::Blast::HSP::seq_inds()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2058
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2059 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2060
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2061 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2062 sub seq_inds {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2063 #-------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2064 my ($self, $seq, $class, $collapse) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2065
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2066 $seq ||= 'query';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2067 $class ||= 'identical';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2068 $collapse ||= 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2069
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2070 my (@inds, $hsp);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2071 foreach $hsp ($self->hsps) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2072 # This will merge data for all HSPs together.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2073 push @inds, $hsp->seq_inds($seq, $class);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2074 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2075
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2076 # Need to remove duplicates and sort the merged positions.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2077 if(@inds) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2078 my %tmp = map { $_, 1 } @inds;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2079 @inds = sort {$a <=> $b} keys %tmp;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2080 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2081
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2082 require Bio::Tools::Blast::HSP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2083
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2084 $collapse ? &Bio::Tools::Blast::HSP::collapse_nums(@inds) : @inds;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2085 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2086
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2087
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2088 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2089 ## INSTANCE METHODS ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2090 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2091
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2092
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2093 =head2 display
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2094
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2095 Usage : $sbjct_object->display( %named_parameters );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2096 Purpose : Display information about Bio::Tools::Blast::Sbjct.pm data members
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2097 Example : $object->display(-SHOW=>'stats');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2098 Argument : Named parameters: -SHOW => 'hsp',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2099 : -WHERE => filehandle (default = STDOUT)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2100 Returns : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2101 Status : Deprecated, Buggy.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2102 : Use Blast::table() or Blast::table_tiled() instead.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2104 See Also : L<_display_stats()|_display_stats>, L<_display_hsps()|_display_hsps>, B<Bio::Root::Object>::display
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2106 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2108 #------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2109 sub display {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2110 #------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2111 my( $self, %param) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2112
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2113 $param{-HEADER} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2114 $self->SUPER::display(%param);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2116 $self->show =~ /hsp/i and $self->_display_hsps( %param);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2117 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2120 =head2 _display_stats
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2122 Usage : n/a; called automatically by display()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2123 Purpose : Display information about Bio::Tools::Blast.pm data members.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2124 : Not tab-delimited.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2125 : Prints the rank, name, database, score, p, n, length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2126 : of the hit sequence, length of the aligned region,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2127 : fraction identical, fraction conserved, and the fraction aligned
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2128 : for both the query and hit sequences.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2129 Example : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2130 Argument : one argument = filehandle object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2131 Returns : printf call.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2132 Status : Deprecated, Buggy.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2133 : Use Blast::table() or Blast::table_tiled() instead.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2135 See Also : L<display()|display>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2137 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2139 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2140 sub _display_stats {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2141 #-------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2142 my( $self, $OUT) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2143 my $layout = $self->parent->_layout();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2145 if($layout == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2146 printf( $OUT "%-3d %-20s %-11s %-5d %-5d %-9.1e %-9.1e %-4d %-3d %-5d %-5d %-5s %-6.2f %-6.2f %-4d(%.2f) %-4d(%.2f)\n",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2147 $self->rank(), $self->name(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2148 ($self->database() || 'UNKNOWN DB') ,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2149 $self->score(),$self->bits(),$self->p(),$self->expect(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2150 $self->gaps(), $self->n(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2151 $self->length(), $self->length_aln('query'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2152 $self->ambiguous_aln(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2153 $self->frac_aligned_query, $self->frac_aligned_hit,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2154 $self->matches('iden'), $self->frac_identical('query'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2155 $self->matches('cons'), $self->frac_conserved('query'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2156 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2157 printf( $OUT "%-3d %-20s %-11s %-5d %-5d %-9.1e %-4d %-3d %-5d %-5d %-5s %-6.2f %-6.2f %-4d(%.2f) %-4d(%.2f)\n",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2158 $self->rank(), $self->name(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2159 ($self->database() || 'UNKNOWN DB'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2160 $self->score(),$self->bits(),$self->expect(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2161 $self->gaps(), $self->num_hsps,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2162 $self->length(), $self->length_aln('query'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2163 $self->ambiguous_aln(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2164 $self->frac_aligned_query, $self->frac_aligned_hit,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2165 $self->matches('iden'), $self->frac_identical('query'),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2166 $self->matches('cons'), $self->frac_conserved('query') );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2167 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2168
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2169 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2170
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2172 =head2 _display_hsps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2173
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2174 Usage : n/a; called automatically by display()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2175 Purpose : Display information about each HSP in the current BLAST hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2176 Example : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2177 Argument : one argument = filehandle object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2178 Returns : printf call.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2179 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2181 See Also : L<display()|display>, B<Bio::Tools::Blast::HSP::display()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2183 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2184
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2185 #----------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2186 sub _display_hsps {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2187 #----------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2188 my( $self, %param) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2189 my $OUT = $self->fh();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2190 my $hspCount = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2191 my $reply = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2192
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2193 not defined $self->{'_hsps'} and do{ print $OUT "\nHSP data not loaded.\n\n"; return; };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2194
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2195 # print $OUT "\n",$self->num_hsps, " HSPs\n\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2197 my($hsp);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2198 foreach $hsp ( $self->hsps() ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2199 $hspCount++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2200 print $OUT "\n ", '-'x25, "< HSP #$hspCount >", '-'x25, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2201
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2202 $hsp->display( %param );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2204 if( $hspCount < $self->num_hsps ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2205 print "\n\n\t--------> <RET> FOR NEXT HSP, q TO QUIT <--------\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2206 chop( $reply = <STDIN>);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2207 $reply =~ /^q/i and return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2208 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2209 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2210 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2212
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2214 =head2 homol_data
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2216 Usage : $data = $sbjct_object->homo_data( %named_params );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2217 Purpose : Gets specific similarity data about all HSPs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2218 Returns : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2219 Argument : named parameters forwarded to Bio::Tools::Blast::HSP::homol_data().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2220 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2221 Status : Experimental
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2222 Comments : This is an experimental method used for obtaining an
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2223 : indication of:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2224 : 1) how many HSPs are in a Blast alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2225 : 2) how strong the similarity is between sequences in the HSP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2226 : 3) the endpoints of the alignment (sequence monomer numbers)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2227 : "Homology data" for each HSP is in the format:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2228 : "<integer> <start> <stop>"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2229 : Data for different HSPs are tab-delimited.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2231 See Also : B<Bio::Tools::Blast::homol_data()>, B<Bio::Tools::Blast::HSP::homol_data()>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2233 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2235 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2236 sub homol_data {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2237 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2238 my ($self,%param) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2239 my $data = $self->name();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2240
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2241 foreach ($self->hsps) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2242 $data .="\t".$_->homol_data(%param);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2243 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2244 ## Record ambiguous alignment status.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2245 $data .= "\t".$self->ambiguous_aln();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2246 $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2247 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2248
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2249
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2250 =head2 is_signif
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2251
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2252 Usage : $sbjct_object->is_signif();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2253 Purpose : Determine if the given BLAST hit is significant.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2254 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2255 Returns : Boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2256 Argument : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2257 Throws : n/a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2258 Comments : Uses criteria defined in the parent Blast.pm object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2259 : to assess significance. Currently, only relies on
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2260 : P-value and length criteria.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2261 : This mehtod is largely obsolete since are hits are now by
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2262 : definition significant.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2264 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2265
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2266 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2267 sub is_signif {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2268 #---------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2269 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2270 return ($self->{'_significance'} <= $self->parent->signif and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2271 $self->length > $self->parent->signif_len);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2272 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2273
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2274 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2275 ## CLASS METHODS ##
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2276 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2278 =head1 CLASS METHODS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2280 =head2 get_exponent
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2281
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2282 Usage : &get_exponent( number );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2283 Purpose : Determines the power of 10 exponent of an integer, float,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2284 : or scientific notation number.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2285 Example : &get_exponent("4.0e-206");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2286 : &get_exponent("0.00032");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2287 : &get_exponent("10.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2288 : &get_exponent("1000.0");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2289 : &get_exponent("e+83");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2290 Argument : Float, Integer, or scientific notation number
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2291 Returns : Integer representing the exponent part of the number (+ or -).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2292 : If argument == 0 (zero), return value is "-999".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2293 Comments : Exponents are rounded up (less negative) if the mantissa is >= 5.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2294 : Exponents are rounded down (more negative) if the mantissa is <= -5.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2295 : This method probably belongs in a more general utility class.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2296
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2297 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2298
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2299 #------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2300 sub get_exponent {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2301 #------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2302 my $data = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2304 my($num, $exp) = split /[eE]/, $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2306 if( defined $exp) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2307 $num = 1 if not $num;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2308 $num >= 5 and $exp++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2309 $num <= -5 and $exp--;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2310 } elsif( $num == 0) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2311 $exp = -999;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2312 } elsif( not $num =~ /\./) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2313 $exp = CORE::length($num) -1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2314 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2315 $exp = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2316 $num .= '0' if $num =~ /\.$/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2317 my ($c);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2318 my $rev = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2319 if($num !~ /^0/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2320 $num = reverse($num);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2321 $rev = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2322 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2323 do { $c = chop($num);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2324 $c == 0 && $exp++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2325 } while( $c ne '.');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2326
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2327 $exp = -$exp if $num == 0 and not $rev;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2328 $exp -= 1 if $rev;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2329 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2330 return $exp;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2331 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2333 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2334 __END__
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2336 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2337 # END OF CLASS #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2338 #####################################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2340
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2341 =head1 FOR DEVELOPERS ONLY
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2343 =head2 Data Members
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2345 Information about the various data members of this module is provided for those
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2346 wishing to modify or understand the code. Two things to bear in mind:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2347
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2348 =over 4
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2349
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2350 =item 1 Do NOT rely on these in any code outside of this module.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2351
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2352 All data members are prefixed with an underscore to signify that they are private.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2353 Always use accessor methods. If the accessor doesn't exist or is inadequate,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2354 create or modify an accessor (and let me know, too!). (An exception to this might
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2355 be for HSP.pm which is more tightly coupled to Sbjct.pm and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2356 may access Sbjct data members directly for efficiency purposes, but probably
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2357 should not).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2359 =item 2 This documentation may be incomplete and out of date.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2360
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2361 It is easy for these data member descriptions to become obsolete as
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2362 this module is still evolving. Always double check this info and search
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2363 for members not described here.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2365 =back
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2366
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2367 An instance of Bio::Tools::Blast::Sbjct.pm is a blessed reference to a hash containing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2368 all or some of the following fields:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2369
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2370 FIELD VALUE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2371 --------------------------------------------------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2372 _hsps : Array ref for a list of Bio::Tools::Blast::HSP.pm objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2373 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2374 _db : Database identifier from the summary line.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2375 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2376 _desc : Description data for the hit from the summary line.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2377 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2378 _length : Total length of the hit sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2379 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2380 _score : BLAST score.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2381 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2382 _bits : BLAST score (in bits). Matrix-independent.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2383 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2384 _p : BLAST P value. Obtained from summary section. (Blast1/WU-Blast only)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2385 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2386 _expect : BLAST Expect value. Obtained from summary section.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2387 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2388 _n : BLAST N value (number of HSPs) (Blast1/WU-Blast2 only)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2389 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2390 _frame : Reading frame for TBLASTN and TBLASTX analyses.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2391 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2392 _totalIdentical: Total number of identical aligned monomers.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2393 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2394 _totalConserved: Total number of conserved aligned monomers (a.k.a. "positives").
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2395 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2396 _overlap : Maximum number of overlapping residues between adjacent HSPs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2397 : before considering the alignment to be ambiguous.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2398 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2399 _ambiguous_aln : Boolean. True if the alignment of all HSPs is ambiguous.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2400 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2401 _length_aln_query : Length of the aligned region of the query sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2402 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2403 _length_aln_sbjct : Length of the aligned region of the sbjct sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2404
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2405
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2406 INHERITED DATA MEMBERS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2407 ----------------------
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2408 _name : From Bio::Root::Object.pm. String representing the name of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2409 : sbjct sequence obtained from the BLAST report.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2410 :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2411 _parent : From Bio::Root::Object.pm. This member contains a reference to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2412 : Bio::Tools::Blast.pm object to which this hit belongs.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2413
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2414
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2415 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2417 1;