| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
# |
|
2
|
|
|
|
|
|
|
# BioPerl module for Bio::Search::Result::GenericResult |
|
3
|
|
|
|
|
|
|
# |
|
4
|
|
|
|
|
|
|
# Please direct questions and support issues to |
|
5
|
|
|
|
|
|
|
# |
|
6
|
|
|
|
|
|
|
# Cared for by Jason Stajich |
|
7
|
|
|
|
|
|
|
# |
|
8
|
|
|
|
|
|
|
# Copyright Jason Stajich |
|
9
|
|
|
|
|
|
|
# |
|
10
|
|
|
|
|
|
|
# You may distribute this module under the same terms as perl itself |
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
# POD documentation - main docs before the code |
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
=head1 NAME |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
Bio::Search::Result::GenericResult - Generic Implementation of |
|
17
|
|
|
|
|
|
|
Bio::Search::Result::ResultI interface applicable to most search |
|
18
|
|
|
|
|
|
|
results. |
|
19
|
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
21
|
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
# typically one gets Results from a SearchIO stream |
|
24
|
|
|
|
|
|
|
use Bio::SearchIO; |
|
25
|
|
|
|
|
|
|
my $io = Bio::SearchIO->new(-format => 'blast', |
|
26
|
|
|
|
|
|
|
-file => 't/data/HUMBETGLOA.tblastx'); |
|
27
|
|
|
|
|
|
|
while( my $result = $io->next_result ) { |
|
28
|
|
|
|
|
|
|
# process all search results within the input stream |
|
29
|
|
|
|
|
|
|
while( my $hit = $result->next_hit ) { |
|
30
|
|
|
|
|
|
|
# insert code here for hit processing |
|
31
|
|
|
|
|
|
|
} |
|
32
|
|
|
|
|
|
|
} |
|
33
|
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
use Bio::Search::Result::GenericResult; |
|
35
|
|
|
|
|
|
|
my @hits = (); # would be a list of Bio::Search::Hit::HitI objects |
|
36
|
|
|
|
|
|
|
# typically these are created from a Bio::SearchIO stream |
|
37
|
|
|
|
|
|
|
my $result = Bio::Search::Result::GenericResult->new |
|
38
|
|
|
|
|
|
|
( -query_name => 'HUMBETGLOA', |
|
39
|
|
|
|
|
|
|
-query_accession => '' |
|
40
|
|
|
|
|
|
|
-query_description => 'Human haplotype C4 beta-globin gene, complete cds.' |
|
41
|
|
|
|
|
|
|
-query_length => 3002 |
|
42
|
|
|
|
|
|
|
-database_name => 'ecoli.aa' |
|
43
|
|
|
|
|
|
|
-database_letters => 4662239, |
|
44
|
|
|
|
|
|
|
-database_entries => 400, |
|
45
|
|
|
|
|
|
|
-parameters => { 'e' => '0.001' }, |
|
46
|
|
|
|
|
|
|
-statistics => { 'kappa' => 0.731 }, |
|
47
|
|
|
|
|
|
|
-algorithm => 'blastp', |
|
48
|
|
|
|
|
|
|
-algorithm_version => '2.1.2', |
|
49
|
|
|
|
|
|
|
); |
|
50
|
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
my $id = $result->query_name(); |
|
52
|
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
my $desc = $result->query_description(); |
|
54
|
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
my $name = $result->database_name(); |
|
56
|
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
my $size = $result->database_letters(); |
|
58
|
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
my $num_entries = $result->database_entries(); |
|
60
|
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
my $gap_ext = $result->get_parameter('e'); |
|
62
|
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
my @params = $result->available_parameters; |
|
64
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
my $kappa = $result->get_statistic('kappa'); |
|
66
|
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
my @statnames = $result->available_statistics; |
|
68
|
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
# TODO: Show how to configure a SearchIO stream so that it generates |
|
70
|
|
|
|
|
|
|
# GenericResult objects. |
|
71
|
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
=head1 DESCRIPTION |
|
74
|
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
This object is an implementation of the Bio::Search::Result::ResultI |
|
76
|
|
|
|
|
|
|
interface and provides a generic place to store results from a |
|
77
|
|
|
|
|
|
|
sequence database search. |
|
78
|
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
Unless you're writing a parser, you won't ever need to create a |
|
80
|
|
|
|
|
|
|
GenericResult or any other ResultI-implementing object. If you use |
|
81
|
|
|
|
|
|
|
the SearchIO system, ResultI objects are created automatically from |
|
82
|
|
|
|
|
|
|
a SearchIO stream which returns Bio::Search::Result::ResultI objects. |
|
83
|
|
|
|
|
|
|
|
|
84
|
|
|
|
|
|
|
For documentation on what you can do with GenericResult (and other ResultI |
|
85
|
|
|
|
|
|
|
objects), please see the API documentation in |
|
86
|
|
|
|
|
|
|
L. |
|
87
|
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
=head1 FEEDBACK |
|
89
|
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
=head2 Mailing Lists |
|
91
|
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
User feedback is an integral part of the evolution of this and other |
|
93
|
|
|
|
|
|
|
Bioperl modules. Send your comments and suggestions preferably to |
|
94
|
|
|
|
|
|
|
the Bioperl mailing list. Your participation is much appreciated. |
|
95
|
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
bioperl-l@bioperl.org - General discussion |
|
97
|
|
|
|
|
|
|
http://bioperl.org/wiki/Mailing_lists - About the mailing lists |
|
98
|
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
=head2 Support |
|
100
|
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
Please direct usage questions or support issues to the mailing list: |
|
102
|
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
I |
|
104
|
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
rather than to the module maintainer directly. Many experienced and |
|
106
|
|
|
|
|
|
|
reponsive experts will be able look at the problem and quickly |
|
107
|
|
|
|
|
|
|
address it. Please include a thorough description of the problem |
|
108
|
|
|
|
|
|
|
with code and data examples if at all possible. |
|
109
|
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
=head2 Reporting Bugs |
|
111
|
|
|
|
|
|
|
|
|
112
|
|
|
|
|
|
|
Report bugs to the Bioperl bug tracking system to help us keep track |
|
113
|
|
|
|
|
|
|
of the bugs and their resolution. Bug reports can be submitted via the |
|
114
|
|
|
|
|
|
|
web: |
|
115
|
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
https://github.com/bioperl/bioperl-live/issues |
|
117
|
|
|
|
|
|
|
|
|
118
|
|
|
|
|
|
|
=head1 AUTHOR - Jason Stajich and Steve Chervitz |
|
119
|
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
Email jason@bioperl.org |
|
121
|
|
|
|
|
|
|
Email sac@bioperl.org |
|
122
|
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
=head1 CONTRIBUTORS |
|
124
|
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
Sendu Bala, bix@sendu.me.uk |
|
126
|
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
=head1 APPENDIX |
|
128
|
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
The rest of the documentation details each of the object methods. |
|
130
|
|
|
|
|
|
|
Internal methods are usually preceded with a _ |
|
131
|
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
=cut |
|
133
|
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
# Let the code begin... |
|
136
|
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
package Bio::Search::Result::GenericResult; |
|
139
|
27
|
|
|
27
|
|
96
|
use strict; |
|
|
27
|
|
|
|
|
30
|
|
|
|
27
|
|
|
|
|
678
|
|
|
140
|
|
|
|
|
|
|
|
|
141
|
27
|
|
|
27
|
|
8906
|
use Bio::Search::GenericStatistics; |
|
|
27
|
|
|
|
|
42
|
|
|
|
27
|
|
|
|
|
552
|
|
|
142
|
27
|
|
|
27
|
|
9396
|
use Bio::Tools::Run::GenericParameters; |
|
|
27
|
|
|
|
|
40
|
|
|
|
27
|
|
|
|
|
678
|
|
|
143
|
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
# bug #1420 |
|
145
|
|
|
|
|
|
|
#use overload |
|
146
|
|
|
|
|
|
|
# '""' => \&to_string; |
|
147
|
|
|
|
|
|
|
|
|
148
|
27
|
|
|
27
|
|
101
|
use base qw(Bio::Root::Root Bio::Search::Result::ResultI); |
|
|
27
|
|
|
|
|
25
|
|
|
|
27
|
|
|
|
|
11132
|
|
|
149
|
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
=head2 new |
|
151
|
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
Title : new |
|
153
|
|
|
|
|
|
|
Usage : my $obj = Bio::Search::Result::GenericResult->new(); |
|
154
|
|
|
|
|
|
|
Function: Builds a new Bio::Search::Result::GenericResult object |
|
155
|
|
|
|
|
|
|
Returns : Bio::Search::Result::GenericResult |
|
156
|
|
|
|
|
|
|
Args : -query_name => Name of query Sequence |
|
157
|
|
|
|
|
|
|
-query_accession => Query accession number (if available) |
|
158
|
|
|
|
|
|
|
-query_description => Description of query sequence |
|
159
|
|
|
|
|
|
|
-query_length => Length of query sequence |
|
160
|
|
|
|
|
|
|
-database_name => Name of database |
|
161
|
|
|
|
|
|
|
-database_letters => Number of residues in database |
|
162
|
|
|
|
|
|
|
-database_entries => Number of entries in database |
|
163
|
|
|
|
|
|
|
-hits => array ref of Bio::Search::Hit::HitI objects |
|
164
|
|
|
|
|
|
|
-parameters => hash ref of search parameters (key => value) |
|
165
|
|
|
|
|
|
|
-statistics => hash ref of search statistics (key => value) |
|
166
|
|
|
|
|
|
|
-algorithm => program name (blastx) |
|
167
|
|
|
|
|
|
|
-algorithm_version => version of the algorithm (2.1.2) |
|
168
|
|
|
|
|
|
|
-algorithm_reference => literature reference string for this algorithm |
|
169
|
|
|
|
|
|
|
-rid => value of the BLAST Request ID (eg. RID: ZABJ4EA7014) |
|
170
|
|
|
|
|
|
|
-hit_factory => Bio::Factory::ObjectFactoryI capable of making |
|
171
|
|
|
|
|
|
|
Bio::Search::Hit::HitI objects |
|
172
|
|
|
|
|
|
|
|
|
173
|
|
|
|
|
|
|
=cut |
|
174
|
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
sub new { |
|
176
|
242
|
|
|
242
|
1
|
915
|
my($class,@args) = @_; |
|
177
|
|
|
|
|
|
|
|
|
178
|
242
|
|
|
|
|
893
|
my $self = $class->SUPER::new(@args); |
|
179
|
|
|
|
|
|
|
|
|
180
|
242
|
|
|
|
|
552
|
$self->{'_hits'} = []; |
|
181
|
242
|
|
|
|
|
448
|
$self->{'_hitindex'} = 0; |
|
182
|
242
|
|
|
|
|
1581
|
$self->{'_statistics'} = Bio::Search::GenericStatistics->new(); |
|
183
|
242
|
|
|
|
|
1476
|
$self->{'_parameters'} = Bio::Tools::Run::GenericParameters->new(); |
|
184
|
|
|
|
|
|
|
|
|
185
|
242
|
|
|
|
|
1770
|
my ($qname,$qacc,$qdesc,$qlen, $qgi, |
|
186
|
|
|
|
|
|
|
$dbname,$dblet,$dbent,$params, |
|
187
|
|
|
|
|
|
|
$stats, $hits, $algo, $algo_v, |
|
188
|
|
|
|
|
|
|
$prog_ref, $algo_r, $rid, $hit_factory) = $self->_rearrange([qw(QUERY_NAME |
|
189
|
|
|
|
|
|
|
QUERY_ACCESSION |
|
190
|
|
|
|
|
|
|
QUERY_DESCRIPTION |
|
191
|
|
|
|
|
|
|
QUERY_LENGTH |
|
192
|
|
|
|
|
|
|
QUERY_GI |
|
193
|
|
|
|
|
|
|
DATABASE_NAME |
|
194
|
|
|
|
|
|
|
DATABASE_LETTERS |
|
195
|
|
|
|
|
|
|
DATABASE_ENTRIES |
|
196
|
|
|
|
|
|
|
PARAMETERS |
|
197
|
|
|
|
|
|
|
STATISTICS |
|
198
|
|
|
|
|
|
|
HITS |
|
199
|
|
|
|
|
|
|
ALGORITHM |
|
200
|
|
|
|
|
|
|
ALGORITHM_VERSION |
|
201
|
|
|
|
|
|
|
PROGRAM_REFERENCE |
|
202
|
|
|
|
|
|
|
ALGORITHM_REFERENCE |
|
203
|
|
|
|
|
|
|
RID |
|
204
|
|
|
|
|
|
|
HIT_FACTORY |
|
205
|
|
|
|
|
|
|
)],@args); |
|
206
|
|
|
|
|
|
|
|
|
207
|
242
|
|
66
|
|
|
1330
|
$algo_r ||= $prog_ref; |
|
208
|
242
|
100
|
|
|
|
945
|
defined $algo && $self->algorithm($algo); |
|
209
|
242
|
100
|
|
|
|
803
|
defined $algo_v && $self->algorithm_version($algo_v); |
|
210
|
242
|
100
|
|
|
|
683
|
defined $algo_r && $self->algorithm_reference($algo_r); |
|
211
|
|
|
|
|
|
|
|
|
212
|
242
|
100
|
|
|
|
510
|
defined $rid && $self->rid($rid); |
|
213
|
|
|
|
|
|
|
|
|
214
|
242
|
100
|
|
|
|
879
|
defined $qname && $self->query_name($qname); |
|
215
|
242
|
100
|
|
|
|
702
|
defined $qacc && $self->query_accession($qacc); |
|
216
|
242
|
100
|
|
|
|
669
|
defined $qdesc && $self->query_description($qdesc); |
|
217
|
242
|
100
|
|
|
|
758
|
defined $qlen && $self->query_length($qlen); |
|
218
|
242
|
50
|
|
|
|
517
|
defined $qgi && $self->query_gi($qgi); |
|
219
|
242
|
100
|
|
|
|
725
|
defined $dbname && $self->database_name($dbname); |
|
220
|
242
|
100
|
|
|
|
637
|
defined $dblet && $self->database_letters($dblet); |
|
221
|
242
|
100
|
|
|
|
654
|
defined $dbent && $self->database_entries($dbent); |
|
222
|
|
|
|
|
|
|
|
|
223
|
242
|
50
|
|
|
|
482
|
defined $hit_factory && $self->hit_factory($hit_factory); |
|
224
|
|
|
|
|
|
|
|
|
225
|
242
|
100
|
|
|
|
510
|
if( defined $params ) { |
|
226
|
93
|
50
|
|
|
|
452
|
if( ref($params) !~ /hash/i ) { |
|
227
|
0
|
|
|
|
|
0
|
$self->throw("Must specify a hash reference with the parameter '-parameters"); |
|
228
|
|
|
|
|
|
|
} |
|
229
|
93
|
|
|
|
|
143
|
while( my ($key,$value) = each %{$params} ) { |
|
|
616
|
|
|
|
|
1357
|
|
|
230
|
523
|
|
|
|
|
935
|
$self->{'_parameters'}->set_parameter($key => $value); |
|
231
|
|
|
|
|
|
|
# $self->add_parameter($key,$value); |
|
232
|
|
|
|
|
|
|
} |
|
233
|
|
|
|
|
|
|
} |
|
234
|
242
|
100
|
|
|
|
595
|
if( defined $stats ) { |
|
235
|
93
|
50
|
|
|
|
374
|
if( ref($stats) !~ /hash/i ) { |
|
236
|
0
|
|
|
|
|
0
|
$self->throw("Must specify a hash reference with the parameter '-statistics"); |
|
237
|
|
|
|
|
|
|
} |
|
238
|
93
|
|
|
|
|
118
|
while( my ($key,$value) = each %{$stats} ) { |
|
|
2467
|
|
|
|
|
4153
|
|
|
239
|
2374
|
|
|
|
|
3051
|
$self->{'_statistics'}->set_statistic($key => $value); |
|
240
|
|
|
|
|
|
|
# $self->add_statistic($key,$value); |
|
241
|
|
|
|
|
|
|
} |
|
242
|
|
|
|
|
|
|
} |
|
243
|
|
|
|
|
|
|
|
|
244
|
242
|
100
|
|
|
|
502
|
if( defined $hits ) { |
|
245
|
84
|
50
|
|
|
|
365
|
$self->throw("Must define arrayref of Hits when initializing a $class\n") unless ref($hits) =~ /array/i; |
|
246
|
|
|
|
|
|
|
|
|
247
|
84
|
|
|
|
|
169
|
foreach my $s ( @$hits ) { |
|
248
|
4681
|
|
|
|
|
4120
|
$self->add_hit($s); |
|
249
|
|
|
|
|
|
|
} |
|
250
|
|
|
|
|
|
|
} |
|
251
|
242
|
|
|
|
|
921
|
return $self; |
|
252
|
|
|
|
|
|
|
} |
|
253
|
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
=head2 algorithm |
|
255
|
|
|
|
|
|
|
|
|
256
|
|
|
|
|
|
|
Title : algorithm |
|
257
|
|
|
|
|
|
|
Usage : my $r_type = $hsp->algorithm |
|
258
|
|
|
|
|
|
|
Function: Obtain the name of the algorithm used to obtain the Result |
|
259
|
|
|
|
|
|
|
Returns : string (e.g., BLASTP) |
|
260
|
|
|
|
|
|
|
Args : [optional] scalar string to set value |
|
261
|
|
|
|
|
|
|
|
|
262
|
|
|
|
|
|
|
=cut |
|
263
|
|
|
|
|
|
|
|
|
264
|
|
|
|
|
|
|
sub algorithm{ |
|
265
|
369
|
|
|
369
|
1
|
9303
|
my ($self,$value) = @_; |
|
266
|
369
|
|
|
|
|
515
|
my $previous = $self->{'_algorithm'}; |
|
267
|
369
|
100
|
66
|
|
|
1197
|
if( defined $value || ! defined $previous ) { |
|
268
|
242
|
50
|
|
|
|
447
|
$value = $previous = '' unless defined $value; |
|
269
|
242
|
|
|
|
|
451
|
$self->{'_algorithm'} = $value; |
|
270
|
|
|
|
|
|
|
} |
|
271
|
369
|
|
|
|
|
763
|
return $previous; |
|
272
|
|
|
|
|
|
|
} |
|
273
|
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
=head2 algorithm_version |
|
275
|
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
Title : algorithm_version |
|
277
|
|
|
|
|
|
|
Usage : my $r_version = $hsp->algorithm_version |
|
278
|
|
|
|
|
|
|
Function: Obtain the version of the algorithm used to obtain the Result |
|
279
|
|
|
|
|
|
|
Returns : string (e.g., 2.1.2) |
|
280
|
|
|
|
|
|
|
Args : [optional] scalar string to set algorithm version value |
|
281
|
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
=cut |
|
283
|
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
sub algorithm_version{ |
|
285
|
186
|
|
|
186
|
1
|
272
|
my ($self,$value) = @_; |
|
286
|
186
|
|
|
|
|
259
|
my $previous = $self->{'_algorithm_version'}; |
|
287
|
186
|
100
|
66
|
|
|
644
|
if( defined $value || ! defined $previous ) { |
|
288
|
136
|
50
|
|
|
|
269
|
$value = $previous = '' unless defined $value; |
|
289
|
136
|
|
|
|
|
258
|
$self->{'_algorithm_version'} = $value; |
|
290
|
|
|
|
|
|
|
} |
|
291
|
|
|
|
|
|
|
|
|
292
|
186
|
|
|
|
|
434
|
return $previous; |
|
293
|
|
|
|
|
|
|
} |
|
294
|
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
=head2 Bio::Search::Result::ResultI interface methods |
|
296
|
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
Bio::Search::Result::ResultI implementation |
|
298
|
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
=head2 next_hit |
|
300
|
|
|
|
|
|
|
|
|
301
|
|
|
|
|
|
|
Title : next_hit |
|
302
|
|
|
|
|
|
|
Usage : while( $hit = $result->next_hit()) { ... } |
|
303
|
|
|
|
|
|
|
Function: Returns the next available Hit object, representing potential |
|
304
|
|
|
|
|
|
|
matches between the query and various entities from the database. |
|
305
|
|
|
|
|
|
|
Returns : a Bio::Search::Hit::HitI object or undef if there are no more. |
|
306
|
|
|
|
|
|
|
Args : none |
|
307
|
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
=cut |
|
310
|
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
sub next_hit { |
|
312
|
1198
|
|
|
1198
|
1
|
9404
|
my ($self,@args) = @_; |
|
313
|
1198
|
|
|
|
|
1539
|
my $index = $self->_nexthitindex; |
|
314
|
1198
|
50
|
|
|
|
930
|
return if $index > scalar @{$self->{'_hits'}}; |
|
|
1198
|
|
|
|
|
1933
|
|
|
315
|
|
|
|
|
|
|
|
|
316
|
1198
|
|
|
|
|
1236
|
my $hit = $self->{'_hits'}->[$index]; |
|
317
|
1198
|
100
|
|
|
|
1811
|
if (ref($hit) eq 'HASH') { |
|
318
|
1175
|
|
33
|
|
|
1449
|
my $factory = $self->hit_factory || $self->throw("Tried to get a Hit, but it was a hash ref and we have no hit factory"); |
|
319
|
1175
|
|
|
|
|
860
|
$hit = $factory->create_object(%{$hit}); |
|
|
1175
|
|
|
|
|
4711
|
|
|
320
|
1175
|
|
|
|
|
2073
|
$self->{'_hits'}->[$index] = $hit; |
|
321
|
1175
|
|
|
|
|
3630
|
delete $self->{_hashes}->{$index}; |
|
322
|
|
|
|
|
|
|
} |
|
323
|
1198
|
|
|
|
|
2037
|
return $hit; |
|
324
|
|
|
|
|
|
|
} |
|
325
|
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
=head2 query_name |
|
327
|
|
|
|
|
|
|
|
|
328
|
|
|
|
|
|
|
Title : query_name |
|
329
|
|
|
|
|
|
|
Usage : $id = $result->query_name(); |
|
330
|
|
|
|
|
|
|
Function: Get the string identifier of the query used by the |
|
331
|
|
|
|
|
|
|
algorithm that performed the search. |
|
332
|
|
|
|
|
|
|
Returns : a string. |
|
333
|
|
|
|
|
|
|
Args : [optional] new string value for query name |
|
334
|
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
=cut |
|
336
|
|
|
|
|
|
|
|
|
337
|
|
|
|
|
|
|
sub query_name { |
|
338
|
391
|
|
|
391
|
1
|
565
|
my ($self,$value) = @_; |
|
339
|
391
|
|
|
|
|
566
|
my $previous = $self->{'_queryname'}; |
|
340
|
391
|
100
|
100
|
|
|
1342
|
if( defined $value || ! defined $previous ) { |
|
341
|
238
|
100
|
|
|
|
714
|
$value = $previous = '' unless defined $value; |
|
342
|
238
|
|
|
|
|
454
|
$self->{'_queryname'} = $value; |
|
343
|
|
|
|
|
|
|
} |
|
344
|
391
|
|
|
|
|
1430
|
return $previous; |
|
345
|
|
|
|
|
|
|
} |
|
346
|
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
=head2 query_accession |
|
348
|
|
|
|
|
|
|
|
|
349
|
|
|
|
|
|
|
Title : query_accession |
|
350
|
|
|
|
|
|
|
Usage : $id = $result->query_accession(); |
|
351
|
|
|
|
|
|
|
Function: Get the accession (if available) for the query sequence |
|
352
|
|
|
|
|
|
|
Returns : a string |
|
353
|
|
|
|
|
|
|
Args : [optional] new string value for accession |
|
354
|
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
=cut |
|
356
|
|
|
|
|
|
|
|
|
357
|
|
|
|
|
|
|
sub query_accession { |
|
358
|
193
|
|
|
193
|
1
|
283
|
my ($self,$value) = @_; |
|
359
|
193
|
|
|
|
|
300
|
my $previous = $self->{'_queryacc'}; |
|
360
|
193
|
100
|
100
|
|
|
561
|
if( defined $value || ! defined $previous ) { |
|
361
|
176
|
100
|
|
|
|
370
|
$value = $previous = '' unless defined $value; |
|
362
|
176
|
|
|
|
|
324
|
$self->{'_queryacc'} = $value; |
|
363
|
|
|
|
|
|
|
} |
|
364
|
193
|
|
|
|
|
256
|
return $previous; |
|
365
|
|
|
|
|
|
|
} |
|
366
|
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
=head2 query_gi |
|
368
|
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
Title : query_gi |
|
370
|
|
|
|
|
|
|
Usage : $acc = $hit->query_gi(); |
|
371
|
|
|
|
|
|
|
Function: Retrieve the NCBI Unique ID (aka the GI #), |
|
372
|
|
|
|
|
|
|
if available, for the query |
|
373
|
|
|
|
|
|
|
Returns : a scalar string (empty string if not set) |
|
374
|
|
|
|
|
|
|
Args : none |
|
375
|
|
|
|
|
|
|
|
|
376
|
|
|
|
|
|
|
=cut |
|
377
|
|
|
|
|
|
|
|
|
378
|
|
|
|
|
|
|
sub query_gi { |
|
379
|
8
|
|
|
8
|
1
|
18
|
my ($self,$value) = @_; |
|
380
|
8
|
50
|
|
|
|
24
|
if( defined $value ) { |
|
381
|
0
|
|
|
|
|
0
|
$self->{'_query_gi'} = $value; |
|
382
|
|
|
|
|
|
|
} else { |
|
383
|
8
|
50
|
|
|
|
17
|
$self->{'_query_gi'} = $self->query_name =~ m{^gi\|(\d+)} ? $1 : ''; |
|
384
|
|
|
|
|
|
|
} |
|
385
|
8
|
|
|
|
|
36
|
return $self->{'_query_gi'}; |
|
386
|
|
|
|
|
|
|
} |
|
387
|
|
|
|
|
|
|
|
|
388
|
|
|
|
|
|
|
=head2 query_length |
|
389
|
|
|
|
|
|
|
|
|
390
|
|
|
|
|
|
|
Title : query_length |
|
391
|
|
|
|
|
|
|
Usage : $id = $result->query_length(); |
|
392
|
|
|
|
|
|
|
Function: Get the length of the query sequence |
|
393
|
|
|
|
|
|
|
used in the search. |
|
394
|
|
|
|
|
|
|
Returns : a number |
|
395
|
|
|
|
|
|
|
Args : [optional] new integer value for query length |
|
396
|
|
|
|
|
|
|
|
|
397
|
|
|
|
|
|
|
=cut |
|
398
|
|
|
|
|
|
|
|
|
399
|
|
|
|
|
|
|
sub query_length { |
|
400
|
261
|
|
|
261
|
1
|
559
|
my ($self,$value) = @_; |
|
401
|
261
|
|
|
|
|
392
|
my $previous = $self->{'_querylength'}; |
|
402
|
261
|
100
|
100
|
|
|
923
|
if( defined $value || ! defined $previous ) { |
|
403
|
149
|
100
|
|
|
|
297
|
$value = $previous = 0 unless defined $value; |
|
404
|
149
|
|
|
|
|
259
|
$self->{'_querylength'} = $value; |
|
405
|
|
|
|
|
|
|
} |
|
406
|
261
|
|
|
|
|
551
|
return $previous; |
|
407
|
|
|
|
|
|
|
} |
|
408
|
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
=head2 query_description |
|
410
|
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
Title : query_description |
|
412
|
|
|
|
|
|
|
Usage : $id = $result->query_description(); |
|
413
|
|
|
|
|
|
|
Function: Get the description of the query sequence |
|
414
|
|
|
|
|
|
|
used in the search. |
|
415
|
|
|
|
|
|
|
Returns : a string |
|
416
|
|
|
|
|
|
|
Args : [optional] new string for the query description |
|
417
|
|
|
|
|
|
|
|
|
418
|
|
|
|
|
|
|
=cut |
|
419
|
|
|
|
|
|
|
|
|
420
|
|
|
|
|
|
|
sub query_description { |
|
421
|
233
|
|
|
233
|
1
|
326
|
my ($self,$value) = @_; |
|
422
|
233
|
|
|
|
|
594
|
my $previous = $self->{'_querydesc'}; |
|
423
|
233
|
100
|
100
|
|
|
790
|
if( defined $value || ! defined $previous ) { |
|
424
|
205
|
100
|
|
|
|
404
|
$value = $previous = '' unless defined $value; |
|
425
|
205
|
|
|
|
|
436
|
$self->{'_querydesc'} = $value; |
|
426
|
|
|
|
|
|
|
} |
|
427
|
233
|
|
|
|
|
355
|
return $previous; |
|
428
|
|
|
|
|
|
|
} |
|
429
|
|
|
|
|
|
|
|
|
430
|
|
|
|
|
|
|
|
|
431
|
|
|
|
|
|
|
=head2 database_name |
|
432
|
|
|
|
|
|
|
|
|
433
|
|
|
|
|
|
|
Title : database_name |
|
434
|
|
|
|
|
|
|
Usage : $name = $result->database_name() |
|
435
|
|
|
|
|
|
|
Function: Used to obtain the name of the database that the query was searched |
|
436
|
|
|
|
|
|
|
against by the algorithm. |
|
437
|
|
|
|
|
|
|
Returns : a scalar string |
|
438
|
|
|
|
|
|
|
Args : [optional] new string for the db name |
|
439
|
|
|
|
|
|
|
|
|
440
|
|
|
|
|
|
|
=cut |
|
441
|
|
|
|
|
|
|
|
|
442
|
|
|
|
|
|
|
sub database_name { |
|
443
|
140
|
|
|
140
|
1
|
200
|
my ($self,$value) = @_; |
|
444
|
140
|
|
|
|
|
218
|
my $previous = $self->{'_dbname'}; |
|
445
|
140
|
100
|
66
|
|
|
500
|
if( defined $value || ! defined $previous ) { |
|
446
|
105
|
50
|
|
|
|
213
|
$value = $previous = '' unless defined $value; |
|
447
|
105
|
|
|
|
|
181
|
$self->{'_dbname'} = $value; |
|
448
|
|
|
|
|
|
|
} |
|
449
|
140
|
|
|
|
|
282
|
return $previous; |
|
450
|
|
|
|
|
|
|
} |
|
451
|
|
|
|
|
|
|
|
|
452
|
|
|
|
|
|
|
=head2 database_letters |
|
453
|
|
|
|
|
|
|
|
|
454
|
|
|
|
|
|
|
Title : database_letters |
|
455
|
|
|
|
|
|
|
Usage : $size = $result->database_letters() |
|
456
|
|
|
|
|
|
|
Function: Used to obtain the size of database that was searched against. |
|
457
|
|
|
|
|
|
|
Returns : a scalar integer (units specific to algorithm, but probably the |
|
458
|
|
|
|
|
|
|
total number of residues in the database, if available) or undef if |
|
459
|
|
|
|
|
|
|
the information was not available to the Processor object. |
|
460
|
|
|
|
|
|
|
Args : [optional] new scalar integer for number of letters in db |
|
461
|
|
|
|
|
|
|
|
|
462
|
|
|
|
|
|
|
|
|
463
|
|
|
|
|
|
|
=cut |
|
464
|
|
|
|
|
|
|
|
|
465
|
|
|
|
|
|
|
sub database_letters { |
|
466
|
126
|
|
|
126
|
1
|
205
|
my ($self,$value) = @_; |
|
467
|
126
|
|
|
|
|
206
|
my $previous = $self->{'_dbletters'}; |
|
468
|
126
|
100
|
100
|
|
|
480
|
if( defined $value || ! defined $previous ) { |
|
469
|
99
|
100
|
|
|
|
203
|
$value = $previous = '' unless defined $value; |
|
470
|
99
|
|
|
|
|
166
|
$self->{'_dbletters'} = $value; |
|
471
|
|
|
|
|
|
|
} |
|
472
|
126
|
|
|
|
|
221
|
return $previous; |
|
473
|
|
|
|
|
|
|
} |
|
474
|
|
|
|
|
|
|
|
|
475
|
|
|
|
|
|
|
=head2 database_entries |
|
476
|
|
|
|
|
|
|
|
|
477
|
|
|
|
|
|
|
Title : database_entries |
|
478
|
|
|
|
|
|
|
Usage : $num_entries = $result->database_entries() |
|
479
|
|
|
|
|
|
|
Function: Used to obtain the number of entries contained in the database. |
|
480
|
|
|
|
|
|
|
Returns : a scalar integer representing the number of entities in the database |
|
481
|
|
|
|
|
|
|
or undef if the information was not available. |
|
482
|
|
|
|
|
|
|
Args : [optional] new integer for the number of sequence entries in the db |
|
483
|
|
|
|
|
|
|
|
|
484
|
|
|
|
|
|
|
|
|
485
|
|
|
|
|
|
|
=cut |
|
486
|
|
|
|
|
|
|
|
|
487
|
|
|
|
|
|
|
sub database_entries { |
|
488
|
124
|
|
|
124
|
1
|
178
|
my ($self,$value) = @_; |
|
489
|
124
|
|
|
|
|
212
|
my $previous = $self->{'_dbentries'}; |
|
490
|
124
|
100
|
100
|
|
|
444
|
if( defined $value || ! defined $previous ) { |
|
491
|
99
|
100
|
|
|
|
203
|
$value = $previous = '' unless defined $value; |
|
492
|
99
|
|
|
|
|
185
|
$self->{'_dbentries'} = $value; |
|
493
|
|
|
|
|
|
|
} |
|
494
|
124
|
|
|
|
|
208
|
return $previous; |
|
495
|
|
|
|
|
|
|
} |
|
496
|
|
|
|
|
|
|
|
|
497
|
|
|
|
|
|
|
=head2 get_parameter |
|
498
|
|
|
|
|
|
|
|
|
499
|
|
|
|
|
|
|
Title : get_parameter |
|
500
|
|
|
|
|
|
|
Usage : my $gap_ext = $report->get_parameter('gapext') |
|
501
|
|
|
|
|
|
|
Function: Returns the value for a specific parameter used |
|
502
|
|
|
|
|
|
|
when running this report |
|
503
|
|
|
|
|
|
|
Returns : string |
|
504
|
|
|
|
|
|
|
Args : name of parameter (string) |
|
505
|
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
=cut |
|
507
|
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
sub get_parameter { |
|
509
|
76
|
|
|
76
|
1
|
107
|
my ($self,$name) = @_; |
|
510
|
76
|
|
|
|
|
194
|
return $self->{'_parameters'}->get_parameter($name); |
|
511
|
|
|
|
|
|
|
} |
|
512
|
|
|
|
|
|
|
|
|
513
|
|
|
|
|
|
|
=head2 available_parameters |
|
514
|
|
|
|
|
|
|
|
|
515
|
|
|
|
|
|
|
Title : available_parameters |
|
516
|
|
|
|
|
|
|
Usage : my @params = $report->available_paramters |
|
517
|
|
|
|
|
|
|
Function: Returns the names of the available parameters |
|
518
|
|
|
|
|
|
|
Returns : Return list of available parameters used for this report |
|
519
|
|
|
|
|
|
|
Args : none |
|
520
|
|
|
|
|
|
|
|
|
521
|
|
|
|
|
|
|
=cut |
|
522
|
|
|
|
|
|
|
|
|
523
|
|
|
|
|
|
|
sub available_parameters{ |
|
524
|
7
|
|
|
7
|
1
|
13
|
my ($self) = @_; |
|
525
|
7
|
|
|
|
|
41
|
return $self->{'_parameters'}->available_parameters; |
|
526
|
|
|
|
|
|
|
} |
|
527
|
|
|
|
|
|
|
|
|
528
|
|
|
|
|
|
|
|
|
529
|
|
|
|
|
|
|
=head2 get_statistic |
|
530
|
|
|
|
|
|
|
|
|
531
|
|
|
|
|
|
|
Title : get_statistic |
|
532
|
|
|
|
|
|
|
Usage : my $gap_ext = $report->get_statistic('kappa') |
|
533
|
|
|
|
|
|
|
Function: Returns the value for a specific statistic available |
|
534
|
|
|
|
|
|
|
from this report |
|
535
|
|
|
|
|
|
|
Returns : string |
|
536
|
|
|
|
|
|
|
Args : name of statistic (string) |
|
537
|
|
|
|
|
|
|
|
|
538
|
|
|
|
|
|
|
=cut |
|
539
|
|
|
|
|
|
|
|
|
540
|
|
|
|
|
|
|
sub get_statistic{ |
|
541
|
305
|
|
|
305
|
1
|
453
|
my ($self,$key) = @_; |
|
542
|
305
|
|
|
|
|
829
|
return $self->{'_statistics'}->get_statistic($key); |
|
543
|
|
|
|
|
|
|
} |
|
544
|
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
=head2 available_statistics |
|
546
|
|
|
|
|
|
|
|
|
547
|
|
|
|
|
|
|
Title : available_statistics |
|
548
|
|
|
|
|
|
|
Usage : my @statnames = $report->available_statistics |
|
549
|
|
|
|
|
|
|
Function: Returns the names of the available statistics |
|
550
|
|
|
|
|
|
|
Returns : Return list of available statistics used for this report |
|
551
|
|
|
|
|
|
|
Args : none |
|
552
|
|
|
|
|
|
|
|
|
553
|
|
|
|
|
|
|
=cut |
|
554
|
|
|
|
|
|
|
|
|
555
|
|
|
|
|
|
|
sub available_statistics{ |
|
556
|
7
|
|
|
7
|
1
|
11
|
my ($self) = @_; |
|
557
|
7
|
|
|
|
|
29
|
return $self->{'_statistics'}->available_statistics; |
|
558
|
|
|
|
|
|
|
} |
|
559
|
|
|
|
|
|
|
|
|
560
|
|
|
|
|
|
|
=head2 Bio::Search::Report |
|
561
|
|
|
|
|
|
|
|
|
562
|
|
|
|
|
|
|
Bio::Search::Result::GenericResult specific methods |
|
563
|
|
|
|
|
|
|
|
|
564
|
|
|
|
|
|
|
=head2 add_hit |
|
565
|
|
|
|
|
|
|
|
|
566
|
|
|
|
|
|
|
Title : add_hit |
|
567
|
|
|
|
|
|
|
Usage : $report->add_hit($hit) |
|
568
|
|
|
|
|
|
|
Function: Adds a HitI to the stored list of hits |
|
569
|
|
|
|
|
|
|
Returns : Number of HitI currently stored |
|
570
|
|
|
|
|
|
|
Args : Bio::Search::Hit::HitI |
|
571
|
|
|
|
|
|
|
|
|
572
|
|
|
|
|
|
|
=cut |
|
573
|
|
|
|
|
|
|
|
|
574
|
|
|
|
|
|
|
sub add_hit { |
|
575
|
4743
|
|
|
4743
|
1
|
3249
|
my ($self,$s) = @_; |
|
576
|
4743
|
50
|
66
|
|
|
7261
|
if (ref($s) eq 'HASH' || $s->isa('Bio::Search::Hit::HitI') ) { |
|
577
|
4743
|
|
|
|
|
2543
|
push @{$self->{'_hits'}}, $s; |
|
|
4743
|
|
|
|
|
4492
|
|
|
578
|
|
|
|
|
|
|
} |
|
579
|
|
|
|
|
|
|
else { |
|
580
|
0
|
|
|
|
|
0
|
$self->throw("Passed in " .ref($s)." as a Hit which is not a Bio::Search::HitI."); |
|
581
|
|
|
|
|
|
|
} |
|
582
|
|
|
|
|
|
|
|
|
583
|
4743
|
100
|
|
|
|
5386
|
if (ref($s) eq 'HASH') { |
|
584
|
4680
|
|
|
|
|
2995
|
$self->{_hashes}->{$#{$self->{'_hits'}}} = 1; |
|
|
4680
|
|
|
|
|
6934
|
|
|
585
|
|
|
|
|
|
|
} |
|
586
|
4743
|
|
|
|
|
3271
|
return scalar @{$self->{'_hits'}}; |
|
|
4743
|
|
|
|
|
5330
|
|
|
587
|
|
|
|
|
|
|
} |
|
588
|
|
|
|
|
|
|
|
|
589
|
|
|
|
|
|
|
=head2 hit_factory |
|
590
|
|
|
|
|
|
|
|
|
591
|
|
|
|
|
|
|
Title : hit_factory |
|
592
|
|
|
|
|
|
|
Usage : $hit->hit_factory($hit_factory) |
|
593
|
|
|
|
|
|
|
Function: Get/set the factory used to build HitI objects if necessary. |
|
594
|
|
|
|
|
|
|
Returns : Bio::Factory::ObjectFactoryI |
|
595
|
|
|
|
|
|
|
Args : Bio::Factory::ObjectFactoryI |
|
596
|
|
|
|
|
|
|
|
|
597
|
|
|
|
|
|
|
=cut |
|
598
|
|
|
|
|
|
|
|
|
599
|
|
|
|
|
|
|
sub hit_factory { |
|
600
|
1437
|
|
|
1437
|
1
|
1155
|
my $self = shift; |
|
601
|
1437
|
100
|
|
|
|
2031
|
if (@_) { $self->{_hit_factory} = shift } |
|
|
180
|
|
|
|
|
315
|
|
|
602
|
1437
|
|
50
|
|
|
3563
|
return $self->{_hit_factory} || return; |
|
603
|
|
|
|
|
|
|
} |
|
604
|
|
|
|
|
|
|
|
|
605
|
|
|
|
|
|
|
=head2 rewind |
|
606
|
|
|
|
|
|
|
|
|
607
|
|
|
|
|
|
|
Title : rewind |
|
608
|
|
|
|
|
|
|
Usage : $result->rewind; |
|
609
|
|
|
|
|
|
|
Function: Allow one to reset the Hit iterator to the beginning |
|
610
|
|
|
|
|
|
|
Since this is an in-memory implementation |
|
611
|
|
|
|
|
|
|
Returns : none |
|
612
|
|
|
|
|
|
|
Args : none |
|
613
|
|
|
|
|
|
|
|
|
614
|
|
|
|
|
|
|
=cut |
|
615
|
|
|
|
|
|
|
|
|
616
|
|
|
|
|
|
|
sub rewind{ |
|
617
|
5
|
|
|
5
|
1
|
6
|
my ($self) = @_; |
|
618
|
5
|
|
|
|
|
16
|
$self->{'_hitindex'} = 0; |
|
619
|
|
|
|
|
|
|
} |
|
620
|
|
|
|
|
|
|
|
|
621
|
|
|
|
|
|
|
|
|
622
|
|
|
|
|
|
|
=head2 _nexthitindex |
|
623
|
|
|
|
|
|
|
|
|
624
|
|
|
|
|
|
|
Title : _nexthitindex |
|
625
|
|
|
|
|
|
|
Usage : private |
|
626
|
|
|
|
|
|
|
|
|
627
|
|
|
|
|
|
|
=cut |
|
628
|
|
|
|
|
|
|
|
|
629
|
|
|
|
|
|
|
sub _nexthitindex{ |
|
630
|
1198
|
|
|
1198
|
|
858
|
my ($self,@args) = @_; |
|
631
|
1198
|
|
|
|
|
1387
|
return $self->{'_hitindex'}++; |
|
632
|
|
|
|
|
|
|
} |
|
633
|
|
|
|
|
|
|
|
|
634
|
|
|
|
|
|
|
|
|
635
|
|
|
|
|
|
|
=head2 add_parameter |
|
636
|
|
|
|
|
|
|
|
|
637
|
|
|
|
|
|
|
Title : add_parameter |
|
638
|
|
|
|
|
|
|
Usage : $report->add_parameter('gapext', 11); |
|
639
|
|
|
|
|
|
|
Function: Adds a parameter |
|
640
|
|
|
|
|
|
|
Returns : none |
|
641
|
|
|
|
|
|
|
Args : key - key value name for this parama |
|
642
|
|
|
|
|
|
|
value - value for this parameter |
|
643
|
|
|
|
|
|
|
|
|
644
|
|
|
|
|
|
|
=cut |
|
645
|
|
|
|
|
|
|
|
|
646
|
|
|
|
|
|
|
sub add_parameter { |
|
647
|
0
|
|
|
0
|
1
|
0
|
my ($self,$key,$value) = @_; |
|
648
|
0
|
|
|
|
|
0
|
$self->{'_parameters'}->set_parameter($key => $value); |
|
649
|
|
|
|
|
|
|
} |
|
650
|
|
|
|
|
|
|
|
|
651
|
|
|
|
|
|
|
|
|
652
|
|
|
|
|
|
|
=head2 add_statistic |
|
653
|
|
|
|
|
|
|
|
|
654
|
|
|
|
|
|
|
Title : add_statistic |
|
655
|
|
|
|
|
|
|
Usage : $report->add_statistic('lambda', 2.3); |
|
656
|
|
|
|
|
|
|
Function: Adds a parameter |
|
657
|
|
|
|
|
|
|
Returns : none |
|
658
|
|
|
|
|
|
|
Args : key - key value name for this parama |
|
659
|
|
|
|
|
|
|
value - value for this parameter |
|
660
|
|
|
|
|
|
|
|
|
661
|
|
|
|
|
|
|
=cut |
|
662
|
|
|
|
|
|
|
|
|
663
|
|
|
|
|
|
|
sub add_statistic { |
|
664
|
0
|
|
|
0
|
1
|
0
|
my ($self,$key,$value) = @_; |
|
665
|
0
|
|
|
|
|
0
|
$self->{'_statistics'}->set_statistic($key => $value); |
|
666
|
0
|
|
|
|
|
0
|
return; |
|
667
|
|
|
|
|
|
|
} |
|
668
|
|
|
|
|
|
|
|
|
669
|
|
|
|
|
|
|
|
|
670
|
|
|
|
|
|
|
=head2 num_hits |
|
671
|
|
|
|
|
|
|
|
|
672
|
|
|
|
|
|
|
Title : num_hits |
|
673
|
|
|
|
|
|
|
Usage : my $hitcount= $result->num_hits |
|
674
|
|
|
|
|
|
|
Function: returns the number of hits for this query result |
|
675
|
|
|
|
|
|
|
Returns : integer |
|
676
|
|
|
|
|
|
|
Args : none |
|
677
|
|
|
|
|
|
|
|
|
678
|
|
|
|
|
|
|
=cut |
|
679
|
|
|
|
|
|
|
|
|
680
|
|
|
|
|
|
|
sub num_hits{ |
|
681
|
32
|
|
|
32
|
1
|
1909
|
my ($self) = shift; |
|
682
|
32
|
50
|
|
|
|
100
|
if (not defined $self->{'_hits'}) { |
|
683
|
0
|
|
|
|
|
0
|
$self->throw("Can't get Hits: data not collected."); |
|
684
|
|
|
|
|
|
|
} |
|
685
|
32
|
|
|
|
|
44
|
return scalar(@{$self->{'_hits'}}); |
|
|
32
|
|
|
|
|
141
|
|
|
686
|
|
|
|
|
|
|
} |
|
687
|
|
|
|
|
|
|
|
|
688
|
|
|
|
|
|
|
|
|
689
|
|
|
|
|
|
|
=head2 hits |
|
690
|
|
|
|
|
|
|
|
|
691
|
|
|
|
|
|
|
Title : hits |
|
692
|
|
|
|
|
|
|
Usage : my @hits = $result->hits |
|
693
|
|
|
|
|
|
|
Function: Returns the available hits for this Result |
|
694
|
|
|
|
|
|
|
Returns : Array of L objects |
|
695
|
|
|
|
|
|
|
Args : none |
|
696
|
|
|
|
|
|
|
|
|
697
|
|
|
|
|
|
|
|
|
698
|
|
|
|
|
|
|
=cut |
|
699
|
|
|
|
|
|
|
|
|
700
|
|
|
|
|
|
|
sub hits { |
|
701
|
5
|
|
|
5
|
1
|
10
|
my ($self) = shift; |
|
702
|
|
|
|
|
|
|
|
|
703
|
5
|
50
|
|
|
|
7
|
foreach my $i (keys %{$self->{_hashes} || {}}) { |
|
|
5
|
|
|
|
|
33
|
|
|
704
|
82
|
|
33
|
|
|
128
|
my $factory = $self->hit_factory || $self->throw("Tried to get a Hit, but it was a hash ref and we have no hit factory"); |
|
705
|
82
|
|
|
|
|
61
|
$self->{'_hits'}->[$i] = $factory->create_object(%{$self->{'_hits'}->[$i]}); |
|
|
82
|
|
|
|
|
396
|
|
|
706
|
82
|
|
|
|
|
284
|
delete $self->{_hashes}->{$i}; |
|
707
|
|
|
|
|
|
|
} |
|
708
|
|
|
|
|
|
|
|
|
709
|
5
|
|
|
|
|
13
|
my @hits = (); |
|
710
|
5
|
50
|
|
|
|
13
|
if (ref $self->{'_hits'}) { |
|
711
|
5
|
|
|
|
|
8
|
@hits = @{$self->{'_hits'}}; |
|
|
5
|
|
|
|
|
15
|
|
|
712
|
|
|
|
|
|
|
} |
|
713
|
5
|
|
|
|
|
17
|
return @hits; |
|
714
|
|
|
|
|
|
|
} |
|
715
|
|
|
|
|
|
|
|
|
716
|
|
|
|
|
|
|
=head2 algorithm_reference |
|
717
|
|
|
|
|
|
|
|
|
718
|
|
|
|
|
|
|
Title : algorithm_reference |
|
719
|
|
|
|
|
|
|
Usage : $obj->algorithm_reference($newval) |
|
720
|
|
|
|
|
|
|
Function: |
|
721
|
|
|
|
|
|
|
Returns : string containing literature reference for the algorithm |
|
722
|
|
|
|
|
|
|
Args : newvalue string (optional) |
|
723
|
|
|
|
|
|
|
Comments: Formerly named program_reference(), which is still supported |
|
724
|
|
|
|
|
|
|
for backwards compatibility. |
|
725
|
|
|
|
|
|
|
|
|
726
|
|
|
|
|
|
|
=cut |
|
727
|
|
|
|
|
|
|
|
|
728
|
|
|
|
|
|
|
sub algorithm_reference{ |
|
729
|
109
|
|
|
109
|
1
|
175
|
my ($self,$value) = @_; |
|
730
|
109
|
100
|
|
|
|
233
|
if( defined $value) { |
|
731
|
69
|
|
|
|
|
188
|
$self->{'algorithm_reference'} = $value; |
|
732
|
|
|
|
|
|
|
} |
|
733
|
109
|
|
|
|
|
353
|
return $self->{'algorithm_reference'}; |
|
734
|
|
|
|
|
|
|
} |
|
735
|
|
|
|
|
|
|
|
|
736
|
|
|
|
|
|
|
=head2 program_reference |
|
737
|
|
|
|
|
|
|
|
|
738
|
|
|
|
|
|
|
Title : program_reference |
|
739
|
|
|
|
|
|
|
Usage : $obj->program_reference() |
|
740
|
|
|
|
|
|
|
Function: |
|
741
|
|
|
|
|
|
|
Returns : string containing literature reference for the algorithm |
|
742
|
|
|
|
|
|
|
Args : |
|
743
|
|
|
|
|
|
|
Comments: Deprecated - use algorithm_reference() instead. |
|
744
|
|
|
|
|
|
|
|
|
745
|
|
|
|
|
|
|
=cut |
|
746
|
|
|
|
|
|
|
|
|
747
|
5
|
|
|
5
|
1
|
19
|
sub program_reference { shift->algorithm_reference(@_); } |
|
748
|
|
|
|
|
|
|
|
|
749
|
|
|
|
|
|
|
=head2 rid |
|
750
|
|
|
|
|
|
|
|
|
751
|
|
|
|
|
|
|
Title : rid |
|
752
|
|
|
|
|
|
|
Usage : $obj->rid($newval) |
|
753
|
|
|
|
|
|
|
Function: |
|
754
|
|
|
|
|
|
|
Returns : value of the BLAST Request ID (eg. RID: ZABJ4EA7014) |
|
755
|
|
|
|
|
|
|
Args : newvalue (optional) |
|
756
|
|
|
|
|
|
|
Comments: The default implementation in ResultI returns an empty string |
|
757
|
|
|
|
|
|
|
rather than throwing a NotImplemented exception, since |
|
758
|
|
|
|
|
|
|
the RID may not always be available and is not critical. |
|
759
|
|
|
|
|
|
|
See: (1) https://www.ncbi.nlm.nih.gov/Class/MLACourse/Modules/BLAST/rid.html |
|
760
|
|
|
|
|
|
|
(2) https://www.ncbi.nlm.nih.gov/staff/tao/URLAPI/new/node63.html |
|
761
|
|
|
|
|
|
|
=cut |
|
762
|
|
|
|
|
|
|
|
|
763
|
|
|
|
|
|
|
sub rid{ |
|
764
|
14
|
|
|
14
|
1
|
29
|
my ($self,$value) = @_; |
|
765
|
14
|
100
|
|
|
|
44
|
if( defined $value) { |
|
766
|
9
|
|
|
|
|
26
|
$self->{'rid'} = $value; |
|
767
|
|
|
|
|
|
|
} |
|
768
|
14
|
|
|
|
|
41
|
return $self->{'rid'}; |
|
769
|
|
|
|
|
|
|
} |
|
770
|
|
|
|
|
|
|
|
|
771
|
|
|
|
|
|
|
=head2 no_hits_found |
|
772
|
|
|
|
|
|
|
|
|
773
|
|
|
|
|
|
|
See documentation in L |
|
774
|
|
|
|
|
|
|
|
|
775
|
|
|
|
|
|
|
=cut |
|
776
|
|
|
|
|
|
|
|
|
777
|
|
|
|
|
|
|
sub no_hits_found { |
|
778
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
|
779
|
|
|
|
|
|
|
|
|
780
|
|
|
|
|
|
|
# Watch the double negative! |
|
781
|
|
|
|
|
|
|
# result = 0 means "yes hits were found" |
|
782
|
|
|
|
|
|
|
# result = 1 means "no hits were found" |
|
783
|
|
|
|
|
|
|
|
|
784
|
0
|
|
|
|
|
|
return $self->{'_no_hits_found'}; |
|
785
|
|
|
|
|
|
|
} |
|
786
|
|
|
|
|
|
|
|
|
787
|
|
|
|
|
|
|
|
|
788
|
|
|
|
|
|
|
=head2 set_no_hits_found |
|
789
|
|
|
|
|
|
|
|
|
790
|
|
|
|
|
|
|
See documentation in L |
|
791
|
|
|
|
|
|
|
|
|
792
|
|
|
|
|
|
|
=cut |
|
793
|
|
|
|
|
|
|
|
|
794
|
|
|
|
|
|
|
sub set_no_hits_found { |
|
795
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
|
796
|
0
|
|
|
|
|
|
$self->{'_no_hits_found'} = 1; |
|
797
|
|
|
|
|
|
|
} |
|
798
|
|
|
|
|
|
|
|
|
799
|
|
|
|
|
|
|
|
|
800
|
|
|
|
|
|
|
=head2 to_string |
|
801
|
|
|
|
|
|
|
|
|
802
|
|
|
|
|
|
|
Title : to_string |
|
803
|
|
|
|
|
|
|
Usage : print $blast->to_string; |
|
804
|
|
|
|
|
|
|
Function: Returns a string representation for the Blast result. |
|
805
|
|
|
|
|
|
|
Primarily intended for debugging purposes. |
|
806
|
|
|
|
|
|
|
Example : see usage |
|
807
|
|
|
|
|
|
|
Returns : A string of the form: |
|
808
|
|
|
|
|
|
|
[GenericResult] query= db=
|
|
809
|
|
|
|
|
|
|
e.g.: |
|
810
|
|
|
|
|
|
|
[GenericResult] BLASTP query=YEL060C vacuolar protease B, db=PDBUNIQ |
|
811
|
|
|
|
|
|
|
Args : None |
|
812
|
|
|
|
|
|
|
|
|
813
|
|
|
|
|
|
|
=cut |
|
814
|
|
|
|
|
|
|
|
|
815
|
|
|
|
|
|
|
sub to_string { |
|
816
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
|
817
|
0
|
|
|
|
|
|
my $str = ref($self) . ", algorithm= " . $self->algorithm . ", query=" . $self->query_name . " " . $self->query_description .", db=" . $self->database_name; |
|
818
|
0
|
|
|
|
|
|
return $str; |
|
819
|
|
|
|
|
|
|
} |
|
820
|
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
1; |