a3fd570e96fb63b45d583ebcce83d8d23673a30a
max
  Wed Sep 16 07:00:11 2026 -0700
hg38 pcLAI: squish, not dense - dense removes the details page

Same problem the GenArk contrib collection had: in tvDense hgTracks draws one
merged row per subtrack and emits no per-item map boxes, so there is no hgc
link and no mouseOver, and the ancestry scatterplot built for the details page
is unreachable. On chr18:10,800,000-12,500,000 the image map has 0 hgc links in
dense and 134 in squish.

The composite is now visibility squish plus onlyVisibility squish. On a
composite that governs the only vis dropdown the track has, since the subtracks
get checkboxes rather than dropdowns, and hgTrackUi now offers Hide and Squish.
Squish suits the data: the windows tile without overlapping and carry no item
labels, so each haplotype stays one row at a 20 Mb view, refs #35415

diff --git src/hg/makeDb/scripts/hprcPclai/hprcPclaiMakeTrackDb.py src/hg/makeDb/scripts/hprcPclai/hprcPclaiMakeTrackDb.py
index 15c2f8dde0f..cdff2037ef4 100755
--- src/hg/makeDb/scripts/hprcPclai/hprcPclaiMakeTrackDb.py
+++ src/hg/makeDb/scripts/hprcPclai/hprcPclaiMakeTrackDb.py
@@ -68,31 +68,37 @@
     hapVals = sorted({h for _s, h in haps})
 
     out = open(outFname, "w", encoding="utf-8")
     w = out.write
     w("# hg38 pcLAI local ancestry, one subtrack per HPRC Release 2 haplotype.\n")
     w("# Generated by hg/makeDb/scripts/hprcPclai/hprcPclaiMakeTrackDb.py -- do not\n")
     w("# hand-edit; see hg/makeDb/doc/hg38/hprcPclai.txt.\n\n")
 
     w("track %s\n" % TRACK)
     w("compositeTrack on\n")
     w("shortLabel pcLAI Ancestry\n")
     w("longLabel Point cloud local ancestry inference (pcLAI) along HPRC assembly haplotypes\n")
     w("group hprc\n")
     w("type bigBed 9 +\n")
     w("itemRgb on\n")
-    w("visibility dense\n")
+    # squish, not dense, and pinned there. In tvDense hgTracks draws one merged row
+    # per subtrack and emits no per-item map boxes at all, so the scatterplot on the
+    # details page and the mouseOver below both become unreachable. squish keeps
+    # every map box, and since the windows tile without overlapping each haplotype
+    # still collapses to one or two thin rows instead of pack's ~50.
+    w("visibility squish\n")
+    w("onlyVisibility squish\n")
     w("priority 30\n")
     # A whole chromosome holds a few thousand windows per haplotype, well over the
     # 1000-item default at which pack mode gives up drawing; the block structure
     # this track exists to show is only visible at that zoom.
     w("maxItems 40000\n")
     w("subGroup1 sample Sample %s\n" % " ".join("%s=%s" % (s, s) for s in samples))
     w("subGroup2 hap Haplotype %s\n" % " ".join("h%s=%s" % (h, h) for h in hapVals))
     w("sortOrder sample=+ hap=+\n")
     w("dimensions dimensionY=sample dimensionX=hap\n")
     w("dragAndDrop subTracks\n")
     w("dataVersion %s\n" % DATA_VERSION)
     w("\n")
 
     # Explicit priorities: without them the subtracks come out in an arbitrary
     # (in practice reversed) order in the image, and with several hundred rows a