Skip to content

Add HRA eye NTR template: inner/outer cortex of lens#3713

Open
zhengj2007 wants to merge 1 commit into
masterfrom
hra-eye-ntr
Open

Add HRA eye NTR template: inner/outer cortex of lens#3713
zhengj2007 wants to merge 1 commit into
masterfrom
hra-eye-ntr

Conversation

@zhengj2007
Copy link
Copy Markdown
Collaborator

Generated via bulk_ntr_workflow from bulk_ntr_workflow/eye.csv (HRA ASCTB unmapped terms, eye table).

New terms:

  • UBERON:9900001 inner cortex of lens (part_of UBERON:0000389 lens cortex)
  • UBERON:9900002 outer cortex of lens (part_of UBERON:0000389 lens cortex)

Both classified as is_a UBERON:0034944 (zone of organ), following the pattern of lens nucleus (UBERON:0000390). Definitions reference PMID:10550792 and PMID:20171212.

Source labels 'Inner cortex' / 'Outer cortex' were renamed for disambiguation (see src/templates/hra-eye-reports/name_corrections.tsv); curator may add the originals as narrow synonyms.

Stage 5 registered hra_eye.owl as a template-driven component in uberon-odk.yaml and added the corresponding import to uberon-edit.obo. The empty groups template was removed (no group terms in this batch).

Note: 'sh run.sh make update_repo' was not run (Docker unavailable); component OWL will be generated on next ODK build.

Generated via bulk_ntr_workflow from bulk_ntr_workflow/eye.csv (HRA ASCTB
unmapped terms, eye table).

New terms:
- UBERON:9900001 inner cortex of lens (part_of UBERON:0000389 lens cortex)
- UBERON:9900002 outer cortex of lens (part_of UBERON:0000389 lens cortex)

Both classified as is_a UBERON:0034944 (zone of organ), following the
pattern of lens nucleus (UBERON:0000390). Definitions reference
PMID:10550792 and PMID:20171212.

Source labels 'Inner cortex' / 'Outer cortex' were renamed for disambiguation
(see src/templates/hra-eye-reports/name_corrections.tsv); curator may add
the originals as narrow synonyms.

Stage 5 registered hra_eye.owl as a template-driven component in
uberon-odk.yaml and added the corresponding import to uberon-edit.obo.
The empty groups template was removed (no group terms in this batch).

Note: 'sh run.sh make update_repo' was not run (Docker unavailable);
component OWL will be generated on next ODK build.

Signed-off-by: dragon-ai-agent <dragon-ai-agent@users.noreply.github.com>
@zhengj2007 zhengj2007 requested a review from matentzn as a code owner May 25, 2026 14:24
@ai4c-agent
Copy link
Copy Markdown

ai4c-agent Bot commented May 25, 2026

Claude finished @zhengj2007's task in 6m 5s —— View job


PR Review: Add HRA eye NTR template: inner/outer cortex of lens

Review checklist:

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

Tasks:

  • Gather initial context
  • Read template and definition files
  • Check parent terms in ontology
  • Verify PMIDs (partial — EuropePMC permissions unavailable)
  • Review ODK config changes
  • Post review findings

Overview

This PR adds two new terms — inner cortex of lens and outer cortex of lens — as a ROBOT-template-driven HRA component. The anatomical placement and ODK wiring look correct. I found one important documentation discrepancy and a few suggestions.


🔵 SUGGESTION — PR description states wrong IDs

File: PR description / bulk_ntr_workflow/outputs/definitions/input/uberon_0000389.json

The PR description says:

UBERON:9900001 inner cortex of lens … UBERON:9900002 outer cortex of lens

But the actual final template src/templates/hra-eye.template.tsv assigns:

  • UBERON:8930000 → inner cortex of lens
  • UBERON:8930001 → outer cortex of lens

The 99xxxxx IDs are placeholder NTR IDs from the initial workflow stage; the final assigned IDs are 8930000/8930001. Checking the ontology, the 893xxxx range is currently unoccupied (the adjacent block UBERON:891xxxx ends at UBERON:8910024), so there is no collision. However, the PR description should be corrected to reflect the actual assigned IDs, and it is worth confirming that the 8930xxx block has been formally allocated (as was presumably done for the 1200xxx block used by hra-skeleton, and 8910xxx by earlier terms).


