Skip to content

Add HRA small-intestine NTR batch outputs and review reports#3720

Open
zhengj2007 wants to merge 2 commits into
masterfrom
add-hra-small_intestine-ntr
Open

Add HRA small-intestine NTR batch outputs and review reports#3720
zhengj2007 wants to merge 2 commits into
masterfrom
add-hra-small_intestine-ntr

Conversation

@zhengj2007

Copy link
Copy Markdown
Collaborator

Generated via bulk_ntr_workflow from source_data/small-intestine.csv.

Pipeline completed through Stage 4:

  • 13 input rows processed
  • 0 new terms remained in final template after merge filtering
  • 10 confirmed existing UBERON matches excluded
  • 2 out-of-scope terms excluded
  • 2 manual-curation entries flagged
  • 4 name corrections reported

Adds the small-intestine source CSV, generated template stubs, and report TSVs (candidates, errors, input, manual_curation, name_corrections, out_of_scope).

Generated via bulk_ntr_workflow from source_data/small-intestine.csv.

Pipeline completed through Stage 4:
- 13 input rows processed
- 0 new terms remained in final template after merge filtering
- 10 confirmed existing UBERON matches excluded
- 2 out-of-scope terms excluded
- 2 manual-curation entries flagged
- 4 name corrections reported

Adds the small-intestine source CSV, generated template stubs, and report TSVs
(candidates, errors, input, manual_curation, name_corrections, out_of_scope).

Signed-off-by: dragon-ai-agent <dragon-ai-agent@users.noreply.github.com>
@ai4c-agent

ai4c-agent Bot commented May 26, 2026

Copy link
Copy Markdown

Claude finished @zhengj2007's task in 4m 35s —— View job


PR Review: Add HRA small-intestine NTR batch outputs and review reports

  • Gather context and read PR description
  • Review changed files (CSV, templates, reports)
  • Check hierarchy and parent consistency
  • Check definitions, xrefs, and references
  • Verify OBO/ODK conventions
  • Post final review summary

Review Checklist

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

Summary

This is a well-executed pipeline-output PR. All 13 HRA ASCTB small-intestine input terms have been processed; no new UBERON terms are introduced because every term either already exists, is out-of-scope, or requires manual curation before a new ID can be assigned. The report files are detailed and provide actionable curator guidance.

UBERON ID verification (spot-checked via obo-grep.pl):

Source label Candidates UBERON Actual name in ontology Status
Epithelium UBERON:0013636 epithelium of intestinal villus ✅ valid
muscularis mucosa UBERON:0006676 muscularis mucosa ✅ exact
muscularis externa UBERON:0006660 muscular coat ✅ valid synonym
muscularis propria UBERON:0006660 muscular coat ✅ valid synonym
submucosal plexus of Meissner UBERON:0005304 submucous nerve plexus ✅ valid (eponym)
myenteric plexus of Auerbach UBERON:0002439 myenteric nerve plexus ✅ valid (eponym)
mucosa UBERON:0000344 mucosa ✅ exact
submucosa UBERON:0000009 submucosa ✅ exact
serosa UBERON:0000042 serous membrane ✅ valid synonym
connective tissue UBERON:0002384 connective tissue ✅ exact

Issues Found

🟡 IMPORTANT: Stage 5 (ODK registration) not completed

hra-small-intestine.template.tsv and hra-small-intestine-groups.template.tsv are not registered in src/ontology/uberon-odk.yaml. The existing hra-skeleton template is registered (line 177). Since both templates are currently empty (header-only, no new terms), omitting registration is reasonable for now — but when terms are eventually added via manual curation, registration will be required before the ODK build will include them. This should be done in the follow-up PR that adds the actual terms.

🟡 IMPORTANT: "muscularis propria" and "muscularis externa" both map to UBERON:0006660

Two distinct source terms map to the same UBERON ID (muscular coat). While anatomically valid — these are accepted synonyms — the candidates.tsv report doesn't explicitly flag the duplication. A curator reviewing the report could mistake this for a pipeline error. Consider adding a note such as "muscularis propria is a synonym for muscularis externa; both map to UBERON:0006660 (muscular coat)".

🔵 SUGGESTION: Empty table column in input.tsv

All 13 rows have an empty table column in input.tsv despite the source CSV having "small-intestine" in the tables column. This looks like a column-name mismatch (tables in CSV → table in report). Minor pipeline issue — does not affect the template output.

🔵 SUGGESTION: UBERON canonical labels not shown in candidates.tsv

