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, "No Codon: Untranslated region
");
}
else
{
char *exonNote = "";
boolean isNotLastExon = (exonIntronNumber ";
+ " ";
if (isNotLastExon)
{
if (startPhase==endPhase)
exonNote = ": in-frame exon";
else
exonNote = ": out-of-frame exon";
safef(buf, EXONTEXTLEN, "Codon phase %s : start %d, end %d%s
", 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, "Codon%s: c.%d-%d (p.%d)
",
- shifted ? " counted on the genome" : "",
+ 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,
- "Counted on the transcript: "
+ "Transcript codon number: "
"c.%d-%d (p.%d)
",
txCStart, txCStart+2, codon->txCodonIndex);
dyStringPrintf(codonDy,
- "Note: This transcript's sequence has an "
- "indel relative to the genome, so the two "
- "numbers differ. "
+ "Note: This transcript's sequence has "
+ "extra or missing bases compared to the genome "
+ "at 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)
{
// UTR block of a coding transcript (codonIndex 0, so no