File Changes for braney
switch to commits view, user indexv498_preview to v498_preview2 (2026-04-27 to 2026-05-04) v498
Show details
- src/hg/hgTracks/bamTrack.c
- lines changed 1, context: html, text, full: html, text
0e174ffaab04a16af6cbb3b368495772b57a24f5 Wed Apr 29 14:54:10 2026 -0700
hgTracks: route bigDataUrl through hReplaceGbdb in parallel-loading code paths so gbdbLoc1/gbdbLoc2 rewrites apply to bigBed, bigWig, and bamWig tracks. refs #37479
- src/hg/hgTracks/bigBedTrack.c
- lines changed 2, context: html, text, full: html, text
0e174ffaab04a16af6cbb3b368495772b57a24f5 Wed Apr 29 14:54:10 2026 -0700
hgTracks: route bigDataUrl through hReplaceGbdb in parallel-loading code paths so gbdbLoc1/gbdbLoc2 rewrites apply to bigBed, bigWig, and bamWig tracks. refs #37479
- src/hg/hgTracks/bigWigTrack.c
- lines changed 1, context: html, text, full: html, text
0e174ffaab04a16af6cbb3b368495772b57a24f5 Wed Apr 29 14:54:10 2026 -0700
hgTracks: route bigDataUrl through hReplaceGbdb in parallel-loading code paths so gbdbLoc1/gbdbLoc2 rewrites apply to bigBed, bigWig, and bamWig tracks. refs #37479
- src/hg/hgTracks/hgTracks.c
- lines changed 2, context: html, text, full: html, text
c4559e7ed9e720d0101ac6839cd1772a611b44d1 Mon Apr 27 16:07:25 2026 -0700
hgTracks: emit printTrackTiming() on the trackImgOnly fast path, refs #37445
When hgTracks is called with hgt.trackImgOnly=1 and !ideogramToo it
takes an early-return path at hgTracks.c:9469 that emits the image and
map but skipped the per-track timing block. With measureTiming=1 set,
emit printTrackTiming() before returning so per-track load/draw times
are available to clients of the JS-redraw fast path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 12, context: html, text, full: html, text
0b7b4c7700268abd9705dc8feef9f284ffdff350 Fri May 1 09:01:40 2026 -0700
hgTracks: let quickLift tracks join the parallel-fetch worker pool
When a track has a quickLiftDb setting, validate its bigDataUrl
against the source db rather than the current target db, so the
/gbdb/<sourceDb>/ prefix check in customFactoryParallelLoad
accepts it. Previously quickLift tracks fell through to serial
load, costing ~5 s per track on the main thread.
refs #37470
- lines changed 7, context: html, text, full: html, text
a44642a3a2f8ce803f75233cbc67b50a04a7614b Fri May 1 12:46:58 2026 -0700
hgTracks: validate decorator bigDataUrl against quickLiftDb when present
loadDecorators was passing the current target db to isValidBigDataUrl, but
quickLifted tracks have decorator bigDataUrls under /gbdb/<sourceDb>/...,
matching the source assembly. Mirror the substitution already done in
isTrackForParallelLoad so decorator validation does not errAbort on
quickLifted tracks.
- src/hg/lib/hui.c
- lines changed 9, context: html, text, full: html, text
166abc2cdfefcaa86521ee296e9ede826c5354ac Fri May 1 13:02:09 2026 -0700
hgc: resolve dataVersion path for quickLifted tracks, refs #37489
checkDataVersion() skipped path resolution when tdb->table looked like
a hub track, so a quickLifted ClinVar stanza with
dataVersion /gbdb/$D/bbi/clinvar/version.txt
displayed the raw setting (with literal $D) instead of opening the
file. When quickLiftDb is set, allow the path-substitution branch and
use the source assembly for $D so /gbdb/<srcDb>/... resolves.
- src/hg/lib/trackDbCache.c
- lines changed 12, context: html, text, full: html, text
2029e9afd93f32973619c48e111bdf1a8f8219b5 Wed Apr 29 13:39:56 2026 -0700
trackDbCache: bail out gracefully when /dev/shm is full instead of SIGBUS
Use posix_fallocate() instead of ftruncate() so tmpfs commits the pages
synchronously; on ENOSPC we log to stderr, drop the temp file, and return
without writing the cache. Previously hgTracks would die from SIGBUS on
the first write into the mmap'd region (e.g. Docker's default 64 MB
/dev/shm), truncating the page mid-render. refs #37475
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/lib/trackHub.c
- lines changed 3, context: html, text, full: html, text
c4e77d5b638be84e6f6c5dbc4bcf6e47684831e8 Fri May 1 12:29:29 2026 -0700
hgConvert quickLift: don't list hidden composite subtracks as not liftable
validateTdbChildren walked every subtrack in a composite and reported any
non-liftable types in the user-facing warning, even subtracks the user had
not made visible. Skip subtracks where isParentVisible/isSubtrackVisible
is false so only tracks the user actually asked to lift are validated.
refs #37491
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/utils/otto/clinvar/clinVarToBed
- lines changed 3, context: html, text, full: html, text
b1b12153630874f63ec80e6f0d000504921a4719 Tue Apr 28 18:13:17 2026 -0700
clinVarToBed: strip trailing backslash before tab in submission_summary so MySQL LOAD DATA doesn't eat the field separator, refs #37477
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 1, context: html, text, full: html, text
c4713fb5e2fe484ad7ca9821888225f2234a6599 Tue Apr 28 21:03:47 2026 -0700
delete bogus character
- lines changed 1, context: html, text, full: html, text
dfac508f415202b72edde722acc394bf3a626f43 Wed Apr 29 07:11:56 2026 -0700
clinVarToBed: restore r-prefix on backslash-stripping perl cmd
Without the raw-string prefix, Python interprets \\ as a single
backslash and \t as a tab before the command reaches the shell, so
perl saw s/\(?=<TAB>|$)//g instead of s/\\(?=\t|$)//g and the fix
from b1b1215 was a no-op. refs #37477
- src/product/installer/docker/Dockerfile
- lines changed 4, context: html, text, full: html, text
9566b4b5d624c76d58568c740a99218a9089f224 Fri May 1 13:48:16 2026 -0700
docker: persistent trackDb cache at /usr/local/apache/trash/trackDbCache
The cgi default cacheTrackDbDir is /dev/shm/trackDbCache, which is a small
tmpfs in containers and gets cleared on restart. Override it to a directory
under apache trash so the cache is durable.
refs #37475
- src/utils/qa/quickLiftBench/README.md
- lines changed 80, context: html, text, full: html, text
cfd2b848b9ee185619c7e677269329964d147327 Mon Apr 27 16:10:16 2026 -0700
quickLiftBench: switch to saved-session comparisons, refs #37445
Replace the per-track URL-builder schema (db/track/hubUrl + positions
list) with saved-session refs of the form `user/sessionName`. Each
variant loads a saved session and renders at the session's own saved
region; native and quickLifted sessions live on different assemblies,
so identical chr:start-end ranges would not be biologically equivalent.
Drop hgt.reset=1 from the URL: it re-applied default-track visibility,
defeating hideTracks=1. Cart isolation comes from a fresh
requests.Session() per case (new hgsid -> fresh cart).
Headline metric is total_ms, parsed from the "Overall total time"
footer span; load_ms_sum and draw_ms_sum are summed across per-track
rows. Add bench1_hgwdev and bench1_rr cases pointing at the first real
native/lifted session pair (Brianraney/benchQuickNative1 vs
benchQuickList1).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 7, context: html, text, full: html, text
2b658cb29039048ff6ab3dac31f10519b3349bcc Tue Apr 28 09:06:06 2026 -0700
quickLiftBench: add --phases for per-phase timing breakdown, refs #37445
Add --phases flag that writes phases.tsv alongside results.tsv and
summary.tsv. Long-form rows of every <span class='timing'> marker
emitted by hgTracks (chromAliasSetup, trackDbLoad, parallel data fetch,
image generation, cart write, etc.), one row per (case, variant,
iteration, phase). A per-(case, variant, phase) median+p90 summary is
appended.
Useful for localizing where total_ms gaps come from. The first run on
bench1_hgwdev surfaced the missing parallel-fetch span on the lifted
variant (filed as #37470).
Drop the now-unused parse_overall_total helper; total_ms is read
directly from parse_phase_timings using the OVERALL_TIMING_LABEL key.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 33, context: html, text, full: html, text
23790efe33021ccd1691bf5f4262c1396a1f6e9d Fri May 1 12:49:13 2026 -0700
quickLiftBench: phase_asserts mechanism + parallel-fetch regression case
phase_asserts is a per-case schema in cases.yaml that declares regex
matches against the per-iteration timing spans, with optional
required/min_median_ms/max_median_ms bounds. When a case declares
phase_asserts, the runner captures phase data automatically and runs
the asserts after iterations complete; any failure prints to stderr
and exits non-zero.
The new regress_quickLift_parallel case uses this to assert that the
"Waiting for parallel..." span fires for the lifted multi-track session
Brianraney/benchQuickPara with a median between 500 and 15000 ms --
discriminating the working sandbox build from a pre-fix hgwdev where
only non-quickLift tracks parallelize at ~50 ms.
refs #37488, #37470
- src/utils/qa/quickLiftBench/cases.yaml
- lines changed 83, context: html, text, full: html, text
cfd2b848b9ee185619c7e677269329964d147327 Mon Apr 27 16:10:16 2026 -0700
quickLiftBench: switch to saved-session comparisons, refs #37445
Replace the per-track URL-builder schema (db/track/hubUrl + positions
list) with saved-session refs of the form `user/sessionName`. Each
variant loads a saved session and renders at the session's own saved
region; native and quickLifted sessions live on different assemblies,
so identical chr:start-end ranges would not be biologically equivalent.
Drop hgt.reset=1 from the URL: it re-applied default-track visibility,
defeating hideTracks=1. Cart isolation comes from a fresh
requests.Session() per case (new hgsid -> fresh cart).
Headline metric is total_ms, parsed from the "Overall total time"
footer span; load_ms_sum and draw_ms_sum are summed across per-track
rows. Add bench1_hgwdev and bench1_rr cases pointing at the first real
native/lifted session pair (Brianraney/benchQuickNative1 vs
benchQuickList1).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 25, context: html, text, full: html, text
23790efe33021ccd1691bf5f4262c1396a1f6e9d Fri May 1 12:49:13 2026 -0700
quickLiftBench: phase_asserts mechanism + parallel-fetch regression case
phase_asserts is a per-case schema in cases.yaml that declares regex
matches against the per-iteration timing spans, with optional
required/min_median_ms/max_median_ms bounds. When a case declares
phase_asserts, the runner captures phase data automatically and runs
the asserts after iterations complete; any failure prints to stderr
and exits non-zero.
The new regress_quickLift_parallel case uses this to assert that the
"Waiting for parallel..." span fires for the lifted multi-track session
Brianraney/benchQuickPara with a median between 500 and 15000 ms --
discriminating the working sandbox build from a pre-fix hgwdev where
only non-quickLift tracks parallelize at ~50 ms.
refs #37488, #37470
- src/utils/qa/quickLiftBench/quickLiftBench.py
- lines changed 201, context: html, text, full: html, text
cfd2b848b9ee185619c7e677269329964d147327 Mon Apr 27 16:10:16 2026 -0700
quickLiftBench: switch to saved-session comparisons, refs #37445
Replace the per-track URL-builder schema (db/track/hubUrl + positions
list) with saved-session refs of the form `user/sessionName`. Each
variant loads a saved session and renders at the session's own saved
region; native and quickLifted sessions live on different assemblies,
so identical chr:start-end ranges would not be biologically equivalent.
Drop hgt.reset=1 from the URL: it re-applied default-track visibility,
defeating hideTracks=1. Cart isolation comes from a fresh
requests.Session() per case (new hgsid -> fresh cart).
Headline metric is total_ms, parsed from the "Overall total time"
footer span; load_ms_sum and draw_ms_sum are summed across per-track
rows. Add bench1_hgwdev and bench1_rr cases pointing at the first real
native/lifted session pair (Brianraney/benchQuickNative1 vs
benchQuickList1).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 73, context: html, text, full: html, text
2b658cb29039048ff6ab3dac31f10519b3349bcc Tue Apr 28 09:06:06 2026 -0700
quickLiftBench: add --phases for per-phase timing breakdown, refs #37445
Add --phases flag that writes phases.tsv alongside results.tsv and
summary.tsv. Long-form rows of every <span class='timing'> marker
emitted by hgTracks (chromAliasSetup, trackDbLoad, parallel data fetch,
image generation, cart write, etc.), one row per (case, variant,
iteration, phase). A per-(case, variant, phase) median+p90 summary is
appended.
Useful for localizing where total_ms gaps come from. The first run on
bench1_hgwdev surfaced the missing parallel-fetch span on the lifted
variant (filed as #37470).
Drop the now-unused parse_overall_total helper; total_ms is read
directly from parse_phase_timings using the OVERALL_TIMING_LABEL key.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lines changed 121, context: html, text, full: html, text
23790efe33021ccd1691bf5f4262c1396a1f6e9d Fri May 1 12:49:13 2026 -0700
quickLiftBench: phase_asserts mechanism + parallel-fetch regression case
phase_asserts is a per-case schema in cases.yaml that declares regex
matches against the per-iteration timing spans, with optional
required/min_median_ms/max_median_ms bounds. When a case declares
phase_asserts, the runner captures phase data automatically and runs
the asserts after iterations complete; any failure prints to stderr
and exits non-zero.
The new regress_quickLift_parallel case uses this to assert that the
"Waiting for parallel..." span fires for the lifted multi-track session
Brianraney/benchQuickPara with a median between 500 and 15000 ms --
discriminating the working sandbox build from a pre-fix hgwdev where
only non-quickLift tracks parallelize at ~50 ms.
refs #37488, #37470
switch to commits view, user index