All File Changes
v502_preview to v502_preview2 (2026-07-27 to 2026-08-04) v502
Show details
- confs/hgwdev.hg.conf
- lines changed 8, context: html, text, full: html, text
682ab35733635575cc4c65b1f639e5be9f0080f2 Sun Aug 2 01:11:14 2026 -0700
Installing updated hg.conf files from UCSC servers
- docs/tutorials/customTrackTutorial.md
- lines changed 2, context: html, text, full: html, text
981342c978baf2d56a1ddad178b100138b55298c Sat Aug 1 20:58:19 2026 -0700
Fix pandoc rendering of tutorial step text inside the walkthrough columns
Indented markdown that ran directly into a closing </div> was being folded
into the raw-HTML block, so Step 1 paragraphs lost their <p> wrapper (and hugged
the heading) and two Table Browser lists did not close cleanly. Added the blank
line pandoc needs before </div> in the affected columns.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/tutorials/gb101.md
- lines changed 1, context: html, text, full: html, text
fd37b0cc737fd221a94034202db5458d954614eb Mon Aug 3 14:50:37 2026 -0700
Fix mismatched heading tag in gb101 tutorial
The Interactive Tutorial panel opened an <h3> but closed with </h4>.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 50, context: html, text, full: html, text
93ee577eacf6c0ec157f11aee34085f34d476b72 Mon Aug 3 15:30:22 2026 -0700
Add Recommended Track Sets and Share a link sections to gb101 tutorial
Document two features now on the RR that the intro page did not cover: the
Recommended Track Sets dialog (curated, pre-configured track groups) and the
Share a link button for short, permanent view links. Adds a screenshot of each
dialog and notes Recommended Track Sets in the Genome Browser menu list.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/tutorials/tableBrowserTutorial.md
- lines changed 3, context: html, text, full: html, text
981342c978baf2d56a1ddad178b100138b55298c Sat Aug 1 20:58:19 2026 -0700
Fix pandoc rendering of tutorial step text inside the walkthrough columns
Indented markdown that ran directly into a closing </div> was being folded
into the raw-HTML block, so Step 1 paragraphs lost their <p> wrapper (and hugged
the heading) and two Table Browser lists did not close cleanly. Added the blank
line pandoc needs before </div> in the affected columns.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/cgilib/cartJson.c
- lines changed 5, context: html, text, full: html, text
ea82eeb86ad5cf92ddf795f2d6f9ce84e33e52d5 Wed Jul 29 11:20:16 2026 -0700
Stop hubApi /search from crashing on position matches and curated hub genomes. refs #37956
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/cirm/gateway/htdocs/sspsygeneTimeline.html
- lines changed 5, context: html, text, full: html, text
d39b686bec4782f1b26041ef3eac8611698889d4 Mon Jul 27 14:25:42 2026 -0700
Adding link to Broad latest milestones sheet (2026-2027 span), and noting their grant a year offset versus all other ADGCs
- lines changed 2, context: html, text, full: html, text
cb1678d4b72dde31c186781bd5d432378a240fe3 Tue Jul 28 14:15:23 2026 -0700
Adding a link to the SSPsyGene Google Drive Milestones/ Folder up top for easy reference on timeline.
- lines changed 16, context: html, text, full: html, text
1274840d05ddf4c1b07321a0d1d54c30192761df Tue Jul 28 14:22:29 2026 -0700
For clarity, removing original consortium year mapping on newer ADGCs (5,6,7 = Scripps/SING/WUSTL) since they have different timeline
- src/hg/hgConvert/hgConvert.c
- lines changed 11, context: html, text, full: html, text
fbfdc0a36bb6d3b0eb57dd07262c059086c7054e Fri Jul 31 14:55:15 2026 -0700
hgConvert: link to the alignment request page, behind showLiftRequest, refs #37973
The Convert page's assembly list only offers targets that already have a
chain from the source, so it is where a user finds out theirs is missing.
Nothing in the tree linked to liftRequest.html, the page that requests a
new alignment, so unless someone wrote to us and we sent the URL they were
unlikely to find it.
Adds "Target assembly not listed? Request an alignment" at the foot of the
Destination section, gated by the new hg.conf flag showLiftRequest, which
defaults FALSE. Registered in the hg.conf catalog as a release gate.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 5, context: html, text, full: html, text
2bc6a4a8c77bc5ea8fec9a1661e9526b5f1735d7 Mon Aug 3 14:54:39 2026 -0700
Keep hgConvert's "Hide all default tracks on the target" checked by default across a target assembly change.
The checkbox is disabled by JS while QuickLift is off, which is the default
state. A disabled checkbox is not submitted but its boolshad shadow variable
still is, so changing the target genome or assembly resubmitted the form and
stored hideTracksOnConvert=0 in the cart, leaving the box unchecked on redraw.
Disable the shadow along with the checkbox so the default survives.
- src/hg/hgHubConnect/hooks/hooklib.c
- lines changed 50, context: html, text, full: html, text
a8349f676d1dad81ee90c58605ecbd69453666b1 Mon Jul 27 15:14:21 2026 -0700
Fixed a bug in hubspace uploads where the unencoded parentDir was used by tusd for the upload location while the encoded path was set in the hubSpace table. Also validate and trim parentDir in the pre-create hook and in hgMyData.js, refs #34962
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/hgHubConnect/hooks/hooklib.h
- lines changed 9, context: html, text, full: html, text
a8349f676d1dad81ee90c58605ecbd69453666b1 Mon Jul 27 15:14:21 2026 -0700
Fixed a bug in hubspace uploads where the unencoded parentDir was used by tusd for the upload location while the encoded path was set in the hubSpace table. Also validate and trim parentDir in the pre-create hook and in hgMyData.js, refs #34962
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/hgHubConnect/hooks/pre-create.c
- lines changed 11, context: html, text, full: html, text
a8349f676d1dad81ee90c58605ecbd69453666b1 Mon Jul 27 15:14:21 2026 -0700
Fixed a bug in hubspace uploads where the unencoded parentDir was used by tusd for the upload location while the encoded path was set in the hubSpace table. Also validate and trim parentDir in the pre-create hook and in hgMyData.js, refs #34962
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 4, context: html, text, full: html, text
14a339480313e5b687eb899766347021ca94b41d Thu Jul 30 16:12:03 2026 -0700
Call errCatchEnd() before handling the caught error in the tusd hooks, refs #37963
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/hgHubConnect/hooks/pre-finish.c
- lines changed 2, context: html, text, full: html, text
a8349f676d1dad81ee90c58605ecbd69453666b1 Mon Jul 27 15:14:21 2026 -0700
Fixed a bug in hubspace uploads where the unencoded parentDir was used by tusd for the upload location while the encoded path was set in the hubSpace table. Also validate and trim parentDir in the pre-create hook and in hgMyData.js, refs #34962
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 4, context: html, text, full: html, text
14a339480313e5b687eb899766347021ca94b41d Thu Jul 30 16:12:03 2026 -0700
Call errCatchEnd() before handling the caught error in the tusd hooks, refs #37963
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/hgLogin/gbMemberIdentity.sql
- lines changed 16, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 1, context: html, text, full: html, text
f85553903a3f87b3029f94e49f0a7d1bb805445b Mon Aug 3 12:52:33 2026 -0700
hgLogin: configurable OIDC providers, GitHub login, top-level email-link button, sign-in wording. refs #37984
- src/hg/hgLogin/hgLogin.c
- lines changed 712, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 62, context: html, text, full: html, text
f85553903a3f87b3029f94e49f0a7d1bb805445b Mon Aug 3 12:52:33 2026 -0700
hgLogin: configurable OIDC providers, GitHub login, top-level email-link button, sign-in wording. refs #37984
- lines changed 249, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/hg/hgLogin/makefile
- lines changed 1, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- src/hg/hgLogin/oauthLogin.c
- lines changed 237, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 302, context: html, text, full: html, text
f85553903a3f87b3029f94e49f0a7d1bb805445b Mon Aug 3 12:52:33 2026 -0700
hgLogin: configurable OIDC providers, GitHub login, top-level email-link button, sign-in wording. refs #37984
- lines changed 86, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/hg/hgLogin/oauthLogin.h
- lines changed 52, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 44, context: html, text, full: html, text
f85553903a3f87b3029f94e49f0a7d1bb805445b Mon Aug 3 12:52:33 2026 -0700
hgLogin: configurable OIDC providers, GitHub login, top-level email-link button, sign-in wording. refs #37984
- src/hg/hgMenubar/hgMenubar.c
- lines changed 5, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- src/hg/hgSession/hgSession.c
- lines changed 6, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- src/hg/hgTracks/decorator.c
- lines changed 2, context: html, text, full: html, text
304e9ab6e3a62d7863b144478fc1ac621623a617 Wed Jul 29 11:42:01 2026 -0700
Fix data race on the chromAlias caches that was crashing hgTracks in parallel decorator loads.
chromAliasFindNative() and chromAliasFindAliases() lazily created their static
cache hashes and did their first lookup outside the mutex, taking the lock only
for the miss path. hgTracks loads decorators on real pthreads, so two threads
arriving before a cache existed could race on it and SIGSEGV in hashLookup.
Move the lock above the lazy init and the first lookup so the whole cache
access is inside it.
Both paths of chromAliasFindNative() now return an allocated string rather than
the cache-owned pointer, so document that the caller owns the result, free it in
decorationNativeItem() (called once per decoration), and drop the redundant
outer cloneString() in hgOfficialChromName().
refs #37955
- src/hg/hgTracks/encode.c
- lines changed 1, context: html, text, full: html, text
80daf93864f5609f6b7695766a78edd90cac0c1d Fri Jul 31 12:29:05 2026 -0700
quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970
Add broadPeak to the types validateOneTdb will lift; hgTracks already knew
how to load one. Make hgc's encodePeak handler read the table out of the
source assembly and lift the items, instead of looking in the destination
assembly where the table does not exist and coming up empty. Lift peaks with
a new quickLiftPeaks() rather than casting them to bed and calling
quickLiftBeds(), whose thickStart and thickEnd assignments land on
signalValue and pValue in struct encodePeak.
- src/hg/hgTracks/hgTracks.c
- lines changed 11, context: html, text, full: html, text
644f1ed70c1b04896944f66bdfa03c16278135d6 Fri Jul 31 15:16:12 2026 -0700
quickLift: keep the difference lines from standing still during a drag
The difference lines are drawn up over a track's center label, but center
labels don't scroll with the data, so the lines sat still while the image
moved underneath them. hgTracks now keeps each center label as text with
the color it was drawn in, and flags the label when lines were painted over
it. While the image is being dragged hgTracks.js hides that slice and puts
the label up as text in its place, then swaps the image back on drop.
Windows with no difference lines drawn are untouched. refs #37974
- lines changed 14, context: html, text, full: html, text
d954d1cf037e0ae2d2c76f441d558947041b9737 Mon Aug 3 14:01:16 2026 -0700
Revert "Do not show 'visible tracks' group unless there are more than 32 top level tracks, refs Hiram complaint"
This reverts commit 7f7a44a19ff9a54dbaf894365d30e394e802024b.
- src/hg/hgTracks/imageV2.c
- lines changed 22, context: html, text, full: html, text
644f1ed70c1b04896944f66bdfa03c16278135d6 Fri Jul 31 15:16:12 2026 -0700
quickLift: keep the difference lines from standing still during a drag
The difference lines are drawn up over a track's center label, but center
labels don't scroll with the data, so the lines sat still while the image
moved underneath them. hgTracks now keeps each center label as text with
the color it was drawn in, and flags the label when lines were painted over
it. While the image is being dragged hgTracks.js hides that slice and puts
the label up as text in its place, then swaps the image back on drop.
Windows with no difference lines drawn are untouched. refs #37974
- src/hg/hgTracks/imageV2.h
- lines changed 6, context: html, text, full: html, text
644f1ed70c1b04896944f66bdfa03c16278135d6 Fri Jul 31 15:16:12 2026 -0700
quickLift: keep the difference lines from standing still during a drag
The difference lines are drawn up over a track's center label, but center
labels don't scroll with the data, so the lines sat still while the image
moved underneath them. hgTracks now keeps each center label as text with
the color it was drawn in, and flags the label when lines were painted over
it. While the image is being dragged hgTracks.js hides that slice and puts
the label up as text in its place, then swaps the image back on drop.
Windows with no difference lines drawn are untouched. refs #37974
- src/hg/hgTracks/quickLift.c
- lines changed 15, context: html, text, full: html, text
e55631175ec686f6f63bc4da3ab3b0972c8e0ef3 Tue Jul 28 10:18:23 2026 -0700
quickLift: leave the Alignment Differences track blank when there are no differences
drawDenseChain() was only reached when the window had no mismatches,
indels, or double-sided gaps, and it painted each chain as a solid box
from a rotating palette, so an identical window rendered as solid blue.
Renamed it mapDenseChain() and dropped the fill (and the now-unused
palette); it still lays down a mapbox per chain so the click-through to
the other assembly keeps working.
- lines changed 7, context: html, text, full: html, text
644f1ed70c1b04896944f66bdfa03c16278135d6 Fri Jul 31 15:16:12 2026 -0700
quickLift: keep the difference lines from standing still during a drag
The difference lines are drawn up over a track's center label, but center
labels don't scroll with the data, so the lines sat still while the image
moved underneath them. hgTracks now keeps each center label as text with
the color it was drawn in, and flags the label when lines were painted over
it. While the image is being dragged hgTracks.js hides that slice and puts
the label up as text in its place, then swaps the image back on drop.
Windows with no difference lines drawn are untouched. refs #37974
- src/hg/hgc/encodeClick.c
- lines changed 78, context: html, text, full: html, text
80daf93864f5609f6b7695766a78edd90cac0c1d Fri Jul 31 12:29:05 2026 -0700
quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970
Add broadPeak to the types validateOneTdb will lift; hgTracks already knew
how to load one. Make hgc's encodePeak handler read the table out of the
source assembly and lift the items, instead of looking in the destination
assembly where the table does not exist and coming up empty. Lift peaks with
a new quickLiftPeaks() rather than casting them to bed and calling
quickLiftBeds(), whose thickStart and thickEnd assignments land on
signalValue and pValue in struct encodePeak.
- src/hg/hgc/hgc.c
- lines changed 7, context: html, text, full: html, text
2bcc3cdc8c4d2bf0028b52de8c9a554b5bd28b6f Mon Jul 27 10:49:08 2026 -0700
polish hub track names in bigPsl alignment links, refs #37490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/htdocs/allTipsRaw.html
- lines changed 39, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- lines changed 4, context: html, text, full: html, text
4d078885529f20b1eb60a0dbb7931ae76793a5ea Tue Aug 4 09:24:38 2026 -0700
Fix stale alt text and copy problems in the tip rotation per CR feedback. refs #37976
The image alt text on the "Download Current Track Data" tip still carried the old
incorrect label, "Download track data in view", so the correction in the previous
commit only reached the visible text and left the wrong wording in the accessibility
layer. Also replaced the internal "RTS" abbreviation in the Recommended Track Sets
alt text with the full name.
Other copy fixes: the Track Collection Builder tip called the result a "container"
in one sentence and a "collection" in the next, so both now say collection to match
the tool name; a "which" clause in the multi-region tip attached the exon view
keyboard shortcut to "exon sequencing data" rather than to the view itself; and the
Recommended Track Sets tip listed six of the seven sets, so exon relevance was added.
- src/hg/htdocs/cite.html
- lines changed 54, context: html, text, full: html, text
f109d04eb4371b671b4d2810f0b3403320d800d3 Mon Aug 3 06:31:30 2026 -0700
Add PMID and DOI to all references on cite.html, move screenshot guidance into the best practices section. refs #37986
Every entry under "Genome Browser software and website references" now lists both
a PMID and a DOI, verified against PubMed via NCBI E-utilities.
Replace the superseded GenArk Res Sq preprint citation with the published Genome
Biology version (PMID 37784172).
Update the 2026 NAR update citation from the epub stub to the final
54(D1):D1331-D1335, and the SARS-CoV-2 entry to its issue citation.
Move the Genome Browser screenshots paragraph out of the reference list and into
"General best practices for publications" as a list item, and extend that
section's intro sentence to mention screenshots.
- lines changed 11, context: html, text, full: html, text
6a89c12dbd7cc73c93e8be489d4e7fedf8b06670 Mon Aug 3 16:25:26 2026 -0700
Fixing dead and unstable publisher links, refs #37986
- src/hg/htdocs/goldenPath/help/hgTrackHubHelp.html
- lines changed 6, context: html, text, full: html, text
faffaf6750cf5492f3bd779a8e2d3fe4116e24d6 Tue Jul 28 14:53:49 2026 -0700
Documenting the codonTable genomes.txt setting on the trackDb hub settings page and the track hub help page, with the changes page now linking to the new settings entry, refs #16550
- src/hg/htdocs/goldenPath/help/hgTracksHelp.html
- lines changed 1, context: html, text, full: html, text
6a89c12dbd7cc73c93e8be489d4e7fedf8b06670 Mon Aug 3 16:25:26 2026 -0700
Fixing dead and unstable publisher links, refs #37986
- src/hg/htdocs/goldenPath/help/mirrorManual.html
- lines changed 84, context: html, text, full: html, text
1e1b78acdbd86ed07b3301aaf3061a3a57f95264 Tue Aug 4 03:16:26 2026 -0700
mirrorManual: document hgLogin social sign-in (Google/ORCID/GitHub/OIDC) and email sign-in link config. refs #37984
- lines changed 22, context: html, text, full: html, text
30bd9b2986b3dfd6ce6023fb6302423efc68e04b Tue Aug 4 04:14:29 2026 -0700
mirrorManual: add OAuth provider registration URLs (Google/ORCID/GitHub, and CILogon/LifeScienceRI for universities). refs #37984
- src/hg/htdocs/goldenPath/help/publicHubGuidelines.html
- lines changed 10, context: html, text, full: html, text
34aec9e1cf9e55e0f674234e490eaa596472081a Thu Jul 30 18:06:05 2026 -0700
Adding unique track labels as a public hub requirement. refs #37922
Every track needs a shortLabel and longLabel that distinguish it from the other
tracks in the hub. This was already how we reviewed public hub submissions, but it
was not written down anywhere on the guidelines page, which previously only carried
the shortLabel length recommendation.
Notes that a metadata table on a composite configuration page does not satisfy this,
since those values are not displayed anywhere outside that page. Came up on the
Sci-ModoM submission, where 161 subtracks shared 8 shortLabels and 33 longLabels.
- src/hg/htdocs/goldenPath/help/trackDb/changes.html
- lines changed 1, context: html, text, full: html, text
faffaf6750cf5492f3bd779a8e2d3fe4116e24d6 Tue Jul 28 14:53:49 2026 -0700
Documenting the codonTable genomes.txt setting on the trackDb hub settings page and the track hub help page, with the changes page now linking to the new settings entry, refs #16550
- lines changed 10, context: html, text, full: html, text
ca4b6d0d29c6d29b43df588a4635b556acc84f7f Fri Jul 31 16:59:51 2026 -0700
Fix maxCheckboxes spelling in trackDb docs, which listed it as maxCheckBoxes.
Setting names are case sensitive and the browser reads the lowercase form, so
hubs copying the documented spelling silently got the default. Also adds
level-new tags to the faceted composite settings metaDataUrl, primaryKey,
maxCheckboxes and dataTypes so hubCheck -checkSettings recognizes them instead
of reporting them as unknown. refs #37965
- src/hg/htdocs/goldenPath/help/trackDb/trackDbDoc.html
- lines changed 3, context: html, text, full: html, text
ca4b6d0d29c6d29b43df588a4635b556acc84f7f Fri Jul 31 16:59:51 2026 -0700
Fix maxCheckboxes spelling in trackDb docs, which listed it as maxCheckBoxes.
Setting names are case sensitive and the browser reads the lowercase form, so
hubs copying the documented spelling silently got the default. Also adds
level-new tags to the faceted composite settings metaDataUrl, primaryKey,
maxCheckboxes and dataTypes so hubCheck -checkSettings recognizes them instead
of reporting them as unknown. refs #37965
- src/hg/htdocs/goldenPath/help/trackDb/trackDbHub.v3.html
- lines changed 5, context: html, text, full: html, text
faffaf6750cf5492f3bd779a8e2d3fe4116e24d6 Tue Jul 28 14:53:49 2026 -0700
Documenting the codonTable genomes.txt setting on the trackDb hub settings page and the track hub help page, with the changes page now linking to the new settings entry, refs #16550
- lines changed 6, context: html, text, full: html, text
ca4b6d0d29c6d29b43df588a4635b556acc84f7f Fri Jul 31 16:59:51 2026 -0700
Fix maxCheckboxes spelling in trackDb docs, which listed it as maxCheckBoxes.
Setting names are case sensitive and the browser reads the lowercase form, so
hubs copying the documented spelling silently got the default. Also adds
level-new tags to the faceted composite settings metaDataUrl, primaryKey,
maxCheckboxes and dataTypes so hubCheck -checkSettings recognizes them instead
of reporting them as unknown. refs #37965
- src/hg/htdocs/goldenPath/help/trackDb/trackDbLibrary.shtml
- lines changed 35, context: html, text, full: html, text
faffaf6750cf5492f3bd779a8e2d3fe4116e24d6 Tue Jul 28 14:53:49 2026 -0700
Documenting the codonTable genomes.txt setting on the trackDb hub settings page and the track hub help page, with the changes page now linking to the new settings entry, refs #16550
- lines changed 2, context: html, text, full: html, text
ca4b6d0d29c6d29b43df588a4635b556acc84f7f Fri Jul 31 16:59:51 2026 -0700
Fix maxCheckboxes spelling in trackDb docs, which listed it as maxCheckBoxes.
Setting names are case sensitive and the browser reads the lowercase form, so
hubs copying the documented spelling silently got the default. Also adds
level-new tags to the faceted composite settings metaDataUrl, primaryKey,
maxCheckboxes and dataTypes so hubCheck -checkSettings recognizes them instead
of reporting them as unknown. refs #37965
- src/hg/htdocs/goldenPath/newsarch.html
- lines changed 3, context: html, text, full: html, text
6a89c12dbd7cc73c93e8be489d4e7fedf8b06670 Mon Aug 3 16:25:26 2026 -0700
Fixing dead and unstable publisher links, refs #37986
- src/hg/htdocs/goldenPath/pubs.html
- lines changed 27, context: html, text, full: html, text
6a89c12dbd7cc73c93e8be489d4e7fedf8b06670 Mon Aug 3 16:25:26 2026 -0700
Fixing dead and unstable publisher links, refs #37986
- src/hg/htdocs/images/containerApplyTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/duplicateTrackTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/exonSearchTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/externalToolsTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/posterGalleryTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/recommendedTrackSets.png
- lines changed 0, context: html, text, full: html, text
93ee577eacf6c0ec157f11aee34085f34d476b72 Mon Aug 3 15:30:22 2026 -0700
Add Recommended Track Sets and Share a link sections to gb101 tutorial
Document two features now on the RR that the intro page did not cover: the
Recommended Track Sets dialog (curated, pre-configured track groups) and the
Share a link button for short, permanent view links. Adds a screenshot of each
dialog and notes Recommended Track Sets in the Genome Browser menu list.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/htdocs/images/reverseButtonTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/shareLinkExample.png
- lines changed 0, context: html, text, full: html, text
93ee577eacf6c0ec157f11aee34085f34d476b72 Mon Aug 3 15:30:22 2026 -0700
Add Recommended Track Sets and Share a link sections to gb101 tutorial
Document two features now on the RR that the intro page did not cover: the
Recommended Track Sets dialog (curated, pre-configured track groups) and the
Share a link button for short, permanent view links. Adds a screenshot of each
dialog and notes Recommended Track Sets in the Genome Browser menu list.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/htdocs/images/trackColorTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/tutorialImages/hgCustomAnnotated_pt1.png
- lines changed 0, context: html, text, full: html, text
91df4233e1ec4523f20367104bbdebd932f6e640 Sat Aug 1 20:45:29 2026 -0700
Reposition and enlarge call-outs on the Add Custom Tracks annotated image
Moved the red 'Send the data...' call-out to the empty page area right of the
Submit button, dropped the blue documentation call-out down next to the
Optional track documentation input, aligned the purple call-out with the paste
box, and enlarged the call-out text so it matches the pt2 image on the page.
refs #37355
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/htdocs/images/tutorialsTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/viewChromosomesTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/images/visibleTracksTip.png
- lines changed 0, context: html, text, full: html, text
37fb40ea02f93e45a97d04567fc6c8d6990cfba3 Mon Aug 3 16:30:26 2026 -0700
Add 22 new "Did you know?" tips and correct outdated content in the existing 25. refs #37976
New tips cover features released since the tip rotation launched (exon search in the
position box, Duplicate track, the Visible Tracks group, track container settings,
amino acid mouseovers, Change Track Color) along with long-standing features that had
no tip (custom tracks, interactive tutorials, External Tools, In-Silico PCR, BLAT all
genomes, Table Browser batch queries and intersections, Data Access sections,
next/previous item arrows, the Reverse button, GenArk and public hubs, gene details
pages, hide all and Reset All User Settings, mailing lists, the poster gallery,
View then Chromosomes, and alternate chromosome names).
Corrections to the existing tips: the Download menu item is "Download Current Track
Data" under Downloads, not "Download track data in view" under Download; /list/schema
returns a track's field schema rather than trackDb stanzas; the rotation runs weekdays,
not daily; the Hub Upload quota is 10 GB; there are now seven Recommended Track Sets;
the View menu item is "In Other Genomes (Convert)"; the Configure page label is "Text
size"; and several menu paths, button labels, and container terms were out of date.
All feature claims were verified against the v501 CGIs on genome.ucsc.edu rather than
the source tree, since master is ahead of what the public can use. Adds 10 screenshots
displayed at 2x pixel density to match the sharpness of the existing tip images.
- src/hg/htdocs/indexMeetings.html
- lines changed 13, context: html, text, full: html, text
9d7f7e0328fdcf061fb7fa523dc74a8e7c5d6499 Fri Jul 31 20:24:45 2026 -0700
Remove past VALT and McKusick meetings from indexMeetings page and rebalance columns. No RM.
- src/hg/htdocs/style/userAccounts.css
- lines changed 35, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 41, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/hg/hubApi/apiUtils.c
- lines changed 11, context: html, text, full: html, text
9b6210bc4e86c38aff5a505b3c40cb90e3a4b9b8 Fri Jul 31 13:37:13 2026 -0700
pass relay secret string in http headers instead of in the URL and fixup a bare SQL injection refs #31811
- src/hg/hubApi/dataApi.h
- lines changed 4, context: html, text, full: html, text
9b6210bc4e86c38aff5a505b3c40cb90e3a4b9b8 Fri Jul 31 13:37:13 2026 -0700
pass relay secret string in http headers instead of in the URL and fixup a bare SQL injection refs #31811
- src/hg/hubApi/search.c
- lines changed 4, context: html, text, full: html, text
ea82eeb86ad5cf92ddf795f2d6f9ce84e33e52d5 Wed Jul 29 11:20:16 2026 -0700
Stop hubApi /search from crashing on position matches and curated hub genomes. refs #37956
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/hubApi/tests/expected/list27.gz
- lines changed 0, context: html, text, full: html, text
7a561e21d2bc570f2602bae5150f91c0d4d36ec9 Wed Jul 29 10:27:56 2026 -0700
Updating hubApi list27 expected output to include the clade field, and removing clade from excludeLines (added in commit e71e94fff95), No RM
- src/hg/hubApi/tests/makefile
- lines changed 1, context: html, text, full: html, text
e71e94fff952fcc0a569e3c89a687a3250396f97 Wed Jul 29 09:44:31 2026 -0700
Excluding the clade field from hubApi list27/list27b test comparison due to the cron complaining, No RM
- lines changed 1, context: html, text, full: html, text
7a561e21d2bc570f2602bae5150f91c0d4d36ec9 Wed Jul 29 10:27:56 2026 -0700
Updating hubApi list27 expected output to include the clade field, and removing clade from excludeLines (added in commit e71e94fff95), No RM
- src/hg/inc/assemblySummary.h
- lines changed 115, context: html, text, full: html, text
643fc5346b9416e784bdf9b169ae9405d651264d Thu Jul 30 15:37:45 2026 -0700
definitions to load the assembly_summary files from NCBI refs #37958
- src/hg/inc/chromAlias.h
- lines changed 2, context: html, text, full: html, text
304e9ab6e3a62d7863b144478fc1ac621623a617 Wed Jul 29 11:42:01 2026 -0700
Fix data race on the chromAlias caches that was crashing hgTracks in parallel decorator loads.
chromAliasFindNative() and chromAliasFindAliases() lazily created their static
cache hashes and did their first lookup outside the mutex, taking the lock only
for the miss path. hgTracks loads decorators on real pthreads, so two threads
arriving before a cache existed could race on it and SIGSEGV in hashLookup.
Move the lock above the lazy init and the first lookup so the whole cache
access is inside it.
Both paths of chromAliasFindNative() now return an allocated string rather than
the cache-owned pointer, so document that the caller owns the result, free it in
decorationNativeItem() (called once per decoration), and drop the redundant
outer cloneString() in hgOfficialChromName().
refs #37955
- src/hg/inc/quickLift.h
- lines changed 5, context: html, text, full: html, text
80daf93864f5609f6b7695766a78edd90cac0c1d Fri Jul 31 12:29:05 2026 -0700
quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970
Add broadPeak to the types validateOneTdb will lift; hgTracks already knew
how to load one. Make hgc's encodePeak handler read the table out of the
source assembly and lift the items, instead of looking in the destination
assembly where the table does not exist and coming up empty. Lift peaks with
a new quickLiftPeaks() rather than casting them to bed and calling
quickLiftBeds(), whose thickStart and thickEnd assignments land on
signalValue and pValue in struct encodePeak.
- src/hg/inc/trackHub.h
- lines changed 2, context: html, text, full: html, text
ea82eeb86ad5cf92ddf795f2d6f9ce84e33e52d5 Wed Jul 29 11:20:16 2026 -0700
Stop hubApi /search from crashing on position matches and curated hub genomes. refs #37956
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/inc/wikiLink.h
- lines changed 3, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 2, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/hg/js/hgMyData.js
- lines changed 16, context: html, text, full: html, text
a8349f676d1dad81ee90c58605ecbd69453666b1 Mon Jul 27 15:14:21 2026 -0700
Fixed a bug in hubspace uploads where the unencoded parentDir was used by tusd for the upload location while the encoded path was set in the hubSpace table. Also validate and trim parentDir in the pre-create hook and in hgMyData.js, refs #34962
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/js/hgTracks.js
- lines changed 30, context: html, text, full: html, text
644f1ed70c1b04896944f66bdfa03c16278135d6 Fri Jul 31 15:16:12 2026 -0700
quickLift: keep the difference lines from standing still during a drag
The difference lines are drawn up over a track's center label, but center
labels don't scroll with the data, so the lines sat still while the image
moved underneath them. hgTracks now keeps each center label as text with
the color it was drawn in, and flags the label when lines were painted over
it. While the image is being dragged hgTracks.js hides that slice and puts
the label up as text in its place, then swaps the image back on drop.
Windows with no difference lines drawn are untouched. refs #37974
- src/hg/js/topLinks.js
- lines changed 3, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- src/hg/lib/assemblySummary.as
- lines changed 42, context: html, text, full: html, text
643fc5346b9416e784bdf9b169ae9405d651264d Thu Jul 30 15:37:45 2026 -0700
definitions to load the assembly_summary files from NCBI refs #37958
- src/hg/lib/assemblySummary.c
- lines changed 596, context: html, text, full: html, text
643fc5346b9416e784bdf9b169ae9405d651264d Thu Jul 30 15:37:45 2026 -0700
definitions to load the assembly_summary files from NCBI refs #37958
- src/hg/lib/assemblySummary.sql
- lines changed 51, context: html, text, full: html, text
643fc5346b9416e784bdf9b169ae9405d651264d Thu Jul 30 15:37:45 2026 -0700
definitions to load the assembly_summary files from NCBI refs #37958
- lines changed 9, context: html, text, full: html, text
7024eeb90212e7787a66cca8dab92c8690834fb9 Thu Jul 30 17:12:27 2026 -0700
adjustments for some odd rows refs #37958
- src/hg/lib/chromAlias.c
- lines changed 14, context: html, text, full: html, text
304e9ab6e3a62d7863b144478fc1ac621623a617 Wed Jul 29 11:42:01 2026 -0700
Fix data race on the chromAlias caches that was crashing hgTracks in parallel decorator loads.
chromAliasFindNative() and chromAliasFindAliases() lazily created their static
cache hashes and did their first lookup outside the mutex, taking the lock only
for the miss path. hgTracks loads decorators on real pthreads, so two threads
arriving before a cache existed could race on it and SIGSEGV in hashLookup.
Move the lock above the lazy init and the first lookup so the whole cache
access is inside it.
Both paths of chromAliasFindNative() now return an allocated string rather than
the cache-owned pointer, so document that the caller owns the result, free it in
decorationNativeItem() (called once per decoration), and drop the redundant
outer cloneString() in hgOfficialChromName().
refs #37955
- src/hg/lib/hdb.c
- lines changed 3, context: html, text, full: html, text
ea82eeb86ad5cf92ddf795f2d6f9ce84e33e52d5 Wed Jul 29 11:20:16 2026 -0700
Stop hubApi /search from crashing on position matches and curated hub genomes. refs #37956
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 1, context: html, text, full: html, text
304e9ab6e3a62d7863b144478fc1ac621623a617 Wed Jul 29 11:42:01 2026 -0700
Fix data race on the chromAlias caches that was crashing hgTracks in parallel decorator loads.
chromAliasFindNative() and chromAliasFindAliases() lazily created their static
cache hashes and did their first lookup outside the mutex, taking the lock only
for the miss path. hgTracks loads decorators on real pthreads, so two threads
arriving before a cache existed could race on it and SIGSEGV in hashLookup.
Move the lock above the lazy init and the first lookup so the whole cache
access is inside it.
Both paths of chromAliasFindNative() now return an allocated string rather than
the cache-owned pointer, so document that the caller owns the result, free it in
decorationNativeItem() (called once per decoration), and drop the redundant
outer cloneString() in hgOfficialChromName().
refs #37955
- src/hg/lib/makefile
- lines changed 1, context: html, text, full: html, text
9946c4df9443f75376808598ada08daad38bec76 Thu Jul 30 15:40:51 2026 -0700
obsolete asmSummary becomes assemblySummary refs #37958
- src/hg/lib/quickLift.c
- lines changed 25, context: html, text, full: html, text
80daf93864f5609f6b7695766a78edd90cac0c1d Fri Jul 31 12:29:05 2026 -0700
quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970
Add broadPeak to the types validateOneTdb will lift; hgTracks already knew
how to load one. Make hgc's encodePeak handler read the table out of the
source assembly and lift the items, instead of looking in the destination
assembly where the table does not exist and coming up empty. Lift peaks with
a new quickLiftPeaks() rather than casting them to bed and calling
quickLiftBeds(), whose thickStart and thickEnd assignments land on
signalValue and pValue in struct encodePeak.
- src/hg/lib/trackHub.c
- lines changed 7, context: html, text, full: html, text
ea82eeb86ad5cf92ddf795f2d6f9ce84e33e52d5 Wed Jul 29 11:20:16 2026 -0700
Stop hubApi /search from crashing on position matches and curated hub genomes. refs #37956
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 14, context: html, text, full: html, text
59dff194de2f867c3a8d3daaacace8d59dc7775b Fri Jul 31 12:26:14 2026 -0700
quickLift: match trackDb types without regard to case, so 'type bigbed' is accepted
- lines changed 1, context: html, text, full: html, text
80daf93864f5609f6b7695766a78edd90cac0c1d Fri Jul 31 12:29:05 2026 -0700
quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970
Add broadPeak to the types validateOneTdb will lift; hgTracks already knew
how to load one. Make hgc's encodePeak handler read the table out of the
source assembly and lift the items, instead of looking in the destination
assembly where the table does not exist and coming up empty. Lift peaks with
a new quickLiftPeaks() rather than casting them to bed and calling
quickLiftBeds(), whose thickStart and thickEnd assignments land on
signalValue and pValue in struct encodePeak.
- src/hg/lib/web.c
- lines changed 5, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- src/hg/lib/wikiLink.c
- lines changed 15, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 5, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/hg/makeDb/doc/Cardiomyopathy.txt
- lines changed 35, context: html, text, full: html, text
614ca430db1c23f496ccc5655d27b469e1c53443 Fri Jul 31 16:38:30 2026 -0700
Apply Cardiomyopathy VCEP feedback: BP7 splice-only, drop PS4 tracks, evidence-first Variant Evidence Summary. refs #37446
Per the CM VCEP's answers to the interpretation questions:
- BP7: remove the conservation (phyloP) requirement and set the SpliceAI cutoff
to < 0.1, per Walker 2023 (PMID 37352859).
- PS4: remove the Walsh 2017 gene-level OR and Atlas EF display tracks (the VCEP
computes PS4 from current cohorts). Scripts and data are retained in the tree;
the tracks are dropped from the hub trackDb.
- Rename the former provisional/computable-codes track to "Variant Evidence
Summary" and switch its mouseover to an evidence-first layout: each item leads
with the data and is tagged with the ACMG criterion it would support; no overall
classification is computed.
- Confirmed and reflected in the docs: EvRepo is the PS1/PM5 reference (Q1); the
PM4 last-exon / within-50-nt rule (Q2); CardioBoost stays informational (Q6);
the PM1 codon ranges are HCM-only (Q8); no functional-score dataset is currently
VCEP-approved (Q4).
- src/hg/makeDb/doc/asmHubs/mkSymLinks.pl
- lines changed 10, context: html, text, full: html, text
2593dae2a2f67c1a98c81a35a92a47cadaed33d7 Mon Aug 3 16:17:12 2026 -0700
getting the ncbiGene/archive out refs #37958
- lines changed 3, context: html, text, full: html, text
2cf4774648ff468f2c26ddab4a2b1c24294f40ee Mon Aug 3 16:27:49 2026 -0700
and symLink out the archive/ncbiGene to the hgdownload staging refs #37958
- src/hg/makeDb/doc/asmHubs/sendToHgdownload.sh
- lines changed 6, context: html, text, full: html, text
3c82ef9ff5d48182efda36c193dede849fd69c66 Wed Jul 29 21:57:48 2026 -0700
rsync to hgdownload ignore archive/ refs #37958
- lines changed 6, context: html, text, full: html, text
15c85bf89d6cbe8dcd3aea9e44e539b8b60825f2 Mon Aug 3 16:30:42 2026 -0700
OK to send out archive directory now refs #37958
- lines changed 6, context: html, text, full: html, text
3163998d4c6f3bfbce543b1a04f11682db2f52d4 Mon Aug 3 16:40:18 2026 -0700
include the archive/ncbiGene/*/hub.txt in the hgdownload push refs #37958
- src/hg/makeDb/doc/hg38/popEve.txt
- lines changed 12, context: html, text, full: html, text
e9a2b5a28cb4e3970977c76d84649bdd339a8423 Thu Jul 30 17:00:51 2026 -0700
Address popEVE code-review feedback (v502). refs #37950 refs #37791
- popEve.ra dataVersion now names the score source (March per-transcript release) and the
July VCF as the coordinate/strand source, rather than only the VCF date.
- vcfToPopEveHeatmap.py: when the CSV wildtype disagrees with the genomic wildtype, skip the
position and keep the correct sparse data instead of attaching CSV scores computed for a
different residue; skip CSV rows with a nan/empty popEVE; add a posSparse counter for
positions with genomic coordinates but no CSV row. All three are 0 on the current data, so
the bigBed output is unchanged (verified byte-identical), but they make the converter fail
safe for future per-transcript releases.
- Add the build drivers runBuild.sh and runBuildDense.sh to the tree (the anchor computation
previously lived only in the hive build directory), and add a makedoc forward-pointer so
the intermediate sparse section is not mistaken for the final dense build.
- src/hg/makeDb/doc/hg38/singleCellSignalsPeaks.txt
- lines changed 16, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 20, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/doc/mammalsAsmHub/mammals.orderList.tsv
- lines changed 4, context: html, text, full: html, text
68af4c3f3932fa4eed67a3ec455ec7093ad488cd Mon Jul 27 14:42:39 2026 -0700
adding a couple per user request refs #29545
- lines changed 4, context: html, text, full: html, text
5b2853df34ece1d773f2fd0625803005829f8649 Mon Aug 3 08:41:12 2026 -0700
testing the assembly request system refs #31811
- src/hg/makeDb/doc/mm10/singleCellSignalsPeaks.txt
- lines changed 124, context: html, text, full: html, text
0abed78024d40b506c2b2e3a49ad483045bc5e1d Sat Aug 1 20:53:25 2026 -0700
singleCellSignalsPeaks: add native mm10 track
mm10 counterpart of the hg38 track: 629 single-cell ATAC signal (bigWig) and
peak (bigNarrowPeak) subtracks from 9 Cell Browser datasets, re-parented under
one faceted composite in the regulation group. Colored by broad cell class from
the same palette as hg38, grouped by class, off by default; cell types are
paper-curated and the facets/longLabels are harmonized (see the makeDoc).
Data lives in /hive/data/genomes/mm10/bed/singleCellSignalsPeaks and is served
via the /gbdb/mm10/bbi symlink; the .ra is regenerated by
makeSingleCellSignalsPeaksRa.py from the Cell Browser hub build. Included in
mm10 trackDb.ra (alpha).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 90, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/doc/plantsAsmHub/plants.orderList.tsv
- lines changed 1, context: html, text, full: html, text
7b36bef91a2342823690eb89293c3ba19dec8d1e Mon Aug 3 08:51:36 2026 -0700
testing assembly submit system refs #31811
- src/hg/makeDb/doc/vertebrateAsmHub/vertebrate.orderList.tsv
- lines changed 3, context: html, text, full: html, text
68af4c3f3932fa4eed67a3ec455ec7093ad488cd Mon Jul 27 14:42:39 2026 -0700
adding a couple per user request refs #29545
- lines changed 1, context: html, text, full: html, text
8e9524c62f000fc7a3ea638ae3d6f1e6cd077d54 Tue Jul 28 14:45:31 2026 -0700
move one to legacy GCA_010909765.1_sAmbRad1 refs #29545
- lines changed 0, context: html, text, full: html, text
2ee596b92ac7068713614f4322ce634cf6981036 Tue Jul 28 14:50:43 2026 -0700
space in wrong location per claude code review no redmine
- src/hg/makeDb/scripts/cardiomyopathyVCEP/cmpVCEPProvisionalClass.py
- lines changed 114, context: html, text, full: html, text
614ca430db1c23f496ccc5655d27b469e1c53443 Fri Jul 31 16:38:30 2026 -0700
Apply Cardiomyopathy VCEP feedback: BP7 splice-only, drop PS4 tracks, evidence-first Variant Evidence Summary. refs #37446
Per the CM VCEP's answers to the interpretation questions:
- BP7: remove the conservation (phyloP) requirement and set the SpliceAI cutoff
to < 0.1, per Walker 2023 (PMID 37352859).
- PS4: remove the Walsh 2017 gene-level OR and Atlas EF display tracks (the VCEP
computes PS4 from current cohorts). Scripts and data are retained in the tree;
the tracks are dropped from the hub trackDb.
- Rename the former provisional/computable-codes track to "Variant Evidence
Summary" and switch its mouseover to an evidence-first layout: each item leads
with the data and is tagged with the ACMG criterion it would support; no overall
classification is computed.
- Confirmed and reflected in the docs: EvRepo is the PS1/PM5 reference (Q1); the
PM4 last-exon / within-50-nt rule (Q2); CardioBoost stays informational (Q6);
the PM1 codon ranges are HCM-only (Q8); no functional-score dataset is currently
VCEP-approved (Q4).
- src/hg/makeDb/scripts/popEve/runBuild.sh
- lines changed 72, context: html, text, full: html, text
e9a2b5a28cb4e3970977c76d84649bdd339a8423 Thu Jul 30 17:00:51 2026 -0700
Address popEVE code-review feedback (v502). refs #37950 refs #37791
- popEve.ra dataVersion now names the score source (March per-transcript release) and the
July VCF as the coordinate/strand source, rather than only the VCF date.
- vcfToPopEveHeatmap.py: when the CSV wildtype disagrees with the genomic wildtype, skip the
position and keep the correct sparse data instead of attaching CSV scores computed for a
different residue; skip CSV rows with a nan/empty popEVE; add a posSparse counter for
positions with genomic coordinates but no CSV row. All three are 0 on the current data, so
the bigBed output is unchanged (verified byte-identical), but they make the converter fail
safe for future per-transcript releases.
- Add the build drivers runBuild.sh and runBuildDense.sh to the tree (the anchor computation
previously lived only in the hive build directory), and add a makedoc forward-pointer so
the intermediate sparse section is not mistaken for the final dense build.
- src/hg/makeDb/scripts/popEve/runBuildDense.sh
- lines changed 44, context: html, text, full: html, text
e9a2b5a28cb4e3970977c76d84649bdd339a8423 Thu Jul 30 17:00:51 2026 -0700
Address popEVE code-review feedback (v502). refs #37950 refs #37791
- popEve.ra dataVersion now names the score source (March per-transcript release) and the
July VCF as the coordinate/strand source, rather than only the VCF date.
- vcfToPopEveHeatmap.py: when the CSV wildtype disagrees with the genomic wildtype, skip the
position and keep the correct sparse data instead of attaching CSV scores computed for a
different residue; skip CSV rows with a nan/empty popEVE; add a posSparse counter for
positions with genomic coordinates but no CSV row. All three are 0 on the current data, so
the bigBed output is unchanged (verified byte-identical), but they make the converter fail
safe for future per-transcript releases.
- Add the build drivers runBuild.sh and runBuildDense.sh to the tree (the anchor computation
previously lived only in the hive build directory), and add a makedoc forward-pointer so
the intermediate sparse section is not mistaken for the final dense build.
- src/hg/makeDb/scripts/popEve/vcfToPopEveHeatmap.py
- lines changed 16, context: html, text, full: html, text
e9a2b5a28cb4e3970977c76d84649bdd339a8423 Thu Jul 30 17:00:51 2026 -0700
Address popEVE code-review feedback (v502). refs #37950 refs #37791
- popEve.ra dataVersion now names the score source (March per-transcript release) and the
July VCF as the coordinate/strand source, rather than only the VCF date.
- vcfToPopEveHeatmap.py: when the CSV wildtype disagrees with the genomic wildtype, skip the
position and keep the correct sparse data instead of attaching CSV scores computed for a
different residue; skip CSV rows with a nan/empty popEVE; add a posSparse counter for
positions with genomic coordinates but no CSV row. All three are 0 on the current data, so
the bigBed output is unchanged (verified byte-identical), but they make the converter fail
safe for future per-transcript releases.
- Add the build drivers runBuild.sh and runBuildDense.sh to the tree (the anchor computation
previously lived only in the hive build directory), and add a makedoc forward-pointer so
the intermediate sparse section is not mistaken for the final dense build.
- src/hg/makeDb/scripts/singleCellSignalsPeaks/build_celltype_crosswalks.py
- lines changed 137, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 15, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/allen-basal-ganglia-atac.tsv
- lines changed 46, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/catlas-mouse-aging.tsv
- lines changed 234, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/catlas-mouse-brain.tsv
- lines changed 160, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/catlas-paired-tag.tsv
- lines changed 21, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/celltype-class.tsv
- lines changed 342, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 6, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/celltype-palette.tsv
- lines changed 22, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/clean5.tsv
- lines changed 42, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 1, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/hg38_ct_class.tsv
- lines changed 199, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 5, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/xwalk_allen-basal-ganglia-atac.tsv
- lines changed 47, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/xwalk_catlas-mouse-aging.tsv
- lines changed 235, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/xwalk_catlas-mouse-brain.tsv
- lines changed 161, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/xwalk_catlas-paired-tag.tsv
- lines changed 22, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/paper-decodes/xwalk_clean5.tsv
- lines changed 43, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/celltype-crosswalks/sea-ad-celltype-crosswalk.tsv
- lines changed 37, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/copySingleCellSignalsPeaksFiles.py
- lines changed 94, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 5, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/scripts/singleCellSignalsPeaks/makeSingleCellSignalsPeaksRa.py
- lines changed 77, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 10, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/buildRelatedTracks
- lines changed 10, context: html, text, full: html, text
dc5b5de8b09d0cd08c953805e29601860bbbd2ad Mon Jul 27 11:44:51 2026 -0700
allow '>' one-way and '~' bidirectional relatedTracks entries, refs #37390
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/human/alphaMissense.html
- lines changed 1, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/human/caddSuper.html
- lines changed 2, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/human/caddSuper1_7.html
- lines changed 2, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/human/clinPred.html
- lines changed 5, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/human/hg38/gnomad.constraint.alpha.ra
- lines changed 1, context: html, text, full: html, text
10db3769dd9edfa38ac8d900ca400fdfb514d9a7 Wed Jul 29 22:41:46 2026 -0700
An in-place update for gnomad v4.1 to v4.1.1 that swaps bigDataUrl, labels, dataVersion, detailsTabUrls, search descriptions, and removes the alpha-only gnomadVariantsV4.1.1 composite. Updates to gnomad.html, gnomadV4.1.html, and gnomadPLI.html regarding the addition of the gnomad v4.1.1 data, refs #37351
- src/hg/makeDb/trackDb/human/hg38/gnomad.html
- lines changed 2, context: html, text, full: html, text
10db3769dd9edfa38ac8d900ca400fdfb514d9a7 Wed Jul 29 22:41:46 2026 -0700
An in-place update for gnomad v4.1 to v4.1.1 that swaps bigDataUrl, labels, dataVersion, detailsTabUrls, search descriptions, and removes the alpha-only gnomadVariantsV4.1.1 composite. Updates to gnomad.html, gnomadV4.1.html, and gnomadPLI.html regarding the addition of the gnomad v4.1.1 data, refs #37351
- lines changed 1, context: html, text, full: html, text
19b8bfeadc8dc28380404a15e39ba662040dd279 Thu Jul 30 09:27:03 2026 -0700
Adding v4.1.1 to gnomad.html's Constraint Metrics bullet, and updating gnomadPLI.html's general LOEUF threshold recommendation from <0.35 to <0.45. refs #37351
- lines changed 2, context: html, text, full: html, text
062e08e4116be810b29621d9863e22bffdedcf50 Sun Aug 2 23:45:08 2026 -0700
Updating gnomad.html's Constraint Metrics bullet to say per-gene is only available for v2.1.1, and gnomadPLI.html's flags-section field count, Transcripts Included version list, shading description (pLI to LOEUF), and missense track color description. refs #37351
- src/hg/makeDb/trackDb/human/hg38/gnomad.ra
- lines changed 123, context: html, text, full: html, text
10db3769dd9edfa38ac8d900ca400fdfb514d9a7 Wed Jul 29 22:41:46 2026 -0700
An in-place update for gnomad v4.1 to v4.1.1 that swaps bigDataUrl, labels, dataVersion, detailsTabUrls, search descriptions, and removes the alpha-only gnomadVariantsV4.1.1 composite. Updates to gnomad.html, gnomadV4.1.html, and gnomadPLI.html regarding the addition of the gnomad v4.1.1 data, refs #37351
- lines changed 82, context: html, text, full: html, text
195d8eff01e3453a9027c0b679c68410e197f3c7 Fri Jul 31 13:58:07 2026 -0700
Adding release tags to the gnomadVariantsV4.1 composite and its gnomadExomesVariantsV4_1/gnomadGenomesVariantsV4_1 subtracks. refs #37351
- src/hg/makeDb/trackDb/human/hg38/gnomadMpc.html
- lines changed 114, context: html, text, full: html, text
fe36c1b0cd47c32282b161d2f5abd89f19b168da Wed Jul 29 15:27:29 2026 -0700
Made updates to the hg38 MPC track Description section, Display Conventions and Configuration section (added a legend table and other edits), and Methods section. Also updated gnomadMpc.ra to unhide transcript fields on the details page, reformat the mouseOver display, and clarify the Score field's scale, refs #37478
- src/hg/makeDb/trackDb/human/hg38/gnomadMpc.ra
- lines changed 3, context: html, text, full: html, text
fe36c1b0cd47c32282b161d2f5abd89f19b168da Wed Jul 29 15:27:29 2026 -0700
Made updates to the hg38 MPC track Description section, Display Conventions and Configuration section (added a legend table and other edits), and Methods section. Also updated gnomadMpc.ra to unhide transcript fields on the details page, reformat the mouseOver display, and clarify the Score field's scale, refs #37478
- src/hg/makeDb/trackDb/human/hg38/gnomadPLI.html
- lines changed 44, context: html, text, full: html, text
10db3769dd9edfa38ac8d900ca400fdfb514d9a7 Wed Jul 29 22:41:46 2026 -0700
An in-place update for gnomad v4.1 to v4.1.1 that swaps bigDataUrl, labels, dataVersion, detailsTabUrls, search descriptions, and removes the alpha-only gnomadVariantsV4.1.1 composite. Updates to gnomad.html, gnomadV4.1.html, and gnomadPLI.html regarding the addition of the gnomad v4.1.1 data, refs #37351
- lines changed 1, context: html, text, full: html, text
19b8bfeadc8dc28380404a15e39ba662040dd279 Thu Jul 30 09:27:03 2026 -0700
Adding v4.1.1 to gnomad.html's Constraint Metrics bullet, and updating gnomadPLI.html's general LOEUF threshold recommendation from <0.35 to <0.45. refs #37351
- lines changed 16, context: html, text, full: html, text
062e08e4116be810b29621d9863e22bffdedcf50 Sun Aug 2 23:45:08 2026 -0700
Updating gnomad.html's Constraint Metrics bullet to say per-gene is only available for v2.1.1, and gnomadPLI.html's flags-section field count, Transcripts Included version list, shading description (pLI to LOEUF), and missense track color description. refs #37351
- src/hg/makeDb/trackDb/human/hg38/gnomadV4.1.html
- lines changed 15, context: html, text, full: html, text
10db3769dd9edfa38ac8d900ca400fdfb514d9a7 Wed Jul 29 22:41:46 2026 -0700
An in-place update for gnomad v4.1 to v4.1.1 that swaps bigDataUrl, labels, dataVersion, detailsTabUrls, search descriptions, and removes the alpha-only gnomadVariantsV4.1.1 composite. Updates to gnomad.html, gnomadV4.1.html, and gnomadPLI.html regarding the addition of the gnomad v4.1.1 data, refs #37351
- src/hg/makeDb/trackDb/human/hg38/singleCellSignalsPeaks.html
- lines changed 48, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 14, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/human/hg38/singleCellSignalsPeaks.ra
- lines changed 3783, context: html, text, full: html, text
d0632693bee08bf61b7990e0c6a1de8c050e337f Sat Aug 1 20:53:09 2026 -0700
singleCellSignalsPeaks: color by cell class, harmonize labels and facets (hg38)
Overhaul of the hg38 track and the shared build scripts it and the mm10 track
are generated from:
- Color every subtrack by broad cell class from one colorblind-conscious palette
(shared with the mm10 track, so a class is the same color on both assemblies);
add a color legend to the description page.
- Add a "Cell class" facet; the fine cell type becomes a searchable table column.
Group subtracks by class via priority; every subtrack is off by default.
- Paper-curated cell-type names, redundant-synonym merges, QC-cluster drop, and
per-collection tissue/life-stage/condition (including the SEA-AD region and
ADNC neuropathology level, from Gabitto 2024 and Hawrylycz 2024).
- Rebuild the longLabels from the harmonized cell type + facets, so the cryptic
source short labels decode.
- Reclassify 10 mislabeled interaction bigBeds out of the signal/peaks composite,
retype a narrowPeak-format bigBed, and drop deprecated *.old data
(936 -> 925 subtracks).
- Archive the curation with the scripts: build_celltype_crosswalks.py and
celltype-crosswalks/ (per-collection crosswalks, palette, class map, and the
paper-decode source tables).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 1473, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/human/popEve.ra
- lines changed 1, context: html, text, full: html, text
e9a2b5a28cb4e3970977c76d84649bdd339a8423 Thu Jul 30 17:00:51 2026 -0700
Address popEVE code-review feedback (v502). refs #37950 refs #37791
- popEve.ra dataVersion now names the score source (March per-transcript release) and the
July VCF as the coordinate/strand source, rather than only the VCF date.
- vcfToPopEveHeatmap.py: when the CSV wildtype disagrees with the genomic wildtype, skip the
position and keep the correct sparse data instead of attaching CSV scores computed for a
different residue; skip CSV rows with a nan/empty popEVE; add a posSparse counter for
positions with genomic coordinates but no CSV row. All three are 0 on the current data, so
the bigBed output is unchanged (verified byte-identical), but they make the converter fail
safe for future per-transcript releases.
- Add the build drivers runBuild.sh and runBuildDense.sh to the tree (the anchor computation
previously lived only in the hive build directory), and add a makedoc forward-pointer so
the intermediate sparse section is not mistaken for the final dense build.
- src/hg/makeDb/trackDb/human/predictionScoresSuper.html
- lines changed 1, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/human/revel.html
- lines changed 2, context: html, text, full: html, text
9711cb56111546aeed1be4b2c0ba1738080c848c Tue Jul 28 17:31:52 2026 -0700
Fix "basepair" wording and Methods punctuation on the Deleteriousness Predictions description pages per QA feedback. refs #37510
Changes "basepair" to "base" in the shared zoom-in instructions on clinPred,
revel, alphaMissense, caddSuper, and caddSuper1_7, and normalizes
predictionScoresSuper from "base pair" to "base" so the container is consistent.
Removes an awkward comma in the source-repository sentence on clinPred and revel.
Switches the hgdownload links on the clinPred page to https to match the other
links on that page.
- src/hg/makeDb/trackDb/mouse/mm10/singleCellSignalsPeaks.html
- lines changed 318, context: html, text, full: html, text
0abed78024d40b506c2b2e3a49ad483045bc5e1d Sat Aug 1 20:53:25 2026 -0700
singleCellSignalsPeaks: add native mm10 track
mm10 counterpart of the hg38 track: 629 single-cell ATAC signal (bigWig) and
peak (bigNarrowPeak) subtracks from 9 Cell Browser datasets, re-parented under
one faceted composite in the regulation group. Colored by broad cell class from
the same palette as hg38, grouped by class, off by default; cell types are
paper-curated and the facets/longLabels are harmonized (see the makeDoc).
Data lives in /hive/data/genomes/mm10/bed/singleCellSignalsPeaks and is served
via the /gbdb/mm10/bbi symlink; the .ra is regenerated by
makeSingleCellSignalsPeaksRa.py from the Cell Browser hub build. Included in
mm10 trackDb.ra (alpha).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 4, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/mouse/mm10/singleCellSignalsPeaks.ra
- lines changed 6864, context: html, text, full: html, text
0abed78024d40b506c2b2e3a49ad483045bc5e1d Sat Aug 1 20:53:25 2026 -0700
singleCellSignalsPeaks: add native mm10 track
mm10 counterpart of the hg38 track: 629 single-cell ATAC signal (bigWig) and
peak (bigNarrowPeak) subtracks from 9 Cell Browser datasets, re-parented under
one faceted composite in the regulation group. Colored by broad cell class from
the same palette as hg38, grouped by class, off by default; cell types are
paper-curated and the facets/longLabels are harmonized (see the makeDoc).
Data lives in /hive/data/genomes/mm10/bed/singleCellSignalsPeaks and is served
via the /gbdb/mm10/bbi symlink; the .ra is regenerated by
makeSingleCellSignalsPeaksRa.py from the Cell Browser hub build. Included in
mm10 trackDb.ra (alpha).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lines changed 1735, context: html, text, full: html, text
b914d581f876d486caf9404e715e4f61ada38195 Mon Aug 3 16:19:44 2026 -0700
singleCellSignalsPeaks: make every subtrack label unique, fix cell-class regressions
The harmonized labels were not distinguishing tracks. build_long_label composed from
cell type + condition + tissue, but the upstream steps discard the discriminators on
purpose to keep the facets compact, so hg38 had 925 subtracks sharing only 401 distinct
longLabels and mm10 629 sharing 359. Worst case: cortex-atac's MACS, enhancer and
cell-type-specific peak sets all read "Astrocytes and oligodendrocytes (Cortex ATAC)",
with the peak method surviving only in the raw shortLabel.
Labels are now built from the harmonized cell type plus a variant descriptor that
recovers what was dropped (peak method, grouping level, cohort, signal vs peaks), and
anything still colliding is qualified with its source cluster code. shortLabels are
rebuilt too -- the old ones were raw source strings up to 50 chars with underscores,
ArchR filename tails and R-mangled names -- abbreviated through a curated word table to
22 chars, with compact tokens where the longLabel distinction would otherwise be
invisible (SEA-AD region + ADNC, CATLAS aging age). All 925/587 longLabels are now
unique; no shortLabel exceeds 22 chars or contains an underscore.
Also fixed, found while verifying the above:
- Correcting source misspellings in the cell types broke the curated lookups, which are
keyed on those same misspelled strings, and 16 hg38 tracks silently lost their
Cell_class and color. The class map and the hub_config tables now normalize their keys
on load, and a cell type with no broad class is reported instead of becoming "unknown".
- Nephron progenitor was classed as Neural progenitor: the decode tables give it the bare
broad class "Progenitor" and that was blanket-mapped to neural. It is Six2+ kidney cap
mesenchyme, so it is now Stromal. The HTML legend had been worded to match the bug.
- The plural/case merge picked the most frequent form, which was inconsistent -- singular
for 15 of 17 merged groups but plural for Megakaryocytes/Oligodendrocytes. It now
prefers the singular.
- Removed 42 byte-identical Allen basal-ganglia bigWigs (md5-verified) that were served
from four grouping directories and rendered as four indistinguishable mm10 subtracks,
freeing 4.4 GB. Where the four copies genuinely differ all are kept and told apart by
the grouping-level descriptor. mm10 goes 629 -> 587 subtracks.
- Corrected five stale per-dataset subtrack counts in the description pages and spelled
out what ADNC means, noting that it grades neuropathology rather than symptoms.
- The SEA-AD Dataset facet link used the collection name, which is not a served Cell
Browser slug; it now points at sea-ad-mtg+cohort.
- Dropped a dead placeholder variable and made the hardcoded hub-build path overridable.
refs #37914
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/mouse/mm10/trackDb.ra
- lines changed 1, context: html, text, full: html, text
0abed78024d40b506c2b2e3a49ad483045bc5e1d Sat Aug 1 20:53:25 2026 -0700
singleCellSignalsPeaks: add native mm10 track
mm10 counterpart of the hg38 track: 629 single-cell ATAC signal (bigWig) and
peak (bigNarrowPeak) subtracks from 9 Cell Browser datasets, re-parented under
one faceted composite in the regulation group. Colored by broad cell class from
the same palette as hg38, grouped by class, off by default; cell types are
paper-curated and the facets/longLabels are harmonized (see the makeDoc).
Data lives in /hive/data/genomes/mm10/bed/singleCellSignalsPeaks and is served
via the /gbdb/mm10/bbi symlink; the .ra is regenerated by
makeSingleCellSignalsPeaksRa.py from the Cell Browser hub build. Included in
mm10 trackDb.ra (alpha).
refs #37914
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/makeDb/trackDb/relatedTracks.ra
- lines changed 8, context: html, text, full: html, text
dc5b5de8b09d0cd08c953805e29601860bbbd2ad Mon Jul 27 11:44:51 2026 -0700
allow '>' one-way and '~' bidirectional relatedTracks entries, refs #37390
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/automation/AsmHub.pm
- lines changed 118, context: html, text, full: html, text
80484198a43b2152023cadd0b6abd26785ab69ea Wed Jul 29 14:53:53 2026 -0700
now archiving versions of NCBI GenBank gene track when updated refs #37958
- lines changed 2, context: html, text, full: html, text
ff97a131bb3d4d6f2dae3d04c73afceab20233eb Wed Jul 29 16:12:23 2026 -0700
better url link to the archive track hub refs #37958
- lines changed 1, context: html, text, full: html, text
72db51d8eaa9689eab8ff9cd8b37261c1b1290da Wed Jul 29 16:20:00 2026 -0700
stay on the server where the browser is do not go to genome.ucsc.edu refs #37958
- lines changed 1, context: html, text, full: html, text
636dc23e0f0b10bb1f1be27b7936ec15b9be2f49 Wed Jul 29 21:53:06 2026 -0700
hub link to the archive without duplicating the tracks refs #37958
- lines changed 10, context: html, text, full: html, text
19f3e5917459c97a2732f9c054cc4f12ef13b327 Wed Jul 29 22:22:54 2026 -0700
add a date version to the ncbiGene track and can later get a more definate name out of the assembly_summary files refs #37958
- lines changed 58, context: html, text, full: html, text
a71f33ea4a34a46a90957e9b59cd7235cbdff4e9 Mon Aug 3 15:56:12 2026 -0700
adding annotation version notes correctly to ncbiGene.html description page refs #37958
- src/hg/utils/automation/asmHubNcbiGene.pl
- lines changed 83, context: html, text, full: html, text
629c77052d6b1f7def62cd6cd641b7f383eb8b2c Wed Jul 29 14:54:16 2026 -0700
now archiving versions of NCBI GenBank gene track when updated refs #37958
- src/hg/utils/automation/doAssemblyHub.pl
- lines changed 5, context: html, text, full: html, text
29d0226323cbd906d7f1788bdda8de0154d19b92 Tue Jul 28 12:36:56 2026 -0700
improve the index for the NCBI GenBank gene track no redmine
- lines changed 94, context: html, text, full: html, text
5c6501db6f2650e1f23fb8d196b4c9c0b3fd8d10 Wed Jul 29 15:11:42 2026 -0700
wire in the new procedure for doNcbiGene refs #37958
- lines changed 6, context: html, text, full: html, text
a213081a5106754b3f3ec4899c7b54ce3b6352f1 Wed Jul 29 16:01:33 2026 -0700
claude fixing claude errors refs #37958
- lines changed 4, context: html, text, full: html, text
a71f33ea4a34a46a90957e9b59cd7235cbdff4e9 Mon Aug 3 15:56:12 2026 -0700
adding annotation version notes correctly to ncbiGene.html description page refs #37958
- src/hg/utils/automation/doNcbiGene.pl
- lines changed 384, context: html, text, full: html, text
80484198a43b2152023cadd0b6abd26785ab69ea Wed Jul 29 14:53:53 2026 -0700
now archiving versions of NCBI GenBank gene track when updated refs #37958
- lines changed 44, context: html, text, full: html, text
5c6501db6f2650e1f23fb8d196b4c9c0b3fd8d10 Wed Jul 29 15:11:42 2026 -0700
wire in the new procedure for doNcbiGene refs #37958
- lines changed 8, context: html, text, full: html, text
a213081a5106754b3f3ec4899c7b54ce3b6352f1 Wed Jul 29 16:01:33 2026 -0700
claude fixing claude errors refs #37958
- src/hg/utils/automation/gffAttrsToIx.py
- lines changed 156, context: html, text, full: html, text
e9382ceee474dffd408150b9dd9c014562e31d19 Tue Jul 28 12:14:57 2026 -0700
better indexing for the "ncbiGene" track refs #34917
- src/hg/utils/automation/ncbiGeneCheckStale.py
- lines changed 148, context: html, text, full: html, text
6b009b167921316fed954336df03cd07d17e59f3 Tue Jul 28 12:37:35 2026 -0700
script to find out of date trackData/ncbiGene/ data in GenArk hubs no redmine
- src/hg/utils/cartTrackVarCatalog/cartTrackVarCatalog.py
- lines changed 301, context: html, text, full: html, text
6c9c79a4bb5af45d213d8ba5fc373ed0a6181dca Sat Aug 1 12:05:30 2026 -0700
cartTrackVarCatalog: add a --reconcile that reads the tree refs #37838
--check only read the catalog itself, verifying that every family a type names
exists, so a track-scoped cart variable added tomorrow was invisible to it. It
never called the harvester at all.
Adds --reconcile, which does: it compares what harvestCartVars finds against
the catalog and reports a name in neither the catalog nor
cartVarsNotCataloged.txt, silent and exit 0 otherwise, so it can run nightly.
--update-baseline accepts new names as a reviewable diff.
Matching is on the name with its leading separator stripped, because the
harvester cannot always tell which separator a name is used with: the fourth
argument of cart*ClosestToHome is a bare suffix while a safef("%s.%s") site
carries the dot. A wildcard entry also registers its trailing component, since
the harvester sees decorator.<name>.blockMode only as blockMode. Without that
nine already-cataloged names read as new.
Sixty-seven names are left in the baseline, and about fifteen of them look like
real cart variables that were never cataloged, among them FilterLabel,
FilterValuesDefault, HighlightType, minAc, fileSortOrder and the tablesTables
paging vars. Cataloging those needs a read of the UI code and is not done
here.
harvestCartVars grows a harvest() entry point so the scan has one definition
rather than one in main and a second written out by hand; --by-var output is
unchanged.
- src/hg/utils/cartTrackVarCatalog/cartVarsNotCataloged.txt
- lines changed 89, context: html, text, full: html, text
6c9c79a4bb5af45d213d8ba5fc373ed0a6181dca Sat Aug 1 12:05:30 2026 -0700
cartTrackVarCatalog: add a --reconcile that reads the tree refs #37838
--check only read the catalog itself, verifying that every family a type names
exists, so a track-scoped cart variable added tomorrow was invisible to it. It
never called the harvester at all.
Adds --reconcile, which does: it compares what harvestCartVars finds against
the catalog and reports a name in neither the catalog nor
cartVarsNotCataloged.txt, silent and exit 0 otherwise, so it can run nightly.
--update-baseline accepts new names as a reviewable diff.
Matching is on the name with its leading separator stripped, because the
harvester cannot always tell which separator a name is used with: the fourth
argument of cart*ClosestToHome is a bare suffix while a safef("%s.%s") site
carries the dot. A wildcard entry also registers its trailing component, since
the harvester sees decorator.<name>.blockMode only as blockMode. Without that
nine already-cataloged names read as new.
Sixty-seven names are left in the baseline, and about fifteen of them look like
real cart variables that were never cataloged, among them FilterLabel,
FilterValuesDefault, HighlightType, minAc, fileSortOrder and the tablesTables
paging vars. Cataloging those needs a read of the UI code and is not done
here.
harvestCartVars grows a harvest() entry point so the scan has one definition
rather than one in main and a second written out by hand; --by-var output is
unchanged.
- src/hg/utils/cartTrackVarCatalog/harvestCartVars.py
- lines changed 70, context: html, text, full: html, text
6c9c79a4bb5af45d213d8ba5fc373ed0a6181dca Sat Aug 1 12:05:30 2026 -0700
cartTrackVarCatalog: add a --reconcile that reads the tree refs #37838
--check only read the catalog itself, verifying that every family a type names
exists, so a track-scoped cart variable added tomorrow was invisible to it. It
never called the harvester at all.
Adds --reconcile, which does: it compares what harvestCartVars finds against
the catalog and reports a name in neither the catalog nor
cartVarsNotCataloged.txt, silent and exit 0 otherwise, so it can run nightly.
--update-baseline accepts new names as a reviewable diff.
Matching is on the name with its leading separator stripped, because the
harvester cannot always tell which separator a name is used with: the fourth
argument of cart*ClosestToHome is a bare suffix while a safef("%s.%s") site
carries the dot. A wildcard entry also registers its trailing component, since
the harvester sees decorator.<name>.blockMode only as blockMode. Without that
nine already-cataloged names read as new.
Sixty-seven names are left in the baseline, and about fifteen of them look like
real cart variables that were never cataloged, among them FilterLabel,
FilterValuesDefault, HighlightType, minAc, fileSortOrder and the tablesTables
paging vars. Cataloging those needs a read of the UI code and is not done
here.
harvestCartVars grows a harvest() entry point so the scan has one definition
rather than one in main and a second written out by hand; --by-var output is
unchanged.
- lines changed 52, context: html, text, full: html, text
99c145df11c04f80820690fd67e9499f296b4d7d Sat Aug 1 12:58:39 2026 -0700
harvesters: resolve #defines per file, not pooled refs #37923 refs #37925 refs #37838
The first nightly run reported a new URL parameter, hggw_term, that had been in
the tree since the hgGateway redesign. It was not new; the harvester had been
answering the question differently in two checkouts of the same commit.
SEARCH_TERM is "hggw_term" in hgGateway and "hgcd_term" in hgChooseDb. The
#define table was pooled across the whole tree with setdefault, so the winner
was whichever file the filesystem walk reached first, and hgGateway's reads came
out as hgcd_term in my working tree and hggw_term in a fresh clone. For a
nightly cron that means mail whenever a directory listing changes order, which
is worse than no cron.
So a name a file defines itself now wins, and a name the tree defines
inconsistently resolves to {NAME} instead of to a guess. This is the call
bdc473369e1 already made for char * constants, for the same reason and with the
same tradeoff written up in the CONST_RE comment: an honest {ident} beats a
confident wrong answer. Verified by harvesting both trees and diffing.
Twelve names leave the URL baseline as a result, the gisaidTable and hgg_
prefix families, which were pooled values from sibling CGIs rather than reads
in the file they were attributed to. Recovering those properly means following
the #include chain to the header that defines them, which is not done here.
The URL catalog carried hgt_tSearch twice, once correctly as the track search
variable and once as hgGateway's search term, which was this bug showing up in
the curated half. --check did not catch the duplicate because it only looks
within a section. hgGateway now has hggw_term and hgChooseDb hgcd_term, both
confirmed at their call sites and in their CGI's excludeVars.
- src/hg/utils/docent/README.md
- lines changed 90, context: html, text, full: html, text
fbbc2d15114548cc241e4b99dc83c0c9e79310ac Tue Jul 28 10:20:22 2026 -0700
Docent: take track state from trackDb, add goShow, search the Convert target visibly refs #37892
Track visibility no longer comes from a table inside the renderer. docent.js used
to carry per-composite cart parameters (mane/dbSnp155/clinvar), which pinned
clinvarMain to dense for every clinvar step and quietly aliased dbSnp155 to a
subtrack it does not name. It now reads the trackDb of the server it is driving
(hubApi /list/tracks, cached a day in $TMPDIR) and derives what a step needs: the
containers above a track, and the <name>_sel checkbox that actually decides a
composite child. Nothing is pushed downward, since a container's visibility
already reaches its selected children, so a script names only its deviations from
trackDb. Scripts use real trackDb names; names trackDb does not have (hubs, custom
tracks, a quickLift target) are sent as a literal name=mode.
Two hgTracks mechanics this had to learn: a bare clinvarCnv=hide is dropped when
the container's visibility is in the same request (the cart keeps clinvarCnv_sel=1
and the row still draws), so a step naming both a composite and a child of it is
applied in two requests, container first.
New goShow verb: types a position or a GENE NAME into the position bar and lets
the page finish -- Search on hgTracks, the arrow on hgGateway. A gene name goes
through the browser's own suggestion menu, so it lands on the gene rather than the
search-results page. pick: disambiguates the menu.
convert: now finds the target the way a user does, by typing it into the Convert
page's own genome search bar and clicking the suggestion, and accepts shot: for
the Convert page itself (opened / filled / result), which no other verb can reach.
Stills of pages that are not hgTracks (an hgc detail page, an external page a link
led to) are the viewport -- the top of the page -- instead of an element shot of
the whole scrolling document, which ran to 4400px. A fading click ripple is
removed before a still: it belongs to the video, not to a figure.
Speed: FAST=1 (make FAST=1 BP1, DOCENT_FAST=1, or fast: true) drops everything
that exists only for the video -- dwells, cursor animation, dropdown theatrics,
screen recording, mp4 transcode -- taking BP1 from 64s to 24s for the same
figures. docent.mk documents make -j for parallel scenarios; the trackDb cache is
written via rename so concurrent runs cannot read a partial file, and holds the
derived index (3MB) rather than hubApi's reply (30MB). DOCENT_TIME=1 prints where
the wall clock went, DOCENT_ROWS=1 the rows hgTracks actually drew.
Trimming the dwells exposed a real race in mouseover: dismissing the previous
tooltip with a sleep and then waiting for "a tooltip is visible" was satisfied by
the stale one, so a back-to-back pinned mouseover captured the previous item's
text. It now waits for the old tooltip to be gone and for a new one whose content
differs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 1, context: html, text, full: html, text
bc027579f81bd61a816afc1e63ef6232d840e042 Wed Jul 29 12:16:12 2026 -0700
Docent: publish the language reference as a generated page refs #37892
mkref.sh renders README.md to a standalone HTML page (default
~/public_html/docent.html), so the published reference is regenerated
from the README rather than hand-maintained -- the previous hand-written
page went stale as soon as the language was renamed.
Also document the top-of-file `position:` key, which docent.js reads but
the README did not list.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 1, context: html, text, full: html, text
ba3e92274483227d4969e7f9d89e6cd507e2bfb3 Fri Jul 31 14:46:55 2026 -0700
Docent: drag takes a genomic range instead of from/to endpoints, refs #37892
The usual form is now one region and it zooms:
drag: chr7:155,806,100-155,806,557
For any other action, or to pass shot:/track: as well, the region goes
under range: in the map form:
drag: {range: "chr7:155,806,100-155,806,557", shot: dragselect, then: highlight}
A malformed range is reported at the drag step rather than failing later
in the sweep. from:/to: still parse, so existing scripts keep working,
and the fraction (fromFrac:/toFrac:) and pixel (fromX:/toX:) endpoints are
untouched since neither has a genomic range to express.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 9, context: html, text, full: html, text
790667d0f7ee6965244ed31318aa9459e82fda73 Mon Aug 3 16:50:48 2026 -0700
Docent: add hideKids, and make a named mouseover wait for that item's own tooltip.
hideKids is a container "visibility" meaning hide everything under it, so a child
named alongside it is left the only one drawn. A superTrack needs it: unlike a
composite, its own mode does not reach its children, so each comes up at its own
trackDb visibility and {varsInPubs: show} draws all eight of its members however
much an earlier "hide: all" hid. The expansion skips any child the step names
itself and is sent in a round of its own AFTER the rest, since a subtrack hide
travelling in the same request as its container can be dropped by the cart
(#37953). It works on a composite or view too, where it deselects (_sel=0).
The mouseover fix: tooltips are mouseenter-driven with a 500ms show delay and a
500ms hide grace (hg/js/utils.js addMouseover), so while the cursor glides in it
crosses other items and one of THEIR tooltips is often still on screen when it
arrives. Waiting for "some tooltip is visible" therefore recorded a neighbour's
text -- an Alignment Differences mismatch pinned as the adjacent aligned block's
"identical". That only bit pin:, because the dwell which follows let the right
tooltip replace the wrong one before any shot: -- so a scenario's figures and its
mp4 disagreed with each other, and FAST (a single cursor jump, never entering the
neighbour) read correctly while the full run did not. A named mouseover now waits
for the item's own text, taken from its map box and rendered the way the tooltip
renders it (innerHTML then textContent: the attribute holds markup and undecoded
entities such as ★). Comparison is whitespace-insensitive on a distinctive
prefix. A positional hover has no expected text, so it settles instead.
DOCENT_ROWS=1 now also reports mouseovers -- which map boxes matched the name,
where the cursor went, the tooltip expected from the box and the one that came
up -- and warns when the item's own text never appears. Verified over all ten
named-item mouseovers in the Current Protocols quickLift scenarios: no warnings,
every tooltip correct.
refs #37892
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/docent/docent.js
- lines changed 514, context: html, text, full: html, text
fbbc2d15114548cc241e4b99dc83c0c9e79310ac Tue Jul 28 10:20:22 2026 -0700
Docent: take track state from trackDb, add goShow, search the Convert target visibly refs #37892
Track visibility no longer comes from a table inside the renderer. docent.js used
to carry per-composite cart parameters (mane/dbSnp155/clinvar), which pinned
clinvarMain to dense for every clinvar step and quietly aliased dbSnp155 to a
subtrack it does not name. It now reads the trackDb of the server it is driving
(hubApi /list/tracks, cached a day in $TMPDIR) and derives what a step needs: the
containers above a track, and the <name>_sel checkbox that actually decides a
composite child. Nothing is pushed downward, since a container's visibility
already reaches its selected children, so a script names only its deviations from
trackDb. Scripts use real trackDb names; names trackDb does not have (hubs, custom
tracks, a quickLift target) are sent as a literal name=mode.
Two hgTracks mechanics this had to learn: a bare clinvarCnv=hide is dropped when
the container's visibility is in the same request (the cart keeps clinvarCnv_sel=1
and the row still draws), so a step naming both a composite and a child of it is
applied in two requests, container first.
New goShow verb: types a position or a GENE NAME into the position bar and lets
the page finish -- Search on hgTracks, the arrow on hgGateway. A gene name goes
through the browser's own suggestion menu, so it lands on the gene rather than the
search-results page. pick: disambiguates the menu.
convert: now finds the target the way a user does, by typing it into the Convert
page's own genome search bar and clicking the suggestion, and accepts shot: for
the Convert page itself (opened / filled / result), which no other verb can reach.
Stills of pages that are not hgTracks (an hgc detail page, an external page a link
led to) are the viewport -- the top of the page -- instead of an element shot of
the whole scrolling document, which ran to 4400px. A fading click ripple is
removed before a still: it belongs to the video, not to a figure.
Speed: FAST=1 (make FAST=1 BP1, DOCENT_FAST=1, or fast: true) drops everything
that exists only for the video -- dwells, cursor animation, dropdown theatrics,
screen recording, mp4 transcode -- taking BP1 from 64s to 24s for the same
figures. docent.mk documents make -j for parallel scenarios; the trackDb cache is
written via rename so concurrent runs cannot read a partial file, and holds the
derived index (3MB) rather than hubApi's reply (30MB). DOCENT_TIME=1 prints where
the wall clock went, DOCENT_ROWS=1 the rows hgTracks actually drew.
Trimming the dwells exposed a real race in mouseover: dismissing the previous
tooltip with a sleep and then waiting for "a tooltip is visible" was satisfied by
the stale one, so a back-to-back pinned mouseover captured the previous item's
text. It now waits for the old tooltip to be gone and for a new one whose content
differs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 18, context: html, text, full: html, text
ba3e92274483227d4969e7f9d89e6cd507e2bfb3 Fri Jul 31 14:46:55 2026 -0700
Docent: drag takes a genomic range instead of from/to endpoints, refs #37892
The usual form is now one region and it zooms:
drag: chr7:155,806,100-155,806,557
For any other action, or to pass shot:/track: as well, the region goes
under range: in the map form:
drag: {range: "chr7:155,806,100-155,806,557", shot: dragselect, then: highlight}
A malformed range is reported at the drag step rather than failing later
in the sweep. from:/to: still parse, so existing scripts keep working,
and the fraction (fromFrac:/toFrac:) and pixel (fromX:/toX:) endpoints are
untouched since neither has a genomic range to express.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 102, context: html, text, full: html, text
790667d0f7ee6965244ed31318aa9459e82fda73 Mon Aug 3 16:50:48 2026 -0700
Docent: add hideKids, and make a named mouseover wait for that item's own tooltip.
hideKids is a container "visibility" meaning hide everything under it, so a child
named alongside it is left the only one drawn. A superTrack needs it: unlike a
composite, its own mode does not reach its children, so each comes up at its own
trackDb visibility and {varsInPubs: show} draws all eight of its members however
much an earlier "hide: all" hid. The expansion skips any child the step names
itself and is sent in a round of its own AFTER the rest, since a subtrack hide
travelling in the same request as its container can be dropped by the cart
(#37953). It works on a composite or view too, where it deselects (_sel=0).
The mouseover fix: tooltips are mouseenter-driven with a 500ms show delay and a
500ms hide grace (hg/js/utils.js addMouseover), so while the cursor glides in it
crosses other items and one of THEIR tooltips is often still on screen when it
arrives. Waiting for "some tooltip is visible" therefore recorded a neighbour's
text -- an Alignment Differences mismatch pinned as the adjacent aligned block's
"identical". That only bit pin:, because the dwell which follows let the right
tooltip replace the wrong one before any shot: -- so a scenario's figures and its
mp4 disagreed with each other, and FAST (a single cursor jump, never entering the
neighbour) read correctly while the full run did not. A named mouseover now waits
for the item's own text, taken from its map box and rendered the way the tooltip
renders it (innerHTML then textContent: the attribute holds markup and undecoded
entities such as ★). Comparison is whitespace-insensitive on a distinctive
prefix. A positional hover has no expected text, so it settles instead.
DOCENT_ROWS=1 now also reports mouseovers -- which map boxes matched the name,
where the cursor went, the tooltip expected from the box and the one that came
up -- and warns when the item's own text never appears. Verified over all ten
named-item mouseovers in the Current Protocols quickLift scenarios: no warnings,
every tooltip correct.
refs #37892
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/docent/docent.mk
- lines changed 8, context: html, text, full: html, text
fbbc2d15114548cc241e4b99dc83c0c9e79310ac Tue Jul 28 10:20:22 2026 -0700
Docent: take track state from trackDb, add goShow, search the Convert target visibly refs #37892
Track visibility no longer comes from a table inside the renderer. docent.js used
to carry per-composite cart parameters (mane/dbSnp155/clinvar), which pinned
clinvarMain to dense for every clinvar step and quietly aliased dbSnp155 to a
subtrack it does not name. It now reads the trackDb of the server it is driving
(hubApi /list/tracks, cached a day in $TMPDIR) and derives what a step needs: the
containers above a track, and the <name>_sel checkbox that actually decides a
composite child. Nothing is pushed downward, since a container's visibility
already reaches its selected children, so a script names only its deviations from
trackDb. Scripts use real trackDb names; names trackDb does not have (hubs, custom
tracks, a quickLift target) are sent as a literal name=mode.
Two hgTracks mechanics this had to learn: a bare clinvarCnv=hide is dropped when
the container's visibility is in the same request (the cart keeps clinvarCnv_sel=1
and the row still draws), so a step naming both a composite and a child of it is
applied in two requests, container first.
New goShow verb: types a position or a GENE NAME into the position bar and lets
the page finish -- Search on hgTracks, the arrow on hgGateway. A gene name goes
through the browser's own suggestion menu, so it lands on the gene rather than the
search-results page. pick: disambiguates the menu.
convert: now finds the target the way a user does, by typing it into the Convert
page's own genome search bar and clicking the suggestion, and accepts shot: for
the Convert page itself (opened / filled / result), which no other verb can reach.
Stills of pages that are not hgTracks (an hgc detail page, an external page a link
led to) are the viewport -- the top of the page -- instead of an element shot of
the whole scrolling document, which ran to 4400px. A fading click ripple is
removed before a still: it belongs to the video, not to a figure.
Speed: FAST=1 (make FAST=1 BP1, DOCENT_FAST=1, or fast: true) drops everything
that exists only for the video -- dwells, cursor animation, dropdown theatrics,
screen recording, mp4 transcode -- taking BP1 from 64s to 24s for the same
figures. docent.mk documents make -j for parallel scenarios; the trackDb cache is
written via rename so concurrent runs cannot read a partial file, and holds the
derived index (3MB) rather than hubApi's reply (30MB). DOCENT_TIME=1 prints where
the wall clock went, DOCENT_ROWS=1 the rows hgTracks actually drew.
Trimming the dwells exposed a real race in mouseover: dismissing the previous
tooltip with a sleep and then waiting for "a tooltip is visible" was satisfied by
the stale one, so a back-to-back pinned mouseover captured the previous item's
text. It now waits for the old tooltip to be gone and for a new one whose content
differs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/docent/mkref.sh
- lines changed 60, context: html, text, full: html, text
bc027579f81bd61a816afc1e63ef6232d840e042 Wed Jul 29 12:16:12 2026 -0700
Docent: publish the language reference as a generated page refs #37892
mkref.sh renders README.md to a standalone HTML page (default
~/public_html/docent.html), so the published reference is regenerated
from the README rather than hand-maintained -- the previous hand-written
page went stale as soon as the language was renamed.
Also document the top-of-file `position:` key, which docent.js reads but
the README did not list.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- src/hg/utils/hgConfCatalog/harvestHgConf.py
- lines changed 39, context: html, text, full: html, text
bdc473369e1bb2a5666bd76626d449af50b81d40 Fri Jul 31 10:50:24 2026 -0700
resolve char * constants per file in the harvesters, not pooled refs #37925 refs #37923
Both harvesters merged file-scope "char *NAME = \"literal\";" definitions into
the same table as the #defines, keyed by identifier with setdefault, so one
program's private constant answered for every other file in the tree and
whichever file os.walk reached first won. harvestCartVars.py already did this
per file; these two hoisted it and broke.
What it was getting wrong:
- hgConfCatalog listed encpipeline_prod as an hg.conf variable, verified,
cited at hgTracks.c:9867. That line is cfgNamesWithPrefix(database), the
<db>_TopLink family, and encpipeline_prod is a hardcoded MySQL database
name in hg/encode/docId/docIdView/docIdView.c. The row is gone and the
call site now reads {database}, a runtime value.
- Twelve URL records named the wrong variable. Five cartRemove(cart,
varName) sites were reported as removing dnaLines, which is what an
assembly tool at primeMate.c:296 calls its own varName; three
cartRemove(cart, var) sites read as num. They now read {varName} and
{var}.
- cfgValsWithPrefix passing its own prefix parameter through resolved to an
unrelated utility's "char *prefix = \"\";", and an empty string is falsy,
so the call site was dropped instead of reported. It goes through
NAME_SKIP now like the other accessor plumbing.
The deliberate cost is the genuine cross-file constant: snp125ColorSourceOldVar
is defined in hg/cgilib/snp125Ui.c and declared extern in hg/inc/snp125Ui.h, so
its hgTrackUi call site now reads {snp125ColorSourceOldVar} rather than
snp125ColorSource. Pooling only extern-declared names would recover it and
bring the collisions straight back, since database is extern in hgTracks and
separately initialized to a literal in that ENCODE tool.
hgConfCatalog --check still reports 0 problems and --reconcile is unchanged;
urlCommandCatalog --check still reports catalog ok with the persistence audit
at 41 known leaks, 0 unrecorded, 0 stale.
- lines changed 4, context: html, text, full: html, text
fece8651e5d986dc199aa4fa231b35863937ca4a Sat Aug 1 12:05:09 2026 -0700
hgConfCatalog: make --reconcile fit for a nightly run refs #37925
--reconcile printed its whole report whether or not anything had changed, so
as cron mail it would have been seventeen lines of standing drift every night
with the one new setting buried in it. It now prints only what somebody has
to act on, which is a setting the tree reads that the catalog has not
classified, and a boolean flag filed neither gate nor knob. The drift moves
behind --verbose. Silent and exit 0 means nothing new.
Adds the missing row for blatNewPageBanner, which was the one real finding
sitting in the report, and files it as a gate with the argument for calling it
a knob recorded.
A scan that finds almost nothing now fails instead of reporting all clear,
since pointed at an empty tree every check below it comes up empty, and
KENT_SRC lets a nightly aim at a pristine checkout rather than a working tree
where a stray .c file would show up as a finding.
- lines changed 47, context: html, text, full: html, text
99c145df11c04f80820690fd67e9499f296b4d7d Sat Aug 1 12:58:39 2026 -0700
harvesters: resolve #defines per file, not pooled refs #37923 refs #37925 refs #37838
The first nightly run reported a new URL parameter, hggw_term, that had been in
the tree since the hgGateway redesign. It was not new; the harvester had been
answering the question differently in two checkouts of the same commit.
SEARCH_TERM is "hggw_term" in hgGateway and "hgcd_term" in hgChooseDb. The
#define table was pooled across the whole tree with setdefault, so the winner
was whichever file the filesystem walk reached first, and hgGateway's reads came
out as hgcd_term in my working tree and hggw_term in a fresh clone. For a
nightly cron that means mail whenever a directory listing changes order, which
is worse than no cron.
So a name a file defines itself now wins, and a name the tree defines
inconsistently resolves to {NAME} instead of to a guess. This is the call
bdc473369e1 already made for char * constants, for the same reason and with the
same tradeoff written up in the CONST_RE comment: an honest {ident} beats a
confident wrong answer. Verified by harvesting both trees and diffing.
Twelve names leave the URL baseline as a result, the gisaidTable and hgg_
prefix families, which were pooled values from sibling CGIs rather than reads
in the file they were attributed to. Recovering those properly means following
the #include chain to the header that defines them, which is not done here.
The URL catalog carried hgt_tSearch twice, once correctly as the track search
variable and once as hgGateway's search term, which was this bug showing up in
the curated half. --check did not catch the duplicate because it only looks
within a section. hgGateway now has hggw_term and hgChooseDb hgcd_term, both
confirmed at their call sites and in their CGI's excludeVars.
- src/hg/utils/hgConfCatalog/hgConfCatalog.py
- lines changed 4, context: html, text, full: html, text
4afc3a97cec36e9470e107bfe44398ee5ec65080 Fri Jul 31 10:33:43 2026 -0700
hgConfCatalog: mark userDbName and sessionDbName as documented refs #37925
Both are now in product/ex.hg.conf, so they get public=True like the four
sibling table-name settings around them. userDbName was documented under
the wrong name until 225a9ac365d and sessionDbName was not documented at
all, which is why neither carried the flag.
- lines changed 3, context: html, text, full: html, text
bdc473369e1bb2a5666bd76626d449af50b81d40 Fri Jul 31 10:50:24 2026 -0700
resolve char * constants per file in the harvesters, not pooled refs #37925 refs #37923
Both harvesters merged file-scope "char *NAME = \"literal\";" definitions into
the same table as the #defines, keyed by identifier with setdefault, so one
program's private constant answered for every other file in the tree and
whichever file os.walk reached first won. harvestCartVars.py already did this
per file; these two hoisted it and broke.
What it was getting wrong:
- hgConfCatalog listed encpipeline_prod as an hg.conf variable, verified,
cited at hgTracks.c:9867. That line is cfgNamesWithPrefix(database), the
<db>_TopLink family, and encpipeline_prod is a hardcoded MySQL database
name in hg/encode/docId/docIdView/docIdView.c. The row is gone and the
call site now reads {database}, a runtime value.
- Twelve URL records named the wrong variable. Five cartRemove(cart,
varName) sites were reported as removing dnaLines, which is what an
assembly tool at primeMate.c:296 calls its own varName; three
cartRemove(cart, var) sites read as num. They now read {varName} and
{var}.
- cfgValsWithPrefix passing its own prefix parameter through resolved to an
unrelated utility's "char *prefix = \"\";", and an empty string is falsy,
so the call site was dropped instead of reported. It goes through
NAME_SKIP now like the other accessor plumbing.
The deliberate cost is the genuine cross-file constant: snp125ColorSourceOldVar
is defined in hg/cgilib/snp125Ui.c and declared extern in hg/inc/snp125Ui.h, so
its hgTrackUi call site now reads {snp125ColorSourceOldVar} rather than
snp125ColorSource. Pooling only extern-declared names would recover it and
bring the collisions straight back, since database is extern in hgTracks and
separately initialized to a literal in that ENCODE tool.
hgConfCatalog --check still reports 0 problems and --reconcile is unchanged;
urlCommandCatalog --check still reports catalog ok with the persistence audit
at 41 known leaks, 0 unrecorded, 0 stale.
- lines changed 9, context: html, text, full: html, text
fbfdc0a36bb6d3b0eb57dd07262c059086c7054e Fri Jul 31 14:55:15 2026 -0700
hgConvert: link to the alignment request page, behind showLiftRequest, refs #37973
The Convert page's assembly list only offers targets that already have a
chain from the source, so it is where a user finds out theirs is missing.
Nothing in the tree linked to liftRequest.html, the page that requests a
new alignment, so unless someone wrote to us and we sent the URL they were
unlikely to find it.
Adds "Target assembly not listed? Request an alignment" at the foot of the
Destination section, gated by the new hg.conf flag showLiftRequest, which
defaults FALSE. Registered in the hg.conf catalog as a release gate.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- lines changed 64, context: html, text, full: html, text
fece8651e5d986dc199aa4fa231b35863937ca4a Sat Aug 1 12:05:09 2026 -0700
hgConfCatalog: make --reconcile fit for a nightly run refs #37925
--reconcile printed its whole report whether or not anything had changed, so
as cron mail it would have been seventeen lines of standing drift every night
with the one new setting buried in it. It now prints only what somebody has
to act on, which is a setting the tree reads that the catalog has not
classified, and a boolean flag filed neither gate nor knob. The drift moves
behind --verbose. Silent and exit 0 means nothing new.
Adds the missing row for blatNewPageBanner, which was the one real finding
sitting in the report, and files it as a gate with the argument for calling it
a knob recorded.
A scan that finds almost nothing now fails instead of reporting all clear,
since pointed at an empty tree every check below it comes up empty, and
KENT_SRC lets a nightly aim at a pristine checkout rather than a working tree
where a stray .c file would show up as a finding.
- lines changed 29, context: html, text, full: html, text
488b403863dc439b5e9dfa0a8325bdfe886dd3a3 Tue Aug 4 06:51:42 2026 -0700
hgConfCatalog: register login.emailLink, login.oauth.providers and the per-provider oauth family, refs #37925
The hgLogin email-link and social sign-in work added three hg.conf reads with no
catalog rows, which is what --reconcile was failing on. login.emailLink is filed
as a mirror knob with the gate argument recorded in debatable=; the per-provider
settings are built with safef, so they are catalogued as a runtime name.
- src/hg/utils/otto/otto.crontab
- lines changed 5, context: html, text, full: html, text
0bcea84e83ceef4cccba34202e1792e8ad05d980 Fri Jul 31 18:09:53 2026 -0700
Adding monthly otto notifier that compares our VCEP hub spec versions against the ClinGen CSpec registry. refs #37795
New script src/hg/utils/otto/vcepVersions/checkVcepVersions.py scrapes the
published version from each VCEP hub description page on hgdownload (ENIGMA
BRCA1/BRCA2 and InSiGHT Lynch syndrome) and compares it to the current released
version in the ClinGen CSpec registry, which embeds its specification list as
inline JSON on the affiliation page. Silent when the versions agree, prints a
report when a hub is behind or when the check itself fails.
Only released specs for the genes a hub actually displays are compared, since
an affiliation can carry specs for more genes than we show, on their own
schedule. InSiGHT 50099 for instance also holds APC and MUTYH.
Also adds the monthly crontab entry, mailing otto-group.
- src/hg/utils/otto/vcepVersions/checkVcepVersions.py
- lines changed 155, context: html, text, full: html, text
0bcea84e83ceef4cccba34202e1792e8ad05d980 Fri Jul 31 18:09:53 2026 -0700
Adding monthly otto notifier that compares our VCEP hub spec versions against the ClinGen CSpec registry. refs #37795
New script src/hg/utils/otto/vcepVersions/checkVcepVersions.py scrapes the
published version from each VCEP hub description page on hgdownload (ENIGMA
BRCA1/BRCA2 and InSiGHT Lynch syndrome) and compares it to the current released
version in the ClinGen CSpec registry, which embeds its specification list as
inline JSON on the affiliation page. Silent when the versions agree, prints a
report when a hub is behind or when the check itself fails.
Only released specs for the genes a hub actually displays are compared, since
an affiliation can carry specs for more genes than we show, on their own
schedule. InSiGHT 50099 for instance also holds APC and MUTYH.
Also adds the monthly crontab entry, mailing otto-group.
- src/hg/utils/urlCommandCatalog/harvestUrlCommands.py
- lines changed 47, context: html, text, full: html, text
bdc473369e1bb2a5666bd76626d449af50b81d40 Fri Jul 31 10:50:24 2026 -0700
resolve char * constants per file in the harvesters, not pooled refs #37925 refs #37923
Both harvesters merged file-scope "char *NAME = \"literal\";" definitions into
the same table as the #defines, keyed by identifier with setdefault, so one
program's private constant answered for every other file in the tree and
whichever file os.walk reached first won. harvestCartVars.py already did this
per file; these two hoisted it and broke.
What it was getting wrong:
- hgConfCatalog listed encpipeline_prod as an hg.conf variable, verified,
cited at hgTracks.c:9867. That line is cfgNamesWithPrefix(database), the
<db>_TopLink family, and encpipeline_prod is a hardcoded MySQL database
name in hg/encode/docId/docIdView/docIdView.c. The row is gone and the
call site now reads {database}, a runtime value.
- Twelve URL records named the wrong variable. Five cartRemove(cart,
varName) sites were reported as removing dnaLines, which is what an
assembly tool at primeMate.c:296 calls its own varName; three
cartRemove(cart, var) sites read as num. They now read {varName} and
{var}.
- cfgValsWithPrefix passing its own prefix parameter through resolved to an
unrelated utility's "char *prefix = \"\";", and an empty string is falsy,
so the call site was dropped instead of reported. It goes through
NAME_SKIP now like the other accessor plumbing.
The deliberate cost is the genuine cross-file constant: snp125ColorSourceOldVar
is defined in hg/cgilib/snp125Ui.c and declared extern in hg/inc/snp125Ui.h, so
its hgTrackUi call site now reads {snp125ColorSourceOldVar} rather than
snp125ColorSource. Pooling only extern-declared names would recover it and
bring the collisions straight back, since database is extern in hgTracks and
separately initialized to a literal in that ENCODE tool.
hgConfCatalog --check still reports 0 problems and --reconcile is unchanged;
urlCommandCatalog --check still reports catalog ok with the persistence audit
at 41 known leaks, 0 unrecorded, 0 stale.
- lines changed 4, context: html, text, full: html, text
da5180baf458d64d523ec4e1cd96166bac1d3b25 Sat Aug 1 12:05:20 2026 -0700
urlCommandCatalog: let --reconcile fail, so it can run nightly refs #37923
reconcile ended in a bare return 0, so it could not fail whatever it found,
and it printed a six hundred line name diff every run. Most of that diff is
structural rather than drift: the catalog covers what a user can put on a
browser URL, while the harvester sees every cgiOptionalString in the tree,
including form fields and the arguments of small utility CGIs.
So the gap is now recorded in urlNamesNotCataloged.txt and reconcile reports
only a name in neither the catalog nor that file, plus any disagreement between
a persists=False claim and what the tree actually excludes or removes, in
either direction. That second half was already computed and thrown away in a
summary line. --update-baseline regenerates the file so accepting a name out
of scope is a reviewable diff rather than a hand edit.
The baseline's first version was accepted wholesale and says so, except for
blatNewPage and blatReopen, which the new BLAT results page puts on a URL and
which are now cataloged properly.
A scan that finds almost nothing fails rather than reporting all clear, and
KENT_SRC lets a nightly aim at a pristine checkout.
- lines changed 51, context: html, text, full: html, text
99c145df11c04f80820690fd67e9499f296b4d7d Sat Aug 1 12:58:39 2026 -0700
harvesters: resolve #defines per file, not pooled refs #37923 refs #37925 refs #37838
The first nightly run reported a new URL parameter, hggw_term, that had been in
the tree since the hgGateway redesign. It was not new; the harvester had been
answering the question differently in two checkouts of the same commit.
SEARCH_TERM is "hggw_term" in hgGateway and "hgcd_term" in hgChooseDb. The
#define table was pooled across the whole tree with setdefault, so the winner
was whichever file the filesystem walk reached first, and hgGateway's reads came
out as hgcd_term in my working tree and hggw_term in a fresh clone. For a
nightly cron that means mail whenever a directory listing changes order, which
is worse than no cron.
So a name a file defines itself now wins, and a name the tree defines
inconsistently resolves to {NAME} instead of to a guess. This is the call
bdc473369e1 already made for char * constants, for the same reason and with the
same tradeoff written up in the CONST_RE comment: an honest {ident} beats a
confident wrong answer. Verified by harvesting both trees and diffing.
Twelve names leave the URL baseline as a result, the gisaidTable and hgg_
prefix families, which were pooled values from sibling CGIs rather than reads
in the file they were attributed to. Recovering those properly means following
the #include chain to the header that defines them, which is not done here.
The URL catalog carried hgt_tSearch twice, once correctly as the track search
variable and once as hgGateway's search term, which was this bug showing up in
the curated half. --check did not catch the duplicate because it only looks
within a section. hgGateway now has hggw_term and hgChooseDb hgcd_term, both
confirmed at their call sites and in their CGI's excludeVars.
- src/hg/utils/urlCommandCatalog/urlCommandCatalog.py
- lines changed 217, context: html, text, full: html, text
da5180baf458d64d523ec4e1cd96166bac1d3b25 Sat Aug 1 12:05:20 2026 -0700
urlCommandCatalog: let --reconcile fail, so it can run nightly refs #37923
reconcile ended in a bare return 0, so it could not fail whatever it found,
and it printed a six hundred line name diff every run. Most of that diff is
structural rather than drift: the catalog covers what a user can put on a
browser URL, while the harvester sees every cgiOptionalString in the tree,
including form fields and the arguments of small utility CGIs.
So the gap is now recorded in urlNamesNotCataloged.txt and reconcile reports
only a name in neither the catalog nor that file, plus any disagreement between
a persists=False claim and what the tree actually excludes or removes, in
either direction. That second half was already computed and thrown away in a
summary line. --update-baseline regenerates the file so accepting a name out
of scope is a reviewable diff rather than a hand edit.
The baseline's first version was accepted wholesale and says so, except for
blatNewPage and blatReopen, which the new BLAT results page puts on a URL and
which are now cataloged properly.
A scan that finds almost nothing fails rather than reporting all clear, and
KENT_SRC lets a nightly aim at a pristine checkout.
- lines changed 11, context: html, text, full: html, text
99c145df11c04f80820690fd67e9499f296b4d7d Sat Aug 1 12:58:39 2026 -0700
harvesters: resolve #defines per file, not pooled refs #37923 refs #37925 refs #37838
The first nightly run reported a new URL parameter, hggw_term, that had been in
the tree since the hgGateway redesign. It was not new; the harvester had been
answering the question differently in two checkouts of the same commit.
SEARCH_TERM is "hggw_term" in hgGateway and "hgcd_term" in hgChooseDb. The
#define table was pooled across the whole tree with setdefault, so the winner
was whichever file the filesystem walk reached first, and hgGateway's reads came
out as hgcd_term in my working tree and hggw_term in a fresh clone. For a
nightly cron that means mail whenever a directory listing changes order, which
is worse than no cron.
So a name a file defines itself now wins, and a name the tree defines
inconsistently resolves to {NAME} instead of to a guess. This is the call
bdc473369e1 already made for char * constants, for the same reason and with the
same tradeoff written up in the CONST_RE comment: an honest {ident} beats a
confident wrong answer. Verified by harvesting both trees and diffing.
Twelve names leave the URL baseline as a result, the gisaidTable and hgg_
prefix families, which were pooled values from sibling CGIs rather than reads
in the file they were attributed to. Recovering those properly means following
the #include chain to the header that defines them, which is not done here.
The URL catalog carried hgt_tSearch twice, once correctly as the track search
variable and once as hgGateway's search term, which was this bug showing up in
the curated half. --check did not catch the duplicate because it only looks
within a section. hgGateway now has hggw_term and hgChooseDb hgcd_term, both
confirmed at their call sites and in their CGI's excludeVars.
- src/hg/utils/urlCommandCatalog/urlNamesNotCataloged.txt
- lines changed 525, context: html, text, full: html, text
da5180baf458d64d523ec4e1cd96166bac1d3b25 Sat Aug 1 12:05:20 2026 -0700
urlCommandCatalog: let --reconcile fail, so it can run nightly refs #37923
reconcile ended in a bare return 0, so it could not fail whatever it found,
and it printed a six hundred line name diff every run. Most of that diff is
structural rather than drift: the catalog covers what a user can put on a
browser URL, while the harvester sees every cgiOptionalString in the tree,
including form fields and the arguments of small utility CGIs.
So the gap is now recorded in urlNamesNotCataloged.txt and reconcile reports
only a name in neither the catalog nor that file, plus any disagreement between
a persists=False claim and what the tree actually excludes or removes, in
either direction. That second half was already computed and thrown away in a
summary line. --update-baseline regenerates the file so accepting a name out
of scope is a reviewable diff rather than a hand edit.
The baseline's first version was accepted wholesale and says so, except for
blatNewPage and blatReopen, which the new BLAT results page puts on a URL and
which are now cataloged properly.
A scan that finds almost nothing fails rather than reporting all clear, and
KENT_SRC lets a nightly aim at a pristine checkout.
- lines changed 12, context: html, text, full: html, text
99c145df11c04f80820690fd67e9499f296b4d7d Sat Aug 1 12:58:39 2026 -0700
harvesters: resolve #defines per file, not pooled refs #37923 refs #37925 refs #37838
The first nightly run reported a new URL parameter, hggw_term, that had been in
the tree since the hgGateway redesign. It was not new; the harvester had been
answering the question differently in two checkouts of the same commit.
SEARCH_TERM is "hggw_term" in hgGateway and "hgcd_term" in hgChooseDb. The
#define table was pooled across the whole tree with setdefault, so the winner
was whichever file the filesystem walk reached first, and hgGateway's reads came
out as hgcd_term in my working tree and hggw_term in a fresh clone. For a
nightly cron that means mail whenever a directory listing changes order, which
is worse than no cron.
So a name a file defines itself now wins, and a name the tree defines
inconsistently resolves to {NAME} instead of to a guess. This is the call
bdc473369e1 already made for char * constants, for the same reason and with the
same tradeoff written up in the CONST_RE comment: an honest {ident} beats a
confident wrong answer. Verified by harvesting both trees and diffing.
Twelve names leave the URL baseline as a result, the gisaidTable and hgg_
prefix families, which were pooled values from sibling CGIs rather than reads
in the file they were attributed to. Recovering those properly means following
the #include chain to the header that defines them, which is not done here.
The URL catalog carried hgt_tSearch twice, once correctly as the track search
variable and once as hgGateway's search term, which was this bug showing up in
the curated half. --check did not catch the duplicate because it only looks
within a section. hgGateway now has hggw_term and hgChooseDb hgcd_term, both
confirmed at their call sites and in their CGI's excludeVars.
- src/product/ex.hg.conf
- lines changed 13, context: html, text, full: html, text
5f7a14fde8cdb24b01fc0e5eadba145bfd9ecb04 Sat Jul 25 23:16:06 2026 -0700
hgLogin: social login (Google/ORCID), email login link, change email. refs #37929
- lines changed 4, context: html, text, full: html, text
225a9ac365d237639420aed284a51c3c9607a4bb Fri Jul 31 10:32:44 2026 -0700
ex.hg.conf documents userDbTableName but the code reads userDbName refs #37925
A mirror that copied the example got no error, just silently kept using the
default userDb table, since nothing in the tree reads userDbTableName.
hg/inc/cartDb.h:80 defines the setting as userDbName, read at
hg/lib/cartDb.c:325 through cfgOptionEnvDefault.
Also documents sessionDbName, the matching setting for the session cart
table, which the example did not mention at all.
Found while building the hg.conf registry.
- lines changed 36, context: html, text, full: html, text
f85553903a3f87b3029f94e49f0a7d1bb805445b Mon Aug 3 12:52:33 2026 -0700
hgLogin: configurable OIDC providers, GitHub login, top-level email-link button, sign-in wording. refs #37984
- lines changed 6, context: html, text, full: html, text
4b04bd017d7a36d460447d8552ecaf9c8a33db4a Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929
Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984
- src/product/mirrorManual.txt
- lines changed 68, context: html, text, full: html, text
1e1b78acdbd86ed07b3301aaf3061a3a57f95264 Tue Aug 4 03:16:26 2026 -0700
mirrorManual: document hgLogin social sign-in (Google/ORCID/GitHub/OIDC) and email sign-in link config. refs #37984
- lines changed 18, context: html, text, full: html, text
30bd9b2986b3dfd6ce6023fb6302423efc68e04b Tue Aug 4 04:14:29 2026 -0700
mirrorManual: add OAuth provider registration URLs (Google/ORCID/GitHub, and CILogon/LifeScienceRI for universities). refs #37984
- src/utils/codeReviewAi.py
- lines changed 12, context: html, text, full: html, text
6be32a42dac8ea214aedb3ae97f7b9d01d183b5a Tue Jul 28 17:25:30 2026 -0700
Scale the daily code review timeout with the commit count so large batches stop timing out, No RM.
- lines changed 4, context: html, text, full: html, text
143215a7a2ed0bf37f565d6463ca11964b69dc80 Wed Jul 29 11:02:35 2026 -0700
Floor the scaled daily code review timeout at the previous flat 600s so 1-2 commit authors keep the same runway, No RM.
- src/utils/qa/trackCountsParse
- lines changed 291, context: html, text, full: html, text
06270582e562da3029320d8be4d527091d012602 Fri Jul 31 20:03:55 2026 -0700
Fix and speed up trackCountsParse, the seldom-used track usage report. refs #37975
The script did not run at all, it aborted with a NameError before doing any work,
so last year's report was produced by hand-editing a debug line. Also fixes -c and
-n, which arrived from argparse as strings and raised TypeError, and -h, which
aborted on an unescaped percent sign in a help string.
Replaces the per-track tdbQuery calls with a single bulk tdbQuery dump, taking a six
month run from hours down to a few minutes. The parent chain walk is now a loop
rather than three fixed hops. The hub and custom track filter matches the start of
the track name field instead of anywhere on the line, so real tracks such as
dbVar_conflict_pathogenic are no longer silently dropped, and it uses awk rather
than grep because grep -P failed to drop some rows in a 650k line report.
averageTrackCount now averages every month searched rather than only the months in
which a track fell under the cutoff. Adds averageSummedCount, monthsBelowCutoff and
the per month cutoffs to the output, labels names with no trackDb entry as
notInTrackDb, and adds -a/--asOfDate so an earlier window can be reproduced. Cached
count files carry a v2 in the name so the previous filtering is not reused silently.
- lines changed: 24863
- files changed: 233