4a7640f829879fd67b6160a41fb686d8e0c62e00
markd
  Mon Aug 3 15:16:52 2015 -0700
convert asserts to errAborts to help debug bogus GFF3 alignments (no redmine)

diff --git src/lib/psl.c src/lib/psl.c
index 8e4611a..0811ca4 100644
--- src/lib/psl.c
+++ src/lib/psl.c
@@ -1907,32 +1907,35 @@
 		tNext += size;
 		qNext += size;
 		break;
 	    case 'I': // inserted in target
 		tNext += size;
 		break;
 	    case 'D': // deleted from target
 		qNext += size;
 		break;
 	    
 	    default:
 		errAbort("unrecognized CIGAR op %c in %s", op, cigar);
 	    }
 	}
     }
-assert(qNext == qBlkEnd);
-assert(tNext == tBlkEnd);
+
+if (qNext != qBlkEnd)
+    errAbort("CIGAR query length does not match specified query range %s:%d-%d", qName, qStart, qEnd);
+if (tNext != tBlkEnd)
+    errAbort("CIGAR target length does not match specified target range %s:%d-%d", tName, tStart, tEnd);
 psl->match = totalSize;
 return psl;
 }
 
 int pslRangeTreeOverlap(struct psl *psl, struct rbTree *rangeTree)
 /* Return amount that psl overlaps (on target side) with rangeTree. */
 {
 int i;
 int overlap = 0;
 boolean isRc = (psl->strand[1] == '-');
 for (i=0; i<psl->blockCount; ++i)
     {
     int start = psl->tStarts[i];
     int end = start + psl->blockSizes[i];
     if (isRc)