annotate variant_effect_predictor/Bio/Factory/BlastHitFactory.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 # $Id: BlastHitFactory.pm,v 1.7 2002/10/22 09:38:09 sac Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # BioPerl module for Bio::Factory::BlastHitFactory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Cared for by Steve Chervitz <sac@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 #-----------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Factory::BlastHitFactory - Factory for Bio::Search::Hit::BlastHit objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::Factory::BlastHitFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $hit_fact = Bio::Factory::BlastHitFactory->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 my $hit = $hit_fact->create_hit( %parameters );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 See documentation for create_hit() for information about C<%parameters>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 This module encapsulates code for creating Bio::Search::Hit::BlastHit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 and Bio::Search::HSP::BlastHSP objects from traditional BLAST report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 data (i.e., non-XML formatted).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 User feedback is an integral part of the evolution of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 and other Bioperl modules. Send your comments and suggestions preferably
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 to one of the Bioperl mailing lists.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 http://bioperl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Steve Chervitz E<lt>sac@bioperl.orgE<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 See L<the FEEDBACK section | FEEDBACK> for where to send bug reports and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Copyright (c) 2001 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 DISCLAIMER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 This software is provided "as is" without warranty of any kind.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 package Bio::Factory::BlastHitFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use Bio::Factory::HitFactoryI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Bio::Search::Hit::BlastHit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 @ISA = qw(Bio::Root::Root Bio::Factory::HitFactoryI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my ($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 =head2 create_hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Title : create_hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Usage : $hit = $factory->create_hit( %params );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Function: Creates a new Bio::Search::Hit::BlastHit object given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 raw BLAST report data, formatted in traditional BLAST report format.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Returns : A single Bio::Search::Hit::BlastHit object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Args : Named parameters to be passed to the BlastHit object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Parameter keys are case-insensitive.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 See Bio::Search::Hit::BlastHit::new() documentation for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 details about these parameters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 The only additional parameter required is:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 -RESULT => a Bio::Search::Result::BlastResult object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 From this result object, the program, query length,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 and iteration are obtained and passed on to the BlastHit.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 sub create_hit {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my ($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my ($blast, $raw_data, $shallow_parse) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $self->_rearrange( [qw(RESULT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 RAW_DATA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 SHALLOW_PARSE)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 my %args = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $args{'-PROGRAM'} = $blast->analysis_method;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 $args{'-QUERY_LEN'} = $blast->query_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $args{'-ITERATION'} = $blast->iterations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my $hit = Bio::Search::Hit::BlastHit->new( %args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 unless( $shallow_parse ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $self->_add_hsps( $hit,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $args{'-PROGRAM'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $args{'-QUERY_LEN'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $blast->query_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 @{$raw_data} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 return $hit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #=head2 _add_hsps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 # Usage : Private method; called automatically by create_hit().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 # Purpose : Creates BlastHSP.pm objects for each HSP in a BLAST hit alignment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # : Also collects the full description of the hit from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 # : HSP alignment section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 # Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 # Argument : (<$BlastHit_object>, <$program_name>, <$query_length>, <$query_name>, <@raw_data>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 # 'raw data list' consists of traditional BLAST report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 # format for a single HSP, supplied as a list of strings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 # Throws : Warnings for each BlastHSP.pm object that fails to be constructed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 # : Exception if no BlastHSP.pm objects can be constructed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 # : Exception if can't parse length data for hit sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 # Comments : Requires Bio::Search::HSP::BlastHSP.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # : Sets the description using the full string present in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 # : the alignment data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 #=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 sub _add_hsps {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my( $self, $hit, $prog, $qlen, $qname, @data ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my $start = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my $hspCount = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 require Bio::Search::HSP::BlastHSP;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # printf STDERR "\nBlastHit \"$hit\" _process_hsps(). \nDATA (%d lines) =\n@data\n", scalar(@data);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my( @hspData, @hspList, @errs, @bad_names );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 my($line, $set_desc, @desc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $set_desc = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $hname = $hit->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my $hlen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 hit_loop:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 foreach $line( @data ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 if( $line =~ /^\s*Length = ([\d,]+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 $hit->_set_description(@desc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 $set_desc = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $hit->_set_length($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $hlen = $hit->length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 next hit_loop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 } elsif( !$set_desc) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $line =~ s/^\s+|\s+$//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 push @desc, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 next hit_loop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 } elsif( $line =~ /^\s*Score/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 ## This block is for setting multiple HSPs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 if( not scalar @hspData ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $start = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 push @hspData, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 next hit_loop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 } elsif( scalar @hspData) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $hspCount++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->verbose and do{ print STDERR +( $hspCount % 10 ? "+" : "+\n" ); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # print STDERR "\nBlastHit: setting HSP #$hspCount \n@hspData\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my $hspObj = Bio::Search::HSP::BlastHSP->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 (-RAW_DATA => \@hspData,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 -RANK => $hspCount,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 -PROGRAM => $prog,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 -QUERY_NAME => $qname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 -HIT_NAME => $hname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 push @hspList, $hspObj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 @hspData = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 push @hspData, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 push @hspData, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 } elsif( $start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 ## This block is for setting the last HSP (which may be the first as well!).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 if( $line =~ /^(end|>|Parameters|CPU|Database:)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $hspCount++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 $self->verbose and do{ print STDERR +( $hspCount % 10 ? "+" : "+\n" ); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 # print STDERR "\nBlastHit: setting HSP #$hspCount \n@hspData";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my $hspObj = Bio::Search::HSP::BlastHSP->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 (-RAW_DATA => \@hspData,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 -RANK => $hspCount,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 -PROGRAM => $prog,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 -QUERY_NAME => $qname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 -HIT_NAME => $hname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 push @hspList, $hspObj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 push @hspData, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $hit->{'_length'} or $self->throw( "Can't determine hit sequence length.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 # Adjust logical length based on BLAST flavor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 if($prog =~ /TBLAST[NX]/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $hit->{'_logical_length'} = $hit->{'_length'} / 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $hit->{'_hsps'} = [ @hspList ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 # print STDERR "\n--------> Done building HSPs for $hit (total HSPS: ${\$hit->num_hsps})\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 1;