Skip to content

Add ovary-other NTR template and reports - #3739

Open
zhengj2007 wants to merge 3 commits into
masterfrom
add-hra-ovary-other-ntr
Open

zhengj2007 wants to merge 3 commits into
masterfrom
add-hra-ovary-other-ntr

Conversation

@zhengj2007

Copy link
Copy Markdown
Collaborator

Generated from ovary-other source data via Stage 1-4 bulk NTR workflow.
Signed-off-by: @dragon-ai-agent

Generated from ovary-other source data via Stage 1-4 bulk NTR workflow.\n\nSigned-off-by: @dragon-ai-agent
@ai4c-agent

ai4c-agent Bot commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

Claude encountered an error after 1s —— View job


I'll analyze this and get back to you.

cmungall pushed a commit that referenced this pull request Aug 22, 2026
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
@github-actions

Copy link
Copy Markdown
Contributor

This PR has not seen any activity in the past month; if nobody comments or reviews it in the next week, the PR creator will be allowed to proceed with merging without explicit approval, should they wish to do so.

cmungall added a commit that referenced this pull request Aug 27, 2026
* Add terms for skull and calvarial bone marrow

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

* Add terminology note distinguishing skull vs calvarial marrow

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

* Drop created_by, and normalise to fix roundtrip_obo

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

* Renumber to UBERON:9903758/9903759 to clear PR ID collisions

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

* Add SNOMED xref and PMID:42618784; record FMA situation

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

* Address review: term_tracker_item and calvaria/vault caveat

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

* Move terms into the Automation ID range (UBERON:1200342/1200343)

These should never have been in the temporary block. uberon-idranges.owl
allocates idrange:44, 1200000-1300000, to "Automation" - and that range is
in real use, with seven merged terms already in it (UBERON:1200000 through
1200341, contributed by Mungall, Puig-Barbe and others). The 9900000-10000000
"Temporary IDs" block, by contrast, contains nothing merged at all; it is
scratch space that open NTR branches all mint from and that never survives
to master.

So the two terms move to the next free Automation IDs:

  UBERON:9903758 -> UBERON:1200342  bone marrow of skull
  UBERON:9903759 -> UBERON:1200343  bone marrow of calvaria

Verified unused anywhere in the repo before taking them, and no open PR
claims anything in 12xxxxx.

I originally used 99xxxxx because CLAUDE.md line 54 says "New terms start
UBERON:99xxxxx". That instruction points at the temporary block rather than
the Automation range and is worth revisiting, since it will send every
future agent run to the same place.

The diff is larger than the two-line change suggests only because robot
sorts stanzas by ID: renumbering relocates both stanzas from the end of the
term section to their sorted position after UBERON:1200341. Two ids added,
two removed, nothing else altered.

Re-normalised with robot convert; clean and idempotent.

Signed-off-by: @ai4c-agent

---------

Signed-off-by: @ai4c-agent
Co-authored-by: Claude <noreply@anthropic.com>
@ai4c-reviewer

ai4c-reviewer Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Claude finished @dosumis's task in 4m 16s —— View job


Review checklist

  • Hierarchy and parents are consistent
  • Definitions and supporting references look adequate
  • Obsolete or replacement handling is safe (N/A — no obsoletions in this PR)
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

Summary

This PR adds only the Stage 1–4 intermediate artifacts of the bulk NTR workflow (src/templates/hra-ovary-other.template.tsv + its -reports/ CSVs/TSVs and the source_data/ovary-other.csv input). It does not touch src/ontology/uberon-edit.obo, so nothing is live in the ontology yet — but these files are exactly what a future Stage 5/merge step would check in verbatim, so defects here should be fixed now rather than after registration.

I found two duplicate/unanchored new terms and one duplicate row that should block merge, plus a minor formatting issue.


🔴 CRITICAL — antral follicle (UBERON_9900001) is an unanchored duplicate of an existing term

In src/templates/hra-ovary-other.template.tsv, the antral follicle row has no is_a and no part_of at all — it's a floating class with zero logical axioms, violating the "every term needs at least one is_a" rule in CLAUDE.md.

Worse, it's a duplicate: UBERON:0000037 ("tertiary ovarian follicle") already carries synonym: "antral follicle" BROAD [] and xref: FMA:18641 — the exact same FMA xref given to this new term. The report candidates.tsv even flags this as a possible_match to UBERON:0000037, but the template still mints a brand-new ID for it instead of excluding/merging it. Confirming this is dead weight: all 5 intended children (dominant antral follicle, early antral follicle, pre-selection antral follicle ×2, selection antral follicle) already point is_a directly at UBERON:0000037, bypassing this new orphan term entirely — nothing in the template actually uses UBERON:9900001.
Recommendation: drop this row from the template; it should be resolved as a match to UBERON:0000037, not a new term.

