::Tools::Blast doesn't report all significant hits

pvanheus@hgmp.mrc.ac.uk pvanheus@hgmp.mrc.ac.uk
Wed, 18 Aug 1999 05:44:46 -0400

Full_Name: Peter van Heusden
Module: Bio::Tools::Blast
Version: 0.80
OS: Solaris 2.7
Submission from: indium.hgmp.mrc.ac.uk (

If you parse blast reports with the -signif
parameter set, you'll lose some significant
hits, at least with the current BioPerl release,
and blastn 2.0.5.

The reason for this is that the following
code in Bio::Tools::Blast::_parse_alignment,
lines 2144-2145

      } elsif($hit_signif <= $my_signif) {
        push @{$self->{'_hits'}}, $hit;

relies on $hit_signif being set from $hit->signif,
where $hit is a ::Blast::Sbjct. In turn,
::Blast::Sbjct sets its _expect score (which
is returned by the signif method for blast 2)
with the following code, in ::Blast::Sbjct::_set_hsps,
line 503:
                    $self->{'_expect'} = $hspObj->expect() if $hspCount == 1;

i.e. its setting it off the first hit only. The
first hit is not always the most significant hit,
so sometimes some hits are lost (i.e. you get
false negatives) when filtering with -signif.

Is there any reason that the code is not more 
similar to this?

if (!defined($self->{_expect)) || $hspObj->expect() < $self->{_expect}) {
   $self->{_expect} = $hspObj->expect();

(and similarly for the $self->{_p} value)

P.S. and why is the textarea for submitting bug reports so narrow (50 cols?) :)

=========== Bioperl Project Mailing List Message Footer =======
Project URL: http://bio.perl.org
For info about how to (un)subscribe, where messages are archived, etc: