36b00fae56bc9de09200fd4fe5cfd07ddb4352d8
braney
  Wed Sep 16 12:40:10 2026 -0700
hprcPclai: back to dense, with denseClick on, refs #35415, refs #38364

This track was moved to squish a week ago and pinned there with
onlyVisibility, for one reason: dense drew one merged row per subtrack
and emitted no per-item map boxes at all, so there was no hgc link, no
mouseOver, and no way to reach the ancestry scatterplot on the details
page.

denseClick removes that reason.  With it, every item on a dense row gets
its own map box, so it carries an hgc link and its own mouseOver while
still being drawn on the single dense row.  Measured on a build of this
branch at chr2:60,000,000-80,000,000, the seven default-on haplotypes:

dense, denseClick off      0 hgc links
dense, denseClick on    1249 hgc links
squish                  1235 hgc links

The rendered image does not change; only the image map does.

So dense is now the better mode for this data as well as the clickable
one.  Dense is always exactly one row per haplotype, where squish spreads
to three or four at whole-chromosome zoom and gets noisy.  onlyVisibility
moves to dense rather than going away: its real job is keeping a reader
out of pack, which at 463 subtracks would be enormous.

denseClick is inherited, so the single line on the composite covers every
subtrack, and hgTracks ignores a setting it does not understand, so the
line is inert rather than harmful on an older browser.

The same change goes into the GenArk contrib collection stanza.  Worth
knowing about the timing there: hprc2annot is listed in betaGenArk.txt,
and hgwbeta runs the release branch, so that copy will show a dense row
with no clickable items until the hgTracks change reaches beta.  The hg38
composite is alpha only and hgwdev CGIs are built from master, so it
picks the behavior up as soon as this lands.  Neither copy is in
publicGenArk.txt, so no RR user sees either state.

hprcPclai.ra is generated, so the change is in hprcPclaiMakeTrackDb.py and
the .ra was rebuilt from the same index CSV; the regenerated file differs
only in those three lines.

diff --git src/hg/makeDb/doc/hg38/hprcPclai.txt src/hg/makeDb/doc/hg38/hprcPclai.txt
index d7295f973ac..4aeca9c4ebc 100644
--- src/hg/makeDb/doc/hg38/hprcPclai.txt
+++ src/hg/makeDb/doc/hg38/hprcPclai.txt
@@ -153,15 +153,55 @@
 # subtracks get checkboxes), so this is enough: hgTrackUi offers Hide and Squish.
 # It is a UI limit only -- hg/lib/hui.c does not clamp it at draw time for a
 # non-faceted track -- so hprcPclai=pack in a URL still draws packed.
 #
 # Squish suits this data because the windows tile without overlapping and the
 # subtracks carry no item labels, so each haplotype collapses to one row at a
 # 20 Mb view. At whole-chromosome zoom it spreads to three or four rows and gets
 # noisy; 10-30 Mb is the window where the track reads best.
 #
 # Demo link, the seven default-on haplotypes over a region where NA19776 hap 1
 # switches ancestry at about chr2:70.5 Mb:
 #  https://hgwdev-max.gi.ucsc.edu/cgi-bin/hgTracks?db=hg38&position=chr2:60000000-80000000&hideTracks=1&hprcPclai=squish
 # On a fresh cart that shows the seven hprcPclaiDefaultOn.txt haplotypes, one
 # squish row each, 1235 clickable windows. The same change went into the GenArk
 # contrib collection; see doc/contrib/hprc2annot/hprc2annot.txt section 5e.
+
+##############################################################################
+# 2026-09-16: back to dense, with denseClick on (refs #38364, refs #35415)
+##############################################################################
+# The section above moved this track to squish and pinned it there, because
+# dense drew one merged row per subtrack and emitted no per-item map boxes at
+# all: no hgc link, no mouseOver, no way to reach the ancestry scatterplot.
+# #38364 adds the missing piece. With "denseClick on" every item on a dense row
+# gets its own map box, so it carries an hgc link and its own mouseOver, while
+# still being drawn on the single dense row. Measured on a build of branch
+# denseClick38364, same region as the section above,
+# chr2:60,000,000-80,000,000, the seven default-on haplotypes:
+#   dense, denseClick off     0 hgc links (the behavior that forced squish)
+#   dense, denseClick on   1249 hgc links
+#   squish                 1235 hgc links
+# The rendered PNG is identical with the setting on and off; only the image map
+# changes.
+#
+# So dense now does everything squish did, and it is the better mode for this
+# data: dense is always exactly one row per haplotype, where squish spreads to
+# three or four at whole-chromosome zoom and gets noisy. The stanza is back to
+# "visibility dense", and onlyVisibility moves to dense with it. onlyVisibility
+# is still worth keeping, for the reason it was added: it stops a reader landing
+# in pack, which at 463 subtracks would be enormous.
+#
+# denseClick is inherited, so the one line on the composite covers every
+# subtrack. hgTracks ignores a setting it does not understand, so the line is
+# inert rather than harmful on an older browser.
+#
+# Timing, which matters more for the GenArk copy than for this one. The code is
+# on branch denseClick38364 and goes to master after the v504 final build on
+# 2026-09-21, so it ships in v505. This track is alpha only
+# ("include hprcPclai.ra alpha" in human/hg38/trackDb.ra) and hgwdev CGIs are
+# built from master, so it picks the behavior up within days of the push. The
+# same one-line change went into the GenArk contrib collection,
+# trackDb/contrib/hprc2annot/hprc2annot.trackDb.txt, and hprc2annot is listed in
+# betaGenArk.txt, so it reaches hgwbeta. hgwbeta runs the release branch, so it
+# will show a dense row with no clickable items until v505 gets there, roughly
+# three weeks after the push. Neither copy is in publicGenArk.txt, so no RR user
+# sees either state.