🔴 CRITICAL — preantral follicle (UBERON_9900039) has the same problem

Same pattern: no is_a/part_of, and it duplicates UBERON:0000036 ("secondary ovarian follicle"), which already has synonym: "preantral follicle" EXACT [GO:0001546] and xref: FMA:18637 — again matching this new term's own xref column exactly. candidates.tsv flags it as possible_match but it wasn't excluded. It's likewise unused as a parent by anything else in the template.
Recommendation: drop this row; resolve as a match to UBERON:0000036.

🔴 CRITICAL — duplicate pre-selection antral follicle row

Two separate rows mint two different IDs for the identical label/definition/parent:

UBERON_9900037  pre-selection antral follicle  is_a=UBERON:0000037
UBERON_9900038  pre-selection antral follicle  is_a=UBERON:0000037

This traces back to a duplicate source row in bulk_ntr_workflow/source_data/ovary-other.csv (rows 38–39, one with a reference, one without) that the pipeline didn't dedupe. If checked in as-is, this would create two ontology classes for the same concept.
Recommendation: dedupe to a single row (keep the one with the reference/DOI).

🟡 IMPORTANT — malformed PMID CURIEs in def_xref

src/templates/hra-ovary-other.template.tsv, row for small intestine connective tissue (UBERON_9900044):

PMID: 20126587|PMID: 3310649|https://purl.org/ccf/ASCTB-TEMP_connective-tissue

Note the space after the colon — every other xref in this file uses PMID:NNNNNNN with no space. This is inconsistent CURIE syntax and risks being mis-parsed by ROBOT/OBO tooling.
Recommendation: normalize to PMID:20126587|PMID:3310649.

🔵 SUGGESTION — traceability

The PR body doesn't reference a tracking GitHub issue for this batch (just "Generated from ovary-other source data … Signed-off-by: @dragon-ai-agent"), and the template has no term_tracker_item column. This appears to be an accepted convention for this automated bulk workflow (per bulk_ntr_workflow/CLAUDE.md), but worth confirming intentional before these terms are registered into uberon-edit.obo.

🔵 SUGGESTION — large coordinate-grid subdivision set deferred to manual_curation

The ~10 fine-grained ovary spatial-subdivision terms (central/lateral/medial × superior/inferior × mesenteric/antimesenteric) are correctly kept out of the template and routed to manual_curation.tsv with good rationale for curator review. Given the volume, it may be worth a design discussion on whether UBERON should model this ASCTB coordinate grid at all before individually curating each one — but this is not blocking for the current PR.


Everything else checked out well: name corrections (dominance antral follicle → dominant antral follicle, corpus luteum granulosa theca layer → corpus luteum theca lutein layer) were correctly applied in the template; pathological terms (hemorrhagic anovulatory follicle, luteinized unruptured follicle) and out-of-scope concepts (matrisome) were correctly excluded via out_of_scope.tsv; confirmed OLS4 matches for the small-intestine terms were correctly excluded from the template via candidates.tsv; and the is_a/part_of genus classes I spot-checked (UBERON:0000064 organ part, UBERON:0000119 cell layer, UBERON:0002512 corpus luteum, UBERON:0013191/UBERON:0013192 cortex/medulla, etc.) are anatomically appropriate for their respective new terms.

No .github/.claude files are touched, so no workflow/auth regressions.
· branch add-hra-ovary-other-ntr

@ai4c-reviewer ai4c-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review checklist

  • Hierarchy and parents are consistent
  • Definitions and supporting references look adequate
  • Obsolete or replacement handling is safe (N/A — no obsoletions in this PR)
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

This PR adds only the Stage 1–4 intermediate artifacts of the bulk NTR workflow (template TSV + reports). It doesn't touch uberon-edit.obo yet, but these files feed a future merge step verbatim, so the following should be fixed first — see full details in the PR comment thread:

🔴 CRITICAL:

  1. antral follicle (UBERON_9900001) has no is_a/part_of at all, and duplicates existing UBERON:0000037 "tertiary ovarian follicle" (same FMA:18641 xref, already has synonym "antral follicle" BROAD). Unused by its intended children, which already is_a UBERON:0000037 directly.
  2. preantral follicle (UBERON_9900039) — same issue: no is_a/part_of, duplicates UBERON:0000036 "secondary ovarian follicle" (same FMA:18637 xref, already has EXACT synonym "preantral follicle").
  3. Duplicate pre-selection antral follicle row — two different new UBERON IDs (UBERON_9900037, UBERON_9900038) minted for the identical label/definition/parent, traced to a duplicate row in source_data/ovary-other.csv.

🟡 IMPORTANT:
4. Malformed PMID CURIEs in def_xref for small intestine connective tissue ("PMID: 20126587" with a stray space instead of "PMID:20126587"), inconsistent with the rest of the file.

Full write-up with file/row references is in my PR comment.

@dosumis

dosumis commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

#gogoeditdiff

@ai4c-reviewer

ai4c-reviewer Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Claude finished @dosumis's task in 2m 53s —— View job


Review checklist

  • Hierarchy and parents are consistent
  • Definitions and supporting references look adequate
  • Obsolete or replacement handling is safe (N/A — no obsoletions in this PR)
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

Summary

This PR adds only the Stage 1–4 intermediate artifacts of the bulk NTR workflow (src/templates/hra-ovary-other.template.tsv + its -reports/ CSVs/TSVs and bulk_ntr_workflow/source_data/ovary-other.csv). It doesn't touch src/ontology/uberon-edit.obo yet, but these files are exactly what a future Stage 5/merge step would check in verbatim, so defects here should be fixed now rather than after registration.

The diff is unchanged since the prior review pass on this PR. I re-verified each finding directly against src/ontology/uberon-edit.obo (via obo-grep.pl) and against bulk_ntr_workflow/source_data/ovary-other.csv — all three CRITICAL issues and the one IMPORTANT formatting issue are confirmed still present and unaddressed. Posted as inline comments on src/templates/hra-ovary-other.template.tsv:

🔴 CRITICAL

  1. antral follicle (UBERON_9900001, line 3) — no is_a/part_of at all, and duplicates existing UBERON:0000037 "tertiary ovarian follicle" — confirmed same xref: FMA:18641 and existing synonym: "antral follicle" BROAD. Unused by its intended children, all of which already is_a UBERON:0000037 directly.
  2. preantral follicle (UBERON_9900039, line 29) — same issue: no is_a/part_of, duplicates existing UBERON:0000036 "secondary ovarian follicle" — confirmed same xref: FMA:18637 and existing synonym: "preantral follicle" EXACT [GO:0001546].
  3. Duplicate pre-selection antral follicle row (lines 27–28) — two different new IDs (UBERON_9900037, UBERON_9900038) minted for the identical label/definition/parent, traced to a duplicate row in source_data/ovary-other.csv (rows 38–39, one with a DOI reference, one without).

🟡 IMPORTANT
4. Malformed PMID CURIEs (line 34) in def_xref for small intestine connective tissue: "PMID: 20126587" has a stray space, inconsistent with every other xref in the file.

Everything else checked out well: name corrections, exclusion of pathological/out-of-scope terms, and the is_a/part_of genus classes spot-checked are anatomically appropriate. No .github/.claude files are touched, so no workflow/auth regressions.

I submitted a Request Changes review with this summary and posted the four issues above as inline PR comments.
· branch add-hra-ovary-other-ntr

@@ -0,0 +1,34 @@
ID LABEL Definition def_xref is_a part_of develops_from In_subset Date Contributor Present_in_taxon Wikipedia_image xref
ID LABEL A IAO:0000115 >A oboInOwl:hasDbXref SPLIT=| SC % SC BFO:0000050 some % SC RO:0002202 some % AI oboInOwl:inSubset AT dcterms:date^^xsd:dateTime AI dcterms:contributor AI RO:0002175 A foaf:depiction A oboInOwl:hasDbXref SPLIT=|
http://purl.obolibrary.org/obo/UBERON_9900001 antral follicle An ovarian follicle characterized by the presence of a fluid-filled cavity called the antrum that develops during folliculogenesis. https://purl.org/ccf/ASCTB-TEMP_antral-follicle|PMID:42484017|PMID:42483999 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 FMA:18641

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL: antral follicle (UBERON_9900001) has no is_a/part_of at all — a floating class with zero logical axioms, violating the "every term needs at least one is_a" rule.

