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