For matches where the UBERON primary label differs from the source label (e.g., "serosa" → "serous membrane", "submucosal plexus of Meissner" → "submucous nerve plexus"), the candidates report shows only the UBERON ID without the canonical label. Including the UBERON label in a uberon_label column would help curators verify matches without additional lookups.


Manual Curation Quality

The two manual-curation entries are well-documented:

  • "circular/longitudinal muscle" — correctly identified as non-standard notation; recommends either splitting into separate NTRs for the circular/longitudinal layers (referencing UBERON:0012368, UBERON:0012369) or mapping to existing UBERON:0006660.
  • "Lamina propria/Gut associated lymphoid tissue (GALT)" — correctly identifies the slash notation as conflating two distinct structures (UBERON:0000030, UBERON:0001962) and proposes either splitting into two NTRs or creating "lamina propria of intestinal villus" with a proper intersection_of axiom.

Both suggestions follow UBERON design patterns appropriately.


Recommendation

This PR is ready to merge. The report files accurately document the pipeline run, the UBERON ID mappings are correct, and the flagged items provide clear curator guidance. The 🟡 issues above are follow-up items, not blockers: ODK registration belongs in the term-addition PR, and the duplicate-mapping note is documentation polish.

ai4c-agent[bot]
ai4c-agent Bot previously approved these changes May 26, 2026

@ai4c-agent ai4c-agent 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.

Well-executed pipeline output PR. All 13 HRA ASCTB small-intestine input terms correctly processed — 10 confirmed matches verified against uberon-edit.obo, 2 out-of-scope terms properly flagged with detailed anatomical reasoning, and 2 manual-curation entries well-documented with specific UBERON term references and actionable suggestions. No new terms added; the templates are empty header stubs pending manual curation follow-up. Two 🟡 notes for follow-up PRs: (1) ODK registration of the new templates should happen when terms are eventually added; (2) candidates.tsv could note that 'muscularis propria' and 'muscularis externa' are synonyms both mapping to UBERON:0006660 to avoid curator confusion.

@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.