It's also a duplicate of existing UBERON:0000037 ("tertiary ovarian follicle"), which already has synonym: "antral follicle" BROAD [] and xref: FMA:18641 — the exact same xref given here. candidates.tsv flags this as a possible_match to UBERON:0000037 but it wasn't excluded. Confirming it's unused: all 5 intended children (dominant antral follicle, early antral follicle, pre-selection antral follicle ×2, selection antral follicle) already is_a UBERON:0000037 directly, bypassing this new term entirely.

Recommendation: drop this row; resolve as a match to UBERON:0000037 rather than minting a new ID.

http://purl.obolibrary.org/obo/UBERON_9900036 ovarian medullary vasculature A vasculature that is part of the ovarian medulla. This network of blood vessels provides vascular supply to the highly vascularized stroma of the ovarian medulla and forms the tissue of the hilum through which blood vessels enter the ovary. https://purl.org/ccf/ASCTB-TEMP_ovarian-medullary-vasculature|PMID:23204433|PMID:22479331 UBERON:0002049 UBERON:0013192 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606
http://purl.obolibrary.org/obo/UBERON_9900037 pre-selection antral follicle A tertiary ovarian follicle in the stage prior to follicle selection, characterized by continued growth but not yet exhibiting the preferential responsiveness to gonadotropins that distinguishes the dominant follicle. https://doi.org/10.1093/oxfordjournals.humrep.a136365|https://purl.org/ccf/ASCTB-TEMP_pre-selection-antral-follicle|PMID:16928805|PMID:11157797 UBERON:0000037 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Ovarian_follicle
http://purl.obolibrary.org/obo/UBERON_9900038 pre-selection antral follicle A tertiary ovarian follicle in the stage prior to follicle selection, characterized by continued growth but not yet exhibiting the preferential responsiveness to gonadotropins that distinguishes the dominant follicle. https://purl.org/ccf/ASCTB-TEMP_pre-selection-antral-follicle|PMID:16928805|PMID:11157797 UBERON:0000037 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Ovarian_follicle
http://purl.obolibrary.org/obo/UBERON_9900039 preantral follicle A maturing ovarian follicle with multiple layers of granulosa cells that has not yet developed an antral cavity. https://purl.org/ccf/ASCTB-TEMP_preantral-follicle|PMID:42460665|PMID:42447034 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 FMA:18637

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL: preantral follicle (UBERON_9900039) has the same problem as antral follicle above: no is_a/part_of, and it duplicates existing UBERON:0000036 ("secondary ovarian follicle"), which already has synonym: "preantral follicle" EXACT [GO:0001546] and xref: FMA:18637 — matching this row's own xref. candidates.tsv flags it as a possible_match but it wasn't excluded, and it's unused as a parent anywhere else in the template.

Recommendation: drop this row; resolve as a match to UBERON:0000036.

Comment on lines +27 to +28
http://purl.obolibrary.org/obo/UBERON_9900037 pre-selection antral follicle A tertiary ovarian follicle in the stage prior to follicle selection, characterized by continued growth but not yet exhibiting the preferential responsiveness to gonadotropins that distinguishes the dominant follicle. https://doi.org/10.1093/oxfordjournals.humrep.a136365|https://purl.org/ccf/ASCTB-TEMP_pre-selection-antral-follicle|PMID:16928805|PMID:11157797 UBERON:0000037 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Ovarian_follicle
http://purl.obolibrary.org/obo/UBERON_9900038 pre-selection antral follicle A tertiary ovarian follicle in the stage prior to follicle selection, characterized by continued growth but not yet exhibiting the preferential responsiveness to gonadotropins that distinguishes the dominant follicle. https://purl.org/ccf/ASCTB-TEMP_pre-selection-antral-follicle|PMID:16928805|PMID:11157797 UBERON:0000037 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Ovarian_follicle

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL: Duplicate pre-selection antral follicle row — two different new IDs (UBERON_9900037, UBERON_9900038) mint two ontology classes for the identical label/definition/parent (is_a UBERON:0000037). This traces back to a duplicate source row in bulk_ntr_workflow/source_data/ovary-other.csv (rows 38–39: one with a DOI reference, one without) that wasn't deduped.

Recommendation: dedupe to a single row (keep the one with the reference, line 27, which also carries the DOI in def_xref).

