Skip to content

Add Gao-Her-DUF system - #1242

Merged
realmarcin merged 1 commit into
mainfrom
add-gao-her-duf-system
Sep 22, 2026
Merged

realmarcin merged 1 commit into
mainfrom
add-gao-her-duf-system

Conversation

@realmarcin

Copy link
Copy Markdown
Contributor

Summary

Adds traitmech:000361 for the Gao-Her-DUF phage-defense system as a GENOMICS / CLASS / PROPOSED TraitRecord.

The record interprets Gao_Her_DUF as a genome-level DefenseFinder Gao-family system possession trait and keeps the Gao_Her_DUF__DUF4297 and Gao_Her_DUF__HerA_DUF HMM profile rows as RELATED_SYNONYM provenance/evidence, not individual protein traits.

Identity and Evidence

  • label: Gao-Her-DUF system
  • identifier: traitmech:000361
  • parent: traitmech:000209 phage defense system
  • upstream placeholder: METPO:1031500 in proposals/metpo_traitmech_v238
  • primary DOI: DOI:10.1126/science.aba0372
  • PMID: PMID:32855333
  • pinned stable registry sources:
    • List_system_article.md at afb0e5a8b466be53586b13266f5d38d98c3ac268
    • DefenseFinder_rules.tsv at afb0e5a8b466be53586b13266f5d38d98c3ac268
    • Liste_hmm_system.md at afb0e5a8b466be53586b13266f5d38d98c3ac268

Curation

  • adds data/traits/genomics/gao_her_duf_system.yaml
  • adds history/records/gao_her_duf_system/2026-09-22T093443Z-codex-da0d31.yaml
  • adds scripts/add_gao_her_duf_system_trait.py
  • reserves METPO:1031500 in proposals/metpo_traitmech_v238
  • updates POST_444_CANONICAL_EXAMPLE_QUEUE
  • regenerates pages, the priority dashboard, discussion browser data, and graph/proposal audit reports

Validation

  • .venv/bin/linkml-validate -s src/traitmech/schema/traitmech.yaml --target-class TraitRecord data/traits/genomics/gao_her_duf_system.yaml
  • .venv/bin/python scripts/validate_strict.py data/traits/genomics/gao_her_duf_system.yaml
  • .venv/bin/python scripts/verify_metpo_proposal.py proposals/metpo_traitmech_v238
  • .venv/bin/python scripts/validate_history_links.py history/records/gao_her_duf_system
  • .venv/bin/python scripts/backfill_canonical_examples_444.py
  • .venv/bin/python scripts/render_trait_pages.py
  • .venv/bin/python scripts/trait_priority.py --dashboard --top 80
  • PYTHONPATH=/Users/marcin/Documents/VIMSS/ontology/KG-Hub/KG-Microbe/culturebotai-claw/src .venv/bin/python -m kg_microbe_discussions --config conf/discussions_config.yaml --output app/discussions
  • .venv/bin/python scripts/audit_graph_protein_taxa.py --fail-on gaps
  • .venv/bin/python scripts/ground_causal_nodes.py
  • .venv/bin/python scripts/audit_proposals.py
  • .venv/bin/python scripts/audit_evidence_snippets.py
  • .venv/bin/python scripts/audit_schema.py
  • .venv/bin/python scripts/audit_writers.py
  • .venv/bin/python scripts/verify_metpo_proposal.py --coverage
  • .venv/bin/python scripts/audit_causal_graphs.py
  • .venv/bin/python scripts/ground_causal_predicates.py
  • .venv/bin/python scripts/audit_biolink_curies.py
  • .venv/bin/python scripts/audit_predicate_domains.py --fail-on new
  • .venv/bin/python scripts/audit_discussions_data.py
  • .venv/bin/python scripts/audit_canonical_examples.py --no-resolve
  • .venv/bin/python scripts/check_biolink_coverage.py
  • .venv/bin/python scripts/audit_exact_synonyms.py --collisions-only
  • .venv/bin/python scripts/audit_unapplied_groundings.py
  • .venv/bin/python scripts/audit_discussion_anchors.py
  • .venv/bin/python scripts/pr_sanity.py
  • .venv/bin/python scripts/audit_justfile_paths.py
  • .venv/bin/python scripts/audit_qc_paths_coverage.py
  • .venv/bin/python scripts/run_trait_graph_audit.py --verify
  • .venv/bin/python scripts/check_sources.py
  • .venv/bin/python scripts/verify_snippets.py --delay 2 --record data/traits/genomics/gao_her_duf_system.yaml
  • .venv/bin/ruff check src scripts tests
  • .venv/bin/python -m pytest tests/test_readme_artifacts.py tests/test_trait_priority.py -v --tb=short
  • .venv/bin/python -m pytest -q
  • .venv/bin/python scripts/audit_history_records.py --base origin/main
  • git diff --check
  • git diff --cached --check

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

