Commits for braney
switch to files view, user index
v498_base to v499_preview (2026-05-11 to 2026-05-18) v499
Show details
b3ef92d687a2a170eab7758ff6b197e229675eee Fri May 8 13:23:17 2026 -0700
- add filterPriority and highlightPriority trackDb settings, refs #29223
New filterPriority.<fieldName> setting controls the display order of filter
controls on the track configuration page. Lower values display first;
filters without an explicit priority sort after those that have one. A
companion highlightPriority.<fieldName> setting orders highlight controls
the same way. A single priority entry covers all filter styles on the
field (filter.*, filterText.*, filterValues.*).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/htdocs/goldenPath/help/trackDb/changes.html - lines changed 9, context: html, text, full: html, text
- src/hg/htdocs/goldenPath/help/trackDb/trackDbDoc.html - lines changed 6, context: html, text, full: html, text
- src/hg/htdocs/goldenPath/help/trackDb/trackDbHub.v3.html - lines changed 5, context: html, text, full: html, text
- src/hg/htdocs/goldenPath/help/trackDb/trackDbLibrary.shtml - lines changed 33, context: html, text, full: html, text
- src/hg/inc/bigBedFilter.h - lines changed 7, context: html, text, full: html, text
- src/hg/makeDb/trackDb/tagTypes.tab - lines changed 2, context: html, text, full: html, text
d121edc0bd2809f1d6de6185a497e6a288958479 Tue May 12 09:18:29 2026 -0700
- hgConvert quickLift: skip pre-lifted tracks, append-and-merge hub file, per-track remove UI, refs #37535
In hgConvert / trackHubBuild:
- Skip tracks that already came from a quickLift hub (quickLiftUrl / quickLifted setting) so they don't get re-lifted to a new destination.
- Append new track stanzas to an existing per-source hub file instead of overwriting it; new stanzas get priorities after the existing max; duplicate track names are skipped. Also avoids re-emitting a parent supertrack that's already in the file.
New public quickLiftHubRemoveTrack(cart, sourceDb, trackName) in trackHub.c rewrites the per-source hub file with the named stanza removed plus all descendant stanzas (parent reference cascade, transitive).
hgTrackUi: adds a "Remove from QuickLift" link next to "Duplicate track" for any tdb carrying a quickLiftDb setting. The link hits hgTrackUi_op=quickLiftRemove which calls quickLiftHubRemoveTrack, hides the track in the cart, and 302s to hgTracks. The op argument cart var is qlSourceDb (renamed from quickLiftSourceDb to avoid colliding with the quickLift.* prefix used elsewhere; values cloned out of the cart hash before cartRemove so the helper doesn't see freed strings).
hgTracks: adds a small "x" icon (printQuickLiftDelIcon) on tracks in a quickLift group, suppressed on the synthetic bigQuickLiftChain track. JS onQuickLiftDelIconClick fires the same hgTrackUi_op endpoint via synchronous XHR and removes every TD whose icon matches the deleted data-track, so the row goes away in both the QuickLift group and the Visible Tracks group.
hubConnect cart handling fixes shaken out by the above:
- hubConnectRemakeTrackHubVar's cart-var prefix is now "quickLift." (with the trailing dot) instead of "quickLift", so unrelated keys like qlSourceDb no longer get parsed as hubId/db and crash cart loading on every CGI. Also skips entries whose hubStatus lookup returned NULL.
- hubConnectStatusListFromCart no longer calls removeQuickListReference when the current db isn't the lift's destination. A side trip to another assembly between two lifts to the same destination was deleting the earlier attachment's cart var; just skip attaching this load and leave the cart alone so the lift survives the round trip.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/hgTrackUi/hgTrackUi.c - lines changed 28, context: html, text, full: html, text
- src/hg/hgTracks/hgTracks.c - lines changed 25, context: html, text, full: html, text
- src/hg/htdocs/style/HGStyle.css - lines changed 7, context: html, text, full: html, text
- src/hg/lib/hubConnect.c - lines changed 11, context: html, text, full: html, text
- src/hg/lib/trackHub.c - lines changed 197, context: html, text, full: html, text
a8d453018226a38dc8bc7fce5891a2e064116029 Tue May 12 10:24:39 2026 -0700
- quickLift: fix hgTracks OOM with multiple lifted bigBed-style tracks, refs #37536
In quickLiftGetIntervals (src/hg/lib/quickLift.c) the first chainList from
chainLoadIdRangeHub was reassigned without being freed, leaking the chain
heads and their full cBlock lists for every quickLifted track in the
window. And the second-pass padding used maxGap * 2 with no upper bound,
so a single long item in the source data file (gencodeV49 has genes up to
~800 kb) could pull in chains -- and their dense cBlock lists -- covering
many megabases.
Free the first chainList, and cap the padding at 1 Mb.
On the failing mm10 chr4:148,273,516-148,627,317 session with the hg38
hub_190793 quickLift attached, the request went from OOM at 11+ GB RSS
(truncated 6 kb response, 80+ s) to a complete 1.7 MB response in ~1.6 s
at ~430 MB RSS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/lib/quickLift.c - lines changed 11, context: html, text, full: html, text
e5697049b1e077237d1f83c8293e23d62ded0820 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>
- src/utils/qa/quickLiftBench/README.md - lines changed 45, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/cases.yaml - lines changed 49, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/quickLiftBench.py - lines changed 64, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/testHub/buildTestHub.sh - lines changed 156, context: html, text, full: html, text
e4b101c93789880b099cdd781ef75ea32002707e Tue May 12 12:13:39 2026 -0700
- quickLiftBench: Mode B cases + split hub.txt into per-genome files, refs #37445
Adds mode_b_bb and mode_b_bw cases: native render on the source assembly
(hg38) vs the same source data quickLifted to a different assembly (hs1).
Different db per variant; positions chosen to cover approximately the
same biological region on chr22.
buildTestHub.sh now emits two single-genome useOneFile hubs
(hub_hs1.txt + hub_hg38.txt). A single useOneFile hub cannot host
multiple genomes -- trackHubGenomeReadRa() in trackHub.c:679 breaks out
of the genome-parsing loop at the first `track` line, so any 2nd
`genome` block after a track stanza is silently dropped. The Mode C
cases are updated to point at hub_hs1.txt.
First numbers (n=10, hgwdev, chr22:15M-50M):
case native lifted ratio notes
mode_b_bb 2746 ms 1682 ms 0.61 hg38 trackDb load
dominates native;
lifted on hs1 is
faster despite the
chain remap.
mode_b_bw 786 ms 639 ms 0.81 same effect.
mode_c_hs1_bb 1830 ms 2071 ms 1.13 ~240 ms remap cost.
mode_c_hs1_bw 111 ms 623 ms 5.61 ~510 ms remap cost
(cold chain cache).
Mode B captures the full cross-assembly cost a user sees; Mode C is the
controlled isolation of pure quickLift overhead.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/utils/qa/quickLiftBench/cases.yaml - lines changed 49, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/testHub/buildTestHub.sh - lines changed 51, context: html, text, full: html, text
d9568e415754516b14bff72b0daf67a0f7f69999 Tue May 12 16:53:34 2026 -0700
- quickLiftBench: add nSweep + posSweep orchestrators and paper Table 1, refs #37445
nSweep.py rebuilds testHub at each (N, BW_STEP) point and runs the bench,
tagging every row with N + bw_step so the merged sweep.tsv plots
"quickLift overhead vs feature count". buildTestHub.sh now also takes a
FEATURE_W env var so the BED12 block model scales down at high N
(auto-picked by nSweep so requested N fits the region without overlap).
posSweep.py mirrors the orchestrator shape but varies the viewed window
on a fixed hub; built-in canonical positions cover 0..5000 in-window
features against the default testHub.
paper_table1.md collects the headline Mode C cells from the
2026-05-12 N + position sweeps: bigBed quickLift ratio scales 4.3x ->
10.3x with feature count, bigWig stays flat ~5x; sparse windows show
near-zero quickLift overhead.
- src/utils/qa/quickLiftBench/README.md - lines changed 78, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/nSweep.py - lines changed 385, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/paper_table1.md - lines changed 69, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/posSweep.py - lines changed 324, context: html, text, full: html, text
- src/utils/qa/quickLiftBench/testHub/buildTestHub.sh - lines changed 38, context: html, text, full: html, text
349adcd7c26d73b53ec1865a4fd14c60b74f9386 Wed May 13 09:18:36 2026 -0700
- trackDbCache: CACHE_TRACK_DB_DIR env var override; add trackDbCacheBench, refs #37551
trackDbCacheOn() in src/hg/lib/trackDbCache.c now reads
CACHE_TRACK_DB_DIR from the environment ahead of the cacheTrackDbDir
hg.conf setting. When the env var is set its value wins, including
the empty string (which disables the cache). This lets a benchmark
harness switch caching on and off per hgTracks invocation without
editing hg.conf.
trackDbCacheBench (src/utils/qa/trackDbCacheBench/) drives hgTracks
through cached and uncached runs, with warmups and per-iteration
median/min/max timings, and an --evict-cache option that uses
posix_fadvise(DONTNEED) to drop cache files from the OS page cache
between iterations so disk-backed cache directories can be compared
to /dev/shm.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- src/hg/lib/trackDbCache.c - lines changed 9, context: html, text, full: html, text
- src/utils/qa/trackDbCacheBench/README.md - lines changed 60, context: html, text, full: html, text
- src/utils/qa/trackDbCacheBench/trackDbCacheBench.py - lines changed 306, context: html, text, full: html, text
dec7900a42fb984be16142c1f090c71cbe09ff05 Thu May 14 17:41:48 2026 -0700
- fix genePred.c not to crash if there are no exon frames when flipping strands refs #36370
061f2211a2955946e5a15ca6109bf2c667c842ee Fri May 15 08:19:51 2026 -0700
- clear stale lastPosition when cart db changes so QuickLift/hgGateway hops don't trigger a
spurious "Unable to resolve lastPosition" banner on the destination assembly refs #37562
fabf13fff3e3abaf7ef83c69a8c60d0142c288a1 Fri May 15 12:05:59 2026 -0700
- fix two remaining quickLift issues on UCSC RefSeq item detail page: CCDS link routes to source assembly (with coords lifted back) so the ccdsGene handler doesn't try to open the hub-virtual db, and Get Genomic Sequence Near Gene now reads sequence from the destination assembly at the lifted exon coordinates refs #36125
- src/hg/hgc/ccdsClick.c - lines changed 18, context: html, text, full: html, text
037038e736a88de87b00e5a384b29f45e831419f Fri May 15 14:29:07 2026 -0700
- fix Mysql "Commands out of sync" error on OMIM Genes (omimGene2) detail page
prGRShortRefGene runs its own queries on the supplied connection, so calling it
mid-iteration of an outer sqlMustGetResult loop on the same conn produced
"Commands out of sync; you can't run this command now". Slurp the gene names
into an slName list, free the outer result, then iterate, refs #37565
1b10a8e2ba4238d3045d8511faf2d7a105b13941 Mon May 18 09:57:49 2026 -0700
- free sqlConnection at end of printOmimGene2Details, refs #37571
Per Chris's review on #37571: the conn allocated at the top of the
function was never freed.
switch to files view, user index