8cdb1f118cfc901ec346fbaffa3e0a07155675c6
braney
  Mon Jan 5 11:27:58 2015 -0800
support '=' and 'X' in BAM cigars #14593
diff --git src/hg/hgTables/bam.c src/hg/hgTables/bam.c
index 3895f33..341c781 100644
--- src/hg/hgTables/bam.c
+++ src/hg/hgTables/bam.c
@@ -207,30 +207,32 @@
 /* Return width of alignment as encoded in cigar format string. */
 {
 int tLength=0;
 char *s, *end = cigar + cigarSize;
 s = cigar;
 while (s < end)
     {
     int digCount = countLeadingDigits(s);
     if (digCount <= 0)
         errAbort("expecting number got %s in cigarWidth", s);
     int n = atoi(s);
     s += digCount;
     char op = *s++;
     switch (op)
 	{
+	case '=': // match (gapless aligned block)
+	case 'X': // mismatch (gapless aligned block)
 	case 'M': // match or mismatch (gapless aligned block)
 	    tLength += n;
 	    break;
 	case 'I': // inserted in query
 	    break;
 	case 'D': // deleted from query
 	case 'N': // long deletion from query (intron as opposed to small del)
 	    tLength += n;
 	    break;
 	case 'S': // skipped query bases at beginning or end ("soft clipping")
 	case 'H': // skipped query bases not stored in record's query sequence ("hard clipping")
 	case 'P': // P="silent deletion from padded reference sequence" -- ignore these.
 	    break;
 	default:
 	    errAbort("cigarWidth: unrecognized CIGAR op %c -- update me", op);