- Babel: 2026jul22
(tagged 2026jul22,
approx Babel v1.18.1, branch
babel-1.18.1)- Built against Biolink Model v4.4.3
- Summary tables
- CURIE summary
- Prefix report
- NodeNorm: v2.5.0, v2.5.1
- NameRes: v1.7.0
Next release: None as yet Previous release: Babel 2025sep1
- Junk NCBIGene synonyms are gone
(Babel #853).
NCBI splits a comma-containing alias across
gene_info.gz's pipe-delimited synonym field, and earlier builds emitted the fragments as synonyms in their own right: 912 of them across 276 genes, including bareMETandCYS, which are real human gene symbols. A NameRes search for one of those names against 2025sep1 or earlier could match the wrong gene; re-check any result that relied on a short symbol. Genuine double-prime nomenclature (U2B'', RNA polymerasebeta'') is deliberately kept -- narrowing the fix to protect those ~4,000 synonyms is what Babel #917's full-file analysis established. - ChEBI secondary identifiers and PubChem xrefs are back (Babel #951). Upstream tag renames in the ChEBI SDF silently emptied both ingests, so ChEBI cliques in earlier builds were missing xrefs they should have had. Cliques that look newly merged against 2025sep1 are mostly this.
- The
biolink:Foodclique-level retype is corrected (Babel #948) -- seven cliques including D-glucose and tocopherol shipped asbiolink:Foodin babel-1.18 and are back to their own types. Written up in full under Known issues below; it is the clearest "you saw X, you now see Y" case in this release.
Explanations for the movements in the Compendium size comparison table at the end of this note.
This is a large release -- 605.9M CURIEs against
689.0M in 2025sep1, a net 12.1% drop -- and consumers should expect several compendia to look very
different.
- [MAJOR] Protein is down 38.2% (275.5M -> 170.2M CURIEs), essentially all of it UniProtKB
(253.7M -> 149.9M identifiers, -40.9%). This is an upstream UniProt change, not a Babel one.
UniProt now keeps only proteins from reference proteomes: the
2026-06-10 release notes say "the
number of UniProtKB accessions has been reduced by 43%", and
the change announcement gives "removal of
approximately 57 million protein entries, which will result in an estimated total of 150 million
protein entries in UniProtKB". Babel ended at 149.9M UniProtKB identifiers, which matches. No PR
in this release touches the UniProtKB ingest, the protein completeness report shows
Missing identifiers: 0, and the run logs record no UniProt download or parse errors.- Nothing to do for now. If a specific protein people care about turns out to have been dropped, that is the point at which to work out whether Babel should retain non-reference-proteome entries from another source.
- [MAJOR] PhenotypicFeature is down 78.5% (483,108 -> 103,707) and
umlsis up 41.9% (897,846 -> 1,274,014). These are the same movement: UMLS semantic types T033/T034 were excluded from disease-phenotype so that leftover-UMLS re-types them (Babel #818, Babel issue #569), and the UMLS identifiers in PhenotypicFeature (365,930 -> 28,761) carried their SNOMEDCT (47,823 -> 6,164) and MEDDRA (22,809 -> 6,409) clique partners with them. Consumers resolving a phenotype by UMLS CUI will now get a leftover UMLS clique instead. - [MAJOR] ChemicalEntity is down 87.2% (4,046,131 -> 518,554), which unwinds the 510% jump
reported in 2025sep1. The identifiers moved to SmallMolecule (+4.5%,
+9.9M): INCHIKEY in ChemicalEntity went 1,776,876 -> 55,437 and PUBCHEM.COMPOUND 1,647,448 ->
14,116, while the corresponding SmallMolecule rows grew by about the same amounts. Chemicals that
were previously typed only as the generic
biolink:ChemicalEntitynow get a definite type. - MacromolecularComplex is up 1,536% (1,258 -> 20,579) -- all ComplexPortal species are now ingested (Babel #831).
- A new
Foodcompendium (932 CURIEs) from the DrugBank retype (Babel #918); see the known issue above. - ComplexMolecularMixture is up 432.6% (276 -> 1,470) -- the same DrugBank retype
(Babel #828) moved plant, fruit and animal
extracts here rather than into
Food. - MP arrives in PhenotypicFeature (31 -> 14,750), kept disjoint from HP (Babel #886).
- EMAPA arrives in AnatomicalEntity and GrossAnatomicalStructure (+64.7%, 15,709 -> 25,867) (Babel #781).
- Gene is up 11.7% (+9.3M, mostly NCBIGene +8.2M), MGI is up 1,352% (+537,947), and Publication is up 5.3% (+4.2M).
- Polypeptide is down 97.0% (166 -> 5) -- an incidental number, not a lost ingest. Babel assigns
biolink:Polypeptideonly from ChEBI's peptide subclasses (CHEBI:16670"peptide") and MeSHD12.125/D12.644, but the Biolink Model registers onlyUniProtKB,PR,ENSEMBL,FBandUMLSasid_prefixesfor that class (identical in 4.2.6-rc5 and 4.4.3, so the model update is not the cause).write_compendium()therefore drops every CHEBI and MESH member, andPolypeptide.txtholds only the residue: cliques that happened to pick up a UMLS CURIE as well. With chemical cliques rearranged this much and UMLS refreshed 2025AA -> 2026AA, that residue moved. Across the whole build, cliques typedbiolink:Polypeptidewent 380 -> 219 and the portion outsidePolypeptide.txt(leftover UMLS) is 214 in both releases -- the whole change is in this one file. The underlying prefix-registration mismatch predates this release and is worth an issue in its own right; it is written up in Architecture.md.
- Updated the Biolink Model from 4.2.6-rc5 to 4.4.3.
- Updated UMLS from 2025AA to 2026AA.
- Updated RxNorm from 07072025 to 07062026.
- Added the Mammalian Phenotype Ontology (MP, Babel #886) and the Mouse Developmental Anatomy Ontology (EMAPA, Babel #781).
- Expanded the ComplexPortal ingest to include all species, not just Saccharomyces cerevisiae Babel #831.
- Created a Food compendium by identifying DrugBank identifiers that are really plant/fruit/animal extracts Babel #828, Babel #918, Babel #948.
- Added HGNC gene symbols from mim2gene.txt as OMIM labels Babel #801.
- Added an obsolete label file, allowing them to be excluded Babel #806.
- Added a source impact report tool for evaluating the effect of adding a new concord to an existing clique Babel #742.
- Babel releases are now published to Zenodo at doi:10.5281/zenodo.18489042 Babel #660.
- Reworked the DrugChemical conflation order. The more complex system introduced in Babel #506 gave consistently bad results, so it was simplified to a custom prefix order based on the ChemicalEntity prefix order (Babel #626), which gave much better results.
- Reorganized UMLS and MeSH tree mappings to the Biolink Model, including in:
- Proteins: Babel #668, building on the UMLS concord added in Babel #495
- Disease/phenotype: Babel #818
- Narrowed UniChem overused-xref filtering to UNII, KEGG.COMPOUND and DrugCentral, so every other prefix -- CHEBI above all -- keeps its complete set of mappings Babel #508.
- Fixed ChEBI SDF tag renames Babel #951 and reading its database accession file Babel #955.
- Improved preferred labels:
- Updated preferred label prefix overrides: Babel #657
- Label demotion for long labels is now limited to chemicals: Babel #725
- Added a
taxon_specificboolean flag to the synonyms output, so Solr can identify cliques that aren't taxon-specific Babel #604. - Added support for switching UMLS to the level 0 vocabularies only, if needed Babel #605.
- Moved Babel from the TranslatorSRI org to the NCATSTranslator org. Old URLs still redirect, but bookmarks and scripts are worth updating.
- Improved download robustness Babel #861.
- Babel downloads now set a custom User-Agent, which is necessary for some downloads Babel #797.
- Including for SPARQL queries Babel #876.
- Updated Babel to work on Slurm using the
Snakemake Slurm executor plugin
Babel #594, then tuned the per-rule resource
requests against real runs Babel #860,
Babel #869.
- Added Snakemake benchmarking Babel #679 as well as a script for comparing benchmarks to the resources set for each rule.
- Replaced requirements.txt with uv for managing packages Babel #598, and added ruff, snakefmt Babel #599 and rumdl Babel #614 for formatting source files.
- Significantly improved Babel's documentation
Babel #614,
Babel #685, including per-source notes such
as MeSH Babel #808. This covers both prose
for human readers and the reference material coding agents work from —
AGENTS.md, the per-directoryCLAUDE.mdfiles, and long-form guides likedocs/AddingNewSources.md. - Significantly improved testing
Babel #756,
Babel #810, which is broken up into:
- Unit tests: small, fast tests that can be run after every change and on every PR.
- Network tests: tests that access online resources. These are scheduled to run weekly on GitHub Actions.
- Pipeline tests: tests that test an entire Babel pipeline or a part of it, usually by invoking
Snakemake. This means that already downloaded/generated files won't be redownloaded/regenerated,
making these tests fast after their initial run. Not feasible for larger pipelines that require
large memory.
- This includes identifier partition tests Babel #692, which check whether the same UMLS/MeSH identifier is ending up in multiple pipeline outputs.
- Slow tests: tests from any of the above categories which take a long time to run -- they are excluded by default.
- Reorganized some code, including testing code, creating another shared file for utility functions, tools Babel #896 and file for predicates Babel #778.
- Built tools for:
- Comparing each build's prefix counts against the previous release Babel #889
- Generating release notes across Babel/NodeNorm Redis/NameRes Solr Babel #983
- Fixed Chembl label bug Babel #585.
- The leftover UMLS file no longer generates its own custom compendium file, but rather assembles one-identifier cliques in memory and passes them to write_compendia() Babel #809.
- Various leftover UMLS improvements: Babel #816, Babel #863
- Various UniChem fixes: Babel #865
- Various DrugChemical improvements: Babel #864
- Fixed the NCBIGene source alias field
Babel #853, characterized against all 70.5M
rows of
gene_info.gzin Babel #917 - Added tools for:
- Reporting the status of the current Slurm run Babel #862
- Comparing two Babel compendia: Babel #877 Babel #885
- DrugBank downloads are currently disabled (cthoyt/drugbank-downloader#23), so I used the previously downloaded 5-1-13.
- HMDB is now behind a Cloudflare bot challenge, so the pipeline can't download it (see
docs/sources/DownloadPatterns.md). Unlike DrugBank, this is not a reused old download -- I downloaded it fresh in a browser on my laptop and copied it to the HPC. - The
biolink:Foodretype in Babel #918 applied at the clique level, so seven cliques that reach DrugBank food evidence through RXCUI/UMLS -- including D-glucose and tocopherol -- shipped asbiolink:Foodin babel-1.18 (Babel issue #935). The fix (Babel #948, commit43157fa7) is in the 2026jul22 tag, andFood.txtis down to 285 cliques. Confirmed fixed in the deployed build:CHEBI:4167"D-glucose" andDRUGBANK:DB09341now normalize to a singlebiolink:SmallMoleculeclique, so the DrugBank food identifier takes its clique's type rather than imposingbiolink:Foodon it.
- NodeNorm now uses the preferred name provided by Babel rather than duplicating its selection logic
NodeNorm #386
- This required increasing the size of one of the databases so that we could include the preferred names for all cliques
- Enormous improvements to the Redis database loader NodeNorm #384, NodeNorm #391,
- Added to /status: NodeNorm version NodeNorm #361 and backend type NodeNorm #392
- Enormous improvements to Solr data loading NameRes #278
- Use
taxon_specificflag from Babel so that taxon-specific queries don't filter out non-taxon-specific cliques NameRes #214 - Stop storing names_exactish -- we only need the index NameRes #225
- Added logging to track request times NameRes #230
- Improved /status NameRes #246
- Improved documentation NameRes #215 NameRes #271, particularly deployment instructions NameRes #240
- Updated defaults: autocomplete defaults to false NameRes #210
Sizes of the deployed databases, read from https://nodenormalization-exp.apps.renci.org/status
and https://name-resolution-exp.apps.renci.org/status. Both report Babel 2026jul22 (NodeNorm
v2.5.1, NameRes v1.7.0).
| Database name | Database ID | Number of keys | Memory used |
|---|---|---|---|
| id-id | eq_id_to_id_db | 605,837,726 | 53.78G |
| id-eq-id | id_to_eqids_db | 398,664,426 | 94.61G |
| id-categories | id_to_type_db | 398,664,426 | 30.21G |
| semantic-count | curie_to_bl_type_db | 135 | 30.33M |
| info-content | info_content_db | 398,664,426 | 57.54G |
| conflation-db | gene_protein_db | 35,199,861 | 4.49G |
| chemical-drug-db | chemical_drug_db | 104,863 | 210.54M |
| Solr | name_lookup | 331,513,708 | 109.75 GB |
| Filename | 2025sep1 | 2026jul22 | Diff | % Diff |
|---|---|---|---|---|
| Count of CURIEs in all files | 688,983,999 | 605,864,191 | -83,119,808 | -12.1% |
| Count of cliques in all files (approx) | 490,293,340 | 388,490,111 | -101,803,229 | -20.8% |
| AnatomicalEntity | 249,584 | 252,287 | +2,703 | +1.1% |
| BiologicalProcess | 67,929 | 65,256 | -2,673 | -3.9% |
| Cell | 13,175 | 13,952 | +777 | +5.9% |
| CellLine | 38,810 | 38,896 | +86 | +0.2% |
| CellularComponent | 14,696 | 14,818 | +122 | +0.8% |
| ChemicalEntity | 4,046,131 | 518,554 | -3,527,577 | -87.2% |
| ChemicalMixture | 530 | 609 | +79 | +14.9% |
| ComplexMolecularMixture | 276 | 1,470 | +1,194 | +432.6% |
| Disease | 632,330 | 639,398 | +7,068 | +1.1% |
| Drug | 360,925 | 358,459 | -2,466 | -0.7% |
| Food | 0 | 932 | +932 | Infinity% |
| Gene | 79,427,652 | 88,740,328 | +9,312,676 | +11.7% |
| GeneFamily | 28,050 | 28,463 | +413 | +1.5% |
| GrossAnatomicalStructure | 15,709 | 25,867 | +10,158 | +64.7% |
| MacromolecularComplex | 1,258 | 20,579 | +19,321 | +1535.9% |
| MolecularActivity | 206,636 | 213,714 | +7,078 | +3.4% |
| MolecularMixture | 21,879,355 | 23,892,388 | +2,013,033 | +9.2% |
| OrganismTaxon | 3,543,867 | 3,745,133 | +201,266 | +5.7% |
| Pathway | 53,125 | 53,772 | +647 | +1.2% |
| PhenotypicFeature | 483,108 | 103,707 | -379,401 | -78.5% |
| Polypeptide | 166 | 5 | -161 | -97.0% |
| Protein | 275,514,857 | 170,218,499 | -105,296,358 | -38.2% |
| Publication | 79,773,973 | 83,969,833 | +4,195,860 | +5.3% |
| SmallMolecule | 221,734,011 | 231,673,258 | +9,939,247 | +4.5% |
| umls | 897,846 | 1,274,014 | +376,168 | +41.9% |