Subject: | Bug in Bio::Search::SearchUtils.pm |
Date: | Thu, 5 Jun 2008 18:00:34 +0200 |
To: | <bug-bioperl [...] rt.cpan.org> |
From: | Cédric Cabau <Cedric.Cabau [...] tours.inra.fr> |
BioPerl version: bioperl-1.5.2_102
Module: Bio::Search::SearchUtils.pm
OS: CentOS Linux version 2.6.18-53.1.14.el5 (gcc version 4.1.2 20070626 (Red
Hat 4.1.2-14))
Perl: v5.8.8 built for x86_64-linux-thread-multi
Bug description:
Methods tile_hsps looks (among other things) if alignment is ambiguous.
Inside loop foreach $hsp ( $sbjct->hsps() ) { at line 177, methods $qoverlap
= &_adjust_contigs() (line 200) and $soverlap = &_adjust_contigs() (line
206) are used to know if current HSP overlap previous ones on query and on
subject. The problem is that in this loop, only the result of the last
comparison which means the last HSP with previous ones is kept in variables
$qoverlap and $soverlap.
After the loop, we found (line 299):
if($qoverlap) {
if($soverlap) { $sbjct->ambiguous_aln('qs'); }
else { $sbjct->ambiguous_aln('q'); }
}
elsif($soverlap) {
$sbjct->ambiguous_aln('s');
}
Only the result of the last comparison is stored in $sbjct and method
ambiguous_aln from module Bio::Search::Hit::GenericHit will return wrong
value if the alignment presents overlapping HSPs but last HSP not overlap
with previous ones.
To solve this bug, I just modify in line 200:
$qoverlap = &_adjust_contigs('query', $hsp, $qstart, $qstop, \@qcontigs,
$max_overlap, $frame, $qstrand);
by
$qoverlap += &_adjust_contigs('query', $hsp, $qstart, $qstop, \@qcontigs,
$max_overlap, $frame, $qstrand);
and in line 206:
$soverlap = &_adjust_contigs('sbjct', $hsp, $sstart, $sstop, \@scontigs,
$max_overlap, $frame, $sstrand);
by
$soverlap += &_adjust_contigs('sbjct', $hsp, $sstart, $sstop, \@scontigs,
$max_overlap, $frame, $sstrand);
to keep trace of overlaps in the whole HSPs screening process.
Regards,
Cedric
--
+---------------------------------------------------------------+
| Cédric Cabau INRA - SIGENAE - URA |
| Tel : 02.47.42.75.42 Fax : 02.47.42.77.78 |
| http://www.sigenae.org INRA - UR 83 - 37380 Nouzilly |
+---------------------------------------------------------------+
Message body is not shown because it is too large.