🔵 SUGGESTION — ASCTB-TEMP IRIs appear in def_xref rather than xref

File: src/templates/hra-eye.template.tsv

Both rows include https://purl.org/ccf/ASCTB-TEMP_inner-cortex and https://purl.org/ccf/ASCTB-TEMP_outer-cortex as the first entry in the def_xref column (which generates OBO def: "..." [ASCTB-TEMP..., PMID:..., PMID:...]). Per the bulk_ntr_workflow QC checklist:

ASCTB-TEMP placeholder IRIs do not count as references.

The PMIDs are present alongside these IRIs so the definitions are adequately backed by literature, but ASCTB-TEMP source IRIs belong in the xref column (general cross-references) rather than def_xref (definition evidence references). This is a recurring pattern in HRA template outputs and could be cleaned up here.


🔵 SUGGESTION — Narrow synonyms for original HRA labels not yet added

File: src/templates/hra-eye-reports/name_corrections.tsv

The name_corrections file (and the PR description) both state that Inner cortex and Outer cortex should be kept as narrow synonyms. The template has no synonym column, so this is deferred. Given that these are the live HRA ASCTB-B labels used by downstream consumers, adding a synonym column would improve findability. The PR description acknowledges this as a follow-up for curators.


🔵 SUGGESTION — Inner cortex definition uses the outer cortex as its primary spatial anchor (circular)

File: src/templates/hra-eye.template.tsv

  • Inner cortex: "located internal to the outer cortex"
  • Outer cortex: "located external to the inner cortex"

Both definitions depend on each other. Consider grounding at least one in an absolute anatomical landmark — e.g., inner cortex as "the zone of the lens cortex immediately surrounding the lens nucleus", which is both non-circular and consistent with the established surrounded_by relationship on lens nucleus (UBERON:0000390).


Hierarchy validation

Claim Check
inner/outer cortex of lens is_a zone of organ (UBERON:0034944) ✅ Consistent — lens nucleus uses the same genus
inner/outer cortex of lens part_of lens cortex (UBERON:0000389) ✅ Anatomically sound; no ID collision; part_of chain reaches lens correctly
No existing UBERON term for these structures ✅ candidates.tsv is empty; confirmed_matches = [] in definition JSON

ODK config

The uberon-odk.yaml addition follows the exact same pattern as hra_skeleton.owl:

- filename: hra_eye.owl
  use_template: true
  templates:
    - hra-eye.template.tsv

The uberon-edit.obo import line is in alphabetical order among other HRA component imports. Both changes look correct.

Note on PMID verification

Could not verify PMID:10550792 and PMID:20171212 directly (EuropePMC tool requires permission grant). The curator should confirm these PMIDs describe inner/outer cortex structure of the crystalline lens. The workflow agent reports they were found and are relevant, which is consistent with the anatomically detailed definitions.


Merge recommendation

Approve with suggestions. No critical issues. The main action item is to correct the PR description (actual IDs are UBERON:8930000/8930001, not 9900001/9900002) and confirm the 8930xxx range is formally allocated. The ASCTB-TEMP-in-def_xref and synonym gaps are minor best-practice issues that can be addressed in a follow-up.

Copy link
Copy Markdown

@ai4c-agent ai4c-agent Bot left a comment

Choose a reason for hiding this comment

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

Approve with suggestions. No critical issues found.

Hierarchy: inner/outer cortex of lens is_a zone of organ (UBERON:0034944), part_of lens cortex (UBERON:0000389) — anatomically sound and consistent with the lens nucleus design pattern.

Definitions: Aristotelian definitions with PMID references are adequate. (PMIDs could not be verified via EuropePMC in this run — curator should confirm PMID:10550792 and PMID:20171212 describe lens cortex inner/outer zones.)

ODK config: hra_eye.owl component registration in uberon-odk.yaml and the import line in uberon-edit.obo both follow established HRA precedent correctly.

Minor notes to address:

  • PR description cites UBERON:9900001/9900002 (placeholder NTR IDs) rather than the actual assigned IDs UBERON:8930000/8930001. Please update the description and confirm the 8930xxx block is formally allocated.
  • ASCTB-TEMP source IRIs appear in def_xref alongside PMIDs; these are better placed in the xref column.
  • Narrow synonyms 'Inner cortex' / 'Outer cortex' (per name_corrections.tsv) are deferred — acknowledged in PR body.
  • Inner/outer cortex definitions are circularly cross-referenced; grounding inner cortex on 'immediately surrounding the lens nucleus' would improve clarity.

