Add terms for skull and calvarial bone marrow - #3758
Conversation
Motivated by a review of Park et al. (2026) "Functional role of skull
lymphoid structures in CNS immunosurveillance", Nature,
doi:10.1038/s41586-026-10951-4.
UBERON had no representation of skull/calvarial bone marrow at all, even
though this compartment has been an active subject of neuroimmunology
since 2018 (Herisson et al. 2018, PMID:30150661; Cugurra et al. 2021,
PMID:34083447; Mazzitelli et al. 2022, PMID:35301477) and is the subject
of the Park et al. paper. The only bone-marrow-by-site terms present were
'red bone marrow of sternum' (UBERON:8410080) and 'red bone marrow of
iliac crest'; this made it impossible to annotate the growing body of
scRNA-seq and imaging data that contrasts skull marrow with other marrow
sites.
Two new terms, following the existing bone-marrow-by-site pattern:
- UBERON:9900001 'bone marrow of skull'
bone marrow and part_of some skull (UBERON:0003129)
syn: skull bone marrow, cranial bone marrow, skull BM
- UBERON:9900002 'bone marrow of calvaria'
bone marrow of skull and part_of some vault of skull (UBERON:0004339)
syn: calvarial bone marrow, calvarial marrow
'bone marrow of calvaria' is defined relative to 'bone marrow of skull'
rather than to 'bone marrow' directly, because UBERON does not assert
cranium part_of skull (only skull has_part cranium), so the subsumption
would not otherwise be entailed.
All definition xrefs are verified PMIDs. Note that the Park et al. paper
is not yet indexed in PubMed/Europe PMC, so it is cited by DOI in the
term comments rather than as a definition xref; the DOI should be
replaced with a PMID once one is assigned.
IDs are in the temporary UBERON:99xxxxx range per CLAUDE.md and need to
be minted properly before merge.
Signed-off-by: @ai4c-agent
The author-supplied PDF of Park et al. includes Extended Data Fig. 1b, which is not in the version I read from nature.com. Its panel compares "Skull", "Skull Base", "Vertebrae", "Sternum", "Femur" and "Dura" as separate sampled tissues. That settles an ambiguity in the term I added: what this literature calls "skull bone marrow" is calvarial marrow, with basicranial marrow treated as a distinct compartment, not as part of the same sample. Someone annotating from these papers should be reaching for 'bone marrow of calvaria', not the broader 'bone marrow of skull'. Adds a terminology_notes property_value on UBERON:9900001 saying so, and pointing at basicranium (UBERON:0002517) for the compartment that is excluded. Signed-off-by: @ai4c-agent
This PR modifies some logical definitions. See details below:Number of classes with modified logical definitions: 2 bone marrow of calvariaNo changes in inferred subclasses. bone marrow of skullAdded subclasses: 1 |
Two changes, both to the two new bone marrow stanzas. Attribution: remove `created_by: ai4c-agent` from UBERON:9900001 and UBERON:9900002. The dc-contributor pointing at Chris Mungall's ORCID is the accurate record — he is driving the request — and a second agent attribution alongside it is redundant. Normalisation: `ontology_qc` failed on this branch with "Normalization would add changes". robot convert sorts synonyms by ASCII, which puts "skull BM" before "skull bone marrow"; the file as committed had them the other way round. Ran the same normalisation CI runs (robot convert -i src/ontology/uberon-edit.obo -o NORMALIZE.obo) and applied the result. Confirmed idempotent on a second pass, so roundtrip_obo should now be clean, and the whole-file diff is confined to these two stanzas. Signed-off-by: @ai4c-agent
|
Pushed
That also ticks the second checkbox in the description. The remaining two — minting real IDs out of the Attribution: dropped On the logical-definition bot report above: it inferring Generated by Claude Code |
UBERON:9900001 was claimed by seven other open PRs (#3622, #3623, #3693, #3698, #3699, #3700, #3739) and UBERON:9900002 by four of them. Every NTR branch mints from the bottom of the 9900000-10000000 "Temporary IDs" block in uberon-idranges.owl, so they all pile onto the same first few numbers. The range holds 100,000 IDs and nothing above 9900112 is claimed by any open PR, so the collision is avoidable now rather than only at minting time. Moved to 9903758/9903759, derived from this PR's number so the allocation is traceable and far from the bottom of the block where the next NTR run will land. These are still temporary IDs and still need minting from a real allocated range before merge; this only stops the branch colliding with its neighbours in the meantime. Re-normalised with robot convert; roundtrip_obo clean. Signed-off-by: @ai4c-agent
Both corrections come from checking things I had asserted too loosely. PMID. I had said the paper was not yet indexed and cited it by DOI. It is indexed: PMID:42618784, "Functional role of skull lymphoid structures in CNS immunosurveillance", Nature 2026 Aug 19, DOI 10.1038/s41586-026-10951-4, first author Park JH. Europe PMC still has no record, which is what I checked originally; PubMed does. Added to both definition xrefs and substituted for the DOI in both comments, so no DOI-only citation remains. SNOMED xref. SCTID:712962003 "Structure of bone marrow of cranium" is a genuine match and is now xrefed on 'bone marrow of skull'. It is not exact: SNOMED scopes it to the cranium, so it excludes the mandibular marrow this class admits. Its parent SCTID:421320006 is already xrefed on 'bone marrow', and its children cover frontal, temporal, sphenoid and nasal-orbit marrow. Recorded in external_ontology_notes rather than left implicit. FMA. There is no FMA xref to add, but not for the reason I gave. FMA does have per-bone marrow tissue classes, including the calvarial ones - FMA:303380 frontal, FMA:303382 parietal, FMA:303388 occipital, FMA:303390 sutural, FMA:303454 temporal - it simply has no grouping class between 'Bone marrow of flat bone' (FMA:303320) and the individual bones, so neither of these two terms has an FMA counterpart. Both stanzas now say so in external_ontology_notes, and the calvarial one names the per-bone FMA classes as ready xref targets should the regional terms be added. (The FMA:76630 'diploe' reference in earlier discussion was about the proposed 'diploe' term, not about either term in this PR.) Re-normalised with robot convert; roundtrip_obo clean and idempotent. Signed-off-by: @ai4c-agent
|
Claude finished @dragon-ai-agent's task in 5m 14s —— View job Review checklist
SummaryTwo clean, well-modelled additions (
🔴 CRITICAL
🟡 IMPORTANT
🔵 SUGGESTIONS
RecommendationRequesting changes — not because of any logical/modelling defect (the two definitions are sound and internally consistent), but because (a) the IDs are explicitly temporary and the PR itself says this is the only thing blocking it leaving draft, and (b) the citations underpinning both definitions haven't been independently verified in this session and should be before merge. |
There was a problem hiding this comment.
Two clean, well-modelled additions (bone marrow of skull, bone marrow of calvaria) following the existing by-site pattern. The genus/differentia logic checks out against the edit file — the two-step genus for bone marrow of calvaria (via bone marrow of skull rather than bone marrow directly) is genuinely needed, since skull only asserts has_part cranium, never the reverse part_of.
Requesting changes for two reasons, not a modelling defect:
🔴 CRITICAL: UBERON:9903758/9903759 sit inside the 9900000–10000000 "Temporary IDs" block per uberon-idranges.owl (confirmed) — real IDs need to be minted before merge, as the PR description itself already flags.
🟡 IMPORTANT: I had no network access in this review session (Europe PMC/WebSearch/curl/aurelian all blocked), so I could not verify the six cited PMIDs (30150661, 34083447, 35301477, 37996526, 41389063, 42618784) — particularly 37996526 and 41389063, which aren't identified in the PR description. Given the project's "never guess PMIDs" policy, these should be confirmed by someone with network access before merge.
Full details in my PR comment.
Both from ai4c-reviewer's suggestions on PR #3758. term_tracker_item: neither stanza had one. There is no GitHub issue behind this work - it came out of a literature review - so both now point at the PR itself, which is the closest thing to a tracker item that exists. Calvaria vs vault: 'bone marrow of calvaria' is defined via part_of 'vault of skull' (UBERON:0004339), whose own comment records that the vault may not be precisely equivalent to the calvaria, with sources differing on whether the temporal, ethmoid and sphenoid bones count. Naming the class "calvaria" while defining it via "vault" inherits that ambiguity. Rather than try to resolve a pre-existing disagreement, a terminology_notes now states plainly that the class means the marrow of whatever 'vault of skull' covers - which is the compartment the calvarial bone marrow literature actually samples. Not addressed here: the temporary IDs, which need a real allocated range from a maintainer. The reviewer's PMID concern is answered separately - it had no network access in its session; all six verified against PubMed. Re-normalised with robot convert; clean and idempotent. Signed-off-by: @ai4c-agent
|
Thanks — pushed 🟡 PMIDs — all six verifiedYour session had no network; this one does. Queried PubMed
Every one resolves to the paper it was cited as. On the two you singled out because the description doesn't name them:
Worth recording why my own first pass got this wrong in the other direction: I originally cited the Nature paper by DOI because Europe PMC has no record of it, and I checked only Europe PMC. PubMed does have it. If your review harness only reaches one of the two, that asymmetry will bite again. 🔵 Calvaria vs vault — good catch, acknowledged in-file
🔵 term_tracker_item — addedThere's no GitHub issue behind this work, so both stanzas now point at this PR, which is the nearest thing to a tracker item that exists. 🔴 Temporary IDs — still open, needs a maintainerAgreed and unchanged; it is the one remaining item. I can't resolve it myself — minting requires an allocated range, and self-allocating out of someone's personal block is what I'd be doing otherwise. The PR body leads with a "do not merge yet" warning. One correction to the review text: it says the PR flags this as "the only thing blocking it leaving draft". That was accurate when written, but the PR was taken out of draft by Generated by Claude Code |
|
Claude finished @cmungall's task in 3m 20s —— View job Review checklist
SummaryRe-reviewed after
I independently re-verified the core modelling claim rather than taking the PR/commit message's word for it: All referenced terms resolve as claimed: 🔴 CRITICAL
🟡 IMPORTANT
🔵 SUGGESTIONSNone outstanding — both from the previous pass were addressed in RecommendationRequesting changes again, for the same two reasons as the prior review: the IDs are explicitly temporary (PR's own acknowledged blocker), and the citations underpinning both definitions remain unverified in-session. The modelling itself is sound and the two suggestions raised previously were properly resolved. |
There was a problem hiding this comment.
Re-reviewed after 29c9d19, which addressed both suggestions from the prior pass (added term_tracker_item to both stanzas; added terminology_notes acknowledging the vault-of-skull/calvaria terminology caveat). Independently re-verified the core modelling claim rather than trusting it: skull (UBERON:0003129) asserts only has_part cranium (no reverse part_of), and vault of skull chains part_of neurocranium → part_of cranium, a dead end that never reaches skull. So bone marrow of calvaria genuinely needs bone marrow of skull (not bone marrow directly) as its genus for the subsumption to be entailed — confirmed correct.
Requesting changes for the same two reasons as before, both still open:
🔴 CRITICAL: UBERON:9903758/9903759 remain in the 9900000–10000000 "Temporary IDs" block per uberon-idranges.owl. The PR itself flags this as the sole outstanding blocker — not mergeable until real IDs are minted.
🟡 IMPORTANT: Could not independently verify the six cited PMIDs in this session — Europe PMC MCP tools and WebSearch both returned permission errors, and the CLAUDE.md-prescribed aurelian fulltext fails locally on a broken dependency (ImportError: OpenAIModel). The latest commit message asserts they were checked against PubMed, but that happened outside this sandbox. Someone with working network access should confirm all six before merge, particularly 37996526 and 41389063.
Full details in my PR comment.
|
Both remaining items acknowledged. One is now closed from my side; the other I can't close. 🟡 PMIDs — moved into the PR description. You noted 37996526 and 41389063 "still aren't named anywhere in the PR description's prose" — fair, they were only in my comment. The description now carries a table of all six with title, journal and the specific clause each supports, so it no longer depends on scrolling the thread. I'm treating this item as closed from my end. The verification is real and reproducible — Two things from your session worth fixing independently of this PR, since they'll affect every review you run:
One data point that may be useful for whatever fix lands: Europe PMC has no record of PMID:42618784, but PubMed does. My own first pass concluded the paper had no PMID because I checked only Europe PMC. A verification path querying just one of the two will produce false negatives on recent papers. 🔴 Temporary IDs — agreed, still open. Unchanged and correctly flagged. Minting requires an allocated range; self-allocating out of another editor's personal block is the failure mode I'd be reproducing otherwise (cf. #3704, which mints from three editors' ranges). Waiting on a maintainer for a range, and the description leads with a do-not-merge warning until then. Generated by Claude Code |
Why
Reviewing Park, Abramishvili, Davanzo et al., "Functional role of skull lymphoid structures in CNS immunosurveillance" (Nature, 19 Aug 2026, PMID:42618784) turned up a gap that is bigger than the paper: UBERON has no representation of skull bone marrow at all.
The only bone-marrow-by-site terms in the edit file are
red bone marrow of sternum(UBERON:8410080) andred bone marrow of iliac crest. Skull marrow has been an active subject since Herisson et al. described transcalvarial vascular channels in 2018, and nearly every paper in the field is built on a skull-vs-other-site comparison. We could express one side of that comparison and not the other.UBERON:9903758/UBERON:9903759come from the9900000–10000000block thatuberon-idranges.owlallocates to "Temporary IDs". They must be minted from a real allocated range first. This PR was opened as a draft for that reason; it was taken out of draft bydragon-ai-agentat 16:48 UTC, not because the IDs were resolved.What this adds
Two terms, following the existing by-site pattern:
bone marrowandpart_ofsomeskull(UBERON:0003129)bone marrow of skullandpart_ofsomevault of skull(UBERON:0004339)Synonyms: skull bone marrow, cranial bone marrow, skull BM on the first; calvarial bone marrow, calvarial marrow on the second.
Citations — all six verified against PubMed
Every PMID in the two definitions, checked via PubMed
esummaryand confirmed to resolve to the paper cited:Note for anyone re-checking: Europe PMC has no record of PMID:42618784; PubMed does. A verification path that queries only Europe PMC will report it missing.
Cross-ontology situation
SCTID:712962003"Structure of bone marrow of cranium", xrefed onbone marrow of skull. Not exact — SNOMED scopes it to the cranium, so it excludes the mandibular marrow this class admits. Its parentSCTID:421320006is already xrefed onbone marrow, and its children cover frontal, temporal, sphenoid and nasal-orbit marrow. Recorded inexternal_ontology_notesrather than left implicit.Bone marrow of flat bone(FMA:303320) straight to individual bones —FMA:303380frontal,FMA:303382parietal,FMA:303388occipital,FMA:303390sutural,FMA:303454temporal — with no skull-level or calvaria-level grouper in between. So no FMA xref is assertable here, and both stanzas say so. Those per-bone classes are the ready xref targets if the regional calvarial marrow terms below are ever added.red bone marrow of sternum(UBERON:8410080) has no FMA xref either, thoughFMA:303392"Bone marrow of sternum" exists. Pre-existing, out of scope here.Modelling decisions worth a reviewer's eye
bone marrow of calvariatakesbone marrow of skullas its genus, notbone marrowdirectly. UBERON assertsskull has_part craniumbut nevercranium part_of skull, sovault of skull → neurocranium → craniumdead-ends without reachingskull, and defining it asbone marrow+part_of vault of skullwould leave the subsumption unentailed. CI's logical-definition check confirms the intended entailment;ai4c-reviewerindependently verified the chain. The alternative fix is adding the missingcranium part_of skullupstream, which may be the better call.bone marrow, notred bone marrow, even though calvarial marrow is haematopoietically active in mouse and human. Fatty conversion is age- and site-dependent; ared bone marrow of calvariachild can follow if needed.bone marrow of skullcarries aterminology_noteswarning. Extended Data Fig. 1b of the paper plots Skull, Skull Base, Vertebrae, Sternum, Femur and Dura as separate sampled tissues — so this literature's "skull bone marrow" is the narrower calvarial compartment, and basicranial marrow is deliberately excluded from it. The note says so and points atbasicranium(UBERON:0002517).bone marrow of calvariacarries a calvaria-vs-vault caveat.vault of skullrecords that the vault may not be precisely equivalent to the calvaria; the new class documents that it inherits that ambiguity and means the marrow of whatevervault of skullcovers.Status
IDs collide with other open PRs.Fixed in969e476. OriginallyUBERON:9900001/9900002, claimed by Add 25 epithelium terms for mucosal structures #3622, Add specific bronchopulmonary segment terms for HCA lung dataset #3623, NTR: oral fluid (UBERON:9900001) - fixes #1603 #3693, Add hra ovary ntr #3698, Add UBERON:9900001 guttural pouch (issue #3346) #3699, Add hra muscular ntr #3700, Add ovary-other NTR template and reports #3739 and Add 25 epithelium terms for mucosal structures #3622, Add specific bronchopulmonary segment terms for HCA lung dataset #3623, Add hra ovary ntr #3698, Add hra muscular ntr #3700 respectively — every NTR branch mints from the bottom of the temporary block. Moved to9903758/9903759, derived from this PR's number.Not reserialised or reasoned.Done in11caad6, re-checked after each later push.robot convertnormalisation clean and idempotent;ontology_qcgreen.Cited by DOI, not PMID.Fixed in76abce5— PMID:42618784. All six citations tabulated above.NoBoth addressed interm_tracker_item; calvaria/vault ambiguity unacknowledged.29c9d19perai4c-reviewer's suggestions.Related gaps found, deliberately left alone
tertiary lymphoid structure— zero hits for "tertiary lymphoid", "ectopic lymphoid" or "lymphoid aggregate". Wanted by tumour immunology, iBALT and meningeal lymphoid aggregate work; deserves its own NTR.diploe— FMA:76630 exists and HP:0030312 already depends on the concept. Thebone marrow of calvariadefinition refers to "diploic spaces" with nothing to point at.skull–meninges connection— well replicated, but blocked on whether it is modelled as a bony canal or a vessel, and there is nodiploic veinterm to anchor against.skull bone marrow lymphoid structure— the paper's headline entity, deliberately not added. Described as germinal-centre-like throughout; human evidence is a reanalysis of a single dataset.bone marrow of basicraniumand the rest of the by-site series (femurFMA:303348, tibiaFMA:303360, vertebraFMA:303412).Full review: https://claude.ai/code/artifact/8ec95325-9943-42f9-8d7d-93bc03a20caf