Reports are review artifacts, not ODK templates, and should not live under
src/templates/. Relocated to bulk_ntr_workflow/outputs/ to match the canonical
layout used by the muscular branch (PR #3700).

Signed-off-by: dragon-ai-agent
@cellsemantic

Copy link
Copy Markdown

Reports relocated. ⚠️ The leaf template (hra-small-intestine.template.tsv) is empty — 0 new terms. This PR currently adds only reports, which don't belong in the ontology. Needs a decision: are any terms actually intended here, or should this PR be closed?


Automated update (@cellsemantic / dragon-ai-agent, for @dosumis). Reports were relocated out of src/templates/bulk_ntr_workflow/outputs/<name>-reports/ to match the canonical layout (PR #3700). Note: the corrected reports-location docs currently live only on add-hra-muscular-ntr (#3700), not master. Batch-size policy for this HRA set: ≥20 new terms → ODK-register; <20 → hand-edit into uberon-edit.obo.

@ai4c-agent

ai4c-agent Bot commented Jul 9, 2026

Copy link
Copy Markdown

Claude finished @dosumis's task in 3m 30s —— View job


PR Review: Add HRA small-intestine NTR batch outputs and review reports

Task list

  • Gather context and read latest comments (cellsemantic's relocation note + decision question)
  • Check current diff vs base commit (post-relocation state, 9 files / +57)
  • Verify no new terms/logical axioms are actually introduced
  • Answer the "close vs keep" decision question
  • Post final review + set PR review status

Review Checklist

  • Hierarchy and parents are consistent (N/A — no new logical axioms; templates are header-only)
  • Definitions and supporting references look adequate (N/A — no new terms)
  • Obsolete or replacement handling is safe — N/A, but see 🟡 report-consistency issue below
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

Answering the open question (cellsemantic, 2026-07-09)

Confirmed against the diff (git diff 4f80568...HEAD): src/templates/hra-small-intestine.template.tsv and -groups.template.tsv are header-only, 0 data rows. All 13 input rows resolved to one of: confirmed existing UBERON match, out-of-scope, or manual-curation — none produced a genuinely new term. Per the batch-size policy stated in this thread (<20 new terms → hand-edit into uberon-edit.obo; ≥20 → ODK-register), there is nothing to hand-edit here, because the count of actual new terms is zero.

Given that, this PR is legitimately a "no-op for the ontology, audit-trail only" PR — it doesn't touch uberon-edit.obo or any component the build consumes (empty ROBOT templates with no rows produce no axioms, and they're correctly not registered in uberon-odk.yaml). Recommendation: don't close it — merge it as a record of the pipeline run (matches precedent of other bulk_ntr_workflow report-only PRs), then handle the 2 manual_curation.tsv items (circular/longitudinal muscle, lamina propria/GALT split) as their own follow-up issue/PR with real term additions. Closing would just discard the curation work already done in the reports.


Issues Found

🟡 IMPORTANT: Two source terms are double-counted across mutually-exclusive report files, breaking the documented QC invariant

Per bulk_ntr_workflow/CLAUDE.md: "Row counts: input − confirmed_match − out_of_scope − manual_curation = leaf + group". Here: 13 − 10 − 2 − 2 = −1, not 0 (leaf+group=0). The mismatch traces to:

  • muscularis mucosa appears as confirmed_match in candidates.tsv:3 and as a rejected/misplaced entry in out_of_scope.tsv:2.
  • circular/longitudinal muscle appears as possible_match in candidates.tsv:12 and in manual_curation.tsv:3 with overlapping-but-not-identical guidance.

Neither case is anatomically wrong on its own, but the reports are supposed to be a strict partition of the 13 input rows (that's what the PR description's "10 + 2 + 2" tally assumes, and what a curator scanning file-by-file would assume). A curator working strictly from manual_curation.tsv could act on circular/longitudinal muscle without realizing candidates.tsv already resolved it as possible_match: UBERON:0006660, or vice versa. Recommend either de-duplicating (each label should land in exactly one report) or, if intentionally cross-referenced, adding an explicit note in each file pointing to the other ("see also out_of_scope.tsv" / "see also candidates.tsv").

🔵 SUGGESTION (carried over, still unaddressed): empty table column in input.tsv

All 13 rows still have an empty table column despite small-intestine.csv having tables=small-intestine. Looks like a tables(CSV) → table(report) column-name mismatch in the generator script. Doesn't affect template output, but makes input.tsv less useful standalone.

🔵 SUGGESTION (carried over): add a uberon_label column to candidates.tsv

Several matches have a UBERON canonical label that differs from the source label (serosaserous membrane, submucosal plexus of Meissnersubmucous nerve plexus). Showing the canonical label alongside the ID would save curators a lookup.

🔵 SUGGESTION (resolved from prior review): ODK registration

Correctly deferred — templates are empty, so no registration is needed yet; this is fine as-is until real terms are added in a follow-up.


Recommendation

No ontology risk (no axioms, no obsoletions, no ODK/build regression) — this should not be closed, it's useful provenance for a completed pipeline run with genuinely zero new terms. Requesting changes only for the 🟡 report double-counting issue, since it undermines the reliability of the audit trail that is this PR's entire content. Once that's cleaned up (or explicitly cross-referenced), this is mergeable.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor
This PR modifies some logical definitions. See details below:

Number of classes with modified logical definitions: 1

gABAergic system

No changes in inferred subclasses.

@ai4c-agent ai4c-agent 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 (N/A — no new logical axioms; templates are header-only)
  • Definitions and supporting references look adequate (N/A — no new terms)
  • Obsolete or replacement handling is safe — N/A, but see report-consistency issue below
  • OBO and ODK conventions appear preserved
  • No obvious CI, auth, or workflow regression

Re: "should this PR be closed?" — No. git diff 4f80568...HEAD confirms the leaf/groups templates are header-only (0 new terms), and per the stated batch-size policy (<20 new terms → hand-edit) there's nothing to hand-edit since the true new-term count is zero. This PR is a legitimate audit-trail-only record of a completed pipeline run and touches nothing the build consumes (no uberon-edit.obo changes, templates correctly unregistered in uberon-odk.yaml).

🟡 IMPORTANT: muscularis mucosa and circular/longitudinal muscle are each double-counted across mutually-exclusive report files (candidates.tsv vs out_of_scope.tsv; candidates.tsv vs manual_curation.tsv), which breaks the QC invariant documented in bulk_ntr_workflow/CLAUDE.md ("input − confirmed_match − out_of_scope − manual_curation = leaf + group": 13−10−2−2 = −1, not 0). A curator working from only one report file could act inconsistently. Please de-duplicate the categorization or add explicit cross-references between the files.

🔵 SUGGESTION (carried over, unaddressed): input.tsv's table column is empty for all 13 rows despite small-intestine.csv having tables=small-intestine — looks like a column-name mismatch in the generator.

🔵 SUGGESTION (carried over): add a uberon_label column to candidates.tsv for matches where the UBERON canonical label differs from the source label.

No ontology-level risk; requesting changes only to fix the report double-counting so this PR's audit trail is internally consistent before merge.

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