e5697049b1e077237d1f83c8293e23d62ded0820 braney Tue May 12 11:40:26 2026 -0700 quickLiftBench: Mode C reference hub + hub-variant case schema, refs #37445 Adds a synthetic 4-track hub (bigBed native + lifted, bigWig native + lifted) at utils/qa/quickLiftBench/testHub/, regenerated via buildTestHub.sh, and extends the bench schema so a variant can be a mapping (hubUrl + db + position + tracks) in addition to the existing saved-session string. The two new cases mode_c_hs1_bb and mode_c_hs1_bw exercise quickLift on hs1 against an hg38-sourced chain, with both variants rendering at the same hs1 coords so the only difference is whether the chain-remap step runs. First numbers (n=10, hgwdev, chr22:15M-50M, 5000 source features / 34000 bedGraph bins): case native total lifted total parallel-fetch delta mode_c_hs1_bb 1376 ms 1154 ms +900 ms (chain remap) mode_c_hs1_bw 26 ms 27 ms negligible bigBed scales per-feature (~180 us/feature for 5000 hg38 features remapped); bigWig is essentially free. Also moves the regress_quickLift_parallel case from server: sandbox to server: hgwdev now that #37470 has landed on dev. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> diff --git src/utils/qa/quickLiftBench/cases.yaml src/utils/qa/quickLiftBench/cases.yaml index d0fb7ae939c..89ff48c1083 100644 --- src/utils/qa/quickLiftBench/cases.yaml +++ src/utils/qa/quickLiftBench/cases.yaml @@ -50,39 +50,84 @@ lifted: Brianraney/benchQuickList1 compare: - [native, lifted] # -------- Bench pair 1: same sessions on the public RR -------- - id: bench1_rr description: | Same session pair as bench1_hgwdev, run against genome.ucsc.edu. server: rr variants: native: Brianraney/benchQuickNative1 lifted: Brianraney/benchQuickList1 compare: - [native, lifted] + # -------- Mode C: lift on/off, same hub on hs1 (refs #37445) -------- + # Reference hub at utils/qa/quickLiftBench/testHub/ (built by buildTestHub.sh). + # Both stanzas render the same conceptual features at the same hs1 coords; + # the only difference is whether the lifted variant goes through the + # quickLift chain-remap path. This isolates pure quickLift overhead from + # track-content differences -- the cleanest measurement for the paper. + - id: mode_c_hs1_bb + description: | + Mode C bigBed: same hub, same position on hs1; native (hs1-coord + bigBed) vs lifted (hg38-coord bigBed + quickLiftUrl chain). Isolates + the chain-remap overhead from track-content differences. + server: hgwdev + variants: + native: + hubUrl: https://hgwdev.gi.ucsc.edu/~braney/quickLiftBench/testHub/hub.txt + db: hs1 + position: chr22:15000000-50000000 + tracks: {modeC_bb_native: pack, modeC_bb_lifted: hide, modeC_bw_native: hide, modeC_bw_lifted: hide} + lifted: + hubUrl: https://hgwdev.gi.ucsc.edu/~braney/quickLiftBench/testHub/hub.txt + db: hs1 + position: chr22:15000000-50000000 + tracks: {modeC_bb_native: hide, modeC_bb_lifted: pack, modeC_bw_native: hide, modeC_bw_lifted: hide} + compare: + - [native, lifted] + + - id: mode_c_hs1_bw + description: | + Mode C bigWig: same hub + position; native (hs1-coord bigWig) vs + lifted (hg38-coord bigWig + quickLiftUrl chain). Same isolation as + mode_c_hs1_bb but for the bigWig track type. + server: hgwdev + variants: + native: + hubUrl: https://hgwdev.gi.ucsc.edu/~braney/quickLiftBench/testHub/hub.txt + db: hs1 + position: chr22:15000000-50000000 + tracks: {modeC_bb_native: hide, modeC_bb_lifted: hide, modeC_bw_native: full, modeC_bw_lifted: hide} + lifted: + hubUrl: https://hgwdev.gi.ucsc.edu/~braney/quickLiftBench/testHub/hub.txt + db: hs1 + position: chr22:15000000-50000000 + tracks: {modeC_bb_native: hide, modeC_bb_lifted: hide, modeC_bw_native: hide, modeC_bw_lifted: full} + compare: + - [native, lifted] + # -------- Regression: parallel-fetch tripwire (refs #37488, #37470) -------- # phase_asserts make this case fail-fast if the parallel pool stops # firing for quickLift tracks (e.g. a regression in isTrackForParallelLoad - # or customFactoryParallelLoad). Runs against the sandbox until the fix - # lands on hgwdev. + # or customFactoryParallelLoad). - id: regress_quickLift_parallel description: | Regression tripwire: a quickLifted multi-track session must spawn the parallel-fetch worker pool. Asserts the "Waiting for parallel..." span is emitted in every iteration. - server: sandbox + server: hgwdev variants: base: Brianraney/benchQuickPara phase_asserts: # Required + min_median together: catch a regression that drops the # quickLift tracks back to serial. With the fix in place the median # parallel wait is several seconds; without it (only non-quickLift # tracks parallelize) the wait is ~50 ms, so 500 ms cleanly separates # the working and broken cases. - variant: base phase: 'Waiting for parallel \(\d+ threads for \d+ tracks\) remote data fetch' required: true min_median_ms: 500 max_median_ms: 15000