d459a7a421c710541b9e29a43473f502b6d7c8c1
max
Mon Sep 21 05:30:00 2026 -0700
hgTracks: the indel is before the shifted codon, not at it, refs #38298
The codon mouseover's note said the transcript has extra or missing bases
compared to the genome "at this codon". It is not at it: a codon's
transcript number is counted from its 5'-most base, so every codon 3' of
an indel is flagged, and the indel that caused the shift always lies
before it. On canFam3 NM_001131049.1 one 21-base insertion flags all 730
codons from p.129 to the end of the CDS, none before.
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 8803bbf7e55..c82fcfef41b 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -3376,31 +3376,31 @@
* transcript there is one count and "Codon" says it. */
boolean shifted = baseColorCodonIsShifted(codon);
dyStringPrintf(codonDy, "%s: c.%d-%d (p.%d)
",
shifted ? "Genomic codon number" : "Codon",
cStart, cEnd, pPos);
if (shifted)
{
int txCStart = (codon->txCodonIndex - 1) * 3 + 1;
dyStringPrintf(codonDy,
"Transcript codon number: "
"c.%d-%d (p.%d)
",
txCStart, txCStart+2, codon->txCodonIndex);
dyStringPrintf(codonDy,
"Note: This transcript's sequence has "
"extra or missing bases compared to the genome "
- "at this codon, so the genomic and transcript "
+ "before this codon, so the genomic and transcript "
"codon numbers differ. "
""
"Help
");
}
if (!isEmpty(aaAbbr))
{
if (aaName != NULL)
dyStringPrintf(codonDy, "Amino acid: %s - %s
", aaAbbr, aaName);
else
dyStringPrintf(codonDy, "Amino acid: %s
", aaAbbr);
}
}
else if (lf->tallStart < lf->tallEnd)
{