49de9e93e4417083feb23522a71e3960595828a3
markd
  Fri Sep 25 22:46:28 2026 -0700
ProCapNet label and facet color fixes from QA. refs #35528

The composite longLabel named the sequence-contribution scores, which only
exist on hg38, so it was wrong on hs1. Use "ProCapNet predicted PRO-cap" on both
assemblies; the scores are described on the track description page.

The Sample class swatches reused two colors from the cell-line palette, so a
track's color could be read as its class: A673 is a cancer line and drew in
#0072B2, which was the Non-cancer swatch. Sample class is a binary facet and
does not need a hue, so use black and gray, outside the Okabe-Ito palette.

Say in the description that the contribution scores cover about 1% of the
genome, so the limit is visible before the display conventions section.

diff --git src/hg/makeDb/outside/proCapNet/proCapNetTrackDb src/hg/makeDb/outside/proCapNet/proCapNetTrackDb
index 4671744e4e8..01254905c4c 100755
--- src/hg/makeDb/outside/proCapNet/proCapNetTrackDb
+++ src/hg/makeDb/outside/proCapNet/proCapNetTrackDb
@@ -13,31 +13,34 @@
 metaDataUrl and leaves the multiWig intact.  fiberSeqCompendium is the same
 pattern.
 
 Subtrack names are <composite>_<primaryKey>_<dataType>, which is how the faceted
 UI maps a table cell to a track.
 """
 import argparse
 import json
 from pycbio.sys import cli, fileOps
 from pycbio.tsv import TsvReader
 
 GBDB = "/gbdb/{db}/{track}"
 DOWNLOAD = "https://hgdownload.soe.ucsc.edu/gbdb/{db}/{track}/$$"
 
 SAMPLE_CLASS_DESC = "Cancer = cell line derived from a tumor"
-SAMPLE_CLASS_COLORS = {"Cancer": "#D55E00", "Non-cancer": "#0072B2"}
+# Deliberately outside the Okabe-Ito palette the cell lines use.  Sharing a hue
+# with a cell line makes a track's color read as its sample class: A673 is a
+# cancer line and draws in #0072B2, which was the Non-cancer swatch.
+SAMPLE_CLASS_COLORS = {"Cancer": "#000000", "Non-cancer": "#808080"}
 
 def parseArgs():
     parser = argparse.ArgumentParser(description=__doc__)
     parser.add_argument("db")
     parser.add_argument("experimentsTsv")
     parser.add_argument("outRa")
     parser.add_argument("gbdbDir",
                         help="/gbdb directory holding the track directories, where "
                              "the metadata and color files are written")
     return cli.parseOptsArgsWithLogging(parser)
 
 def stanza(indent, lines):
     pad = " " * indent
     return "".join(pad + line + "\n" for line in lines) + "\n"
 
@@ -182,31 +185,31 @@
         "autoScale on",
         "alwaysZero on",
         "maxHeightPixels 100:40:8",
         f"color {exp.color}",
         f"shortLabel {exp.cell} Contrib",
         f"longLabel {exp.cell} ProCapNet sequence-contribution scores",
         "onlyVisibility full",
         f"priority {priority}",
     ])
 
 def proCapNetComposite(db, experiments):
     dataTypes = 'pred|"Predicted PRO-cap"'
     if db == "hg38":
         dataTypes += ' contrib|"Sequence contribution scores"'
     out = compositeStanza(db, "proCapNet", "ProCapNet",
-                          "ProCapNet predicted PRO-cap and sequence-contribution scores",
+                          "ProCapNet predicted PRO-cap",
                           dataTypes, "https://www.encodeproject.org/annotations/$$/", 2)
     for priority, exp in enumerate(experiments, 1):
         out += strandOverlay(db, "proCapNet", exp, "pred", "/pred", "proCapNet",
                              f"{exp.cell} Pred",
                              f"{exp.cell} ProCapNet predicted PRO-cap, plus strand up and minus strand down",
                              f"{exp.cell} ProCapNet predicted PRO-cap", priority)
     if db == "hg38":
         for priority, exp in enumerate(experiments, 11):
             out += contribStanza(db, exp, priority)
     return out
 
 def encode4ProCapComposite(db, experiments):
     out = compositeStanza(db, "encode4ProCap", "PRO-cap",
                           "PRO-cap nascent RNA transcription start sites from ENCODE 4",
                           'procap|"PRO-cap"',