66fafe88184bb3a8a45a50026f4d6c7fbbc24109
markd
  Tue Sep 29 10:12:53 2026 -0700
Rebuild the TSS tracks as traditional composites, for wiggle control. refs #35528

A faceted composite is routed to facetedCompositeUi(), which returns before
cfgByCfgType(), so it never draws the wiggle controls: no data view scaling, no
viewing range, no windowing function, no track height. Signal tracks need those,
so proCapNet and encode4ProCap are now traditional composites. They stay separate
composites under the TSS container.

The multiWig strand overlays survive the change. The old comment here claimed a
multiWig under a plain composite "is flattened away and never drawn"; that is
wrong for drawing, which #36320 fixed. Only the hgTrackUi subtrack list flattens,
because compositeUiSubtracks() walks to leaves, so the overlays get no inline
config block and are configured from their own pages. Raised as #38441.

The matrix has to be declared over the leaves, since that is the level hgTrackDb
checks: declaring it on the containers fails -strict with "has groups not defined
in parent". So a strand is a matrix cell, and the containers carry no subGroups.
Sample class survives as a filterComposite dimension, replacing the facet.
configurable on gives each subtrack its own config namespace.

Drop the faceted machinery: the metadata table, the color file, the constants
feeding them and the gbdbDir argument, 39 lines. The metadata.tsv and colors.json
already written under /gbdb are now unreferenced and can be deleted.

Put the ENCODE accession in each subtrack longLabel, and add a linked table of
them to both description pages. A longLabel cannot carry a link, since
printSubtrackTableBody() htmlEncodes it, hence the table. The label wording is
shortened to keep the longest at 74 characters.

diff --git src/hg/makeDb/trackDb/human/proCapNet.html src/hg/makeDb/trackDb/human/proCapNet.html
index af2aac4b48f..0ff87ecd610 100644
--- src/hg/makeDb/trackDb/human/proCapNet.html
+++ src/hg/makeDb/trackDb/human/proCapNet.html
@@ -31,33 +31,34 @@
 <p>
 The predictions are available on GRCh38/hg38 and T2T-CHM13/hs1. The contribution
 scores are available on GRCh38/hg38 only, because they are computed at MANE
 Select transcription start sites and MANE is not defined for T2T-CHM13.
 </p>
 
 <p>
 Predictions are not measurements: they say what the sequence looks capable of,
 not what a given cell is doing. The matching experimental data is in the PRO-cap
 track, available on GRCh38/hg38.
 </p>
 
 <h2>Display Conventions and Configuration</h2>
 
 <p>
-Cell lines are listed in the table on this page, one row each, with a checkbox
-per data type. Use the <b>Sample class</b> facet to narrow the list, and the
-<b>Group tracks by</b> buttons to order the browser by sample or by data type.
+The matrix on this page has one row per cell line and one column per data type,
+so a checkbox turns on one strand of one cell line's predictions, or its
+contribution scores. Use the <b>Sample class</b> filter to restrict the matrix to
+cancer or non-cancer lines.
 </p>
 
 <p>
 Each predicted PRO-cap track is an overlay of the two strands: plus strand
 predictions are drawn upward and minus strand predictions downward. The y axis
 is the predicted number of PRO-cap reads at that base.
 </p>
 
 <p>
 Contribution scores are drawn as a sequence logo when zoomed in far enough to
 show individual bases: the letter of the reference base is scaled by its score,
 so a run of tall letters is a motif the model relied on. At lower zoom the same
 values are drawn as a wiggle. Scores can be negative, meaning the base argued
 against initiation being placed where it was. Scores exist only in the roughly
 2 kb window around each MANE Select transcription start site, about 38.7 Mb of
@@ -68,30 +69,45 @@
 <p>
 Read depth differs between the six PRO-cap experiments the models were trained
 on, and both predicted signal and contribution scores scale with it, so the
 y axis is not comparable between cell lines. Tracks are colored by the cell line
 the model was trained on:
 </p>
 <ul>
 <li><span style="display:inline-block; background-color:#0072B2; width:18px; height:12px; vertical-align:middle;"></span> <b>A673</b> Ewing sarcoma</li>
 <li><span style="display:inline-block; background-color:#D55E00; width:18px; height:12px; vertical-align:middle;"></span> <b>Caco-2</b> colorectal adenocarcinoma</li>
 <li><span style="display:inline-block; background-color:#009E73; width:18px; height:12px; vertical-align:middle;"></span> <b>Calu3</b> lung adenocarcinoma</li>
 <li><span style="display:inline-block; background-color:#CC79A7; width:18px; height:12px; vertical-align:middle;"></span> <b>HUVEC</b> umbilical vein endothelial cells</li>
 <li><span style="display:inline-block; background-color:#E69F00; width:18px; height:12px; vertical-align:middle;"></span> <b>K562</b> chronic myelogenous leukemia</li>
 <li><span style="display:inline-block; background-color:#56B4E9; width:18px; height:12px; vertical-align:middle;"></span> <b>MCF10A</b> non-tumorigenic breast epithelium</li>
 </ul>
 
+<p>
+One model was trained per cell line. Each links to its ENCODE annotation,
+which holds the trained model itself.
+</p>
+
+<table class="stdTbl">
+<tr><th>Cell line</th><th>Tissue</th><th>Sample class</th><th>ENCODE model</th></tr>
+<tr><td>A673</td><td>Muscle</td><td>Cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR072YCM/" target="_blank">ENCSR072YCM</a></td></tr>
+<tr><td>Caco-2</td><td>Colon</td><td>Cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR182QNJ/" target="_blank">ENCSR182QNJ</a></td></tr>
+<tr><td>Calu3</td><td>Lung</td><td>Cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR797DEF/" target="_blank">ENCSR797DEF</a></td></tr>
+<tr><td>HUVEC</td><td>Blood vessel</td><td>Non-cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR801ECP/" target="_blank">ENCSR801ECP</a></td></tr>
+<tr><td>K562</td><td>Blood</td><td>Cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR740IPL/" target="_blank">ENCSR740IPL</a></td></tr>
+<tr><td>MCF10A</td><td>Breast</td><td>Non-cancer</td><td><a href="https://www.encodeproject.org/annotations/ENCSR860TYZ/" target="_blank">ENCSR860TYZ</a></td></tr>
+</table>
+
 <h2>Methods</h2>
 
 <p>
 ProCapNet adapts the BPNet architecture: it reads 2,114 bp of sequence and
 predicts a base-resolution initiation profile over the central 1,000 bp on both
 strands, together with the total number of initiation events in that window. One
 model was trained per cell line on ENCODE PRO-cap data, using all PRO-cap peaks
 in that cell line plus sampled DNase-hypersensitive sites as background, with
 7-fold cross-validation split by chromosome. Full details are in Cochran
 <em>et al.</em>, 2024.
 </p>
 
 <p>
 The Kundaje lab generated the genome-wide predictions by applying each model in
 2,114 bp windows at a stride of 250 bp, then averaging across the seven