Approving. This is a faithful instance of the merged Gao-family pattern and I found no defects.

Checks that passed:

  • Identity. traitmech:000361 is unique across data/traits/ and continues the sequence after traitmech:000360 (Gao-TerY, #1241). METPO:1031500 and metpo_traitmech_v238 are unused elsewhere. Parent traitmech:000209 resolves to data/traits/genomics/phage_defense_system.yaml, label "phage defense system" — matches the node grounding.
  • Predicates. RO:0002326 = "contributes to" and rdfs:subClassOf = "is a" match mappings/predicate_grounding.tsv (both */* domain/range). METPO:2007700 "confers" is used with a BIOLOGICAL_PROCESS subject and a TRAIT object, both inside that row's gated type lists.
  • Graph structure. All three edges reference declared nodes, and all four nodes sit on the connected path gao_her_duf_locus → gao_2020_antiviral_cassette_defense → gao_her_duf_system_trait → phage_defense_system. Nothing orphaned or unreachable from the trait node.
  • Enums. RELATED_SYNONYM, NONMECHANISTIC, TRAIT, GENETIC_ELEMENT, BIOLOGICAL_PROCESS are all in traitmech.yaml; KNOWLEDGE_GAP is in mech_shared.yaml; CurationEvent.action is an unconstrained string.
  • Derived artifacts. README's 756 total and 153 PROPOSED genomics both match live file counts. pages/traits/genomics/gao_her_duf_system.html, priority.json, discussions/data.js, and the three reports/*.tsv deltas are all present and consistent; the history record under history/records/gao_her_duf_system/ is there.

One correct detail worth naming, since it is where this record diverges from its siblings: the Gao_Her_DUF synonym is sourced to DefenseFinder_rules.tsv rather than List_system_article.md, and the article-registry evidence note says "the broader Gao_Her family key." That is the right call — Gao_Her_DUF is a subsystem key that does not appear in the article registry — and the record does not overclaim by listing Gao_Her itself as a synonym.

Scope note on my verification: this review environment has no network access, so I could not re-fetch the three pinned defense-finder-models files at afb0e5a8b4 or the PMID:32855333 abstract to confirm the snippets are verbatim. What I could check: the PMID sentence is byte-identical to the one carried by ten merged Gao-family records; the List_system_article.md row (including the escaped 10\\.1126/science\\.aba0372) matches those records exactly; and the two Liste_hmm_system.md rows reproduce the upstream fixed-width column padding correctly for the new, longer profile names (49/23/24/7 characters, same as the differently-sized TerY rows). That is strong but indirect evidence. The direct evidence remains your scripts/verify_snippets.py --record ... run.

@realmarcin
realmarcin added this pull request to the merge queue Sep 22, 2026
Merged via the queue into main with commit a2f955e Sep 22, 2026
8 checks passed
@realmarcin
realmarcin deleted the add-gao-her-duf-system branch September 22, 2026 10:03
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.

1 participant