ab234fe62907c81b702a63f5a73d40500a40916f
lrnassar
  Tue Sep 29 16:12:28 2026 -0700
Fiber-seq: give the FIRE peak subtracks "visibility dense" instead of
"onlyVisibility dense", so their mouseOver can actually be seen.
onlyVisibility pins a faceted child rather than defaulting it:
tdbVisLimitedByAncestors() in hg/lib/hui.c overwrites the computed visibility
with the pinned mode, so a request for pack or full was discarded even from
the URL, and the dropdown offered only hide and dense.  Since no bigBed-like
track draws per-item map boxes in dense, the mouseOver on all 41 peak stanzas
was dead config and fiberSeqCompendium.html was promising a hover nobody could
reach.  Measured at ACTB with the map_data image map: pinned, a forced pack
still computed to dense with 0 FIRE tooltips; defaulted, pack and full compute
correctly and carry 8.  Peaks still come up dense, which is what Andrew asked
for in July.  The signal types keep onlyVisibility, where pinning to full
costs nothing because a bigWig draws the same at pack and full, and that is
verified here too: acc, cpg and hap stay at full whatever is requested, and
the container stays hidden on a fresh cart.  Also fixes two makeDoc slips, the
facet notes naming the script's dict keys rather than the column headings
writeMetadata() emits, and the opening summary still saying accessibility and
CpG "both became faceted composites" when they were merged into one 235 lines
later.  Caught by Claude review of 156d289 and 5179d7f.  refs #38407

diff --git src/hg/makeDb/doc/hg38/fiberSeq.txt src/hg/makeDb/doc/hg38/fiberSeq.txt
index 5956096f01d..bb6fa821967 100644
--- src/hg/makeDb/doc/hg38/fiberSeq.txt
+++ src/hg/makeDb/doc/hg38/fiberSeq.txt
@@ -1,24 +1,26 @@
 # 2026-09-07 Claude max: Fiber-seq accessibility, FIRE peaks and CpG methylation, refs #36210
 
 # The Stergachis and Vollger labs (UW / Utah) built their own hg38 track hub for
 # Fiber-seq and asked for it as a native track:
 #   https://fiberseq.github.io/UCSC-Fiber-seq-hub/hub.txt
 # Shane Neph then sent 41 per-sample CpG methylation hubs to include alongside it
 # (attachment cpg-hprc.txt on the "Fiber-seq in the genome browser" thread,
 # 2026-09-07).  The CpG sample list is the same 41 samples as the accessibility
-# compendium, so both became faceted composites under one container.
+# compendium, so both went under one container.  They started as two faceted
+# composites and were merged into one soon after; see the trackDb section below
+# for why.
 
 # The data lives on the UW Kopah S3 (Ceph) server under a per-sample hash
 # directory.  We mirror it rather than pointing bigDataUrl at UW, since that
 # server has had availability problems (see MLQ #37961) and a native track
 # should not depend on it.
 
 # ---------------------------------------------------------------------------
 # Sample list
 # ---------------------------------------------------------------------------
 
 # The accession, sample name, cell type and per-sample S3 hash directory are
 # checked in as
 #   ~/kent/src/hg/makeDb/scripts/fiberSeq/fiberSeqSamples.tsv
 # The accessions and hashes were extracted from the lab's hub trackDb, and the
 # sample names and cell types from the metadata TSV that hub points at:
@@ -292,40 +294,41 @@
 #                             registered for the first time.  encodePeakCfgUi()
 #                             in hg/lib/hui.c and bigNarrowPeakLoadItems() both
 #                             already handled the q/pValue filters; they had
 #                             just never been declared here, so tdbQuery
 #                             -strict rejected them.
 #
 # 4. The peak filters are the ENCODE peak settings, signalFilter, qValueFilter
 #    and scoreFilter with their *Limits, which encodePeakCfgUi() draws with its
 #    own labels ("Minimum Signal value", "Minimum Q-Value (-log10)").  The
 #    bigBed-generic filter.<field> settings are NOT read by this type.  All
 #    three defaults are the full range, so nothing is hidden until the user
 #    narrows one.  Verified in the rendered UI:
 #      hgTrackUi?db=hg38&g=fiberSeqCompendium_PM00004_peaks
 #    draws min/max boxes for all three with the right limit hints.
 #
-# 5. Facet columns: only "sampleClass" is faceted.  facetedComposite.js offers
-#    a facet value only when it occurs more than once (a checkbox matching a
-#    single row is just a slow search box), so:
-#      accession  41 distinct, all count 1, and excluded anyway as primaryKey
-#      _sample    41 distinct, all count 1 - can never be a facet
-#      _cellType  14 distinct but only 2 with count > 1 (Lymphoblastoid 27,
+# 5. Facet columns: only "Sample_class" is faceted.  Names below are the column
+#    headings as writeMetadata() emits them, not the dict keys used inside the
+#    script.  facetedComposite.js offers a facet value only when it occurs more
+#    than once (a checkbox matching a single row is just a slow search box), so:
+#      Accession  41 distinct, all count 1, and excluded anyway as primaryKey
+#      _Sample    41 distinct, all count 1 - can never be a facet
+#      _Cell_type 14 distinct but only 2 with count > 1 (Lymphoblastoid 27,
 #                 Embryonic stem cell 2), so as a facet it drew two checkboxes
 #                 and left 12 samples unreachable.  Underscored, so it is a
 #                 searchable and sortable column instead.
-#      sampleClass 3 values, HPRC (20), Common cell line (16) and Rare disease
+#      Sample_class 3 values, HPRC (20), Common cell line (16) and Rare disease
 #                 sample (5), all count > 1.  Read from the fifth column of
 #                 fiberSeqSamples.tsv, which carries the lab's own
 #                 classification.  It used to be derived from the free-text cell
 #                 type, which misfiled five lymphoblastoid lines as HPRC.  Those
 #                 five - GM25455, GM25456, GM27730, GM28570, GM28572 - turned out
 #                 to be neither: Andrew Stergachis said on 2026-09-22 that they
 #                 are rare disease cases consented to broad genomic data sharing,
 #                 the first of a batch they intend to keep adding to, and asked
 #                 for a class of their own rather than filing them with the
 #                 common cell lines.
 #
 # 6. Subtracks need an explicit priority.  Without one they fall back to a label
 #    sort, which showed a sample's data types as Peaks, CpG, Acc on a first
 #    visit.  The script now numbers them sample-outer, declared-data-type-inner
 #    (i*10 + j + 1), which matches the row of data type checkboxes across the