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 __, 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"',