From 23d4397e1ba5b703f1532411208ed3bc3fa069b0 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 25 May 2026 19:32:01 -0700 Subject: [PATCH 1/2] Extend CausalNodeTypeEnum with STATE/QUALITY/CAPACITY (+26 nodes retyped) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the v3 cohort's "Node-typing notes" follow-up. When v3 landed, four labels were mis-typed because the enum couldn't represent their actual semantics: proton motive force → BIOLOGICAL_PROCESS (semantically a STATE) membrane fluidity → BIOLOGICAL_PROCESS (semantically a QUALITY) microbial biomass → BIOLOGICAL_PROCESS (closest fit: CHEMICAL) reducing power → CHEMICAL (semantically a CAPACITY) PR #72 retyped biomass → CHEMICAL (the closest existing fit at that time). This PR adds the three missing enum values (STATE / QUALITY / CAPACITY) and retypes the remaining three labels covering 26 nodes: proton motive force BIOLOGICAL_PROCESS → STATE 16 nodes membrane fluidity BIOLOGICAL_PROCESS → QUALITY 6 nodes reducing power CHEMICAL → CAPACITY 4 nodes Schema (src/traitmech/schema/traitmech.yaml): CausalNodeTypeEnum gains STATE, QUALITY, CAPACITY permissible values with prose descriptions distinguishing each from the closest existing value (STATE vs BIOLOGICAL_PROCESS, QUALITY vs MOLECULAR_FUNCTION, CAPACITY vs CHEMICAL). Migration (scripts/retype_causal_nodes.py): RETYPES dict extended from 1 to 4 entries; DEFERRED list now empty. Re-run produces 26 retypes across 25 files. Mapping TSV (mappings/node_grounding.tsv): Three rows updated to use the new node_type keys so future seeded nodes ground correctly: proton motive force BIOLOGICAL_PROCESS → STATE reducing power CHEMICAL → CAPACITY membrane fluidity BIOLOGICAL_PROCESS → QUALITY All three still ground to their METPO:1007500/1007503/1007505 cohort-v3 CURIEs. v1 cohort (proposals/metpo_traitmech_v1/, Path B extend-in-place): Three new leaf rows under METPO:1007410 (trait causal node type): METPO:1007421 causal-graph state node METPO:1007422 causal-graph quality node (xref PATO:0000001) METPO:1007423 causal-graph capacity node Subset tag unchanged (metpo_traitmech_2026_05). verify-proposal: all 13 CausalNodeTypeEnum values lifted, 0 failures. robot-validate-proposal: ELK +6, no UNSAT. v3 cohort (proposals/metpo_traitmech_v3/proposal.md): "Node-typing notes" section rewritten to document the post-merge resolution (all four labels now correctly typed, pointing at PR #72 and PR_D). Verified locally: - just validate-strict → 0 ERROR rows / 357 files - just verify-proposal v1 → PASS (13 leaves lifted) - just verify-proposal v3 → PASS - just robot-validate-proposal v1 → PASS, ELK +6 - retype-causal-nodes --apply (second pass) → 0 retypes (idempotent) - uv run pytest tests/ → 56 passed Co-Authored-By: Claude Opus 4.7 (1M context) --- .../facultative_psychrophilic.yaml | 8 +++- data/traits/environment/mesophilic.yaml | 8 +++- data/traits/environment/neutrophilic.yaml | 8 +++- .../environment/obligately_aerobic.yaml | 8 +++- data/traits/environment/ph_optimum.yaml | 8 +++- data/traits/environment/psychrophilic.yaml | 8 +++- data/traits/environment/psychrotolerant.yaml | 8 +++- .../environment/temperature_optimum.yaml | 8 +++- .../environment/temperature_preference.yaml | 8 +++- .../metabolism/aerobic_respiration.yaml | 8 +++- .../metabolism/oxidative_phosphorylation.yaml | 8 +++- data/traits/metabolism/respiration.yaml | 8 +++- data/traits/morphology/gliding.yaml | 8 +++- data/traits/physiology/carboxydotrophic.yaml | 8 +++- .../physiology/chemolithoautotrophic.yaml | 11 +++++- .../physiology/chemolithoheterotrophic.yaml | 8 +++- .../traits/physiology/chemoorganotrophic.yaml | 8 +++- data/traits/physiology/chemotrophic.yaml | 8 +++- data/traits/physiology/hydrogenotrophic.yaml | 8 +++- data/traits/physiology/lithoautotrophic.yaml | 8 +++- data/traits/physiology/lithotrophic.yaml | 8 +++- data/traits/physiology/organotrophic.yaml | 8 +++- .../physiology/photolithoautotrophic.yaml | 8 +++- .../physiology/photoorganoheterotrophic.yaml | 8 +++- data/traits/physiology/phototrophic.yaml | 8 +++- mappings/node_grounding.tsv | 6 +-- .../metpo_proposal_classes_robot.tsv | 3 ++ proposals/metpo_traitmech_v3/proposal.md | 38 ++++++++++++------- scripts/retype_causal_nodes.py | 36 ++++++++++-------- src/traitmech/schema/traitmech.yaml | 18 +++++++++ 30 files changed, 246 insertions(+), 58 deletions(-) diff --git a/data/traits/environment/facultative_psychrophilic.yaml b/data/traits/environment/facultative_psychrophilic.yaml index 5bdc0a9..4c2f5d0 100644 --- a/data/traits/environment/facultative_psychrophilic.yaml +++ b/data/traits/environment/facultative_psychrophilic.yaml @@ -46,7 +46,7 @@ causal_graphs: growth. - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the membrane needed for transport and growth. grounding: METPO:1007505 - node_id: unsaturated_fatty_acids @@ -143,3 +143,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:12Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/environment/mesophilic.yaml b/data/traits/environment/mesophilic.yaml index dbc705f..81f2d05 100644 --- a/data/traits/environment/mesophilic.yaml +++ b/data/traits/environment/mesophilic.yaml @@ -38,7 +38,7 @@ causal_graphs: description: Ambient temperature in the ~20–45 °C mesophilic range. - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the cytoplasmic membrane supporting transport and bioenergetics. grounding: METPO:1007505 @@ -150,3 +150,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:12Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/environment/neutrophilic.yaml b/data/traits/environment/neutrophilic.yaml index 687b799..b821d10 100644 --- a/data/traits/environment/neutrophilic.yaml +++ b/data/traits/environment/neutrophilic.yaml @@ -46,7 +46,7 @@ causal_graphs: grounding: GO:0030641 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical proton gradient coupled to energy metabolism. grounding: METPO:1007500 - node_id: cation_proton_antiporter @@ -152,3 +152,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (PATO:0001432×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:12Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/environment/obligately_aerobic.yaml b/data/traits/environment/obligately_aerobic.yaml index 23890ed..93d5acb 100644 --- a/data/traits/environment/obligately_aerobic.yaml +++ b/data/traits/environment/obligately_aerobic.yaml @@ -49,7 +49,7 @@ causal_graphs: description: Oxygen-reducing terminal oxidase complexes. - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical gradient powering ATP synthesis. grounding: METPO:1007500 edges: @@ -121,3 +121,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007500×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:12Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/environment/ph_optimum.yaml b/data/traits/environment/ph_optimum.yaml index 929a748..d6c55ef 100644 --- a/data/traits/environment/ph_optimum.yaml +++ b/data/traits/environment/ph_optimum.yaml @@ -46,7 +46,7 @@ causal_graphs: grounding: GO:0030641 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical proton gradient powering ATP synthesis and transport. grounding: METPO:1007500 - node_id: maximal_growth_rate @@ -141,3 +141,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007500×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:12Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/environment/psychrophilic.yaml b/data/traits/environment/psychrophilic.yaml index 81bd2ec..d630709 100644 --- a/data/traits/environment/psychrophilic.yaml +++ b/data/traits/environment/psychrophilic.yaml @@ -37,7 +37,7 @@ causal_graphs: grounding: PATO:0000383 - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the membrane needed for transport and growth. grounding: METPO:1007505 - node_id: unsaturated_fatty_acids @@ -168,3 +168,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/environment/psychrotolerant.yaml b/data/traits/environment/psychrotolerant.yaml index 3330981..9943025 100644 --- a/data/traits/environment/psychrotolerant.yaml +++ b/data/traits/environment/psychrotolerant.yaml @@ -38,7 +38,7 @@ causal_graphs: grounding: PATO:0000383 - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the cytoplasmic membrane supporting transport and bioenergetics. grounding: METPO:1007505 @@ -152,3 +152,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/environment/temperature_optimum.yaml b/data/traits/environment/temperature_optimum.yaml index 8c56ec6..ba06405 100644 --- a/data/traits/environment/temperature_optimum.yaml +++ b/data/traits/environment/temperature_optimum.yaml @@ -38,7 +38,7 @@ causal_graphs: description: Ambient growth temperature imposed on the cell. - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the cytoplasmic membrane supporting transport and bioenergetics. grounding: METPO:1007505 @@ -150,3 +150,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/environment/temperature_preference.yaml b/data/traits/environment/temperature_preference.yaml index 6b54913..60049bf 100644 --- a/data/traits/environment/temperature_preference.yaml +++ b/data/traits/environment/temperature_preference.yaml @@ -46,7 +46,7 @@ causal_graphs: description: Hot growth condition that challenges protein and membrane stability. - node_id: membrane_fluidity label: membrane fluidity - node_type: BIOLOGICAL_PROCESS + node_type: QUALITY description: Physical state of the membrane affecting transport and cell function. grounding: METPO:1007505 - node_id: protein_stability @@ -143,3 +143,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007505×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: membrane fluidity: BIOLOGICAL_PROCESS → QUALITY ×1.' + llm_assisted: true diff --git a/data/traits/metabolism/aerobic_respiration.yaml b/data/traits/metabolism/aerobic_respiration.yaml index d04dcce..f9588ca 100644 --- a/data/traits/metabolism/aerobic_respiration.yaml +++ b/data/traits/metabolism/aerobic_respiration.yaml @@ -59,7 +59,7 @@ causal_graphs: description: Reduced product of oxygen reduction. - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient generated across the coupling membrane. grounding: METPO:1007500 - node_id: atp_synthase @@ -174,3 +174,9 @@ curation_history: changes: Grounded 2 causal-node grounding field(s) via mappings/node_grounding.tsv (UniProtKB:A0A075NZN5×1, UniProtKB:A0A415TT77×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/metabolism/oxidative_phosphorylation.yaml b/data/traits/metabolism/oxidative_phosphorylation.yaml index 0314a19..d980604 100644 --- a/data/traits/metabolism/oxidative_phosphorylation.yaml +++ b/data/traits/metabolism/oxidative_phosphorylation.yaml @@ -40,7 +40,7 @@ causal_graphs: description: Membrane across which ions are translocated. - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Transmembrane electrochemical proton gradient. grounding: METPO:1007500 - node_id: atp_synthase @@ -141,3 +141,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007500×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/metabolism/respiration.yaml b/data/traits/metabolism/respiration.yaml index 9794b69..b590215 100644 --- a/data/traits/metabolism/respiration.yaml +++ b/data/traits/metabolism/respiration.yaml @@ -62,7 +62,7 @@ causal_graphs: grounding: GO:0022900 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient generated across a coupling membrane. grounding: METPO:1007500 - node_id: atp_synthase @@ -197,3 +197,9 @@ curation_history: changes: Grounded 2 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:17499×1, GO:0022900×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/morphology/gliding.yaml b/data/traits/morphology/gliding.yaml index 3cdd197..721e837 100644 --- a/data/traits/morphology/gliding.yaml +++ b/data/traits/morphology/gliding.yaml @@ -45,7 +45,7 @@ causal_graphs: description: Secretion-associated machinery linked to Flavobacterium gliding. - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical gradient powering some gliding motors. grounding: METPO:1007500 edges: @@ -116,3 +116,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007500×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/carboxydotrophic.yaml b/data/traits/physiology/carboxydotrophic.yaml index 202ba30..9664055 100644 --- a/data/traits/physiology/carboxydotrophic.yaml +++ b/data/traits/physiology/carboxydotrophic.yaml @@ -58,7 +58,7 @@ causal_graphs: description: Terminal oxidase enabling respiration during CO oxidation. - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Ion gradient used for energy conservation. grounding: METPO:1007500 - node_id: reduced_pyridine_nucleotides @@ -182,3 +182,9 @@ curation_history: changes: Grounded 2 causal-node grounding field(s) via mappings/node_grounding.tsv (UniProtKB:A0A061JSS8×1, UniProtKB:A0A099I9V3×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/chemolithoautotrophic.yaml b/data/traits/physiology/chemolithoautotrophic.yaml index 776bf4e..8a23a35 100644 --- a/data/traits/physiology/chemolithoautotrophic.yaml +++ b/data/traits/physiology/chemolithoautotrophic.yaml @@ -43,7 +43,7 @@ causal_graphs: grounding: GO:0022900 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical gradient generated by energy-conserving electron transfer. grounding: METPO:1007500 @@ -54,7 +54,7 @@ causal_graphs: description: Energy carrier supporting biosynthesis. - node_id: reducing_power label: reducing power - node_type: CHEMICAL + node_type: CAPACITY description: NAD(P)H or related reductants supporting CO2 reduction. grounding: METPO:1007503 - node_id: carbon_dioxide @@ -215,3 +215,10 @@ curation_history: changes: Grounded 2 causal-node grounding field(s) via mappings/node_grounding.tsv (GO:0022900×1, GO:0015977×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 2 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1; reducing power: + CHEMICAL → CAPACITY ×1.' + llm_assisted: true diff --git a/data/traits/physiology/chemolithoheterotrophic.yaml b/data/traits/physiology/chemolithoheterotrophic.yaml index 6a91561..a0ac3ea 100644 --- a/data/traits/physiology/chemolithoheterotrophic.yaml +++ b/data/traits/physiology/chemolithoheterotrophic.yaml @@ -61,7 +61,7 @@ causal_graphs: grounding: GO:0022904 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient generated by respiratory electron transport. grounding: METPO:1007500 - node_id: atp @@ -214,3 +214,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:50860×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/chemoorganotrophic.yaml b/data/traits/physiology/chemoorganotrophic.yaml index bb85d6a..790dc75 100644 --- a/data/traits/physiology/chemoorganotrophic.yaml +++ b/data/traits/physiology/chemoorganotrophic.yaml @@ -55,7 +55,7 @@ causal_graphs: grounding: METPO:1007504 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Ion gradient generated by respiratory electron transport. grounding: METPO:1007500 - node_id: atp @@ -177,3 +177,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:50860×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/chemotrophic.yaml b/data/traits/physiology/chemotrophic.yaml index 87e62e9..c269496 100644 --- a/data/traits/physiology/chemotrophic.yaml +++ b/data/traits/physiology/chemotrophic.yaml @@ -65,7 +65,7 @@ causal_graphs: grounding: METPO:1007504 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient generated by electron transport. grounding: METPO:1007500 - node_id: atp @@ -192,3 +192,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:50860×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/hydrogenotrophic.yaml b/data/traits/physiology/hydrogenotrophic.yaml index d009ee1..23edff0 100644 --- a/data/traits/physiology/hydrogenotrophic.yaml +++ b/data/traits/physiology/hydrogenotrophic.yaml @@ -48,7 +48,7 @@ causal_graphs: grounding: GO:0022900 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Ion gradient used for energy conservation. grounding: METPO:1007500 - node_id: carbon_dioxide @@ -185,3 +185,9 @@ curation_history: changes: Grounded 2 causal-node grounding field(s) via mappings/node_grounding.tsv (GO:0022900×1, GO:0015977×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/lithoautotrophic.yaml b/data/traits/physiology/lithoautotrophic.yaml index 3d62d10..8341df9 100644 --- a/data/traits/physiology/lithoautotrophic.yaml +++ b/data/traits/physiology/lithoautotrophic.yaml @@ -41,7 +41,7 @@ causal_graphs: description: Conversion of redox energy into ion gradients and ATP. - node_id: reducing_power label: reducing power - node_type: CHEMICAL + node_type: CAPACITY description: Reduced electron carriers used in biosynthesis. grounding: METPO:1007503 - node_id: carbon_dioxide @@ -169,3 +169,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (GO:0015977×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: reducing power: CHEMICAL → CAPACITY ×1.' + llm_assisted: true diff --git a/data/traits/physiology/lithotrophic.yaml b/data/traits/physiology/lithotrophic.yaml index cfefff4..34188f4 100644 --- a/data/traits/physiology/lithotrophic.yaml +++ b/data/traits/physiology/lithotrophic.yaml @@ -57,7 +57,7 @@ causal_graphs: grounding: GO:0022900 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient used for energy conservation. grounding: METPO:1007500 - node_id: atp @@ -158,3 +158,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (GO:0022900×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:13Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/organotrophic.yaml b/data/traits/physiology/organotrophic.yaml index 3ac4941..d984f12 100644 --- a/data/traits/physiology/organotrophic.yaml +++ b/data/traits/physiology/organotrophic.yaml @@ -56,7 +56,7 @@ causal_graphs: grounding: GO:0022904 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Electrochemical ion gradient generated by respiration. grounding: METPO:1007500 - node_id: atp @@ -178,3 +178,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:50860×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:14Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/photolithoautotrophic.yaml b/data/traits/physiology/photolithoautotrophic.yaml index c571c54..ed8efd3 100644 --- a/data/traits/physiology/photolithoautotrophic.yaml +++ b/data/traits/physiology/photolithoautotrophic.yaml @@ -61,7 +61,7 @@ causal_graphs: description: Oxidation of reduced sulfur compounds during phototrophic metabolism. - node_id: reducing_power label: reducing power - node_type: CHEMICAL + node_type: CAPACITY description: Reduced electron carriers used for biosynthesis. grounding: METPO:1007503 - node_id: carbon_dioxide @@ -221,3 +221,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (GO:0015977×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:14Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: reducing power: CHEMICAL → CAPACITY ×1.' + llm_assisted: true diff --git a/data/traits/physiology/photoorganoheterotrophic.yaml b/data/traits/physiology/photoorganoheterotrophic.yaml index af1511e..1a8a3ab 100644 --- a/data/traits/physiology/photoorganoheterotrophic.yaml +++ b/data/traits/physiology/photoorganoheterotrophic.yaml @@ -53,7 +53,7 @@ causal_graphs: grounding: GO:0009767 - node_id: proton_motive_force label: proton motive force - node_type: BIOLOGICAL_PROCESS + node_type: STATE description: Ion gradient generated by electron transport. grounding: METPO:1007500 - node_id: atp @@ -185,3 +185,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:50860×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:14Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: proton motive force: BIOLOGICAL_PROCESS → STATE ×1.' + llm_assisted: true diff --git a/data/traits/physiology/phototrophic.yaml b/data/traits/physiology/phototrophic.yaml index 961d39e..311002c 100644 --- a/data/traits/physiology/phototrophic.yaml +++ b/data/traits/physiology/phototrophic.yaml @@ -64,7 +64,7 @@ causal_graphs: description: Energy carrier generated by phototrophic electron transport. - node_id: reducing_power label: reducing power - node_type: CHEMICAL + node_type: CAPACITY description: NAD(P)H or reduced ferredoxin generated by photosynthetic electron transport. grounding: METPO:1007503 @@ -158,3 +158,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (METPO:1007503×1). llm_assisted: true +- timestamp: '2026-05-26T02:30:14Z' + curator: claude + action: RETYPE_CAUSAL_NODES + changes: 'Re-typed 1 causal-node node_type field(s) to align with CausalNodeTypeEnum + semantics: reducing power: CHEMICAL → CAPACITY ×1.' + llm_assisted: true diff --git a/mappings/node_grounding.tsv b/mappings/node_grounding.tsv index 0d3e365..1e8bf14 100644 --- a/mappings/node_grounding.tsv +++ b/mappings/node_grounding.tsv @@ -39,13 +39,13 @@ low temperature ENVIRONMENTAL_FACTOR PATO:0000383 decreased temperature PATO hig anaerobic condition ENVIRONMENTAL_FACTOR ENVO:01001057 anaerobic environment ENVO high exact ENVO term anoxic condition ENVIRONMENTAL_FACTOR ENVO:01001057 anaerobic environment ENVO high ENVO collapses anoxic and anaerobic into one environment class carotenoid biosynthesis BIOLOGICAL_PROCESS GO:0016117 carotenoid biosynthetic process GO high exact GO term; pigmentation contexts -proton motive force BIOLOGICAL_PROCESS METPO:1007500 proton motive force METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes (mistyped as BIOLOGICAL_PROCESS in corpus — semantically a bioenergetic state) +proton motive force STATE METPO:1007500 proton motive force METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes — re-typed BIOLOGICAL_PROCESS → STATE in PR_D after CausalNodeTypeEnum gained the STATE permissible value (bioenergetic gradient, not a process) biomass CHEMICAL METPO:1007501 microbial biomass METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes — re-typed BIOLOGICAL_PROCESS → CHEMICAL via scripts/retype_causal_nodes.py (closest existing CausalNodeTypeEnum fit for aggregate biochemistry) inorganic electron donor CHEMICAL METPO:1007502 inorganic electron donor METPO high proposed upstream in proposals/metpo_traitmech_v3; 7 nodes — class-of-chemicals abstraction for lithotrophy -reducing power CHEMICAL METPO:1007503 reducing power METPO high proposed upstream in proposals/metpo_traitmech_v3; 4 nodes — electron-pool capacity +reducing power CAPACITY METPO:1007503 reducing power METPO high proposed upstream in proposals/metpo_traitmech_v3; 4 nodes — re-typed CHEMICAL → CAPACITY in PR_D after CausalNodeTypeEnum gained the CAPACITY permissible value (electron-donating pool, not a single chemical) terminal electron acceptor CHEMICAL METPO:1007504 terminal electron acceptor METPO high proposed upstream in proposals/metpo_traitmech_v3; 3 nodes as CHEMICAL (also 2 as MOLECULAR_FUNCTION below) terminal electron acceptor MOLECULAR_FUNCTION METPO:1007504 terminal electron acceptor METPO high same proposed METPO class covers both senses; MOLECULAR_FUNCTION typing surfaces the role-of interpretation -membrane fluidity BIOLOGICAL_PROCESS METPO:1007505 membrane fluidity METPO high proposed upstream in proposals/metpo_traitmech_v3; 6 nodes (mistyped as BIOLOGICAL_PROCESS — semantically a membrane quality) +membrane fluidity QUALITY METPO:1007505 membrane fluidity METPO high proposed upstream in proposals/metpo_traitmech_v3; 6 nodes — re-typed BIOLOGICAL_PROCESS → QUALITY in PR_D after CausalNodeTypeEnum gained the QUALITY permissible value (PATO-style attribute, not a process) mreb GENE_OR_PROTEIN UniProtKB:A0A1B1UYY2 MreB UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) na+/h+ antiporter GENE_OR_PROTEIN UniProtKB:A0A068T423 Na+/H+ antiporter UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) ftsz GENE_OR_PROTEIN UniProtKB:C0LUM8 FtsZ UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) diff --git a/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv b/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv index 5623d37..e92d554 100644 --- a/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv +++ b/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv @@ -14,3 +14,6 @@ METPO:1007417 causal-graph organelle node A trait causal node that denotes a mic METPO:1007418 causal-graph cellular localization node A trait causal node that denotes a cellular component or subcellular localization (cytoplasm, membrane, periplasm, cell wall, etc.) at which a trait mechanism is realized. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.CELLULAR_LOCALIZATION METPO:1007410 cellular component node|localization node GO:0005575 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.CELLULAR_LOCALIZATION METPO:1007419 causal-graph molecular function node A trait causal node that denotes a molecular activity or function (catalysis, transport, binding) contributing to the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.MOLECULAR_FUNCTION METPO:1007410 molecular function node|molecular activity node GO:0003674 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.MOLECULAR_FUNCTION METPO:1007420 causal-graph biological process node A trait causal node that denotes a biological process (e.g. respiration, nitrogen fixation, biofilm formation) that is part of, or causally upstream of, the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.BIOLOGICAL_PROCESS METPO:1007410 biological process node GO:0008150 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.BIOLOGICAL_PROCESS +METPO:1007421 causal-graph state node A trait causal node that denotes a bioenergetic or molecular state of the cell — a gradient or steady-value (e.g. proton motive force, redox state of the quinone pool) that mediates the trait mechanism. Distinct from a process: the state is the thing maintained, not its establishment. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.STATE METPO:1007410 state node|bioenergetic state node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.STATE (extended in PR_D) +METPO:1007422 causal-graph quality node A trait causal node that denotes a quality or measurable attribute of a cellular component (PATO-style axis attached to a microbial entity) — e.g. membrane fluidity, GC content, motility speed — that modulates the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.QUALITY METPO:1007410 quality node|attribute node PATO:0000001 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.QUALITY (extended in PR_D) +METPO:1007423 causal-graph capacity node A trait causal node that denotes a metabolic or functional capacity — an electron-donating pool, ATP charge, or other reservoir-of-X notion that is neither a single chemical species nor a process (e.g. reducing power, energy charge). TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.CAPACITY METPO:1007410 capacity node|reservoir node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.CAPACITY (extended in PR_D) diff --git a/proposals/metpo_traitmech_v3/proposal.md b/proposals/metpo_traitmech_v3/proposal.md index aa7fa5a..ad22ce0 100644 --- a/proposals/metpo_traitmech_v3/proposal.md +++ b/proposals/metpo_traitmech_v3/proposal.md @@ -73,20 +73,30 @@ them under a richer parent (e.g. *bioenergetic state*, | `terminal electron acceptor` | individual CHEBIs (O₂, NO₃⁻, SO₄²⁻) | role-of class is missing upstream; corpus mixes CHEMICAL + MOLECULAR_FUNCTION node-typings of the same concept | | `membrane fluidity` | PATO:0001985 (viscosity) | viscosity is closely related but is a generic physical quality; membrane-specific lipid-mobility sense has no exact upstream term | -### Node-typing notes - -Four of these are *mis-typed* in the corpus (a separate cleanup): -- `proton motive force` and `membrane fluidity` appear under - `node_type: BIOLOGICAL_PROCESS` but are semantically a - bioenergetic state and a membrane quality respectively. -- `microbial biomass` and `reducing power` are typed as - `BIOLOGICAL_PROCESS` / `CHEMICAL` but are aggregate matter and - capacity respectively. - -Lifting them to METPO with proper classification gives downstream -re-typing migrations a target. The mapping TSV in this PR grounds -them via the corpus's current (mis-)typing so the corpus-side fix -can land separately. +### Node-typing notes (resolved post-merge) + +When v3 first landed, four of these classes were *mis-typed* in +the corpus because the `CausalNodeTypeEnum` lacked appropriate +values: +- `proton motive force` and `membrane fluidity` appeared under + `node_type: BIOLOGICAL_PROCESS` (semantically a bioenergetic + state and a membrane quality). +- `microbial biomass` and `reducing power` were typed as + `BIOLOGICAL_PROCESS` / `CHEMICAL` (aggregate matter and capacity). + +All four are now correctly typed: +- `biomass` → `CHEMICAL` (PR #72, the closest existing fit at + the time). +- `proton motive force` → `STATE` (PR_D, after the enum was + extended with `STATE`/`QUALITY`/`CAPACITY`). +- `membrane fluidity` → `QUALITY` (PR_D). +- `reducing power` → `CAPACITY` (PR_D). + +The v1 cohort's `CausalNodeTypeEnum` lift was extended in-place +(Path B per the metpo-proposal skill) to mint three new leaf +classes — `METPO:1007421` (state node), `METPO:1007422` (quality +node), `METPO:1007423` (capacity node) — keeping the subset tag +`metpo_traitmech_2026_05`. ## Hierarchy decisions diff --git a/scripts/retype_causal_nodes.py b/scripts/retype_causal_nodes.py index 84c057c..f78261a 100644 --- a/scripts/retype_causal_nodes.py +++ b/scripts/retype_causal_nodes.py @@ -45,27 +45,33 @@ # (label_lower, current_node_type) → new_node_type. # # Scope rule: only re-type when an existing CausalNodeTypeEnum value -# is a clean semantic fit. For mis-typed nodes whose proper category -# is missing from the enum (bioenergetic STATE, membrane QUALITY, -# metabolic CAPACITY), defer to a follow-up that extends the enum. +# is a clean semantic fit. The first entry (biomass) landed in +# PR #72; the next three landed in PR_D after the enum was extended +# with STATE / QUALITY / CAPACITY values. RETYPES: dict[tuple[str, str], str] = { # Microbial biomass is aggregate biochemistry — best existing fit # in CausalNodeTypeEnum is CHEMICAL (a chemical entity / mixture). - # Currently mis-typed as BIOLOGICAL_PROCESS in the v3 proposal - # (proposals/metpo_traitmech_v3/proposal.md, "Node-typing notes"). ("biomass", "BIOLOGICAL_PROCESS"): "CHEMICAL", + + # Proton motive force is a bioenergetic state (electrochemical + # gradient), not a process. STATE was added to the enum in PR_D. + ("proton motive force", "BIOLOGICAL_PROCESS"): "STATE", + + # Membrane fluidity is a PATO-style quality of the membrane, not + # a process. QUALITY was added to the enum in PR_D. + ("membrane fluidity", "BIOLOGICAL_PROCESS"): "QUALITY", + + # Reducing power is a metabolic capacity (electron-donating + # pool), not a single chemical species. CAPACITY was added to + # the enum in PR_D. + ("reducing power", "CHEMICAL"): "CAPACITY", } -# Mis-typed labels that the current enum can't represent cleanly. -# Listed here so the PR description and proposal.md stay in sync. -DEFERRED = [ - ("proton motive force", "BIOLOGICAL_PROCESS", - "needs a bioenergetic-STATE enum value"), - ("membrane fluidity", "BIOLOGICAL_PROCESS", - "needs a QUALITY enum value (PATO axis)"), - ("reducing power", "CHEMICAL", - "needs a metabolic-CAPACITY enum value"), -] +# All mis-typed labels surfaced in the v3 proposal are now resolved +# (PR #72 for biomass; PR_D for the other three). New mis-typings +# discovered post-PR_D should be appended above with a comment +# pointing at where the new enum value (if needed) was added. +DEFERRED: list[tuple[str, str, str]] = [] def retype_nodes_in_doc(doc: dict[str, Any]) -> tuple[int, Counter]: diff --git a/src/traitmech/schema/traitmech.yaml b/src/traitmech/schema/traitmech.yaml index b8ad7d8..5020f8f 100644 --- a/src/traitmech/schema/traitmech.yaml +++ b/src/traitmech/schema/traitmech.yaml @@ -440,3 +440,21 @@ enums: description: A molecular activity or function. BIOLOGICAL_PROCESS: description: A biological process. + STATE: + description: >- + A bioenergetic or molecular state of the cell (e.g. proton + motive force, redox state of the quinone pool) that + mediates a trait mechanism. Distinct from a process: the + state is the gradient / steady-value, not its establishment. + QUALITY: + description: >- + A quality or measurable attribute of a cellular component + (e.g. membrane fluidity, GC content, motility speed) — + a PATO-style axis attached to a microbial entity that + modulates the trait mechanism. + CAPACITY: + description: >- + A metabolic or functional capacity — an electron-donating + pool, ATP charge, or other reservoir-of-X notion that is + neither a single chemical species nor a process. Examples + include reducing power (NADH/NADPH pool) and energy charge. From 959e1a79f2763fc4c22aa93d4ae6fe9eec331a5a Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 25 May 2026 21:56:49 -0700 Subject: [PATCH 2/2] Address Copilot review on PR #81 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All six Copilot inline comments were the same finding: the inline references to "PR_D" are placeholders, not real PR identifiers, so they'll be meaningless once the PR is merged. Replaced across all four affected files: - scripts/retype_causal_nodes.py (5 occurrences) - mappings/node_grounding.tsv (3 occurrences in notes) - proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv (3 occurrences in row obs) - proposals/metpo_traitmech_v3/proposal.md (3 occurrences) Replacement phrasing depends on context: - "extended in PR_D" → "extended via the STATE/QUALITY/CAPACITY enum extension" - "added to the enum in PR_D" → "added to the enum in the same batch" - "PR_D for the other three" → "the STATE/QUALITY/CAPACITY batch for the other three" - "STATE in PR_D after CausalNodeTypeEnum" → "STATE after CausalNodeTypeEnum" - "PR_D, after the enum was" → "after the enum was" - "(PR_D)" → "(same enum-extension batch)" The references to PR #72 (biomass retype, already merged) are kept verbatim — that PR number is stable. Verified: - just verify-proposal metpo_traitmech_v1 → PASS - just verify-proposal metpo_traitmech_v3 → PASS - just validate-strict → 0 ERROR rows - grep -r "PR_D" scripts mappings proposals → 0 hits Co-Authored-By: Claude Opus 4.7 (1M context) --- mappings/node_grounding.tsv | 6 +++--- .../metpo_proposal_classes_robot.tsv | 6 +++--- proposals/metpo_traitmech_v3/proposal.md | 6 +++--- scripts/retype_causal_nodes.py | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mappings/node_grounding.tsv b/mappings/node_grounding.tsv index 1e8bf14..4fb1794 100644 --- a/mappings/node_grounding.tsv +++ b/mappings/node_grounding.tsv @@ -39,13 +39,13 @@ low temperature ENVIRONMENTAL_FACTOR PATO:0000383 decreased temperature PATO hig anaerobic condition ENVIRONMENTAL_FACTOR ENVO:01001057 anaerobic environment ENVO high exact ENVO term anoxic condition ENVIRONMENTAL_FACTOR ENVO:01001057 anaerobic environment ENVO high ENVO collapses anoxic and anaerobic into one environment class carotenoid biosynthesis BIOLOGICAL_PROCESS GO:0016117 carotenoid biosynthetic process GO high exact GO term; pigmentation contexts -proton motive force STATE METPO:1007500 proton motive force METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes — re-typed BIOLOGICAL_PROCESS → STATE in PR_D after CausalNodeTypeEnum gained the STATE permissible value (bioenergetic gradient, not a process) +proton motive force STATE METPO:1007500 proton motive force METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes — re-typed BIOLOGICAL_PROCESS → STATE after CausalNodeTypeEnum gained the STATE permissible value (bioenergetic gradient, not a process) biomass CHEMICAL METPO:1007501 microbial biomass METPO high proposed upstream in proposals/metpo_traitmech_v3; 16 nodes — re-typed BIOLOGICAL_PROCESS → CHEMICAL via scripts/retype_causal_nodes.py (closest existing CausalNodeTypeEnum fit for aggregate biochemistry) inorganic electron donor CHEMICAL METPO:1007502 inorganic electron donor METPO high proposed upstream in proposals/metpo_traitmech_v3; 7 nodes — class-of-chemicals abstraction for lithotrophy -reducing power CAPACITY METPO:1007503 reducing power METPO high proposed upstream in proposals/metpo_traitmech_v3; 4 nodes — re-typed CHEMICAL → CAPACITY in PR_D after CausalNodeTypeEnum gained the CAPACITY permissible value (electron-donating pool, not a single chemical) +reducing power CAPACITY METPO:1007503 reducing power METPO high proposed upstream in proposals/metpo_traitmech_v3; 4 nodes — re-typed CHEMICAL → CAPACITY after CausalNodeTypeEnum gained the CAPACITY permissible value (electron-donating pool, not a single chemical) terminal electron acceptor CHEMICAL METPO:1007504 terminal electron acceptor METPO high proposed upstream in proposals/metpo_traitmech_v3; 3 nodes as CHEMICAL (also 2 as MOLECULAR_FUNCTION below) terminal electron acceptor MOLECULAR_FUNCTION METPO:1007504 terminal electron acceptor METPO high same proposed METPO class covers both senses; MOLECULAR_FUNCTION typing surfaces the role-of interpretation -membrane fluidity QUALITY METPO:1007505 membrane fluidity METPO high proposed upstream in proposals/metpo_traitmech_v3; 6 nodes — re-typed BIOLOGICAL_PROCESS → QUALITY in PR_D after CausalNodeTypeEnum gained the QUALITY permissible value (PATO-style attribute, not a process) +membrane fluidity QUALITY METPO:1007505 membrane fluidity METPO high proposed upstream in proposals/metpo_traitmech_v3; 6 nodes — re-typed BIOLOGICAL_PROCESS → QUALITY after CausalNodeTypeEnum gained the QUALITY permissible value (PATO-style attribute, not a process) mreb GENE_OR_PROTEIN UniProtKB:A0A1B1UYY2 MreB UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) na+/h+ antiporter GENE_OR_PROTEIN UniProtKB:A0A068T423 Na+/H+ antiporter UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) ftsz GENE_OR_PROTEIN UniProtKB:C0LUM8 FtsZ UniProt high representative UniProt entry selected via kg-microbe merged-kg_uniprot_nodes.tsv (name-ends-with-label + alphabetic-first CURIE) diff --git a/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv b/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv index e92d554..bfd2aa8 100644 --- a/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv +++ b/proposals/metpo_traitmech_v1/metpo_proposal_classes_robot.tsv @@ -14,6 +14,6 @@ METPO:1007417 causal-graph organelle node A trait causal node that denotes a mic METPO:1007418 causal-graph cellular localization node A trait causal node that denotes a cellular component or subcellular localization (cytoplasm, membrane, periplasm, cell wall, etc.) at which a trait mechanism is realized. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.CELLULAR_LOCALIZATION METPO:1007410 cellular component node|localization node GO:0005575 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.CELLULAR_LOCALIZATION METPO:1007419 causal-graph molecular function node A trait causal node that denotes a molecular activity or function (catalysis, transport, binding) contributing to the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.MOLECULAR_FUNCTION METPO:1007410 molecular function node|molecular activity node GO:0003674 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.MOLECULAR_FUNCTION METPO:1007420 causal-graph biological process node A trait causal node that denotes a biological process (e.g. respiration, nitrogen fixation, biofilm formation) that is part of, or causally upstream of, the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.BIOLOGICAL_PROCESS METPO:1007410 biological process node GO:0008150 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.BIOLOGICAL_PROCESS -METPO:1007421 causal-graph state node A trait causal node that denotes a bioenergetic or molecular state of the cell — a gradient or steady-value (e.g. proton motive force, redox state of the quinone pool) that mediates the trait mechanism. Distinct from a process: the state is the thing maintained, not its establishment. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.STATE METPO:1007410 state node|bioenergetic state node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.STATE (extended in PR_D) -METPO:1007422 causal-graph quality node A trait causal node that denotes a quality or measurable attribute of a cellular component (PATO-style axis attached to a microbial entity) — e.g. membrane fluidity, GC content, motility speed — that modulates the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.QUALITY METPO:1007410 quality node|attribute node PATO:0000001 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.QUALITY (extended in PR_D) -METPO:1007423 causal-graph capacity node A trait causal node that denotes a metabolic or functional capacity — an electron-donating pool, ATP charge, or other reservoir-of-X notion that is neither a single chemical species nor a process (e.g. reducing power, energy charge). TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.CAPACITY METPO:1007410 capacity node|reservoir node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.CAPACITY (extended in PR_D) +METPO:1007421 causal-graph state node A trait causal node that denotes a bioenergetic or molecular state of the cell — a gradient or steady-value (e.g. proton motive force, redox state of the quinone pool) that mediates the trait mechanism. Distinct from a process: the state is the thing maintained, not its establishment. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.STATE METPO:1007410 state node|bioenergetic state node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.STATE (extended via the STATE/QUALITY/CAPACITY enum extension) +METPO:1007422 causal-graph quality node A trait causal node that denotes a quality or measurable attribute of a cellular component (PATO-style axis attached to a microbial entity) — e.g. membrane fluidity, GC content, motility speed — that modulates the trait mechanism. TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.QUALITY METPO:1007410 quality node|attribute node PATO:0000001 metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.QUALITY (extended via the STATE/QUALITY/CAPACITY enum extension) +METPO:1007423 causal-graph capacity node A trait causal node that denotes a metabolic or functional capacity — an electron-donating pool, ATP charge, or other reservoir-of-X notion that is neither a single chemical species nor a process (e.g. reducing power, energy charge). TraitMech:src/traitmech/schema/traitmech.yaml#CausalNodeTypeEnum.CAPACITY METPO:1007410 capacity node|reservoir node metpo_traitmech_2026_05 HIGH leaf — CausalNodeTypeEnum.CAPACITY (extended via the STATE/QUALITY/CAPACITY enum extension) diff --git a/proposals/metpo_traitmech_v3/proposal.md b/proposals/metpo_traitmech_v3/proposal.md index ad22ce0..7b01101 100644 --- a/proposals/metpo_traitmech_v3/proposal.md +++ b/proposals/metpo_traitmech_v3/proposal.md @@ -87,10 +87,10 @@ values: All four are now correctly typed: - `biomass` → `CHEMICAL` (PR #72, the closest existing fit at the time). -- `proton motive force` → `STATE` (PR_D, after the enum was +- `proton motive force` → `STATE` (after the enum was extended with `STATE`/`QUALITY`/`CAPACITY`). -- `membrane fluidity` → `QUALITY` (PR_D). -- `reducing power` → `CAPACITY` (PR_D). +- `membrane fluidity` → `QUALITY` (same enum-extension batch). +- `reducing power` → `CAPACITY` (same enum-extension batch). The v1 cohort's `CausalNodeTypeEnum` lift was extended in-place (Path B per the metpo-proposal skill) to mint three new leaf diff --git a/scripts/retype_causal_nodes.py b/scripts/retype_causal_nodes.py index f78261a..66aff68 100644 --- a/scripts/retype_causal_nodes.py +++ b/scripts/retype_causal_nodes.py @@ -46,7 +46,7 @@ # # Scope rule: only re-type when an existing CausalNodeTypeEnum value # is a clean semantic fit. The first entry (biomass) landed in -# PR #72; the next three landed in PR_D after the enum was extended +# PR #72; the next three landed after the enum was extended # with STATE / QUALITY / CAPACITY values. RETYPES: dict[tuple[str, str], str] = { # Microbial biomass is aggregate biochemistry — best existing fit @@ -54,22 +54,22 @@ ("biomass", "BIOLOGICAL_PROCESS"): "CHEMICAL", # Proton motive force is a bioenergetic state (electrochemical - # gradient), not a process. STATE was added to the enum in PR_D. + # gradient), not a process. STATE was added to the enum in the same batch. ("proton motive force", "BIOLOGICAL_PROCESS"): "STATE", # Membrane fluidity is a PATO-style quality of the membrane, not - # a process. QUALITY was added to the enum in PR_D. + # a process. QUALITY was added to the enum in the same batch. ("membrane fluidity", "BIOLOGICAL_PROCESS"): "QUALITY", # Reducing power is a metabolic capacity (electron-donating # pool), not a single chemical species. CAPACITY was added to - # the enum in PR_D. + # the enum in the same batch. ("reducing power", "CHEMICAL"): "CAPACITY", } # All mis-typed labels surfaced in the v3 proposal are now resolved -# (PR #72 for biomass; PR_D for the other three). New mis-typings -# discovered post-PR_D should be appended above with a comment +# (PR #72 for biomass; the STATE/QUALITY/CAPACITY batch for the other three). New mis-typings +# discovered after this batch should be appended above with a comment # pointing at where the new enum value (if needed) was added. DEFERRED: list[tuple[str, str, str]] = []