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);