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, "<b>%s: </b> c.%d-%d (p.%d)<br>",
                                                 shifted ? "Genomic codon number" : "Codon",
                                                 cStart, cEnd, pPos);
                                         if (shifted)
                                             {
                                             int txCStart = (codon->txCodonIndex - 1) * 3 + 1;
                                             dyStringPrintf(codonDy,
                                                 "<b>Transcript codon number: </b> "
                                                 "c.%d-%d (p.%d)<br>",
                                                 txCStart, txCStart+2, codon->txCodonIndex);
                                             dyStringPrintf(codonDy,
                                                 "<b>Note: </b>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. "
                                                 "<a target=_blank "
                                                 "href=\"../FAQ/FAQgenes.html#txIndel\">"
                                                 "Help</a><br>");
                                             }
                                         if (!isEmpty(aaAbbr))
                                             {
                                             if (aaName != NULL)
                                                 dyStringPrintf(codonDy, "<b>Amino acid: </b> %s - %s<br>", aaAbbr, aaName);
                                             else
                                                 dyStringPrintf(codonDy, "<b>Amino acid: </b> %s<br>", aaAbbr);
                                             }
                                         }
                                     else if (lf->tallStart < lf->tallEnd)
                                         {