| Previous changeset 68:fa8a93bdefd7 (2014-06-18) Next changeset 70:0ef071bba164 (2014-06-18) |
|
Commit message:
handle reverse matches |
|
modified:
blast2html.py test-data/blast xml example1.html |
| b |
| diff -r fa8a93bdefd7 -r 0c4ac210068b blast2html.py --- a/blast2html.py Wed Jun 18 12:25:37 2014 +0200 +++ b/blast2html.py Wed Jun 18 14:12:00 2014 +0200 |
| [ |
| @@ -87,29 +87,37 @@ step = 60 - def split(txt): - return [txt[i:i+step] for i in range(0, len(txt), step)] - qfrom = int(hsp['Hsp_query-from']) qto = int(hsp['Hsp_query-to']) + qframe = int(hsp['Hsp_query-frame']) hfrom = int(hsp['Hsp_hit-from']) hto = int(hsp['Hsp_hit-to']) + hframe = int(hsp['Hsp_hit-frame']) qseq = hsp.Hsp_qseq.text midline = hsp.Hsp_midline.text hseq = hsp.Hsp_hseq.text + + if not qframe in [1, -1]: + warnings.warn("Error in BlastXML input: Hsp node {} has a Hsp_query-frame of {}".format(nodeid(hsp), qframe)) + qframe = -1 if qframe < 0 else 1 + if not hframe in [1, -1]: + warnings.warn("Error in BlastXML input: Hsp node {} has a Hsp_hit-frame of {}".format(nodeid(hsp), hframe)) + hframe = -1 if hframe < 0 else 1 - offset = 0 + def split(txt): + return [txt[i:i+step] for i in range(0, len(txt), step)] + for qs, mid, hs, offset in zip(split(qseq), split(midline), split(hseq), range(0, len(qseq), step)): yield ( - "Query {:>7} {} {}\n".format(qfrom+offset, qs, qfrom+offset+len(qs)-1) + + "Query {:>7} {} {}\n".format(qfrom+offset*qframe, qs, qfrom+(offset+len(qs)-1)*qframe) + " {:7} {}\n".format('', mid) + - "Subject{:>7} {} {}".format(hfrom+offset, hs, hfrom+offset+len(hs)-1) + "Subject{:>7} {} {}".format(hfrom+offset*hframe, hs, hfrom+(offset+len(hs)-1)*hframe) ) - if qfrom+len(qseq)-1 != qto: + if qfrom+(len(qseq)-1)*qframe != qto: warnings.warn("Error in BlastXML input: Hsp node {} qseq length mismatch: from {} to {} length {}".format( nodeid(hsp), qfrom, qto, len(qseq))) - if hfrom+len(hseq)-1 != hto: + if hfrom+(len(hseq)-1)*hframe != hto: warnings.warn("Error in BlastXML input: Hsp node {} hseq length mismatch: from {} to {} length {}".format( nodeid(hsp), hfrom, hto, len(hseq))) |
| b |
| diff -r fa8a93bdefd7 -r 0c4ac210068b test-data/blast xml example1.html --- a/test-data/blast xml example1.html Wed Jun 18 12:25:37 2014 +0200 +++ b/test-data/blast xml example1.html Wed Jun 18 14:12:00 2014 +0200 |
| b |
| b'@@ -6667,7 +6667,7 @@\n \n <pre class=alignmentgraphic>Query 2 GTCCGTCG 9\n ||||||||\n-Subject 177 GTCCGTCG 184</pre>\n+Subject 177 GTCCGTCG 170</pre>\n </div>\n <div class=hotspot id=hotspot1-26-3>\n <p class=range>\n@@ -6715,7 +6715,7 @@\n \n <pre class=alignmentgraphic>Query 2 GTCCGTC 8\n |||||||\n-Subject 2048 GTCCGTC 2054</pre>\n+Subject 2048 GTCCGTC 2042</pre>\n </div>\n <div class=hotspot id=hotspot1-26-5>\n <p class=range>\n@@ -6853,7 +6853,7 @@\n \n <pre class=alignmentgraphic>Query 8 CGTGAAGA 15\n ||||||||\n-Subject 1634 CGTGAAGA 1641</pre>\n+Subject 1634 CGTGAAGA 1627</pre>\n </div>\n <div class=hotspot id=hotspot1-28-3>\n <p class=range>\n@@ -6994,7 +6994,7 @@\n \n <pre class=alignmentgraphic>Query 8 CGTGAAGA 15\n ||||||||\n-Subject 1634 CGTGAAGA 1641</pre>\n+Subject 1634 CGTGAAGA 1627</pre>\n </div>\n <div class=hotspot id=hotspot1-29-3>\n <p class=range>\n@@ -7111,7 +7111,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 298 TCGTGAAGA 306</pre>\n+Subject 298 TCGTGAAGA 290</pre>\n </div>\n <div class=hotspot id=hotspot1-31-2>\n <p class=range>\n@@ -7672,7 +7672,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-37-2>\n <p class=range>\n@@ -7813,7 +7813,7 @@\n \n <pre class=alignmentgraphic>Query 10 TGAAGAG 16\n |||||||\n-Subject 1569 TGAAGAG 1575</pre>\n+Subject 1569 TGAAGAG 1563</pre>\n </div>\n \n </div>\n@@ -7924,7 +7924,7 @@\n \n <pre class=alignmentgraphic>Query 10 TGAAGAG 16\n |||||||\n-Subject 1569 TGAAGAG 1575</pre>\n+Subject 1569 TGAAGAG 1563</pre>\n </div>\n \n </div>\n@@ -8392,7 +8392,7 @@\n \n <pre class=alignmentgraphic>Query 8 CGTGAAGA 15\n ||||||||\n-Subject 1634 CGTGAAGA 1641</pre>\n+Subject 1634 CGTGAAGA 1627</pre>\n </div>\n <div class=hotspot id=hotspot1-45-3>\n <p class=range>\n@@ -8551,7 +8551,7 @@\n \n <pre class=alignmentgraphic>Query 8 CGTGAAGA 15\n ||||||||\n-Subject 1634 CGTGAAGA 1641</pre>\n+Subject 1634 CGTGAAGA 1627</pre>\n </div>\n <div class=hotspot id=hotspot1-46-3>\n <p class=range>\n@@ -8716,7 +8716,7 @@\n \n <pre class=alignmentgraphic>Query 10 TGAAGAG 16\n |||||||\n-Subject 1569 TGAAGAG 1575</pre>\n+Subject 1569 TGAAGAG 1563</pre>\n </div>\n \n </div>\n@@ -8809,7 +8809,7 @@\n \n <pre class=alignmentgraphic>Query 10 TGAAGAG 16\n |||||||\n-Subject 1569 TGAAGAG 1575</pre>\n+Subject 1569 TGAAGAG 1563</pre>\n </div>\n \n </div>\n@@ -8878,7 +8878,7 @@\n \n <pre class=alignmentgraphic>Query 8 CGTGAAGA 15\n ||||||||\n-Subject 1634 CGTGAAGA 1641</pre>\n+Subject 1634 CGTGAAGA 1627</pre>\n </div>\n <div class=hotspot id=hotspot1-49-3>\n <p class=range>\n@@ -9043,7 +9043,7 @@\n \n <pre class=alignmentgraphic>Query 10 TGAAGAG 16\n |||||||\n-Subject 1569 TGAAGAG 1575</pre>\n+Subject 1569 TGAAGA'..b'y 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-63-2>\n <p class=range>\n@@ -10093,7 +10093,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-64-2>\n <p class=range>\n@@ -10186,7 +10186,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-65-2>\n <p class=range>\n@@ -10279,7 +10279,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-66-2>\n <p class=range>\n@@ -10348,7 +10348,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-67-2>\n <p class=range>\n@@ -10441,7 +10441,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-68-2>\n <p class=range>\n@@ -10534,7 +10534,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-69-2>\n <p class=range>\n@@ -10627,7 +10627,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-70-2>\n <p class=range>\n@@ -10768,7 +10768,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-71-2>\n <p class=range>\n@@ -11263,7 +11263,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-76-2>\n <p class=range>\n@@ -11380,7 +11380,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-77-2>\n <p class=range>\n@@ -11473,7 +11473,7 @@\n \n <pre class=alignmentgraphic>Query 7 TCGTGAAGA 15\n |||||||||\n-Subject 305 TCGTGAAGA 313</pre>\n+Subject 305 TCGTGAAGA 297</pre>\n </div>\n <div class=hotspot id=hotspot1-78-2>\n <p class=range>\n@@ -12961,7 +12961,7 @@\n \n <pre class=alignmentgraphic>Query 5 CGTCGTGA 12\n ||||||||\n-Subject 52 CGTCGTGA 59</pre>\n+Subject 52 CGTCGTGA 45</pre>\n </div>\n \n </div>\n' |