Driver identifier mapping audit

PR #598 covers both bundled Bailey et al. driver tables: 739 gene-evidence rows (299 genes) and 579 variant-evidence rows (53 genes). The original symbols, aliases, Ensembl IDs, transcript IDs, publication locators and source-file checksums are preserved.

The machine-readable audit records hashes of all six bundled inputs and verifies that each query returns exactly the record IDs associated with its expected gene. Reproduce it without downloads or genome annotations:

python scripts/audit_driver_identifiers.py --check
Identifier class Gene table Variant table
Source symbols 299 53
Current symbols in the bundled Ensembl 115 reference 299 53
Recorded source aliases 9 0
Ensembl IDs 299 53
Versioned Ensembl IDs 299 53
Shipped historical/alternate Ensembl IDs 35 2
Shipped Entrez IDs 562 98
Shipped NCBI synonyms 1,409 337

Counts are per identifier class and table; they overlap. The regression suite also covers padded/lowercase Ensembl IDs, all nine renames, missing symbols, conflicting aliases, shared aliases and ambiguous case-insensitive queries.

All renamed source symbols

The variant table has no renamed source symbols. The gene table contains these nine source/current pairs, each supported by the same recorded Ensembl ID:

Source symbol Current symbol Ensembl gene ID
CBWD3 ZNG1C ENSG00000196873
FAM46D TENT5D ENSG00000174016
H3F3A H3-3A ENSG00000163041
H3F3C H3-5 ENSG00000188375
HIST1H1C H1-2 ENSG00000187837
HIST1H1E H1-4 ENSG00000168298
RQCD1 CNOT9 ENSG00000144580
TCEB1 ELOC ENSG00000154582
WHSC1 NSD2 ENSG00000109685

CBWD3 requires source context

The pinned NCBI gene-info snapshot lists CBWD3 as a synonym of both ZNG1C (GeneID 445571, ENSG00000196873) and ZNG1E (GeneID 220869, ENSG00000147996). HGNC:18519 lists CBWD3 as a previous symbol of ZNG1C. The source evidence preserves the two matching NCBI rows, the relevant HGNC fields, source URLs and response/file checksums. The NCBI source is the pinned June 2026 gene-info snapshot; the HGNC record is available from the HGNC API.

In the driver table, the recorded ID and the recorded ZNG1C alias support that specific locus. The accessor warns on this fallback and permits queries using the original source label. These scoped names are not promoted into the global one-to-one synonym dictionary. This avoids assigning every occurrence of the shared NCBI alias to a single locus.

Lookup gaps found during review

The earlier PR validated all source rows, but only tested one renamed symbol. It also preferred case-insensitive current symbols before exact NCBI aliases. Consequently, emb (a shipped alias of XPO1) incorrectly selected the separate gene EMB and returned no driver evidence. The reviewed implementation prefers exact spelling; emb returns XPO1, EMB resolves to its separate locus, and Emb raises because case folding would combine both identities. Other ambiguous folds, including alb and met, also require exact spelling or an Ensembl ID; exact ALB and MET remain supported.

Recorded source aliases are now queryable even when absent from the global synonym table. A collision with another recorded or bundled identity raises. Unknown symbols return an empty frame consistently, without falling through to an installed historical genome and selecting an annotation-dependent hit.

This audit covers the pinned driver tables and their shipped mappings. It does not establish completeness of all human nomenclature or refresh the global NCBI synonym snapshot.