File Changes for max
switch to commits view, user indexv500_base to v501_preview (2026-06-29 to 2026-07-06) v501
Show details
- src/hg/hgBlat/hgBlat.c
- lines changed 10, context: html, text, full: html, text
099dda2013e7caffde097371fa68de467a2c5085 Tue Jun 30 05:14:13 2026 -0700
hgBlat: fix bugs in showAliPlaces BLAT results page
- Fix inverted JS test in buildBigPslCt: 'if (!ct_blat !== "")' always
evaluated true (a boolean strict-compared to a string), so the
remove-custom-track vars were appended on every call. Should be
'if (ct_blat !== "")'.
- Escape trackName/trackDescription with javaScriptLiteralEncode before
interpolating them into single-quoted JS literals. They derive from the
user FASTA header (psl->qName), so a quote broke the script / allowed
injection.
- Remove a stray re-opened <TT><PRE> in the PSL-output branch that left
unbalanced tags.
- Free the leaked locusConn connection and subList in the hyperlink branch.
- lines changed 107, context: html, text, full: html, text
48cd1865d252867ebbd3852d76bed271d0028d29 Tue Jun 30 05:33:14 2026 -0700
hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js
The "Create a stable custom track" (autoBigPsl) results page emitted ~140 lines
of JavaScript as C string literals via jsInlineF/jsInline. Move that code into a
real, jshint-clean hgBlat.js and have hgBlat.c emit only a small hgBlatData config
object (url, trackName, trackDescription, and the custom-track cart var names) plus
a jsIncludeFile("hgBlat.js"). Behavior is unchanged. The track name/description are
still javaScriptLiteralEncode'd before interpolation.
- lines changed 107, context: html, text, full: html, text
cceb0f154b33d600926d6948c148305625756749 Tue Jun 30 17:35:50 2026 -0700
Revert "hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js"
This reverts commit 48cd1865d252867ebbd3852d76bed271d0028d29.
- lines changed 10, context: html, text, full: html, text
18ef76d32c407a89bc0d7d8fd329d735c79eef1a Tue Jun 30 17:35:58 2026 -0700
Revert "hgBlat: fix bugs in showAliPlaces BLAT results page"
This reverts commit 099dda2013e7caffde097371fa68de467a2c5085.
- src/hg/hgTrackUi/hgTrackUi.c
- lines changed 15, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/hgTracks/cds.c
- lines changed 64, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 134, context: html, text, full: html, text
ded41ea1968e30e2c248f65d1c9fec9793cb82fc Thu Jun 18 11:31:32 2026 -0700
hgTracks: strand-direction arrows on the zoomed-in codon/CDS and UTR display
When a coding transcript is zoomed in far enough to color its codons, the
coding boxes carried no visible strand cue: only the introns showed the barbed
"fishbone" arrows, and the strand was otherwise visible only on mouseover.
This adds strand-direction chevrons to the codon and UTR display so the reading
direction is visible at a glance.
- At the amino-acid (codon-text) level, drawScaledBoxWithText() draws a chevron
at each codon's left boundary (in the whitespace between the centered letters),
in the box's contrasting color (white on the dark-blue codon shades), before
the letter so the letter stays crisp. Points right on + strand, left on -;
reverse-complement display is handled by hvGfxLine. The base-position ruler's
codon display passes strand 0 and is unaffected.
- When codons are colored but too small to label, baseColorDrawCdsArrows()
distributes white chevrons across the coding part of each exon, on top of the
boxes, at twice the standard barb spacing.
- The UTRs (which never showed arrows) now get chevrons too, in the feature's
contrasting color at a wider (3x) spacing as a cue that they are non-coding.
The chevron is sized to the short UTR box, with a 1px floor so it still shows
in squish mode.
refs #37779
- src/hg/hgTracks/cds.h
- lines changed 10, context: html, text, full: html, text
ded41ea1968e30e2c248f65d1c9fec9793cb82fc Thu Jun 18 11:31:32 2026 -0700
hgTracks: strand-direction arrows on the zoomed-in codon/CDS and UTR display
When a coding transcript is zoomed in far enough to color its codons, the
coding boxes carried no visible strand cue: only the introns showed the barbed
"fishbone" arrows, and the strand was otherwise visible only on mouseover.
This adds strand-direction chevrons to the codon and UTR display so the reading
direction is visible at a glance.
- At the amino-acid (codon-text) level, drawScaledBoxWithText() draws a chevron
at each codon's left boundary (in the whitespace between the centered letters),
in the box's contrasting color (white on the dark-blue codon shades), before
the letter so the letter stays crisp. Points right on + strand, left on -;
reverse-complement display is handled by hvGfxLine. The base-position ruler's
codon display passes strand 0 and is unaffected.
- When codons are colored but too small to label, baseColorDrawCdsArrows()
distributes white chevrons across the coding part of each exon, on top of the
boxes, at twice the standard barb spacing.
- The UTRs (which never showed arrows) now get chevrons too, in the feature's
contrasting color at a wider (3x) spacing as a cue that they are non-coding.
The chevron is sized to the short UTR box, with a 1px floor so it still shows
in squish mode.
refs #37779
- src/hg/hgTracks/hgTracks.c
- lines changed 0, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/hgTracks/hgTracks.h
- lines changed 3, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/hgTracks/simpleTracks.c
- lines changed 29, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 19, context: html, text, full: html, text
ded41ea1968e30e2c248f65d1c9fec9793cb82fc Thu Jun 18 11:31:32 2026 -0700
hgTracks: strand-direction arrows on the zoomed-in codon/CDS and UTR display
When a coding transcript is zoomed in far enough to color its codons, the
coding boxes carried no visible strand cue: only the introns showed the barbed
"fishbone" arrows, and the strand was otherwise visible only on mouseover.
This adds strand-direction chevrons to the codon and UTR display so the reading
direction is visible at a glance.
- At the amino-acid (codon-text) level, drawScaledBoxWithText() draws a chevron
at each codon's left boundary (in the whitespace between the centered letters),
in the box's contrasting color (white on the dark-blue codon shades), before
the letter so the letter stays crisp. Points right on + strand, left on -;
reverse-complement display is handled by hvGfxLine. The base-position ruler's
codon display passes strand 0 and is unaffected.
- When codons are colored but too small to label, baseColorDrawCdsArrows()
distributes white chevrons across the coding part of each exon, on top of the
boxes, at twice the standard barb spacing.
- The UTRs (which never showed arrows) now get chevrons too, in the feature's
contrasting color at a wider (3x) spacing as a cue that they are non-coding.
The chevron is sized to the short UTR box, with a 1px floor so it still shows
in squish mode.
refs #37779
- lines changed 2, context: html, text, full: html, text
0b75f5aba4e7dbf1389993bbdba8547b0bb428c3 Tue Jun 30 02:59:45 2026 -0700
change strand back to single character, refs #37779
- src/hg/js/hgBlat.js
- lines changed 74, context: html, text, full: html, text
48cd1865d252867ebbd3852d76bed271d0028d29 Tue Jun 30 05:33:14 2026 -0700
hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js
The "Create a stable custom track" (autoBigPsl) results page emitted ~140 lines
of JavaScript as C string literals via jsInlineF/jsInline. Move that code into a
real, jshint-clean hgBlat.js and have hgBlat.c emit only a small hgBlatData config
object (url, trackName, trackDescription, and the custom-track cart var names) plus
a jsIncludeFile("hgBlat.js"). Behavior is unchanged. The track name/description are
still javaScriptLiteralEncode'd before interpolation.
- lines changed 74, context: html, text, full: html, text
cceb0f154b33d600926d6948c148305625756749 Tue Jun 30 17:35:50 2026 -0700
Revert "hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js"
This reverts commit 48cd1865d252867ebbd3852d76bed271d0028d29.
- src/hg/js/makefile
- lines changed 1, context: html, text, full: html, text
48cd1865d252867ebbd3852d76bed271d0028d29 Tue Jun 30 05:33:14 2026 -0700
hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js
The "Create a stable custom track" (autoBigPsl) results page emitted ~140 lines
of JavaScript as C string literals via jsInlineF/jsInline. Move that code into a
real, jshint-clean hgBlat.js and have hgBlat.c emit only a small hgBlatData config
object (url, trackName, trackDescription, and the custom-track cart var names) plus
a jsIncludeFile("hgBlat.js"). Behavior is unchanged. The track name/description are
still javaScriptLiteralEncode'd before interpolation.
- lines changed 1, context: html, text, full: html, text
cceb0f154b33d600926d6948c148305625756749 Tue Jun 30 17:35:50 2026 -0700
Revert "hgBlat: move showAliPlaces autoBigPsl inline JS into src/hg/js/hgBlat.js"
This reverts commit 48cd1865d252867ebbd3852d76bed271d0028d29.
- src/hg/lib/cart.c
- lines changed 15, context: html, text, full: html, text
214e76748ab09f24db9e390c633482be7901e8ab Tue Jun 30 16:58:26 2026 -0700
adding captcha tracing to cart.c, no redmine
- src/hg/makeDb/scripts/varFreqs/vcfToBigBed.py
- lines changed 63, context: html, text, full: html, text
753697fc7582b1dec5392c3ab1971e8f0f7e8e6f Fri Jun 19 08:58:02 2026 -0700
varFreqs: fix numeric filter rendering and trim per-cohort filters
#Preview2 week - bugs introduced now will need a build patch to fix
The Affected/Background track config pages showed none of the AF/AC/AN
filters. hgTrackUi only discovers a numeric filter from a filter.<field>
(or <field>Filter) setting (FILTER_NUMBER_WILDCARD in bigBedFilter.h);
the generated fragment had only filterByRange.<field>/filterLimits.<field>
for those fields, so they were silently dropped. vcfToBigBed.py now emits
filter.<field> (a full-range default, so nothing is filtered by default)
plus filterLimits for every numeric filter.
That made ~140 filters appear, which overwhelmed the config page, so the
per-database and per-population AF/AC filters are emitted commented out
(range_filter enabled=False) and can be re-enabled individually by
removing the leading "# ". Only the global filters remain active: variant
type, consequence, the affected/case and background AF/AC/AN summaries,
the affected/case-cohort and background-source selectors, the in-affected
flag, and the length filters. The per-cohort data columns are unchanged
in the bigBed and still show on the details page.
No bigBed rebuild needed; this is trackDb-only.
refs #36642
- src/hg/makeDb/trackDb/human/varFreqs.ra
- lines changed 1098, context: html, text, full: html, text
753697fc7582b1dec5392c3ab1971e8f0f7e8e6f Fri Jun 19 08:58:02 2026 -0700
varFreqs: fix numeric filter rendering and trim per-cohort filters
#Preview2 week - bugs introduced now will need a build patch to fix
The Affected/Background track config pages showed none of the AF/AC/AN
filters. hgTrackUi only discovers a numeric filter from a filter.<field>
(or <field>Filter) setting (FILTER_NUMBER_WILDCARD in bigBedFilter.h);
the generated fragment had only filterByRange.<field>/filterLimits.<field>
for those fields, so they were silently dropped. vcfToBigBed.py now emits
filter.<field> (a full-range default, so nothing is filtered by default)
plus filterLimits for every numeric filter.
That made ~140 filters appear, which overwhelmed the config page, so the
per-database and per-population AF/AC filters are emitted commented out
(range_filter enabled=False) and can be re-enabled individually by
removing the leading "# ". Only the global filters remain active: variant
type, consequence, the affected/case and background AF/AC/AN summaries,
the affected/case-cohort and background-source selectors, the in-affected
flag, and the length filters. The per-cohort data columns are unchanged
in the bigBed and still show on the details page.
No bigBed rebuild needed; this is trackDb-only.
refs #36642
- src/inc/dnautil.h
- lines changed 4, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/lib/dnautil.c
- lines changed 14, context: html, text, full: html, text
6d437c28a5ff82a2af59ca516559053c4bf7c3f9 Thu Jun 18 01:18:34 2026 -0700
hgTracks: amino-acid name in codon + ruler mouseovers; exon-length label; ruler "Complement bases" config toggle
Three genome browser display changes around AA display:
1) amino acids shown on genePred codons and on rule codons, and making
the "complement option" easier to find.
1) The genePred/bigGenePred codon mouseover (zoomed to the codon level) now
shows the codon's amino acid on its own "Amino acid:" line, as the three-letter
abbreviation plus full name (e.g. "Ala (alanine)"). Rather than reverse-decode
the amino acid out of the codon's packed grayIx, the one-letter code is now
stored on the codon when it is translated: struct simpleFeature gains a codonAa
field, codonToGrayIx() reports the letter through a new out-param, and the codon
mouseover reads simpleFeature.codonAa directly. The drawn codon letter and the
mouseover then derive from the same translation and cannot drift apart, without
the mouseover having to understand the grayIx encoding (the drawing path,
colorAndCodonFromGrayIx(), still decodes its own grayIx inline, unchanged). Adds
a one-letter->full-name aaToName() in lib/dnautil.c (using the previously unused
name field of aminoAcidTable). Stop codons show "Ter (termination)". Also
relabels the exon "Length" field as "Exon Length" in the codon and zoomed-out
exon mouseovers; introns keep "Length".
2) The base-position ruler's three-reading-frame translation
(hgt.baseShowCodons) now gives each codon box a mouse-over with the same
three-letter abbreviation and full name, reading the stored codonAa via
aaToName()/aaToAbbr() (baseColorDrawRulerCodons in cds.c).
3) Adds a "Complement the bases" checkbox to the base position (ruler) track
configuration page (hgTrackUi rulerUi). It toggles the same per-assembly
COMPLEMENT_BASES_VAR cart variable that was previously reachable only by clicking
the "Click to complement" arrow next to the ruler. Also fixes the indentation
of the adjacent drawComplementArrow() text assignments.
refs #37779
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
switch to commits view, user index