Copy link
Copy Markdown
Member

@cmungall cmungall left a comment

Choose a reason for hiding this comment

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

Can someone document the workflow that is being used to add two terms?

I am not familiar with how HRA terms were added in the past but this is way too complex for two terms that follow standard DPs

@cmungall
Copy link
Copy Markdown
Member

@dragon-ai-agent please look deeper into the anatomy, current idiomatic modeling patterns in uberon, how we model spatial layers, how the proposed subdivision would relate to the capsule and the nucleus. Also show how this would relate to FMA terms.

Compare also to standard anatomical diagrams etc
https://lab.prd.vanderbilt.edu/msrc-schey-lab/wp-content/uploads/sites/16/2021/06/Human-Lens.png

Show (just in this PR comment, don't touch this actual PR) your proposed obo stanzas for these terms

@dragon-ai-agent
Copy link
Copy Markdown
Collaborator

🤖 Working on it...

Follow along: View workflow run

@dragon-ai-agent

@dragon-ai-agent
Copy link
Copy Markdown
Collaborator

Lens cortex zone subdivision: anatomical analysis and proposed modeling

This is an analysis-only comment — no changes are being made to this PR. The proposed stanzas below are for discussion; if accepted I would file them as a follow-up to refine what is already in this branch.

1. Anatomy: what the inner/outer cortex actually are

The human lens is an avascular, concentrically zoned, biconvex structure. Looking at the Vanderbilt Schey lab diagram you linked, the canonical onion-like topology from outside in is:

Zone Topology Notes
Capsule bounding layer; covers anterior + posterior acellular basement membrane; UBERON:0001804
Epithelium anterior surface only, immediately beneath capsule single layer of cuboidal cells; UBERON:0001803 / UBERON:0005614
Outer cortex concentric ring surrounding the inner cortex newly differentiated lens fibre cells added at the equator; nucleated near the bow region, then lose nuclei in the "remodelling zone" (Lim et al. 2009, PMID:19357350)
Inner cortex concentric ring between outer cortex and nucleus older, fully denucleated, more compacted fibre cells; lamellae still mostly intact
Nucleus central core most mature fibre cells, can be further subdivided into adult / juvenile / fetal / embryonic nuclei (Augusteyn 2010, PMID:20171212)

The cortex/nucleus boundary in life is a continuous gradient of cellular age, but it is reliably visible as an optical discontinuity by Scheimpflug/slit-lamp and is the standard partition used in MS imaging, AQP0/membrane-remodelling studies, and nutrient distribution studies (Yeum et al. 1999, PMID:10550792 explicitly compares "epithelium/outer cortex" vs "inner cortex/nucleus").

2. How UBERON currently models lens spatial layers

Existing pattern (today, on master):

lens of camera-type eye (UBERON:0000965)
├── capsule of lens (UBERON:0001804)
│     is_a: acellular anatomical structure
│     intersection_of: bounding_layer_of UBERON:0000965        ← the bounding-layer idiom
├── epithelium of lens (UBERON:0001803)
│     ├── lens anterior epithelium (UBERON:0005614)
│     │     intersection_of: adjacent_to capsule of lens
│     │     adjacent_to lens cortex
│     └── lens equatorial epithelium (UBERON:0005615)
├── lens cortex (UBERON:0000389)
│     intersection_of: tissue + surrounds lens nucleus         ← surrounds/surrounded_by pair
└── lens nucleus (UBERON:0000390)
      intersection_of: zone of organ + surrounded_by lens cortex

So the established UBERON idiom for the lens layers is the surrounds / surrounded_by pair plus bounding_layer_of for the capsule, with the innermost zone (lens nucleus) classified under zone of organ and the intermediate tissue (lens cortex) classified under tissue.

Comparable idiomatic patterns elsewhere in UBERON for concentric / inner-vs-outer subdivisions:

  • Kidney: cortex of kidney → outer cortex of kidney; outer medulla of kidney / inner medulla of kidney — both inner/outer medulla are is_a: organ part with part_of: renal medulla; no explicit surrounds axiom, just part_of of the parent.
  • Retina: outer nuclear layer of retina / inner nuclear layer of retina; outer plexiform layer of retina / inner plexiform layer of retina — all use inner/outer X of retina as the primary label, carry Latin (stratum nucleare externum/internum) and external/internal synonyms, and are is_a: organ part with part_of: the retina layer.

The existing lens-specific idiom is therefore richer than what is currently proposed in this PR — it uses both surrounds/surrounded_by and bounding_layer_of, not just part_of. The new cortex zones should ideally participate in that idiom.

3. How this maps to FMA

FMA has all of this already, with a fuller mereological/topological decomposition (queried via OLS4 on FMA):

FMA ID FMA label Corresponds to
FMA:58970 Cortex of lens UBERON:0000389 lens cortex (already xref'd)
FMA:58971 Nucleus of lens UBERON:0000390 lens nucleus (already xref'd)
FMA:58881 Capsule of lens UBERON:0001804 (already xref'd)
FMA:280210 Zone of cortex of lens grouping class for the cortex zones — currently unrepresented in UBERON
FMA:280212 Superficial cortex of lens ≈ proposed "outer cortex of lens"
FMA:280216 Deep cortex of lens ≈ proposed "inner cortex of lens"
FMA:280240 Superficial cortex proper of lens a further subdivision of FMA:280212 (excludes the most superficial sub-zone)
FMA:280361 / 280385 Cortex of anterior / posterior lens orthogonal A/P partition, not used in HRA
FMA:280275 / 280281 Deep cortex of anterior / posterior lens combinations
FMA:280403 / 280419 Superficial cortex of anterior / posterior lens combinations

Two important consequences of the FMA picture:

  1. FMA's standard names are "superficial cortex of lens" and "deep cortex of lens" (Latin: cortex superficialis, cortex profundus) — these are the formal anatomical terms. HRA's "Inner/Outer cortex" are clinical/imaging-community names for the same things. The right thing to do is map them, not invent parallel terminology — i.e. include FMA xrefs and FMA's terminology as exact synonyms.
  2. FMA distinguishes the grouping class (FMA:280210 "Zone of cortex of lens") from the two specific zones — useful as a disjoint_union_over partition if we ever need to assert exhaustiveness.

4. Issues with the current PR as drafted

Cross-referenced against the analysis above, the current template rows have:

  1. Circular text definitions — both definitions reference each other, with no anchor in the capsule, equator, or nucleus. The diagram and FMA both ground these spatially in the nucleus and the epithelium/equator.
  2. No FMA xref, despite FMA having exact equivalents (FMA:280212, FMA:280216). This breaks UBERON's treat-xrefs-as-reverse-genus-differentia: FMA … declaration in the header.
  3. No surrounds / surrounded_by axioms — the rest of the lens model uses these. Inner cortex surrounds the nucleus; outer cortex surrounds the inner cortex.
  4. ASCTB-TEMP IRI in def_xref — already flagged in the prior review.
  5. No "superficial"/"deep" synonyms — these are the standard anatomical names and the FMA labels.
  6. No dc-contributor / dcterms-date as required by CLAUDE.md (the ROBOT template uses Contributor and Date columns which generate these, so this is fine in the template-driven world, but worth confirming the generated OBO carries them).
  7. organ_slim / pheno_slim not assigned — comparable subdivisions (e.g. outer/inner medulla of kidney, outer nuclear layer of retina) carry pheno_slim. This is a small consistency point.

5. Proposed OBO stanzas

These are what I would propose the generated OBO should look like. They retain the HRA inner/outer cortex of lens primary labels (which downstream HRA consumers need), but add FMA xrefs, the superficial/deep synonyms, and the spatial axioms that match the rest of the lens model.

[Term]
id: UBERON:8930000
name: inner cortex of lens
def: "A zone of the lens cortex that lies immediately external to the lens nucleus and internal to the outer cortex of lens. It is composed of older, fully denucleated lens fibre cells whose lamellae remain largely intact but which are more compacted than those of the outer cortex." [PMID:10550792, PMID:20171212]
comment: Equivalent to the 'deep cortex of lens' (cortex profundus) in FMA. The boundary with the lens nucleus is a continuous gradient of fibre-cell age and compaction but is reliably visible as an optical discontinuity on Scheimpflug/slit-lamp imaging.
subset: added_by_HRA
subset: human_reference_atlas
subset: pheno_slim
synonym: "deep cortex of lens" EXACT [FMA:280216]
synonym: "cortex profundus lentis" EXACT OMO:0003011 [FMA:280216]
synonym: "Inner cortex" NARROW [ASCTB-TEMP:inner-cortex]
xref: FMA:280216
xref: https://purl.org/ccf/ASCTB-TEMP_inner-cortex
intersection_of: UBERON:0034944 ! zone of organ
intersection_of: part_of UBERON:0000389 ! lens cortex
intersection_of: surrounds UBERON:0000390 ! lens nucleus
relationship: part_of UBERON:0000389 ! lens cortex
relationship: surrounds UBERON:0000390 ! lens nucleus
relationship: surrounded_by UBERON:8930001 ! outer cortex of lens
relationship: composed_primarily_of CL:0011004 ! lens fiber cell
relationship: present_in_taxon NCBITaxon:9606 ! Homo sapiens
relationship: dc-contributor https://orcid.org/0000-0002-2999-0103 ! Bruce W. Herr II
property_value: dcterms-date "2026-05-25T00:00:00Z" xsd:dateTime
created_by: dragon-ai-agent

[Term]
id: UBERON:8930001
name: outer cortex of lens
def: "A zone of the lens cortex that lies immediately beneath the lens capsule and epithelium and surrounds the inner cortex of lens. It is composed of the most recently differentiated lens fibre cells, added from the lens epithelium at the equator; it contains the remodelling and transition zones in which fibre cells lose their nuclei." [PMID:10550792, PMID:19357350]
comment: Equivalent to the 'superficial cortex of lens' (cortex superficialis) in FMA. The outer cortex is the site of ongoing lens fibre cell maturation, including the remodelling zone (RZ) and transition zone (TZ) described by Lim et al. 2009 (PMID:19357350).
subset: added_by_HRA
subset: human_reference_atlas
subset: pheno_slim
synonym: "superficial cortex of lens" EXACT [FMA:280212]
synonym: "cortex superficialis lentis" EXACT OMO:0003011 [FMA:280212]
synonym: "Outer cortex" NARROW [ASCTB-TEMP:outer-cortex]
xref: FMA:280212
xref: https://purl.org/ccf/ASCTB-TEMP_outer-cortex
intersection_of: UBERON:0034944 ! zone of organ
intersection_of: part_of UBERON:0000389 ! lens cortex
intersection_of: surrounds UBERON:8930000 ! inner cortex of lens
relationship: part_of UBERON:0000389 ! lens cortex
relationship: surrounds UBERON:8930000 ! inner cortex of lens
relationship: adjacent_to UBERON:0001804 ! capsule of lens
relationship: adjacent_to UBERON:0005614 ! lens anterior epithelium
relationship: composed_primarily_of CL:0011004 ! lens fiber cell
relationship: present_in_taxon NCBITaxon:9606 ! Homo sapiens
relationship: dc-contributor https://orcid.org/0000-0002-2999-0103 ! Bruce W. Herr II
property_value: dcterms-date "2026-05-25T00:00:00Z" xsd:dateTime
created_by: dragon-ai-agent

6. What this buys us

  • Concentric topology now reasonablecapsule surrounds outer cortex surrounds inner cortex surrounds nucleus, mirroring the diagram exactly.
  • FMA equivalence is declaredFMA:280212 / FMA:280216 xrefs + treat-xrefs-as-reverse-genus-differentia: FMA part_of NCBITaxon:9606 gives the right cross-species semantics for free, and lines us up with the formal anatomical names.
  • Definitions are no longer circular — outer cortex is grounded on capsule/epithelium and inner cortex; inner cortex is grounded on nucleus and outer cortex.
  • composed_primarily_of CL:0011004 matches what lens fiber (UBERON:0002444) already asserts and what the Vanderbilt diagram is literally drawing (the elongated fibre cells in concentric layers).

7. Open question

FMA also has a finer partition (Superficial cortex proper of lens FMA:280240; deep/superficial × anterior/posterior). HRA's two-zone model collapses all of this. That's fine for now — the two-zone model is what is in actual experimental use — but a single-line comment on each term acknowledging that further subdivisions exist would be honest. I've included that in the comment: tag above.

If you'd like, I can open a follow-up PR with these refinements on top of this branch once it's merged, or fold them in directly here if you'd prefer to ship one cleaner PR.


🤖 Generated by @dragon-ai-agent

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.

3 participants