7bef2434fec624473e81cfec3012f5ff0a2c853f
gperez2
  Mon Sep 14 18:12:47 2026 -0700
Renaming the codon-number tooltip labels to "Genomic codon number" and "Transcript codon number" and rewriting the indel note in plain language, fixing a broken FontAwesome class on the Codon phase link, and rewriting the FAQ's txIndel explanation for accuracy and clarity, refs #38298

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 3ee4d114db6..62324fcfcce 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -2703,31 +2703,31 @@
    Note that start/end-phases are in the direction of transcription:
    if transcript is on + strand, the start phase is the exonFrame value, and the end phase is the next exonFrame (3' on DNA) value
    if transcript is on - strand, the start phase is the previous (=3' on DNA) exonFrame and the end phase is the exonFrame */
 {
 
 if (startPhase==-1) // UTRs don't have a frame at all
     {
     safef(buf, EXONTEXTLEN, "<b>No Codon:</b> Untranslated region<br>");
     }
 else
     {
     char *exonNote = "";
     boolean isNotLastExon = (exonIntronNumber<numExons);
 
     static const char *phasePrefix  = 
-        "<b><a target=_blank href='../goldenPath/help/codonPhase.html'> <i class='fa fa-question-circle-o'></i></a></b>";
+        "<b><a target=_blank href='../goldenPath/help/codonPhase.html'> <i class='fa fa-question-circle'></i></a></b>";
 
     if (isNotLastExon)
         {
         if (startPhase==endPhase)
             exonNote = ": in-frame exon";
         else
             exonNote = ": out-of-frame exon";
         safef(buf, EXONTEXTLEN, "<b>Codon phase %s :</b> start %d, end %d%s<br>", phasePrefix, startPhase, endPhase, exonNote);
         } 
     else
         {
         if (startPhase==0)
             exonNote = ": in-frame exon";
         else
             exonNote = ": out-of-frame exon";
@@ -3245,44 +3245,45 @@
                                             }
                                         else if (aaLetter == 'X')  // error/partial codon: nothing to show
                                             aaAbbr[0] = '\0';
                                         else
                                             {
                                             aaToAbbr(aaLetter, aaAbbr, sizeof(aaAbbr));
                                             aaName = aaToName(aaLetter);
                                             }
                                         /* These numbers are counted along the genome, as this
                                          * track has always counted them.  Where the transcript
                                          * has an indel relative to the genome the transcript's
                                          * own numbering differs, so show both, and name which
                                          * is which only in that case:  for every other
                                          * transcript there is one count and "Codon" says it. */
                                         boolean shifted = baseColorCodonIsShifted(codon);
-                                        dyStringPrintf(codonDy, "<b>Codon%s: </b> c.%d-%d (p.%d)<br>",
-                                                shifted ? " counted on the genome" : "",
+                                        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>Counted on the transcript: </b> "
+                                                "<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 an "
-                                                "indel relative to the genome, so the two "
-                                                "numbers differ. "
+                                                "<b>Note: </b>This transcript's sequence has "
+                                                "extra or missing bases compared to the genome "
+                                                "at 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)
                                         {
                                         // UTR block of a coding transcript (codonIndex 0, so no