Bio:Seq->translate with orf=1; behavior change between 1.5 and 1.6
"Wilson, Colin (CC)" <[email protected]>
| Newsgroups | gmane.comp.lang.perl.bio.general |
|---|---|
| Message-ID | <BCEB7752D35AF643816B7040ADCB94970CB6E50C@046-CH1MPN1-062.046d.mgd.msft.net> |
I've got an older application that I'm migrating from BioPerl 1.5 to 1.6.923, and it didn't pass testing due to a change in the behavior of Bio:Seq::translate between 1.5 and 1.6
Per the bioperl documentation Seq->translate(-orf=> 1) should return the first orf in a sequence. It appears to be returning the orf upstream of the first stop codon, so an internal out of frame orf is found instead of a full length orf.
Here's my test code. It passes in 1.5, fails in 1.6. Is there a switch or different parameter to get the old behavior? Is this a bug or intentional change in translate?
------------
use strict;
use Bio::Seq;
my ($bs, $prot, $orf0, $orf1, $orf) ;
$bs = Bio::Seq->new( -seq => "ATGAATGTAAATAA",
-display_id => "TestSequence",
-alphabet => 'dna' );
$orf0 = $bs->translate(-frame=>0);
$orf1 = $bs->translate(-frame=>1);
# should output MNVN orf that starts in frame 0, not M* orf that starts in frame 1
$orf = $bs->translate(-orf=>1, -start=> 'atg');
if ($orf0->seq eq $orf->seq) {
print "PASS";
}
else {
print $orf0->seq . " != " . $orf->seq . "\n";
}