annotate variant_effect_predictor/Bio/Tools/Blast/Sbjct.pm @ 3:d30fa12e4cc5 default tip

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