From 720dea16dc102e7900a12228c59bfaa03d11583a Mon Sep 17 00:00:00 2001
From: Peter Cock
Date: Wed, 18 May 2011 18:43:46 +0100
Subject: [PATCH] Fix for BLAST XML to tabular when both query and subject have
XXX masking
---
tools/ncbi_blast_plus/blastxml_to_tabular.py | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/tools/ncbi_blast_plus/blastxml_to_tabular.py b/tools/ncbi_blast_plus/blastxml_to_tabular.py
index 41d8e582c0a..795abebe892 100644
--- a/tools/ncbi_blast_plus/blastxml_to_tabular.py
+++ b/tools/ncbi_blast_plus/blastxml_to_tabular.py
@@ -176,16 +176,19 @@ for event, elem in context:
expected_mismatch = len(q_seq) \
- sum(1 for q,h in zip(q_seq, h_seq) \
if q == h or q == "-" or h == "-")
- assert expected_mismatch - q_seq.count("X") <= int(mismatch) <= expected_mismatch, \
- "%s vs %s mismatches, expected %i <= %i <= %i" \
- % (qseqid, sseqid, expected_mismatch - q_seq.count("X"), int(mismatch), expected_mismatch)
+ xx = sum(1 for q,h in zip(q_seq, h_seq) if q=="X" and h=="X")
+ if not (expected_mismatch - q_seq.count("X") <= int(mismatch) <= expected_mismatch + xx):
+ stop_err("%s vs %s mismatches, expected %i <= %i <= %i" \
+ % (qseqid, sseqid, expected_mismatch - q_seq.count("X"),
+ int(mismatch), expected_mismatch))
#TODO - Remove this alternative identity calculation and test
#once satisifed there are no problems
- expected_idendity = sum(1 for q,h in zip(q_seq, h_seq) if q == h)
- assert expected_idendity <= int(nident) <= expected_idendity + q_seq.count("X"), \
- "%s vs %s identities, expected %i <= %i <= %i" \
- % (qseqid, sseqid, expected_idendity, int(identity), expected_idendity + q_seq.count("X"))
+ expected_identity = sum(1 for q,h in zip(q_seq, h_seq) if q == h)
+ if not (expected_identity - xx <= int(nident) <= expected_identity + q_seq.count("X")):
+ stop_err("%s vs %s identities, expected %i <= %i <= %i" \
+ % (qseqid, sseqid, expected_identity, int(nident),
+ expected_identity + q_seq.count("X")))
evalue = hsp.findtext("Hsp_evalue")