Andreas Tille <[email protected]> writes:
> When thinking about this just disabling the affected test might be a
> reasonable thing to do.
No need, I've come up with a working patch (attached).
--
Aaron M. Ucko, KB1CJC (amu at alum.mit.edu, ucko at debian.org)
http://www.mit.edu/~amu/ | http://stuff.mit.edu/cgi/finger/[email protected]
Adapt to the modern BLAST engine and BLAST+ legacy_blast wrapper.
* Specify an explicit gap extension cost (2) to accompany the explicit
mismatch penalty.
* Reduce the word size to the traditional value of 11 so the test
cases can succeed.
* Stop trying to request the old engine.
* Accommodate minor output format changes between legacy BLAST and
BLAST+.
--- a/pynast/util.py
+++ b/pynast/util.py
@@ -147,7 +147,7 @@ def blast_align_unaligned_seqs(seqs,
# Note: -S 1 indicated that we don't want to blast both orientations -- at
# this would be different behavior than other pairwise aligners.
- bl2seq_res = system('bl2seq -i %s -j %s -o %s -F F -S 1 -q -1 -p blastn -VT' %\
+ bl2seq_res = system('bl2seq -i %s -j %s -o %s -F F -S 1 -q -1 -E 2 -W 11 -p blastn' %\
(in_filepath1,in_filepath2,out_filepath))
if bl2seq_res != 0:
raise RuntimeError, "bl2seq failed:\n %s" % bl2seq_res
@@ -157,16 +157,16 @@ def blast_align_unaligned_seqs(seqs,
blast_res = open(out_filepath)
in_result = False
for line in blast_res:
- if line.strip().startswith('Score'):
+ if line.strip().startswith('Score = '):
if in_result:
break
else:
in_result = True
- if line.startswith('Query: '):
+ if in_result and line.startswith('Query'):
fields = line.split()
query_seq.append(fields[2].upper())
- elif line.startswith('Sbjct: '):
+ elif in_result and line.startswith('Sbjct'):
fields = line.split()
subject_seq.append(fields[2].upper())
else: