[Bioperl-l] Bio::AlignIO::bl2seq doesn't know when to stop...
Jonathan Manning
jmanning at broad.mit.edu
Mon Nov 10 10:23:03 EST 2003
I hate replying to my own post, but is anyone interested in
reviewing/applying this patch? It won't successfully parse bl2seq
alignments without it.
If someone will confirm this is a problem, and that this looks like a
correct solution, then I'll go through the trouble of testing it against
blast tools 2.2.1-2.2.6 and even writing a test for it.
Even a "works for me (without the patch) with blast tools version 2.x.x"
reply would be helpful.
~J
Jonathan Manning wrote:
> Hi,
> If I try to parse a bl2seq alignment using align (using "while(my $aln =
> $str->next_aln())" ), when it runs out of alignments, I get:
>
> Can't call method "querySeq" on an undefined value at
> ~/perllib/Bio/AlignIO/bl2seq.pm line 134, <GEN5> line 6002.
>
> If I look at the file I'm trying to parse, line 6002 is the end of the
> alignments. There is a "Lambda" line, and some summary information
> following it. I would expect next_aln to return false here.
>
> The following patch to CVS head fixes this - and properly returns false
> when there is no next alignment. This fix can also be applied to 1.2.3.
> All tests in AlignIO.t pass.
>
> I'm using blast tools 2.2.1, btw. It may only be a problem with this
> version of bl2seq. However, the fix below is a good safety check
> regardless of what blast version is used - but someone needs to test it
> against the latest version, just in case.
>
> ~Jonathan
>
>
> Index: bl2seq.pm
> ===================================================================
> RCS file: /home/repository/bioperl/bioperl-live/Bio/AlignIO/bl2seq.pm,v
> retrieving revision 1.15
> diff -c -r1.15 bl2seq.pm
> *** bl2seq.pm 2003/10/28 13:52:03 1.15
> --- bl2seq.pm 2003/11/04 15:54:16
> ***************
> *** 131,136 ****
> --- 131,137 ----
> -report_type => $self->report_type);
> my $bl2seqobj = $self->{'bl2seqobj'};
> my $hsp = $bl2seqobj->next_feature;
> + unless($hsp) { return 0 };
> $seqchar = $hsp->querySeq;
> $start = $hsp->query->start;
> $end = $hsp->query->end;
>
>
More information about the Bioperl-l
mailing list