http://purl.obolibrary.org/obo/UBERON_9900041 transitional primary ovarian follicle A primary ovarian follicle in an intermediate stage of development, characterized by granulosa cells transitioning from flattened to cuboidal morphology, representing the developmental transition from primordial to fully established primary follicle. https://doi.org/10.1093/oxfordjournals.humrep.a136365|https://doi.org/10.1210/er.2018-00085|https://purl.org/ccf/ASCTB-TEMP_transitional-primary-ovarian-follicle|PMID:39549739|PMID:10963874 UBERON:0000035 UBERON:0003981 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606
http://purl.obolibrary.org/obo/UBERON_9900042 transitional primordial ovarian follicle A primordial ovarian follicle in an early or transitional stage of development, representing the initial activation of dormant primordial follicles toward primary follicle formation. https://doi.org/10.1093/oxfordjournals.humrep.a136365|https://doi.org/10.1210/er.2018-00085|https://purl.org/ccf/ASCTB-TEMP_transitional-primordial-ovarian-follicle|PMID:39549739|PMID:10963874 UBERON:0003981 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606
http://purl.obolibrary.org/obo/UBERON_9900043 pancreatic extracellular matrix An acellular anatomical structure that consists of a network of extracellular macromolecules and minerals, including collagen, enzymes, and glycoproteins, that provides structural and biochemical support to pancreatic cells. https://doi.org/10.48539/HBM336.TBNP.923|https://purl.org/ccf/ASCTB-TEMP_extracellular-matrix|PMID:42466389|PMID:41129097 UBERON:0000476 UBERON:0001264 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Extracellular_matrix
http://purl.obolibrary.org/obo/UBERON_9900044 small intestine connective tissue A connective tissue that forms the structural framework and support of the small intestine, comprising the lamina propria within the mucosa, the submucosa layer containing blood vessels and nerves, the serosa covering the outer surface, and the mesentery providing vascular support. PMID: 20126587|PMID: 3310649|https://purl.org/ccf/ASCTB-TEMP_connective-tissue UBERON:0002384 UBERON:0002108 http://purl.obolibrary.org/obo/uberon/core#added_by_HRA 2026-07-23T00:00:00Z https://orcid.org/0000-0002-7073-9172 http://purl.obolibrary.org/obo/NCBITaxon_9606 Wikipedia:Small_intestine

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 IMPORTANT: Malformed PMID CURIEs in def_xref for small intestine connective tissue (UBERON_9900044):

PMID: 20126587|PMID: 3310649|https://purl.org/ccf/ASCTB-TEMP_connective-tissue

Note the space after the colon — every other xref in this file uses PMID:NNNNNNN with no space. This risks being mis-parsed by ROBOT/OBO tooling.

Recommendation: normalize to PMID:20126587|PMID:3310649.

@ai4c-reviewer ai4c-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review checklist

  • Hierarchy and parents are consistent
  • Definitions and supporting references look adequate
  • Obsolete or replacement handling is safe (N/A — no obsoletions in this PR)
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

Summary

This PR adds only the Stage 1–4 intermediate artifacts of the bulk NTR workflow (src/templates/hra-ovary-other.template.tsv + its -reports/ CSVs/TSVs and the source_data/ovary-other.csv input). It doesn't touch src/ontology/uberon-edit.obo yet, but these files are exactly what a future Stage 5/merge step would check in verbatim, so defects here should be fixed now.

The diff is unchanged since the prior review pass, and I've re-verified each finding directly against src/ontology/uberon-edit.obo — all three CRITICAL issues and the IMPORTANT formatting issue below are confirmed and still present. See inline comments for details:

🔴 CRITICAL

  1. antral follicle (UBERON_9900001) — no is_a/part_of, and duplicates existing UBERON:0000037 "tertiary ovarian follicle" (confirmed: same xref: FMA:18641, existing synonym: "antral follicle" BROAD). Unused by its intended children, which already is_a UBERON:0000037 directly.
  2. preantral follicle (UBERON_9900039) — same issue: no is_a/part_of, duplicates existing UBERON:0000036 "secondary ovarian follicle" (confirmed: same xref: FMA:18637, existing synonym: "preantral follicle" EXACT [GO:0001546]).
  3. Duplicate pre-selection antral follicle row — two different new UBERON IDs (UBERON_9900037, UBERON_9900038) minted for the identical label/definition/parent, traced to a duplicate row in source_data/ovary-other.csv (rows 38–39).

🟡 IMPORTANT
4. Malformed PMID CURIEs in def_xref for small intestine connective tissue ("PMID: 20126587" with a stray space, inconsistent with the rest of the file).

Everything else checked out well: name corrections, exclusion of pathological/out-of-scope terms, and the is_a/part_of genus classes spot-checked are anatomically appropriate. No .github/.claude files are touched, so no workflow/auth regressions.

View job run · branch add-hra-ovary-other-ntr

@dosumis

dosumis commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

#gogoeditdiff

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants