0ca316803a93c570fc7614479afd322194f17217 markd Fri Oct 2 06:53:26 2026 -0700 Drop priority from the two TSS superTrack stanzas. refs #35528 The folders take whatever position the group gives them. The member tracks keep their own priorities, which order each overlay within its folder. diff --git src/hg/makeDb/outside/proCapNet/proCapNetTrackDb src/hg/makeDb/outside/proCapNet/proCapNetTrackDb index 0b9514efe11..676b91f9052 100755 --- src/hg/makeDb/outside/proCapNet/proCapNetTrackDb +++ src/hg/makeDb/outside/proCapNet/proCapNetTrackDb @@ -28,44 +28,43 @@ GBDB = "/gbdb/{db}/{track}" def parseArgs(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("db") parser.add_argument("experimentsTsv") parser.add_argument("outRa") return cli.parseOptsArgsWithLogging(parser) def stanza(indent, lines): pad = " " * indent return "".join(pad + line + "\n" for line in lines) + "\n" -def sourceSuperStanza(track, shortLabel, longLabel, priority): +def sourceSuperStanza(track, shortLabel, longLabel): """One top-level superTrack per data source. These were briefly nested under a transcriptionStart superTrack, which looks legal and passes tdbQuery -check -strict but silently loses the outer level: trackDbSuperMarkup() refuses to give a superTrack a parent, so hgTrackDb never writes the outer one. See #38460.""" return stanza(0, [ f"track {track}", "superTrack on show", "group rna", f"shortLabel {shortLabel}", f"longLabel {longLabel}", - f"priority {priority}", ]) def strandOverlay(db, composite, exp, dataType, subDir, fileTag, shortLabel, longLabel, childLabel, priority, vis): """One cell line's two strands as an overlay, plus strand drawn up and minus strand drawn down. Both sources store the minus strand negated, so neither needs the trackDb negateValues setting. That setting used to be on the ProCapNet minus tracks, and it broke the composite's own negate control: that control sets one shared value for the composite, which replaced the per-track setting and sent both strands the same way, with no route back to the default short of a cart reset. fileTag is the part of the file name that says what the file holds, so a bigWig downloaded on its own still names its source: the model for the predictions, the ENCODE experiment accession for the measurements. @@ -160,28 +159,28 @@ f" sites, plus up minus down", f"{exp.cell} ({exp.procapAcc}) PRO-cap transcription start sites", priority, "full") return out def proCapNetTrackDb(opts, args): experiments = list(TsvReader(args.experimentsTsv)) fileOps.ensureFileDir(args.outRa) with fileOps.AtomicFileOpen(args.outRa) as fh: print(f"# Generated by hg/makeDb/outside/proCapNet/proCapNetTrackDb for {args.db}.", file=fh) print("# Do not edit by hand, edit the script and regenerate.\n", file=fh) if args.db == "hg38": fh.write(sourceSuperStanza( "encode4ProCap", "PRO-cap", - "PRO-cap nascent RNA transcription start sites from ENCODE 4", 1)) + "PRO-cap nascent RNA transcription start sites from ENCODE 4")) fh.write(sourceSuperStanza("proCapNet", "ProCapNet", - "ProCapNet predicted PRO-cap", 2)) + "ProCapNet predicted PRO-cap")) if args.db == "hg38": fh.write(encode4ProCapTracks(args.db, experiments)) fh.write(proCapNetTracks(args.db, experiments)) def main(): opts, args = parseArgs() with cli.ErrorHandler(noStackExcepts=(OSError, cli.PycbioException)): proCapNetTrackDb(opts, args) main()