From f60cb99eef79ccf0e9ba3df4c0c8d93bb47a8480 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Fri, 7 Aug 2026 18:42:28 -0700 Subject: [PATCH 1/5] Burn down the 11 disposition-typing findings, half of which were not retypes (#352) #353 shipped the detection and baselined what it found. This is the burn-down: DISPOSITION_MISTYPED 8 -> 0, DUPLICATE_GROUNDING 3 -> 0. ONLY FOUR OF THE EIGHT WERE MISTYPES. #352 framed the fix as "sweep CAPACITY nodes matching the disposition pattern and retype them", and for four nodes that is exactly right - salt tolerance, salt-tolerance breadth, oxygen tolerance and low-pH tolerance are dispositions, now TRAIT and grounded METPO:1000622 / 1000622 / 1000609 / 1003008. For the other four, retyping would have been wrong, and the thing that exposes it is the grounding. Every TRAIT node in the corpus is grounded, and the only correct grounding for each of those four is the term its OWN record already carries. Grounding them that way trades a DISPOSITION_MISTYPED for a DUPLICATE_GROUNDING and calls it progress. What it actually means is the node RESTATES its anchor: - ph_homeostasis_capacity "Capacity to balance and maintain cytoplasmic pH" against cytoplasmic_ph_homeostasis, IN THE SAME GRAPH, already BIOLOGICAL_PROCESS and grounded GO:0051453. - elongation_capacity "Capacity of a cell to elongate into a rod via sidewall growth" against lateral_elongation "Sidewall growth mode that lengthens rods" - both already carried `reduced in -> sphere_shaped_trait`. - loss_sporulation_capacity IS METPO:1000872, the record's own term. Collapsed to low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape loss_sporulation_genes already uses in that graph. - growth_at_4c IS METPO:1000618, and it is a leaf hanging off the node grounded to it. That is #352's third bullet read strictly. It warns that an UNGROUNDED new TRAIT node becomes a free anchor, which suggests requiring a grounding fixes it. Requiring one does something better: it separates a real mistype from a restatement. CAPACITY IS NOT VESTIGIAL, which #352 left open. 24 nodes carry it; these 8 leave 16, and the survivors are a different sense - reducing_power (a pool of reductants), cytoplasmic_buffering_capacity (a reservoir), swimming_velocity (a rate), metabolic_versatility (a breadth). A buffer has a capacity; so does a battery; neither is something an organism can DO. Same two-senses shape `reduces` recorded in predicate_grounding.tsv, and it is why #353's heuristic is organism-scoped rather than matching bare "capacity to". THE 3 DUPLICATE_GROUNDINGS. growth_external_ph_5_5_9 shared METPO:1000478 with ph_delta_high_trait, but the two say different things: an ABSOLUTE external range (~5.5-9.0) versus a BREADTH (~5-9 pH UNITS), which is what a pH delta is. Regrounded to METPO:1000332 (pH range). catalase and urease shared their function node's GO term; GO:0004096 is catalase ACTIVITY, and a protein is not its activity - the graphs already say so correctly with catalase -enables-> catalase_function. Dropped from the proteins, kept on the functions. Note this is NOT a corpus-wide sweep: 72 GENE_OR_PROTEIN nodes are grounded to GO terms and that shorthand is fine where no separate function node exists; only these two graphs model both. NOT AN IMPROVEMENT IN CONNECTIVITY, and saying so before anyone asks. UNREACHABLE_FROM_TRAIT fell 1303 -> 1296, but FRAGMENTED_GRAPH is flat at 218 and the islands are intact. Every one of the seven is explained by a retype adding an anchor INSIDE an existing island - in oxygen_preference, superoxide_dismutase and two others stopped being reported because oxygen_tolerance, sitting in their island, became a TRAIT. Filed as #359: the metric moves for two different reasons and only one is progress, and this is the second time it has invited the wrong claim. Co-Authored-By: Claude Fable 5 --- conf/causal_graph_audit_baseline.tsv | 34 +-- conf/evidence_snippet_baseline.tsv | 9 +- data/traits/environment/nacl_delta_low.yaml | 13 +- .../traits/environment/oxygen_preference.yaml | 15 +- data/traits/environment/ph_delta.yaml | 12 +- data/traits/environment/ph_delta_high.yaml | 13 +- data/traits/environment/ph_delta_low.yaml | 17 +- data/traits/environment/psychrotolerant.yaml | 24 +- .../environment/slightly_halophilic.yaml | 13 +- data/traits/morphology/non_spore_forming.yaml | 26 +-- data/traits/morphology/sphere_shaped.yaml | 24 +- data/traits/physiology/catalase_activity.yaml | 11 +- data/traits/physiology/urease_activity.yaml | 9 +- docs/CURATION_PLAYBOOK.md | 34 +++ ...2026-08-08T014114Z-claude-code-5d4383.yaml | 37 +++ pages/browse.html | 2 +- pages/category/ecology.html | 2 +- pages/category/environment.html | 2 +- pages/category/genomics.html | 2 +- pages/category/metabolism.html | 2 +- pages/category/morphology.html | 2 +- pages/category/observation.html | 2 +- pages/category/physiology.html | 2 +- pages/category/quantitative_property.html | 2 +- pages/category/upper.html | 2 +- pages/graph.html | 2 +- pages/traits/environment/nacl_delta_low.html | 10 +- .../traits/environment/oxygen_preference.html | 10 +- pages/traits/environment/ph_delta.html | 10 +- pages/traits/environment/ph_delta_high.html | 10 +- pages/traits/environment/ph_delta_low.html | 12 +- pages/traits/environment/psychrotolerant.html | 27 +-- .../environment/slightly_halophilic.html | 10 +- .../traits/morphology/non_spore_forming.html | 35 +-- pages/traits/morphology/sphere_shaped.html | 35 +-- .../traits/physiology/catalase_activity.html | 10 +- pages/traits/physiology/urease_activity.html | 10 +- pages/umap.html | 2 +- reports/causal_graph_audit.tsv | 34 +-- reports/node_grounding_residual.tsv | 8 - reports/predicate_grounding_residual.tsv | 3 +- scripts/migrate_disposition_typing.py | 215 ++++++++++++++++++ 42 files changed, 540 insertions(+), 214 deletions(-) create mode 100644 history/infrastructure/disposition-typing-burndown/2026-08-08T014114Z-claude-code-5d4383.yaml create mode 100644 scripts/migrate_disposition_typing.py diff --git a/conf/causal_graph_audit_baseline.tsv b/conf/causal_graph_audit_baseline.tsv index 1a5db78e..198b8dc7 100644 --- a/conf/causal_graph_audit_baseline.tsv +++ b/conf/causal_graph_audit_baseline.tsv @@ -224,7 +224,6 @@ data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline UNREACHABLE_FROM_TRAIT WARN node_id='hypersaline_environment' label='hypersaline environment' type=ENVIRONMENTAL_FACTOR — in an island with no path to nacl_delta_high_trait/nacl_delta data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline UNREACHABLE_FROM_TRAIT WARN node_id='halophilic_osmoadaptation' label='halophilic osmoadaptation strategies' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_high_trait/nacl_delta data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline FRAGMENTED_GRAPH WARN components=6 of 14 node(s) (sizes: 3, 3, 2, 2, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline DISPOSITION_MISTYPED WARN node_id='salt_tolerance_breadth' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='osmotic_upshift' label='osmotic upshift' type=ENVIRONMENTAL_FACTOR — in an island with no path to nacl_delta_mid1_trait/nacl_delta data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='k_import' label='potassium import' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_mid1_trait/nacl_delta data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='compatible_solute_accumulation' label='compatible solute accumulation' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_mid1_trait/nacl_delta @@ -326,38 +325,27 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylation' label='amino-acid decarboxylation' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='proton_motive_force' label='proton motive force' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 5, 5, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='reactive_oxygen_species_stress' label='oxygen / reactive oxygen species stress' type=ENVIRONMENTAL_FACTOR — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='detoxifying_enzyme_expression' label='detoxifying-enzyme gene expression' type=BIOLOGICAL_PROCESS — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='superoxide_dismutase' label='superoxide dismutase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='oxygen_tolerance' label='oxygen tolerance' type=CAPACITY — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis DISPOSITION_MISTYPED WARN node_id='oxygen_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=3 of 14 node(s) (sizes: 8, 4, 2) — one record, several unrelated mechanisms -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylase_acid_resistance' label='amino-acid decarboxylase acid-resistance system' type=PATHWAY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='low_ph_tolerance' label='low-pH tolerance' type=CAPACITY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility DISPOSITION_MISTYPED WARN node_id='low_ph_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='respiratory_proton_pumps' label='respiratory proton-pumping enzymes' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_buffering_capacity' label='cytoplasmic buffering capacity' type=CAPACITY — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_porin_changes' label='membrane lipid/porin composition changes' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='inward_proton_leakage' label='inward proton leakage' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 -data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth DUPLICATE_GROUNDING WARN nodes=2;grounding=METPO:1000478 (growth_external_ph_5_5_9, ph_delta_high_trait) data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 7, 3, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='external_ph_stress' label='external pH stress' type=ENVIRONMENTAL_FACTOR — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='pmf_architecture' label='proton motive force architecture' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='ph_homeostasis_capacity' label='pH homeostasis capacity' type=CAPACITY — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='weak_organic_acids' label='weak organic acids' type=CHEMICAL — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='delta_ph' label='delta pH / cytoplasmic pH' type=STATE — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='electrogenic_na_h_antiport' label='electrogenic Na+/H+ antiport' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='alkaline_ph_homeostasis' label='alkaline pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='f1fo_atpase' label='F1Fo-ATPase' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_low_trait/ph_delta -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth DISPOSITION_MISTYPED WARN node_id='ph_homeostasis_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth FRAGMENTED_GRAPH WARN components=5 of 12 node(s) (sizes: 3, 3, 2, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth FRAGMENTED_GRAPH WARN components=4 of 11 node(s) (sizes: 4, 3, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='gln_glu_decarboxylation_pathway' label='glutamine/glutamate decarboxylation pathway' type=PATHWAY — in an island with no path to ph_delta_mid1_trait/ph_delta data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='intracellular_proton' label='intracellular proton (H+)' type=CHEMICAL — in an island with no path to ph_delta_mid1_trait/ph_delta data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='ybas_glutaminase' label='YbaS glutaminase' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_mid1_trait/ph_delta @@ -503,16 +491,14 @@ data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_ad data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='protein_membrane_stability' label='protein and membrane stability under cold stress' type=QUALITY — in an island with no path to psychrotolerant_trait data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='extracellular_polymeric_substances' label='extracellular polymeric substances (EPS)' type=CHEMICAL — in an island with no path to psychrotolerant_trait data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='freeze_thaw_cryoprotection' label='cryoprotection against freeze-thaw cycles' type=BIOLOGICAL_PROCESS — in an island with no path to psychrotolerant_trait -data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation DISPOSITION_MISTYPED WARN node_id='growth_at_4c' type=CAPACITY — description reads as a disposition, which is a TRAIT -data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation FRAGMENTED_GRAPH WARN components=3 of 11 node(s) (sizes: 7, 2, 2) — one record, several unrelated mechanisms data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='intracellular_osmotic_balance' label='intracellular osmotic balance across salinity' type=BIOLOGICAL_PROCESS — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_out_compatible_solute_strategy' label='compatible-solute (salt-out) strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_in_strategy' label='salt-in strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='glycine_betaine' label='glycine betaine' type=CHEMICAL — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 9, 4) — one record, several unrelated mechanisms -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation DISPOSITION_MISTYPED WARN node_id='salt_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='c_di_amp' label='cyclic di-AMP' type=CHEMICAL — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='k_import_systems' label='K+ import systems' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait @@ -1212,7 +1198,6 @@ data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNR data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNREACHABLE_FROM_TRAIT WARN node_id='ftsz_z_ladders' label='FtsZ Z-ladder arrays' type=GENE_OR_PROTEIN — in an island with no path to mycelial_growth_trait data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNREACHABLE_FROM_TRAIT WARN node_id='sporulation_septation' label='sporulation septation and spore-chain formation' type=BIOLOGICAL_PROCESS — in an island with no path to mycelial_growth_trait data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth FRAGMENTED_GRAPH WARN components=4 of 13 node(s) (sizes: 5, 4, 2, 2) — one record, several unrelated mechanisms -data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade DISPOSITION_MISTYPED WARN node_id='loss_sporulation_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='crt_y_lycopene_cyclase' label='lycopene beta-cyclase (CrtY)' type=GENE_OR_PROTEIN — in an island with no path to orange_pigmented_trait data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='lycopene' label='lycopene' type=CHEMICAL — in an island with no path to orange_pigmented_trait data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='beta_carotene' label='beta-carotene' type=CHEMICAL — in an island with no path to orange_pigmented_trait @@ -1285,7 +1270,6 @@ data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_pac data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet UNREACHABLE_FROM_TRAIT WARN node_id='peripheral_pg_bridge' label='peripheral peptidoglycan bridge' type=CELLULAR_LOCALIZATION — in an island with no path to sarcina_trait data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet UNREACHABLE_FROM_TRAIT WARN node_id='daughter_cell_separation' label='daughter-cell separation' type=BIOLOGICAL_PROCESS — in an island with no path to sarcina_trait data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet FRAGMENTED_GRAPH WARN components=5 of 14 node(s) (sizes: 4, 3, 3, 2, 2) — one record, several unrelated mechanisms -data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan DISPOSITION_MISTYPED WARN node_id='elongation_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIID' label='SpoIID' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIIM' label='SpoIIM' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIIP' label='SpoIIP' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait @@ -1366,7 +1350,6 @@ data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREA data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREACHABLE_FROM_TRAIT WARN node_id='coo_operon' label='coo operon' type=GENE_OR_PROTEIN — in an island with no path to carboxydotrophic_trait data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREACHABLE_FROM_TRAIT WARN node_id='cooa_regulator' label='CooA' type=GENE_OR_PROTEIN — in an island with no path to carboxydotrophic_trait data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation FRAGMENTED_GRAPH WARN components=2 of 18 node(s) (sizes: 14, 4) — one record, several unrelated mechanisms -data/traits/physiology/catalase_activity.yaml catalase_activity_h2o2_detoxification DUPLICATE_GROUNDING WARN nodes=2;grounding=GO:0004096 (catalase, catalase_function) data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon UNREACHABLE_FROM_TRAIT WARN node_id='mannitol_pts' label='PEP-dependent phosphotransferase system (mannitol PTS)' type=GENE_OR_PROTEIN — in an island with no path to chemoheterotrophic_trait data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon UNREACHABLE_FROM_TRAIT WARN node_id='mannitol' label='mannitol' type=CHEMICAL — in an island with no path to chemoheterotrophic_trait data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon FRAGMENTED_GRAPH WARN components=2 of 14 node(s) (sizes: 12, 2) — one record, several unrelated mechanisms @@ -1519,7 +1502,6 @@ data/traits/physiology/photoorganoheterotrophic.yaml photoorganoheterotrophic_li data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture UNREACHABLE_FROM_TRAIT WARN node_id='rhodopsin' label='rhodopsin' type=GENE_OR_PROTEIN — in an island with no path to phototrophic_trait data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture UNREACHABLE_FROM_TRAIT WARN node_id='ion_transport' label='ion transport across membrane' type=BIOLOGICAL_PROCESS — in an island with no path to phototrophic_trait data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms -data/traits/physiology/urease_activity.yaml urease_activity_urea_hydrolysis DUPLICATE_GROUNDING WARN nodes=2;grounding=GO:0009039 (urease, urease_function) data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='rpos' label='RpoS sigma factor' type=GENE_OR_PROTEIN — in an island with no path to vbnc_trait data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='resuscitation' label='resuscitation from VBNC' type=BIOLOGICAL_PROCESS — in an island with no path to vbnc_trait data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='atp' label='ATP' type=CHEMICAL — in an island with no path to vbnc_trait diff --git a/conf/evidence_snippet_baseline.tsv b/conf/evidence_snippet_baseline.tsv index 3279d770..558d594c 100644 --- a/conf/evidence_snippet_baseline.tsv +++ b/conf/evidence_snippet_baseline.tsv @@ -655,7 +655,7 @@ data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth:resp data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:electrogenic_na_h_antiport->alkaline_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:external_ph_stress->cytoplasmic_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:f1fo_atpase->cytoplasmic_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:pmf_architecture->ph_homeostasis_capacity[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet +data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:pmf_architecture->cytoplasmic_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth:weak_organic_acids->delta_ph[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro2549 has no snippet data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth:cytoplasmic_ph_homeostasis->moderate_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms12091774 has no snippet data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth:f0f1_atpase->cytoplasmic_ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms12091774 has no snippet @@ -828,7 +828,6 @@ data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_ad data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation:extracellular_polymeric_substances->freeze_thaw_cryoprotection[0] MISSING_SNIPPET WARN reference=DOI:10.37256/amtt.5220244537 has no snippet data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation:low_temperature->membrane_rigidification[0] MISSING_SNIPPET WARN reference=DOI:10.1128/spectrum.03925-23 has no snippet data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation:low_temperature->unsaturated_hopanoids[0] MISSING_SNIPPET WARN reference=DOI:10.1007/s42770-023-01057-4 has no snippet -data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation:psychrotolerant_trait->growth_at_4c[0] MISSING_SNIPPET WARN reference=DOI:10.1007/s42770-023-01057-4 has no snippet data/traits/environment/radiotolerant.yaml radiotolerance_repair_antioxidant:carotenoid_pigments->reactive_oxygen_species[0] MISSING_SNIPPET WARN reference=DOI:10.3390/su17177864 has no snippet data/traits/environment/radiotolerant.yaml radiotolerance_repair_antioxidant:dna_damage_repair->radiotolerant_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1101/cshperspect.a012765 has no snippet data/traits/environment/radiotolerant.yaml radiotolerance_repair_antioxidant:fe2_ion->reactive_oxygen_species[0] MISSING_SNIPPET WARN reference=DOI:10.1128/spectrum.03838-23 has no snippet @@ -2095,9 +2094,8 @@ data/traits/morphology/non_motile.yaml non_motile_absent_motility_apparatus:flhd data/traits/morphology/non_motile.yaml non_motile_absent_motility_apparatus:reduced_motility_state->non_motile_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01548-23 has no snippet data/traits/morphology/non_motile.yaml non_motile_absent_motility_apparatus:wspr_dgc->c_di_gmp_high[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01548-23 has no snippet data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:absent_spo0a_gene->non_spore_forming_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1128/jb.00079-22 has no snippet -data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:loss_sporulation_capacity->non_spore_forming_trait[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2021.630573 has no snippet data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:loss_sporulation_genes->non_spore_forming_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1111/1462-2920.16145 has no snippet -data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:low_spo0a_activity->loss_sporulation_capacity[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2021.630573 has no snippet +data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:low_spo0a_activity->non_spore_forming_trait[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2021.630573 has no snippet data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:no_sporulation_entry->non_spore_forming_trait[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms11081928 has no snippet data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:phosphorelay_disruption->no_sporulation_entry[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms11081928 has no snippet data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade:rap_phosphatases->spo0f_dephosphorylation[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s41522-024-00594-6 has no snippet @@ -2226,12 +2224,11 @@ data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_pac data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet:pg_hydrolases->peripheral_pg_bridge[0] MISSING_SNIPPET WARN reference=DOI:10.1002/mbo3.1338 has no snippet data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet:pg_synthetases_hydrolases->septal_pg_remodeling[0] MISSING_SNIPPET WARN reference=DOI:10.1002/mbo3.1338 has no snippet data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet:three_plane_perpendicular_division->sarcina_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/ncomms4842 has no snippet -data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:elongation_capacity->sphere_shaped_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:ftsW_flippase->lipid_ii[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:ftsZ_division_ring->divisome_pbps[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:ftsZ_treadmilling->septal_peptidoglycan_synthesis[0] MISSING_SNIPPET WARN reference=DOI:10.1042/bsr20221664 has no snippet data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:lipid_ii->septal_peptidoglycan_synthesis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet -data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:mreB_elongation_machinery->elongation_capacity[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet +data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:mreB_elongation_machinery->lateral_elongation[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan:septal_peptidoglycan_synthesis->sphere_shaped_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/nrmicro3088 has no snippet data/traits/morphology/spindle_shaped.yaml spindle_shaped_symmetric_taper:localized_pg_insertion->non_spherical_morphology[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2017.01264 has no snippet data/traits/morphology/spindle_shaped.yaml spindle_shaped_symmetric_taper:localized_pg_insertion->symmetric_polar_pg[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2017.01264 has no snippet diff --git a/data/traits/environment/nacl_delta_low.yaml b/data/traits/environment/nacl_delta_low.yaml index a5a06e84..b02390ba 100644 --- a/data/traits/environment/nacl_delta_low.yaml +++ b/data/traits/environment/nacl_delta_low.yaml @@ -65,8 +65,9 @@ causal_graphs: at higher NaCl. - node_id: salt_tolerance_breadth label: salt-tolerance breadth - node_type: CAPACITY + node_type: TRAIT description: Capacity to grow across a range of ambient NaCl concentrations. + grounding: METPO:1000622 edges: - subject: limited_osmoadaptive_flexibility predicate: confers @@ -188,3 +189,13 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Retyped node salt_tolerance_breadth from CAPACITY to TRAIT and grounded + it METPO:1000622. Issue 352. 'Capacity to grow across a range of ambient NaCl + concentrations.' Already behaves as a trait -- it carries `is a -> nacl_delta` + (METPO:1000335) -- and the record is METPO:1000479, so 1000622 collides with neither. + Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates + a real mistyped disposition from a node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/environment/oxygen_preference.yaml b/data/traits/environment/oxygen_preference.yaml index 0f475816..03c03010 100644 --- a/data/traits/environment/oxygen_preference.yaml +++ b/data/traits/environment/oxygen_preference.yaml @@ -98,8 +98,9 @@ causal_graphs: grounding: GO:0004784 - node_id: oxygen_tolerance label: oxygen tolerance - node_type: CAPACITY + node_type: TRAIT description: Capacity of a cell to survive exposure to molecular oxygen. + grounding: METPO:1000609 edges: - subject: ambient_oxygen predicate: defines @@ -300,3 +301,15 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Retyped node oxygen_tolerance from CAPACITY to TRAIT and grounded it METPO:1000609. + Issue 352. 'Capacity of a cell to survive exposure to molecular oxygen' is aerotolerance. + Distinct from all five phenotype nodes in the graph (METPO:1000601/2/3/4/612). + NOTE this is the organism-scoped sense; carboxydotrophic.yaml's same-named node + reads 'Ability of an ENZYME to function in the presence of O2' and is correctly + NOT a trait (#353). Every TRAIT node in the corpus is grounded, so requiring a + grounding is what separates a real mistyped disposition from a node that merely + restates its anchor. + llm_assisted: true diff --git a/data/traits/environment/ph_delta.yaml b/data/traits/environment/ph_delta.yaml index 40f2e30b..dc4dea23 100644 --- a/data/traits/environment/ph_delta.yaml +++ b/data/traits/environment/ph_delta.yaml @@ -72,8 +72,9 @@ causal_graphs: amines under acid stress. - node_id: low_ph_tolerance label: low-pH tolerance - node_type: CAPACITY + node_type: TRAIT description: Capacity to grow and survive under acidic external pH. + grounding: METPO:1003008 - node_id: oxidative_phosphorylation label: oxidative phosphorylation node_type: BIOLOGICAL_PROCESS @@ -216,3 +217,12 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. + Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. + The record is METPO:1000232 (pH delta), so no collision. Every TRAIT node in the + corpus is grounded, so requiring a grounding is what separates a real mistyped + disposition from a node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/environment/ph_delta_high.yaml b/data/traits/environment/ph_delta_high.yaml index bfefa5b1..99203ce1 100644 --- a/data/traits/environment/ph_delta_high.yaml +++ b/data/traits/environment/ph_delta_high.yaml @@ -78,7 +78,7 @@ causal_graphs: - node_id: growth_external_ph_5_5_9 label: growth across external pH 5.5-9.0 node_type: TRAIT - grounding: METPO:1000478 + grounding: METPO:1000332 description: Growth supported across the neutralophile external pH range ~5.5-9.0. - node_id: constant_pmf label: constant proton motive force @@ -286,3 +286,14 @@ curation_history: this record''s own ph_delta_high_trait, so it takes the same METPO:1000478; merging the two nodes is tracked in issue 352.' llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: 'Regrounded node growth_external_ph_5_5_9 to METPO:1000332. Issue 352. + Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: + this node is an ABSOLUTE external range (''~5.5-9.0''), while ph_delta_high_trait + is a BREADTH (''approximately 5-9 pH units''), which is what a pH DELTA is. 1000478 + belongs to the delta; this is a pH range (METPO:1000332). Every TRAIT node in + the corpus is grounded, so requiring a grounding is what separates a real mistyped + disposition from a node that merely restates its anchor.' + llm_assisted: true diff --git a/data/traits/environment/ph_delta_low.yaml b/data/traits/environment/ph_delta_low.yaml index 11d2752e..05b5f2a8 100644 --- a/data/traits/environment/ph_delta_low.yaml +++ b/data/traits/environment/ph_delta_low.yaml @@ -54,10 +54,6 @@ causal_graphs: node_type: BIOLOGICAL_PROCESS description: Tuning of Delta-psi and Delta-pH components of the proton motive force. - - node_id: ph_homeostasis_capacity - label: pH homeostasis capacity - node_type: CAPACITY - description: Capacity to balance and maintain cytoplasmic pH under pH stress. - node_id: weak_organic_acids label: weak organic acids node_type: CHEMICAL @@ -114,7 +110,7 @@ causal_graphs: predicate_id: METPO:2007406 - subject: pmf_architecture predicate: determines - object: ph_homeostasis_capacity + object: cytoplasmic_ph_homeostasis description: PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity. evidence: @@ -198,3 +194,14 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis. Issue + 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, + which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. + Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING + against it. Every TRAIT node in the corpus is grounded, so requiring a grounding + is what separates a real mistyped disposition from a node that merely restates + its anchor. + llm_assisted: true diff --git a/data/traits/environment/psychrotolerant.yaml b/data/traits/environment/psychrotolerant.yaml index c953c5c0..e83dc018 100644 --- a/data/traits/environment/psychrotolerant.yaml +++ b/data/traits/environment/psychrotolerant.yaml @@ -85,10 +85,6 @@ causal_graphs: label: cryoprotection against freeze-thaw cycles node_type: BIOLOGICAL_PROCESS description: Protection of cells from damage during freeze-thaw cycling. - - node_id: growth_at_4c - label: growth at 4 degrees C - node_type: CAPACITY - description: Ability to grow at refrigeration-range low temperature (4 C). edges: - subject: low_temperature predicate: decreases @@ -169,15 +165,6 @@ causal_graphs: - reference: DOI:10.37256/amtt.5220244537 notes: EPS surrounding cells play a critical role in cold adaptation by providing protection against freeze-thaw cycles and acting as cryoprotectants. - - subject: psychrotolerant_trait - predicate: has capability - object: growth_at_4c - description: The psychrotolerant trait entails the capacity to grow at low temperatures - such as 4 C while retaining higher optimal temperatures. - evidence: - - reference: DOI:10.1007/s42770-023-01057-4 - notes: Psychrotolerant/psychrotroph microbes can grow at 4 C and have optimal - growth temperatures above 20 C. curation_history: - timestamp: '2026-05-05T01:35:46.859611+00:00' curator: seed_from_metpo @@ -282,3 +269,14 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Dropped node growth_at_4c. Issue 352. 'Ability to grow at refrigeration-range + low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term + and the grounding of psychrotolerant_trait, which is the node it hangs off. A + leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response + confers, facultative_lipid_remodeling manifests as), so nothing is stranded. Every + TRAIT node in the corpus is grounded, so requiring a grounding is what separates + a real mistyped disposition from a node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/environment/slightly_halophilic.yaml b/data/traits/environment/slightly_halophilic.yaml index 73f20bc0..3540d35c 100644 --- a/data/traits/environment/slightly_halophilic.yaml +++ b/data/traits/environment/slightly_halophilic.yaml @@ -45,8 +45,9 @@ causal_graphs: description: Uptake of compatible solutes such as glycine betaine. - node_id: salt_tolerance label: salt tolerance - node_type: CAPACITY + node_type: TRAIT description: Capacity to grow and survive under elevated salinity / salt stress. + grounding: METPO:1000622 - node_id: ectoine_biosynthesis label: ectoine biosynthesis node_type: BIOLOGICAL_PROCESS @@ -274,3 +275,13 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. + Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. + The record is METPO:1000625 (slightly halophilic), so this is a distinct term + rather than a restatement of the anchor. Every TRAIT node in the corpus is grounded, + so requiring a grounding is what separates a real mistyped disposition from a + node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/morphology/non_spore_forming.yaml b/data/traits/morphology/non_spore_forming.yaml index ed481ef5..58f60f76 100644 --- a/data/traits/morphology/non_spore_forming.yaml +++ b/data/traits/morphology/non_spore_forming.yaml @@ -70,10 +70,6 @@ causal_graphs: node_type: MOLECULAR_FUNCTION description: Reduced or absent activity of the Spo0A master regulator of endospore formation. - - node_id: loss_sporulation_capacity - label: loss of sporulation capacity - node_type: CAPACITY - description: Loss of the capacity to undergo sporulation. - node_id: rap_phosphatases label: Rap phosphatases node_type: GENE_OR_PROTEIN @@ -143,22 +139,13 @@ causal_graphs: predicate_id: biolink:causes - subject: low_spo0a_activity predicate: causes - object: loss_sporulation_capacity + object: non_spore_forming_trait description: Low or absent Spo0A activity abolishes sporulation capacity. evidence: - reference: DOI:10.3389/fmicb.2021.630573 notes: Spo0A is the master regulator of endospore formation; elevated Spo0A~P is required to trigger sporulation. predicate_id: biolink:causes - - subject: loss_sporulation_capacity - predicate: manifests as - object: non_spore_forming_trait - description: Loss of sporulation capacity manifests the non-spore-forming phenotype. - evidence: - - reference: DOI:10.3389/fmicb.2021.630573 - notes: Failure to produce/activate Spo0A prevents sporulation, yielding the - non-spore-forming trait. - predicate_id: METPO:2007400 - subject: rap_phosphatases predicate: dephosphorylates object: spo0f_dephosphorylation @@ -235,3 +222,14 @@ curation_history: changes: Grounded 5 causal-edge predicate_id field(s) via mappings/predicate_grounding.tsv (biolink:causes×2, METPO:2007400×2, RO:0002212×1). llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Merged node loss_sporulation_capacity into non_spore_forming_trait. Issue + 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, + non-spore forming), so the only correct grounding duplicates the anchor. Collapsing + leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape + loss_sporulation_genes already uses in this graph. Every TRAIT node in the corpus + is grounded, so requiring a grounding is what separates a real mistyped disposition + from a node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/morphology/sphere_shaped.yaml b/data/traits/morphology/sphere_shaped.yaml index b535b499..d56c88a0 100644 --- a/data/traits/morphology/sphere_shaped.yaml +++ b/data/traits/morphology/sphere_shaped.yaml @@ -62,10 +62,6 @@ causal_graphs: label: MreB-mediated elongation machinery node_type: GENE_OR_PROTEIN description: Actin-like MreB cytoskeleton directing lateral (rod) elongation. - - node_id: elongation_capacity - label: elongation capacity - node_type: CAPACITY - description: Capacity of a cell to elongate into a rod via sidewall growth. - node_id: divisome_pbps label: divisome and PBPs node_type: GENE_OR_PROTEIN @@ -133,21 +129,13 @@ causal_graphs: predicate_id: RO:0002326 - subject: mreB_elongation_machinery predicate: causally upstream of - object: elongation_capacity + object: lateral_elongation description: Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods. evidence: - reference: DOI:10.1038/nrmicro3088 notes: loss of the MreB cytoskeleton is the main factor that prevents cocci from elongating into rods - - subject: elongation_capacity - predicate: reduced in - object: sphere_shaped_trait - description: Loss of elongation capacity prevents cocci from elongating into rods, - favoring a sphere. - evidence: - - reference: DOI:10.1038/nrmicro3088 - notes: prevents cocci from elongating into rods - subject: ftsZ_division_ring predicate: recruits object: divisome_pbps @@ -255,3 +243,13 @@ curation_history: not enablement. Needs GENE_OR_PROTEIN added to `transports`'' subject_types, which is a deliberate widening recorded there.' llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: Merged node elongation_capacity into lateral_elongation. Issue 352. 'Capacity + of a cell to elongate into a rod via sidewall growth' against lateral_elongation's + 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already + carried `reduced in -> sphere_shaped_trait`. Every TRAIT node in the corpus is + grounded, so requiring a grounding is what separates a real mistyped disposition + from a node that merely restates its anchor. + llm_assisted: true diff --git a/data/traits/physiology/catalase_activity.yaml b/data/traits/physiology/catalase_activity.yaml index b84a2fe2..a5593ae1 100644 --- a/data/traits/physiology/catalase_activity.yaml +++ b/data/traits/physiology/catalase_activity.yaml @@ -44,7 +44,6 @@ causal_graphs: label: catalase node_type: GENE_OR_PROTEIN description: Heme enzyme that dismutates hydrogen peroxide. - grounding: GO:0004096 - node_id: catalase_function label: catalase activity node_type: MOLECULAR_FUNCTION @@ -264,3 +263,13 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: 'Removed node catalase''s grounding. Issue 352. GO:0004096 is ''catalase + ACTIVITY'' -- a molecular function, which is what catalase_function is. A protein + is not its activity, and the graph already says so correctly: catalase -enables-> + catalase_function. Dropped from the protein, kept on the function. Every TRAIT + node in the corpus is grounded, so requiring a grounding is what separates a real + mistyped disposition from a node that merely restates its anchor.' + llm_assisted: true diff --git a/data/traits/physiology/urease_activity.yaml b/data/traits/physiology/urease_activity.yaml index 181157cc..43625c9c 100644 --- a/data/traits/physiology/urease_activity.yaml +++ b/data/traits/physiology/urease_activity.yaml @@ -40,7 +40,6 @@ causal_graphs: label: urease node_type: GENE_OR_PROTEIN description: Nickel metalloenzyme hydrolyzing urea. - grounding: GO:0009039 - node_id: urease_function label: urease activity node_type: MOLECULAR_FUNCTION @@ -244,3 +243,11 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true +- timestamp: '2026-08-08T02:00:00Z' + curator: claude + action: RETYPE_CAUSAL_NODE + changes: 'Removed node urease''s grounding. Issue 352. GO:0009039 is ''urease ACTIVITY''. + Same as catalase: kept on urease_function, dropped from the protein that enables + it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what + separates a real mistyped disposition from a node that merely restates its anchor.' + llm_assisted: true diff --git a/docs/CURATION_PLAYBOOK.md b/docs/CURATION_PLAYBOOK.md index 940b93c3..961fa4f4 100644 --- a/docs/CURATION_PLAYBOOK.md +++ b/docs/CURATION_PLAYBOOK.md @@ -147,6 +147,40 @@ it actually admits. The count is **0** and the audit hard-fails on a new one, so this section describes a mistake the tooling now prevents rather than a backlog to work around. +### `CAPACITY` holds two senses — only one of them is a trait + +`audit-graphs` flags `DISPOSITION_MISTYPED` when a `CAPACITY` or `STATE` +node's **description** reads as an organism disposition. The count is at +**zero** (#352), so a new one fails `just qc`. + +The distinction is not "does the word *capacity* appear". Of the corpus's +24 `CAPACITY` nodes, #352 retyped or merged 8 and deliberately left 16: + +| sense | examples | type | +|---|---|---| +| an organism's **disposition** — what it can do | *"Capacity to grow and survive under elevated salinity"*, *"Ability to grow at 4 C"* | **`TRAIT`** | +| a **reservoir or quantity** | `reducing_power` (a pool of reductants), `cytoplasmic_buffering_capacity` (*"Capacity of cytoplasmic buffers to absorb pH fluctuations"*), `swimming_velocity`, `metabolic_versatility` | **`CAPACITY`** | + +A buffer has a capacity; so does a battery. Neither is something an +organism *can do*. That is why the check is organism-scoped — *capacity of +a cell / organism / bacterium / strain to …* — rather than matching bare +*capacity to*. + +**Ground it, and ground it to something the graph does not already have.** +Every `TRAIT` node in the corpus is grounded, so a retype owes a grounding. +Requiring one is also the test that catches the commonest mistake here: if +the only correct grounding is the term the record itself carries, the node +is **restating its anchor**, not mistyped. Four of #352's eight were exactly +that, and three of those had the node they restate sitting in the same +graph, already correctly typed — they were merged, not retyped. + +**Do not read a fall in `UNREACHABLE_FROM_TRAIT` as connectivity.** A +retype creates a new anchor, so every node in that island stops being +reported while the island stays exactly as disconnected as before. #352's +retypes moved it 1303 → 1296 with `FRAGMENTED_GRAPH` flat at 218 — all +anchor effect, no connectivity. `FRAGMENTED_GRAPH` is the honest metric +(#359). + ### `enables` needs a process-or-activity object Separately from the domain rule above, `enables` (`RO:0002327`) has a diff --git a/history/infrastructure/disposition-typing-burndown/2026-08-08T014114Z-claude-code-5d4383.yaml b/history/infrastructure/disposition-typing-burndown/2026-08-08T014114Z-claude-code-5d4383.yaml new file mode 100644 index 00000000..12cc0f47 --- /dev/null +++ b/history/infrastructure/disposition-typing-burndown/2026-08-08T014114Z-claude-code-5d4383.yaml @@ -0,0 +1,37 @@ +history_version: 1 +target: + kind: infrastructure + path: scripts/migrate_disposition_typing.py + slug: disposition-typing-burndown +session: + id: 2026-08-08T014114Z-claude-code-5d4383 + timestamp: '2026-08-08T01:41:14Z' + actors: + - type: ai_agent + name: claude-code + model: claude-opus-5 + agent_tool: claude-code +links: + issues: + - https://github.com/CultureBotAI/TraitMech/issues/352 +events: +- type: EDIT + outcome: changed + sections: + - causal_graphs + - grounding + summary: Burn down the 11 baselined DISPOSITION_MISTYPED and DUPLICATE_GROUNDING findings + details: 'Resolved 11 findings across 11 trait records. Only 4 were retypes: CAPACITY nodes + whose descriptions are organism dispositions, retyped to TRAIT and grounded to METPO:1000622/1000609/1003008 + - terms distinct from the records'' own. The other 4 flagged nodes were RESTATEMENTS, + not mistypes: the only correct grounding for each was the term its own record already + carries, and for three of them the node being restated sat in the same graph already correctly + typed, so they were merged (ph_homeostasis_capacity into cytoplasmic_ph_homeostasis, elongation_capacity + into lateral_elongation, loss_sporulation_capacity collapsed onto non_spore_forming_trait) + and one leaf dropped (growth_at_4c). The 3 DUPLICATE_GROUNDING cases: growth_external_ph_5_5_9 + regrounded METPO:1000478 to METPO:1000332 (it states an absolute range, not a delta), + and catalase/urease had their GO ACTIVITY terms removed from the protein node and kept + on the function node they enable. Verified by re-running audit-graphs (both classes 8+3 + to 0) and audit-predicate-domains (stays 0). NOT an improvement in connectivity: UNREACHABLE_FROM_TRAIT + fell 1303 to 1296 purely because retyping added anchors inside existing islands, with + FRAGMENTED_GRAPH flat at 218 - filed as issue 359.' diff --git a/pages/browse.html b/pages/browse.html index a4722725..326e6b26 100644 --- a/pages/browse.html +++ b/pages/browse.html @@ -103,7 +103,7 @@

QUANTITATIVE_PROPERTY

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/ecology.html b/pages/category/ecology.html index 6f77cc59..4dffbbb0 100644 --- a/pages/category/ecology.html +++ b/pages/category/ecology.html @@ -256,7 +256,7 @@

ECOLOGY (26)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/environment.html b/pages/category/environment.html index dedbb2b5..dc09cb6c 100644 --- a/pages/category/environment.html +++ b/pages/category/environment.html @@ -1016,7 +1016,7 @@

ENVIRONMENT (121)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/genomics.html b/pages/category/genomics.html index 97d93349..7d2cbe25 100644 --- a/pages/category/genomics.html +++ b/pages/category/genomics.html @@ -200,7 +200,7 @@

GENOMICS (19)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/metabolism.html b/pages/category/metabolism.html index 7a0cc080..bc0111d3 100644 --- a/pages/category/metabolism.html +++ b/pages/category/metabolism.html @@ -1192,7 +1192,7 @@

METABOLISM (143)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/morphology.html b/pages/category/morphology.html index 9ba5f9d3..013b80ff 100644 --- a/pages/category/morphology.html +++ b/pages/category/morphology.html @@ -752,7 +752,7 @@

MORPHOLOGY (88)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/observation.html b/pages/category/observation.html index bf07ff6f..77697a0b 100644 --- a/pages/category/observation.html +++ b/pages/category/observation.html @@ -208,7 +208,7 @@

OBSERVATION (20)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/physiology.html b/pages/category/physiology.html index fac54ec6..1acc0be8 100644 --- a/pages/category/physiology.html +++ b/pages/category/physiology.html @@ -408,7 +408,7 @@

PHYSIOLOGY (45)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/quantitative_property.html b/pages/category/quantitative_property.html index 485dd014..10654887 100644 --- a/pages/category/quantitative_property.html +++ b/pages/category/quantitative_property.html @@ -104,7 +104,7 @@

QUANTITATIVE_PROPERTY (7)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/upper.html b/pages/category/upper.html index 46161b1e..7deb111c 100644 --- a/pages/category/upper.html +++ b/pages/category/upper.html @@ -112,7 +112,7 @@

UPPER (8)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/graph.html b/pages/graph.html index c6f82ded..0ab79a06 100644 --- a/pages/graph.html +++ b/pages/graph.html @@ -239,7 +239,7 @@

Trait graph layout (sfdp)

METPO
- Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/nacl_delta_low.html b/pages/traits/environment/nacl_delta_low.html index 42ea47c5..24ecd97e 100644 --- a/pages/traits/environment/nacl_delta_low.html +++ b/pages/traits/environment/nacl_delta_low.html @@ -437,6 +437,12 @@

Curation history

Re-grounded 1 causal edge(s) off microbe-domain METPO predicates (1 to confers), issue 301. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Edge directions are unchanged - this pass only relabels and re-grounds. RO:0002234 (has output) is used where the subject is an activity, since biolink gives it the domain 'biological process or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them.

+
  • + · + RETYPE_CAUSAL_NODE · claude +

    Retyped node salt_tolerance_breadth from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow across a range of ambient NaCl concentrations.' Already behaves as a trait -- it carries `is a -> nacl_delta` (METPO:1000335) -- and the record is METPO:1000479, so 1000622 collides with neither. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -794,7 +800,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking limited osmoadaptive flexibility to a narrow NaCl growth breadth (\u2264 ~1% w/v).", "edges": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_osmoadaptive_flexibility", "target": "nacl_delta_low_trait"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "nacl_delta_low_trait", "target": "nacl_delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-3", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "ectoine_biosynthesis", "target": "salt_tolerance_breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "compatible_solute_transporters", "target": "limited_osmoadaptive_flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "trkh_k_uptake", "target": "salt_tolerance_breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "nhac_antiporter", "target": "salt_tolerance_breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "id": "edge-7", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "intracellular_proline", "target": "salt_tolerance_breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "id": "edge-8", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt_tolerance_breadth", "target": "nacl_delta"}], "evidence_rows": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited osmoadaptive flexibility", "target": "NaCl delta low"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "NaCl delta low", "target": "NaCl delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "edge_id": "edge-3", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "supports", "predicate_id": null, "source": "ectoine biosynthesis capacity", "target": "salt-tolerance breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "edge_id": "edge-4", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "compatible-solute transporters (Opu/ProU)", "target": "limited osmoadaptive flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "edge_id": "edge-5", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "TrkH potassium uptake system", "target": "salt-tolerance breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "edge_id": "edge-6", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "NhaC-family Na+/H+ antiporter", "target": "salt-tolerance breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "predicate": "supports", "predicate_id": null, "source": "intracellular proline accumulation", "target": "salt-tolerance breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "edge_id": "edge-8", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt-tolerance breadth", "target": "NaCl delta"}], "graph_id": "nacl_delta_low_stenohaline", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Opu/ProU-family uptake systems importing compatible solutes during osmoadaptation.", "grounding": null, "id": "compatible_solute_transporters", "is_orphan": false, "label": "compatible-solute transporters (Opu/ProU)", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to synthesize ectoine as a major compatible solute under salt stress.", "grounding": null, "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis capacity", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Accumulation of proline as a compatible solute supporting growth at higher NaCl.", "grounding": null, "id": "intracellular_proline", "is_orphan": false, "label": "intracellular proline accumulation", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Narrow capacity to remodel osmolyte pools and ion transport across ambient salinities.", "grounding": null, "id": "limited_osmoadaptive_flexibility", "is_orphan": false, "label": "limited osmoadaptive flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting NaCl range.", "grounding": "METPO:1000335", "id": "nacl_delta", "is_orphan": false, "label": "NaCl delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "NaCl growth-supporting breadth \u2264 ~1% w/v.", "grounding": "METPO:1000479", "id": "nacl_delta_low_trait", "is_orphan": false, "label": "NaCl delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "NhaC-family Na+/H+ antiporters mediating ion homeostasis under salt stress.", "grounding": null, "id": "nhac_antiporter", "is_orphan": false, "label": "NhaC-family Na+/H+ antiporter", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity to grow across a range of ambient NaCl concentrations.", "grounding": null, "id": "salt_tolerance_breadth", "is_orphan": false, "label": "salt-tolerance breadth", "node_type": "CAPACITY", "xrefs": []}, {"color": "#f3e8ff", "description": "TrkH-type K+ uptake transporter supporting intracellular potassium homeostasis under salt stress.", "grounding": null, "id": "trkh_k_uptake", "is_orphan": false, "label": "TrkH potassium uptake system", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "NaCl-delta-low stenohaline breadth"}]; + var graphs = [{"description": "DOI-backed graph linking limited osmoadaptive flexibility to a narrow NaCl growth breadth (\u2264 ~1% w/v).", "edges": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_osmoadaptive_flexibility", "target": "nacl_delta_low_trait"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "nacl_delta_low_trait", "target": "nacl_delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-3", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "ectoine_biosynthesis", "target": "salt_tolerance_breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "compatible_solute_transporters", "target": "limited_osmoadaptive_flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "trkh_k_uptake", "target": "salt_tolerance_breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "nhac_antiporter", "target": "salt_tolerance_breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "id": "edge-7", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "intracellular_proline", "target": "salt_tolerance_breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "id": "edge-8", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt_tolerance_breadth", "target": "nacl_delta"}], "evidence_rows": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited osmoadaptive flexibility", "target": "NaCl delta low"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "NaCl delta low", "target": "NaCl delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "edge_id": "edge-3", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "supports", "predicate_id": null, "source": "ectoine biosynthesis capacity", "target": "salt-tolerance breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "edge_id": "edge-4", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "compatible-solute transporters (Opu/ProU)", "target": "limited osmoadaptive flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "edge_id": "edge-5", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "TrkH potassium uptake system", "target": "salt-tolerance breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "edge_id": "edge-6", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "NhaC-family Na+/H+ antiporter", "target": "salt-tolerance breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "predicate": "supports", "predicate_id": null, "source": "intracellular proline accumulation", "target": "salt-tolerance breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "edge_id": "edge-8", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt-tolerance breadth", "target": "NaCl delta"}], "graph_id": "nacl_delta_low_stenohaline", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Opu/ProU-family uptake systems importing compatible solutes during osmoadaptation.", "grounding": null, "id": "compatible_solute_transporters", "is_orphan": false, "label": "compatible-solute transporters (Opu/ProU)", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to synthesize ectoine as a major compatible solute under salt stress.", "grounding": null, "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis capacity", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Accumulation of proline as a compatible solute supporting growth at higher NaCl.", "grounding": null, "id": "intracellular_proline", "is_orphan": false, "label": "intracellular proline accumulation", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Narrow capacity to remodel osmolyte pools and ion transport across ambient salinities.", "grounding": null, "id": "limited_osmoadaptive_flexibility", "is_orphan": false, "label": "limited osmoadaptive flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting NaCl range.", "grounding": "METPO:1000335", "id": "nacl_delta", "is_orphan": false, "label": "NaCl delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "NaCl growth-supporting breadth \u2264 ~1% w/v.", "grounding": "METPO:1000479", "id": "nacl_delta_low_trait", "is_orphan": false, "label": "NaCl delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "NhaC-family Na+/H+ antiporters mediating ion homeostasis under salt stress.", "grounding": null, "id": "nhac_antiporter", "is_orphan": false, "label": "NhaC-family Na+/H+ antiporter", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow across a range of ambient NaCl concentrations.", "grounding": "METPO:1000622", "id": "salt_tolerance_breadth", "is_orphan": false, "label": "salt-tolerance breadth", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "TrkH-type K+ uptake transporter supporting intracellular potassium homeostasis under salt stress.", "grounding": null, "id": "trkh_k_uptake", "is_orphan": false, "label": "TrkH potassium uptake system", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "NaCl-delta-low stenohaline breadth"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -817,7 +823,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 01:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/oxygen_preference.html b/pages/traits/environment/oxygen_preference.html index 94b08624..0196b963 100644 --- a/pages/traits/environment/oxygen_preference.html +++ b/pages/traits/environment/oxygen_preference.html @@ -565,6 +565,12 @@

    Curation history

    Re-grounded 1 causal edge(s) off microbe-domain METPO predicates onto their causal-graph counterparts (1 to degrades), issue 301 part 2. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Each replacement is a 1:1 mirror of its source predicate that changes only the domain, so the claim each edge makes is unchanged and directions are unchanged. The replacements are proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Retyped node oxygen_tolerance from CAPACITY to TRAIT and grounded it METPO:1000609. Issue 352. 'Capacity of a cell to survive exposure to molecular oxygen' is aerotolerance. Distinct from all five phenotype nodes in the graph (METPO:1000601/2/3/4/612). NOTE this is the organism-scoped sense; carboxydotrophic.yaml's same-named node reads 'Ability of an ENZYME to function in the presence of O2' and is correctly NOT a trait (#353). Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -922,7 +928,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking ambient molecular-oxygen availability to the four child oxygen-preference phenotypes (aerobic, anaerobic, microaerophilic, facultative) that classify how organisms use or tolerate O2.", "edges": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "id": "edge-1", "is_orphan": false, "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient_oxygen", "target": "oxygen_preference_trait"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "id": "edge-3", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "id": "edge-4", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "id": "edge-5", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative_phenotype", "target": "oxygen_preference_trait"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-6", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "oxygen_terminal_electron_acceptor", "target": "aerobic_phenotype"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-7", "is_orphan": false, "predicate": "serves as", "predicate_id": null, "source": "molecular_oxygen", "target": "oxygen_terminal_electron_acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-8", "is_orphan": false, "predicate": "upregulates", "predicate_id": null, "source": "reactive_oxygen_species_stress", "target": "detoxifying_enzyme_expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying_enzyme_expression", "target": "oxygen_tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-10", "is_orphan": false, "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen_peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-11", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide_dismutase", "target": "oxygen_tolerance"}], "evidence_rows": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "edge_id": "edge-1", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient molecular oxygen", "target": "oxygen preference"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic", "target": "oxygen preference"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "edge_id": "edge-3", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic", "target": "oxygen preference"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "edge_id": "edge-4", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic", "target": "oxygen preference"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative oxygen preference", "target": "oxygen preference"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "edge_id": "edge-6", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "O2 as terminal electron acceptor", "target": "aerobic"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "edge_id": "edge-7", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "serves as", "predicate_id": null, "source": "molecular oxygen", "target": "O2 as terminal electron acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "edge_id": "edge-8", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "upregulates", "predicate_id": null, "source": "oxygen / reactive oxygen species stress", "target": "detoxifying-enzyme gene expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "edge_id": "edge-9", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying-enzyme gene expression", "target": "oxygen tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "edge_id": "edge-10", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "edge_id": "edge-11", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide dismutase", "target": "oxygen tolerance"}], "graph_id": "oxygen_preference_o2_availability_axis", "issues": [], "nodes": [{"color": "#dbeafe", "description": "Growth in the presence of molecular oxygen using O2 as terminal electron acceptor.", "grounding": "METPO:1000602", "id": "aerobic_phenotype", "is_orphan": false, "label": "aerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient O2 concentration imposed on the cell.", "grounding": null, "id": "ambient_oxygen", "is_orphan": false, "label": "ambient molecular oxygen", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#dbeafe", "description": "Growth in the absence of molecular oxygen.", "grounding": "METPO:1000603", "id": "anaerobic_phenotype", "is_orphan": false, "label": "anaerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that degrades hydrogen peroxide to water and oxygen.", "grounding": "GO:0004096", "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Upregulation of genes encoding oxidative-stress detoxifying enzymes.", "grounding": null, "id": "detoxifying_enzyme_expression", "is_orphan": false, "label": "detoxifying-enzyme gene expression", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Growth across a range of oxygen availabilities, switching between aerobic and anaerobic metabolism.", "grounding": "METPO:1000612", "id": "facultative_phenotype", "is_orphan": false, "label": "facultative oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species produced during aerobic metabolism.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low molecular-oxygen concentrations.", "grounding": "METPO:1000604", "id": "microaerophilic_phenotype", "is_orphan": false, "label": "microaerophilic", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "O2 used as a terminal electron acceptor in aerobic respiration.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Classification of an organism\u0027s oxygen requirements or tolerance for growth.", "grounding": "METPO:1000601", "id": "oxygen_preference_trait", "is_orphan": false, "label": "oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Use of molecular oxygen as the terminal electron acceptor of the respiratory chain.", "grounding": null, "id": "oxygen_terminal_electron_acceptor", "is_orphan": false, "label": "O2 as terminal electron acceptor", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity of a cell to survive exposure to molecular oxygen.", "grounding": null, "id": "oxygen_tolerance", "is_orphan": false, "label": "oxygen tolerance", "node_type": "CAPACITY", "xrefs": []}, {"color": "#dcfce7", "description": "Exposure to O2 and reactive oxygen species such as hydrogen peroxide.", "grounding": null, "id": "reactive_oxygen_species_stress", "is_orphan": false, "label": "oxygen / reactive oxygen species stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that dismutates superoxide; key oxidative-stress defense.", "grounding": "GO:0004784", "id": "superoxide_dismutase", "is_orphan": false, "label": "superoxide dismutase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "Oxygen-preference O2-availability axis"}]; + var graphs = [{"description": "DOI-backed graph linking ambient molecular-oxygen availability to the four child oxygen-preference phenotypes (aerobic, anaerobic, microaerophilic, facultative) that classify how organisms use or tolerate O2.", "edges": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "id": "edge-1", "is_orphan": false, "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient_oxygen", "target": "oxygen_preference_trait"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "id": "edge-3", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "id": "edge-4", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "id": "edge-5", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative_phenotype", "target": "oxygen_preference_trait"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-6", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "oxygen_terminal_electron_acceptor", "target": "aerobic_phenotype"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-7", "is_orphan": false, "predicate": "serves as", "predicate_id": null, "source": "molecular_oxygen", "target": "oxygen_terminal_electron_acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-8", "is_orphan": false, "predicate": "upregulates", "predicate_id": null, "source": "reactive_oxygen_species_stress", "target": "detoxifying_enzyme_expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying_enzyme_expression", "target": "oxygen_tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-10", "is_orphan": false, "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen_peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-11", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide_dismutase", "target": "oxygen_tolerance"}], "evidence_rows": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "edge_id": "edge-1", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient molecular oxygen", "target": "oxygen preference"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic", "target": "oxygen preference"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "edge_id": "edge-3", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic", "target": "oxygen preference"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "edge_id": "edge-4", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic", "target": "oxygen preference"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative oxygen preference", "target": "oxygen preference"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "edge_id": "edge-6", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "O2 as terminal electron acceptor", "target": "aerobic"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "edge_id": "edge-7", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "serves as", "predicate_id": null, "source": "molecular oxygen", "target": "O2 as terminal electron acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "edge_id": "edge-8", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "upregulates", "predicate_id": null, "source": "oxygen / reactive oxygen species stress", "target": "detoxifying-enzyme gene expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "edge_id": "edge-9", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying-enzyme gene expression", "target": "oxygen tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "edge_id": "edge-10", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "edge_id": "edge-11", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide dismutase", "target": "oxygen tolerance"}], "graph_id": "oxygen_preference_o2_availability_axis", "issues": [], "nodes": [{"color": "#dbeafe", "description": "Growth in the presence of molecular oxygen using O2 as terminal electron acceptor.", "grounding": "METPO:1000602", "id": "aerobic_phenotype", "is_orphan": false, "label": "aerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient O2 concentration imposed on the cell.", "grounding": null, "id": "ambient_oxygen", "is_orphan": false, "label": "ambient molecular oxygen", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#dbeafe", "description": "Growth in the absence of molecular oxygen.", "grounding": "METPO:1000603", "id": "anaerobic_phenotype", "is_orphan": false, "label": "anaerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that degrades hydrogen peroxide to water and oxygen.", "grounding": "GO:0004096", "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Upregulation of genes encoding oxidative-stress detoxifying enzymes.", "grounding": null, "id": "detoxifying_enzyme_expression", "is_orphan": false, "label": "detoxifying-enzyme gene expression", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Growth across a range of oxygen availabilities, switching between aerobic and anaerobic metabolism.", "grounding": "METPO:1000612", "id": "facultative_phenotype", "is_orphan": false, "label": "facultative oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species produced during aerobic metabolism.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low molecular-oxygen concentrations.", "grounding": "METPO:1000604", "id": "microaerophilic_phenotype", "is_orphan": false, "label": "microaerophilic", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "O2 used as a terminal electron acceptor in aerobic respiration.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Classification of an organism\u0027s oxygen requirements or tolerance for growth.", "grounding": "METPO:1000601", "id": "oxygen_preference_trait", "is_orphan": false, "label": "oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Use of molecular oxygen as the terminal electron acceptor of the respiratory chain.", "grounding": null, "id": "oxygen_terminal_electron_acceptor", "is_orphan": false, "label": "O2 as terminal electron acceptor", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity of a cell to survive exposure to molecular oxygen.", "grounding": "METPO:1000609", "id": "oxygen_tolerance", "is_orphan": false, "label": "oxygen tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Exposure to O2 and reactive oxygen species such as hydrogen peroxide.", "grounding": null, "id": "reactive_oxygen_species_stress", "is_orphan": false, "label": "oxygen / reactive oxygen species stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that dismutates superoxide; key oxidative-stress defense.", "grounding": "GO:0004784", "id": "superoxide_dismutase", "is_orphan": false, "label": "superoxide dismutase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "Oxygen-preference O2-availability axis"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -945,7 +951,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 02:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta.html b/pages/traits/environment/ph_delta.html index 0a246967..5d44ad9e 100644 --- a/pages/traits/environment/ph_delta.html +++ b/pages/traits/environment/ph_delta.html @@ -478,6 +478,12 @@

    Curation history

    Migrated 1 causal edge(s) off enables/RO:0002327 with a TRAIT object (1 to confers), issue 302. RO:0002327 has range 'biological process or activity', which a trait (a disposition) cannot satisfy, so the previous form entailed trait is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. The record is METPO:1000232 (pH delta), so no collision. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -835,7 +841,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking the flexibility of pH-homeostasis machinery to the breadth of the pH growth range (delta = max \u2212 min).", "edges": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ph_homeostasis_flexibility", "target": "tolerance_breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "tolerance_breadth", "target": "ph_delta_trait"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "ph_homeostasis", "target": "ph_delta_trait"}, {"description": "Proton motive force generation supports external pH homeostasis.", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "proton_motive_force_generation", "target": "ph_homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "f0f1_atpase_activity", "target": "ph_homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "cation_proton_antiporter_activity", "target": "ph_homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "id": "edge-7", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_remodeling", "target": "proton_permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino_acid_decarboxylase_acid_resistance", "target": "low_ph_tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "oxidative_phosphorylation", "target": "ph_homeostasis"}], "evidence_rows": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "pH-homeostasis flexibility", "target": "pH tolerance breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "pH tolerance breadth", "target": "pH delta"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "edge_id": "edge-3", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "external pH homeostasis", "target": "pH delta"}, {"description": "Proton motive force generation supports external pH homeostasis.", "edge_id": "edge-4", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "proton motive force generation", "target": "external pH homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "F0F1-ATPase activity", "target": "external pH homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "edge_id": "edge-6", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "predicate": "supports", "predicate_id": null, "source": "monovalent cation:H+ antiporter activity", "target": "external pH homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "edge_id": "edge-7", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "saturated membrane fatty acid remodeling", "target": "membrane proton permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino-acid decarboxylase acid-resistance system", "target": "low-pH tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "edge_id": "edge-9", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "predicate": "supports", "predicate_id": null, "source": "oxidative phosphorylation", "target": "external pH homeostasis"}], "graph_id": "ph_delta_homeostasis_flexibility", "issues": [], "nodes": [{"color": "#e0e7ff", "description": "Decarboxylase systems that consume intracellular protons and export amines under acid stress.", "grounding": null, "id": "amino_acid_decarboxylase_acid_resistance", "is_orphan": false, "label": "amino-acid decarboxylase acid-resistance system", "node_type": "PATHWAY", "xrefs": []}, {"color": "#cffafe", "description": "Exchange of Na+/K+ for H+ to support pH homeostasis, notably under alkaline conditions.", "grounding": null, "id": "cation_proton_antiporter_activity", "is_orphan": false, "label": "monovalent cation:H+ antiporter activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#cffafe", "description": "F-type H+-transporting ATPase coupling proton flux to ATP synthesis/hydrolysis.", "grounding": null, "id": "f0f1_atpase_activity", "is_orphan": false, "label": "F0F1-ATPase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity to grow and survive under acidic external pH.", "grounding": null, "id": "low_ph_tolerance", "is_orphan": false, "label": "low-pH tolerance", "node_type": "CAPACITY", "xrefs": []}, {"color": "#ecfccb", "description": "Enrichment of saturated membrane fatty acids that reduces membrane proton permeability.", "grounding": null, "id": "membrane_lipid_remodeling", "is_orphan": false, "label": "saturated membrane fatty acid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Respiratory generation of PMF and proton export contributing to cytoplasmic pH defense.", "grounding": "GO:0006119", "id": "oxidative_phosphorylation", "is_orphan": false, "label": "oxidative phosphorylation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta_trait", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of intracellular pH within viable bounds across external pH variation.", "grounding": null, "id": "ph_homeostasis", "is_orphan": false, "label": "external pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to remodel proton extrusion, K+/H+ antiport, and envelope buffering across a wide span of external pH.", "grounding": null, "id": "ph_homeostasis_flexibility", "is_orphan": false, "label": "pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Establishment of the transmembrane electrochemical proton gradient.", "grounding": null, "id": "proton_motive_force_generation", "is_orphan": false, "label": "proton motive force generation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Passive permeability of the cell membrane to protons.", "grounding": null, "id": "proton_permeability", "is_orphan": false, "label": "membrane proton permeability", "node_type": "QUALITY", "xrefs": []}, {"color": "#ecfccb", "description": "Span between the minimum and maximum growth-supporting external pH.", "grounding": null, "id": "tolerance_breadth", "is_orphan": false, "label": "pH tolerance breadth", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "pH-delta homeostasis flexibility"}]; + var graphs = [{"description": "DOI-backed graph linking the flexibility of pH-homeostasis machinery to the breadth of the pH growth range (delta = max \u2212 min).", "edges": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ph_homeostasis_flexibility", "target": "tolerance_breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "tolerance_breadth", "target": "ph_delta_trait"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "ph_homeostasis", "target": "ph_delta_trait"}, {"description": "Proton motive force generation supports external pH homeostasis.", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "proton_motive_force_generation", "target": "ph_homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "f0f1_atpase_activity", "target": "ph_homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "cation_proton_antiporter_activity", "target": "ph_homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "id": "edge-7", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_remodeling", "target": "proton_permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino_acid_decarboxylase_acid_resistance", "target": "low_ph_tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "oxidative_phosphorylation", "target": "ph_homeostasis"}], "evidence_rows": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "pH-homeostasis flexibility", "target": "pH tolerance breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "pH tolerance breadth", "target": "pH delta"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "edge_id": "edge-3", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "external pH homeostasis", "target": "pH delta"}, {"description": "Proton motive force generation supports external pH homeostasis.", "edge_id": "edge-4", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "proton motive force generation", "target": "external pH homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "F0F1-ATPase activity", "target": "external pH homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "edge_id": "edge-6", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "predicate": "supports", "predicate_id": null, "source": "monovalent cation:H+ antiporter activity", "target": "external pH homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "edge_id": "edge-7", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "saturated membrane fatty acid remodeling", "target": "membrane proton permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino-acid decarboxylase acid-resistance system", "target": "low-pH tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "edge_id": "edge-9", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "predicate": "supports", "predicate_id": null, "source": "oxidative phosphorylation", "target": "external pH homeostasis"}], "graph_id": "ph_delta_homeostasis_flexibility", "issues": [], "nodes": [{"color": "#e0e7ff", "description": "Decarboxylase systems that consume intracellular protons and export amines under acid stress.", "grounding": null, "id": "amino_acid_decarboxylase_acid_resistance", "is_orphan": false, "label": "amino-acid decarboxylase acid-resistance system", "node_type": "PATHWAY", "xrefs": []}, {"color": "#cffafe", "description": "Exchange of Na+/K+ for H+ to support pH homeostasis, notably under alkaline conditions.", "grounding": null, "id": "cation_proton_antiporter_activity", "is_orphan": false, "label": "monovalent cation:H+ antiporter activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#cffafe", "description": "F-type H+-transporting ATPase coupling proton flux to ATP synthesis/hydrolysis.", "grounding": null, "id": "f0f1_atpase_activity", "is_orphan": false, "label": "F0F1-ATPase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow and survive under acidic external pH.", "grounding": "METPO:1003008", "id": "low_ph_tolerance", "is_orphan": false, "label": "low-pH tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Enrichment of saturated membrane fatty acids that reduces membrane proton permeability.", "grounding": null, "id": "membrane_lipid_remodeling", "is_orphan": false, "label": "saturated membrane fatty acid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Respiratory generation of PMF and proton export contributing to cytoplasmic pH defense.", "grounding": "GO:0006119", "id": "oxidative_phosphorylation", "is_orphan": false, "label": "oxidative phosphorylation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta_trait", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of intracellular pH within viable bounds across external pH variation.", "grounding": null, "id": "ph_homeostasis", "is_orphan": false, "label": "external pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to remodel proton extrusion, K+/H+ antiport, and envelope buffering across a wide span of external pH.", "grounding": null, "id": "ph_homeostasis_flexibility", "is_orphan": false, "label": "pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Establishment of the transmembrane electrochemical proton gradient.", "grounding": null, "id": "proton_motive_force_generation", "is_orphan": false, "label": "proton motive force generation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Passive permeability of the cell membrane to protons.", "grounding": null, "id": "proton_permeability", "is_orphan": false, "label": "membrane proton permeability", "node_type": "QUALITY", "xrefs": []}, {"color": "#ecfccb", "description": "Span between the minimum and maximum growth-supporting external pH.", "grounding": null, "id": "tolerance_breadth", "is_orphan": false, "label": "pH tolerance breadth", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "pH-delta homeostasis flexibility"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -858,7 +864,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 00:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_high.html b/pages/traits/environment/ph_delta_high.html index 023a1504..bd9e6fec 100644 --- a/pages/traits/environment/ph_delta_high.html +++ b/pages/traits/environment/ph_delta_high.html @@ -501,6 +501,12 @@

    Curation history

    Grounded the retyped TRAIT node, issue 334 review. docs/CURATION_PLAYBOOK.md requires every TRAIT row to carry a grounding, and 462 of 482 TRAIT nodes in the corpus do, so leaving a newly retyped one ungrounded was the exception rather than the norm. It also mattered more than hygiene: an ungrounded TRAIT node still counts as a reachability anchor for audit-graphs, so it made UNREACHABLE_FROM_TRAIT fall on this graph without any edge changing -- the island is unchanged and FRAGMENTED_GRAPH still reports it. Grounding it makes the duplication legible instead of leaving two unrelated-looking anchors. growth_external_ph_5_5_9 is the same concept as this record's own ph_delta_high_trait, so it takes the same METPO:1000478; merging the two nodes is tracked in issue 352.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Regrounded node growth_external_ph_5_5_9 to METPO:1000332. Issue 352. Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: this node is an ABSOLUTE external range ('~5.5-9.0'), while ph_delta_high_trait is a BREADTH ('approximately 5-9 pH units'), which is what a pH DELTA is. 1000478 belongs to the delta; this is a pH range (METPO:1000332). Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -858,7 +864,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking maximal pH-homeostasis flexibility to a pH growth breadth of approximately 5\u20139 pH units.", "edges": [{"description": "Maximal pH-homeostasis flexibility yields an extreme pH-delta breadth.", "evidence": [{"notes": "Supports maximal pH-homeostasis flexibility as the basis of euryphilic breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "maximal_ph_homeostasis", "target": "ph_delta_high_trait"}, {"description": "pH delta high is a quantitative bin of the pH-delta phenotype.", "evidence": [{"notes": "Supports the 5\u20139 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "ph_delta_high_trait", "target": "ph_delta"}, {"description": "Na+/H+ antiport is a core regulator of cytoplasmic pH across changing external pH.", "evidence": [{"notes": "Key regulators of bacterial pH homeostasis are Na+/H+ and K+/H+ antiporters.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "na_h_antiporters", "target": "ph_delta_high_trait"}, {"description": "Electron-transport proton pumps counteract pH stress by controlling proton flux.", "evidence": [{"notes": "Proton-pumping enzymes (electron transport components) are major homeostasis regulators.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "helps maintain", "predicate_id": null, "source": "respiratory_proton_pumps", "target": "cytoplasmic_ph_homeostasis"}, {"description": "F0F1-ATPase participates in pH homeostasis via proton extrusion or uptake.", "evidence": [{"notes": "F0F1-ATPase is named among key regulators of bacterial pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "f0f1_atpase", "target": "ph_delta_high_trait"}, {"description": "Proton-consuming decarboxylation pathways support broad pH tolerance.", "evidence": [{"notes": "Metabolite decarboxylation pathways are key regulators of pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-6", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "metabolite_decarboxylation", "target": "ph_delta_high_trait"}, {"description": "High buffering capacity limits pH swings, enabling broader pH tolerance.", "evidence": [{"notes": "Internal pH kept ~7.0-7.5 as buffers absorb fluctuations.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-7", "is_orphan": false, "predicate": "stabilizes", "predicate_id": null, "source": "cytoplasmic_buffering_capacity", "target": "cytoplasmic_ph_homeostasis"}, {"description": "Neutralophiles maintain narrow internal pH while growing over a broad external range.", "evidence": [{"notes": "Neutralophiles grow at external pH ~5.5-9.0 while maintaining cytoplasmic pH ~7.5-7.7.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-8", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "near_neutral_cytoplasmic_ph", "target": "growth_external_ph_5_5_9"}, {"description": "A relatively constant PMF across external pH is a hallmark of broad pH tolerance.", "evidence": [{"notes": "PMF of neutralophilic bacteria kept relatively constant over pH 5 to 8.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "constant_pmf", "target": "ph_delta_high_trait"}, {"description": "Membrane/porin composition changes lower proton leak during acid stress.", "evidence": [{"notes": "Membrane lipid and porin composition changes minimize inward proton leakage during acid stress.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-10", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_porin_changes", "target": "inward_proton_leakage"}], "evidence_rows": [{"description": "Maximal pH-homeostasis flexibility yields an extreme pH-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports maximal pH-homeostasis flexibility as the basis of euryphilic breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "maximal pH-homeostasis flexibility", "target": "pH delta high"}, {"description": "pH delta high is a quantitative bin of the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the 5\u20139 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "pH delta high", "target": "pH delta"}, {"description": "Na+/H+ antiport is a core regulator of cytoplasmic pH across changing external pH.", "edge_id": "edge-3", "evidence": [{"notes": "Key regulators of bacterial pH homeostasis are Na+/H+ and K+/H+ antiporters.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "Na+/H+ antiporters", "target": "pH delta high"}, {"description": "Electron-transport proton pumps counteract pH stress by controlling proton flux.", "edge_id": "edge-4", "evidence": [{"notes": "Proton-pumping enzymes (electron transport components) are major homeostasis regulators.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "helps maintain", "predicate_id": null, "source": "respiratory proton-pumping enzymes", "target": "cytoplasmic pH homeostasis"}, {"description": "F0F1-ATPase participates in pH homeostasis via proton extrusion or uptake.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase is named among key regulators of bacterial pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "F0F1-ATPase", "target": "pH delta high"}, {"description": "Proton-consuming decarboxylation pathways support broad pH tolerance.", "edge_id": "edge-6", "evidence": [{"notes": "Metabolite decarboxylation pathways are key regulators of pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "metabolite decarboxylation pathways", "target": "pH delta high"}, {"description": "High buffering capacity limits pH swings, enabling broader pH tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Internal pH kept ~7.0-7.5 as buffers absorb fluctuations.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "stabilizes", "predicate_id": null, "source": "cytoplasmic buffering capacity", "target": "cytoplasmic pH homeostasis"}, {"description": "Neutralophiles maintain narrow internal pH while growing over a broad external range.", "edge_id": "edge-8", "evidence": [{"notes": "Neutralophiles grow at external pH ~5.5-9.0 while maintaining cytoplasmic pH ~7.5-7.7.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "near-neutral cytoplasmic pH", "target": "growth across external pH 5.5-9.0"}, {"description": "A relatively constant PMF across external pH is a hallmark of broad pH tolerance.", "edge_id": "edge-9", "evidence": [{"notes": "PMF of neutralophilic bacteria kept relatively constant over pH 5 to 8.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "constant proton motive force", "target": "pH delta high"}, {"description": "Membrane/porin composition changes lower proton leak during acid stress.", "edge_id": "edge-10", "evidence": [{"notes": "Membrane lipid and porin composition changes minimize inward proton leakage during acid stress.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane lipid/porin composition changes", "target": "inward proton leakage"}], "graph_id": "ph_delta_high_euryphilic_breadth", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Relatively constant PMF maintained across external pH changes.", "grounding": null, "id": "constant_pmf", "is_orphan": false, "label": "constant proton motive force", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Intracellular buffering that limits pH swings in the bacterial cytoplasm.", "grounding": null, "id": "cytoplasmic_buffering_capacity", "is_orphan": false, "label": "cytoplasmic buffering capacity", "node_type": "CAPACITY", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of near-neutral internal pH despite external pH variation.", "grounding": "GO:0051453", "id": "cytoplasmic_ph_homeostasis", "is_orphan": false, "label": "cytoplasmic pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Proton-translocating ATP synthase contributing to proton extrusion/uptake in pH homeostasis.", "grounding": null, "id": "f0f1_atpase", "is_orphan": false, "label": "F0F1-ATPase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Growth supported across the neutralophile external pH range ~5.5-9.0.", "grounding": "METPO:1000478", "id": "growth_external_ph_5_5_9", "is_orphan": false, "label": "growth across external pH 5.5-9.0", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Passive inward flux of protons that acidifies the cytoplasm.", "grounding": null, "id": "inward_proton_leakage", "is_orphan": false, "label": "inward proton leakage", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Combined proton-extrusion and Na+/H+ antiport flexibility supporting growth across an extreme pH span.", "grounding": null, "id": "maximal_ph_homeostasis", "is_orphan": false, "label": "maximal pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Structural changes in membrane lipids and porins during pH stress.", "grounding": null, "id": "membrane_lipid_porin_changes", "is_orphan": false, "label": "membrane lipid/porin composition changes", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#e0e7ff", "description": "Proton-consuming decarboxylation pathways that reduce intracellular acidification.", "grounding": null, "id": "metabolite_decarboxylation", "is_orphan": false, "label": "metabolite decarboxylation pathways", "node_type": "PATHWAY", "xrefs": []}, {"color": "#f3e8ff", "description": "Sodium:proton antiporters, core regulators of cytoplasmic pH across changing external pH.", "grounding": null, "id": "na_h_antiporters", "is_orphan": false, "label": "Na+/H+ antiporters", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3f4f6", "description": "Internal pH maintained near 7.5 while external pH varies.", "grounding": null, "id": "near_neutral_cytoplasmic_ph", "is_orphan": false, "label": "near-neutral cytoplasmic pH", "node_type": "QUALITY", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "pH growth-supporting breadth approximately 5\u20139 pH units.", "grounding": "METPO:1000478", "id": "ph_delta_high_trait", "is_orphan": false, "label": "pH delta high", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Electron-transport-chain proton pumps that control proton flux during pH stress.", "grounding": null, "id": "respiratory_proton_pumps", "is_orphan": false, "label": "respiratory proton-pumping enzymes", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "pH-delta-high euryphilic breadth"}]; + var graphs = [{"description": "DOI-backed graph linking maximal pH-homeostasis flexibility to a pH growth breadth of approximately 5\u20139 pH units.", "edges": [{"description": "Maximal pH-homeostasis flexibility yields an extreme pH-delta breadth.", "evidence": [{"notes": "Supports maximal pH-homeostasis flexibility as the basis of euryphilic breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "maximal_ph_homeostasis", "target": "ph_delta_high_trait"}, {"description": "pH delta high is a quantitative bin of the pH-delta phenotype.", "evidence": [{"notes": "Supports the 5\u20139 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "ph_delta_high_trait", "target": "ph_delta"}, {"description": "Na+/H+ antiport is a core regulator of cytoplasmic pH across changing external pH.", "evidence": [{"notes": "Key regulators of bacterial pH homeostasis are Na+/H+ and K+/H+ antiporters.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "na_h_antiporters", "target": "ph_delta_high_trait"}, {"description": "Electron-transport proton pumps counteract pH stress by controlling proton flux.", "evidence": [{"notes": "Proton-pumping enzymes (electron transport components) are major homeostasis regulators.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "helps maintain", "predicate_id": null, "source": "respiratory_proton_pumps", "target": "cytoplasmic_ph_homeostasis"}, {"description": "F0F1-ATPase participates in pH homeostasis via proton extrusion or uptake.", "evidence": [{"notes": "F0F1-ATPase is named among key regulators of bacterial pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "f0f1_atpase", "target": "ph_delta_high_trait"}, {"description": "Proton-consuming decarboxylation pathways support broad pH tolerance.", "evidence": [{"notes": "Metabolite decarboxylation pathways are key regulators of pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-6", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "metabolite_decarboxylation", "target": "ph_delta_high_trait"}, {"description": "High buffering capacity limits pH swings, enabling broader pH tolerance.", "evidence": [{"notes": "Internal pH kept ~7.0-7.5 as buffers absorb fluctuations.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-7", "is_orphan": false, "predicate": "stabilizes", "predicate_id": null, "source": "cytoplasmic_buffering_capacity", "target": "cytoplasmic_ph_homeostasis"}, {"description": "Neutralophiles maintain narrow internal pH while growing over a broad external range.", "evidence": [{"notes": "Neutralophiles grow at external pH ~5.5-9.0 while maintaining cytoplasmic pH ~7.5-7.7.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-8", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "near_neutral_cytoplasmic_ph", "target": "growth_external_ph_5_5_9"}, {"description": "A relatively constant PMF across external pH is a hallmark of broad pH tolerance.", "evidence": [{"notes": "PMF of neutralophilic bacteria kept relatively constant over pH 5 to 8.", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "constant_pmf", "target": "ph_delta_high_trait"}, {"description": "Membrane/porin composition changes lower proton leak during acid stress.", "evidence": [{"notes": "Membrane lipid and porin composition changes minimize inward proton leakage during acid stress.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-10", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_porin_changes", "target": "inward_proton_leakage"}], "evidence_rows": [{"description": "Maximal pH-homeostasis flexibility yields an extreme pH-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports maximal pH-homeostasis flexibility as the basis of euryphilic breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "maximal pH-homeostasis flexibility", "target": "pH delta high"}, {"description": "pH delta high is a quantitative bin of the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the 5\u20139 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "pH delta high", "target": "pH delta"}, {"description": "Na+/H+ antiport is a core regulator of cytoplasmic pH across changing external pH.", "edge_id": "edge-3", "evidence": [{"notes": "Key regulators of bacterial pH homeostasis are Na+/H+ and K+/H+ antiporters.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "Na+/H+ antiporters", "target": "pH delta high"}, {"description": "Electron-transport proton pumps counteract pH stress by controlling proton flux.", "edge_id": "edge-4", "evidence": [{"notes": "Proton-pumping enzymes (electron transport components) are major homeostasis regulators.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "helps maintain", "predicate_id": null, "source": "respiratory proton-pumping enzymes", "target": "cytoplasmic pH homeostasis"}, {"description": "F0F1-ATPase participates in pH homeostasis via proton extrusion or uptake.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase is named among key regulators of bacterial pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "F0F1-ATPase", "target": "pH delta high"}, {"description": "Proton-consuming decarboxylation pathways support broad pH tolerance.", "edge_id": "edge-6", "evidence": [{"notes": "Metabolite decarboxylation pathways are key regulators of pH homeostasis.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "metabolite decarboxylation pathways", "target": "pH delta high"}, {"description": "High buffering capacity limits pH swings, enabling broader pH tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Internal pH kept ~7.0-7.5 as buffers absorb fluctuations.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "stabilizes", "predicate_id": null, "source": "cytoplasmic buffering capacity", "target": "cytoplasmic pH homeostasis"}, {"description": "Neutralophiles maintain narrow internal pH while growing over a broad external range.", "edge_id": "edge-8", "evidence": [{"notes": "Neutralophiles grow at external pH ~5.5-9.0 while maintaining cytoplasmic pH ~7.5-7.7.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "near-neutral cytoplasmic pH", "target": "growth across external pH 5.5-9.0"}, {"description": "A relatively constant PMF across external pH is a hallmark of broad pH tolerance.", "edge_id": "edge-9", "evidence": [{"notes": "PMF of neutralophilic bacteria kept relatively constant over pH 5 to 8.", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "constant proton motive force", "target": "pH delta high"}, {"description": "Membrane/porin composition changes lower proton leak during acid stress.", "edge_id": "edge-10", "evidence": [{"notes": "Membrane lipid and porin composition changes minimize inward proton leakage during acid stress.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane lipid/porin composition changes", "target": "inward proton leakage"}], "graph_id": "ph_delta_high_euryphilic_breadth", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Relatively constant PMF maintained across external pH changes.", "grounding": null, "id": "constant_pmf", "is_orphan": false, "label": "constant proton motive force", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Intracellular buffering that limits pH swings in the bacterial cytoplasm.", "grounding": null, "id": "cytoplasmic_buffering_capacity", "is_orphan": false, "label": "cytoplasmic buffering capacity", "node_type": "CAPACITY", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of near-neutral internal pH despite external pH variation.", "grounding": "GO:0051453", "id": "cytoplasmic_ph_homeostasis", "is_orphan": false, "label": "cytoplasmic pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Proton-translocating ATP synthase contributing to proton extrusion/uptake in pH homeostasis.", "grounding": null, "id": "f0f1_atpase", "is_orphan": false, "label": "F0F1-ATPase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Growth supported across the neutralophile external pH range ~5.5-9.0.", "grounding": "METPO:1000332", "id": "growth_external_ph_5_5_9", "is_orphan": false, "label": "growth across external pH 5.5-9.0", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Passive inward flux of protons that acidifies the cytoplasm.", "grounding": null, "id": "inward_proton_leakage", "is_orphan": false, "label": "inward proton leakage", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Combined proton-extrusion and Na+/H+ antiport flexibility supporting growth across an extreme pH span.", "grounding": null, "id": "maximal_ph_homeostasis", "is_orphan": false, "label": "maximal pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Structural changes in membrane lipids and porins during pH stress.", "grounding": null, "id": "membrane_lipid_porin_changes", "is_orphan": false, "label": "membrane lipid/porin composition changes", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#e0e7ff", "description": "Proton-consuming decarboxylation pathways that reduce intracellular acidification.", "grounding": null, "id": "metabolite_decarboxylation", "is_orphan": false, "label": "metabolite decarboxylation pathways", "node_type": "PATHWAY", "xrefs": []}, {"color": "#f3e8ff", "description": "Sodium:proton antiporters, core regulators of cytoplasmic pH across changing external pH.", "grounding": null, "id": "na_h_antiporters", "is_orphan": false, "label": "Na+/H+ antiporters", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3f4f6", "description": "Internal pH maintained near 7.5 while external pH varies.", "grounding": null, "id": "near_neutral_cytoplasmic_ph", "is_orphan": false, "label": "near-neutral cytoplasmic pH", "node_type": "QUALITY", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "pH growth-supporting breadth approximately 5\u20139 pH units.", "grounding": "METPO:1000478", "id": "ph_delta_high_trait", "is_orphan": false, "label": "pH delta high", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Electron-transport-chain proton pumps that control proton flux during pH stress.", "grounding": null, "id": "respiratory_proton_pumps", "is_orphan": false, "label": "respiratory proton-pumping enzymes", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "pH-delta-high euryphilic breadth"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -881,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-07 06:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_low.html b/pages/traits/environment/ph_delta_low.html index 47f7840c..5d66e47d 100644 --- a/pages/traits/environment/ph_delta_low.html +++ b/pages/traits/environment/ph_delta_low.html @@ -110,7 +110,7 @@

    Edge evidence

  • proton motive force architecture determines - pH homeostasis capacity + cytoplasmic pH homeostasis

    PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity.

      @@ -426,6 +426,12 @@

      Curation history

      Re-grounded 1 causal edge(s) off microbe-domain METPO predicates (1 to confers), issue 301. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Edge directions are unchanged - this pass only relabels and re-grounds. RO:0002234 (has output) is used where the subject is an activity, since biolink gives it the domain 'biological process or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them.

      +
    • + · + RETYPE_CAUSAL_NODE · claude +

      Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis. Issue 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING against it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

      +
    • +
  • @@ -783,7 +789,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking limited pH-homeostasis flexibility to a pH growth breadth of approximately 1\u20132 pH units.", "edges": [{"description": "Limited pH-homeostasis flexibility yields a 1\u20132 pH-unit pH-delta breadth.", "evidence": [{"notes": "Supports limited pH-homeostasis flexibility as the basis of narrow breadth.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_ph_homeostasis", "target": "ph_delta_low_trait"}, {"description": "pH delta low is a quantitative bin of the pH-delta phenotype.", "evidence": [{"notes": "Supports the 1\u20132 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "ph_delta_low_trait", "target": "ph_delta"}, {"description": "External pH outside the maintainable cytoplasmic range challenges pH homeostasis.", "evidence": [{"notes": "Diverse mechanisms for pH sensing and cytoplasmic pH homeostasis enable most bacteria to tolerate external pH outside the cytoplasmic range; general across bacteria.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-3", "is_orphan": false, "predicate": "challenges", "predicate_id": "METPO:2007406", "source": "external_ph_stress", "target": "cytoplasmic_ph_homeostasis"}, {"description": "PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity.", "evidence": [{"notes": "Bacteria tune and even reverse the relative magnitudes of Delta-psi and Delta-pH under pH stress; strong general mechanistic edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-4", "is_orphan": false, "predicate": "determines", "predicate_id": null, "source": "pmf_architecture", "target": "ph_homeostasis_capacity"}, {"description": "Weak organic acids cross the membrane and perturb the proton gradient / cytoplasmic pH.", "evidence": [{"notes": "Uncharged weak-acid forms cross membranes and become trapped when charged, perturbing Delta-pH; general chemical-factor edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-5", "is_orphan": false, "predicate": "perturbs", "predicate_id": null, "source": "weak_organic_acids", "target": "delta_ph"}, {"description": "Electrogenic Na+/H+ antiport supports cytoplasmic pH homeostasis under alkaline stress.", "evidence": [{"notes": "Under alkaline stress, inward proton transport through cation/proton antiporters is crucial; strong general transporter-mediated edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "electrogenic_na_h_antiport", "target": "alkaline_ph_homeostasis"}, {"description": "F1Fo-ATPase contributes to cytoplasmic pH homeostasis by expelling or importing H+.", "evidence": [{"notes": "Respiratory complexes and proton-coupled ATPases use or generate PMF to expel or import H+; general higher-level edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-7", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "f1fo_atpase", "target": "cytoplasmic_ph_homeostasis"}], "evidence_rows": [{"description": "Limited pH-homeostasis flexibility yields a 1\u20132 pH-unit pH-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited pH-homeostasis flexibility as the basis of narrow breadth.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited pH-homeostasis flexibility", "target": "pH delta low"}, {"description": "pH delta low is a quantitative bin of the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the 1\u20132 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "pH delta low", "target": "pH delta"}, {"description": "External pH outside the maintainable cytoplasmic range challenges pH homeostasis.", "edge_id": "edge-3", "evidence": [{"notes": "Diverse mechanisms for pH sensing and cytoplasmic pH homeostasis enable most bacteria to tolerate external pH outside the cytoplasmic range; general across bacteria.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "challenges", "predicate_id": "METPO:2007406", "source": "external pH stress", "target": "cytoplasmic pH homeostasis"}, {"description": "PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity.", "edge_id": "edge-4", "evidence": [{"notes": "Bacteria tune and even reverse the relative magnitudes of Delta-psi and Delta-pH under pH stress; strong general mechanistic edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "determines", "predicate_id": null, "source": "proton motive force architecture", "target": "pH homeostasis capacity"}, {"description": "Weak organic acids cross the membrane and perturb the proton gradient / cytoplasmic pH.", "edge_id": "edge-5", "evidence": [{"notes": "Uncharged weak-acid forms cross membranes and become trapped when charged, perturbing Delta-pH; general chemical-factor edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "perturbs", "predicate_id": null, "source": "weak organic acids", "target": "delta pH / cytoplasmic pH"}, {"description": "Electrogenic Na+/H+ antiport supports cytoplasmic pH homeostasis under alkaline stress.", "edge_id": "edge-6", "evidence": [{"notes": "Under alkaline stress, inward proton transport through cation/proton antiporters is crucial; strong general transporter-mediated edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "supports", "predicate_id": null, "source": "electrogenic Na+/H+ antiport", "target": "alkaline pH homeostasis"}, {"description": "F1Fo-ATPase contributes to cytoplasmic pH homeostasis by expelling or importing H+.", "edge_id": "edge-7", "evidence": [{"notes": "Respiratory complexes and proton-coupled ATPases use or generate PMF to expel or import H+; general higher-level edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "F1Fo-ATPase", "target": "cytoplasmic pH homeostasis"}], "graph_id": "ph_delta_low_limited_breadth", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Maintenance of cytoplasmic pH under alkaline external conditions.", "grounding": null, "id": "alkaline_ph_homeostasis", "is_orphan": false, "label": "alkaline pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of growth-permissive intracellular pH across external pH change.", "grounding": "GO:0051453", "id": "cytoplasmic_ph_homeostasis", "is_orphan": false, "label": "cytoplasmic pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Trans-membrane proton gradient and resulting cytoplasmic pH.", "grounding": null, "id": "delta_ph", "is_orphan": false, "label": "delta pH / cytoplasmic pH", "node_type": "STATE", "xrefs": []}, {"color": "#ecfccb", "description": "Inward proton transport via cation/proton antiport driven by membrane potential.", "grounding": null, "id": "electrogenic_na_h_antiport", "is_orphan": false, "label": "electrogenic Na+/H+ antiport", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "External pH values outside the range maintainable as cytoplasmic pH.", "grounding": null, "id": "external_ph_stress", "is_orphan": false, "label": "external pH stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Proton-coupled ATPase that expels or imports H+ using or generating PMF.", "grounding": null, "id": "f1fo_atpase", "is_orphan": false, "label": "F1Fo-ATPase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Modest capacity to remodel proton extrusion and envelope buffering across small pH shifts.", "grounding": null, "id": "limited_ph_homeostasis", "is_orphan": false, "label": "limited pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "pH growth-supporting breadth approximately 1\u20132 pH units.", "grounding": "METPO:1000474", "id": "ph_delta_low_trait", "is_orphan": false, "label": "pH delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity to balance and maintain cytoplasmic pH under pH stress.", "grounding": null, "id": "ph_homeostasis_capacity", "is_orphan": false, "label": "pH homeostasis capacity", "node_type": "CAPACITY", "xrefs": []}, {"color": "#ecfccb", "description": "Tuning of Delta-psi and Delta-pH components of the proton motive force.", "grounding": null, "id": "pmf_architecture", "is_orphan": false, "label": "proton motive force architecture", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Uncharged weak acids that cross membranes and perturb the proton gradient.", "grounding": null, "id": "weak_organic_acids", "is_orphan": false, "label": "weak organic acids", "node_type": "CHEMICAL", "xrefs": []}], "title": "pH-delta-low limited-breadth pH homeostasis"}]; + var graphs = [{"description": "DOI-backed graph linking limited pH-homeostasis flexibility to a pH growth breadth of approximately 1\u20132 pH units.", "edges": [{"description": "Limited pH-homeostasis flexibility yields a 1\u20132 pH-unit pH-delta breadth.", "evidence": [{"notes": "Supports limited pH-homeostasis flexibility as the basis of narrow breadth.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_ph_homeostasis", "target": "ph_delta_low_trait"}, {"description": "pH delta low is a quantitative bin of the pH-delta phenotype.", "evidence": [{"notes": "Supports the 1\u20132 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "ph_delta_low_trait", "target": "ph_delta"}, {"description": "External pH outside the maintainable cytoplasmic range challenges pH homeostasis.", "evidence": [{"notes": "Diverse mechanisms for pH sensing and cytoplasmic pH homeostasis enable most bacteria to tolerate external pH outside the cytoplasmic range; general across bacteria.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-3", "is_orphan": false, "predicate": "challenges", "predicate_id": "METPO:2007406", "source": "external_ph_stress", "target": "cytoplasmic_ph_homeostasis"}, {"description": "PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity.", "evidence": [{"notes": "Bacteria tune and even reverse the relative magnitudes of Delta-psi and Delta-pH under pH stress; strong general mechanistic edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-4", "is_orphan": false, "predicate": "determines", "predicate_id": null, "source": "pmf_architecture", "target": "cytoplasmic_ph_homeostasis"}, {"description": "Weak organic acids cross the membrane and perturb the proton gradient / cytoplasmic pH.", "evidence": [{"notes": "Uncharged weak-acid forms cross membranes and become trapped when charged, perturbing Delta-pH; general chemical-factor edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-5", "is_orphan": false, "predicate": "perturbs", "predicate_id": null, "source": "weak_organic_acids", "target": "delta_ph"}, {"description": "Electrogenic Na+/H+ antiport supports cytoplasmic pH homeostasis under alkaline stress.", "evidence": [{"notes": "Under alkaline stress, inward proton transport through cation/proton antiporters is crucial; strong general transporter-mediated edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "electrogenic_na_h_antiport", "target": "alkaline_ph_homeostasis"}, {"description": "F1Fo-ATPase contributes to cytoplasmic pH homeostasis by expelling or importing H+.", "evidence": [{"notes": "Respiratory complexes and proton-coupled ATPases use or generate PMF to expel or import H+; general higher-level edge.", "reference": "DOI:10.1038/nrmicro2549"}], "id": "edge-7", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "f1fo_atpase", "target": "cytoplasmic_ph_homeostasis"}], "evidence_rows": [{"description": "Limited pH-homeostasis flexibility yields a 1\u20132 pH-unit pH-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited pH-homeostasis flexibility as the basis of narrow breadth.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited pH-homeostasis flexibility", "target": "pH delta low"}, {"description": "pH delta low is a quantitative bin of the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the 1\u20132 unit breadth as a value within the pH-delta distribution.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "pH delta low", "target": "pH delta"}, {"description": "External pH outside the maintainable cytoplasmic range challenges pH homeostasis.", "edge_id": "edge-3", "evidence": [{"notes": "Diverse mechanisms for pH sensing and cytoplasmic pH homeostasis enable most bacteria to tolerate external pH outside the cytoplasmic range; general across bacteria.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "challenges", "predicate_id": "METPO:2007406", "source": "external pH stress", "target": "cytoplasmic pH homeostasis"}, {"description": "PMF architecture (Delta-psi and Delta-pH balancing) determines pH homeostasis capacity.", "edge_id": "edge-4", "evidence": [{"notes": "Bacteria tune and even reverse the relative magnitudes of Delta-psi and Delta-pH under pH stress; strong general mechanistic edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "determines", "predicate_id": null, "source": "proton motive force architecture", "target": "cytoplasmic pH homeostasis"}, {"description": "Weak organic acids cross the membrane and perturb the proton gradient / cytoplasmic pH.", "edge_id": "edge-5", "evidence": [{"notes": "Uncharged weak-acid forms cross membranes and become trapped when charged, perturbing Delta-pH; general chemical-factor edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "perturbs", "predicate_id": null, "source": "weak organic acids", "target": "delta pH / cytoplasmic pH"}, {"description": "Electrogenic Na+/H+ antiport supports cytoplasmic pH homeostasis under alkaline stress.", "edge_id": "edge-6", "evidence": [{"notes": "Under alkaline stress, inward proton transport through cation/proton antiporters is crucial; strong general transporter-mediated edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "supports", "predicate_id": null, "source": "electrogenic Na+/H+ antiport", "target": "alkaline pH homeostasis"}, {"description": "F1Fo-ATPase contributes to cytoplasmic pH homeostasis by expelling or importing H+.", "edge_id": "edge-7", "evidence": [{"notes": "Respiratory complexes and proton-coupled ATPases use or generate PMF to expel or import H+; general higher-level edge.", "reference": "DOI:10.1038/nrmicro2549"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "F1Fo-ATPase", "target": "cytoplasmic pH homeostasis"}], "graph_id": "ph_delta_low_limited_breadth", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Maintenance of cytoplasmic pH under alkaline external conditions.", "grounding": null, "id": "alkaline_ph_homeostasis", "is_orphan": false, "label": "alkaline pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of growth-permissive intracellular pH across external pH change.", "grounding": "GO:0051453", "id": "cytoplasmic_ph_homeostasis", "is_orphan": false, "label": "cytoplasmic pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Trans-membrane proton gradient and resulting cytoplasmic pH.", "grounding": null, "id": "delta_ph", "is_orphan": false, "label": "delta pH / cytoplasmic pH", "node_type": "STATE", "xrefs": []}, {"color": "#ecfccb", "description": "Inward proton transport via cation/proton antiport driven by membrane potential.", "grounding": null, "id": "electrogenic_na_h_antiport", "is_orphan": false, "label": "electrogenic Na+/H+ antiport", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "External pH values outside the range maintainable as cytoplasmic pH.", "grounding": null, "id": "external_ph_stress", "is_orphan": false, "label": "external pH stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Proton-coupled ATPase that expels or imports H+ using or generating PMF.", "grounding": null, "id": "f1fo_atpase", "is_orphan": false, "label": "F1Fo-ATPase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Modest capacity to remodel proton extrusion and envelope buffering across small pH shifts.", "grounding": null, "id": "limited_ph_homeostasis", "is_orphan": false, "label": "limited pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "pH growth-supporting breadth approximately 1\u20132 pH units.", "grounding": "METPO:1000474", "id": "ph_delta_low_trait", "is_orphan": false, "label": "pH delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Tuning of Delta-psi and Delta-pH components of the proton motive force.", "grounding": null, "id": "pmf_architecture", "is_orphan": false, "label": "proton motive force architecture", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Uncharged weak acids that cross membranes and perturb the proton gradient.", "grounding": null, "id": "weak_organic_acids", "is_orphan": false, "label": "weak organic acids", "node_type": "CHEMICAL", "xrefs": []}], "title": "pH-delta-low limited-breadth pH homeostasis"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -806,7 +812,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 01:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/psychrotolerant.html b/pages/traits/environment/psychrotolerant.html index 21492f52..603670b4 100644 --- a/pages/traits/environment/psychrotolerant.html +++ b/pages/traits/environment/psychrotolerant.html @@ -192,23 +192,6 @@

    Edge evidence

    -
  • - psychrotolerant - has capability - growth at 4 degrees C - -

    The psychrotolerant trait entails the capacity to grow at low temperatures such as 4 C while retaining higher optimal temperatures.

    -
      - -
    • - DOI:10.1007/s42770-023-01057-4 - - Psychrotolerant/psychrotroph microbes can grow at 4 C and have optimal growth temperatures above 20 C. -
    • - -
    -
  • -
    @@ -511,6 +494,12 @@

    Curation history

    Migrated 1 causal edge(s) off enables/RO:0002327 with a TRAIT object (1 to confers), issue 302. RO:0002327 has range 'biological process or activity', which a trait (a disposition) cannot satisfy, so the previous form entailed trait is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Dropped node growth_at_4c. Issue 352. 'Ability to grow at refrigeration-range low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term and the grounding of psychrotolerant_trait, which is the node it hangs off. A leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response confers, facultative_lipid_remodeling manifests as), so nothing is stranded. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • + @@ -868,7 +857,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking psychrotolerance to low-temperature membrane and enzyme acclimation that does not preclude growth at moderate ambient temperatures.", "edges": [{"description": "Low temperature reduces membrane fluidity, requiring compensation.", "evidence": [{"notes": "Supports cold-end membrane stress as the physical challenge for psychrotolerant growth.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "decreased membrane fluidity"}], "id": "edge-1", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "low_temperature", "target": "membrane_fluidity"}, {"description": "Facultative lipid remodeling maintains workable membrane fluidity at low temperature.", "evidence": [{"notes": "Supports homoviscous adaptation as the mechanism employed under cold exposure.", "reference": "DOI:10.1146/annurev-micro-091313-103612", "snippet": "more unsaturated fatty acids"}], "id": "edge-2", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "facultative_lipid_remodeling", "target": "membrane_fluidity"}, {"description": "The cold-shock response enables acclimation to low temperature without obligate cold dedication.", "evidence": [{"notes": "Supports cold-shock proteins as a hallmark facultative-cold adaptation.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "Cold-shock proteins have also been described"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "cold_shock_response", "target": "psychrotolerant_trait"}, {"description": "Facultative lipid remodeling at low temperature manifests the psychrotolerant trait in representative organisms.", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1099/ijs.0.65141-0", "snippet": "Pseudomonas guineae sp. nov., a novel psychrotolerant bacterium"}], "id": "edge-4", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "facultative_lipid_remodeling", "target": "psychrotolerant_trait"}, {"description": "A low-temperature shift causes membrane rigidification and thickening toward a gel-phase transition.", "evidence": [{"notes": "Cold shock causes membrane rigidification and concomitant thickening, potentially culminating in a gel-phase transition.", "reference": "DOI:10.1128/spectrum.03925-23"}], "id": "edge-5", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_temperature", "target": "membrane_rigidification"}, {"description": "Decreasing growth temperature increases the unsaturated hopanoid fraction as a compositional cold adaptation.", "evidence": [{"notes": "As the growth temperature decreased from 20 to 4 C, the total percent of unsaturated hopanoids increased from 27 to 49%.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "id": "edge-6", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "low_temperature", "target": "unsaturated_hopanoids"}, {"description": "Compatible solute accumulation stabilizes proteins and membranes during low-temperature stress.", "evidence": [{"notes": "Compatible solutes depress freezing point, stabilize proteins and membranes, scavenge radicals, and act as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "id": "edge-7", "is_orphan": false, "predicate": "protects", "predicate_id": null, "source": "compatible_solute_accumulation", "target": "protein_membrane_stability"}, {"description": "EPS surrounding cells provide cryoprotection against freeze-thaw cycles.", "evidence": [{"notes": "EPS surrounding cells play a critical role in cold adaptation by providing protection against freeze-thaw cycles and acting as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "id": "edge-8", "is_orphan": false, "predicate": "provides", "predicate_id": null, "source": "extracellular_polymeric_substances", "target": "freeze_thaw_cryoprotection"}, {"description": "The psychrotolerant trait entails the capacity to grow at low temperatures such as 4 C while retaining higher optimal temperatures.", "evidence": [{"notes": "Psychrotolerant/psychrotroph microbes can grow at 4 C and have optimal growth temperatures above 20 C.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "id": "edge-9", "is_orphan": false, "predicate": "has capability", "predicate_id": null, "source": "psychrotolerant_trait", "target": "growth_at_4c"}], "evidence_rows": [{"description": "Low temperature reduces membrane fluidity, requiring compensation.", "edge_id": "edge-1", "evidence": [{"notes": "Supports cold-end membrane stress as the physical challenge for psychrotolerant growth.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "decreased membrane fluidity"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "low temperature", "target": "membrane fluidity"}, {"description": "Facultative lipid remodeling maintains workable membrane fluidity at low temperature.", "edge_id": "edge-2", "evidence": [{"notes": "Supports homoviscous adaptation as the mechanism employed under cold exposure.", "reference": "DOI:10.1146/annurev-micro-091313-103612", "snippet": "more unsaturated fatty acids"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "facultative lipid remodeling", "target": "membrane fluidity"}, {"description": "The cold-shock response enables acclimation to low temperature without obligate cold dedication.", "edge_id": "edge-3", "evidence": [{"notes": "Supports cold-shock proteins as a hallmark facultative-cold adaptation.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "Cold-shock proteins have also been described"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "cold-shock response", "target": "psychrotolerant"}, {"description": "Facultative lipid remodeling at low temperature manifests the psychrotolerant trait in representative organisms.", "edge_id": "edge-4", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1099/ijs.0.65141-0", "snippet": "Pseudomonas guineae sp. nov., a novel psychrotolerant bacterium"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "facultative lipid remodeling", "target": "psychrotolerant"}, {"description": "A low-temperature shift causes membrane rigidification and thickening toward a gel-phase transition.", "edge_id": "edge-5", "evidence": [{"notes": "Cold shock causes membrane rigidification and concomitant thickening, potentially culminating in a gel-phase transition.", "reference": "DOI:10.1128/spectrum.03925-23"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low temperature", "target": "membrane rigidification and thickening"}, {"description": "Decreasing growth temperature increases the unsaturated hopanoid fraction as a compositional cold adaptation.", "edge_id": "edge-6", "evidence": [{"notes": "As the growth temperature decreased from 20 to 4 C, the total percent of unsaturated hopanoids increased from 27 to 49%.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "low temperature", "target": "unsaturated hopanoids"}, {"description": "Compatible solute accumulation stabilizes proteins and membranes during low-temperature stress.", "edge_id": "edge-7", "evidence": [{"notes": "Compatible solutes depress freezing point, stabilize proteins and membranes, scavenge radicals, and act as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "predicate": "protects", "predicate_id": null, "source": "compatible solute accumulation", "target": "protein and membrane stability under cold stress"}, {"description": "EPS surrounding cells provide cryoprotection against freeze-thaw cycles.", "edge_id": "edge-8", "evidence": [{"notes": "EPS surrounding cells play a critical role in cold adaptation by providing protection against freeze-thaw cycles and acting as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "predicate": "provides", "predicate_id": null, "source": "extracellular polymeric substances (EPS)", "target": "cryoprotection against freeze-thaw cycles"}, {"description": "The psychrotolerant trait entails the capacity to grow at low temperatures such as 4 C while retaining higher optimal temperatures.", "edge_id": "edge-9", "evidence": [{"notes": "Psychrotolerant/psychrotroph microbes can grow at 4 C and have optimal growth temperatures above 20 C.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "predicate": "has capability", "predicate_id": null, "source": "psychrotolerant", "target": "growth at 4 degrees C"}], "graph_id": "psychrotolerant_facultative_cold_adaptation", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Cold-shock-protein induction supporting transient low-temperature acclimation.", "grounding": null, "id": "cold_shock_response", "is_orphan": false, "label": "cold-shock response", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Accumulation of compatible solutes that stabilize proteins and membranes under cold stress.", "grounding": null, "id": "compatible_solute_accumulation", "is_orphan": false, "label": "compatible solute accumulation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Secreted polymeric matrix surrounding cells that acts as a cryoprotectant.", "grounding": null, "id": "extracellular_polymeric_substances", "is_orphan": false, "label": "extracellular polymeric substances (EPS)", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Cold-induced shifts in lipid composition without obligate low-temperature specialization.", "grounding": null, "id": "facultative_lipid_remodeling", "is_orphan": false, "label": "facultative lipid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Protection of cells from damage during freeze-thaw cycling.", "grounding": null, "id": "freeze_thaw_cryoprotection", "is_orphan": false, "label": "cryoprotection against freeze-thaw cycles", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Ability to grow at refrigeration-range low temperature (4 C).", "grounding": null, "id": "growth_at_4c", "is_orphan": false, "label": "growth at 4 degrees C", "node_type": "CAPACITY", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient temperature below the mesophile optimum range.", "grounding": "PATO:0001306", "id": "low_temperature", "is_orphan": false, "label": "low temperature", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3f4f6", "description": "Physical state of the cytoplasmic membrane supporting transport and bioenergetics.", "grounding": "METPO:1007505", "id": "membrane_fluidity", "is_orphan": false, "label": "membrane fluidity", "node_type": "QUALITY", "xrefs": []}, {"color": "#f3f4f6", "description": "Cold-induced increase in membrane order and bilayer thickness approaching a gel-phase transition.", "grounding": null, "id": "membrane_rigidification", "is_orphan": false, "label": "membrane rigidification and thickening", "node_type": "QUALITY", "xrefs": []}, {"color": "#f3f4f6", "description": "Maintained integrity of proteins and membranes during low-temperature stress.", "grounding": null, "id": "protein_membrane_stability", "is_orphan": false, "label": "protein and membrane stability under cold stress", "node_type": "QUALITY", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low temperatures without an obligate low-temperature preference.", "grounding": "METPO:1000618", "id": "psychrotolerant_trait", "is_orphan": false, "label": "psychrotolerant", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Hopanoid lipids whose unsaturation rises at low temperature, aiding membrane homeostasis.", "grounding": null, "id": "unsaturated_hopanoids", "is_orphan": false, "label": "unsaturated hopanoids", "node_type": "CHEMICAL", "xrefs": []}], "title": "Psychrotolerant facultative cold-adaptation mechanism"}]; + var graphs = [{"description": "DOI-backed graph linking psychrotolerance to low-temperature membrane and enzyme acclimation that does not preclude growth at moderate ambient temperatures.", "edges": [{"description": "Low temperature reduces membrane fluidity, requiring compensation.", "evidence": [{"notes": "Supports cold-end membrane stress as the physical challenge for psychrotolerant growth.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "decreased membrane fluidity"}], "id": "edge-1", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "low_temperature", "target": "membrane_fluidity"}, {"description": "Facultative lipid remodeling maintains workable membrane fluidity at low temperature.", "evidence": [{"notes": "Supports homoviscous adaptation as the mechanism employed under cold exposure.", "reference": "DOI:10.1146/annurev-micro-091313-103612", "snippet": "more unsaturated fatty acids"}], "id": "edge-2", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "facultative_lipid_remodeling", "target": "membrane_fluidity"}, {"description": "The cold-shock response enables acclimation to low temperature without obligate cold dedication.", "evidence": [{"notes": "Supports cold-shock proteins as a hallmark facultative-cold adaptation.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "Cold-shock proteins have also been described"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "cold_shock_response", "target": "psychrotolerant_trait"}, {"description": "Facultative lipid remodeling at low temperature manifests the psychrotolerant trait in representative organisms.", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1099/ijs.0.65141-0", "snippet": "Pseudomonas guineae sp. nov., a novel psychrotolerant bacterium"}], "id": "edge-4", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "facultative_lipid_remodeling", "target": "psychrotolerant_trait"}, {"description": "A low-temperature shift causes membrane rigidification and thickening toward a gel-phase transition.", "evidence": [{"notes": "Cold shock causes membrane rigidification and concomitant thickening, potentially culminating in a gel-phase transition.", "reference": "DOI:10.1128/spectrum.03925-23"}], "id": "edge-5", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_temperature", "target": "membrane_rigidification"}, {"description": "Decreasing growth temperature increases the unsaturated hopanoid fraction as a compositional cold adaptation.", "evidence": [{"notes": "As the growth temperature decreased from 20 to 4 C, the total percent of unsaturated hopanoids increased from 27 to 49%.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "id": "edge-6", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "low_temperature", "target": "unsaturated_hopanoids"}, {"description": "Compatible solute accumulation stabilizes proteins and membranes during low-temperature stress.", "evidence": [{"notes": "Compatible solutes depress freezing point, stabilize proteins and membranes, scavenge radicals, and act as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "id": "edge-7", "is_orphan": false, "predicate": "protects", "predicate_id": null, "source": "compatible_solute_accumulation", "target": "protein_membrane_stability"}, {"description": "EPS surrounding cells provide cryoprotection against freeze-thaw cycles.", "evidence": [{"notes": "EPS surrounding cells play a critical role in cold adaptation by providing protection against freeze-thaw cycles and acting as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "id": "edge-8", "is_orphan": false, "predicate": "provides", "predicate_id": null, "source": "extracellular_polymeric_substances", "target": "freeze_thaw_cryoprotection"}], "evidence_rows": [{"description": "Low temperature reduces membrane fluidity, requiring compensation.", "edge_id": "edge-1", "evidence": [{"notes": "Supports cold-end membrane stress as the physical challenge for psychrotolerant growth.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "decreased membrane fluidity"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "low temperature", "target": "membrane fluidity"}, {"description": "Facultative lipid remodeling maintains workable membrane fluidity at low temperature.", "edge_id": "edge-2", "evidence": [{"notes": "Supports homoviscous adaptation as the mechanism employed under cold exposure.", "reference": "DOI:10.1146/annurev-micro-091313-103612", "snippet": "more unsaturated fatty acids"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "facultative lipid remodeling", "target": "membrane fluidity"}, {"description": "The cold-shock response enables acclimation to low temperature without obligate cold dedication.", "edge_id": "edge-3", "evidence": [{"notes": "Supports cold-shock proteins as a hallmark facultative-cold adaptation.", "reference": "DOI:10.1038/sj.embor.7400662", "snippet": "Cold-shock proteins have also been described"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "cold-shock response", "target": "psychrotolerant"}, {"description": "Facultative lipid remodeling at low temperature manifests the psychrotolerant trait in representative organisms.", "edge_id": "edge-4", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1099/ijs.0.65141-0", "snippet": "Pseudomonas guineae sp. nov., a novel psychrotolerant bacterium"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "facultative lipid remodeling", "target": "psychrotolerant"}, {"description": "A low-temperature shift causes membrane rigidification and thickening toward a gel-phase transition.", "edge_id": "edge-5", "evidence": [{"notes": "Cold shock causes membrane rigidification and concomitant thickening, potentially culminating in a gel-phase transition.", "reference": "DOI:10.1128/spectrum.03925-23"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low temperature", "target": "membrane rigidification and thickening"}, {"description": "Decreasing growth temperature increases the unsaturated hopanoid fraction as a compositional cold adaptation.", "edge_id": "edge-6", "evidence": [{"notes": "As the growth temperature decreased from 20 to 4 C, the total percent of unsaturated hopanoids increased from 27 to 49%.", "reference": "DOI:10.1007/s42770-023-01057-4"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "low temperature", "target": "unsaturated hopanoids"}, {"description": "Compatible solute accumulation stabilizes proteins and membranes during low-temperature stress.", "edge_id": "edge-7", "evidence": [{"notes": "Compatible solutes depress freezing point, stabilize proteins and membranes, scavenge radicals, and act as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "predicate": "protects", "predicate_id": null, "source": "compatible solute accumulation", "target": "protein and membrane stability under cold stress"}, {"description": "EPS surrounding cells provide cryoprotection against freeze-thaw cycles.", "edge_id": "edge-8", "evidence": [{"notes": "EPS surrounding cells play a critical role in cold adaptation by providing protection against freeze-thaw cycles and acting as cryoprotectants.", "reference": "DOI:10.37256/amtt.5220244537"}], "predicate": "provides", "predicate_id": null, "source": "extracellular polymeric substances (EPS)", "target": "cryoprotection against freeze-thaw cycles"}], "graph_id": "psychrotolerant_facultative_cold_adaptation", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Cold-shock-protein induction supporting transient low-temperature acclimation.", "grounding": null, "id": "cold_shock_response", "is_orphan": false, "label": "cold-shock response", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Accumulation of compatible solutes that stabilize proteins and membranes under cold stress.", "grounding": null, "id": "compatible_solute_accumulation", "is_orphan": false, "label": "compatible solute accumulation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Secreted polymeric matrix surrounding cells that acts as a cryoprotectant.", "grounding": null, "id": "extracellular_polymeric_substances", "is_orphan": false, "label": "extracellular polymeric substances (EPS)", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Cold-induced shifts in lipid composition without obligate low-temperature specialization.", "grounding": null, "id": "facultative_lipid_remodeling", "is_orphan": false, "label": "facultative lipid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Protection of cells from damage during freeze-thaw cycling.", "grounding": null, "id": "freeze_thaw_cryoprotection", "is_orphan": false, "label": "cryoprotection against freeze-thaw cycles", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient temperature below the mesophile optimum range.", "grounding": "PATO:0001306", "id": "low_temperature", "is_orphan": false, "label": "low temperature", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3f4f6", "description": "Physical state of the cytoplasmic membrane supporting transport and bioenergetics.", "grounding": "METPO:1007505", "id": "membrane_fluidity", "is_orphan": false, "label": "membrane fluidity", "node_type": "QUALITY", "xrefs": []}, {"color": "#f3f4f6", "description": "Cold-induced increase in membrane order and bilayer thickness approaching a gel-phase transition.", "grounding": null, "id": "membrane_rigidification", "is_orphan": false, "label": "membrane rigidification and thickening", "node_type": "QUALITY", "xrefs": []}, {"color": "#f3f4f6", "description": "Maintained integrity of proteins and membranes during low-temperature stress.", "grounding": null, "id": "protein_membrane_stability", "is_orphan": false, "label": "protein and membrane stability under cold stress", "node_type": "QUALITY", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low temperatures without an obligate low-temperature preference.", "grounding": "METPO:1000618", "id": "psychrotolerant_trait", "is_orphan": false, "label": "psychrotolerant", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Hopanoid lipids whose unsaturation rises at low temperature, aiding membrane homeostasis.", "grounding": null, "id": "unsaturated_hopanoids", "is_orphan": false, "label": "unsaturated hopanoids", "node_type": "CHEMICAL", "xrefs": []}], "title": "Psychrotolerant facultative cold-adaptation mechanism"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -891,7 +880,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 00:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/slightly_halophilic.html b/pages/traits/environment/slightly_halophilic.html index 0a48d358..be451c9c 100644 --- a/pages/traits/environment/slightly_halophilic.html +++ b/pages/traits/environment/slightly_halophilic.html @@ -511,6 +511,12 @@

    Curation history

    Re-grounded 1 causal edge(s) off microbe-domain METPO predicates onto their causal-graph counterparts (1 to accumulates), issue 301 part 2. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Each replacement is a 1:1 mirror of its source predicate that changes only the domain, so the claim each edge makes is unchanged and directions are unchanged. The replacements are proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. The record is METPO:1000625 (slightly halophilic), so this is a distinct term rather than a restatement of the anchor. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -868,7 +874,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "Evidence-backed causal sketch linking slight halophily to low or moderate NaCl and compatible-solute osmoprotection.", "edges": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low_moderate_nacl", "target": "slightly_halophilic_trait"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "id": "edge-2", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_moderate_nacl", "target": "osmotic_stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "id": "edge-3", "is_orphan": false, "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible_solutes", "target": "osmotic_stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "id": "edge-4", "is_orphan": false, "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant_transport", "target": "compatible_solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-5", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ect_gene_cluster", "target": "ectoine_biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine_biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt_tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant_transport", "target": "salt_tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "na_k_transcription", "target": "ion_homeostasis"}], "evidence_rows": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "edge_id": "edge-1", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low to moderate NaCl", "target": "slightly halophilic"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "edge_id": "edge-2", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low to moderate NaCl", "target": "osmotic stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "edge_id": "edge-3", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible solutes", "target": "osmotic stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "edge_id": "edge-4", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant transport", "target": "compatible solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "edge_id": "edge-5", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "ectABC/ectBACD gene cluster", "target": "ectoine biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "edge_id": "edge-6", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant transport", "target": "salt tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "edge_id": "edge-9", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "predicate": "supports", "predicate_id": null, "source": "Na+/K+ transcriptional induction", "target": "ion homeostasis during salt stress"}], "graph_id": "slight_halophile_low_salt_osmoadaptation", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Organic osmoprotectants accumulated or synthesized in response to salt.", "grounding": "CHEBI:25728", "id": "compatible_solutes", "is_orphan": false, "label": "compatible solutes", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Ectoine biosynthesis operon encoding the ectoine pathway enzymes.", "grounding": null, "id": "ect_gene_cluster", "is_orphan": false, "label": "ectABC/ectBACD gene cluster", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "A major compatible solute (osmolyte) accumulated under salt stress.", "grounding": "CHEBI:27592", "id": "ectoine", "is_orphan": false, "label": "ectoine", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Biosynthesis of the compatible solute ectoine via the ectABC/ectBACD pathway.", "grounding": "GO:0019491", "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of Na+/K+ balance under salt stress.", "grounding": null, "id": "ion_homeostasis", "is_orphan": false, "label": "ion homeostasis during salt stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "Salinity range below that of moderate and extreme halophiles.", "grounding": null, "id": "low_moderate_nacl", "is_orphan": false, "label": "low to moderate NaCl", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#ecfccb", "description": "Coordinated induction of sodium/potassium transport transcription under salt stress.", "grounding": null, "id": "na_k_transcription", "is_orphan": false, "label": "Na+/K+ transcriptional induction", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Uptake of compatible solutes such as glycine betaine.", "grounding": null, "id": "osmoprotectant_transport", "is_orphan": false, "label": "osmoprotectant transport", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Osmotic challenge caused by environmental salt.", "grounding": "GO:0006970", "id": "osmotic_stress", "is_orphan": false, "label": "osmotic stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity to grow and survive under elevated salinity / salt stress.", "grounding": null, "id": "salt_tolerance", "is_orphan": false, "label": "salt tolerance", "node_type": "CAPACITY", "xrefs": []}, {"color": "#dbeafe", "description": "Optimal growth requires low to moderate salt concentrations.", "grounding": "METPO:1000625", "id": "slightly_halophilic_trait", "is_orphan": false, "label": "slightly halophilic", "node_type": "TRAIT", "xrefs": []}], "title": "Slight halophile low-salt osmoadaptation mechanism"}]; + var graphs = [{"description": "Evidence-backed causal sketch linking slight halophily to low or moderate NaCl and compatible-solute osmoprotection.", "edges": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low_moderate_nacl", "target": "slightly_halophilic_trait"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "id": "edge-2", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_moderate_nacl", "target": "osmotic_stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "id": "edge-3", "is_orphan": false, "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible_solutes", "target": "osmotic_stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "id": "edge-4", "is_orphan": false, "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant_transport", "target": "compatible_solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-5", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ect_gene_cluster", "target": "ectoine_biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine_biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt_tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant_transport", "target": "salt_tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "na_k_transcription", "target": "ion_homeostasis"}], "evidence_rows": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "edge_id": "edge-1", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low to moderate NaCl", "target": "slightly halophilic"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "edge_id": "edge-2", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low to moderate NaCl", "target": "osmotic stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "edge_id": "edge-3", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible solutes", "target": "osmotic stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "edge_id": "edge-4", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant transport", "target": "compatible solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "edge_id": "edge-5", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "ectABC/ectBACD gene cluster", "target": "ectoine biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "edge_id": "edge-6", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant transport", "target": "salt tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "edge_id": "edge-9", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "predicate": "supports", "predicate_id": null, "source": "Na+/K+ transcriptional induction", "target": "ion homeostasis during salt stress"}], "graph_id": "slight_halophile_low_salt_osmoadaptation", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Organic osmoprotectants accumulated or synthesized in response to salt.", "grounding": "CHEBI:25728", "id": "compatible_solutes", "is_orphan": false, "label": "compatible solutes", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Ectoine biosynthesis operon encoding the ectoine pathway enzymes.", "grounding": null, "id": "ect_gene_cluster", "is_orphan": false, "label": "ectABC/ectBACD gene cluster", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "A major compatible solute (osmolyte) accumulated under salt stress.", "grounding": "CHEBI:27592", "id": "ectoine", "is_orphan": false, "label": "ectoine", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Biosynthesis of the compatible solute ectoine via the ectABC/ectBACD pathway.", "grounding": "GO:0019491", "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of Na+/K+ balance under salt stress.", "grounding": null, "id": "ion_homeostasis", "is_orphan": false, "label": "ion homeostasis during salt stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "Salinity range below that of moderate and extreme halophiles.", "grounding": null, "id": "low_moderate_nacl", "is_orphan": false, "label": "low to moderate NaCl", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#ecfccb", "description": "Coordinated induction of sodium/potassium transport transcription under salt stress.", "grounding": null, "id": "na_k_transcription", "is_orphan": false, "label": "Na+/K+ transcriptional induction", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Uptake of compatible solutes such as glycine betaine.", "grounding": null, "id": "osmoprotectant_transport", "is_orphan": false, "label": "osmoprotectant transport", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Osmotic challenge caused by environmental salt.", "grounding": "GO:0006970", "id": "osmotic_stress", "is_orphan": false, "label": "osmotic stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow and survive under elevated salinity / salt stress.", "grounding": "METPO:1000622", "id": "salt_tolerance", "is_orphan": false, "label": "salt tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "Optimal growth requires low to moderate salt concentrations.", "grounding": "METPO:1000625", "id": "slightly_halophilic_trait", "is_orphan": false, "label": "slightly halophilic", "node_type": "TRAIT", "xrefs": []}], "title": "Slight halophile low-salt osmoadaptation mechanism"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -891,7 +897,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 02:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/non_spore_forming.html b/pages/traits/morphology/non_spore_forming.html index d0647189..c5a9cc52 100644 --- a/pages/traits/morphology/non_spore_forming.html +++ b/pages/traits/morphology/non_spore_forming.html @@ -144,7 +144,7 @@

    Edge evidence

  • low or absent Spo0A activity causes - loss of sporulation capacity + non-spore forming biolink:causes

    Low or absent Spo0A activity abolishes sporulation capacity.

      @@ -159,23 +159,6 @@

      Edge evidence

    • - loss of sporulation capacity - manifests as - non-spore forming - METPO:2007400 -

      Loss of sporulation capacity manifests the non-spore-forming phenotype.

      -
        - -
      • - DOI:10.3389/fmicb.2021.630573 - - Failure to produce/activate Spo0A prevents sporulation, yielding the non-spore-forming trait. -
      • - -
      -
    • - -
    • Rap phosphatases dephosphorylates dephosphorylation of Spo0F @@ -192,7 +175,7 @@

      Edge evidence

  • -
  • +
  • dephosphorylation of Spo0F decreases activation of low or absent Spo0A activity @@ -209,7 +192,7 @@

    Edge evidence

  • -
  • +
  • Spo0A phosphorelay disruption prevents no entry into sporulation @@ -226,7 +209,7 @@

    Edge evidence

  • -
  • +
  • no entry into sporulation manifests as non-spore forming @@ -496,6 +479,12 @@

    Curation history

    Grounded 5 causal-edge predicate_id field(s) via mappings/predicate_grounding.tsv (biolink:causes×2, METPO:2007400×2, RO:0002212×1).

  • +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Merged node loss_sporulation_capacity into non_spore_forming_trait. Issue 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, non-spore forming), so the only correct grounding duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape loss_sporulation_genes already uses in this graph. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -853,7 +842,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking absence or non-functionality of the Spo0A-initiated sporulation regulatory cascade to inability to form endospores.", "edges": [{"description": "Without the Spo0A/sigma cascade, asymmetric septation cannot be initiated.", "evidence": [{"notes": "Supports the Spo0A/sigma cascade as the gatekeeper of sporulation morphogenesis.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "id": "edge-1", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "absent_spo0a_cascade", "target": "no_asymmetric_septation"}, {"description": "Without asymmetric septation, the forespore compartment and subsequent endospore cannot be produced.", "evidence": [{"notes": "Supports asymmetric septation as a required step for endospore formation.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "id": "edge-2", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "no_asymmetric_septation", "target": "no_endospore_formation"}, {"description": "Failure to produce endospores manifests the non-spore-forming trait.", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1155/2013/898106", "snippet": "S. aureus does not form spores"}], "id": "edge-3", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no_endospore_formation", "target": "non_spore_forming_trait"}, {"description": "Absence of spo0A is an excellent predictor of inability to sporulate.", "evidence": [{"notes": "Comparative genomics of 180 genomes: spo0A present in all 76 sporeformers; its absence predicts non-sporulation.", "reference": "DOI:10.1128/jb.00079-22"}], "id": "edge-4", "is_orphan": false, "predicate": "predicts", "predicate_id": null, "source": "absent_spo0a_gene", "target": "non_spore_forming_trait"}, {"description": "Loss of a considerable fraction of sporulation genes yields an asporogenic phenotype.", "evidence": [{"notes": "Asporogenic phenotypes can result from inactivation or loss of a considerable fraction of sporulation genes (generic edge).", "reference": "DOI:10.1111/1462-2920.16145"}], "id": "edge-5", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "loss_sporulation_genes", "target": "non_spore_forming_trait"}, {"description": "Low or absent Spo0A activity abolishes sporulation capacity.", "evidence": [{"notes": "Spo0A is the master regulator of endospore formation; elevated Spo0A~P is required to trigger sporulation.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "id": "edge-6", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_spo0a_activity", "target": "loss_sporulation_capacity"}, {"description": "Loss of sporulation capacity manifests the non-spore-forming phenotype.", "evidence": [{"notes": "Failure to produce/activate Spo0A prevents sporulation, yielding the non-spore-forming trait.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "id": "edge-7", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "loss_sporulation_capacity", "target": "non_spore_forming_trait"}, {"description": "Rap phosphatases directly dephosphorylate Spo0F.", "evidence": [{"notes": "Rap phosphatases directly dephosphorylate Spo0F (generic to Bacillus phosphorelay logic).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "id": "edge-8", "is_orphan": false, "predicate": "dephosphorylates", "predicate_id": null, "source": "rap_phosphatases", "target": "spo0f_dephosphorylation"}, {"description": "Dephosphorylation of Spo0F reduces phosphate flow to Spo0A, decreasing its activation.", "evidence": [{"notes": "Reduced phosphate flow to Spo0A in the sporulation phosphorelay (corroborated by DOI:10.3390/microorganisms11081928).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "id": "edge-9", "is_orphan": false, "predicate": "decreases activation of", "predicate_id": null, "source": "spo0f_dephosphorylation", "target": "low_spo0a_activity"}, {"description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay arrests entry into sporulation.", "evidence": [{"notes": "The phosphorelay signals the start of sporulation; mutants arrest at stages 0/I when initiation fails.", "reference": "DOI:10.3390/microorganisms11081928"}], "id": "edge-10", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "phosphorelay_disruption", "target": "no_sporulation_entry"}, {"description": "Failure to enter sporulation manifests the non-spore-forming phenotype.", "evidence": [{"notes": "Arrest at sporulation initiation produces the non-spore-forming endpoint.", "reference": "DOI:10.3390/microorganisms11081928"}], "id": "edge-11", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no_sporulation_entry", "target": "non_spore_forming_trait"}], "evidence_rows": [{"description": "Without the Spo0A/sigma cascade, asymmetric septation cannot be initiated.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the Spo0A/sigma cascade as the gatekeeper of sporulation morphogenesis.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "absent Spo0A regulatory cascade", "target": "no asymmetric septation"}, {"description": "Without asymmetric septation, the forespore compartment and subsequent endospore cannot be produced.", "edge_id": "edge-2", "evidence": [{"notes": "Supports asymmetric septation as a required step for endospore formation.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "no asymmetric septation", "target": "no endospore formation"}, {"description": "Failure to produce endospores manifests the non-spore-forming trait.", "edge_id": "edge-3", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1155/2013/898106", "snippet": "S. aureus does not form spores"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no endospore formation", "target": "non-spore forming"}, {"description": "Absence of spo0A is an excellent predictor of inability to sporulate.", "edge_id": "edge-4", "evidence": [{"notes": "Comparative genomics of 180 genomes: spo0A present in all 76 sporeformers; its absence predicts non-sporulation.", "reference": "DOI:10.1128/jb.00079-22"}], "predicate": "predicts", "predicate_id": null, "source": "absence of spo0A gene", "target": "non-spore forming"}, {"description": "Loss of a considerable fraction of sporulation genes yields an asporogenic phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Asporogenic phenotypes can result from inactivation or loss of a considerable fraction of sporulation genes (generic edge).", "reference": "DOI:10.1111/1462-2920.16145"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "loss of sporulation genes", "target": "non-spore forming"}, {"description": "Low or absent Spo0A activity abolishes sporulation capacity.", "edge_id": "edge-6", "evidence": [{"notes": "Spo0A is the master regulator of endospore formation; elevated Spo0A~P is required to trigger sporulation.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low or absent Spo0A activity", "target": "loss of sporulation capacity"}, {"description": "Loss of sporulation capacity manifests the non-spore-forming phenotype.", "edge_id": "edge-7", "evidence": [{"notes": "Failure to produce/activate Spo0A prevents sporulation, yielding the non-spore-forming trait.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "loss of sporulation capacity", "target": "non-spore forming"}, {"description": "Rap phosphatases directly dephosphorylate Spo0F.", "edge_id": "edge-8", "evidence": [{"notes": "Rap phosphatases directly dephosphorylate Spo0F (generic to Bacillus phosphorelay logic).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "predicate": "dephosphorylates", "predicate_id": null, "source": "Rap phosphatases", "target": "dephosphorylation of Spo0F"}, {"description": "Dephosphorylation of Spo0F reduces phosphate flow to Spo0A, decreasing its activation.", "edge_id": "edge-9", "evidence": [{"notes": "Reduced phosphate flow to Spo0A in the sporulation phosphorelay (corroborated by DOI:10.3390/microorganisms11081928).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "predicate": "decreases activation of", "predicate_id": null, "source": "dephosphorylation of Spo0F", "target": "low or absent Spo0A activity"}, {"description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay arrests entry into sporulation.", "edge_id": "edge-10", "evidence": [{"notes": "The phosphorelay signals the start of sporulation; mutants arrest at stages 0/I when initiation fails.", "reference": "DOI:10.3390/microorganisms11081928"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "Spo0A phosphorelay disruption", "target": "no entry into sporulation"}, {"description": "Failure to enter sporulation manifests the non-spore-forming phenotype.", "edge_id": "edge-11", "evidence": [{"notes": "Arrest at sporulation initiation produces the non-spore-forming endpoint.", "reference": "DOI:10.3390/microorganisms11081928"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no entry into sporulation", "target": "non-spore forming"}], "graph_id": "non_spore_forming_absent_spo0a_cascade", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Absence or non-functionality of the Spo0A-initiated sporulation regulatory program (Spo0A master regulator and downstream sigma factors).", "grounding": null, "id": "absent_spo0a_cascade", "is_orphan": false, "label": "absent Spo0A regulatory cascade", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Lack of the spo0A master regulator gene; an excellent predictor of inability to sporulate.", "grounding": null, "id": "absent_spo0a_gene", "is_orphan": false, "label": "absence of spo0A gene", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3f4f6", "description": "Loss of the capacity to undergo sporulation.", "grounding": null, "id": "loss_sporulation_capacity", "is_orphan": false, "label": "loss of sporulation capacity", "node_type": "CAPACITY", "xrefs": []}, {"color": "#ecfccb", "description": "Inactivation or loss of a considerable fraction of core sporulation genes.", "grounding": null, "id": "loss_sporulation_genes", "is_orphan": false, "label": "loss of sporulation genes", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Reduced or absent activity of the Spo0A master regulator of endospore formation.", "grounding": null, "id": "low_spo0a_activity", "is_orphan": false, "label": "low or absent Spo0A activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Lack of the polar division step that generates a forespore compartment.", "grounding": null, "id": "no_asymmetric_septation", "is_orphan": false, "label": "no asymmetric septation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Failure to produce a dormant, resistant endospore.", "grounding": null, "id": "no_endospore_formation", "is_orphan": false, "label": "no endospore formation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Failure to enter the sporulation developmental program (arrest at stages 0/I).", "grounding": null, "id": "no_sporulation_entry", "is_orphan": false, "label": "no entry into sporulation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Inability to produce endospores.", "grounding": "METPO:1000872", "id": "non_spore_forming_trait", "is_orphan": false, "label": "non-spore forming", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay that initiates sporulation.", "grounding": null, "id": "phosphorelay_disruption", "is_orphan": false, "label": "Spo0A phosphorelay disruption", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Rap family phosphatases that dephosphorylate Spo0F in the sporulation phosphorelay.", "grounding": null, "id": "rap_phosphatases", "is_orphan": false, "label": "Rap phosphatases", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Dephosphorylation of Spo0F reducing phosphate flow to Spo0A in the phosphorelay.", "grounding": null, "id": "spo0f_dephosphorylation", "is_orphan": false, "label": "dephosphorylation of Spo0F", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "Non-spore-forming absent Spo0A cascade"}]; + var graphs = [{"description": "DOI-backed graph linking absence or non-functionality of the Spo0A-initiated sporulation regulatory cascade to inability to form endospores.", "edges": [{"description": "Without the Spo0A/sigma cascade, asymmetric septation cannot be initiated.", "evidence": [{"notes": "Supports the Spo0A/sigma cascade as the gatekeeper of sporulation morphogenesis.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "id": "edge-1", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "absent_spo0a_cascade", "target": "no_asymmetric_septation"}, {"description": "Without asymmetric septation, the forespore compartment and subsequent endospore cannot be produced.", "evidence": [{"notes": "Supports asymmetric septation as a required step for endospore formation.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "id": "edge-2", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "no_asymmetric_septation", "target": "no_endospore_formation"}, {"description": "Failure to produce endospores manifests the non-spore-forming trait.", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1155/2013/898106", "snippet": "S. aureus does not form spores"}], "id": "edge-3", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no_endospore_formation", "target": "non_spore_forming_trait"}, {"description": "Absence of spo0A is an excellent predictor of inability to sporulate.", "evidence": [{"notes": "Comparative genomics of 180 genomes: spo0A present in all 76 sporeformers; its absence predicts non-sporulation.", "reference": "DOI:10.1128/jb.00079-22"}], "id": "edge-4", "is_orphan": false, "predicate": "predicts", "predicate_id": null, "source": "absent_spo0a_gene", "target": "non_spore_forming_trait"}, {"description": "Loss of a considerable fraction of sporulation genes yields an asporogenic phenotype.", "evidence": [{"notes": "Asporogenic phenotypes can result from inactivation or loss of a considerable fraction of sporulation genes (generic edge).", "reference": "DOI:10.1111/1462-2920.16145"}], "id": "edge-5", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "loss_sporulation_genes", "target": "non_spore_forming_trait"}, {"description": "Low or absent Spo0A activity abolishes sporulation capacity.", "evidence": [{"notes": "Spo0A is the master regulator of endospore formation; elevated Spo0A~P is required to trigger sporulation.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "id": "edge-6", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_spo0a_activity", "target": "non_spore_forming_trait"}, {"description": "Rap phosphatases directly dephosphorylate Spo0F.", "evidence": [{"notes": "Rap phosphatases directly dephosphorylate Spo0F (generic to Bacillus phosphorelay logic).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "id": "edge-7", "is_orphan": false, "predicate": "dephosphorylates", "predicate_id": null, "source": "rap_phosphatases", "target": "spo0f_dephosphorylation"}, {"description": "Dephosphorylation of Spo0F reduces phosphate flow to Spo0A, decreasing its activation.", "evidence": [{"notes": "Reduced phosphate flow to Spo0A in the sporulation phosphorelay (corroborated by DOI:10.3390/microorganisms11081928).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "id": "edge-8", "is_orphan": false, "predicate": "decreases activation of", "predicate_id": null, "source": "spo0f_dephosphorylation", "target": "low_spo0a_activity"}, {"description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay arrests entry into sporulation.", "evidence": [{"notes": "The phosphorelay signals the start of sporulation; mutants arrest at stages 0/I when initiation fails.", "reference": "DOI:10.3390/microorganisms11081928"}], "id": "edge-9", "is_orphan": false, "predicate": "prevents", "predicate_id": "RO:0002212", "source": "phosphorelay_disruption", "target": "no_sporulation_entry"}, {"description": "Failure to enter sporulation manifests the non-spore-forming phenotype.", "evidence": [{"notes": "Arrest at sporulation initiation produces the non-spore-forming endpoint.", "reference": "DOI:10.3390/microorganisms11081928"}], "id": "edge-10", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no_sporulation_entry", "target": "non_spore_forming_trait"}], "evidence_rows": [{"description": "Without the Spo0A/sigma cascade, asymmetric septation cannot be initiated.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the Spo0A/sigma cascade as the gatekeeper of sporulation morphogenesis.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "absent Spo0A regulatory cascade", "target": "no asymmetric septation"}, {"description": "Without asymmetric septation, the forespore compartment and subsequent endospore cannot be produced.", "edge_id": "edge-2", "evidence": [{"notes": "Supports asymmetric septation as a required step for endospore formation.", "reference": "DOI:10.1146/annurev.genet.30.1.297", "snippet": "activation of these sigma factors to landmark events in morphogenesis"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "no asymmetric septation", "target": "no endospore formation"}, {"description": "Failure to produce endospores manifests the non-spore-forming trait.", "edge_id": "edge-3", "evidence": [{"notes": "Supports the trait endpoint in a representative organism.", "reference": "DOI:10.1155/2013/898106", "snippet": "S. aureus does not form spores"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no endospore formation", "target": "non-spore forming"}, {"description": "Absence of spo0A is an excellent predictor of inability to sporulate.", "edge_id": "edge-4", "evidence": [{"notes": "Comparative genomics of 180 genomes: spo0A present in all 76 sporeformers; its absence predicts non-sporulation.", "reference": "DOI:10.1128/jb.00079-22"}], "predicate": "predicts", "predicate_id": null, "source": "absence of spo0A gene", "target": "non-spore forming"}, {"description": "Loss of a considerable fraction of sporulation genes yields an asporogenic phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Asporogenic phenotypes can result from inactivation or loss of a considerable fraction of sporulation genes (generic edge).", "reference": "DOI:10.1111/1462-2920.16145"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "loss of sporulation genes", "target": "non-spore forming"}, {"description": "Low or absent Spo0A activity abolishes sporulation capacity.", "edge_id": "edge-6", "evidence": [{"notes": "Spo0A is the master regulator of endospore formation; elevated Spo0A~P is required to trigger sporulation.", "reference": "DOI:10.3389/fmicb.2021.630573"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low or absent Spo0A activity", "target": "non-spore forming"}, {"description": "Rap phosphatases directly dephosphorylate Spo0F.", "edge_id": "edge-7", "evidence": [{"notes": "Rap phosphatases directly dephosphorylate Spo0F (generic to Bacillus phosphorelay logic).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "predicate": "dephosphorylates", "predicate_id": null, "source": "Rap phosphatases", "target": "dephosphorylation of Spo0F"}, {"description": "Dephosphorylation of Spo0F reduces phosphate flow to Spo0A, decreasing its activation.", "edge_id": "edge-8", "evidence": [{"notes": "Reduced phosphate flow to Spo0A in the sporulation phosphorelay (corroborated by DOI:10.3390/microorganisms11081928).", "reference": "DOI:10.1038/s41522-024-00594-6"}], "predicate": "decreases activation of", "predicate_id": null, "source": "dephosphorylation of Spo0F", "target": "low or absent Spo0A activity"}, {"description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay arrests entry into sporulation.", "edge_id": "edge-9", "evidence": [{"notes": "The phosphorelay signals the start of sporulation; mutants arrest at stages 0/I when initiation fails.", "reference": "DOI:10.3390/microorganisms11081928"}], "predicate": "prevents", "predicate_id": "RO:0002212", "source": "Spo0A phosphorelay disruption", "target": "no entry into sporulation"}, {"description": "Failure to enter sporulation manifests the non-spore-forming phenotype.", "edge_id": "edge-10", "evidence": [{"notes": "Arrest at sporulation initiation produces the non-spore-forming endpoint.", "reference": "DOI:10.3390/microorganisms11081928"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "no entry into sporulation", "target": "non-spore forming"}], "graph_id": "non_spore_forming_absent_spo0a_cascade", "issues": [], "nodes": [{"color": "#ecfccb", "description": "Absence or non-functionality of the Spo0A-initiated sporulation regulatory program (Spo0A master regulator and downstream sigma factors).", "grounding": null, "id": "absent_spo0a_cascade", "is_orphan": false, "label": "absent Spo0A regulatory cascade", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Lack of the spo0A master regulator gene; an excellent predictor of inability to sporulate.", "grounding": null, "id": "absent_spo0a_gene", "is_orphan": false, "label": "absence of spo0A gene", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Inactivation or loss of a considerable fraction of core sporulation genes.", "grounding": null, "id": "loss_sporulation_genes", "is_orphan": false, "label": "loss of sporulation genes", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Reduced or absent activity of the Spo0A master regulator of endospore formation.", "grounding": null, "id": "low_spo0a_activity", "is_orphan": false, "label": "low or absent Spo0A activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Lack of the polar division step that generates a forespore compartment.", "grounding": null, "id": "no_asymmetric_septation", "is_orphan": false, "label": "no asymmetric septation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Failure to produce a dormant, resistant endospore.", "grounding": null, "id": "no_endospore_formation", "is_orphan": false, "label": "no endospore formation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Failure to enter the sporulation developmental program (arrest at stages 0/I).", "grounding": null, "id": "no_sporulation_entry", "is_orphan": false, "label": "no entry into sporulation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Inability to produce endospores.", "grounding": "METPO:1000872", "id": "non_spore_forming_trait", "is_orphan": false, "label": "non-spore forming", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Disruption of the KinA/KinB -\u003e Spo0F -\u003e Spo0B -\u003e Spo0A phosphorelay that initiates sporulation.", "grounding": null, "id": "phosphorelay_disruption", "is_orphan": false, "label": "Spo0A phosphorelay disruption", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Rap family phosphatases that dephosphorylate Spo0F in the sporulation phosphorelay.", "grounding": null, "id": "rap_phosphatases", "is_orphan": false, "label": "Rap phosphatases", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Dephosphorylation of Spo0F reducing phosphate flow to Spo0A in the phosphorelay.", "grounding": null, "id": "spo0f_dephosphorylation", "is_orphan": false, "label": "dephosphorylation of Spo0F", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "Non-spore-forming absent Spo0A cascade"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -876,7 +865,7 @@

    kg-microbe

    METPO
    - Record as of 2026-06-24 17:21 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/sphere_shaped.html b/pages/traits/morphology/sphere_shaped.html index 4a500491..18c001ec 100644 --- a/pages/traits/morphology/sphere_shaped.html +++ b/pages/traits/morphology/sphere_shaped.html @@ -144,7 +144,7 @@

    Edge evidence

  • MreB-mediated elongation machinery causally upstream of - elongation capacity + lateral cell-wall elongation

    Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods.

      @@ -159,23 +159,6 @@

      Edge evidence

    • - elongation capacity - reduced in - sphere shaped - -

      Loss of elongation capacity prevents cocci from elongating into rods, favoring a sphere.

      -
        - -
      • - DOI:10.1038/nrmicro3088 - - prevents cocci from elongating into rods -
      • - -
      -
    • - -
    • FtsZ division ring recruits divisome and PBPs @@ -192,7 +175,7 @@

      Edge evidence

  • -
  • +
  • FtsZ treadmilling regulates septal peptidoglycan synthesis @@ -209,7 +192,7 @@

    Edge evidence

  • -
  • +
  • FtsW lipid II flippase transports lipid II @@ -226,7 +209,7 @@

    Edge evidence

  • -
  • +
  • lipid II enables septal peptidoglycan synthesis @@ -520,6 +503,12 @@

    Curation history

    Edge ftsW_flippase -> lipid_ii in graph sphere_shaped_septal_peptidoglycan: re-grounded it from enables/RO:0002327 to transports/METPO:2007812. Issue 334. biolink declares enables range 'biological process or activity', which of CausalNodeTypeEnum only BIOLOGICAL_PROCESS, PATHWAY and MOLECULAR_FUNCTION satisfy, so this edge entailed a false type on its object. 'FtsW FLIPS lipid II to the outer septal face' -- a flippase moves its substrate across the membrane, which is transport, not enablement. Needs GENE_OR_PROTEIN added to `transports`' subject_types, which is a deliberate widening recorded there.

  • +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Merged node elongation_capacity into lateral_elongation. Issue 352. 'Capacity of a cell to elongate into a rod via sidewall growth' against lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already carried `reduced in -> sphere_shaped_trait`. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -877,7 +866,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "Evidence-backed causal sketch linking spherical cell shape to FtsZ-associated septal synthesis, peptidoglycan remodeling, and limited lateral elongation.", "edges": [{"description": "The FtsZ division ring organizes septal wall synthesis.", "evidence": [{"notes": "Supports FtsZ-PBP cooperation in division-associated shape generation.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "FtsZ collaborates with penicillin binding proteins"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ftsZ_division_ring", "target": "septal_peptidoglycan_synthesis"}, {"description": "Septal synthesis builds and remodels the spherical cell wall.", "evidence": [{"notes": "Supports septal-only PG synthesis in spherical cocci.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "synthesize peptidoglycan only at the division septum"}], "id": "edge-2", "is_orphan": false, "predicate": "builds", "predicate_id": "biolink:produces", "source": "septal_peptidoglycan_synthesis", "target": "peptidoglycan_cell_wall"}, {"description": "Reduced lateral elongation helps preserve a sphere rather than a rod.", "evidence": [{"notes": "Broad review supports different growth mechanisms for coccoid versus rod-shaped bacteria.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "mechanisms controlling growth and division of coccoid bacteria"}], "id": "edge-3", "is_orphan": false, "predicate": "reduced in", "predicate_id": null, "source": "lateral_elongation", "target": "sphere_shaped_trait"}, {"description": "Peptidoglycan wall geometry maintains the spherical shape.", "evidence": [{"notes": "Supports the cell wall as central to bacterial shape maintenance.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "primary role in maintaining cell shape"}], "id": "edge-4", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "peptidoglycan_cell_wall", "target": "sphere_shaped_trait"}, {"description": "Septal-only peptidoglycan synthesis in cocci produces spherical morphology.", "evidence": [{"notes": "spherical cocci synthesize peptidoglycan only at the division septum", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-5", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "septal_peptidoglycan_synthesis", "target": "sphere_shaped_trait"}, {"description": "Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods.", "evidence": [{"notes": "loss of the MreB cytoskeleton is the main factor that prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-6", "is_orphan": false, "predicate": "causally upstream of", "predicate_id": null, "source": "mreB_elongation_machinery", "target": "elongation_capacity"}, {"description": "Loss of elongation capacity prevents cocci from elongating into rods, favoring a sphere.", "evidence": [{"notes": "prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-7", "is_orphan": false, "predicate": "reduced in", "predicate_id": null, "source": "elongation_capacity", "target": "sphere_shaped_trait"}, {"description": "FtsZ assembly into a mid-cell Z ring recruits PBPs and divisome components.", "evidence": [{"notes": "cell division is initiated by FtsZ assembly into a mid-cell Z ring that recruits PBPs and divisome components", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-8", "is_orphan": false, "predicate": "recruits", "predicate_id": null, "source": "ftsZ_division_ring", "target": "divisome_pbps"}, {"description": "FtsZ treadmilling distributes the PG synthases that form the septum.", "evidence": [{"notes": "The FtsZ polymers undergo treadmilling around the Z-ring to distribute the PG synthases forming the septum", "reference": "DOI:10.1042/bsr20221664"}], "id": "edge-9", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "ftsZ_treadmilling", "target": "septal_peptidoglycan_synthesis"}, {"description": "FtsW flips lipid II to the outer septal face for PG synthesis.", "evidence": [{"notes": "lipid II is flipped to the outside by the septally localized flippase FtsW", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-10", "is_orphan": false, "predicate": "transports", "predicate_id": "METPO:2007812", "source": "ftsW_flippase", "target": "lipid_ii"}, {"description": "Lipid II serves as the PBP substrate for septal peptidoglycan synthesis.", "evidence": [{"notes": "PG synthesis uses lipid II as the PBP substrate", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-11", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "lipid_ii", "target": "septal_peptidoglycan_synthesis"}], "evidence_rows": [{"description": "The FtsZ division ring organizes septal wall synthesis.", "edge_id": "edge-1", "evidence": [{"notes": "Supports FtsZ-PBP cooperation in division-associated shape generation.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "FtsZ collaborates with penicillin binding proteins"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "FtsZ division ring", "target": "septal peptidoglycan synthesis"}, {"description": "Septal synthesis builds and remodels the spherical cell wall.", "edge_id": "edge-2", "evidence": [{"notes": "Supports septal-only PG synthesis in spherical cocci.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "synthesize peptidoglycan only at the division septum"}], "predicate": "builds", "predicate_id": "biolink:produces", "source": "septal peptidoglycan synthesis", "target": "peptidoglycan cell wall"}, {"description": "Reduced lateral elongation helps preserve a sphere rather than a rod.", "edge_id": "edge-3", "evidence": [{"notes": "Broad review supports different growth mechanisms for coccoid versus rod-shaped bacteria.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "mechanisms controlling growth and division of coccoid bacteria"}], "predicate": "reduced in", "predicate_id": null, "source": "lateral cell-wall elongation", "target": "sphere shaped"}, {"description": "Peptidoglycan wall geometry maintains the spherical shape.", "edge_id": "edge-4", "evidence": [{"notes": "Supports the cell wall as central to bacterial shape maintenance.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "primary role in maintaining cell shape"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "peptidoglycan cell wall", "target": "sphere shaped"}, {"description": "Septal-only peptidoglycan synthesis in cocci produces spherical morphology.", "edge_id": "edge-5", "evidence": [{"notes": "spherical cocci synthesize peptidoglycan only at the division septum", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "septal peptidoglycan synthesis", "target": "sphere shaped"}, {"description": "Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods.", "edge_id": "edge-6", "evidence": [{"notes": "loss of the MreB cytoskeleton is the main factor that prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "causally upstream of", "predicate_id": null, "source": "MreB-mediated elongation machinery", "target": "elongation capacity"}, {"description": "Loss of elongation capacity prevents cocci from elongating into rods, favoring a sphere.", "edge_id": "edge-7", "evidence": [{"notes": "prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "reduced in", "predicate_id": null, "source": "elongation capacity", "target": "sphere shaped"}, {"description": "FtsZ assembly into a mid-cell Z ring recruits PBPs and divisome components.", "edge_id": "edge-8", "evidence": [{"notes": "cell division is initiated by FtsZ assembly into a mid-cell Z ring that recruits PBPs and divisome components", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "recruits", "predicate_id": null, "source": "FtsZ division ring", "target": "divisome and PBPs"}, {"description": "FtsZ treadmilling distributes the PG synthases that form the septum.", "edge_id": "edge-9", "evidence": [{"notes": "The FtsZ polymers undergo treadmilling around the Z-ring to distribute the PG synthases forming the septum", "reference": "DOI:10.1042/bsr20221664"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "FtsZ treadmilling", "target": "septal peptidoglycan synthesis"}, {"description": "FtsW flips lipid II to the outer septal face for PG synthesis.", "edge_id": "edge-10", "evidence": [{"notes": "lipid II is flipped to the outside by the septally localized flippase FtsW", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "transports", "predicate_id": "METPO:2007812", "source": "FtsW lipid II flippase", "target": "lipid II"}, {"description": "Lipid II serves as the PBP substrate for septal peptidoglycan synthesis.", "edge_id": "edge-11", "evidence": [{"notes": "PG synthesis uses lipid II as the PBP substrate", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "lipid II", "target": "septal peptidoglycan synthesis"}], "graph_id": "sphere_shaped_septal_peptidoglycan", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Division machinery and penicillin-binding proteins recruited to mid-cell.", "grounding": null, "id": "divisome_pbps", "is_orphan": false, "label": "divisome and PBPs", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3f4f6", "description": "Capacity of a cell to elongate into a rod via sidewall growth.", "grounding": null, "id": "elongation_capacity", "is_orphan": false, "label": "elongation capacity", "node_type": "CAPACITY", "xrefs": []}, {"color": "#f3e8ff", "description": "Septally localized flippase that translocates lipid II across the membrane.", "grounding": null, "id": "ftsW_flippase", "is_orphan": false, "label": "FtsW lipid II flippase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3e8ff", "description": "Tubulin-like division scaffold.", "grounding": null, "id": "ftsZ_division_ring", "is_orphan": false, "label": "FtsZ division ring", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Treadmilling of FtsZ polymers distributing PG synthases around the Z-ring.", "grounding": null, "id": "ftsZ_treadmilling", "is_orphan": false, "label": "FtsZ treadmilling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Sidewall growth mode that lengthens rods.", "grounding": null, "id": "lateral_elongation", "is_orphan": false, "label": "lateral cell-wall elongation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Membrane-bound peptidoglycan precursor and PBP substrate.", "grounding": "CHEBI:27692", "id": "lipid_ii", "is_orphan": false, "label": "lipid II", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Actin-like MreB cytoskeleton directing lateral (rod) elongation.", "grounding": null, "id": "mreB_elongation_machinery", "is_orphan": false, "label": "MreB-mediated elongation machinery", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ede9fe", "description": "Cell-wall polymer network maintaining bacterial shape.", "grounding": "GO:0009274", "id": "peptidoglycan_cell_wall", "is_orphan": false, "label": "peptidoglycan cell wall", "node_type": "CELLULAR_LOCALIZATION", "xrefs": []}, {"color": "#ecfccb", "description": "Cell-wall synthesis localized to the division septum.", "grounding": null, "id": "septal_peptidoglycan_synthesis", "is_orphan": false, "label": "septal peptidoglycan synthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Spherical bacterial cell morphology.", "grounding": "METPO:1000683", "id": "sphere_shaped_trait", "is_orphan": false, "label": "sphere shaped", "node_type": "TRAIT", "xrefs": []}], "title": "Spherical shape septal peptidoglycan mechanism"}]; + var graphs = [{"description": "Evidence-backed causal sketch linking spherical cell shape to FtsZ-associated septal synthesis, peptidoglycan remodeling, and limited lateral elongation.", "edges": [{"description": "The FtsZ division ring organizes septal wall synthesis.", "evidence": [{"notes": "Supports FtsZ-PBP cooperation in division-associated shape generation.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "FtsZ collaborates with penicillin binding proteins"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ftsZ_division_ring", "target": "septal_peptidoglycan_synthesis"}, {"description": "Septal synthesis builds and remodels the spherical cell wall.", "evidence": [{"notes": "Supports septal-only PG synthesis in spherical cocci.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "synthesize peptidoglycan only at the division septum"}], "id": "edge-2", "is_orphan": false, "predicate": "builds", "predicate_id": "biolink:produces", "source": "septal_peptidoglycan_synthesis", "target": "peptidoglycan_cell_wall"}, {"description": "Reduced lateral elongation helps preserve a sphere rather than a rod.", "evidence": [{"notes": "Broad review supports different growth mechanisms for coccoid versus rod-shaped bacteria.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "mechanisms controlling growth and division of coccoid bacteria"}], "id": "edge-3", "is_orphan": false, "predicate": "reduced in", "predicate_id": null, "source": "lateral_elongation", "target": "sphere_shaped_trait"}, {"description": "Peptidoglycan wall geometry maintains the spherical shape.", "evidence": [{"notes": "Supports the cell wall as central to bacterial shape maintenance.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "primary role in maintaining cell shape"}], "id": "edge-4", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "peptidoglycan_cell_wall", "target": "sphere_shaped_trait"}, {"description": "Septal-only peptidoglycan synthesis in cocci produces spherical morphology.", "evidence": [{"notes": "spherical cocci synthesize peptidoglycan only at the division septum", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-5", "is_orphan": false, "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "septal_peptidoglycan_synthesis", "target": "sphere_shaped_trait"}, {"description": "Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods.", "evidence": [{"notes": "loss of the MreB cytoskeleton is the main factor that prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-6", "is_orphan": false, "predicate": "causally upstream of", "predicate_id": null, "source": "mreB_elongation_machinery", "target": "lateral_elongation"}, {"description": "FtsZ assembly into a mid-cell Z ring recruits PBPs and divisome components.", "evidence": [{"notes": "cell division is initiated by FtsZ assembly into a mid-cell Z ring that recruits PBPs and divisome components", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-7", "is_orphan": false, "predicate": "recruits", "predicate_id": null, "source": "ftsZ_division_ring", "target": "divisome_pbps"}, {"description": "FtsZ treadmilling distributes the PG synthases that form the septum.", "evidence": [{"notes": "The FtsZ polymers undergo treadmilling around the Z-ring to distribute the PG synthases forming the septum", "reference": "DOI:10.1042/bsr20221664"}], "id": "edge-8", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "ftsZ_treadmilling", "target": "septal_peptidoglycan_synthesis"}, {"description": "FtsW flips lipid II to the outer septal face for PG synthesis.", "evidence": [{"notes": "lipid II is flipped to the outside by the septally localized flippase FtsW", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-9", "is_orphan": false, "predicate": "transports", "predicate_id": "METPO:2007812", "source": "ftsW_flippase", "target": "lipid_ii"}, {"description": "Lipid II serves as the PBP substrate for septal peptidoglycan synthesis.", "evidence": [{"notes": "PG synthesis uses lipid II as the PBP substrate", "reference": "DOI:10.1038/nrmicro3088"}], "id": "edge-10", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "lipid_ii", "target": "septal_peptidoglycan_synthesis"}], "evidence_rows": [{"description": "The FtsZ division ring organizes septal wall synthesis.", "edge_id": "edge-1", "evidence": [{"notes": "Supports FtsZ-PBP cooperation in division-associated shape generation.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "FtsZ collaborates with penicillin binding proteins"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "FtsZ division ring", "target": "septal peptidoglycan synthesis"}, {"description": "Septal synthesis builds and remodels the spherical cell wall.", "edge_id": "edge-2", "evidence": [{"notes": "Supports septal-only PG synthesis in spherical cocci.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "synthesize peptidoglycan only at the division septum"}], "predicate": "builds", "predicate_id": "biolink:produces", "source": "septal peptidoglycan synthesis", "target": "peptidoglycan cell wall"}, {"description": "Reduced lateral elongation helps preserve a sphere rather than a rod.", "edge_id": "edge-3", "evidence": [{"notes": "Broad review supports different growth mechanisms for coccoid versus rod-shaped bacteria.", "reference": "DOI:10.1038/nrmicro3088", "snippet": "mechanisms controlling growth and division of coccoid bacteria"}], "predicate": "reduced in", "predicate_id": null, "source": "lateral cell-wall elongation", "target": "sphere shaped"}, {"description": "Peptidoglycan wall geometry maintains the spherical shape.", "edge_id": "edge-4", "evidence": [{"notes": "Supports the cell wall as central to bacterial shape maintenance.", "reference": "DOI:10.1038/nrmicro1205", "snippet": "primary role in maintaining cell shape"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "peptidoglycan cell wall", "target": "sphere shaped"}, {"description": "Septal-only peptidoglycan synthesis in cocci produces spherical morphology.", "edge_id": "edge-5", "evidence": [{"notes": "spherical cocci synthesize peptidoglycan only at the division septum", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "contributes to", "predicate_id": "RO:0002326", "source": "septal peptidoglycan synthesis", "target": "sphere shaped"}, {"description": "Loss of the MreB cytoskeleton removes the elongation capacity that lengthens rods.", "edge_id": "edge-6", "evidence": [{"notes": "loss of the MreB cytoskeleton is the main factor that prevents cocci from elongating into rods", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "causally upstream of", "predicate_id": null, "source": "MreB-mediated elongation machinery", "target": "lateral cell-wall elongation"}, {"description": "FtsZ assembly into a mid-cell Z ring recruits PBPs and divisome components.", "edge_id": "edge-7", "evidence": [{"notes": "cell division is initiated by FtsZ assembly into a mid-cell Z ring that recruits PBPs and divisome components", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "recruits", "predicate_id": null, "source": "FtsZ division ring", "target": "divisome and PBPs"}, {"description": "FtsZ treadmilling distributes the PG synthases that form the septum.", "edge_id": "edge-8", "evidence": [{"notes": "The FtsZ polymers undergo treadmilling around the Z-ring to distribute the PG synthases forming the septum", "reference": "DOI:10.1042/bsr20221664"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "FtsZ treadmilling", "target": "septal peptidoglycan synthesis"}, {"description": "FtsW flips lipid II to the outer septal face for PG synthesis.", "edge_id": "edge-9", "evidence": [{"notes": "lipid II is flipped to the outside by the septally localized flippase FtsW", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "transports", "predicate_id": "METPO:2007812", "source": "FtsW lipid II flippase", "target": "lipid II"}, {"description": "Lipid II serves as the PBP substrate for septal peptidoglycan synthesis.", "edge_id": "edge-10", "evidence": [{"notes": "PG synthesis uses lipid II as the PBP substrate", "reference": "DOI:10.1038/nrmicro3088"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "lipid II", "target": "septal peptidoglycan synthesis"}], "graph_id": "sphere_shaped_septal_peptidoglycan", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Division machinery and penicillin-binding proteins recruited to mid-cell.", "grounding": null, "id": "divisome_pbps", "is_orphan": false, "label": "divisome and PBPs", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3e8ff", "description": "Septally localized flippase that translocates lipid II across the membrane.", "grounding": null, "id": "ftsW_flippase", "is_orphan": false, "label": "FtsW lipid II flippase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3e8ff", "description": "Tubulin-like division scaffold.", "grounding": null, "id": "ftsZ_division_ring", "is_orphan": false, "label": "FtsZ division ring", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Treadmilling of FtsZ polymers distributing PG synthases around the Z-ring.", "grounding": null, "id": "ftsZ_treadmilling", "is_orphan": false, "label": "FtsZ treadmilling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Sidewall growth mode that lengthens rods.", "grounding": null, "id": "lateral_elongation", "is_orphan": false, "label": "lateral cell-wall elongation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Membrane-bound peptidoglycan precursor and PBP substrate.", "grounding": "CHEBI:27692", "id": "lipid_ii", "is_orphan": false, "label": "lipid II", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Actin-like MreB cytoskeleton directing lateral (rod) elongation.", "grounding": null, "id": "mreB_elongation_machinery", "is_orphan": false, "label": "MreB-mediated elongation machinery", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ede9fe", "description": "Cell-wall polymer network maintaining bacterial shape.", "grounding": "GO:0009274", "id": "peptidoglycan_cell_wall", "is_orphan": false, "label": "peptidoglycan cell wall", "node_type": "CELLULAR_LOCALIZATION", "xrefs": []}, {"color": "#ecfccb", "description": "Cell-wall synthesis localized to the division septum.", "grounding": null, "id": "septal_peptidoglycan_synthesis", "is_orphan": false, "label": "septal peptidoglycan synthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Spherical bacterial cell morphology.", "grounding": "METPO:1000683", "id": "sphere_shaped_trait", "is_orphan": false, "label": "sphere shaped", "node_type": "TRAIT", "xrefs": []}], "title": "Spherical shape septal peptidoglycan mechanism"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -900,7 +889,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-07 18:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/catalase_activity.html b/pages/traits/physiology/catalase_activity.html index fcf57c4a..dff2db4e 100644 --- a/pages/traits/physiology/catalase_activity.html +++ b/pages/traits/physiology/catalase_activity.html @@ -518,6 +518,12 @@

    Curation history

    Re-grounded 2 causal edge(s) off microbe-domain METPO predicates (2 to has output), issue 301. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Edge directions are unchanged - this pass only relabels and re-grounds. RO:0002234 (has output) is used where the subject is an activity, since biolink gives it the domain 'biological process or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Removed node catalase's grounding. Issue 352. GO:0004096 is 'catalase ACTIVITY' -- a molecular function, which is what catalase_function is. A protein is not its activity, and the graph already says so correctly: catalase -enables-> catalase_function. Dropped from the protein, kept on the function. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -875,7 +881,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "Evidence-backed causal sketch linking catalase to dismutation of hydrogen peroxide into water and molecular oxygen.", "edges": [{"description": "Catalase carries out the catalase molecular function.", "evidence": [{"notes": "Chelikani et al. characterize catalases as the enzymes performing this dismutation.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "catalase", "target": "catalase_function"}, {"description": "The catalase reaction consumes hydrogen peroxide.", "evidence": [{"notes": "Imlay supports catalase as a primary hydrogen-peroxide scavenging defense.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-2", "is_orphan": false, "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "catalase_function", "target": "hydrogen_peroxide"}, {"description": "The catalase reaction produces molecular oxygen.", "evidence": [{"notes": "Catalase dismutation yields O2 (2 H2O2 to O2 + 2 H2O).", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-3", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase_function", "target": "molecular_oxygen"}, {"description": "The catalase reaction produces water.", "evidence": [{"notes": "Catalase dismutation yields water.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-4", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase_function", "target": "water"}, {"description": "Production of catalase confers the catalase-activity phenotype.", "evidence": [{"notes": "Supports catalase possession as the basis of the catalase-activity phenotype.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-5", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "catalase", "target": "catalase_activity_trait"}, {"description": "Catalase activity rapidly decomposes hydrogen peroxide into water and molecular oxygen.", "evidence": [{"notes": "Catalase rapidly decomposes hydrogen peroxide into water and molecular oxygen (canonical enzymology).", "reference": "DOI:10.3390/biom14060697"}], "id": "edge-6", "is_orphan": false, "predicate": "decomposes", "predicate_id": null, "source": "catalase_activity_trait", "target": "hydrogen_peroxide"}, {"description": "Hydrogen peroxide activates the OxyR peroxide-sensing regulator.", "evidence": [{"notes": "An intracellular H2O2 concentration of ~200 nM is sufficient to drive OxyR into a disulfide-bonded (active) form.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-7", "is_orphan": false, "predicate": "activates", "predicate_id": "RO:0002213", "source": "hydrogen_peroxide", "target": "oxyr_regulator"}, {"description": "High hydrogen peroxide concentrations favor scavenging by catalases, which turn over much faster than alkyl hydroperoxide reductase.", "evidence": [{"notes": "Organisms rely on catalases when H2O2 levels are high; catalases turn over much more quickly than Ahp. Likely general across aerobes/facultative anaerobes.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-8", "is_orphan": false, "predicate": "favors scavenging by", "predicate_id": null, "source": "hydrogen_peroxide", "target": "catalase_activity_trait"}, {"description": "OxyR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "id": "edge-9", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "oxyr_regulator", "target": "peroxide_defense_systems"}, {"description": "PerR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "id": "edge-10", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "perr_regulator", "target": "peroxide_defense_systems"}, {"description": "Heme biosynthesis is required for catalase activation; impaired heme synthesis delays peroxide degradation.", "evidence": [{"notes": "Ferrochelatase (hemH) function is required for timely induction of catalase (KatG) activity; loss delays H2O2 degradation and growth.", "reference": "DOI:10.1111/mmi.12967"}], "id": "edge-11", "is_orphan": false, "predicate": "required for", "predicate_id": null, "source": "heme_biosynthesis", "target": "catalase"}], "evidence_rows": [{"description": "Catalase carries out the catalase molecular function.", "edge_id": "edge-1", "evidence": [{"notes": "Chelikani et al. characterize catalases as the enzymes performing this dismutation.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "catalase", "target": "catalase activity"}, {"description": "The catalase reaction consumes hydrogen peroxide.", "edge_id": "edge-2", "evidence": [{"notes": "Imlay supports catalase as a primary hydrogen-peroxide scavenging defense.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "catalase activity", "target": "hydrogen peroxide"}, {"description": "The catalase reaction produces molecular oxygen.", "edge_id": "edge-3", "evidence": [{"notes": "Catalase dismutation yields O2 (2 H2O2 to O2 + 2 H2O).", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase activity", "target": "molecular oxygen"}, {"description": "The catalase reaction produces water.", "edge_id": "edge-4", "evidence": [{"notes": "Catalase dismutation yields water.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase activity", "target": "water"}, {"description": "Production of catalase confers the catalase-activity phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports catalase possession as the basis of the catalase-activity phenotype.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "catalase", "target": "catalase activity"}, {"description": "Catalase activity rapidly decomposes hydrogen peroxide into water and molecular oxygen.", "edge_id": "edge-6", "evidence": [{"notes": "Catalase rapidly decomposes hydrogen peroxide into water and molecular oxygen (canonical enzymology).", "reference": "DOI:10.3390/biom14060697"}], "predicate": "decomposes", "predicate_id": null, "source": "catalase activity", "target": "hydrogen peroxide"}, {"description": "Hydrogen peroxide activates the OxyR peroxide-sensing regulator.", "edge_id": "edge-7", "evidence": [{"notes": "An intracellular H2O2 concentration of ~200 nM is sufficient to drive OxyR into a disulfide-bonded (active) form.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "activates", "predicate_id": "RO:0002213", "source": "hydrogen peroxide", "target": "OxyR"}, {"description": "High hydrogen peroxide concentrations favor scavenging by catalases, which turn over much faster than alkyl hydroperoxide reductase.", "edge_id": "edge-8", "evidence": [{"notes": "Organisms rely on catalases when H2O2 levels are high; catalases turn over much more quickly than Ahp. Likely general across aerobes/facultative anaerobes.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "favors scavenging by", "predicate_id": null, "source": "hydrogen peroxide", "target": "catalase activity"}, {"description": "OxyR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "edge_id": "edge-9", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "OxyR", "target": "peroxide defense systems"}, {"description": "PerR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "edge_id": "edge-10", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "PerR", "target": "peroxide defense systems"}, {"description": "Heme biosynthesis is required for catalase activation; impaired heme synthesis delays peroxide degradation.", "edge_id": "edge-11", "evidence": [{"notes": "Ferrochelatase (hemH) function is required for timely induction of catalase (KatG) activity; loss delays H2O2 degradation and growth.", "reference": "DOI:10.1111/mmi.12967"}], "predicate": "required for", "predicate_id": null, "source": "heme biosynthesis", "target": "catalase"}], "graph_id": "catalase_activity_h2o2_detoxification", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Heme enzyme that dismutates hydrogen peroxide.", "grounding": "GO:0004096", "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to decompose hydrogen peroxide via catalase.", "grounding": "traitmech:000075", "id": "catalase_activity_trait", "is_orphan": false, "label": "catalase activity", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Catalysis of 2 H2O2 = O2 + 2 H2O.", "grounding": "GO:0004096", "id": "catalase_function", "is_orphan": false, "label": "catalase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Synthesis of the heme cofactor required for catalase maturation and activity.", "grounding": "GO:0006783", "id": "heme_biosynthesis", "is_orphan": false, "label": "heme biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species detoxified by catalase.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#fef3c7", "description": "Product of hydrogen peroxide dismutation.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Peroxide-sensing transcriptional regulator activated by hydrogen peroxide.", "grounding": null, "id": "oxyr_regulator", "is_orphan": false, "label": "OxyR", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Antioxidant defense systems (e.g. catalases, peroxidases) that detoxify hydrogen peroxide.", "grounding": null, "id": "peroxide_defense_systems", "is_orphan": false, "label": "peroxide defense systems", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Fe-dependent peroxide-sensing transcriptional repressor inactivated by hydrogen peroxide.", "grounding": "UniProtKB:A0A097ASJ8", "id": "perr_regulator", "is_orphan": false, "label": "PerR", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "Product of hydrogen peroxide dismutation.", "grounding": "CHEBI:15377", "id": "water", "is_orphan": false, "label": "water", "node_type": "CHEMICAL", "xrefs": []}], "title": "Catalase hydrogen-peroxide detoxification"}]; + var graphs = [{"description": "Evidence-backed causal sketch linking catalase to dismutation of hydrogen peroxide into water and molecular oxygen.", "edges": [{"description": "Catalase carries out the catalase molecular function.", "evidence": [{"notes": "Chelikani et al. characterize catalases as the enzymes performing this dismutation.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "catalase", "target": "catalase_function"}, {"description": "The catalase reaction consumes hydrogen peroxide.", "evidence": [{"notes": "Imlay supports catalase as a primary hydrogen-peroxide scavenging defense.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-2", "is_orphan": false, "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "catalase_function", "target": "hydrogen_peroxide"}, {"description": "The catalase reaction produces molecular oxygen.", "evidence": [{"notes": "Catalase dismutation yields O2 (2 H2O2 to O2 + 2 H2O).", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-3", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase_function", "target": "molecular_oxygen"}, {"description": "The catalase reaction produces water.", "evidence": [{"notes": "Catalase dismutation yields water.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-4", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase_function", "target": "water"}, {"description": "Production of catalase confers the catalase-activity phenotype.", "evidence": [{"notes": "Supports catalase possession as the basis of the catalase-activity phenotype.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "id": "edge-5", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "catalase", "target": "catalase_activity_trait"}, {"description": "Catalase activity rapidly decomposes hydrogen peroxide into water and molecular oxygen.", "evidence": [{"notes": "Catalase rapidly decomposes hydrogen peroxide into water and molecular oxygen (canonical enzymology).", "reference": "DOI:10.3390/biom14060697"}], "id": "edge-6", "is_orphan": false, "predicate": "decomposes", "predicate_id": null, "source": "catalase_activity_trait", "target": "hydrogen_peroxide"}, {"description": "Hydrogen peroxide activates the OxyR peroxide-sensing regulator.", "evidence": [{"notes": "An intracellular H2O2 concentration of ~200 nM is sufficient to drive OxyR into a disulfide-bonded (active) form.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-7", "is_orphan": false, "predicate": "activates", "predicate_id": "RO:0002213", "source": "hydrogen_peroxide", "target": "oxyr_regulator"}, {"description": "High hydrogen peroxide concentrations favor scavenging by catalases, which turn over much faster than alkyl hydroperoxide reductase.", "evidence": [{"notes": "Organisms rely on catalases when H2O2 levels are high; catalases turn over much more quickly than Ahp. Likely general across aerobes/facultative anaerobes.", "reference": "DOI:10.1038/nrmicro3032"}], "id": "edge-8", "is_orphan": false, "predicate": "favors scavenging by", "predicate_id": null, "source": "hydrogen_peroxide", "target": "catalase_activity_trait"}, {"description": "OxyR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "id": "edge-9", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "oxyr_regulator", "target": "peroxide_defense_systems"}, {"description": "PerR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "id": "edge-10", "is_orphan": false, "predicate": "regulates", "predicate_id": "RO:0002211", "source": "perr_regulator", "target": "peroxide_defense_systems"}, {"description": "Heme biosynthesis is required for catalase activation; impaired heme synthesis delays peroxide degradation.", "evidence": [{"notes": "Ferrochelatase (hemH) function is required for timely induction of catalase (KatG) activity; loss delays H2O2 degradation and growth.", "reference": "DOI:10.1111/mmi.12967"}], "id": "edge-11", "is_orphan": false, "predicate": "required for", "predicate_id": null, "source": "heme_biosynthesis", "target": "catalase"}], "evidence_rows": [{"description": "Catalase carries out the catalase molecular function.", "edge_id": "edge-1", "evidence": [{"notes": "Chelikani et al. characterize catalases as the enzymes performing this dismutation.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "catalase", "target": "catalase activity"}, {"description": "The catalase reaction consumes hydrogen peroxide.", "edge_id": "edge-2", "evidence": [{"notes": "Imlay supports catalase as a primary hydrogen-peroxide scavenging defense.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "catalase activity", "target": "hydrogen peroxide"}, {"description": "The catalase reaction produces molecular oxygen.", "edge_id": "edge-3", "evidence": [{"notes": "Catalase dismutation yields O2 (2 H2O2 to O2 + 2 H2O).", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase activity", "target": "molecular oxygen"}, {"description": "The catalase reaction produces water.", "edge_id": "edge-4", "evidence": [{"notes": "Catalase dismutation yields water.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "catalase activity", "target": "water"}, {"description": "Production of catalase confers the catalase-activity phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports catalase possession as the basis of the catalase-activity phenotype.", "reference": "DOI:10.1007/s00018-003-3206-5"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "catalase", "target": "catalase activity"}, {"description": "Catalase activity rapidly decomposes hydrogen peroxide into water and molecular oxygen.", "edge_id": "edge-6", "evidence": [{"notes": "Catalase rapidly decomposes hydrogen peroxide into water and molecular oxygen (canonical enzymology).", "reference": "DOI:10.3390/biom14060697"}], "predicate": "decomposes", "predicate_id": null, "source": "catalase activity", "target": "hydrogen peroxide"}, {"description": "Hydrogen peroxide activates the OxyR peroxide-sensing regulator.", "edge_id": "edge-7", "evidence": [{"notes": "An intracellular H2O2 concentration of ~200 nM is sufficient to drive OxyR into a disulfide-bonded (active) form.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "activates", "predicate_id": "RO:0002213", "source": "hydrogen peroxide", "target": "OxyR"}, {"description": "High hydrogen peroxide concentrations favor scavenging by catalases, which turn over much faster than alkyl hydroperoxide reductase.", "edge_id": "edge-8", "evidence": [{"notes": "Organisms rely on catalases when H2O2 levels are high; catalases turn over much more quickly than Ahp. Likely general across aerobes/facultative anaerobes.", "reference": "DOI:10.1038/nrmicro3032"}], "predicate": "favors scavenging by", "predicate_id": null, "source": "hydrogen peroxide", "target": "catalase activity"}, {"description": "OxyR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "edge_id": "edge-9", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "OxyR", "target": "peroxide defense systems"}, {"description": "PerR regulates peroxide defense systems; most bacteria sense H2O2 via OxyR or PerR.", "edge_id": "edge-10", "evidence": [{"notes": "Most bacteria sense H2O2 via OxyR or PerR transcription factors that control peroxide defense systems.", "reference": "DOI:10.3389/fimmu.2021.667343"}], "predicate": "regulates", "predicate_id": "RO:0002211", "source": "PerR", "target": "peroxide defense systems"}, {"description": "Heme biosynthesis is required for catalase activation; impaired heme synthesis delays peroxide degradation.", "edge_id": "edge-11", "evidence": [{"notes": "Ferrochelatase (hemH) function is required for timely induction of catalase (KatG) activity; loss delays H2O2 degradation and growth.", "reference": "DOI:10.1111/mmi.12967"}], "predicate": "required for", "predicate_id": null, "source": "heme biosynthesis", "target": "catalase"}], "graph_id": "catalase_activity_h2o2_detoxification", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Heme enzyme that dismutates hydrogen peroxide.", "grounding": null, "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to decompose hydrogen peroxide via catalase.", "grounding": "traitmech:000075", "id": "catalase_activity_trait", "is_orphan": false, "label": "catalase activity", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Catalysis of 2 H2O2 = O2 + 2 H2O.", "grounding": "GO:0004096", "id": "catalase_function", "is_orphan": false, "label": "catalase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Synthesis of the heme cofactor required for catalase maturation and activity.", "grounding": "GO:0006783", "id": "heme_biosynthesis", "is_orphan": false, "label": "heme biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species detoxified by catalase.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#fef3c7", "description": "Product of hydrogen peroxide dismutation.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Peroxide-sensing transcriptional regulator activated by hydrogen peroxide.", "grounding": null, "id": "oxyr_regulator", "is_orphan": false, "label": "OxyR", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Antioxidant defense systems (e.g. catalases, peroxidases) that detoxify hydrogen peroxide.", "grounding": null, "id": "peroxide_defense_systems", "is_orphan": false, "label": "peroxide defense systems", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3e8ff", "description": "Fe-dependent peroxide-sensing transcriptional repressor inactivated by hydrogen peroxide.", "grounding": "UniProtKB:A0A097ASJ8", "id": "perr_regulator", "is_orphan": false, "label": "PerR", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "Product of hydrogen peroxide dismutation.", "grounding": "CHEBI:15377", "id": "water", "is_orphan": false, "label": "water", "node_type": "CHEMICAL", "xrefs": []}], "title": "Catalase hydrogen-peroxide detoxification"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -898,7 +904,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 01:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/urease_activity.html b/pages/traits/physiology/urease_activity.html index 335689ff..b1b8dea8 100644 --- a/pages/traits/physiology/urease_activity.html +++ b/pages/traits/physiology/urease_activity.html @@ -501,6 +501,12 @@

    Curation history

    Re-grounded 3 causal edge(s) off microbe-domain METPO predicates (3 to has output), issue 301. The previous predicates are transitively rdfs:subPropertyOf METPO:2000001, whose rdfs:domain is METPO:1000525 (microbe), so a causal-graph subject entailed that the subject IS a microbe; CausalNodeTypeEnum has no organism member, so no such edge could ever satisfy the domain. Edge directions are unchanged - this pass only relabels and re-grounds. RO:0002234 (has output) is used where the subject is an activity, since biolink gives it the domain 'biological process or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them.

    +
  • + · + RETYPE_CAUSAL_NODE · claude +

    Removed node urease's grounding. Issue 352. GO:0009039 is 'urease ACTIVITY'. Same as catalase: kept on urease_function, dropped from the protein that enables it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +
  • +
    @@ -858,7 +864,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "Evidence-backed causal sketch linking urease to hydrolysis of urea into ammonia, the basis of the urease test.", "edges": [{"description": "Urease carries out urea hydrolysis.", "evidence": [{"notes": "Mobley, Island \u0026 Hausinger review microbial ureases.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "urease", "target": "urease_function"}, {"description": "The urease reaction consumes urea.", "evidence": [{"notes": "Supports urea as the hydrolysis substrate.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-2", "is_orphan": false, "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "urease_function", "target": "urea"}, {"description": "Urea hydrolysis produces ammonia.", "evidence": [{"notes": "Mobley \u0026 Hausinger support ammonia release from urea hydrolysis.", "reference": "DOI:10.1128/mr.53.1.85-108.1989"}], "id": "edge-3", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "ammonia"}, {"description": "Urease enzymatic activity manifests as the observable urease-activity phenotype scored by the diagnostic urease test.", "evidence": [{"notes": "Urease activity (urea-to-ammonia hydrolysis raising local pH) is the assayable phenotype used to score urease-positive organisms.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-4", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "urease_function", "target": "urease_activity_trait"}, {"description": "Urea hydrolysis produces hydroxide, mechanistically explaining alkalinization.", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "id": "edge-5", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "hydroxide"}, {"description": "Urea hydrolysis produces carbon dioxide.", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "carbon_dioxide"}, {"description": "Urea hydrolysis (NH4+/OH- production) increases local pH, the basis of the urease test color change.", "evidence": [{"notes": "Urea hydrolysis produces NH4+ and OH-, causing a pH increase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "urease_function", "target": "ph_quality"}, {"description": "CO2 from urea hydrolysis is hydrated by carbonic anhydrase.", "evidence": [{"notes": "Hydration of CO2 to HCO3- by carbonic anhydrase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-8", "is_orphan": false, "predicate": "is substrate of", "predicate_id": null, "source": "carbon_dioxide", "target": "carbonic_anhydrase_function"}, {"description": "Carbonic anhydrase hydrates CO2, increasing bicarbonate.", "evidence": [{"notes": "Increase in [HCO3-] following the hydration of CO2 to HCO3- by CA.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "carbonic_anhydrase_function", "target": "bicarbonate"}, {"description": "CA-driven buffering enhances solubility trapping and affects the CaCO3 phase formed.", "evidence": [{"notes": "CA physiologically promotes buffering, which enhances solubility trapping and affects the phase of the CaCO3 mineral formed.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-10", "is_orphan": false, "predicate": "affects", "predicate_id": null, "source": "carbonic_anhydrase_function", "target": "calcium_carbonate_precipitation"}], "evidence_rows": [{"description": "Urease carries out urea hydrolysis.", "edge_id": "edge-1", "evidence": [{"notes": "Mobley, Island \u0026 Hausinger review microbial ureases.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "urease", "target": "urease activity"}, {"description": "The urease reaction consumes urea.", "edge_id": "edge-2", "evidence": [{"notes": "Supports urea as the hydrolysis substrate.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "urease activity", "target": "urea"}, {"description": "Urea hydrolysis produces ammonia.", "edge_id": "edge-3", "evidence": [{"notes": "Mobley \u0026 Hausinger support ammonia release from urea hydrolysis.", "reference": "DOI:10.1128/mr.53.1.85-108.1989"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "ammonia"}, {"description": "Urease enzymatic activity manifests as the observable urease-activity phenotype scored by the diagnostic urease test.", "edge_id": "edge-4", "evidence": [{"notes": "Urease activity (urea-to-ammonia hydrolysis raising local pH) is the assayable phenotype used to score urease-positive organisms.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "urease activity", "target": "urease activity"}, {"description": "Urea hydrolysis produces hydroxide, mechanistically explaining alkalinization.", "edge_id": "edge-5", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "hydroxide"}, {"description": "Urea hydrolysis produces carbon dioxide.", "edge_id": "edge-6", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "carbon dioxide"}, {"description": "Urea hydrolysis (NH4+/OH- production) increases local pH, the basis of the urease test color change.", "edge_id": "edge-7", "evidence": [{"notes": "Urea hydrolysis produces NH4+ and OH-, causing a pH increase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "urease activity", "target": "pH"}, {"description": "CO2 from urea hydrolysis is hydrated by carbonic anhydrase.", "edge_id": "edge-8", "evidence": [{"notes": "Hydration of CO2 to HCO3- by carbonic anhydrase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "is substrate of", "predicate_id": null, "source": "carbon dioxide", "target": "carbonic anhydrase activity"}, {"description": "Carbonic anhydrase hydrates CO2, increasing bicarbonate.", "edge_id": "edge-9", "evidence": [{"notes": "Increase in [HCO3-] following the hydration of CO2 to HCO3- by CA.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "carbonic anhydrase activity", "target": "bicarbonate"}, {"description": "CA-driven buffering enhances solubility trapping and affects the CaCO3 phase formed.", "edge_id": "edge-10", "evidence": [{"notes": "CA physiologically promotes buffering, which enhances solubility trapping and affects the phase of the CaCO3 mineral formed.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "affects", "predicate_id": null, "source": "carbonic anhydrase activity", "target": "calcium carbonate precipitation"}], "graph_id": "urease_activity_urea_hydrolysis", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Product that raises local pH.", "grounding": "CHEBI:16134", "id": "ammonia", "is_orphan": false, "label": "ammonia", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#fef3c7", "description": "Bicarbonate produced from CO2 hydration by carbonic anhydrase.", "grounding": "CHEBI:17544", "id": "bicarbonate", "is_orphan": false, "label": "bicarbonate", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Precipitation of CaCO3 mineral, influenced by buffering chemistry.", "grounding": null, "id": "calcium_carbonate_precipitation", "is_orphan": false, "label": "calcium carbonate precipitation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "CO2 product of urea hydrolysis; feeds carbonate chemistry.", "grounding": "CHEBI:16526", "id": "carbon_dioxide", "is_orphan": false, "label": "carbon dioxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#cffafe", "description": "Hydration of CO2 to bicarbonate.", "grounding": "GO:0004089", "id": "carbonic_anhydrase_function", "is_orphan": false, "label": "carbonic anhydrase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#fef3c7", "description": "Hydroxide ion produced by urea hydrolysis, raising local pH.", "grounding": "CHEBI:16234", "id": "hydroxide", "is_orphan": false, "label": "hydroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3f4f6", "description": "Local pH, increased by urease-driven alkalinization.", "grounding": null, "id": "ph_quality", "is_orphan": false, "label": "pH", "node_type": "QUALITY", "xrefs": []}, {"color": "#fef3c7", "description": "Substrate hydrolyzed by urease.", "grounding": "CHEBI:16199", "id": "urea", "is_orphan": false, "label": "urea", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Nickel metalloenzyme hydrolyzing urea.", "grounding": "GO:0009039", "id": "urease", "is_orphan": false, "label": "urease", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Possession of urease.", "grounding": "traitmech:000077", "id": "urease_activity_trait", "is_orphan": false, "label": "urease activity", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Hydrolysis of urea to ammonia and carbon dioxide.", "grounding": "GO:0009039", "id": "urease_function", "is_orphan": false, "label": "urease activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}], "title": "Urease-catalyzed urea hydrolysis"}]; + var graphs = [{"description": "Evidence-backed causal sketch linking urease to hydrolysis of urea into ammonia, the basis of the urease test.", "edges": [{"description": "Urease carries out urea hydrolysis.", "evidence": [{"notes": "Mobley, Island \u0026 Hausinger review microbial ureases.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "urease", "target": "urease_function"}, {"description": "The urease reaction consumes urea.", "evidence": [{"notes": "Supports urea as the hydrolysis substrate.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-2", "is_orphan": false, "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "urease_function", "target": "urea"}, {"description": "Urea hydrolysis produces ammonia.", "evidence": [{"notes": "Mobley \u0026 Hausinger support ammonia release from urea hydrolysis.", "reference": "DOI:10.1128/mr.53.1.85-108.1989"}], "id": "edge-3", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "ammonia"}, {"description": "Urease enzymatic activity manifests as the observable urease-activity phenotype scored by the diagnostic urease test.", "evidence": [{"notes": "Urease activity (urea-to-ammonia hydrolysis raising local pH) is the assayable phenotype used to score urease-positive organisms.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "id": "edge-4", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "urease_function", "target": "urease_activity_trait"}, {"description": "Urea hydrolysis produces hydroxide, mechanistically explaining alkalinization.", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "id": "edge-5", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "hydroxide"}, {"description": "Urea hydrolysis produces carbon dioxide.", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease_function", "target": "carbon_dioxide"}, {"description": "Urea hydrolysis (NH4+/OH- production) increases local pH, the basis of the urease test color change.", "evidence": [{"notes": "Urea hydrolysis produces NH4+ and OH-, causing a pH increase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "urease_function", "target": "ph_quality"}, {"description": "CO2 from urea hydrolysis is hydrated by carbonic anhydrase.", "evidence": [{"notes": "Hydration of CO2 to HCO3- by carbonic anhydrase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-8", "is_orphan": false, "predicate": "is substrate of", "predicate_id": null, "source": "carbon_dioxide", "target": "carbonic_anhydrase_function"}, {"description": "Carbonic anhydrase hydrates CO2, increasing bicarbonate.", "evidence": [{"notes": "Increase in [HCO3-] following the hydration of CO2 to HCO3- by CA.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "carbonic_anhydrase_function", "target": "bicarbonate"}, {"description": "CA-driven buffering enhances solubility trapping and affects the CaCO3 phase formed.", "evidence": [{"notes": "CA physiologically promotes buffering, which enhances solubility trapping and affects the phase of the CaCO3 mineral formed.", "reference": "DOI:10.1021/acs.est.3c06617"}], "id": "edge-10", "is_orphan": false, "predicate": "affects", "predicate_id": null, "source": "carbonic_anhydrase_function", "target": "calcium_carbonate_precipitation"}], "evidence_rows": [{"description": "Urease carries out urea hydrolysis.", "edge_id": "edge-1", "evidence": [{"notes": "Mobley, Island \u0026 Hausinger review microbial ureases.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "urease", "target": "urease activity"}, {"description": "The urease reaction consumes urea.", "edge_id": "edge-2", "evidence": [{"notes": "Supports urea as the hydrolysis substrate.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "consumes", "predicate_id": "biolink:consumes", "source": "urease activity", "target": "urea"}, {"description": "Urea hydrolysis produces ammonia.", "edge_id": "edge-3", "evidence": [{"notes": "Mobley \u0026 Hausinger support ammonia release from urea hydrolysis.", "reference": "DOI:10.1128/mr.53.1.85-108.1989"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "ammonia"}, {"description": "Urease enzymatic activity manifests as the observable urease-activity phenotype scored by the diagnostic urease test.", "edge_id": "edge-4", "evidence": [{"notes": "Urease activity (urea-to-ammonia hydrolysis raising local pH) is the assayable phenotype used to score urease-positive organisms.", "reference": "DOI:10.1128/mr.59.3.451-480.1995"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "urease activity", "target": "urease activity"}, {"description": "Urea hydrolysis produces hydroxide, mechanistically explaining alkalinization.", "edge_id": "edge-5", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "hydroxide"}, {"description": "Urea hydrolysis produces carbon dioxide.", "edge_id": "edge-6", "evidence": [{"notes": "(NH2)2CO + 2H2O + urease -\u003e 2 NH4+ + 2 OH- + CO2 + urease.", "reference": "DOI:10.24263/2304-974x-2024-13-2-10"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "urease activity", "target": "carbon dioxide"}, {"description": "Urea hydrolysis (NH4+/OH- production) increases local pH, the basis of the urease test color change.", "edge_id": "edge-7", "evidence": [{"notes": "Urea hydrolysis produces NH4+ and OH-, causing a pH increase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "urease activity", "target": "pH"}, {"description": "CO2 from urea hydrolysis is hydrated by carbonic anhydrase.", "edge_id": "edge-8", "evidence": [{"notes": "Hydration of CO2 to HCO3- by carbonic anhydrase.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "is substrate of", "predicate_id": null, "source": "carbon dioxide", "target": "carbonic anhydrase activity"}, {"description": "Carbonic anhydrase hydrates CO2, increasing bicarbonate.", "edge_id": "edge-9", "evidence": [{"notes": "Increase in [HCO3-] following the hydration of CO2 to HCO3- by CA.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "carbonic anhydrase activity", "target": "bicarbonate"}, {"description": "CA-driven buffering enhances solubility trapping and affects the CaCO3 phase formed.", "edge_id": "edge-10", "evidence": [{"notes": "CA physiologically promotes buffering, which enhances solubility trapping and affects the phase of the CaCO3 mineral formed.", "reference": "DOI:10.1021/acs.est.3c06617"}], "predicate": "affects", "predicate_id": null, "source": "carbonic anhydrase activity", "target": "calcium carbonate precipitation"}], "graph_id": "urease_activity_urea_hydrolysis", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Product that raises local pH.", "grounding": "CHEBI:16134", "id": "ammonia", "is_orphan": false, "label": "ammonia", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#fef3c7", "description": "Bicarbonate produced from CO2 hydration by carbonic anhydrase.", "grounding": "CHEBI:17544", "id": "bicarbonate", "is_orphan": false, "label": "bicarbonate", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Precipitation of CaCO3 mineral, influenced by buffering chemistry.", "grounding": null, "id": "calcium_carbonate_precipitation", "is_orphan": false, "label": "calcium carbonate precipitation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "CO2 product of urea hydrolysis; feeds carbonate chemistry.", "grounding": "CHEBI:16526", "id": "carbon_dioxide", "is_orphan": false, "label": "carbon dioxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#cffafe", "description": "Hydration of CO2 to bicarbonate.", "grounding": "GO:0004089", "id": "carbonic_anhydrase_function", "is_orphan": false, "label": "carbonic anhydrase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#fef3c7", "description": "Hydroxide ion produced by urea hydrolysis, raising local pH.", "grounding": "CHEBI:16234", "id": "hydroxide", "is_orphan": false, "label": "hydroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3f4f6", "description": "Local pH, increased by urease-driven alkalinization.", "grounding": null, "id": "ph_quality", "is_orphan": false, "label": "pH", "node_type": "QUALITY", "xrefs": []}, {"color": "#fef3c7", "description": "Substrate hydrolyzed by urease.", "grounding": "CHEBI:16199", "id": "urea", "is_orphan": false, "label": "urea", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Nickel metalloenzyme hydrolyzing urea.", "grounding": null, "id": "urease", "is_orphan": false, "label": "urease", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Possession of urease.", "grounding": "traitmech:000077", "id": "urease_activity_trait", "is_orphan": false, "label": "urease activity", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Hydrolysis of urea to ammonia and carbon dioxide.", "grounding": "GO:0009039", "id": "urease_function", "is_orphan": false, "label": "urease activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}], "title": "Urease-catalyzed urea hydrolysis"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -881,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-06 01:00 UTC from + Record as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/umap.html b/pages/umap.html index 85898e02..ca7aa08d 100644 --- a/pages/umap.html +++ b/pages/umap.html @@ -238,7 +238,7 @@

    Trait embedding space

    METPO
    - Corpus as of 2026-08-07 18:00 UTC from + Corpus as of 2026-08-08 02:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/reports/causal_graph_audit.tsv b/reports/causal_graph_audit.tsv index 1a5db78e..198b8dc7 100644 --- a/reports/causal_graph_audit.tsv +++ b/reports/causal_graph_audit.tsv @@ -224,7 +224,6 @@ data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline UNREACHABLE_FROM_TRAIT WARN node_id='hypersaline_environment' label='hypersaline environment' type=ENVIRONMENTAL_FACTOR — in an island with no path to nacl_delta_high_trait/nacl_delta data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline UNREACHABLE_FROM_TRAIT WARN node_id='halophilic_osmoadaptation' label='halophilic osmoadaptation strategies' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_high_trait/nacl_delta data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline FRAGMENTED_GRAPH WARN components=6 of 14 node(s) (sizes: 3, 3, 2, 2, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline DISPOSITION_MISTYPED WARN node_id='salt_tolerance_breadth' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='osmotic_upshift' label='osmotic upshift' type=ENVIRONMENTAL_FACTOR — in an island with no path to nacl_delta_mid1_trait/nacl_delta data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='k_import' label='potassium import' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_mid1_trait/nacl_delta data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth UNREACHABLE_FROM_TRAIT WARN node_id='compatible_solute_accumulation' label='compatible solute accumulation' type=BIOLOGICAL_PROCESS — in an island with no path to nacl_delta_mid1_trait/nacl_delta @@ -326,38 +325,27 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylation' label='amino-acid decarboxylation' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='proton_motive_force' label='proton motive force' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 5, 5, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='reactive_oxygen_species_stress' label='oxygen / reactive oxygen species stress' type=ENVIRONMENTAL_FACTOR — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='detoxifying_enzyme_expression' label='detoxifying-enzyme gene expression' type=BIOLOGICAL_PROCESS — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='superoxide_dismutase' label='superoxide dismutase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='oxygen_tolerance' label='oxygen tolerance' type=CAPACITY — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis DISPOSITION_MISTYPED WARN node_id='oxygen_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=3 of 14 node(s) (sizes: 8, 4, 2) — one record, several unrelated mechanisms -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylase_acid_resistance' label='amino-acid decarboxylase acid-resistance system' type=PATHWAY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='low_ph_tolerance' label='low-pH tolerance' type=CAPACITY — in an island with no path to ph_delta_trait -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility DISPOSITION_MISTYPED WARN node_id='low_ph_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='respiratory_proton_pumps' label='respiratory proton-pumping enzymes' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_buffering_capacity' label='cytoplasmic buffering capacity' type=CAPACITY — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_porin_changes' label='membrane lipid/porin composition changes' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='inward_proton_leakage' label='inward proton leakage' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 -data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth DUPLICATE_GROUNDING WARN nodes=2;grounding=METPO:1000478 (growth_external_ph_5_5_9, ph_delta_high_trait) data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 7, 3, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='external_ph_stress' label='external pH stress' type=ENVIRONMENTAL_FACTOR — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='pmf_architecture' label='proton motive force architecture' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='ph_homeostasis_capacity' label='pH homeostasis capacity' type=CAPACITY — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='weak_organic_acids' label='weak organic acids' type=CHEMICAL — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='delta_ph' label='delta pH / cytoplasmic pH' type=STATE — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='electrogenic_na_h_antiport' label='electrogenic Na+/H+ antiport' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='alkaline_ph_homeostasis' label='alkaline pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_low_trait/ph_delta data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth UNREACHABLE_FROM_TRAIT WARN node_id='f1fo_atpase' label='F1Fo-ATPase' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_low_trait/ph_delta -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth DISPOSITION_MISTYPED WARN node_id='ph_homeostasis_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT -data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth FRAGMENTED_GRAPH WARN components=5 of 12 node(s) (sizes: 3, 3, 2, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/ph_delta_low.yaml ph_delta_low_limited_breadth FRAGMENTED_GRAPH WARN components=4 of 11 node(s) (sizes: 4, 3, 2, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='gln_glu_decarboxylation_pathway' label='glutamine/glutamate decarboxylation pathway' type=PATHWAY — in an island with no path to ph_delta_mid1_trait/ph_delta data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='intracellular_proton' label='intracellular proton (H+)' type=CHEMICAL — in an island with no path to ph_delta_mid1_trait/ph_delta data/traits/environment/ph_delta_mid1.yaml ph_delta_mid1_moderate_breadth UNREACHABLE_FROM_TRAIT WARN node_id='ybas_glutaminase' label='YbaS glutaminase' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_mid1_trait/ph_delta @@ -503,16 +491,14 @@ data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_ad data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='protein_membrane_stability' label='protein and membrane stability under cold stress' type=QUALITY — in an island with no path to psychrotolerant_trait data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='extracellular_polymeric_substances' label='extracellular polymeric substances (EPS)' type=CHEMICAL — in an island with no path to psychrotolerant_trait data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation UNREACHABLE_FROM_TRAIT WARN node_id='freeze_thaw_cryoprotection' label='cryoprotection against freeze-thaw cycles' type=BIOLOGICAL_PROCESS — in an island with no path to psychrotolerant_trait -data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation DISPOSITION_MISTYPED WARN node_id='growth_at_4c' type=CAPACITY — description reads as a disposition, which is a TRAIT -data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/psychrotolerant.yaml psychrotolerant_facultative_cold_adaptation FRAGMENTED_GRAPH WARN components=3 of 11 node(s) (sizes: 7, 2, 2) — one record, several unrelated mechanisms data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='intracellular_osmotic_balance' label='intracellular osmotic balance across salinity' type=BIOLOGICAL_PROCESS — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_out_compatible_solute_strategy' label='compatible-solute (salt-out) strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_in_strategy' label='salt-in strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='glycine_betaine' label='glycine betaine' type=CHEMICAL — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 9, 4) — one record, several unrelated mechanisms -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation DISPOSITION_MISTYPED WARN node_id='salt_tolerance' type=CAPACITY — description reads as a disposition, which is a TRAIT +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='c_di_amp' label='cyclic di-AMP' type=CHEMICAL — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='k_import_systems' label='K+ import systems' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait @@ -1212,7 +1198,6 @@ data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNR data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNREACHABLE_FROM_TRAIT WARN node_id='ftsz_z_ladders' label='FtsZ Z-ladder arrays' type=GENE_OR_PROTEIN — in an island with no path to mycelial_growth_trait data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth UNREACHABLE_FROM_TRAIT WARN node_id='sporulation_septation' label='sporulation septation and spore-chain formation' type=BIOLOGICAL_PROCESS — in an island with no path to mycelial_growth_trait data/traits/morphology/mycelial_growth.yaml mycelial_branching_hyphal_growth FRAGMENTED_GRAPH WARN components=4 of 13 node(s) (sizes: 5, 4, 2, 2) — one record, several unrelated mechanisms -data/traits/morphology/non_spore_forming.yaml non_spore_forming_absent_spo0a_cascade DISPOSITION_MISTYPED WARN node_id='loss_sporulation_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='crt_y_lycopene_cyclase' label='lycopene beta-cyclase (CrtY)' type=GENE_OR_PROTEIN — in an island with no path to orange_pigmented_trait data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='lycopene' label='lycopene' type=CHEMICAL — in an island with no path to orange_pigmented_trait data/traits/morphology/orange_pigmented.yaml orange_pigmented_carotenoid_accumulation UNREACHABLE_FROM_TRAIT WARN node_id='beta_carotene' label='beta-carotene' type=CHEMICAL — in an island with no path to orange_pigmented_trait @@ -1285,7 +1270,6 @@ data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_pac data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet UNREACHABLE_FROM_TRAIT WARN node_id='peripheral_pg_bridge' label='peripheral peptidoglycan bridge' type=CELLULAR_LOCALIZATION — in an island with no path to sarcina_trait data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet UNREACHABLE_FROM_TRAIT WARN node_id='daughter_cell_separation' label='daughter-cell separation' type=BIOLOGICAL_PROCESS — in an island with no path to sarcina_trait data/traits/morphology/sarcina_arrangement.yaml sarcina_three_plane_division_packet FRAGMENTED_GRAPH WARN components=5 of 14 node(s) (sizes: 4, 3, 3, 2, 2) — one record, several unrelated mechanisms -data/traits/morphology/sphere_shaped.yaml sphere_shaped_septal_peptidoglycan DISPOSITION_MISTYPED WARN node_id='elongation_capacity' type=CAPACITY — description reads as a disposition, which is a TRAIT data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIID' label='SpoIID' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIIM' label='SpoIIM' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait data/traits/morphology/spore_forming.yaml spore_forming_endospore_assembly UNREACHABLE_FROM_TRAIT WARN node_id='spoIIP' label='SpoIIP' type=GENE_OR_PROTEIN — in an island with no path to spore_forming_trait @@ -1366,7 +1350,6 @@ data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREA data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREACHABLE_FROM_TRAIT WARN node_id='coo_operon' label='coo operon' type=GENE_OR_PROTEIN — in an island with no path to carboxydotrophic_trait data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation UNREACHABLE_FROM_TRAIT WARN node_id='cooa_regulator' label='CooA' type=GENE_OR_PROTEIN — in an island with no path to carboxydotrophic_trait data/traits/physiology/carboxydotrophic.yaml carboxydotrophic_co_oxidation FRAGMENTED_GRAPH WARN components=2 of 18 node(s) (sizes: 14, 4) — one record, several unrelated mechanisms -data/traits/physiology/catalase_activity.yaml catalase_activity_h2o2_detoxification DUPLICATE_GROUNDING WARN nodes=2;grounding=GO:0004096 (catalase, catalase_function) data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon UNREACHABLE_FROM_TRAIT WARN node_id='mannitol_pts' label='PEP-dependent phosphotransferase system (mannitol PTS)' type=GENE_OR_PROTEIN — in an island with no path to chemoheterotrophic_trait data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon UNREACHABLE_FROM_TRAIT WARN node_id='mannitol' label='mannitol' type=CHEMICAL — in an island with no path to chemoheterotrophic_trait data/traits/physiology/chemoheterotrophic.yaml chemoheterotrophic_organic_energy_carbon FRAGMENTED_GRAPH WARN components=2 of 14 node(s) (sizes: 12, 2) — one record, several unrelated mechanisms @@ -1519,7 +1502,6 @@ data/traits/physiology/photoorganoheterotrophic.yaml photoorganoheterotrophic_li data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture UNREACHABLE_FROM_TRAIT WARN node_id='rhodopsin' label='rhodopsin' type=GENE_OR_PROTEIN — in an island with no path to phototrophic_trait data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture UNREACHABLE_FROM_TRAIT WARN node_id='ion_transport' label='ion transport across membrane' type=BIOLOGICAL_PROCESS — in an island with no path to phototrophic_trait data/traits/physiology/phototrophic.yaml phototrophic_light_energy_capture FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms -data/traits/physiology/urease_activity.yaml urease_activity_urea_hydrolysis DUPLICATE_GROUNDING WARN nodes=2;grounding=GO:0009039 (urease, urease_function) data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='rpos' label='RpoS sigma factor' type=GENE_OR_PROTEIN — in an island with no path to vbnc_trait data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='resuscitation' label='resuscitation from VBNC' type=BIOLOGICAL_PROCESS — in an island with no path to vbnc_trait data/traits/physiology/viable_but_nonculturable_state.yaml vbnc_stress_induced_dormancy UNREACHABLE_FROM_TRAIT WARN node_id='atp' label='ATP' type=CHEMICAL — in an island with no path to vbnc_trait diff --git a/reports/node_grounding_residual.tsv b/reports/node_grounding_residual.tsv index 1791bd45..ff08a0f0 100644 --- a/reports/node_grounding_residual.tsv +++ b/reports/node_grounding_residual.tsv @@ -625,7 +625,6 @@ compatible-solute transporters (opu/prou) GENE_OR_PROTEIN 1 data/traits/environm trkh potassium uptake system GENE_OR_PROTEIN 1 data/traits/environment/nacl_delta_low.yaml nhac-family na+/h+ antiporter GENE_OR_PROTEIN 1 data/traits/environment/nacl_delta_low.yaml intracellular proline accumulation CHEMICAL 1 data/traits/environment/nacl_delta_low.yaml -salt-tolerance breadth CAPACITY 1 data/traits/environment/nacl_delta_low.yaml modest osmoadaptive flexibility BIOLOGICAL_PROCESS 1 data/traits/environment/nacl_delta_mid1.yaml osmoadaptation / growth under nacl stress BIOLOGICAL_PROCESS 1 data/traits/environment/nacl_delta_mid1.yaml ectoine biosynthesis (ectb/ecta/ectc) PATHWAY 1 data/traits/environment/nacl_delta_mid1.yaml @@ -745,7 +744,6 @@ ambient molecular oxygen ENVIRONMENTAL_FACTOR 1 data/traits/environment/oxygen_p o2 as terminal electron acceptor MOLECULAR_FUNCTION 1 data/traits/environment/oxygen_preference.yaml oxygen / reactive oxygen species stress ENVIRONMENTAL_FACTOR 1 data/traits/environment/oxygen_preference.yaml detoxifying-enzyme gene expression BIOLOGICAL_PROCESS 1 data/traits/environment/oxygen_preference.yaml -oxygen tolerance CAPACITY 1 data/traits/environment/oxygen_preference.yaml ph-homeostasis flexibility BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta.yaml ph tolerance breadth BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta.yaml external ph homeostasis BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta.yaml @@ -753,7 +751,6 @@ f0f1-atpase activity MOLECULAR_FUNCTION 1 data/traits/environment/ph_delta.yaml monovalent cation:h+ antiporter activity MOLECULAR_FUNCTION 1 data/traits/environment/ph_delta.yaml saturated membrane fatty acid remodeling BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta.yaml amino-acid decarboxylase acid-resistance system PATHWAY 1 data/traits/environment/ph_delta.yaml -low-ph tolerance CAPACITY 1 data/traits/environment/ph_delta.yaml maximal ph-homeostasis flexibility BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta_high.yaml respiratory proton-pumping enzymes GENE_OR_PROTEIN 1 data/traits/environment/ph_delta_high.yaml near-neutral cytoplasmic ph QUALITY 1 data/traits/environment/ph_delta_high.yaml @@ -761,7 +758,6 @@ constant proton motive force BIOLOGICAL_PROCESS 1 data/traits/environment/ph_del membrane lipid/porin composition changes BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta_high.yaml limited ph-homeostasis flexibility BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta_low.yaml proton motive force architecture BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta_low.yaml -ph homeostasis capacity CAPACITY 1 data/traits/environment/ph_delta_low.yaml weak organic acids CHEMICAL 1 data/traits/environment/ph_delta_low.yaml delta ph / cytoplasmic ph STATE 1 data/traits/environment/ph_delta_low.yaml moderate ph-homeostasis flexibility BIOLOGICAL_PROCESS 1 data/traits/environment/ph_delta_mid1.yaml @@ -919,7 +915,6 @@ membrane rigidification and thickening QUALITY 1 data/traits/environment/psychro unsaturated hopanoids CHEMICAL 1 data/traits/environment/psychrotolerant.yaml protein and membrane stability under cold stress QUALITY 1 data/traits/environment/psychrotolerant.yaml cryoprotection against freeze-thaw cycles BIOLOGICAL_PROCESS 1 data/traits/environment/psychrotolerant.yaml -growth at 4 degrees c CAPACITY 1 data/traits/environment/psychrotolerant.yaml ionizing or uv radiation exposure ENVIRONMENTAL_FACTOR 1 data/traits/environment/radiotolerant.yaml manganese-antioxidant proteome protection BIOLOGICAL_PROCESS 1 data/traits/environment/radiotolerant.yaml reactive oxygen species (ros) CHEMICAL 1 data/traits/environment/radiotolerant.yaml @@ -937,7 +932,6 @@ chaotropic ions (mg/ca/li/fe salts) CHEMICAL 1 data/traits/environment/salinity_ water activity ENVIRONMENTAL_FACTOR 1 data/traits/environment/salinity_phenotype_with_numerical_limits.yaml low to moderate nacl ENVIRONMENTAL_FACTOR 1 data/traits/environment/slightly_halophilic.yaml osmoprotectant transport MOLECULAR_FUNCTION 1 data/traits/environment/slightly_halophilic.yaml -salt tolerance CAPACITY 1 data/traits/environment/slightly_halophilic.yaml ectabc/ectbacd gene cluster GENE_OR_PROTEIN 1 data/traits/environment/slightly_halophilic.yaml ion homeostasis during salt stress BIOLOGICAL_PROCESS 1 data/traits/environment/slightly_halophilic.yaml na+/k+ transcriptional induction BIOLOGICAL_PROCESS 1 data/traits/environment/slightly_halophilic.yaml @@ -1850,7 +1844,6 @@ no endospore formation BIOLOGICAL_PROCESS 1 data/traits/morphology/non_spore_for absence of spo0a gene GENE_OR_PROTEIN 1 data/traits/morphology/non_spore_forming.yaml loss of sporulation genes BIOLOGICAL_PROCESS 1 data/traits/morphology/non_spore_forming.yaml low or absent spo0a activity MOLECULAR_FUNCTION 1 data/traits/morphology/non_spore_forming.yaml -loss of sporulation capacity CAPACITY 1 data/traits/morphology/non_spore_forming.yaml rap phosphatases GENE_OR_PROTEIN 1 data/traits/morphology/non_spore_forming.yaml dephosphorylation of spo0f BIOLOGICAL_PROCESS 1 data/traits/morphology/non_spore_forming.yaml spo0a phosphorelay disruption BIOLOGICAL_PROCESS 1 data/traits/morphology/non_spore_forming.yaml @@ -1956,7 +1949,6 @@ peptidoglycan synthetases and hydrolases GENE_OR_PROTEIN 1 data/traits/morpholog cell wall synthesis at division site BIOLOGICAL_PROCESS 1 data/traits/morphology/sarcina_arrangement.yaml peripheral peptidoglycan bridge CELLULAR_LOCALIZATION 1 data/traits/morphology/sarcina_arrangement.yaml mreb-mediated elongation machinery GENE_OR_PROTEIN 1 data/traits/morphology/sphere_shaped.yaml -elongation capacity CAPACITY 1 data/traits/morphology/sphere_shaped.yaml divisome and pbps GENE_OR_PROTEIN 1 data/traits/morphology/sphere_shaped.yaml ftsw lipid ii flippase GENE_OR_PROTEIN 1 data/traits/morphology/sphere_shaped.yaml symmetric polar peptidoglycan growth BIOLOGICAL_PROCESS 1 data/traits/morphology/spindle_shaped.yaml diff --git a/reports/predicate_grounding_residual.tsv b/reports/predicate_grounding_residual.tsv index bc3e94dc..e2889bec 100644 --- a/reports/predicate_grounding_residual.tsv +++ b/reports/predicate_grounding_residual.tsv @@ -91,7 +91,6 @@ has quality 3 unmapped data/traits/metabolism/wood_ljungdahl_pathway.yaml|data/ feed into 3 unmapped data/traits/morphology/black_pigmented.yaml|data/traits/morphology/carotenoid_pigmentation.yaml|data/traits/morphology/pink_pigmented.yaml polymerizes into 3 unmapped data/traits/morphology/black_pigmented.yaml|data/traits/morphology/magnetosome.yaml disrupts 3 unmapped data/traits/morphology/cell_shape.yaml|data/traits/morphology/irregular_shaped.yaml -reduced in 3 unmapped data/traits/morphology/coccus_shaped.yaml|data/traits/morphology/sphere_shaped.yaml carries out 3 unmapped data/traits/morphology/ellipsoidal.yaml|data/traits/upper/biological_process.yaml scaffolds 3 unmapped data/traits/morphology/fusiform_shaped.yaml|data/traits/morphology/tetrad_arrangement.yaml|data/traits/physiology/chemotaxis.yaml encapsulates 3 unmapped data/traits/morphology/intracellular_inclusion.yaml|data/traits/physiology/chemoautotrophic.yaml @@ -164,6 +163,7 @@ gives rise to 2 unmapped data/traits/morphology/bacillus_shaped.yaml|data/trait localizes 2 unmapped data/traits/morphology/branched_shaped.yaml|data/traits/morphology/star_shaped.yaml polymerizes to 2 unmapped data/traits/morphology/brown_pigmented.yaml attaches 2 unmapped data/traits/morphology/cell_length.yaml|data/traits/morphology/sarcina_arrangement.yaml +reduced in 2 unmapped data/traits/morphology/coccus_shaped.yaml|data/traits/morphology/sphere_shaped.yaml incomplete separation yields 2 unmapped data/traits/morphology/diplococcus_shaped.yaml combines with 2 unmapped data/traits/morphology/flask_shaped.yaml|data/traits/morphology/oval_shaped.yaml dephosphorylates 2 unmapped data/traits/morphology/non_spore_forming.yaml|data/traits/physiology/chemotaxis.yaml @@ -293,7 +293,6 @@ cause 1 unmapped data/traits/environment/ph_range_very_low.yaml causes increase in 1 unmapped data/traits/environment/piezotolerant.yaml induces transcription of 1 unmapped data/traits/environment/piezotolerant.yaml expands 1 unmapped data/traits/environment/pressure_range.yaml -has capability 1 unmapped data/traits/environment/psychrotolerant.yaml acts as antioxidant against 1 unmapped data/traits/environment/radiotolerant.yaml exceeds tolerance of 1 unmapped data/traits/environment/stenohaline.yaml resists 1 unmapped data/traits/environment/temperature_delta_high.yaml diff --git a/scripts/migrate_disposition_typing.py b/scripts/migrate_disposition_typing.py new file mode 100644 index 00000000..1b5f9ee9 --- /dev/null +++ b/scripts/migrate_disposition_typing.py @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +"""Burn down the 11 baselined DISPOSITION_MISTYPED / DUPLICATE_GROUNDING findings (#352). + +#353 shipped the detection and baselined what it found. This is the burn-down. + +THE HEADLINE IS THAT ONLY HALF OF THEM WERE RETYPES. #352 framed the fix as +"sweep CAPACITY nodes matching the disposition pattern and retype them", and for +four nodes that is exactly right. For the other four, retyping would have been +wrong in a way that only shows up once you look for the grounding: + + every TRAIT node in the corpus is grounded, and the obvious grounding for + each of those four is the term its OWN record already carries. + +Grounding them that way trades a DISPOSITION_MISTYPED for a DUPLICATE_GROUNDING +and calls it progress. What it actually means is that the node RESTATES its +anchor, and in three of the four cases the node it restates is sitting in the +same graph already correctly typed and grounded. Those get merged, not retyped. + +That is #352's own third bullet read strictly: "retype in one pass, GROUNDING +EACH -- an ungrounded new TRAIT node silently becomes a reachability anchor and +makes UNREACHABLE_FROM_TRAIT fall without the graph actually becoming more +connected." Requiring a grounding is what exposes the restatements. + +CAPACITY IS NOT VESTIGIAL, which the issue left open. 24 nodes carry it; these 8 +leave 16, and the survivors are a different sense entirely -- `reducing_power` +(a pool of reductants), `cytoplasmic_buffering_capacity` (a reservoir), +`swimming_velocity` (a rate), `metabolic_versatility` (a breadth). Reservoir and +quantity capacities are not organism dispositions and must stay. That two-senses +split is the same shape `reduces` recorded in mappings/predicate_grounding.tsv, +and it is why #353's heuristic is organism-scoped rather than matching bare +"capacity to". + +Usage: + python scripts/migrate_disposition_typing.py [--dry-run] +""" +from __future__ import annotations + +import argparse +import sys +from pathlib import Path + +import yaml + +REPO_ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO_ROOT / "src")) + +from traitmech.validation.write_validated import emit_trait_yaml # noqa: E402 + +TRAITS = REPO_ROOT / "data" / "traits" + +# --- the four that really are mistyped dispositions -------------------------- +# Retyped to TRAIT and grounded to a term that is NOT the record's own, which is +# what distinguishes these from the restatements below. +RETYPE: dict[tuple[str, str], dict] = { + ("environment/slightly_halophilic.yaml", "salt_tolerance"): { + "grounding": "METPO:1000622", # halotolerant + "why": "'Capacity to grow and survive under elevated salinity' is halotolerance. " + "The record is METPO:1000625 (slightly halophilic), so this is a distinct " + "term rather than a restatement of the anchor.", + }, + ("environment/nacl_delta_low.yaml", "salt_tolerance_breadth"): { + "grounding": "METPO:1000622", # halotolerant + "why": "'Capacity to grow across a range of ambient NaCl concentrations.' Already " + "behaves as a trait -- it carries `is a -> nacl_delta` (METPO:1000335) -- " + "and the record is METPO:1000479, so 1000622 collides with neither.", + }, + ("environment/oxygen_preference.yaml", "oxygen_tolerance"): { + "grounding": "METPO:1000609", # aerotolerant + "why": "'Capacity of a cell to survive exposure to molecular oxygen' is " + "aerotolerance. Distinct from all five phenotype nodes in the graph " + "(METPO:1000601/2/3/4/612). NOTE this is the organism-scoped sense; " + "carboxydotrophic.yaml's same-named node reads 'Ability of an ENZYME to " + "function in the presence of O2' and is correctly NOT a trait (#353).", + }, + ("environment/ph_delta.yaml", "low_ph_tolerance"): { + "grounding": "METPO:1003008", # acidotolerant + "why": "'Capacity to grow and survive under acidic external pH' is acidotolerance. " + "The record is METPO:1000232 (pH delta), so no collision.", + }, +} + +# --- the four restatements --------------------------------------------------- +# `into` repoints the node's edges onto an existing node and drops it; `drop` +# removes a leaf outright. +MERGE: dict[tuple[str, str], dict] = { + ("environment/ph_delta_low.yaml", "ph_homeostasis_capacity"): { + "into": "cytoplasmic_ph_homeostasis", + "why": "'Capacity to balance and maintain cytoplasmic pH under pH stress' is " + "cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH already typed " + "BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity node " + "to GO:0051453 would have produced a DUPLICATE_GROUNDING against it.", + }, + ("morphology/sphere_shaped.yaml", "elongation_capacity"): { + "into": "lateral_elongation", + "why": "'Capacity of a cell to elongate into a rod via sidewall growth' against " + "lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the " + "same claim twice, and both already carried `reduced in -> " + "sphere_shaped_trait`.", + }, + ("morphology/non_spore_forming.yaml", "loss_sporulation_capacity"): { + "into": "non_spore_forming_trait", + "why": "'Loss of the capacity to undergo sporulation' IS the record's own trait " + "(METPO:1000872, non-spore forming), so the only correct grounding " + "duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> " + "non_spore_forming_trait, which is the shape loss_sporulation_genes " + "already uses in this graph.", + }, + ("environment/psychrotolerant.yaml", "growth_at_4c"): { + "drop": True, + "why": "'Ability to grow at refrigeration-range low temperature (4 C)' IS " + "METPO:1000618 (psychrotolerant), the record's own term and the grounding " + "of psychrotolerant_trait, which is the node it hangs off. A leaf " + "restating its own parent. The parent keeps two other in-edges " + "(cold_shock_response confers, facultative_lipid_remodeling manifests as), " + "so nothing is stranded.", + }, +} + +# --- duplicate groundings ---------------------------------------------------- +REGROUND: dict[tuple[str, str], dict] = { + ("environment/ph_delta_high.yaml", "growth_external_ph_5_5_9"): { + "grounding": "METPO:1000332", # pH range + "why": "Shared METPO:1000478 with ph_delta_high_trait, but the two say different " + "things: this node is an ABSOLUTE external range ('~5.5-9.0'), while " + "ph_delta_high_trait is a BREADTH ('approximately 5-9 pH units'), which is " + "what a pH DELTA is. 1000478 belongs to the delta; this is a pH range " + "(METPO:1000332).", + }, + ("physiology/catalase_activity.yaml", "catalase"): { + "grounding": None, + "why": "GO:0004096 is 'catalase ACTIVITY' -- a molecular function, which is what " + "catalase_function is. A protein is not its activity, and the graph already " + "says so correctly: catalase -enables-> catalase_function. Dropped from the " + "protein, kept on the function.", + }, + ("physiology/urease_activity.yaml", "urease"): { + "grounding": None, + "why": "GO:0009039 is 'urease ACTIVITY'. Same as catalase: kept on urease_function, " + "dropped from the protein that enables it.", + }, +} + + +def apply(dry_run: bool = False) -> int: + files: dict[str, list] = {} + for kind, table in (("retype", RETYPE), ("merge", MERGE), ("reground", REGROUND)): + for (rel, node_id), spec in table.items(): + files.setdefault(rel, []).append((kind, node_id, spec)) + + for rel, actions in sorted(files.items()): + path = TRAITS / rel + doc = yaml.safe_load(path.read_text()) + for kind, node_id, spec in actions: + graph = next((g for g in doc.get("causal_graphs") or [] + if any(n.get("node_id") == node_id for n in g.get("nodes") or [])), + None) + if graph is None: + print(f" MISSING NODE {rel} {node_id}", file=sys.stderr) + return 1 + nodes = graph["nodes"] + node = next(n for n in nodes if n["node_id"] == node_id) + + if kind == "retype": + node["node_type"] = "TRAIT" + node["grounding"] = spec["grounding"] + print(f" retype {rel} {node_id} -> TRAIT {spec['grounding']}") + + elif kind == "reground": + if spec["grounding"] is None: + node.pop("grounding", None) + print(f" unground {rel} {node_id}") + else: + node["grounding"] = spec["grounding"] + print(f" reground {rel} {node_id} -> {spec['grounding']}") + + else: # merge + target = spec.get("into") + if target and not any(n["node_id"] == target for n in nodes): + print(f" MISSING TARGET {rel} {target}", file=sys.stderr) + return 1 + kept = [] + for e in graph.get("edges") or []: + if node_id not in (e["subject"], e["object"]): + kept.append(e) + continue + if not target: + continue # drop the leaf's edge outright + e["subject"] = target if e["subject"] == node_id else e["subject"] + e["object"] = target if e["object"] == node_id else e["object"] + if e["subject"] == e["object"]: + continue # collapsed onto itself + # An edge identical to one already present is a restatement too. + if any(k["subject"] == e["subject"] and k["object"] == e["object"] + and k.get("predicate") == e.get("predicate") for k in kept): + continue + kept.append(e) + graph["edges"] = kept + graph["nodes"] = [n for n in nodes if n["node_id"] != node_id] + print(f" merge {rel} {node_id} -> {target or '(dropped)'}") + + if not dry_run: + path.write_text(emit_trait_yaml(doc)) + print(f"\n{sum(len(v) for v in files.values())} finding(s) resolved across " + f"{len(files)} file(s){' (dry run)' if dry_run else ''}", file=sys.stderr) + return 0 + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--dry-run", action="store_true") + return apply(ap.parse_args().dry_run) + + +if __name__ == "__main__": + sys.exit(main()) From 9150b1d4acb7be92be11ceb63e476c65766b650a Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Fri, 7 Aug 2026 18:45:50 -0700 Subject: [PATCH 2/5] Regenerate biolink_coverage.tsv for the merged edges (#352) Two consequences of the merges that I regenerated the report too early to capture: `reduced in` drops 3 -> 2 residual because elongation_capacity's duplicate edge to sphere_shaped_trait was deduplicated into lateral_elongation's, and `has capability` disappears entirely because its only corpus edge was psychrotolerant_trait -> growth_at_4c, the leaf that restated its own parent. Both are the migration working as intended, not collateral: an ungrounded predicate with no remaining edges should stop appearing in a coverage report. Co-Authored-By: Claude Fable 5 --- reports/biolink_coverage.tsv | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reports/biolink_coverage.tsv b/reports/biolink_coverage.tsv index 9bcc1892..16a763f8 100644 --- a/reports/biolink_coverage.tsv +++ b/reports/biolink_coverage.tsv @@ -201,7 +201,6 @@ residual has quality 3 residual feed into 3 residual polymerizes into 3 residual disrupts biolink:disrupts 3 -residual reduced in 3 residual carries out 3 residual scaffolds 3 residual encapsulates 3 @@ -274,6 +273,7 @@ residual gives rise to 2 residual localizes 2 residual polymerizes to 2 residual attaches 2 +residual reduced in 2 residual incomplete separation yields 2 residual combines with 2 residual dephosphorylates 2 @@ -403,7 +403,6 @@ residual cause 1 residual causes increase in 1 residual induces transcription of 1 residual expands 1 -residual has capability 1 residual acts as antioxidant against 1 residual exceeds tolerance of 1 residual resists 1 From acd4a120d762df0a4894aa8baa65a2b2fbde097e Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Fri, 7 Aug 2026 20:01:09 -0700 Subject: [PATCH 3/5] Correct two of the four claimed retypes to merges after review (#352) Review of the first burn-down pass (#360) found that 2 of the 4 nodes it retyped were restatements, caught by the SAME test the other restatements failed: the grounding chosen for each contradicted an edge or a definition the graph already had. salt_tolerance_breadth was retyped and grounded METPO:1000622 (halotolerant) while keeping its `is a -> nacl_delta` edge. nacl_delta is METPO:1000335, a delta (sub 1000532/1000534), whereas 1000622 is a halophily preference (sub 1000629) - so the graph asserted halotolerant sub NaCl-delta, a subsumption METPO does not have. That is the absolute-vs-breadth distinction this migration already insists on for pH, missed for salt. Merged into nacl_delta. oxygen_tolerance was grounded METPO:1000609 (aerotolerant), which METPO defines as "does NOT use O2 for growth but tolerates its presence" - false of the obligate aerobes the node also covers - and which is itself sub METPO:1000601, whose own definition is "oxygen requirements OR TOLERANCE for growth". So it was a sixth child phenotype in a graph that wires the other four in with `is a` and left this one unlinked. Merged into oxygen_preference_trait. The migration is now 2 retypes, 6 merges, 3 regroundings. THE MERGE IS A REAL CONNECTIVITY GAIN AND THE RETYPE WAS NOT, which is the distinction #359 is about. oxygen_preference FRAGMENTED_GRAPH goes components=3 of 14 (sizes 8, 4, 2) -> components=2 of 13 (sizes 11, 2): the ROS-defence island now attaches to the trait via detoxifying_enzyme_expression and superoxide_dismutase, instead of merely sitting beside a new anchor. The retype left that finding unchanged and the PR body said so. Note UNREACHABLE_FROM_TRAIT is 1296 either way - the count alone cannot tell the two apart, which is exactly #359's point. Also fixes the audit trail. The first pass logged all 11 events as RETYPE_CAUSAL_NODE, including the 7 merges and regroundings; an audit trail that calls a merge a retype cannot answer the question it exists to answer. The script now emits MERGE / DROP / REGROUND / UNGROUND_CAUSAL_NODE and appends the curation_history entry itself via record_curation_event rather than leaving it to be hand-written after the fact. Its timestamp is fixed rather than wall-clock because pages/ derives "Corpus as of" from the latest curation_history entry (#228). just qc green (audit-graphs and audit-snippets both 0 new) - 519 tests pass. Co-Authored-By: Claude Opus 5 --- conf/causal_graph_audit_baseline.tsv | 6 +- conf/evidence_snippet_baseline.tsv | 13 ++- data/traits/environment/nacl_delta_low.yaml | 43 +++----- .../traits/environment/oxygen_preference.yaml | 33 +++--- data/traits/environment/ph_delta.yaml | 6 +- data/traits/environment/ph_delta_high.yaml | 14 ++- data/traits/environment/ph_delta_low.yaml | 16 ++- data/traits/environment/psychrotolerant.yaml | 17 ++- .../environment/slightly_halophilic.yaml | 6 +- data/traits/morphology/non_spore_forming.yaml | 17 ++- data/traits/morphology/sphere_shaped.yaml | 14 ++- data/traits/physiology/catalase_activity.yaml | 14 ++- data/traits/physiology/urease_activity.yaml | 11 +- ...2026-08-08T030032Z-claude-code-d72d86.yaml | 44 ++++++++ pages/browse.html | 2 +- pages/category/ecology.html | 2 +- pages/category/environment.html | 2 +- pages/category/genomics.html | 2 +- pages/category/metabolism.html | 2 +- pages/category/morphology.html | 2 +- pages/category/observation.html | 2 +- pages/category/physiology.html | 2 +- pages/category/quantitative_property.html | 2 +- pages/category/upper.html | 2 +- pages/graph.html | 2 +- pages/traits/environment/nacl_delta_low.html | 35 ++---- .../traits/environment/oxygen_preference.html | 14 +-- pages/traits/environment/ph_delta.html | 6 +- pages/traits/environment/ph_delta_high.html | 8 +- pages/traits/environment/ph_delta_low.html | 8 +- pages/traits/environment/psychrotolerant.html | 8 +- .../environment/slightly_halophilic.html | 6 +- .../traits/morphology/non_spore_forming.html | 8 +- pages/traits/morphology/sphere_shaped.html | 8 +- .../traits/physiology/catalase_activity.html | 8 +- pages/traits/physiology/urease_activity.html | 8 +- pages/umap.html | 2 +- reports/causal_graph_audit.tsv | 6 +- scripts/migrate_disposition_typing.py | 101 ++++++++++++++---- 39 files changed, 280 insertions(+), 222 deletions(-) create mode 100644 history/infrastructure/disposition-typing-burndown/2026-08-08T030032Z-claude-code-d72d86.yaml diff --git a/conf/causal_graph_audit_baseline.tsv b/conf/causal_graph_audit_baseline.tsv index 198b8dc7..683f4ac9 100644 --- a/conf/causal_graph_audit_baseline.tsv +++ b/conf/causal_graph_audit_baseline.tsv @@ -325,9 +325,9 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylation' label='amino-acid decarboxylation' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='proton_motive_force' label='proton motive force' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 5, 5, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=3 of 14 node(s) (sizes: 8, 4, 2) — one record, several unrelated mechanisms +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms diff --git a/conf/evidence_snippet_baseline.tsv b/conf/evidence_snippet_baseline.tsv index 558d594c..c489a5a5 100644 --- a/conf/evidence_snippet_baseline.tsv +++ b/conf/evidence_snippet_baseline.tsv @@ -499,11 +499,10 @@ data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline: data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline:salinity_transition->proteome_reorganization[0] MISSING_SNIPPET WARN reference=DOI:10.1126/sciadv.adg2059 has no snippet data/traits/environment/nacl_delta_high.yaml nacl_delta_high_extreme_euryhaline:salt_in_osmoadaptation->acidic_proteome[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s41559-024-02505-6 has no snippet data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:compatible_solute_transporters->limited_osmoadaptive_flexibility[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00145-24 has no snippet -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:ectoine_biosynthesis->salt_tolerance_breadth[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:intracellular_proline->salt_tolerance_breadth[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01195-24 has no snippet -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:nhac_antiporter->salt_tolerance_breadth[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00145-24 has no snippet -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:salt_tolerance_breadth->nacl_delta[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuy009 has no snippet -data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:trkh_k_uptake->salt_tolerance_breadth[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00145-24 has no snippet +data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:ectoine_biosynthesis->nacl_delta[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet +data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:intracellular_proline->nacl_delta[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01195-24 has no snippet +data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:nhac_antiporter->nacl_delta[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00145-24 has no snippet +data/traits/environment/nacl_delta_low.yaml nacl_delta_low_stenohaline:trkh_k_uptake->nacl_delta[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00145-24 has no snippet data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth:c_di_amp->k_import[0] MISSING_SNIPPET WARN reference=DOI:10.1128/MMBR.00181-23 has no snippet data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth:c_di_amp->organic_osmolyte_influx_biosynthesis[0] MISSING_SNIPPET WARN reference=DOI:10.1128/JB.00190-24 has no snippet data/traits/environment/nacl_delta_mid1.yaml nacl_delta_mid1_modest_breadth:compatible_solute_accumulation->osmoadaptation_under_nacl[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuaf020 has no snippet @@ -632,11 +631,11 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor:opua_transporter->intracellular_glycine_betaine[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuad033 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:aerobic_phenotype->oxygen_preference_trait[0] ELLIPTICAL_SNIPPET ERROR non-contiguous quote: 'aerobic ... respiration capacities' data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:catalase->hydrogen_peroxide[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s43705-023-00251-7 has no snippet -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:detoxifying_enzyme_expression->oxygen_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00606-23 has no snippet +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:detoxifying_enzyme_expression->oxygen_preference_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00606-23 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:molecular_oxygen->oxygen_terminal_electron_acceptor[0] MISSING_SNIPPET WARN reference=DOI:10.1371/journal.ppat.1012084 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:oxygen_terminal_electron_acceptor->aerobic_phenotype[0] MISSING_SNIPPET WARN reference=DOI:10.1371/journal.ppat.1012084 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:reactive_oxygen_species_stress->detoxifying_enzyme_expression[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00606-23 has no snippet -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:superoxide_dismutase->oxygen_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s43705-023-00251-7 has no snippet +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:superoxide_dismutase->oxygen_preference_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s43705-023-00251-7 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:amino_acid_decarboxylase_acid_resistance->low_ph_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms12091774 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:cation_proton_antiporter_activity->ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1128/AEM.00569-24 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:f0f1_atpase_activity->ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuad033 has no snippet diff --git a/data/traits/environment/nacl_delta_low.yaml b/data/traits/environment/nacl_delta_low.yaml index b02390ba..f38f8861 100644 --- a/data/traits/environment/nacl_delta_low.yaml +++ b/data/traits/environment/nacl_delta_low.yaml @@ -63,11 +63,6 @@ causal_graphs: node_type: CHEMICAL description: Accumulation of proline as a compatible solute supporting growth at higher NaCl. - - node_id: salt_tolerance_breadth - label: salt-tolerance breadth - node_type: TRAIT - description: Capacity to grow across a range of ambient NaCl concentrations. - grounding: METPO:1000622 edges: - subject: limited_osmoadaptive_flexibility predicate: confers @@ -90,7 +85,7 @@ causal_graphs: predicate_id: rdfs:subClassOf - subject: ectoine_biosynthesis predicate: supports - object: salt_tolerance_breadth + object: nacl_delta description: Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range. evidence: @@ -109,7 +104,7 @@ causal_graphs: (opuAC, proX/proV/proW) supporting osmoadaptation. - subject: trkh_k_uptake predicate: supports - object: salt_tolerance_breadth + object: nacl_delta description: TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth. evidence: @@ -118,7 +113,7 @@ causal_graphs: of compatible solutes and K+ supports salt adaptation. - subject: nhac_antiporter predicate: supports - object: salt_tolerance_breadth + object: nacl_delta description: NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low. @@ -128,7 +123,7 @@ causal_graphs: (~3.27 and 3.22-fold). - subject: intracellular_proline predicate: supports - object: salt_tolerance_breadth + object: nacl_delta description: Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance. evidence: @@ -136,16 +131,6 @@ causal_graphs: notes: Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth. - - subject: salt_tolerance_breadth - predicate: is a - object: nacl_delta - description: Salt-tolerance breadth is the capacity quantified by the NaCl-delta - phenotype. - evidence: - - reference: DOI:10.1093/femsre/fuy009 - notes: Osmoadaptation review frames salinity tolerance breadth as the basis - of the NaCl-delta (stenohaline vs euryhaline) distinction. - predicate_id: rdfs:subClassOf curation_history: - timestamp: '2026-05-05T01:35:46.840753+00:00' curator: seed_from_metpo @@ -189,13 +174,17 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Retyped node salt_tolerance_breadth from CAPACITY to TRAIT and grounded - it METPO:1000622. Issue 352. 'Capacity to grow across a range of ambient NaCl - concentrations.' Already behaves as a trait -- it carries `is a -> nacl_delta` - (METPO:1000335) -- and the record is METPO:1000479, so 1000622 collides with neither. - Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates - a real mistyped disposition from a node that merely restates its anchor. + action: MERGE_CAUSAL_NODE + changes: 'Merged node salt_tolerance_breadth into nacl_delta and repointed its edges. + Issue 352. A FIFTH restatement, caught in review (#360). ''Capacity to grow across + a range of ambient NaCl concentrations'' against nacl_delta''s ''Breadth of the + growth-supporting NaCl range'' -- the same claim, and nacl_delta is in the same + graph already TRAIT and already grounded METPO:1000335. I had retyped it and grounded + it METPO:1000622 (halotolerant), which is a DEGREE of tolerance, not a breadth: + 1000622 is a halophily preference (sub 1000629) while 1000335 is a delta (sub + 1000532/1000534), so the node''s existing `is a -> nacl_delta` edge asserted halotolerant + sub NaCl delta, a subsumption METPO does not have. The absolute-vs-breadth distinction + this migration insists on for pH, missed for salt.' llm_assisted: true diff --git a/data/traits/environment/oxygen_preference.yaml b/data/traits/environment/oxygen_preference.yaml index 03c03010..56e2e45a 100644 --- a/data/traits/environment/oxygen_preference.yaml +++ b/data/traits/environment/oxygen_preference.yaml @@ -96,11 +96,6 @@ causal_graphs: node_type: GENE_OR_PROTEIN description: Enzyme that dismutates superoxide; key oxidative-stress defense. grounding: GO:0004784 - - node_id: oxygen_tolerance - label: oxygen tolerance - node_type: TRAIT - description: Capacity of a cell to survive exposure to molecular oxygen. - grounding: METPO:1000609 edges: - subject: ambient_oxygen predicate: defines @@ -181,7 +176,7 @@ causal_graphs: to O2 or H2O2 stress. - subject: detoxifying_enzyme_expression predicate: increases - object: oxygen_tolerance + object: oxygen_preference_trait description: A larger detoxifying-enzyme repertoire increases survival under oxygen exposure. evidence: @@ -200,7 +195,7 @@ causal_graphs: predicate_id: METPO:2007809 - subject: superoxide_dismutase predicate: increases - object: oxygen_tolerance + object: oxygen_preference_trait description: Higher superoxide dismutase activity is associated with higher oxygen tolerance. evidence: @@ -301,15 +296,19 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Retyped node oxygen_tolerance from CAPACITY to TRAIT and grounded it METPO:1000609. - Issue 352. 'Capacity of a cell to survive exposure to molecular oxygen' is aerotolerance. - Distinct from all five phenotype nodes in the graph (METPO:1000601/2/3/4/612). - NOTE this is the organism-scoped sense; carboxydotrophic.yaml's same-named node - reads 'Ability of an ENZYME to function in the presence of O2' and is correctly - NOT a trait (#353). Every TRAIT node in the corpus is grounded, so requiring a - grounding is what separates a real mistyped disposition from a node that merely - restates its anchor. + action: MERGE_CAUSAL_NODE + changes: 'Merged node oxygen_tolerance into oxygen_preference_trait and repointed + its edges. Issue 352. A SIXTH restatement (#360). METPO:1000601''s own definition + is ''an organism''s oxygen requirements OR TOLERANCE for growth'', so ''capacity + of a cell to survive exposure to molecular oxygen'' is part of what the anchor + already says. I had grounded it METPO:1000609 (aerotolerant), which METPO defines + as ''does NOT USE O2 for growth but tolerates its presence'' -- the aerotolerant-anaerobe + phenotype, false of the obligate aerobes this node also covers -- and which is + itself sub METPO:1000601, making it a sixth child phenotype in a graph that wires + the other four in with `is a` and left this one unlinked. aerotolerant.yaml, the + record FOR 1000609, has no such node at all: it models the same biology as detoxification + processes. Merging attaches the ROS-defence island to the trait, which unlike + a retype is a real connectivity gain.' llm_assisted: true diff --git a/data/traits/environment/ph_delta.yaml b/data/traits/environment/ph_delta.yaml index dc4dea23..97dd491c 100644 --- a/data/traits/environment/ph_delta.yaml +++ b/data/traits/environment/ph_delta.yaml @@ -217,12 +217,10 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude action: RETYPE_CAUSAL_NODE changes: Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. - The record is METPO:1000232 (pH delta), so no collision. Every TRAIT node in the - corpus is grounded, so requiring a grounding is what separates a real mistyped - disposition from a node that merely restates its anchor. + The record is METPO:1000232 (pH delta), so no collision. llm_assisted: true diff --git a/data/traits/environment/ph_delta_high.yaml b/data/traits/environment/ph_delta_high.yaml index 99203ce1..e0126474 100644 --- a/data/traits/environment/ph_delta_high.yaml +++ b/data/traits/environment/ph_delta_high.yaml @@ -286,14 +286,12 @@ curation_history: this record''s own ph_delta_high_trait, so it takes the same METPO:1000478; merging the two nodes is tracked in issue 352.' llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: 'Regrounded node growth_external_ph_5_5_9 to METPO:1000332. Issue 352. - Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: - this node is an ABSOLUTE external range (''~5.5-9.0''), while ph_delta_high_trait + action: REGROUND_CAUSAL_NODE + changes: 'Regrounded node growth_external_ph_5_5_9 from METPO:1000478 to METPO:1000332. + Issue 352. Shared METPO:1000478 with ph_delta_high_trait, but the two say different + things: this node is an ABSOLUTE external range (''~5.5-9.0''), while ph_delta_high_trait is a BREADTH (''approximately 5-9 pH units''), which is what a pH DELTA is. 1000478 - belongs to the delta; this is a pH range (METPO:1000332). Every TRAIT node in - the corpus is grounded, so requiring a grounding is what separates a real mistyped - disposition from a node that merely restates its anchor.' + belongs to the delta; this is a pH range (METPO:1000332).' llm_assisted: true diff --git a/data/traits/environment/ph_delta_low.yaml b/data/traits/environment/ph_delta_low.yaml index 05b5f2a8..883ca57e 100644 --- a/data/traits/environment/ph_delta_low.yaml +++ b/data/traits/environment/ph_delta_low.yaml @@ -194,14 +194,12 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis. Issue - 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, - which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. - Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING - against it. Every TRAIT node in the corpus is grounded, so requiring a grounding - is what separates a real mistyped disposition from a node that merely restates - its anchor. + action: MERGE_CAUSAL_NODE + changes: Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis and + repointed its edges. Issue 352. 'Capacity to balance and maintain cytoplasmic + pH under pH stress' is cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH + already typed BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity + node to GO:0051453 would have produced a DUPLICATE_GROUNDING against it. llm_assisted: true diff --git a/data/traits/environment/psychrotolerant.yaml b/data/traits/environment/psychrotolerant.yaml index e83dc018..59826cf4 100644 --- a/data/traits/environment/psychrotolerant.yaml +++ b/data/traits/environment/psychrotolerant.yaml @@ -269,14 +269,13 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Dropped node growth_at_4c. Issue 352. 'Ability to grow at refrigeration-range - low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term - and the grounding of psychrotolerant_trait, which is the node it hangs off. A - leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response - confers, facultative_lipid_remodeling manifests as), so nothing is stranded. Every - TRAIT node in the corpus is grounded, so requiring a grounding is what separates - a real mistyped disposition from a node that merely restates its anchor. + action: DROP_CAUSAL_NODE + changes: Dropped node growth_at_4c and its edges. Issue 352. 'Ability to grow at + refrigeration-range low temperature (4 C)' IS METPO:1000618 (psychrotolerant), + the record's own term and the grounding of psychrotolerant_trait, which is the + node it hangs off. A leaf restating its own parent. The parent keeps two other + in-edges (cold_shock_response confers, facultative_lipid_remodeling manifests + as), so nothing is stranded. llm_assisted: true diff --git a/data/traits/environment/slightly_halophilic.yaml b/data/traits/environment/slightly_halophilic.yaml index 3540d35c..f6aefb88 100644 --- a/data/traits/environment/slightly_halophilic.yaml +++ b/data/traits/environment/slightly_halophilic.yaml @@ -275,13 +275,11 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude action: RETYPE_CAUSAL_NODE changes: Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. The record is METPO:1000625 (slightly halophilic), so this is a distinct term - rather than a restatement of the anchor. Every TRAIT node in the corpus is grounded, - so requiring a grounding is what separates a real mistyped disposition from a - node that merely restates its anchor. + rather than a restatement of the anchor. llm_assisted: true diff --git a/data/traits/morphology/non_spore_forming.yaml b/data/traits/morphology/non_spore_forming.yaml index 58f60f76..9c492019 100644 --- a/data/traits/morphology/non_spore_forming.yaml +++ b/data/traits/morphology/non_spore_forming.yaml @@ -222,14 +222,13 @@ curation_history: changes: Grounded 5 causal-edge predicate_id field(s) via mappings/predicate_grounding.tsv (biolink:causes×2, METPO:2007400×2, RO:0002212×1). llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Merged node loss_sporulation_capacity into non_spore_forming_trait. Issue - 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, - non-spore forming), so the only correct grounding duplicates the anchor. Collapsing - leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape - loss_sporulation_genes already uses in this graph. Every TRAIT node in the corpus - is grounded, so requiring a grounding is what separates a real mistyped disposition - from a node that merely restates its anchor. + action: MERGE_CAUSAL_NODE + changes: Merged node loss_sporulation_capacity into non_spore_forming_trait and + repointed its edges. Issue 352. 'Loss of the capacity to undergo sporulation' + IS the record's own trait (METPO:1000872, non-spore forming), so the only correct + grounding duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> + non_spore_forming_trait, which is the shape loss_sporulation_genes already uses + in this graph. llm_assisted: true diff --git a/data/traits/morphology/sphere_shaped.yaml b/data/traits/morphology/sphere_shaped.yaml index d56c88a0..cf78b7d7 100644 --- a/data/traits/morphology/sphere_shaped.yaml +++ b/data/traits/morphology/sphere_shaped.yaml @@ -243,13 +243,11 @@ curation_history: not enablement. Needs GENE_OR_PROTEIN added to `transports`'' subject_types, which is a deliberate widening recorded there.' llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Merged node elongation_capacity into lateral_elongation. Issue 352. 'Capacity - of a cell to elongate into a rod via sidewall growth' against lateral_elongation's - 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already - carried `reduced in -> sphere_shaped_trait`. Every TRAIT node in the corpus is - grounded, so requiring a grounding is what separates a real mistyped disposition - from a node that merely restates its anchor. + action: MERGE_CAUSAL_NODE + changes: Merged node elongation_capacity into lateral_elongation and repointed its + edges. Issue 352. 'Capacity of a cell to elongate into a rod via sidewall growth' + against lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the + same claim twice, and both already carried `reduced in -> sphere_shaped_trait`. llm_assisted: true diff --git a/data/traits/physiology/catalase_activity.yaml b/data/traits/physiology/catalase_activity.yaml index a5593ae1..e1ba0227 100644 --- a/data/traits/physiology/catalase_activity.yaml +++ b/data/traits/physiology/catalase_activity.yaml @@ -263,13 +263,11 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: 'Removed node catalase''s grounding. Issue 352. GO:0004096 is ''catalase - ACTIVITY'' -- a molecular function, which is what catalase_function is. A protein - is not its activity, and the graph already says so correctly: catalase -enables-> - catalase_function. Dropped from the protein, kept on the function. Every TRAIT - node in the corpus is grounded, so requiring a grounding is what separates a real - mistyped disposition from a node that merely restates its anchor.' + action: UNGROUND_CAUSAL_NODE + changes: 'Dropped the grounding GO:0004096 from node catalase. Issue 352. GO:0004096 + is ''catalase ACTIVITY'' -- a molecular function, which is what catalase_function + is. A protein is not its activity, and the graph already says so correctly: catalase + -enables-> catalase_function. Dropped from the protein, kept on the function.' llm_assisted: true diff --git a/data/traits/physiology/urease_activity.yaml b/data/traits/physiology/urease_activity.yaml index 43625c9c..aed4c8de 100644 --- a/data/traits/physiology/urease_activity.yaml +++ b/data/traits/physiology/urease_activity.yaml @@ -243,11 +243,10 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T02:00:00Z' +- timestamp: '2026-08-08T03:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: 'Removed node urease''s grounding. Issue 352. GO:0009039 is ''urease ACTIVITY''. - Same as catalase: kept on urease_function, dropped from the protein that enables - it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what - separates a real mistyped disposition from a node that merely restates its anchor.' + action: UNGROUND_CAUSAL_NODE + changes: 'Dropped the grounding GO:0009039 from node urease. Issue 352. GO:0009039 + is ''urease ACTIVITY''. Same as catalase: kept on urease_function, dropped from + the protein that enables it.' llm_assisted: true diff --git a/history/infrastructure/disposition-typing-burndown/2026-08-08T030032Z-claude-code-d72d86.yaml b/history/infrastructure/disposition-typing-burndown/2026-08-08T030032Z-claude-code-d72d86.yaml new file mode 100644 index 00000000..48cd4861 --- /dev/null +++ b/history/infrastructure/disposition-typing-burndown/2026-08-08T030032Z-claude-code-d72d86.yaml @@ -0,0 +1,44 @@ +history_version: 1 +target: + kind: infrastructure + path: scripts/migrate_disposition_typing.py + slug: disposition-typing-burndown +session: + id: 2026-08-08T030032Z-claude-code-d72d86 + timestamp: '2026-08-08T03:00:32Z' + actors: + - type: ai_agent + name: claude-code +links: + issues: + - https://github.com/CultureBotAI/TraitMech/issues/352 + prs: + - https://github.com/CultureBotAI/TraitMech/pull/360 +events: +- type: EDIT + outcome: changed + sections: + - causal_graphs + - grounding + summary: Correct two of the four claimed retypes to merges after review (#360) + details: 'Review of the first burn-down pass found that 2 of the 4 nodes it retyped were + restatements, by the same test the other restatements failed: the grounding chosen for + each contradicted an edge or definition the graph already had. salt_tolerance_breadth + was retyped and grounded METPO:1000622 (halotolerant) while keeping its ''is a -> nacl_delta'' + edge, and nacl_delta is METPO:1000335 (a delta, sub 1000532/1000534) whereas 1000622 is + a halophily preference (sub 1000629), so the graph asserted halotolerant sub NaCl-delta, + a subsumption METPO does not have. It is the absolute-vs-breadth distinction this migration + already insists on for pH, missed for salt; merged into nacl_delta. oxygen_tolerance was + grounded METPO:1000609 (aerotolerant), which METPO defines as ''does not use O2 for growth + but tolerates its presence'' - false of the obligate aerobes the node also covers - and + which is itself sub METPO:1000601, making it a sixth child phenotype in a graph that wires + the other four in with ''is a'' and left this one unlinked; merged into oxygen_preference_trait. + The migration is now 2 retypes, 6 merges, 3 regroundings. Unlike the retype, the merge + is a real connectivity gain: oxygen_preference FRAGMENTED_GRAPH goes components=3 of 14 + (sizes 8,4,2) to components=2 of 13 (sizes 11,2), because the ROS-defence island now attaches + to the trait instead of merely sitting beside a new anchor. UNREACHABLE_FROM_TRAIT is + 1296 either way, which is why the count alone could not tell the two apart (issue 359). + Also fixed the audit trail itself: the first pass logged all 11 events as RETYPE_CAUSAL_NODE + including the 7 merges and regroundings, so the script now emits MERGE/DROP/REGROUND/UNGROUND_CAUSAL_NODE + and appends the curation_history entry itself rather than leaving it to be hand-written. + 519 tests pass; audit-graphs and audit-snippets both 0 new.' diff --git a/pages/browse.html b/pages/browse.html index 326e6b26..33121f88 100644 --- a/pages/browse.html +++ b/pages/browse.html @@ -103,7 +103,7 @@

    QUANTITATIVE_PROPERTY

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/ecology.html b/pages/category/ecology.html index 4dffbbb0..99f0d4ba 100644 --- a/pages/category/ecology.html +++ b/pages/category/ecology.html @@ -256,7 +256,7 @@

    ECOLOGY (26)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/environment.html b/pages/category/environment.html index dc09cb6c..a28ef167 100644 --- a/pages/category/environment.html +++ b/pages/category/environment.html @@ -1016,7 +1016,7 @@

    ENVIRONMENT (121)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/genomics.html b/pages/category/genomics.html index 7d2cbe25..624db9cf 100644 --- a/pages/category/genomics.html +++ b/pages/category/genomics.html @@ -200,7 +200,7 @@

    GENOMICS (19)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/metabolism.html b/pages/category/metabolism.html index bc0111d3..36dd884d 100644 --- a/pages/category/metabolism.html +++ b/pages/category/metabolism.html @@ -1192,7 +1192,7 @@

    METABOLISM (143)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/morphology.html b/pages/category/morphology.html index 013b80ff..82f607a7 100644 --- a/pages/category/morphology.html +++ b/pages/category/morphology.html @@ -752,7 +752,7 @@

    MORPHOLOGY (88)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/observation.html b/pages/category/observation.html index 77697a0b..02115a52 100644 --- a/pages/category/observation.html +++ b/pages/category/observation.html @@ -208,7 +208,7 @@

    OBSERVATION (20)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/physiology.html b/pages/category/physiology.html index 1acc0be8..31e3f367 100644 --- a/pages/category/physiology.html +++ b/pages/category/physiology.html @@ -408,7 +408,7 @@

    PHYSIOLOGY (45)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/quantitative_property.html b/pages/category/quantitative_property.html index 10654887..54f51641 100644 --- a/pages/category/quantitative_property.html +++ b/pages/category/quantitative_property.html @@ -104,7 +104,7 @@

    QUANTITATIVE_PROPERTY (7)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/upper.html b/pages/category/upper.html index 7deb111c..80ef6f50 100644 --- a/pages/category/upper.html +++ b/pages/category/upper.html @@ -112,7 +112,7 @@

    UPPER (8)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/graph.html b/pages/graph.html index 0ab79a06..8c2c8859 100644 --- a/pages/graph.html +++ b/pages/graph.html @@ -239,7 +239,7 @@

    Trait graph layout (sfdp)

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/nacl_delta_low.html b/pages/traits/environment/nacl_delta_low.html index 24ecd97e..f5ed1eb5 100644 --- a/pages/traits/environment/nacl_delta_low.html +++ b/pages/traits/environment/nacl_delta_low.html @@ -93,7 +93,7 @@

    Edge evidence

  • ectoine biosynthesis capacity supports - salt-tolerance breadth + NaCl delta

    Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.

      @@ -127,7 +127,7 @@

      Edge evidence

    • TrkH potassium uptake system supports - salt-tolerance breadth + NaCl delta

      TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.

        @@ -144,7 +144,7 @@

        Edge evidence

      • NhaC-family Na+/H+ antiporter supports - salt-tolerance breadth + NaCl delta

        NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.

          @@ -161,7 +161,7 @@

          Edge evidence

        • intracellular proline accumulation supports - salt-tolerance breadth + NaCl delta

          Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.

            @@ -175,23 +175,6 @@

            Edge evidence

        • -
        • - salt-tolerance breadth - is a - NaCl delta - rdfs:subClassOf -

          Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.

          -
            - -
          • - DOI:10.1093/femsre/fuy009 - - Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction. -
          • - -
          -
        • -
  • @@ -438,9 +421,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Retyped node salt_tolerance_breadth from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow across a range of ambient NaCl concentrations.' Already behaves as a trait -- it carries `is a -> nacl_delta` (METPO:1000335) -- and the record is METPO:1000479, so 1000622 collides with neither. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + MERGE_CAUSAL_NODE · claude +

    Merged node salt_tolerance_breadth into nacl_delta and repointed its edges. Issue 352. A FIFTH restatement, caught in review (#360). 'Capacity to grow across a range of ambient NaCl concentrations' against nacl_delta's 'Breadth of the growth-supporting NaCl range' -- the same claim, and nacl_delta is in the same graph already TRAIT and already grounded METPO:1000335. I had retyped it and grounded it METPO:1000622 (halotolerant), which is a DEGREE of tolerance, not a breadth: 1000622 is a halophily preference (sub 1000629) while 1000335 is a delta (sub 1000532/1000534), so the node's existing `is a -> nacl_delta` edge asserted halotolerant sub NaCl delta, a subsumption METPO does not have. The absolute-vs-breadth distinction this migration insists on for pH, missed for salt.

  • @@ -800,7 +783,7 @@

    kg-microbe

    } (function() { - var graphs = [{"description": "DOI-backed graph linking limited osmoadaptive flexibility to a narrow NaCl growth breadth (\u2264 ~1% w/v).", "edges": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_osmoadaptive_flexibility", "target": "nacl_delta_low_trait"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "nacl_delta_low_trait", "target": "nacl_delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-3", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "ectoine_biosynthesis", "target": "salt_tolerance_breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "compatible_solute_transporters", "target": "limited_osmoadaptive_flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "trkh_k_uptake", "target": "salt_tolerance_breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "nhac_antiporter", "target": "salt_tolerance_breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "id": "edge-7", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "intracellular_proline", "target": "salt_tolerance_breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "id": "edge-8", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt_tolerance_breadth", "target": "nacl_delta"}], "evidence_rows": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited osmoadaptive flexibility", "target": "NaCl delta low"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "NaCl delta low", "target": "NaCl delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "edge_id": "edge-3", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "supports", "predicate_id": null, "source": "ectoine biosynthesis capacity", "target": "salt-tolerance breadth"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "edge_id": "edge-4", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "compatible-solute transporters (Opu/ProU)", "target": "limited osmoadaptive flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "edge_id": "edge-5", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "TrkH potassium uptake system", "target": "salt-tolerance breadth"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "edge_id": "edge-6", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "NhaC-family Na+/H+ antiporter", "target": "salt-tolerance breadth"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "predicate": "supports", "predicate_id": null, "source": "intracellular proline accumulation", "target": "salt-tolerance breadth"}, {"description": "Salt-tolerance breadth is the capacity quantified by the NaCl-delta phenotype.", "edge_id": "edge-8", "evidence": [{"notes": "Osmoadaptation review frames salinity tolerance breadth as the basis of the NaCl-delta (stenohaline vs euryhaline) distinction.", "reference": "DOI:10.1093/femsre/fuy009"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "salt-tolerance breadth", "target": "NaCl delta"}], "graph_id": "nacl_delta_low_stenohaline", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Opu/ProU-family uptake systems importing compatible solutes during osmoadaptation.", "grounding": null, "id": "compatible_solute_transporters", "is_orphan": false, "label": "compatible-solute transporters (Opu/ProU)", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to synthesize ectoine as a major compatible solute under salt stress.", "grounding": null, "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis capacity", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Accumulation of proline as a compatible solute supporting growth at higher NaCl.", "grounding": null, "id": "intracellular_proline", "is_orphan": false, "label": "intracellular proline accumulation", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Narrow capacity to remodel osmolyte pools and ion transport across ambient salinities.", "grounding": null, "id": "limited_osmoadaptive_flexibility", "is_orphan": false, "label": "limited osmoadaptive flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting NaCl range.", "grounding": "METPO:1000335", "id": "nacl_delta", "is_orphan": false, "label": "NaCl delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "NaCl growth-supporting breadth \u2264 ~1% w/v.", "grounding": "METPO:1000479", "id": "nacl_delta_low_trait", "is_orphan": false, "label": "NaCl delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "NhaC-family Na+/H+ antiporters mediating ion homeostasis under salt stress.", "grounding": null, "id": "nhac_antiporter", "is_orphan": false, "label": "NhaC-family Na+/H+ antiporter", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow across a range of ambient NaCl concentrations.", "grounding": "METPO:1000622", "id": "salt_tolerance_breadth", "is_orphan": false, "label": "salt-tolerance breadth", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "TrkH-type K+ uptake transporter supporting intracellular potassium homeostasis under salt stress.", "grounding": null, "id": "trkh_k_uptake", "is_orphan": false, "label": "TrkH potassium uptake system", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "NaCl-delta-low stenohaline breadth"}]; + var graphs = [{"description": "DOI-backed graph linking limited osmoadaptive flexibility to a narrow NaCl growth breadth (\u2264 ~1% w/v).", "edges": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited_osmoadaptive_flexibility", "target": "nacl_delta_low_trait"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "nacl_delta_low_trait", "target": "nacl_delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-3", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "ectoine_biosynthesis", "target": "nacl_delta"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "compatible_solute_transporters", "target": "limited_osmoadaptive_flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "trkh_k_uptake", "target": "nacl_delta"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "nhac_antiporter", "target": "nacl_delta"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "id": "edge-7", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "intracellular_proline", "target": "nacl_delta"}], "evidence_rows": [{"description": "Limited osmoadaptive flexibility yields a narrow NaCl-delta breadth.", "edge_id": "edge-1", "evidence": [{"notes": "Supports limited osmoadaptive flexibility as the basis of stenohaline breadth.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "limited osmoadaptive flexibility", "target": "NaCl delta low"}, {"description": "NaCl delta low is a quantitative bin of the NaCl-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports a narrow breadth as a value within the NaCl-delta distribution.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "salinity range"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "NaCl delta low", "target": "NaCl delta"}, {"description": "Ectoine biosynthesis capacity broadens NaCl tolerance; its loss narrows the growth range.", "edge_id": "edge-3", "evidence": [{"notes": "Wild-type H. elongata synthesizes ectoine as a major osmolyte, whereas ectoine-deficient strains become salt sensitive; supports general role of ectoine pathway in broadening NaCl tolerance.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "supports", "predicate_id": null, "source": "ectoine biosynthesis capacity", "target": "NaCl delta"}, {"description": "Salinity-induced Opu/ProU compatible-solute transporters underlie osmoadaptive flexibility; limited capacity contributes to narrow breadth.", "edge_id": "edge-4", "evidence": [{"notes": "Proteomics showed salinity-linked increases in compatible-solute transporters (opuAC, proX/proV/proW) supporting osmoadaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "compatible-solute transporters (Opu/ProU)", "target": "limited osmoadaptive flexibility"}, {"description": "TrkH K+ uptake supports intracellular K+ homeostasis enabling salt tolerance; its absence may contribute to narrow breadth.", "edge_id": "edge-5", "evidence": [{"notes": "TrkH listed among salinity-responsive proteins; simultaneous accumulation of compatible solutes and K+ supports salt adaptation.", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "TrkH potassium uptake system", "target": "NaCl delta"}, {"description": "NhaC Na+/H+ antiporters support ion homeostasis under salt stress; a candidate breadth-expanding mechanism whose absence may contribute to NaCl delta low.", "edge_id": "edge-6", "evidence": [{"notes": "Proteomics show strong salinity-linked increases for NhaC-family antiporters (~3.27 and 3.22-fold).", "reference": "DOI:10.1128/aem.00145-24"}], "predicate": "supports", "predicate_id": null, "source": "NhaC-family Na+/H+ antiporter", "target": "NaCl delta"}, {"description": "Increased intracellular proline as a compatible solute supports growth at higher NaCl, broadening tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Engineered proline biosynthesis with blocked catabolism increased intracellular proline and restored growth at 8% NaCl; supports osmolyte role of proline in salt-tolerance breadth.", "reference": "DOI:10.1128/aem.01195-24"}], "predicate": "supports", "predicate_id": null, "source": "intracellular proline accumulation", "target": "NaCl delta"}], "graph_id": "nacl_delta_low_stenohaline", "issues": [], "nodes": [{"color": "#f3e8ff", "description": "Opu/ProU-family uptake systems importing compatible solutes during osmoadaptation.", "grounding": null, "id": "compatible_solute_transporters", "is_orphan": false, "label": "compatible-solute transporters (Opu/ProU)", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to synthesize ectoine as a major compatible solute under salt stress.", "grounding": null, "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis capacity", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#fef3c7", "description": "Accumulation of proline as a compatible solute supporting growth at higher NaCl.", "grounding": null, "id": "intracellular_proline", "is_orphan": false, "label": "intracellular proline accumulation", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Narrow capacity to remodel osmolyte pools and ion transport across ambient salinities.", "grounding": null, "id": "limited_osmoadaptive_flexibility", "is_orphan": false, "label": "limited osmoadaptive flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting NaCl range.", "grounding": "METPO:1000335", "id": "nacl_delta", "is_orphan": false, "label": "NaCl delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "NaCl growth-supporting breadth \u2264 ~1% w/v.", "grounding": "METPO:1000479", "id": "nacl_delta_low_trait", "is_orphan": false, "label": "NaCl delta low", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "NhaC-family Na+/H+ antiporters mediating ion homeostasis under salt stress.", "grounding": null, "id": "nhac_antiporter", "is_orphan": false, "label": "NhaC-family Na+/H+ antiporter", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#f3e8ff", "description": "TrkH-type K+ uptake transporter supporting intracellular potassium homeostasis under salt stress.", "grounding": null, "id": "trkh_k_uptake", "is_orphan": false, "label": "TrkH potassium uptake system", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "NaCl-delta-low stenohaline breadth"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -823,7 +806,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/oxygen_preference.html b/pages/traits/environment/oxygen_preference.html index 0196b963..5b9dcbea 100644 --- a/pages/traits/environment/oxygen_preference.html +++ b/pages/traits/environment/oxygen_preference.html @@ -195,7 +195,7 @@

    Edge evidence

  • detoxifying-enzyme gene expression increases - oxygen tolerance + oxygen preference RO:0002213

    A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.

      @@ -229,7 +229,7 @@

      Edge evidence

    • superoxide dismutase increases - oxygen tolerance + oxygen preference RO:0002213

      Higher superoxide dismutase activity is associated with higher oxygen tolerance.

        @@ -566,9 +566,9 @@

        Curation history

      • - · - RETYPE_CAUSAL_NODE · claude -

        Retyped node oxygen_tolerance from CAPACITY to TRAIT and grounded it METPO:1000609. Issue 352. 'Capacity of a cell to survive exposure to molecular oxygen' is aerotolerance. Distinct from all five phenotype nodes in the graph (METPO:1000601/2/3/4/612). NOTE this is the organism-scoped sense; carboxydotrophic.yaml's same-named node reads 'Ability of an ENZYME to function in the presence of O2' and is correctly NOT a trait (#353). Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

        + · + MERGE_CAUSAL_NODE · claude +

        Merged node oxygen_tolerance into oxygen_preference_trait and repointed its edges. Issue 352. A SIXTH restatement (#360). METPO:1000601's own definition is 'an organism's oxygen requirements OR TOLERANCE for growth', so 'capacity of a cell to survive exposure to molecular oxygen' is part of what the anchor already says. I had grounded it METPO:1000609 (aerotolerant), which METPO defines as 'does NOT USE O2 for growth but tolerates its presence' -- the aerotolerant-anaerobe phenotype, false of the obligate aerobes this node also covers -- and which is itself sub METPO:1000601, making it a sixth child phenotype in a graph that wires the other four in with `is a` and left this one unlinked. aerotolerant.yaml, the record FOR 1000609, has no such node at all: it models the same biology as detoxification processes. Merging attaches the ROS-defence island to the trait, which unlike a retype is a real connectivity gain.

      • @@ -928,7 +928,7 @@

        kg-microbe

        } (function() { - var graphs = [{"description": "DOI-backed graph linking ambient molecular-oxygen availability to the four child oxygen-preference phenotypes (aerobic, anaerobic, microaerophilic, facultative) that classify how organisms use or tolerate O2.", "edges": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "id": "edge-1", "is_orphan": false, "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient_oxygen", "target": "oxygen_preference_trait"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "id": "edge-3", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "id": "edge-4", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "id": "edge-5", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative_phenotype", "target": "oxygen_preference_trait"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-6", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "oxygen_terminal_electron_acceptor", "target": "aerobic_phenotype"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-7", "is_orphan": false, "predicate": "serves as", "predicate_id": null, "source": "molecular_oxygen", "target": "oxygen_terminal_electron_acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-8", "is_orphan": false, "predicate": "upregulates", "predicate_id": null, "source": "reactive_oxygen_species_stress", "target": "detoxifying_enzyme_expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying_enzyme_expression", "target": "oxygen_tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-10", "is_orphan": false, "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen_peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-11", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide_dismutase", "target": "oxygen_tolerance"}], "evidence_rows": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "edge_id": "edge-1", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient molecular oxygen", "target": "oxygen preference"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic", "target": "oxygen preference"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "edge_id": "edge-3", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic", "target": "oxygen preference"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "edge_id": "edge-4", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic", "target": "oxygen preference"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative oxygen preference", "target": "oxygen preference"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "edge_id": "edge-6", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "O2 as terminal electron acceptor", "target": "aerobic"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "edge_id": "edge-7", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "serves as", "predicate_id": null, "source": "molecular oxygen", "target": "O2 as terminal electron acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "edge_id": "edge-8", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "upregulates", "predicate_id": null, "source": "oxygen / reactive oxygen species stress", "target": "detoxifying-enzyme gene expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "edge_id": "edge-9", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying-enzyme gene expression", "target": "oxygen tolerance"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "edge_id": "edge-10", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "edge_id": "edge-11", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide dismutase", "target": "oxygen tolerance"}], "graph_id": "oxygen_preference_o2_availability_axis", "issues": [], "nodes": [{"color": "#dbeafe", "description": "Growth in the presence of molecular oxygen using O2 as terminal electron acceptor.", "grounding": "METPO:1000602", "id": "aerobic_phenotype", "is_orphan": false, "label": "aerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient O2 concentration imposed on the cell.", "grounding": null, "id": "ambient_oxygen", "is_orphan": false, "label": "ambient molecular oxygen", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#dbeafe", "description": "Growth in the absence of molecular oxygen.", "grounding": "METPO:1000603", "id": "anaerobic_phenotype", "is_orphan": false, "label": "anaerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that degrades hydrogen peroxide to water and oxygen.", "grounding": "GO:0004096", "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Upregulation of genes encoding oxidative-stress detoxifying enzymes.", "grounding": null, "id": "detoxifying_enzyme_expression", "is_orphan": false, "label": "detoxifying-enzyme gene expression", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Growth across a range of oxygen availabilities, switching between aerobic and anaerobic metabolism.", "grounding": "METPO:1000612", "id": "facultative_phenotype", "is_orphan": false, "label": "facultative oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species produced during aerobic metabolism.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low molecular-oxygen concentrations.", "grounding": "METPO:1000604", "id": "microaerophilic_phenotype", "is_orphan": false, "label": "microaerophilic", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "O2 used as a terminal electron acceptor in aerobic respiration.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Classification of an organism\u0027s oxygen requirements or tolerance for growth.", "grounding": "METPO:1000601", "id": "oxygen_preference_trait", "is_orphan": false, "label": "oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Use of molecular oxygen as the terminal electron acceptor of the respiratory chain.", "grounding": null, "id": "oxygen_terminal_electron_acceptor", "is_orphan": false, "label": "O2 as terminal electron acceptor", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity of a cell to survive exposure to molecular oxygen.", "grounding": "METPO:1000609", "id": "oxygen_tolerance", "is_orphan": false, "label": "oxygen tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Exposure to O2 and reactive oxygen species such as hydrogen peroxide.", "grounding": null, "id": "reactive_oxygen_species_stress", "is_orphan": false, "label": "oxygen / reactive oxygen species stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that dismutates superoxide; key oxidative-stress defense.", "grounding": "GO:0004784", "id": "superoxide_dismutase", "is_orphan": false, "label": "superoxide dismutase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "Oxygen-preference O2-availability axis"}]; + var graphs = [{"description": "DOI-backed graph linking ambient molecular-oxygen availability to the four child oxygen-preference phenotypes (aerobic, anaerobic, microaerophilic, facultative) that classify how organisms use or tolerate O2.", "edges": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "id": "edge-1", "is_orphan": false, "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient_oxygen", "target": "oxygen_preference_trait"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "id": "edge-2", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "id": "edge-3", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "id": "edge-4", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic_phenotype", "target": "oxygen_preference_trait"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "id": "edge-5", "is_orphan": false, "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative_phenotype", "target": "oxygen_preference_trait"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-6", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "oxygen_terminal_electron_acceptor", "target": "aerobic_phenotype"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "id": "edge-7", "is_orphan": false, "predicate": "serves as", "predicate_id": null, "source": "molecular_oxygen", "target": "oxygen_terminal_electron_acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-8", "is_orphan": false, "predicate": "upregulates", "predicate_id": null, "source": "reactive_oxygen_species_stress", "target": "detoxifying_enzyme_expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "id": "edge-9", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying_enzyme_expression", "target": "oxygen_preference_trait"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-10", "is_orphan": false, "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen_peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "id": "edge-11", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide_dismutase", "target": "oxygen_preference_trait"}], "evidence_rows": [{"description": "Ambient molecular-oxygen concentration is the quantitative axis defining oxygen-preference phenotypes.", "edge_id": "edge-1", "evidence": [{"notes": "Supports molecular oxygen utilization as the classification axis for oxygen-preference phenotypes.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "various capacities in their utilization of molecular oxygen"}], "predicate": "defines", "predicate_id": "METPO:2007500", "source": "ambient molecular oxygen", "target": "oxygen preference"}, {"description": "Aerobic is a child oxygen-preference phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports aerobic as an oxygen-use phenotype within oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic ... respiration capacities"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "aerobic", "target": "oxygen preference"}, {"description": "Anaerobic is a child oxygen-preference phenotype.", "edge_id": "edge-3", "evidence": [{"notes": "Supports anaerobic as a distinct oxygen-preference classification.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerobic, microaerobic, and anaerobic reductases"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "anaerobic", "target": "oxygen preference"}, {"description": "Microaerophilic is a child oxygen-preference phenotype.", "edge_id": "edge-4", "evidence": [{"notes": "Supports microaerophilic as a low-O2 setting on the oxygen-preference axis.", "reference": "DOI:10.3389/fmicb.2014.00674", "snippet": "aerophilic, microaerophilic, or anaerobic"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "microaerophilic", "target": "oxygen preference"}, {"description": "Facultative oxygen preference is a child oxygen-preference phenotype.", "edge_id": "edge-5", "evidence": [{"notes": "Supports facultative organisms as a mixed-O2 setting on the oxygen-preference axis, switching between aerobic and anaerobic metabolism.", "reference": "DOI:10.1111/cmi.13338", "snippet": "cope with changing oxygen levels"}], "predicate": "is a", "predicate_id": "rdfs:subClassOf", "source": "facultative oxygen preference", "target": "oxygen preference"}, {"description": "Obligate aerobic growth depends on molecular oxygen as terminal electron acceptor.", "edge_id": "edge-6", "evidence": [{"notes": "Obligate aerobes use only oxygen as the terminal electron acceptor, defining aerobic oxygen-preference.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "O2 as terminal electron acceptor", "target": "aerobic"}, {"description": "Molecular oxygen functions as the terminal electron acceptor in aerobic respiration.", "edge_id": "edge-7", "evidence": [{"notes": "Oxygen is used as the terminal electron acceptor of the aerobic respiratory chain.", "reference": "DOI:10.1371/journal.ppat.1012084"}], "predicate": "serves as", "predicate_id": null, "source": "molecular oxygen", "target": "O2 as terminal electron acceptor"}, {"description": "O2 or H2O2 stress upregulates detoxifying-enzyme genes.", "edge_id": "edge-8", "evidence": [{"notes": "Expression of genes encoding detoxifying enzymes was upregulated in response to O2 or H2O2 stress.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "upregulates", "predicate_id": null, "source": "oxygen / reactive oxygen species stress", "target": "detoxifying-enzyme gene expression"}, {"description": "A larger detoxifying-enzyme repertoire increases survival under oxygen exposure.", "edge_id": "edge-9", "evidence": [{"notes": "Cells with more detoxifying genes survived longer than those with few scavenging enzymes.", "reference": "DOI:10.1128/aem.00606-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "detoxifying-enzyme gene expression", "target": "oxygen preference"}, {"description": "Catalase rapidly degrades hydrogen peroxide, a reactive oxygen species.", "edge_id": "edge-10", "evidence": [{"notes": "Catalase is the most prominent enzyme for H2O2 degradation at higher concentrations.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "degrades", "predicate_id": "METPO:2007809", "source": "catalase", "target": "hydrogen peroxide"}, {"description": "Higher superoxide dismutase activity is associated with higher oxygen tolerance.", "edge_id": "edge-11", "evidence": [{"notes": "Higher Sod activity corresponded to higher oxygen tolerance.", "reference": "DOI:10.1038/s43705-023-00251-7"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "superoxide dismutase", "target": "oxygen preference"}], "graph_id": "oxygen_preference_o2_availability_axis", "issues": [], "nodes": [{"color": "#dbeafe", "description": "Growth in the presence of molecular oxygen using O2 as terminal electron acceptor.", "grounding": "METPO:1000602", "id": "aerobic_phenotype", "is_orphan": false, "label": "aerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#dcfce7", "description": "Ambient O2 concentration imposed on the cell.", "grounding": null, "id": "ambient_oxygen", "is_orphan": false, "label": "ambient molecular oxygen", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#dbeafe", "description": "Growth in the absence of molecular oxygen.", "grounding": "METPO:1000603", "id": "anaerobic_phenotype", "is_orphan": false, "label": "anaerobic", "node_type": "TRAIT", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that degrades hydrogen peroxide to water and oxygen.", "grounding": "GO:0004096", "id": "catalase", "is_orphan": false, "label": "catalase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#ecfccb", "description": "Upregulation of genes encoding oxidative-stress detoxifying enzymes.", "grounding": null, "id": "detoxifying_enzyme_expression", "is_orphan": false, "label": "detoxifying-enzyme gene expression", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Growth across a range of oxygen availabilities, switching between aerobic and anaerobic metabolism.", "grounding": "METPO:1000612", "id": "facultative_phenotype", "is_orphan": false, "label": "facultative oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "Reactive oxygen species produced during aerobic metabolism.", "grounding": "CHEBI:16240", "id": "hydrogen_peroxide", "is_orphan": false, "label": "hydrogen peroxide", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Growth at low molecular-oxygen concentrations.", "grounding": "METPO:1000604", "id": "microaerophilic_phenotype", "is_orphan": false, "label": "microaerophilic", "node_type": "TRAIT", "xrefs": []}, {"color": "#fef3c7", "description": "O2 used as a terminal electron acceptor in aerobic respiration.", "grounding": "CHEBI:15379", "id": "molecular_oxygen", "is_orphan": false, "label": "molecular oxygen", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#dbeafe", "description": "Classification of an organism\u0027s oxygen requirements or tolerance for growth.", "grounding": "METPO:1000601", "id": "oxygen_preference_trait", "is_orphan": false, "label": "oxygen preference", "node_type": "TRAIT", "xrefs": []}, {"color": "#cffafe", "description": "Use of molecular oxygen as the terminal electron acceptor of the respiratory chain.", "grounding": null, "id": "oxygen_terminal_electron_acceptor", "is_orphan": false, "label": "O2 as terminal electron acceptor", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#dcfce7", "description": "Exposure to O2 and reactive oxygen species such as hydrogen peroxide.", "grounding": null, "id": "reactive_oxygen_species_stress", "is_orphan": false, "label": "oxygen / reactive oxygen species stress", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#f3e8ff", "description": "Enzyme that dismutates superoxide; key oxidative-stress defense.", "grounding": "GO:0004784", "id": "superoxide_dismutase", "is_orphan": false, "label": "superoxide dismutase", "node_type": "GENE_OR_PROTEIN", "xrefs": []}], "title": "Oxygen-preference O2-availability axis"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -951,7 +951,7 @@

        kg-microbe

        METPO
  • - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta.html b/pages/traits/environment/ph_delta.html index 5d44ad9e..f94c8885 100644 --- a/pages/traits/environment/ph_delta.html +++ b/pages/traits/environment/ph_delta.html @@ -479,9 +479,9 @@

    Curation history

  • - · + · RETYPE_CAUSAL_NODE · claude -

    Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. The record is METPO:1000232 (pH delta), so no collision. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +

    Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. The record is METPO:1000232 (pH delta), so no collision.

  • @@ -864,7 +864,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_high.html b/pages/traits/environment/ph_delta_high.html index bd9e6fec..6242ed51 100644 --- a/pages/traits/environment/ph_delta_high.html +++ b/pages/traits/environment/ph_delta_high.html @@ -502,9 +502,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Regrounded node growth_external_ph_5_5_9 to METPO:1000332. Issue 352. Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: this node is an ABSOLUTE external range ('~5.5-9.0'), while ph_delta_high_trait is a BREADTH ('approximately 5-9 pH units'), which is what a pH DELTA is. 1000478 belongs to the delta; this is a pH range (METPO:1000332). Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + REGROUND_CAUSAL_NODE · claude +

    Regrounded node growth_external_ph_5_5_9 from METPO:1000478 to METPO:1000332. Issue 352. Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: this node is an ABSOLUTE external range ('~5.5-9.0'), while ph_delta_high_trait is a BREADTH ('approximately 5-9 pH units'), which is what a pH DELTA is. 1000478 belongs to the delta; this is a pH range (METPO:1000332).

  • @@ -887,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_low.html b/pages/traits/environment/ph_delta_low.html index 5d66e47d..64643872 100644 --- a/pages/traits/environment/ph_delta_low.html +++ b/pages/traits/environment/ph_delta_low.html @@ -427,9 +427,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis. Issue 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING against it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + MERGE_CAUSAL_NODE · claude +

    Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis and repointed its edges. Issue 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING against it.

  • @@ -812,7 +812,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/psychrotolerant.html b/pages/traits/environment/psychrotolerant.html index 603670b4..e96ddb0b 100644 --- a/pages/traits/environment/psychrotolerant.html +++ b/pages/traits/environment/psychrotolerant.html @@ -495,9 +495,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Dropped node growth_at_4c. Issue 352. 'Ability to grow at refrigeration-range low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term and the grounding of psychrotolerant_trait, which is the node it hangs off. A leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response confers, facultative_lipid_remodeling manifests as), so nothing is stranded. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + DROP_CAUSAL_NODE · claude +

    Dropped node growth_at_4c and its edges. Issue 352. 'Ability to grow at refrigeration-range low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term and the grounding of psychrotolerant_trait, which is the node it hangs off. A leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response confers, facultative_lipid_remodeling manifests as), so nothing is stranded.

  • @@ -880,7 +880,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/slightly_halophilic.html b/pages/traits/environment/slightly_halophilic.html index be451c9c..dbb51ef7 100644 --- a/pages/traits/environment/slightly_halophilic.html +++ b/pages/traits/environment/slightly_halophilic.html @@ -512,9 +512,9 @@

    Curation history

  • - · + · RETYPE_CAUSAL_NODE · claude -

    Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. The record is METPO:1000625 (slightly halophilic), so this is a distinct term rather than a restatement of the anchor. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    +

    Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. The record is METPO:1000625 (slightly halophilic), so this is a distinct term rather than a restatement of the anchor.

  • @@ -897,7 +897,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/non_spore_forming.html b/pages/traits/morphology/non_spore_forming.html index c5a9cc52..8764f47c 100644 --- a/pages/traits/morphology/non_spore_forming.html +++ b/pages/traits/morphology/non_spore_forming.html @@ -480,9 +480,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Merged node loss_sporulation_capacity into non_spore_forming_trait. Issue 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, non-spore forming), so the only correct grounding duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape loss_sporulation_genes already uses in this graph. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + MERGE_CAUSAL_NODE · claude +

    Merged node loss_sporulation_capacity into non_spore_forming_trait and repointed its edges. Issue 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, non-spore forming), so the only correct grounding duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape loss_sporulation_genes already uses in this graph.

  • @@ -865,7 +865,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/sphere_shaped.html b/pages/traits/morphology/sphere_shaped.html index 18c001ec..a83804ef 100644 --- a/pages/traits/morphology/sphere_shaped.html +++ b/pages/traits/morphology/sphere_shaped.html @@ -504,9 +504,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Merged node elongation_capacity into lateral_elongation. Issue 352. 'Capacity of a cell to elongate into a rod via sidewall growth' against lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already carried `reduced in -> sphere_shaped_trait`. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + MERGE_CAUSAL_NODE · claude +

    Merged node elongation_capacity into lateral_elongation and repointed its edges. Issue 352. 'Capacity of a cell to elongate into a rod via sidewall growth' against lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already carried `reduced in -> sphere_shaped_trait`.

  • @@ -889,7 +889,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/catalase_activity.html b/pages/traits/physiology/catalase_activity.html index dff2db4e..5bf0ccc7 100644 --- a/pages/traits/physiology/catalase_activity.html +++ b/pages/traits/physiology/catalase_activity.html @@ -519,9 +519,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Removed node catalase's grounding. Issue 352. GO:0004096 is 'catalase ACTIVITY' -- a molecular function, which is what catalase_function is. A protein is not its activity, and the graph already says so correctly: catalase -enables-> catalase_function. Dropped from the protein, kept on the function. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + UNGROUND_CAUSAL_NODE · claude +

    Dropped the grounding GO:0004096 from node catalase. Issue 352. GO:0004096 is 'catalase ACTIVITY' -- a molecular function, which is what catalase_function is. A protein is not its activity, and the graph already says so correctly: catalase -enables-> catalase_function. Dropped from the protein, kept on the function.

  • @@ -904,7 +904,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/urease_activity.html b/pages/traits/physiology/urease_activity.html index b1b8dea8..e21b38ad 100644 --- a/pages/traits/physiology/urease_activity.html +++ b/pages/traits/physiology/urease_activity.html @@ -502,9 +502,9 @@

    Curation history

  • - · - RETYPE_CAUSAL_NODE · claude -

    Removed node urease's grounding. Issue 352. GO:0009039 is 'urease ACTIVITY'. Same as catalase: kept on urease_function, dropped from the protein that enables it. Every TRAIT node in the corpus is grounded, so requiring a grounding is what separates a real mistyped disposition from a node that merely restates its anchor.

    + · + UNGROUND_CAUSAL_NODE · claude +

    Dropped the grounding GO:0009039 from node urease. Issue 352. GO:0009039 is 'urease ACTIVITY'. Same as catalase: kept on urease_function, dropped from the protein that enables it.

  • @@ -887,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 02:00 UTC from + Record as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/umap.html b/pages/umap.html index ca7aa08d..05419aba 100644 --- a/pages/umap.html +++ b/pages/umap.html @@ -238,7 +238,7 @@

    Trait embedding space

    METPO
    - Corpus as of 2026-08-08 02:00 UTC from + Corpus as of 2026-08-08 03:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/reports/causal_graph_audit.tsv b/reports/causal_graph_audit.tsv index 198b8dc7..683f4ac9 100644 --- a/reports/causal_graph_audit.tsv +++ b/reports/causal_graph_audit.tsv @@ -325,9 +325,9 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='amino_acid_decarboxylation' label='amino-acid decarboxylation' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor UNREACHABLE_FROM_TRAIT WARN node_id='proton_motive_force' label='proton motive force' type=BIOLOGICAL_PROCESS — in an island with no path to optimum_phenotype_trait/nacl_optimum/ph_optimum/temperature_optimum data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phenotype_descriptor FRAGMENTED_GRAPH WARN components=4 of 14 node(s) (sizes: 5, 5, 2, 2) — one record, several unrelated mechanisms -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype/oxygen_tolerance -data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=3 of 14 node(s) (sizes: 8, 4, 2) — one record, several unrelated mechanisms +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype +data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms diff --git a/scripts/migrate_disposition_typing.py b/scripts/migrate_disposition_typing.py index 1b5f9ee9..abe754b8 100644 --- a/scripts/migrate_disposition_typing.py +++ b/scripts/migrate_disposition_typing.py @@ -3,19 +3,26 @@ #353 shipped the detection and baselined what it found. This is the burn-down. -THE HEADLINE IS THAT ONLY HALF OF THEM WERE RETYPES. #352 framed the fix as +THE HEADLINE IS THAT ONLY A QUARTER OF THEM WERE RETYPES. #352 framed the fix as "sweep CAPACITY nodes matching the disposition pattern and retype them", and for -four nodes that is exactly right. For the other four, retyping would have been +two nodes that is exactly right. For the other six, retyping would have been wrong in a way that only shows up once you look for the grounding: every TRAIT node in the corpus is grounded, and the obvious grounding for - each of those four is the term its OWN record already carries. + each of those six is either the term its OWN record already carries, or a + term that collides with a node sitting in the same graph. Grounding them that way trades a DISPOSITION_MISTYPED for a DUPLICATE_GROUNDING and calls it progress. What it actually means is that the node RESTATES its -anchor, and in three of the four cases the node it restates is sitting in the +anchor, and in five of the six cases the node it restates is sitting in the same graph already correctly typed and grounded. Those get merged, not retyped. +The first pass of this migration called four of them retypes. Review (#360) +found two of those four -- salt_tolerance_breadth and oxygen_tolerance -- to be +restatements as well, each caught by the SAME test the other four failed: the +grounding chosen for them contradicted an edge or a definition the graph +already had. See their entries in MERGE. + That is #352's own third bullet read strictly: "retype in one pass, GROUNDING EACH -- an ungrounded new TRAIT node silently becomes a reachability anchor and makes UNREACHABLE_FROM_TRAIT fall without the graph actually becoming more @@ -44,11 +51,29 @@ REPO_ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(REPO_ROOT / "src")) +from traitmech.curate.curation_event import record_curation_event # noqa: E402 from traitmech.validation.write_validated import emit_trait_yaml # noqa: E402 TRAITS = REPO_ROOT / "data" / "traits" -# --- the four that really are mistyped dispositions -------------------------- +# Fixed rather than wall-clock, because pages/ derives its "Corpus as of" stamp +# from the latest curation_history entry (#228) and a clock would make every +# re-run of this migration produce a different 477-page diff. +TIMESTAMP = "2026-08-08T03:00:00Z" + +# The first pass logged all eleven events as RETYPE_CAUSAL_NODE, including the +# seven that were merges or regroundings. An audit trail that calls a merge a +# retype cannot answer the question it exists to answer, so each kind now gets +# its own label. +ACTIONS = { + "retype": "RETYPE_CAUSAL_NODE", + "merge": "MERGE_CAUSAL_NODE", + "drop": "DROP_CAUSAL_NODE", + "reground": "REGROUND_CAUSAL_NODE", + "unground": "UNGROUND_CAUSAL_NODE", +} + +# --- the two that really are mistyped dispositions -------------------------- # Retyped to TRAIT and grounded to a term that is NOT the record's own, which is # what distinguishes these from the restatements below. RETYPE: dict[tuple[str, str], dict] = { @@ -58,20 +83,6 @@ "The record is METPO:1000625 (slightly halophilic), so this is a distinct " "term rather than a restatement of the anchor.", }, - ("environment/nacl_delta_low.yaml", "salt_tolerance_breadth"): { - "grounding": "METPO:1000622", # halotolerant - "why": "'Capacity to grow across a range of ambient NaCl concentrations.' Already " - "behaves as a trait -- it carries `is a -> nacl_delta` (METPO:1000335) -- " - "and the record is METPO:1000479, so 1000622 collides with neither.", - }, - ("environment/oxygen_preference.yaml", "oxygen_tolerance"): { - "grounding": "METPO:1000609", # aerotolerant - "why": "'Capacity of a cell to survive exposure to molecular oxygen' is " - "aerotolerance. Distinct from all five phenotype nodes in the graph " - "(METPO:1000601/2/3/4/612). NOTE this is the organism-scoped sense; " - "carboxydotrophic.yaml's same-named node reads 'Ability of an ENZYME to " - "function in the presence of O2' and is correctly NOT a trait (#353).", - }, ("environment/ph_delta.yaml", "low_ph_tolerance"): { "grounding": "METPO:1003008", # acidotolerant "why": "'Capacity to grow and survive under acidic external pH' is acidotolerance. " @@ -79,10 +90,38 @@ }, } -# --- the four restatements --------------------------------------------------- +# --- the six restatements --------------------------------------------------- # `into` repoints the node's edges onto an existing node and drops it; `drop` # removes a leaf outright. MERGE: dict[tuple[str, str], dict] = { + ("environment/nacl_delta_low.yaml", "salt_tolerance_breadth"): { + "into": "nacl_delta", + "why": "A FIFTH restatement, caught in review (#360). 'Capacity to grow across a " + "range of ambient NaCl concentrations' against nacl_delta's 'Breadth of the " + "growth-supporting NaCl range' -- the same claim, and nacl_delta is in the " + "same graph already TRAIT and already grounded METPO:1000335. I had " + "retyped it and grounded it METPO:1000622 (halotolerant), which is a " + "DEGREE of tolerance, not a breadth: 1000622 is a halophily preference " + "(sub 1000629) while 1000335 is a delta (sub 1000532/1000534), so the " + "node's existing `is a -> nacl_delta` edge asserted halotolerant sub NaCl " + "delta, a subsumption METPO does not have. The absolute-vs-breadth " + "distinction this migration insists on for pH, missed for salt.", + }, + ("environment/oxygen_preference.yaml", "oxygen_tolerance"): { + "into": "oxygen_preference_trait", + "why": "A SIXTH restatement (#360). METPO:1000601's own definition is 'an " + "organism's oxygen requirements OR TOLERANCE for growth', so 'capacity of " + "a cell to survive exposure to molecular oxygen' is part of what the " + "anchor already says. I had grounded it METPO:1000609 (aerotolerant), " + "which METPO defines as 'does NOT USE O2 for growth but tolerates its " + "presence' -- the aerotolerant-anaerobe phenotype, false of the obligate " + "aerobes this node also covers -- and which is itself sub METPO:1000601, " + "making it a sixth child phenotype in a graph that wires the other four " + "in with `is a` and left this one unlinked. aerotolerant.yaml, the record " + "FOR 1000609, has no such node at all: it models the same biology as " + "detoxification processes. Merging attaches the ROS-defence island to the " + "trait, which unlike a retype is a real connectivity gain.", + }, ("environment/ph_delta_low.yaml", "ph_homeostasis_capacity"): { "into": "cytoplasmic_ph_homeostasis", "why": "'Capacity to balance and maintain cytoplasmic pH under pH stress' is " @@ -150,6 +189,7 @@ def apply(dry_run: bool = False) -> int: for rel, actions in sorted(files.items()): path = TRAITS / rel doc = yaml.safe_load(path.read_text()) + events: list[tuple[str, str]] = [] for kind, node_id, spec in actions: graph = next((g for g in doc.get("causal_graphs") or [] if any(n.get("node_id") == node_id for n in g.get("nodes") or [])), @@ -161,17 +201,26 @@ def apply(dry_run: bool = False) -> int: node = next(n for n in nodes if n["node_id"] == node_id) if kind == "retype": + was = node.get("node_type") node["node_type"] = "TRAIT" node["grounding"] = spec["grounding"] print(f" retype {rel} {node_id} -> TRAIT {spec['grounding']}") + events.append(("retype", f"Retyped node {node_id} from {was} to TRAIT and " + f"grounded it {spec['grounding']}. Issue 352. " + f"{spec['why']}")) elif kind == "reground": if spec["grounding"] is None: - node.pop("grounding", None) + was_grounding = node.pop("grounding", None) print(f" unground {rel} {node_id}") + events.append(("unground", f"Dropped the grounding {was_grounding} from node " + f"{node_id}. Issue 352. {spec['why']}")) else: + was_grounding = node.get("grounding") node["grounding"] = spec["grounding"] print(f" reground {rel} {node_id} -> {spec['grounding']}") + events.append(("reground", f"Regrounded node {node_id} from {was_grounding} to " + f"{spec['grounding']}. Issue 352. {spec['why']}")) else: # merge target = spec.get("into") @@ -197,6 +246,16 @@ def apply(dry_run: bool = False) -> int: graph["edges"] = kept graph["nodes"] = [n for n in nodes if n["node_id"] != node_id] print(f" merge {rel} {node_id} -> {target or '(dropped)'}") + if target: + events.append(("merge", f"Merged node {node_id} into {target} and repointed its " + f"edges. Issue 352. {spec['why']}")) + else: + events.append(("drop", f"Dropped node {node_id} and its edges. Issue 352. " + f"{spec['why']}")) + + for key, changes in events: + record_curation_event(doc, curator="claude", action=ACTIONS[key], + changes=changes, llm_assisted=True, timestamp=TIMESTAMP) if not dry_run: path.write_text(emit_trait_yaml(doc)) From 97bf998e0e76a0566afdfd959589815e16b2371c Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Fri, 7 Aug 2026 23:10:20 -0700 Subject: [PATCH 4/5] Merge the last two claimed retypes: none of the eight were retypes (#352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Third review round on #360. Both remaining retypes are mis-grounded, so the migration is now 0 retypes, 8 merges, 3 regroundings. salt_tolerance was grounded METPO:1000622 (halotolerant) on the reasoning that the record's own METPO:1000625 (slightly halophilic) makes the term "distinct". Verified against data/raw/metpo.owl: 1000622 and 1000625 are DIRECT SIBLINGS under 1000629, and 1000622 means "tolerates high salt but DOES NOT REQUIRE it for growth" while 1000625 means the organism "REQUIRES low to moderate salt for optimal growth". The node asserted of this record the negation of what the record's own term says. Merged into slightly_halophilic_trait. low_ph_tolerance was grounded METPO:1003008 (acidotolerant), defined as tolerating acid "WHILE MAINTAINING OPTIMAL GROWTH NEAR NEUTRAL pH" — which excludes the acidophiles this generic pH-delta record covers. A grounding narrower than the node it labels is a false claim about every organism in the excluded part. Merged into ph_delta_trait. THE TEST THAT FAILED FOUR TIMES was "is this term distinct from the record's own?". A sibling term is maximally distinct and still wrong. The right question is whether the term is COMPATIBLE with the record and no NARROWER than the node. Written into the playbook, because the wrong test is the intuitive one. CORRECTING AN OVERCLAIM OF MY OWN in the same pass: I first wrote that merging salt_tolerance attaches the ectoine island. Measurement says otherwise — the node was already in the trait's component via osmoprotectant_transport -> compatible_solutes -> osmotic_stress, so that merge changes no structure. It is a correctness fix, and saying more would be this migration committing the exact error it was written to catch. MEASURED, NOT ASSERTED, across all eight: retyping changed component structure in ZERO of the eight graphs merging improves three — oxygen_preference 3 components -> 2, ph_delta 3 -> 2, ph_delta_low 5 -> 4 and leaves five unchanged as pure deduplication UNREACHABLE_FROM_TRAIT reads 1296 under either fix. That is #359's point, and the playbook now points at reports/causal_graph_connectivity.tsv rather than the finding counts. Playbook also updated because its canonical "disposition" example WAS salt_tolerance's own description, which this pass merges away. RETYPE kept as an empty table rather than deleted: "we looked and there were none" and "we never modelled retypes" are different claims, and only one is true. 519 tests pass - ruff clean. Co-Authored-By: Claude Opus 5 --- conf/causal_graph_audit_baseline.tsv | 12 +- conf/evidence_snippet_baseline.tsv | 6 +- data/traits/environment/nacl_delta_low.yaml | 2 +- .../traits/environment/oxygen_preference.yaml | 2 +- data/traits/environment/ph_delta.yaml | 24 ++-- data/traits/environment/ph_delta_high.yaml | 2 +- data/traits/environment/ph_delta_low.yaml | 2 +- data/traits/environment/psychrotolerant.yaml | 2 +- .../environment/slightly_halophilic.yaml | 30 +++-- data/traits/morphology/non_spore_forming.yaml | 2 +- data/traits/morphology/sphere_shaped.yaml | 2 +- data/traits/physiology/catalase_activity.yaml | 2 +- data/traits/physiology/urease_activity.yaml | 2 +- docs/CURATION_PLAYBOOK.md | 36 +++-- ...2026-08-08T060908Z-claude-code-f802c8.yaml | 47 +++++++ pages/browse.html | 2 +- pages/category/ecology.html | 2 +- pages/category/environment.html | 2 +- pages/category/genomics.html | 2 +- pages/category/metabolism.html | 2 +- pages/category/morphology.html | 2 +- pages/category/observation.html | 2 +- pages/category/physiology.html | 2 +- pages/category/quantitative_property.html | 2 +- pages/category/upper.html | 2 +- pages/graph.html | 2 +- pages/traits/environment/nacl_delta_low.html | 4 +- .../traits/environment/oxygen_preference.html | 4 +- pages/traits/environment/ph_delta.html | 12 +- pages/traits/environment/ph_delta_high.html | 4 +- pages/traits/environment/ph_delta_low.html | 4 +- pages/traits/environment/psychrotolerant.html | 4 +- .../environment/slightly_halophilic.html | 14 +- .../traits/morphology/non_spore_forming.html | 4 +- pages/traits/morphology/sphere_shaped.html | 4 +- .../traits/physiology/catalase_activity.html | 4 +- pages/traits/physiology/urease_activity.html | 4 +- pages/umap.html | 2 +- reports/causal_graph_audit.tsv | 12 +- scripts/migrate_disposition_typing.py | 126 ++++++++++++------ 40 files changed, 254 insertions(+), 143 deletions(-) create mode 100644 history/infrastructure/disposition-typing-burndown/2026-08-08T060908Z-claude-code-f802c8.yaml diff --git a/conf/causal_graph_audit_baseline.tsv b/conf/causal_graph_audit_baseline.tsv index 683f4ac9..156f7496 100644 --- a/conf/causal_graph_audit_baseline.tsv +++ b/conf/causal_graph_audit_baseline.tsv @@ -328,9 +328,9 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='respiratory_proton_pumps' label='respiratory proton-pumping enzymes' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_buffering_capacity' label='cytoplasmic buffering capacity' type=CAPACITY — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 @@ -497,9 +497,9 @@ data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_p data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_in_strategy' label='salt-in strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='glycine_betaine' label='glycine betaine' type=CHEMICAL — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 9, 4) — one record, several unrelated mechanisms -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 10 node(s) (sizes: 8, 2) — one record, several unrelated mechanisms data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='c_di_amp' label='cyclic di-AMP' type=CHEMICAL — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='k_import_systems' label='K+ import systems' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='opua_importer' label='compatible-solute importer OpuA' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait diff --git a/conf/evidence_snippet_baseline.tsv b/conf/evidence_snippet_baseline.tsv index c489a5a5..796c103b 100644 --- a/conf/evidence_snippet_baseline.tsv +++ b/conf/evidence_snippet_baseline.tsv @@ -636,7 +636,7 @@ data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:oxygen_terminal_electron_acceptor->aerobic_phenotype[0] MISSING_SNIPPET WARN reference=DOI:10.1371/journal.ppat.1012084 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:reactive_oxygen_species_stress->detoxifying_enzyme_expression[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.00606-23 has no snippet data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis:superoxide_dismutase->oxygen_preference_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s43705-023-00251-7 has no snippet -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:amino_acid_decarboxylase_acid_resistance->low_ph_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms12091774 has no snippet +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:amino_acid_decarboxylase_acid_resistance->ph_delta_trait[0] MISSING_SNIPPET WARN reference=DOI:10.3390/microorganisms12091774 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:cation_proton_antiporter_activity->ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1128/AEM.00569-24 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:f0f1_atpase_activity->ph_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuad033 has no snippet data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility:membrane_lipid_remodeling->proton_permeability[0] MISSING_SNIPPET WARN reference=DOI:10.3389/fmicb.2022.1034164 has no snippet @@ -846,10 +846,10 @@ data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_p data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis:salt_out_compatible_solute_strategy->intracellular_osmotic_balance[0] MISSING_SNIPPET WARN reference=DOI:10.3389/frmbi.2023.1329925 has no snippet data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis:water_activity->salinity_phenotype_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s41559-024-02505-6 has no snippet data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:ect_gene_cluster->ectoine_biosynthesis[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:ectoine->salt_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:ectoine->slightly_halophilic_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:ectoine_biosynthesis->ectoine[0] MISSING_SNIPPET WARN reference=DOI:10.1128/aem.01905-23 has no snippet data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:na_k_transcription->ion_homeostasis[0] MISSING_SNIPPET WARN reference=DOI:10.1038/s42003-022-04319-3 has no snippet -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:osmoprotectant_transport->salt_tolerance[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuy026 has no snippet +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation:osmoprotectant_transport->slightly_halophilic_trait[0] MISSING_SNIPPET WARN reference=DOI:10.1093/femsre/fuy026 has no snippet data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance:aquaporin_water_channel->facilitated_water_diffusion[0] MISSING_SNIPPET WARN reference=DOI:10.1186/s40168-024-01817-w has no snippet data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance:c_di_amp->k_import_systems[0] MISSING_SNIPPET WARN reference=DOI:10.1128/mmbr.00181-23 has no snippet data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance:c_di_amp->opua_importer[0] MISSING_SNIPPET WARN reference=DOI:10.1128/mmbr.00181-23 has no snippet diff --git a/data/traits/environment/nacl_delta_low.yaml b/data/traits/environment/nacl_delta_low.yaml index f38f8861..504efeff 100644 --- a/data/traits/environment/nacl_delta_low.yaml +++ b/data/traits/environment/nacl_delta_low.yaml @@ -174,7 +174,7 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: MERGE_CAUSAL_NODE changes: 'Merged node salt_tolerance_breadth into nacl_delta and repointed its edges. diff --git a/data/traits/environment/oxygen_preference.yaml b/data/traits/environment/oxygen_preference.yaml index 56e2e45a..596ddb19 100644 --- a/data/traits/environment/oxygen_preference.yaml +++ b/data/traits/environment/oxygen_preference.yaml @@ -296,7 +296,7 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: MERGE_CAUSAL_NODE changes: 'Merged node oxygen_tolerance into oxygen_preference_trait and repointed diff --git a/data/traits/environment/ph_delta.yaml b/data/traits/environment/ph_delta.yaml index 97dd491c..1cf29ad2 100644 --- a/data/traits/environment/ph_delta.yaml +++ b/data/traits/environment/ph_delta.yaml @@ -70,11 +70,6 @@ causal_graphs: node_type: PATHWAY description: Decarboxylase systems that consume intracellular protons and export amines under acid stress. - - node_id: low_ph_tolerance - label: low-pH tolerance - node_type: TRAIT - description: Capacity to grow and survive under acidic external pH. - grounding: METPO:1003008 - node_id: oxidative_phosphorylation label: oxidative phosphorylation node_type: BIOLOGICAL_PROCESS @@ -149,7 +144,7 @@ causal_graphs: predicate_id: RO:0002212 - subject: amino_acid_decarboxylase_acid_resistance predicate: increases - object: low_ph_tolerance + object: ph_delta_trait description: Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance. evidence: @@ -217,10 +212,17 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. - Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. - The record is METPO:1000232 (pH delta), so no collision. + action: MERGE_CAUSAL_NODE + changes: 'Merged node low_ph_tolerance into ph_delta_trait and repointed its edges. + Issue 352. An EIGHTH restatement (#360). I had grounded it METPO:1003008 (acidotolerant) + and claimed ''no collision'' with the record''s METPO:1000232 (pH delta). No collision, + but the wrong SCOPE: 1003008 is defined as tolerating acid ''WHILE MAINTAINING + OPTIMAL GROWTH NEAR NEUTRAL pH'', which excludes the acidophiles this generic + pH-delta record covers. A grounding narrower than the node it labels is a false + claim about every organism in the excluded part. Also a pure sink. Merging repoints + amino_acid_decarboxylase_acid_resistance onto ph_delta_trait, which reads correctly: + an acid-resistance system widens the growth-supporting pH range, and a pH delta + IS that range.' llm_assisted: true diff --git a/data/traits/environment/ph_delta_high.yaml b/data/traits/environment/ph_delta_high.yaml index e0126474..dea530fd 100644 --- a/data/traits/environment/ph_delta_high.yaml +++ b/data/traits/environment/ph_delta_high.yaml @@ -286,7 +286,7 @@ curation_history: this record''s own ph_delta_high_trait, so it takes the same METPO:1000478; merging the two nodes is tracked in issue 352.' llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: REGROUND_CAUSAL_NODE changes: 'Regrounded node growth_external_ph_5_5_9 from METPO:1000478 to METPO:1000332. diff --git a/data/traits/environment/ph_delta_low.yaml b/data/traits/environment/ph_delta_low.yaml index 883ca57e..597faf48 100644 --- a/data/traits/environment/ph_delta_low.yaml +++ b/data/traits/environment/ph_delta_low.yaml @@ -194,7 +194,7 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: MERGE_CAUSAL_NODE changes: Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis and diff --git a/data/traits/environment/psychrotolerant.yaml b/data/traits/environment/psychrotolerant.yaml index 59826cf4..58133222 100644 --- a/data/traits/environment/psychrotolerant.yaml +++ b/data/traits/environment/psychrotolerant.yaml @@ -269,7 +269,7 @@ curation_history: is-a BiologicalProcessOrActivity. The replacements are proposed in proposals/metpo_traitmech_v8 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: DROP_CAUSAL_NODE changes: Dropped node growth_at_4c and its edges. Issue 352. 'Ability to grow at diff --git a/data/traits/environment/slightly_halophilic.yaml b/data/traits/environment/slightly_halophilic.yaml index f6aefb88..405a88f0 100644 --- a/data/traits/environment/slightly_halophilic.yaml +++ b/data/traits/environment/slightly_halophilic.yaml @@ -43,11 +43,6 @@ causal_graphs: label: osmoprotectant transport node_type: MOLECULAR_FUNCTION description: Uptake of compatible solutes such as glycine betaine. - - node_id: salt_tolerance - label: salt tolerance - node_type: TRAIT - description: Capacity to grow and survive under elevated salinity / salt stress. - grounding: METPO:1000622 - node_id: ectoine_biosynthesis label: ectoine biosynthesis node_type: BIOLOGICAL_PROCESS @@ -132,7 +127,7 @@ causal_graphs: predicate_id: RO:0002234 - subject: ectoine predicate: increases - object: salt_tolerance + object: slightly_halophilic_trait description: Accumulation of ectoine as a compatible solute increases salt tolerance. evidence: - reference: DOI:10.1128/aem.01905-23 @@ -141,7 +136,7 @@ causal_graphs: predicate_id: RO:0002213 - subject: osmoprotectant_transport predicate: increases - object: salt_tolerance + object: slightly_halophilic_trait description: Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance. evidence: @@ -275,11 +270,20 @@ curation_history: proposed in proposals/metpo_traitmech_v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude - action: RETYPE_CAUSAL_NODE - changes: Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. - Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. - The record is METPO:1000625 (slightly halophilic), so this is a distinct term - rather than a restatement of the anchor. + action: MERGE_CAUSAL_NODE + changes: 'Merged node salt_tolerance into slightly_halophilic_trait and repointed + its edges. Issue 352. A SEVENTH restatement, caught in the third review round + (#360). I had grounded it METPO:1000622 (halotolerant), reasoning that the record + is METPO:1000625 (slightly halophilic) so the term is ''distinct''. It is distinct + in the worst way: 1000622 and 1000625 are DIRECT SIBLINGS under 1000629 (halophily + preference), and 1000622 means ''tolerates high salt but DOES NOT REQUIRE it for + growth'' while 1000625 means the organism ''REQUIRES low to moderate salt for + optimal growth''. So the node asserted of this record the negation of what the + record''s own term says. Distinct is not the test; compatible is. NO CONNECTIVITY + CLAIM HERE: the node was already in the trait''s component via osmoprotectant_transport + -> compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 components + and is a correctness fix, not a structural one. METPO has no generic salt-tolerance + disposition to reground to -- filed as a proposal.' llm_assisted: true diff --git a/data/traits/morphology/non_spore_forming.yaml b/data/traits/morphology/non_spore_forming.yaml index 9c492019..cc68661a 100644 --- a/data/traits/morphology/non_spore_forming.yaml +++ b/data/traits/morphology/non_spore_forming.yaml @@ -222,7 +222,7 @@ curation_history: changes: Grounded 5 causal-edge predicate_id field(s) via mappings/predicate_grounding.tsv (biolink:causes×2, METPO:2007400×2, RO:0002212×1). llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: MERGE_CAUSAL_NODE changes: Merged node loss_sporulation_capacity into non_spore_forming_trait and diff --git a/data/traits/morphology/sphere_shaped.yaml b/data/traits/morphology/sphere_shaped.yaml index cf78b7d7..baafc056 100644 --- a/data/traits/morphology/sphere_shaped.yaml +++ b/data/traits/morphology/sphere_shaped.yaml @@ -243,7 +243,7 @@ curation_history: not enablement. Needs GENE_OR_PROTEIN added to `transports`'' subject_types, which is a deliberate widening recorded there.' llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: MERGE_CAUSAL_NODE changes: Merged node elongation_capacity into lateral_elongation and repointed its diff --git a/data/traits/physiology/catalase_activity.yaml b/data/traits/physiology/catalase_activity.yaml index e1ba0227..4909857a 100644 --- a/data/traits/physiology/catalase_activity.yaml +++ b/data/traits/physiology/catalase_activity.yaml @@ -263,7 +263,7 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: UNGROUND_CAUSAL_NODE changes: 'Dropped the grounding GO:0004096 from node catalase. Issue 352. GO:0004096 diff --git a/data/traits/physiology/urease_activity.yaml b/data/traits/physiology/urease_activity.yaml index aed4c8de..86e2b7a1 100644 --- a/data/traits/physiology/urease_activity.yaml +++ b/data/traits/physiology/urease_activity.yaml @@ -243,7 +243,7 @@ curation_history: or activity'; the METPO replacements are proposed in proposals/metpo_traitmech_v8 and v9 and are placeholder ids until METPO mints them. llm_assisted: true -- timestamp: '2026-08-08T03:00:00Z' +- timestamp: '2026-08-08T05:00:00Z' curator: claude action: UNGROUND_CAUSAL_NODE changes: 'Dropped the grounding GO:0009039 from node urease. Issue 352. GO:0009039 diff --git a/docs/CURATION_PLAYBOOK.md b/docs/CURATION_PLAYBOOK.md index 961fa4f4..27f286aa 100644 --- a/docs/CURATION_PLAYBOOK.md +++ b/docs/CURATION_PLAYBOOK.md @@ -154,11 +154,11 @@ node's **description** reads as an organism disposition. The count is at **zero** (#352), so a new one fails `just qc`. The distinction is not "does the word *capacity* appear". Of the corpus's -24 `CAPACITY` nodes, #352 retyped or merged 8 and deliberately left 16: +24 `CAPACITY` nodes, #352 merged 8 and deliberately left 16: | sense | examples | type | |---|---|---| -| an organism's **disposition** — what it can do | *"Capacity to grow and survive under elevated salinity"*, *"Ability to grow at 4 C"* | **`TRAIT`** | +| an organism's **disposition** — what it can do | *"Capacity of a cell to survive exposure to molecular oxygen"*, *"Ability to grow at 4 C"* | **`TRAIT`** | | a **reservoir or quantity** | `reducing_power` (a pool of reductants), `cytoplasmic_buffering_capacity` (*"Capacity of cytoplasmic buffers to absorb pH fluctuations"*), `swimming_velocity`, `metabolic_versatility` | **`CAPACITY`** | A buffer has a capacity; so does a battery. Neither is something an @@ -168,18 +168,32 @@ a cell / organism / bacterium / strain to …* — rather than matching bare **Ground it, and ground it to something the graph does not already have.** Every `TRAIT` node in the corpus is grounded, so a retype owes a grounding. -Requiring one is also the test that catches the commonest mistake here: if -the only correct grounding is the term the record itself carries, the node -is **restating its anchor**, not mistyped. Four of #352's eight were exactly -that, and three of those had the node they restate sitting in the same -graph, already correctly typed — they were merged, not retyped. +Requiring one is also the test that catches the commonest mistake here, and +it caught **all eight** of #352's: every one of them needed a grounding that +either restated the record, contradicted it, or was narrower than the node. +#352 retyped **nothing** in the end; all eight were merged. + +Note what the test is NOT. "Is this term distinct from the record's own?" +passed four nodes that later failed — `salt_tolerance` was grounded +`METPO:1000622`, a *direct sibling* of its record's `METPO:1000625` under +`METPO:1000629`, which is maximally distinct and asserts the negation of the +record ("does not require salt" against "requires salt"). Ask instead whether +the term is **compatible** with the record and **no narrower** than the node. **Do not read a fall in `UNREACHABLE_FROM_TRAIT` as connectivity.** A retype creates a new anchor, so every node in that island stops being -reported while the island stays exactly as disconnected as before. #352's -retypes moved it 1303 → 1296 with `FRAGMENTED_GRAPH` flat at 218 — all -anchor effect, no connectivity. `FRAGMENTED_GRAPH` is the honest metric -(#359). +reported while the island stays exactly as disconnected as before. #352 +moved it 1303 → 1296, and moved it there **identically** whether its nodes +were retyped or merged — which is what proves the count cannot see the +difference. + +`FRAGMENTED_GRAPH`'s *count* cannot either: it reports one finding per split +graph however many pieces that graph is in, so it sat flat at 218 through all +of it. What separates them is component **structure**, now measured per graph +in `reports/causal_graph_connectivity.tsv` (#359). Retyping changed it in +**zero** of #352's eight graphs; merging improved three (`oxygen_preference` +3 components → 2, `ph_delta` 3 → 2, `ph_delta_low` 5 → 4) and left five +unchanged as pure deduplication. Quote that table, not the finding counts. ### `enables` needs a process-or-activity object diff --git a/history/infrastructure/disposition-typing-burndown/2026-08-08T060908Z-claude-code-f802c8.yaml b/history/infrastructure/disposition-typing-burndown/2026-08-08T060908Z-claude-code-f802c8.yaml new file mode 100644 index 00000000..85950200 --- /dev/null +++ b/history/infrastructure/disposition-typing-burndown/2026-08-08T060908Z-claude-code-f802c8.yaml @@ -0,0 +1,47 @@ +history_version: 1 +target: + kind: infrastructure + path: scripts/migrate_disposition_typing.py + slug: disposition-typing-burndown +session: + id: 2026-08-08T060908Z-claude-code-f802c8 + timestamp: '2026-08-08T06:09:08Z' + actors: + - type: ai_agent + name: claude-code +links: + issues: + - https://github.com/CultureBotAI/TraitMech/issues/352 + prs: + - https://github.com/CultureBotAI/TraitMech/pull/360 +events: +- type: EDIT + outcome: changed + sections: + - causal_graphs + - grounding + summary: 'Third review round takes the retype count to zero: all eight were restatements' + details: 'Review found the last two retypes mis-grounded as well, so the migration is now + 0 retypes, 8 merges, 3 regroundings. salt_tolerance had been grounded METPO:1000622 (halotolerant) + on the reasoning that the record''s own METPO:1000625 (slightly halophilic) makes it distinct; + verified against data/raw/metpo.owl, 1000622 and 1000625 are DIRECT SIBLINGS under 1000629, + and 1000622 means tolerates high salt but does not require it while 1000625 means requires + low to moderate salt for optimal growth - so the node asserted of the record the negation + of the record''s own term. Distinct is not the test, compatible is, and that wrong test + passed all four nodes that later failed. Merged into slightly_halophilic_trait. low_ph_tolerance + had been grounded METPO:1003008 (acidotolerant), whose definition is tolerating acid WHILE + MAINTAINING OPTIMAL GROWTH NEAR NEUTRAL pH, which excludes the acidophiles the generic + pH-delta record covers; a grounding narrower than the node it labels is a false claim + about every organism in the excluded part. Merged into ph_delta_trait. Corrected an overclaim + of my own in the same pass: I had written that merging salt_tolerance attaches the ectoine + island, and measurement showed the node was already in the trait''s component via osmoprotectant_transport + to compatible_solutes to osmotic_stress, so that merge is a correctness fix with no structural + effect. Measured all eight rather than asserting: retyping changed component structure + in ZERO of the eight graphs; merging improves three (oxygen_preference 3 components to + 2, ph_delta 3 to 2, ph_delta_low 5 to 4) and leaves five unchanged as pure deduplication. + UNREACHABLE_FROM_TRAIT reads 1296 under either fix, which is why issue 359 exists and + why the playbook now points at reports/causal_graph_connectivity.tsv instead of the finding + counts. Playbook updated: its canonical disposition example was salt_tolerance''s own + description, which this pass merges away. RETYPE table kept but empty, because we looked + and found none is a different claim from we never modelled retypes. 519 tests pass, qc + green.' diff --git a/pages/browse.html b/pages/browse.html index 33121f88..faf6b13d 100644 --- a/pages/browse.html +++ b/pages/browse.html @@ -103,7 +103,7 @@

    QUANTITATIVE_PROPERTY

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/ecology.html b/pages/category/ecology.html index 99f0d4ba..b92e2d5f 100644 --- a/pages/category/ecology.html +++ b/pages/category/ecology.html @@ -256,7 +256,7 @@

    ECOLOGY (26)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/environment.html b/pages/category/environment.html index a28ef167..c1f55033 100644 --- a/pages/category/environment.html +++ b/pages/category/environment.html @@ -1016,7 +1016,7 @@

    ENVIRONMENT (121)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/genomics.html b/pages/category/genomics.html index 624db9cf..f4ee952d 100644 --- a/pages/category/genomics.html +++ b/pages/category/genomics.html @@ -200,7 +200,7 @@

    GENOMICS (19)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/metabolism.html b/pages/category/metabolism.html index 36dd884d..ecee7ff3 100644 --- a/pages/category/metabolism.html +++ b/pages/category/metabolism.html @@ -1192,7 +1192,7 @@

    METABOLISM (143)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/morphology.html b/pages/category/morphology.html index 82f607a7..ba02e326 100644 --- a/pages/category/morphology.html +++ b/pages/category/morphology.html @@ -752,7 +752,7 @@

    MORPHOLOGY (88)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/observation.html b/pages/category/observation.html index 02115a52..caa72157 100644 --- a/pages/category/observation.html +++ b/pages/category/observation.html @@ -208,7 +208,7 @@

    OBSERVATION (20)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/physiology.html b/pages/category/physiology.html index 31e3f367..19d2d759 100644 --- a/pages/category/physiology.html +++ b/pages/category/physiology.html @@ -408,7 +408,7 @@

    PHYSIOLOGY (45)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/quantitative_property.html b/pages/category/quantitative_property.html index 54f51641..6bf431f5 100644 --- a/pages/category/quantitative_property.html +++ b/pages/category/quantitative_property.html @@ -104,7 +104,7 @@

    QUANTITATIVE_PROPERTY (7)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/category/upper.html b/pages/category/upper.html index 80ef6f50..abb4734c 100644 --- a/pages/category/upper.html +++ b/pages/category/upper.html @@ -112,7 +112,7 @@

    UPPER (8)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/graph.html b/pages/graph.html index 8c2c8859..8b7f2afe 100644 --- a/pages/graph.html +++ b/pages/graph.html @@ -239,7 +239,7 @@

    Trait graph layout (sfdp)

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/nacl_delta_low.html b/pages/traits/environment/nacl_delta_low.html index f5ed1eb5..63af97b0 100644 --- a/pages/traits/environment/nacl_delta_low.html +++ b/pages/traits/environment/nacl_delta_low.html @@ -421,7 +421,7 @@

    Curation history

  • - · + · MERGE_CAUSAL_NODE · claude

    Merged node salt_tolerance_breadth into nacl_delta and repointed its edges. Issue 352. A FIFTH restatement, caught in review (#360). 'Capacity to grow across a range of ambient NaCl concentrations' against nacl_delta's 'Breadth of the growth-supporting NaCl range' -- the same claim, and nacl_delta is in the same graph already TRAIT and already grounded METPO:1000335. I had retyped it and grounded it METPO:1000622 (halotolerant), which is a DEGREE of tolerance, not a breadth: 1000622 is a halophily preference (sub 1000629) while 1000335 is a delta (sub 1000532/1000534), so the node's existing `is a -> nacl_delta` edge asserted halotolerant sub NaCl delta, a subsumption METPO does not have. The absolute-vs-breadth distinction this migration insists on for pH, missed for salt.

  • @@ -806,7 +806,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/oxygen_preference.html b/pages/traits/environment/oxygen_preference.html index 5b9dcbea..81ef10f7 100644 --- a/pages/traits/environment/oxygen_preference.html +++ b/pages/traits/environment/oxygen_preference.html @@ -566,7 +566,7 @@

    Curation history

  • - · + · MERGE_CAUSAL_NODE · claude

    Merged node oxygen_tolerance into oxygen_preference_trait and repointed its edges. Issue 352. A SIXTH restatement (#360). METPO:1000601's own definition is 'an organism's oxygen requirements OR TOLERANCE for growth', so 'capacity of a cell to survive exposure to molecular oxygen' is part of what the anchor already says. I had grounded it METPO:1000609 (aerotolerant), which METPO defines as 'does NOT USE O2 for growth but tolerates its presence' -- the aerotolerant-anaerobe phenotype, false of the obligate aerobes this node also covers -- and which is itself sub METPO:1000601, making it a sixth child phenotype in a graph that wires the other four in with `is a` and left this one unlinked. aerotolerant.yaml, the record FOR 1000609, has no such node at all: it models the same biology as detoxification processes. Merging attaches the ROS-defence island to the trait, which unlike a retype is a real connectivity gain.

  • @@ -951,7 +951,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta.html b/pages/traits/environment/ph_delta.html index f94c8885..458a8a18 100644 --- a/pages/traits/environment/ph_delta.html +++ b/pages/traits/environment/ph_delta.html @@ -178,7 +178,7 @@

    Edge evidence

  • amino-acid decarboxylase acid-resistance system increases - low-pH tolerance + pH delta RO:0002213

    Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.

      @@ -479,9 +479,9 @@

      Curation history

    • - · - RETYPE_CAUSAL_NODE · claude -

      Retyped node low_ph_tolerance from CAPACITY to TRAIT and grounded it METPO:1003008. Issue 352. 'Capacity to grow and survive under acidic external pH' is acidotolerance. The record is METPO:1000232 (pH delta), so no collision.

      + · + MERGE_CAUSAL_NODE · claude +

      Merged node low_ph_tolerance into ph_delta_trait and repointed its edges. Issue 352. An EIGHTH restatement (#360). I had grounded it METPO:1003008 (acidotolerant) and claimed 'no collision' with the record's METPO:1000232 (pH delta). No collision, but the wrong SCOPE: 1003008 is defined as tolerating acid 'WHILE MAINTAINING OPTIMAL GROWTH NEAR NEUTRAL pH', which excludes the acidophiles this generic pH-delta record covers. A grounding narrower than the node it labels is a false claim about every organism in the excluded part. Also a pure sink. Merging repoints amino_acid_decarboxylase_acid_resistance onto ph_delta_trait, which reads correctly: an acid-resistance system widens the growth-supporting pH range, and a pH delta IS that range.

    • @@ -841,7 +841,7 @@

      kg-microbe

      } (function() { - var graphs = [{"description": "DOI-backed graph linking the flexibility of pH-homeostasis machinery to the breadth of the pH growth range (delta = max \u2212 min).", "edges": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ph_homeostasis_flexibility", "target": "tolerance_breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "tolerance_breadth", "target": "ph_delta_trait"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "ph_homeostasis", "target": "ph_delta_trait"}, {"description": "Proton motive force generation supports external pH homeostasis.", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "proton_motive_force_generation", "target": "ph_homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "f0f1_atpase_activity", "target": "ph_homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "cation_proton_antiporter_activity", "target": "ph_homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "id": "edge-7", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_remodeling", "target": "proton_permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino_acid_decarboxylase_acid_resistance", "target": "low_ph_tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "oxidative_phosphorylation", "target": "ph_homeostasis"}], "evidence_rows": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "pH-homeostasis flexibility", "target": "pH tolerance breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "pH tolerance breadth", "target": "pH delta"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "edge_id": "edge-3", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "external pH homeostasis", "target": "pH delta"}, {"description": "Proton motive force generation supports external pH homeostasis.", "edge_id": "edge-4", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "proton motive force generation", "target": "external pH homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "F0F1-ATPase activity", "target": "external pH homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "edge_id": "edge-6", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "predicate": "supports", "predicate_id": null, "source": "monovalent cation:H+ antiporter activity", "target": "external pH homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "edge_id": "edge-7", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "saturated membrane fatty acid remodeling", "target": "membrane proton permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino-acid decarboxylase acid-resistance system", "target": "low-pH tolerance"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "edge_id": "edge-9", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "predicate": "supports", "predicate_id": null, "source": "oxidative phosphorylation", "target": "external pH homeostasis"}], "graph_id": "ph_delta_homeostasis_flexibility", "issues": [], "nodes": [{"color": "#e0e7ff", "description": "Decarboxylase systems that consume intracellular protons and export amines under acid stress.", "grounding": null, "id": "amino_acid_decarboxylase_acid_resistance", "is_orphan": false, "label": "amino-acid decarboxylase acid-resistance system", "node_type": "PATHWAY", "xrefs": []}, {"color": "#cffafe", "description": "Exchange of Na+/K+ for H+ to support pH homeostasis, notably under alkaline conditions.", "grounding": null, "id": "cation_proton_antiporter_activity", "is_orphan": false, "label": "monovalent cation:H+ antiporter activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#cffafe", "description": "F-type H+-transporting ATPase coupling proton flux to ATP synthesis/hydrolysis.", "grounding": null, "id": "f0f1_atpase_activity", "is_orphan": false, "label": "F0F1-ATPase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow and survive under acidic external pH.", "grounding": "METPO:1003008", "id": "low_ph_tolerance", "is_orphan": false, "label": "low-pH tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Enrichment of saturated membrane fatty acids that reduces membrane proton permeability.", "grounding": null, "id": "membrane_lipid_remodeling", "is_orphan": false, "label": "saturated membrane fatty acid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Respiratory generation of PMF and proton export contributing to cytoplasmic pH defense.", "grounding": "GO:0006119", "id": "oxidative_phosphorylation", "is_orphan": false, "label": "oxidative phosphorylation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta_trait", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of intracellular pH within viable bounds across external pH variation.", "grounding": null, "id": "ph_homeostasis", "is_orphan": false, "label": "external pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to remodel proton extrusion, K+/H+ antiport, and envelope buffering across a wide span of external pH.", "grounding": null, "id": "ph_homeostasis_flexibility", "is_orphan": false, "label": "pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Establishment of the transmembrane electrochemical proton gradient.", "grounding": null, "id": "proton_motive_force_generation", "is_orphan": false, "label": "proton motive force generation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Passive permeability of the cell membrane to protons.", "grounding": null, "id": "proton_permeability", "is_orphan": false, "label": "membrane proton permeability", "node_type": "QUALITY", "xrefs": []}, {"color": "#ecfccb", "description": "Span between the minimum and maximum growth-supporting external pH.", "grounding": null, "id": "tolerance_breadth", "is_orphan": false, "label": "pH tolerance breadth", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "pH-delta homeostasis flexibility"}]; + var graphs = [{"description": "DOI-backed graph linking the flexibility of pH-homeostasis machinery to the breadth of the pH growth range (delta = max \u2212 min).", "edges": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "id": "edge-1", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ph_homeostasis_flexibility", "target": "tolerance_breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "id": "edge-2", "is_orphan": false, "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "tolerance_breadth", "target": "ph_delta_trait"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-3", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "ph_homeostasis", "target": "ph_delta_trait"}, {"description": "Proton motive force generation supports external pH homeostasis.", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-4", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "proton_motive_force_generation", "target": "ph_homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "id": "edge-5", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "f0f1_atpase_activity", "target": "ph_homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "id": "edge-6", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "cation_proton_antiporter_activity", "target": "ph_homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "id": "edge-7", "is_orphan": false, "predicate": "decreases", "predicate_id": "RO:0002212", "source": "membrane_lipid_remodeling", "target": "proton_permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino_acid_decarboxylase_acid_resistance", "target": "ph_delta_trait"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "oxidative_phosphorylation", "target": "ph_homeostasis"}], "evidence_rows": [{"description": "pH-homeostasis flexibility enables broad pH tolerance.", "edge_id": "edge-1", "evidence": [{"notes": "Supports the breadth of pH homeostasis as the basis of broad pH tolerance.", "reference": "DOI:10.1038/nrmicro2549", "snippet": "pH homeostasis"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "pH-homeostasis flexibility", "target": "pH tolerance breadth"}, {"description": "The breadth between minimum and maximum growth-supporting external pH manifests the pH-delta phenotype.", "edge_id": "edge-2", "evidence": [{"notes": "Supports the bounded proton motive force as the determinant of the pH tolerance breadth.", "reference": "DOI:10.1016/j.tim.2007.02.005", "snippet": "proton motive force"}], "predicate": "manifests as", "predicate_id": "METPO:2007400", "source": "pH tolerance breadth", "target": "pH delta"}, {"description": "External pH homeostasis enables a broader external pH growth breadth.", "edge_id": "edge-3", "evidence": [{"notes": "Na+/H+ and K+/H+ antiporters and proton-pumping systems prevent internal pH from becoming too low, underpinning growth across pH (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "external pH homeostasis", "target": "pH delta"}, {"description": "Proton motive force generation supports external pH homeostasis.", "edge_id": "edge-4", "evidence": [{"notes": "PMF-linked systems regulate internal pH; decarboxylation can store free energy as PMF (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "proton motive force generation", "target": "external pH homeostasis"}, {"description": "F0F1-ATPase activity supports external pH homeostasis.", "edge_id": "edge-5", "evidence": [{"notes": "F0F1-ATPase uses 3-5 protons per ATP and is among systems that prevent internal pH from becoming too low (general bacteria, review).", "reference": "DOI:10.1093/femsre/fuad033"}], "predicate": "supports", "predicate_id": null, "source": "F0F1-ATPase activity", "target": "external pH homeostasis"}, {"description": "Monovalent cation:H+ antiporter activity supports pH homeostasis under alkaline conditions.", "edge_id": "edge-6", "evidence": [{"notes": "Monovalent antiporters exchange Na+/K+ to facilitate proton entry for alkali tolerance (generic transporter class).", "reference": "DOI:10.1128/AEM.00569-24"}], "predicate": "supports", "predicate_id": null, "source": "monovalent cation:H+ antiporter activity", "target": "external pH homeostasis"}, {"description": "Saturated membrane fatty acid remodeling decreases membrane proton permeability.", "edge_id": "edge-7", "evidence": [{"notes": "Membranes enriched in saturated fatty acids reduce proton permeability, minimizing proton influx in acidic environments (generalizable low-pH mechanism).", "reference": "DOI:10.3389/fmicb.2022.1034164"}], "predicate": "decreases", "predicate_id": "RO:0002212", "source": "saturated membrane fatty acid remodeling", "target": "membrane proton permeability"}, {"description": "Amino-acid decarboxylase acid-resistance systems increase low-pH tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Amino-acid decarboxylase systems consume protons and export corresponding amines as a key acid-resistance mechanism (authoritative review).", "reference": "DOI:10.3390/microorganisms12091774"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "amino-acid decarboxylase acid-resistance system", "target": "pH delta"}, {"description": "Oxidative phosphorylation upregulation supports proton export and resistance to cytoplasmic acidification.", "edge_id": "edge-9", "evidence": [{"notes": "Increased oxidative phosphorylation generates PMF and a higher proton export rate, causally helping cells resist decreases in cytoplasmic pH.", "reference": "DOI:10.3390/microorganisms12081565"}], "predicate": "supports", "predicate_id": null, "source": "oxidative phosphorylation", "target": "external pH homeostasis"}], "graph_id": "ph_delta_homeostasis_flexibility", "issues": [], "nodes": [{"color": "#e0e7ff", "description": "Decarboxylase systems that consume intracellular protons and export amines under acid stress.", "grounding": null, "id": "amino_acid_decarboxylase_acid_resistance", "is_orphan": false, "label": "amino-acid decarboxylase acid-resistance system", "node_type": "PATHWAY", "xrefs": []}, {"color": "#cffafe", "description": "Exchange of Na+/K+ for H+ to support pH homeostasis, notably under alkaline conditions.", "grounding": null, "id": "cation_proton_antiporter_activity", "is_orphan": false, "label": "monovalent cation:H+ antiporter activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#cffafe", "description": "F-type H+-transporting ATPase coupling proton flux to ATP synthesis/hydrolysis.", "grounding": null, "id": "f0f1_atpase_activity", "is_orphan": false, "label": "F0F1-ATPase activity", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Enrichment of saturated membrane fatty acids that reduces membrane proton permeability.", "grounding": null, "id": "membrane_lipid_remodeling", "is_orphan": false, "label": "saturated membrane fatty acid remodeling", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Respiratory generation of PMF and proton export contributing to cytoplasmic pH defense.", "grounding": "GO:0006119", "id": "oxidative_phosphorylation", "is_orphan": false, "label": "oxidative phosphorylation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Breadth of the growth-supporting external pH range.", "grounding": "METPO:1000232", "id": "ph_delta_trait", "is_orphan": false, "label": "pH delta", "node_type": "TRAIT", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of intracellular pH within viable bounds across external pH variation.", "grounding": null, "id": "ph_homeostasis", "is_orphan": false, "label": "external pH homeostasis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Capacity to remodel proton extrusion, K+/H+ antiport, and envelope buffering across a wide span of external pH.", "grounding": null, "id": "ph_homeostasis_flexibility", "is_orphan": false, "label": "pH-homeostasis flexibility", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Establishment of the transmembrane electrochemical proton gradient.", "grounding": null, "id": "proton_motive_force_generation", "is_orphan": false, "label": "proton motive force generation", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#f3f4f6", "description": "Passive permeability of the cell membrane to protons.", "grounding": null, "id": "proton_permeability", "is_orphan": false, "label": "membrane proton permeability", "node_type": "QUALITY", "xrefs": []}, {"color": "#ecfccb", "description": "Span between the minimum and maximum growth-supporting external pH.", "grounding": null, "id": "tolerance_breadth", "is_orphan": false, "label": "pH tolerance breadth", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}], "title": "pH-delta homeostasis flexibility"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -864,7 +864,7 @@

      kg-microbe

      METPO
  • - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_high.html b/pages/traits/environment/ph_delta_high.html index 6242ed51..49db39da 100644 --- a/pages/traits/environment/ph_delta_high.html +++ b/pages/traits/environment/ph_delta_high.html @@ -502,7 +502,7 @@

    Curation history

  • - · + · REGROUND_CAUSAL_NODE · claude

    Regrounded node growth_external_ph_5_5_9 from METPO:1000478 to METPO:1000332. Issue 352. Shared METPO:1000478 with ph_delta_high_trait, but the two say different things: this node is an ABSOLUTE external range ('~5.5-9.0'), while ph_delta_high_trait is a BREADTH ('approximately 5-9 pH units'), which is what a pH DELTA is. 1000478 belongs to the delta; this is a pH range (METPO:1000332).

  • @@ -887,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/ph_delta_low.html b/pages/traits/environment/ph_delta_low.html index 64643872..b2915ec6 100644 --- a/pages/traits/environment/ph_delta_low.html +++ b/pages/traits/environment/ph_delta_low.html @@ -427,7 +427,7 @@

    Curation history

  • - · + · MERGE_CAUSAL_NODE · claude

    Merged node ph_homeostasis_capacity into cytoplasmic_ph_homeostasis and repointed its edges. Issue 352. 'Capacity to balance and maintain cytoplasmic pH under pH stress' is cytoplasmic_ph_homeostasis, which is IN THE SAME GRAPH already typed BIOLOGICAL_PROCESS and grounded GO:0051453. Grounding the capacity node to GO:0051453 would have produced a DUPLICATE_GROUNDING against it.

  • @@ -812,7 +812,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/psychrotolerant.html b/pages/traits/environment/psychrotolerant.html index e96ddb0b..d2f13245 100644 --- a/pages/traits/environment/psychrotolerant.html +++ b/pages/traits/environment/psychrotolerant.html @@ -495,7 +495,7 @@

    Curation history

  • - · + · DROP_CAUSAL_NODE · claude

    Dropped node growth_at_4c and its edges. Issue 352. 'Ability to grow at refrigeration-range low temperature (4 C)' IS METPO:1000618 (psychrotolerant), the record's own term and the grounding of psychrotolerant_trait, which is the node it hangs off. A leaf restating its own parent. The parent keeps two other in-edges (cold_shock_response confers, facultative_lipid_remodeling manifests as), so nothing is stranded.

  • @@ -880,7 +880,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/environment/slightly_halophilic.html b/pages/traits/environment/slightly_halophilic.html index dbb51ef7..39f97188 100644 --- a/pages/traits/environment/slightly_halophilic.html +++ b/pages/traits/environment/slightly_halophilic.html @@ -161,7 +161,7 @@

    Edge evidence

  • ectoine increases - salt tolerance + slightly halophilic RO:0002213

    Accumulation of ectoine as a compatible solute increases salt tolerance.

      @@ -178,7 +178,7 @@

      Edge evidence

    • osmoprotectant transport increases - salt tolerance + slightly halophilic RO:0002213

      Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.

        @@ -512,9 +512,9 @@

        Curation history

      • - · - RETYPE_CAUSAL_NODE · claude -

        Retyped node salt_tolerance from CAPACITY to TRAIT and grounded it METPO:1000622. Issue 352. 'Capacity to grow and survive under elevated salinity' is halotolerance. The record is METPO:1000625 (slightly halophilic), so this is a distinct term rather than a restatement of the anchor.

        + · + MERGE_CAUSAL_NODE · claude +

        Merged node salt_tolerance into slightly_halophilic_trait and repointed its edges. Issue 352. A SEVENTH restatement, caught in the third review round (#360). I had grounded it METPO:1000622 (halotolerant), reasoning that the record is METPO:1000625 (slightly halophilic) so the term is 'distinct'. It is distinct in the worst way: 1000622 and 1000625 are DIRECT SIBLINGS under 1000629 (halophily preference), and 1000622 means 'tolerates high salt but DOES NOT REQUIRE it for growth' while 1000625 means the organism 'REQUIRES low to moderate salt for optimal growth'. So the node asserted of this record the negation of what the record's own term says. Distinct is not the test; compatible is. NO CONNECTIVITY CLAIM HERE: the node was already in the trait's component via osmoprotectant_transport -> compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 components and is a correctness fix, not a structural one. METPO has no generic salt-tolerance disposition to reground to -- filed as a proposal.

      • @@ -874,7 +874,7 @@

        kg-microbe

        } (function() { - var graphs = [{"description": "Evidence-backed causal sketch linking slight halophily to low or moderate NaCl and compatible-solute osmoprotection.", "edges": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low_moderate_nacl", "target": "slightly_halophilic_trait"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "id": "edge-2", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_moderate_nacl", "target": "osmotic_stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "id": "edge-3", "is_orphan": false, "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible_solutes", "target": "osmotic_stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "id": "edge-4", "is_orphan": false, "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant_transport", "target": "compatible_solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-5", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ect_gene_cluster", "target": "ectoine_biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine_biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt_tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant_transport", "target": "salt_tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "na_k_transcription", "target": "ion_homeostasis"}], "evidence_rows": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "edge_id": "edge-1", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low to moderate NaCl", "target": "slightly halophilic"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "edge_id": "edge-2", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low to moderate NaCl", "target": "osmotic stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "edge_id": "edge-3", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible solutes", "target": "osmotic stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "edge_id": "edge-4", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant transport", "target": "compatible solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "edge_id": "edge-5", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "ectABC/ectBACD gene cluster", "target": "ectoine biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "edge_id": "edge-6", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "salt tolerance"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant transport", "target": "salt tolerance"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "edge_id": "edge-9", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "predicate": "supports", "predicate_id": null, "source": "Na+/K+ transcriptional induction", "target": "ion homeostasis during salt stress"}], "graph_id": "slight_halophile_low_salt_osmoadaptation", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Organic osmoprotectants accumulated or synthesized in response to salt.", "grounding": "CHEBI:25728", "id": "compatible_solutes", "is_orphan": false, "label": "compatible solutes", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Ectoine biosynthesis operon encoding the ectoine pathway enzymes.", "grounding": null, "id": "ect_gene_cluster", "is_orphan": false, "label": "ectABC/ectBACD gene cluster", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "A major compatible solute (osmolyte) accumulated under salt stress.", "grounding": "CHEBI:27592", "id": "ectoine", "is_orphan": false, "label": "ectoine", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Biosynthesis of the compatible solute ectoine via the ectABC/ectBACD pathway.", "grounding": "GO:0019491", "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of Na+/K+ balance under salt stress.", "grounding": null, "id": "ion_homeostasis", "is_orphan": false, "label": "ion homeostasis during salt stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "Salinity range below that of moderate and extreme halophiles.", "grounding": null, "id": "low_moderate_nacl", "is_orphan": false, "label": "low to moderate NaCl", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#ecfccb", "description": "Coordinated induction of sodium/potassium transport transcription under salt stress.", "grounding": null, "id": "na_k_transcription", "is_orphan": false, "label": "Na+/K+ transcriptional induction", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Uptake of compatible solutes such as glycine betaine.", "grounding": null, "id": "osmoprotectant_transport", "is_orphan": false, "label": "osmoprotectant transport", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Osmotic challenge caused by environmental salt.", "grounding": "GO:0006970", "id": "osmotic_stress", "is_orphan": false, "label": "osmotic stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Capacity to grow and survive under elevated salinity / salt stress.", "grounding": "METPO:1000622", "id": "salt_tolerance", "is_orphan": false, "label": "salt tolerance", "node_type": "TRAIT", "xrefs": []}, {"color": "#dbeafe", "description": "Optimal growth requires low to moderate salt concentrations.", "grounding": "METPO:1000625", "id": "slightly_halophilic_trait", "is_orphan": false, "label": "slightly halophilic", "node_type": "TRAIT", "xrefs": []}], "title": "Slight halophile low-salt osmoadaptation mechanism"}]; + var graphs = [{"description": "Evidence-backed causal sketch linking slight halophily to low or moderate NaCl and compatible-solute osmoprotection.", "edges": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "id": "edge-1", "is_orphan": false, "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low_moderate_nacl", "target": "slightly_halophilic_trait"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "id": "edge-2", "is_orphan": false, "predicate": "causes", "predicate_id": "biolink:causes", "source": "low_moderate_nacl", "target": "osmotic_stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "id": "edge-3", "is_orphan": false, "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible_solutes", "target": "osmotic_stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "id": "edge-4", "is_orphan": false, "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant_transport", "target": "compatible_solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-5", "is_orphan": false, "predicate": "enables", "predicate_id": "RO:0002327", "source": "ect_gene_cluster", "target": "ectoine_biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-6", "is_orphan": false, "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine_biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "id": "edge-7", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "slightly_halophilic_trait"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "id": "edge-8", "is_orphan": false, "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant_transport", "target": "slightly_halophilic_trait"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "id": "edge-9", "is_orphan": false, "predicate": "supports", "predicate_id": null, "source": "na_k_transcription", "target": "ion_homeostasis"}], "evidence_rows": [{"description": "Slight halophily is a salt-growth preference at lower salinity than moderate or extreme halophily.", "edge_id": "edge-1", "evidence": [{"notes": "Review supports halophily as a continuum of salt growth requirements.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "minimum salt concentration required for growth"}], "predicate": "confers", "predicate_id": "METPO:2007700", "source": "low to moderate NaCl", "target": "slightly halophilic"}, {"description": "Even lower salinity preferences involve osmotic adjustment to environmental salt.", "edge_id": "edge-2", "evidence": [{"notes": "Review describes growth in relation to minimum, optimum, and upper salt limits.", "reference": "DOI:10.1186/1746-1448-4-2", "snippet": "salt relationships"}], "predicate": "causes", "predicate_id": "biolink:causes", "source": "low to moderate NaCl", "target": "osmotic stress"}, {"description": "Compatible solutes provide osmotic balance without disrupting metabolism.", "edge_id": "edge-3", "evidence": [{"notes": "Supports compatible solutes as non-disruptive osmoprotectants.", "reference": "DOI:10.1371/journal.pone.0168818", "snippet": "do not disturb the cell\u0027s metabolism"}], "predicate": "mitigates", "predicate_id": "METPO:2007407", "source": "compatible solutes", "target": "osmotic stress"}, {"description": "Uptake systems can accumulate compatible solutes for salt adaptation.", "edge_id": "edge-4", "evidence": [{"notes": "Review supports accumulation of organic osmotic solutes in bacterial osmoadaptation.", "reference": "DOI:10.1093/femsre/fuy009", "snippet": "organic osmotic solutes"}], "predicate": "accumulates", "predicate_id": "METPO:2007810", "source": "osmoprotectant transport", "target": "compatible solutes"}, {"description": "The ect gene cluster encodes the enzymes that carry out ectoine biosynthesis.", "edge_id": "edge-5", "evidence": [{"notes": "ectoine biosynthesis genes are denoted by ectABC; ectBACD up-regulated as an osmoadaptation system.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "enables", "predicate_id": "RO:0002327", "source": "ectABC/ectBACD gene cluster", "target": "ectoine biosynthesis"}, {"description": "Ectoine biosynthesis produces the compatible solute ectoine.", "edge_id": "edge-6", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte via the ectABC pathway.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "has output", "predicate_id": "RO:0002234", "source": "ectoine biosynthesis", "target": "ectoine"}, {"description": "Accumulation of ectoine as a compatible solute increases salt tolerance.", "edge_id": "edge-7", "evidence": [{"notes": "Wild-type accumulates ectoine as its major osmolyte while the ectABC-deleted strain is salt-sensitive.", "reference": "DOI:10.1128/aem.01905-23"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "ectoine", "target": "slightly halophilic"}, {"description": "Uptake of compatible solutes is a general salt-out osmoadaptation strategy that raises salt tolerance.", "edge_id": "edge-8", "evidence": [{"notes": "Salt-out strategists exclude salt and/or synthesize or uptake compatible solutes (e.g. glycine betaine); dominant strategy in many halophilic bacteria.", "reference": "DOI:10.1093/femsre/fuy026"}], "predicate": "increases", "predicate_id": "RO:0002213", "source": "osmoprotectant transport", "target": "slightly halophilic"}, {"description": "Coordinated induction of Na+/K+ transcription supports ion homeostasis during salt stress.", "edge_id": "edge-9", "evidence": [{"notes": "Coordinated induction of Na+/K+ transcription and ectoine, proline, and betaine biosynthesis under salt stress.", "reference": "DOI:10.1038/s42003-022-04319-3"}], "predicate": "supports", "predicate_id": null, "source": "Na+/K+ transcriptional induction", "target": "ion homeostasis during salt stress"}], "graph_id": "slight_halophile_low_salt_osmoadaptation", "issues": [], "nodes": [{"color": "#fef3c7", "description": "Organic osmoprotectants accumulated or synthesized in response to salt.", "grounding": "CHEBI:25728", "id": "compatible_solutes", "is_orphan": false, "label": "compatible solutes", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#f3e8ff", "description": "Ectoine biosynthesis operon encoding the ectoine pathway enzymes.", "grounding": null, "id": "ect_gene_cluster", "is_orphan": false, "label": "ectABC/ectBACD gene cluster", "node_type": "GENE_OR_PROTEIN", "xrefs": []}, {"color": "#fef3c7", "description": "A major compatible solute (osmolyte) accumulated under salt stress.", "grounding": "CHEBI:27592", "id": "ectoine", "is_orphan": false, "label": "ectoine", "node_type": "CHEMICAL", "xrefs": []}, {"color": "#ecfccb", "description": "Biosynthesis of the compatible solute ectoine via the ectABC/ectBACD pathway.", "grounding": "GO:0019491", "id": "ectoine_biosynthesis", "is_orphan": false, "label": "ectoine biosynthesis", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#ecfccb", "description": "Maintenance of Na+/K+ balance under salt stress.", "grounding": null, "id": "ion_homeostasis", "is_orphan": false, "label": "ion homeostasis during salt stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dcfce7", "description": "Salinity range below that of moderate and extreme halophiles.", "grounding": null, "id": "low_moderate_nacl", "is_orphan": false, "label": "low to moderate NaCl", "node_type": "ENVIRONMENTAL_FACTOR", "xrefs": []}, {"color": "#ecfccb", "description": "Coordinated induction of sodium/potassium transport transcription under salt stress.", "grounding": null, "id": "na_k_transcription", "is_orphan": false, "label": "Na+/K+ transcriptional induction", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#cffafe", "description": "Uptake of compatible solutes such as glycine betaine.", "grounding": null, "id": "osmoprotectant_transport", "is_orphan": false, "label": "osmoprotectant transport", "node_type": "MOLECULAR_FUNCTION", "xrefs": []}, {"color": "#ecfccb", "description": "Osmotic challenge caused by environmental salt.", "grounding": "GO:0006970", "id": "osmotic_stress", "is_orphan": false, "label": "osmotic stress", "node_type": "BIOLOGICAL_PROCESS", "xrefs": []}, {"color": "#dbeafe", "description": "Optimal growth requires low to moderate salt concentrations.", "grounding": "METPO:1000625", "id": "slightly_halophilic_trait", "is_orphan": false, "label": "slightly halophilic", "node_type": "TRAIT", "xrefs": []}], "title": "Slight halophile low-salt osmoadaptation mechanism"}]; graphs.forEach(function(graph, index) { renderPathograph("pathograph-" + (index + 1), graph); }); @@ -897,7 +897,7 @@

        kg-microbe

        METPO
  • - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/non_spore_forming.html b/pages/traits/morphology/non_spore_forming.html index 8764f47c..56b13616 100644 --- a/pages/traits/morphology/non_spore_forming.html +++ b/pages/traits/morphology/non_spore_forming.html @@ -480,7 +480,7 @@

    Curation history

  • - · + · MERGE_CAUSAL_NODE · claude

    Merged node loss_sporulation_capacity into non_spore_forming_trait and repointed its edges. Issue 352. 'Loss of the capacity to undergo sporulation' IS the record's own trait (METPO:1000872, non-spore forming), so the only correct grounding duplicates the anchor. Collapsing leaves low_spo0a_activity -causes-> non_spore_forming_trait, which is the shape loss_sporulation_genes already uses in this graph.

  • @@ -865,7 +865,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/morphology/sphere_shaped.html b/pages/traits/morphology/sphere_shaped.html index a83804ef..7c943068 100644 --- a/pages/traits/morphology/sphere_shaped.html +++ b/pages/traits/morphology/sphere_shaped.html @@ -504,7 +504,7 @@

    Curation history

  • - · + · MERGE_CAUSAL_NODE · claude

    Merged node elongation_capacity into lateral_elongation and repointed its edges. Issue 352. 'Capacity of a cell to elongate into a rod via sidewall growth' against lateral_elongation's 'Sidewall growth mode that lengthens rods' -- the same claim twice, and both already carried `reduced in -> sphere_shaped_trait`.

  • @@ -889,7 +889,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/catalase_activity.html b/pages/traits/physiology/catalase_activity.html index 5bf0ccc7..649737d9 100644 --- a/pages/traits/physiology/catalase_activity.html +++ b/pages/traits/physiology/catalase_activity.html @@ -519,7 +519,7 @@

    Curation history

  • - · + · UNGROUND_CAUSAL_NODE · claude

    Dropped the grounding GO:0004096 from node catalase. Issue 352. GO:0004096 is 'catalase ACTIVITY' -- a molecular function, which is what catalase_function is. A protein is not its activity, and the graph already says so correctly: catalase -enables-> catalase_function. Dropped from the protein, kept on the function.

  • @@ -904,7 +904,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/traits/physiology/urease_activity.html b/pages/traits/physiology/urease_activity.html index e21b38ad..f158988c 100644 --- a/pages/traits/physiology/urease_activity.html +++ b/pages/traits/physiology/urease_activity.html @@ -502,7 +502,7 @@

    Curation history

  • - · + · UNGROUND_CAUSAL_NODE · claude

    Dropped the grounding GO:0009039 from node urease. Issue 352. GO:0009039 is 'urease ACTIVITY'. Same as catalase: kept on urease_function, dropped from the protein that enables it.

  • @@ -887,7 +887,7 @@

    kg-microbe

    METPO
    - Record as of 2026-08-08 03:00 UTC from + Record as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/pages/umap.html b/pages/umap.html index 05419aba..fae9734d 100644 --- a/pages/umap.html +++ b/pages/umap.html @@ -238,7 +238,7 @@

    Trait embedding space

    METPO
    - Corpus as of 2026-08-08 03:00 UTC from + Corpus as of 2026-08-08 05:00 UTC from METPO 2025-11-25 · 477 TraitRecords · embedding coverage 100.0% diff --git a/reports/causal_graph_audit.tsv b/reports/causal_graph_audit.tsv index 683f4ac9..156f7496 100644 --- a/reports/causal_graph_audit.tsv +++ b/reports/causal_graph_audit.tsv @@ -328,9 +328,9 @@ data/traits/environment/optimum_phenotype_with_numerical_limits.yaml optimum_phe data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='catalase' label='catalase' type=GENE_OR_PROTEIN — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis UNREACHABLE_FROM_TRAIT WARN node_id='hydrogen_peroxide' label='hydrogen peroxide' type=CHEMICAL — in an island with no path to oxygen_preference_trait/aerobic_phenotype/anaerobic_phenotype/microaerophilic_phenotype/facultative_phenotype data/traits/environment/oxygen_preference.yaml oxygen_preference_o2_availability_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 11, 2) — one record, several unrelated mechanisms -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait/low_ph_tolerance -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait/low_ph_tolerance -data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=3 of 12 node(s) (sizes: 8, 2, 2) — one record, several unrelated mechanisms +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='membrane_lipid_remodeling' label='saturated membrane fatty acid remodeling' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_trait +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility UNREACHABLE_FROM_TRAIT WARN node_id='proton_permeability' label='membrane proton permeability' type=QUALITY — in an island with no path to ph_delta_trait +data/traits/environment/ph_delta.yaml ph_delta_homeostasis_flexibility FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_ph_homeostasis' label='cytoplasmic pH homeostasis' type=BIOLOGICAL_PROCESS — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='respiratory_proton_pumps' label='respiratory proton-pumping enzymes' type=GENE_OR_PROTEIN — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 data/traits/environment/ph_delta_high.yaml ph_delta_high_euryphilic_breadth UNREACHABLE_FROM_TRAIT WARN node_id='cytoplasmic_buffering_capacity' label='cytoplasmic buffering capacity' type=CAPACITY — in an island with no path to ph_delta_high_trait/ph_delta/growth_external_ph_5_5_9 @@ -497,9 +497,9 @@ data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_p data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='salt_in_strategy' label='salt-in strategy' type=PATHWAY — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis UNREACHABLE_FROM_TRAIT WARN node_id='glycine_betaine' label='glycine betaine' type=CHEMICAL — in an island with no path to salinity_phenotype_trait/nacl_optimum/nacl_range/nacl_delta data/traits/environment/salinity_phenotype_with_numerical_limits.yaml salinity_phenotype_numerical_axis FRAGMENTED_GRAPH WARN components=2 of 13 node(s) (sizes: 9, 4) — one record, several unrelated mechanisms -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait/salt_tolerance -data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 11 node(s) (sizes: 9, 2) — one record, several unrelated mechanisms +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='ion_homeostasis' label='ion homeostasis during salt stress' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation UNREACHABLE_FROM_TRAIT WARN node_id='na_k_transcription' label='Na+/K+ transcriptional induction' type=BIOLOGICAL_PROCESS — in an island with no path to slightly_halophilic_trait +data/traits/environment/slightly_halophilic.yaml slight_halophile_low_salt_osmoadaptation FRAGMENTED_GRAPH WARN components=2 of 10 node(s) (sizes: 8, 2) — one record, several unrelated mechanisms data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='c_di_amp' label='cyclic di-AMP' type=CHEMICAL — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='k_import_systems' label='K+ import systems' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait data/traits/environment/stenohaline.yaml stenohaline_narrow_salinity_tolerance UNREACHABLE_FROM_TRAIT WARN node_id='opua_importer' label='compatible-solute importer OpuA' type=GENE_OR_PROTEIN — in an island with no path to stenohaline_trait diff --git a/scripts/migrate_disposition_typing.py b/scripts/migrate_disposition_typing.py index abe754b8..e4d536af 100644 --- a/scripts/migrate_disposition_typing.py +++ b/scripts/migrate_disposition_typing.py @@ -3,30 +3,52 @@ #353 shipped the detection and baselined what it found. This is the burn-down. -THE HEADLINE IS THAT ONLY A QUARTER OF THEM WERE RETYPES. #352 framed the fix as -"sweep CAPACITY nodes matching the disposition pattern and retype them", and for -two nodes that is exactly right. For the other six, retyping would have been -wrong in a way that only shows up once you look for the grounding: - - every TRAIT node in the corpus is grounded, and the obvious grounding for - each of those six is either the term its OWN record already carries, or a - term that collides with a node sitting in the same graph. - -Grounding them that way trades a DISPOSITION_MISTYPED for a DUPLICATE_GROUNDING -and calls it progress. What it actually means is that the node RESTATES its -anchor, and in five of the six cases the node it restates is sitting in the -same graph already correctly typed and grounded. Those get merged, not retyped. - -The first pass of this migration called four of them retypes. Review (#360) -found two of those four -- salt_tolerance_breadth and oxygen_tolerance -- to be -restatements as well, each caught by the SAME test the other four failed: the -grounding chosen for them contradicted an edge or a definition the graph -already had. See their entries in MERGE. - -That is #352's own third bullet read strictly: "retype in one pass, GROUNDING +THE HEADLINE IS THAT NONE OF THEM WERE RETYPES. #352 framed the fix as "sweep +CAPACITY nodes matching the disposition pattern and retype them". Not one of the +eight survived the attempt, and the thing that killed each one is the grounding: + + every TRAIT node in the corpus is grounded, so retyping a node forces you to + name the term it IS -- and for all eight, the only available term restates + the record, contradicts it, or is narrower than the node it labels. + +Grounding them anyway trades a DISPOSITION_MISTYPED for a DUPLICATE_GROUNDING, +or for a false claim, and calls it progress. Requiring a grounding is what +exposes that, which is #352's own third bullet read strictly. + +It took three rounds to get here, and the count went 4 -> 2 -> 0: + + round 1 called four retypes and four restatements. + round 2 (#360 review) salt_tolerance_breadth was grounded METPO:1000622 while + keeping `is a -> nacl_delta`, asserting halotolerant sub NaCl-delta; + oxygen_tolerance was grounded METPO:1000609, sub the record's own + METPO:1000601 and false of the obligate aerobes it covers. + round 3 (#360 review) salt_tolerance was grounded METPO:1000622, a DIRECT + SIBLING of the record's METPO:1000625 asserting the negation of it + ("does not require salt" vs "requires salt"); low_ph_tolerance was + grounded METPO:1003008, whose definition excludes the acidophiles + the generic pH-delta record covers. + +The lesson worth keeping: "is this term distinct from the record's own?" is the +WRONG test, and it passed all four of the nodes that later failed. The right +test is whether the term is COMPATIBLE with the record and no NARROWER than the +node -- a sibling term is maximally distinct and still wrong. + +MEASURED, NOT ASSERTED: retyping changed the component structure of ZERO of the +eight graphs -- it only ever added an anchor inside what was already there. +Merging improves three of them (oxygen_preference 3 components -> 2, ph_delta +3 -> 2, ph_delta_low 5 -> 4); the other five are pure deduplication and leave +the component count where it was. Both facts are invisible in +UNREACHABLE_FROM_TRAIT, which reads 1296 either way, and that is why #359 +exists. Saying "eight merges, three of them structural" is the honest claim; +saying "merging attaches the islands" would be this migration making exactly +the kind of overclaim it was written to catch. + +#352's third bullet is what made this findable: "retype in one pass, GROUNDING EACH -- an ungrounded new TRAIT node silently becomes a reachability anchor and makes UNREACHABLE_FROM_TRAIT fall without the graph actually becoming more -connected." Requiring a grounding is what exposes the restatements. +connected." It warns about the anchor effect and suggests requiring a grounding +as the remedy. Requiring one did something better than prevent the anchor: it +made every retype in the sweep fail out loud. CAPACITY IS NOT VESTIGIAL, which the issue left open. 24 nodes carry it; these 8 leave 16, and the survivors are a different sense entirely -- `reducing_power` @@ -59,12 +81,12 @@ # Fixed rather than wall-clock, because pages/ derives its "Corpus as of" stamp # from the latest curation_history entry (#228) and a clock would make every # re-run of this migration produce a different 477-page diff. -TIMESTAMP = "2026-08-08T03:00:00Z" +TIMESTAMP = "2026-08-08T05:00:00Z" # The first pass logged all eleven events as RETYPE_CAUSAL_NODE, including the -# seven that were merges or regroundings. An audit trail that calls a merge a -# retype cannot answer the question it exists to answer, so each kind now gets -# its own label. +# seven that were not retypes at all. An audit trail that calls a merge a retype +# cannot answer the question it exists to answer, so each kind gets its own +# label. RETYPE_CAUSAL_NODE now goes unused, which is the honest outcome. ACTIONS = { "retype": "RETYPE_CAUSAL_NODE", "merge": "MERGE_CAUSAL_NODE", @@ -73,27 +95,49 @@ "unground": "UNGROUND_CAUSAL_NODE", } -# --- the two that really are mistyped dispositions -------------------------- -# Retyped to TRAIT and grounded to a term that is NOT the record's own, which is -# what distinguishes these from the restatements below. +# --- no retypes ------------------------------------------------------------- +# THIS TABLE IS EMPTY, AND THAT IS THE FINDING. #352 framed the whole issue as +# a retype sweep; three rounds of review took the retype count 4 -> 2 -> 0. Each +# round failed the same test: the grounding a node needs in order to BE a trait +# turned out to restate, contradict, or narrow the record it sits in. Kept as an +# empty table rather than deleted, because "we looked and there were none" and +# "we never modelled retypes" are different claims and only one is true. RETYPE: dict[tuple[str, str], dict] = { - ("environment/slightly_halophilic.yaml", "salt_tolerance"): { - "grounding": "METPO:1000622", # halotolerant - "why": "'Capacity to grow and survive under elevated salinity' is halotolerance. " - "The record is METPO:1000625 (slightly halophilic), so this is a distinct " - "term rather than a restatement of the anchor.", - }, - ("environment/ph_delta.yaml", "low_ph_tolerance"): { - "grounding": "METPO:1003008", # acidotolerant - "why": "'Capacity to grow and survive under acidic external pH' is acidotolerance. " - "The record is METPO:1000232 (pH delta), so no collision.", - }, } -# --- the six restatements --------------------------------------------------- +# --- the eight restatements -------------------------------------------------- # `into` repoints the node's edges onto an existing node and drops it; `drop` # removes a leaf outright. MERGE: dict[tuple[str, str], dict] = { + ("environment/slightly_halophilic.yaml", "salt_tolerance"): { + "into": "slightly_halophilic_trait", + "why": "A SEVENTH restatement, caught in the third review round (#360). I had " + "grounded it METPO:1000622 (halotolerant), reasoning that the record is " + "METPO:1000625 (slightly halophilic) so the term is 'distinct'. It is " + "distinct in the worst way: 1000622 and 1000625 are DIRECT SIBLINGS under " + "1000629 (halophily preference), and 1000622 means 'tolerates high salt " + "but DOES NOT REQUIRE it for growth' while 1000625 means the organism " + "'REQUIRES low to moderate salt for optimal growth'. So the node asserted " + "of this record the negation of what the record's own term says. Distinct " + "is not the test; compatible is. NO CONNECTIVITY CLAIM HERE: the node was " + "already in the trait's component via osmoprotectant_transport -> " + "compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 " + "components and is a correctness fix, not a structural one. METPO has no " + "generic salt-tolerance disposition to reground to -- filed as a proposal.", + }, + ("environment/ph_delta.yaml", "low_ph_tolerance"): { + "into": "ph_delta_trait", + "why": "An EIGHTH restatement (#360). I had grounded it METPO:1003008 " + "(acidotolerant) and claimed 'no collision' with the record's " + "METPO:1000232 (pH delta). No collision, but the wrong SCOPE: 1003008 is " + "defined as tolerating acid 'WHILE MAINTAINING OPTIMAL GROWTH NEAR NEUTRAL " + "pH', which excludes the acidophiles this generic pH-delta record covers. " + "A grounding narrower than the node it labels is a false claim about every " + "organism in the excluded part. Also a pure sink. Merging repoints " + "amino_acid_decarboxylase_acid_resistance onto ph_delta_trait, which reads " + "correctly: an acid-resistance system widens the growth-supporting pH " + "range, and a pH delta IS that range.", + }, ("environment/nacl_delta_low.yaml", "salt_tolerance_breadth"): { "into": "nacl_delta", "why": "A FIFTH restatement, caught in review (#360). 'Capacity to grow across a " From f2fc07338bad8e1b04ae9218e51dd0564c2f4e01 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Fri, 7 Aug 2026 23:20:20 -0700 Subject: [PATCH 5/5] Correct two claims the data no longer supports (#360 review) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both are claims, not data — but one of them sits in curation_history, whose only job is to be true, in the pass that rewrote the audit trail so a merge would stop being logged as a retype. "filed as a proposal" was false. Nothing under proposals/ covers a generic salt-tolerance disposition and this PR adds nothing there. The first half of the sentence is right and stays: METPO genuinely has no term to reground to, since halotolerant and acidotolerant are the only candidate labels and each already anchors its own record. Now cites issue #364, which proposes a tolerance axis distinct from the preference axis, and says plainly that nothing under proposals/ exists yet. The playbook's CAPACITY table listed two TRAIT examples that are both nodes THIS PR DELETED. Last round caught the row using salt_tolerance's description; the fix swapped in oxygen_tolerance's, which acd4a120 merged away one commit earlier, alongside "Ability to grow at 4 C" which is growth_at_4c, dropped in f60cb99e. So the table told a curator "this sense becomes TRAIT" using nodes that did not become TRAIT, thirteen lines above a sentence saying #352 retyped nothing. Rewritten so the column says what to DO rather than what to type: a disposition reading makes a node a CANDIDATE, and the grounding step decides. The examples are kept and labelled as what they are — all three merged or dropped, none survived — which is a better lesson than a list of nodes that did become traits, since there are none. Also stopped citing reports/causal_graph_connectivity.tsv in the present tense: it arrives with #363, not on this branch. The hand-measured numbers stay, attributed as hand-measured. 519 tests pass - ruff clean. Co-Authored-By: Claude Opus 5 --- .../environment/slightly_halophilic.yaml | 5 +++- docs/CURATION_PLAYBOOK.md | 24 ++++++++++++------- .../environment/slightly_halophilic.html | 2 +- scripts/migrate_disposition_typing.py | 5 +++- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/data/traits/environment/slightly_halophilic.yaml b/data/traits/environment/slightly_halophilic.yaml index 405a88f0..9667f92a 100644 --- a/data/traits/environment/slightly_halophilic.yaml +++ b/data/traits/environment/slightly_halophilic.yaml @@ -285,5 +285,8 @@ curation_history: CLAIM HERE: the node was already in the trait''s component via osmoprotectant_transport -> compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 components and is a correctness fix, not a structural one. METPO has no generic salt-tolerance - disposition to reground to -- filed as a proposal.' + disposition to reground to: halotolerant and acidotolerant are the only candidate + labels and each already anchors its own record. Recorded as issue #364, which + proposes a tolerance axis distinct from the preference axis; nothing under proposals/ + yet.' llm_assisted: true diff --git a/docs/CURATION_PLAYBOOK.md b/docs/CURATION_PLAYBOOK.md index 27f286aa..84b9cf80 100644 --- a/docs/CURATION_PLAYBOOK.md +++ b/docs/CURATION_PLAYBOOK.md @@ -156,10 +156,15 @@ node's **description** reads as an organism disposition. The count is at The distinction is not "does the word *capacity* appear". Of the corpus's 24 `CAPACITY` nodes, #352 merged 8 and deliberately left 16: -| sense | examples | type | +| sense | examples | what to do | |---|---|---| -| an organism's **disposition** — what it can do | *"Capacity of a cell to survive exposure to molecular oxygen"*, *"Ability to grow at 4 C"* | **`TRAIT`** | -| a **reservoir or quantity** | `reducing_power` (a pool of reductants), `cytoplasmic_buffering_capacity` (*"Capacity of cytoplasmic buffers to absorb pH fluctuations"*), `swimming_velocity`, `metabolic_versatility` | **`CAPACITY`** | +| an organism's **disposition** — what it can do | every one of #352's eight: *"Capacity of a cell to survive exposure to molecular oxygen"*, *"Ability to grow at 4 C"*, *"Capacity to grow and survive under elevated salinity"* | **try to ground it — then see below** | +| a **reservoir or quantity** | `reducing_power` (a pool of reductants), `cytoplasmic_buffering_capacity` (*"Capacity of cytoplasmic buffers to absorb pH fluctuations"*), `swimming_velocity`, `metabolic_versatility` | **leave it `CAPACITY`** | + +The left column decides only whether the node is *a candidate*. Note that none +of the disposition examples above still exists: all three were merged or +dropped by #352, because none of them survived the grounding step. A +disposition reading is necessary for a retype and nowhere near sufficient. A buffer has a capacity; so does a battery. Neither is something an organism *can do*. That is why the check is organism-scoped — *capacity of @@ -189,11 +194,14 @@ difference. `FRAGMENTED_GRAPH`'s *count* cannot either: it reports one finding per split graph however many pieces that graph is in, so it sat flat at 218 through all -of it. What separates them is component **structure**, now measured per graph -in `reports/causal_graph_connectivity.tsv` (#359). Retyping changed it in -**zero** of #352's eight graphs; merging improved three (`oxygen_preference` -3 components → 2, `ph_delta` 3 → 2, `ph_delta_low` 5 → 4) and left five -unchanged as pure deduplication. Quote that table, not the finding counts. +of it. What separates them is component **structure**: retyping changed it in +**zero** of #352's eight graphs, while merging improved three +(`oxygen_preference` 3 components → 2, `ph_delta` 3 → 2, `ph_delta_low` +5 → 4) and left five unchanged as pure deduplication. + +Those numbers came from measuring the graphs by hand. #359 makes it routine — +`reports/causal_graph_connectivity.tsv`, one row per graph, arriving with +**#363**. Once it lands, quote that table rather than the finding counts. ### `enables` needs a process-or-activity object diff --git a/pages/traits/environment/slightly_halophilic.html b/pages/traits/environment/slightly_halophilic.html index 39f97188..724960c7 100644 --- a/pages/traits/environment/slightly_halophilic.html +++ b/pages/traits/environment/slightly_halophilic.html @@ -514,7 +514,7 @@

    Curation history

  • · MERGE_CAUSAL_NODE · claude -

    Merged node salt_tolerance into slightly_halophilic_trait and repointed its edges. Issue 352. A SEVENTH restatement, caught in the third review round (#360). I had grounded it METPO:1000622 (halotolerant), reasoning that the record is METPO:1000625 (slightly halophilic) so the term is 'distinct'. It is distinct in the worst way: 1000622 and 1000625 are DIRECT SIBLINGS under 1000629 (halophily preference), and 1000622 means 'tolerates high salt but DOES NOT REQUIRE it for growth' while 1000625 means the organism 'REQUIRES low to moderate salt for optimal growth'. So the node asserted of this record the negation of what the record's own term says. Distinct is not the test; compatible is. NO CONNECTIVITY CLAIM HERE: the node was already in the trait's component via osmoprotectant_transport -> compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 components and is a correctness fix, not a structural one. METPO has no generic salt-tolerance disposition to reground to -- filed as a proposal.

    +

    Merged node salt_tolerance into slightly_halophilic_trait and repointed its edges. Issue 352. A SEVENTH restatement, caught in the third review round (#360). I had grounded it METPO:1000622 (halotolerant), reasoning that the record is METPO:1000625 (slightly halophilic) so the term is 'distinct'. It is distinct in the worst way: 1000622 and 1000625 are DIRECT SIBLINGS under 1000629 (halophily preference), and 1000622 means 'tolerates high salt but DOES NOT REQUIRE it for growth' while 1000625 means the organism 'REQUIRES low to moderate salt for optimal growth'. So the node asserted of this record the negation of what the record's own term says. Distinct is not the test; compatible is. NO CONNECTIVITY CLAIM HERE: the node was already in the trait's component via osmoprotectant_transport -> compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 components and is a correctness fix, not a structural one. METPO has no generic salt-tolerance disposition to reground to: halotolerant and acidotolerant are the only candidate labels and each already anchors its own record. Recorded as issue #364, which proposes a tolerance axis distinct from the preference axis; nothing under proposals/ yet.

  • diff --git a/scripts/migrate_disposition_typing.py b/scripts/migrate_disposition_typing.py index e4d536af..e900bec5 100644 --- a/scripts/migrate_disposition_typing.py +++ b/scripts/migrate_disposition_typing.py @@ -123,7 +123,10 @@ "already in the trait's component via osmoprotectant_transport -> " "compatible_solutes -> osmotic_stress, so merging leaves the graph at 2 " "components and is a correctness fix, not a structural one. METPO has no " - "generic salt-tolerance disposition to reground to -- filed as a proposal.", + "generic salt-tolerance disposition to reground to: halotolerant and " + "acidotolerant are the only candidate labels and each already anchors its " + "own record. Recorded as issue #364, which proposes a tolerance axis " + "distinct from the preference axis; nothing under proposals/ yet.", }, ("environment/ph_delta.yaml", "low_ph_tolerance"): { "into": "ph_delta_trait",