diff --git a/docs/communities/Copper_Biomining_Heap_Leach.html b/docs/communities/Copper_Biomining_Heap_Leach.html index d9b6f18b7..28f2aaf2b 100644 --- a/docs/communities/Copper_Biomining_Heap_Leach.html +++ b/docs/communities/Copper_Biomining_Heap_Leach.html @@ -735,7 +735,7 @@

Ecological Interactions

Ecological interaction network for Copper Biomining Heap Leach Consortium - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (syntrophy, niche partitioning). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction.
@@ -743,13 +743,8 @@

Ecological Interactions

Syntrophy -
-
- Niche partitioning + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -757,20 +752,14 @@

Ecological Interactions

-

Ferrous Iron Oxidation in Early Heaps

- SYNTROPHY +

Acidithiobacillus Iron Oxidation and Early-Heap Association

-

Acidithiobacillus ferrooxidans oxidizes ferrous iron (Fe²⁺) to ferric iron (Fe³⁺) during early heap stages (pH >2, <200 days). The bacterium uses Fe²⁺ as electron donor for chemolithoautotrophic growth, fixing CO₂ and generating reducing equivalents. The Fe³⁺ produced serves as the primary oxidant for copper sulfide mineral dissolution according to: CuFeS₂ + 4Fe³⁺ → Cu²⁺ + 5Fe²⁺ + 2S⁰. This reaction releases copper ions and additional Fe²⁺ substrate, creating a closed iron redox cycle. At. ferrooxidans thrives when pH >2 and Fe concentrations are moderate, reaching peak abundance (~10⁷ copies/ml) around day 200. As heap aging produces more acidic conditions (pH <2) and elevates Fe³⁺ concentrations (>1.8 g/L), At. ferrooxidans is outcompeted by more acid-tolerant Leptospirillum and Ferroplasma. -

+

A. ferrooxidans has measured iron-oxidation capacity in separate laboratory assays and was abundant during the early part of the 2009 industrial leaching cycle. Field DNA counts, rRNA and solution chemistry support occurrence and activity, not taxon-resolved iron flux or demonstrated displacement by competitors. In the 2022 monoculture assay, 100-300 mg/L SX reagent allowed iron oxidation while copper extraction fell from about 15% to the approximately 5% abiotic level; oxidation capacity alone did not ensure copper recovery.

+

Source Taxon: Acidithiobacillus ferrooxidans

-

Participating Taxa: - - Acidithiobacillus ferrooxidans - -

@@ -791,12 +780,6 @@

Ferrous Iron Oxidation in Early Heaps

Biological Processes:

@@ -854,11 +837,9 @@

Evidence

-

Ferrous Iron Oxidation in Aged Heaps

- NICHE_PARTITIONING +

Aged-Heap Iron-Oxidizer Association

-

In aged heaps (>250 days, pH 1.67-1.83), Leptospirillum ferriphilum and Ferroplasma acidiphilum take over iron oxidation as conditions become too extreme for At. ferrooxidans. These organisms oxidize Fe²⁺ at pH values approaching 1.67 and tolerate elevated Fe³⁺ concentrations (1.86-1.9 g/L). Leptospirillum is particularly effective at colonizing mineral surfaces and maintaining Fe³⁺ supply for chalcopyrite dissolution. Both organisms reach ~10⁵ copies/ml in aged heaps. The shift from At. ferrooxidans to Leptospirillum/Ferroplasma reflects thermodynamic constraints - as pH drops and Fe³⁺/Fe²⁺ ratio increases, specialists adapted to extreme acidity outcompete generalists. This succession ensures sustained iron oxidation throughout the multi-year heap lifetime. -

+

The 2009 field survey found increasing L. ferriphilum and F. acidiphilum representation as heap strips aged. Late L. ferriphilum DNA reached about 10^5 copies/mL, whereas Ferroplasma was around 10^3 copies/mL; neither count is a direct oxidation flux. Lower pH and changing iron redox chemistry were proposed drivers of succession, not selectively demonstrated competitive exclusion or reduced competition through niche partitioning. L. ferriphilum oxidation is experimentally supported in the separate 2018 cultures; the 2022 Leptospirillum strain is L. ferrooxidans, not this canonical species.

@@ -887,17 +868,6 @@

Ferrous Iron Oxidation in Aged Heaps

-

Biological Processes:

-
-
@@ -905,7 +875,7 @@

Ferrous Iron Oxidation in Aged Heaps

→ Copper Sulfide Dissolution -

Sustained Fe³⁺ generation maintains copper leaching in aged heaps

+

PARTIAL - iron oxidation by the aged-heap associated taxa could replenish ferric oxidant for dissolution. Field succession and separate L. ferriphilum cultures support the proposed contribution without measuring their individual heap fluxes or proving displacement-driven leaching.

@@ -948,19 +918,13 @@

Evidence

Sulfur Oxidation to Sulfuric Acid

- SYNTROPHY
-

Acidithiobacillus thiooxidans oxidizes elemental sulfur (S⁰) and reduced inorganic sulfur compounds (RISCs) released from chalcopyrite dissolution to sulfuric acid (H₂SO₄). This process maintains the acidic pH (1.5-2.5) essential for copper leaching by continuously generating protons. Sulfur oxidation follows: S⁰ + 1.5O₂ + H₂O → H₂SO₄. The sulfuric acid protonates mineral surfaces, enhancing Fe³⁺ attack and preventing precipitation of iron hydroxides. At. thiooxidans maintains constant abundance (10⁵ copies/ml) throughout the leaching cycle, providing stable acid generation regardless of heap age or pH. This contrasts with iron oxidizers that undergo succession. The organism prevents accumulation of passivating sulfur layers on mineral surfaces that would inhibit leaching. -

+

A. thiooxidans is associated with sulfur oxidation and acid generation, and its approximately 10^5 DNA copies/mL remained relatively stable in the 2009 heap survey. rRNA measurements support activity across strips, not constant sulfur flux. Oxidation of reduced inorganic sulfur can sustain acidity and limit sulfur accumulation, but the field study does not selectively assign acid production or passivation removal to this taxon. The 2018 mixed-culture sulfur oxidizer was A. caldus, not A. thiooxidans.

+

Source Taxon: Acidithiobacillus thiooxidans

-

Participating Taxa: - - Acidithiobacillus thiooxidans - -

@@ -996,7 +960,7 @@

Sulfur Oxidation to Sulfuric Acid

→ Copper Sulfide Dissolution -

Sulfuric acid production sustains the low pH needed for ferric-iron attack on chalcopyrite

+

PARTIAL - sulfur oxidation can generate acidity and limit reduced-sulfur accumulation, helping sustain mineral attack under suitable conditions. A. thiooxidans-specific acid flux and passivation removal were not selectively established in the field survey.

@@ -1012,7 +976,7 @@

Evidence

doi:10.1111/j.1751-7915.2009.00112.x - - SUPPORT (IN_VIVO) + - PARTIAL (IN_VIVO)
"Acidithiobacillus thiooxidans kept constant throughout the leaching cycle, and Firmicutes group showed a low and a patchy distribution in the heap"
@@ -1025,7 +989,7 @@

Evidence

doi:10.3389/fmicb.2022.820052 - - SUPPORT (IN_VITRO) + - PARTIAL (OTHER)
"sulfur-oxidizing microorganisms oxidize RISCs to sulfuric acid"
@@ -1039,10 +1003,8 @@

Evidence

Copper Sulfide Dissolution

- SYNTROPHY
-

Ferric iron generated by the microbial consortium oxidizes chalcopyrite (CuFeS₂) and other copper sulfide minerals, releasing copper ions into solution for recovery. The primary reaction is: CuFeS₂ + 4Fe³⁺ → Cu²⁺ + 5Fe²⁺ + 2S⁰. This process is enhanced by the acidic pH (1.5-2.5) maintained by sulfur oxidizers. The released Fe²⁺ is re-oxidized by iron-oxidizing bacteria/archaea, closing the iron cycle. Elemental sulfur (S⁰) is oxidized by At. thiooxidans to sulfuric acid. This biohydrometallurgical process extracts copper from low-grade ores uneconomical for conventional smelting. Industrial heaps operate for 200-300+ days, with copper recovery continuing as long as Fe³⁺ generation and acid production are sustained. The process produces pregnant leach solution (PLS) containing dissolved copper that is processed by solvent extraction and electrowinning. -

+

Ferric iron attacks copper sulfide minerals and releases copper and reduced substrates that can support microbial iron regeneration and sulfur oxidation. The 2009 field heap contained mixed copper sulfides, indigenous organisms beyond the five canonical representatives, and a 400-day leaching cycle. Separate 2018 cultures measured copper release from chalcopyrite and favored a lower-redox-potential A. caldus/S. thermosulfidooxidans combination; the triple culture did not outperform the binaries. The 2022 SX-reagent monocultures further dissociated iron oxidation from copper recovery. The feedback is conditional on mineral, redox and inhibition context, not proof of a closed five-member syntrophic consortium or monotonically increasing recovery with ferric iron.

@@ -1091,23 +1053,23 @@

Copper Sulfide Dissolution

Downstream Effects:
- → Ferrous Iron Oxidation in Early Heaps -

Released Fe²⁺ is re-oxidized to regenerate Fe³⁺ oxidant

+ → Acidithiobacillus Iron Oxidation and Early-Heap Association +

PARTIAL - mineral attack releases ferrous iron that can supply A. ferrooxidans oxidation, regenerating ferric oxidant. This is a chemically grounded substrate feedback, not a measured taxon-resolved closed loop in the industrial heap.

- → Ferrous Iron Oxidation in Aged Heaps -

Released Fe²⁺ also feeds the acid-tolerant iron oxidizers in aged heap strips

+ → Aged-Heap Iron-Oxidizer Association +

PARTIAL - released ferrous iron can supply the iron-oxidizing taxa associated with older strips. Their individual uptake and feedback fluxes were not traced by the field abundance and RNA assays.

→ Sulfur Oxidation to Sulfuric Acid -

Released reduced inorganic sulfur compounds feed sulfur oxidation to sulfuric acid

+

PARTIAL - mineral dissolution generates reduced inorganic sulfur substrates that can feed A. thiooxidans sulfur oxidation. The reaction-cycle context supports direction, not selective proof of its share of field acid generation or passivation control.

- → Thermophilic Iron and Sulfur Oxidation -

Chalcopyrite-associated Fe²⁺ and sulfur substrates feed Sulfobacillus activity in hotter bioleaching niches

+ → Sulfobacillus Iron and Sulfur Oxidation Capacity +

PARTIAL - chalcopyrite-associated ferrous iron and reduced sulfur can feed Sulfobacillus oxidation in the tested cultures. This substrate feedback does not demonstrate exact-species transfer or activity in hotter industrial heap niches.

@@ -1123,7 +1085,7 @@

Evidence

doi:10.3389/fmicb.2022.820052 - - SUPPORT (IN_VIVO) + - PARTIAL (OTHER)
"Bioleaching, the microbial dissolution of metal sulfides, is caused by Fe3+ ions as the crucial oxidizing reagent"
@@ -1136,7 +1098,7 @@

Evidence

doi:10.3389/fmicb.2022.820052 - - SUPPORT (IN_VIVO) + - PARTIAL (OTHER)
"Then iron-oxidizing microorganisms re-oxidize Fe2+ to Fe3+, and sulfur-oxidizing microorganisms oxidize RISCs to sulfuric acid"
@@ -1149,20 +1111,14 @@

Evidence

-

Thermophilic Iron and Sulfur Oxidation

- NICHE_PARTITIONING +

Sulfobacillus Iron and Sulfur Oxidation Capacity

-

Sulfobacillus thermosulfidooxidans contributes to iron and sulfur oxidation in thermophilic heap sections (50-60°C) where exothermic sulfide oxidation elevates temperatures. This moderately thermophilic organism (optimum 50-55°C) oxidizes both Fe²⁺ and S⁰, performing roles analogous to At. ferrooxidans and At. thiooxidans but at elevated temperatures. Sulfobacillus exhibits facultative autotrophy, growing mixotrophically on organic compounds plus iron or sulfur. Its spore-forming capability provides resilience to fluctuating heap conditions. Metal tolerance (copper, zinc, nickel, cobalt) enables activity in polymetallic ores. Despite low abundance (10³-10⁴ copies/ml), microarray data shows increased activity in aged heaps, suggesting specialized niches where thermophily and metal tolerance provide competitive advantage. -

+

S. thermosulfidooxidans has measured iron/sulfur oxidation and leaching capacity in separate 2018 cultures at 38 +/- 2 C and 2022 monocultures at 45 C. In 2018, comparatively weak iron oxidation and lower redox potential favored copper release, including the A. caldus binary. In 2022, 10 mg/L SX reagent delayed but did not prevent recovery of iron oxidation and approximately 30% copper extraction; at 50 mg/L, sulfur oxidation and growth persisted while iron oxidation and extraction were impaired. Genus-level Sulfobacillus RNA in older field strips does not identify this exact species, measured 50-60 C heap niches, or competitive advantage.

+

Source Taxon: Sulfobacillus thermosulfidooxidans

-

Participating Taxa: - - Sulfobacillus thermosulfidooxidans - -

@@ -1191,7 +1147,7 @@

Thermophilic Iron and Sulfur Oxidation

→ Copper Sulfide Dissolution -

Sulfobacillus iron and sulfur oxidation can maintain copper extraction in thermophilic chalcopyrite bioleaching

+

PARTIAL - Sulfobacillus iron/sulfur oxidation can support leaching in the tested laboratory systems, subject to redox potential and SX inhibition. The lower-ORP advantage contradicts a universal more-iron-oxidation benefit; exact field-species and hot-zone contributions remain unresolved.

@@ -1207,7 +1163,7 @@

Evidence

doi:10.1111/j.1751-7915.2009.00112.x - - SUPPORT (IN_VIVO) + - PARTIAL (IN_VIVO)
"the prokaryotic acidophile microarray (PAM) analysis showed active members of Alphaproteobacteria in all samples and of Sulfobacillus genus in older ones"
@@ -1236,6 +1192,25 @@

Evidence

+
+

Knowledge gaps & discussions (1)

+ +
+

+ KNOWLEDGE_GAP + OPEN + Which taxa and mineral/redox conditions sustain the industrial leaching feedback? +

+

Field DNA/rRNA and solution measurements support an open indigenous community and succession, not species-resolved iron/sulfur flux or competitive exclusion. Separate culture perturbations demonstrate oxidation and copper release, including lower-ORP benefits and loss of recovery despite iron oxidation under SX reagent. Taxon-resolved flux, selective perturbations and mineral/passivation measurements are needed to connect those laboratory mechanisms to the heap. Preserve the real chemical feedback without asserting a closed five-member syntrophy. Field-genus versus exact Sulfobacillus species, non-graph abundance/engineering metadata and culture-context discrepancies remain in #1358.

+ +

Attaches to: ecological_interactions#Acidithiobacillus Iron Oxidation and Early-Heap Association, ecological_interactions#Aged-Heap Iron-Oxidizer Association, ecological_interactions#Sulfur Oxidation to Sulfuric Acid, ecological_interactions#Copper Sulfide Dissolution, ecological_interactions#Sulfobacillus Iron and Sulfur Oxidation Capacity

+ + + + +
+ +
@@ -1792,7 +1767,7 @@

Evidence

(function() { var intId = "interaction:0"; - var intType = "SYNTROPHY"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1804,8 +1779,6 @@

Evidence

var processes = []; - processes.push("iron ion transport"); - processes.push("carbon fixation"); @@ -1813,7 +1786,7 @@

Evidence

nodes.push({ id: intId, - label: "Ferrous Iron Oxidation in Early Heaps", + label: "Acidithiobacillus Iron Oxidation and Early-Heap Association", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1822,24 +1795,18 @@

Evidence

}); + var srcKey = "Acidithiobacillus ferrooxidans"; + if (taxonNodeIds[srcKey]) { + links.push({ source: taxonNodeIds[srcKey], target: intId }); + } - var participantKeys = [ - - "Acidithiobacillus ferrooxidans" - - ]; - participantKeys.forEach(function(key) { - if (taxonNodeIds[key]) { - links.push({ source: taxonNodeIds[key], target: intId }); - } - }); })(); (function() { var intId = "interaction:1"; - var intType = "NICHE_PARTITIONING"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1850,15 +1817,11 @@

Evidence

var processes = []; - - processes.push("iron ion transport"); - - var evidenceCount = 2; nodes.push({ id: intId, - label: "Ferrous Iron Oxidation in Aged Heaps", + label: "Aged-Heap Iron-Oxidizer Association", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1886,7 +1849,7 @@

Evidence

(function() { var intId = "interaction:2"; - var intType = "SYNTROPHY"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1914,24 +1877,18 @@

Evidence

}); + var srcKey = "Acidithiobacillus thiooxidans"; + if (taxonNodeIds[srcKey]) { + links.push({ source: taxonNodeIds[srcKey], target: intId }); + } - var participantKeys = [ - - "Acidithiobacillus thiooxidans" - - ]; - participantKeys.forEach(function(key) { - if (taxonNodeIds[key]) { - links.push({ source: taxonNodeIds[key], target: intId }); - } - }); })(); (function() { var intId = "interaction:3"; - var intType = "SYNTROPHY"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1984,7 +1941,7 @@

Evidence

(function() { var intId = "interaction:4"; - var intType = "NICHE_PARTITIONING"; + var intType = "UNKNOWN"; var metabolites = []; @@ -2001,7 +1958,7 @@

Evidence

nodes.push({ id: intId, - label: "Thermophilic Iron and Sulfur Oxidation", + label: "Sulfobacillus Iron and Sulfur Oxidation Capacity", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -2010,18 +1967,12 @@

Evidence

}); + var srcKey = "Sulfobacillus thermosulfidooxidans"; + if (taxonNodeIds[srcKey]) { + links.push({ source: taxonNodeIds[srcKey], target: intId }); + } - var participantKeys = [ - - "Sulfobacillus thermosulfidooxidans" - - ]; - participantKeys.forEach(function(key) { - if (taxonNodeIds[key]) { - links.push({ source: taxonNodeIds[key], target: intId }); - } - }); })(); diff --git a/docs/communities/Coscinodiscus_Synthetic_Community.html b/docs/communities/Coscinodiscus_Synthetic_Community.html index 7afebdb3a..5f9d1ccc5 100644 --- a/docs/communities/Coscinodiscus_Synthetic_Community.html +++ b/docs/communities/Coscinodiscus_Synthetic_Community.html @@ -685,7 +685,7 @@

Ecological Interactions

Ecological interaction network for Coscinodiscus Synthetic Community - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (mutualism, competition, commensalism). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction.
@@ -693,18 +693,8 @@

Ecological Interactions

Mutualism -
-
- Competition -
-
- Commensalism + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -712,11 +702,9 @@

Ecological Interactions

-

Diatom Primary Production and Carbon Release

- MUTUALISM +

Candidate Diatom Resource Provision

-

Coscinodiscus radiatus performs oxygenic photosynthesis, fixing atmospheric CO2 and producing organic carbon compounds that are released into the surrounding medium. These photosynthate and exudates include amino acids, vitamins, and dimethylsulfoniopropionate (DMSP), which serve as key resources for the associated bacteria. The release of dissolved organic carbon supports bacterial growth and metabolism in this synthetic community. -

+

The phototrophic diatom is a candidate supplier of bacterial resources. Coculture increased Crocei1 abundance, but did not significantly increase CS4 or Rose1 and inhibited CS1 after day 9. Thus diatom presence has partner-specific effects; neither universal bacterial dependence nor direct release and transfer of DMSP, amino acids or vitamins was established. Photosynthetic resource provision is a proposed mediator rather than a measured metabolite flux.

Source Taxon: Coscinodiscus radiatus

@@ -766,8 +754,8 @@

Diatom Primary Production and Carbon Release

Downstream Effects:
- → Bacterial DMSP Metabolism -

Diatom-released DMSP and organic compounds support bacterial growth

+ → Bacterial DMSP Catabolic Potential +

HYPOTHESIZED - diatom-derived DMSP could provide substrate for the genomic catabolic potential of CS4 and Rose1. No partner-resolved release, consumption or flux was measured, and added DMSP as the carbon-only supplement did not promote growth under the tested minimal-medium conditions.

@@ -783,10 +771,10 @@

Evidence

PMID:36300970 - - SUPPORT (IN_VITRO) + - PARTIAL (IN_VITRO) -
"No synergistic effects between bacteria in the presence of the diatom was observed"
+
"Crocei1 grew to significantly higher density"
@@ -796,14 +784,10 @@

Evidence

-

Bacterial DMSP Metabolism

- MUTUALISM +

Bacterial DMSP Catabolic Potential

-

The Roseobacteraceae members (Mameliella CS4 and Roseovarius Rose1) metabolize dimethylsulfoniopropionate (DMSP) released by the diatom through demethylation and cleavage pathways. This sulfur cycling activity is important for carbon and sulfur biogeochemistry in marine systems. The differential capacity for DMSP metabolism among the bacteria (with Croceibacter lacking this capability) reflects functional specialization within the community. -

- +

BLASTP comparisons of predicted bacterial proteins support DMSP demethylation/cleavage potential in CS4 and Rose1. Crocei1 had weak homologs and CS1 lacked the key DmdA sequence, although downstream homologs suggest possible MMPA use. This is sequence-based potential, not measured DMSP consumption, DMS release or diatom-to-bacterium flux. DMSP carbon-only supplementation did not promote growth; that negative growth result does not itself prove absence of catabolic activity.

-

Source Taxon: Mameliella CS4

@@ -861,10 +845,10 @@

Evidence

PMID:36300970 - - SUPPORT (IN_VITRO) + - PARTIAL (COMPUTATIONAL)
-
"We further established a synthetic phytoplankton/bacteria community with the centric diatom, Coscinodiscus radiatus, and 4 phylogenetically distinctive bacterial isolates, Mameliella sp., Roseovarius sp., Croceibacter sp., and Marinobacter sp. Supported by a Lotka-Volterra model, we show that interactions within the consortium are specific and that the sum of the pairwise interactions can explain algal and bacterial growth in the community"
+
"potential for DMSP consumption"
@@ -875,13 +859,9 @@

Evidence

Growth Phase-Dependent Bacterial Effects

- MUTUALISM
-

The bacterial members exert context-dependent effects on diatom growth that vary with algal fitness state and growth phase. Mameliella CS4 and Roseovarius Rose1 extended the stationary phase and promoted survival during late growth phases, while Croceibacter Crocei1 consistently inhibited growth. Marinobacter CS1 initially suppressed growth but later enabled recovery. These dynamic temporal effects demonstrate that bacterial function depends on the physiological state of the diatom and timing of the interaction, with no universal growth-promoting or algicidal bacteria. -

- +

In pairwise cultures, CS4 and Rose1 prolonged algal stationary-phase survival; Crocei1 inhibited the diatom across phases. CS1 initially suppressed algal growth, followed by recovery to control-like density after day 9, not necessarily growth above control. Reciprocal bacterial responses differed: Crocei1 benefited, CS1 was inhibited significantly on days 11-21, and CS4/Rose1 showed no significant diatom effect. These measured responses do not support one global mutualism label or identify their chemical mediators.

-

Source Taxon: Mameliella CS4

@@ -926,8 +906,8 @@

Growth Phase-Dependent Bacterial Effects

Downstream Effects:
- → Community-Level Emergent Effects -

Pairwise C. radiatus-bacterium effects vary across partners and growth phases and combine into an all-member culture whose net effect on algal growth is inhibitory without requiring bacterial-bacterial synergy.

+ → Community Growth and Pairwise Model +

PARTIAL - the measured partner- and phase-specific effects combine into the observed predominantly inhibitory all-member algal trajectory. A generalized Lotka-Volterra model fitted to monocultures and pairwise cultures reproduces that trajectory with separate early/late parameter sets; this supports the proposed contribution without isolating chemical mediators or proving higher-order interactions universally absent.

@@ -946,7 +926,7 @@

Evidence

- SUPPORT (IN_VITRO) -
"Bacteria utilize substrates produced by the phototrophic algae, while algal growth can be supported by bacterial exudates"
+
"The activity of bacteria can even change during the aging of an algal culture from inhibitory to stimulatory or vice versa"
@@ -956,11 +936,9 @@

Evidence

-

Bacterial Auxotrophy and Nutrient Dependence

- COMMENSALISM +

Bacterial Nutrient Supplement Responses

-

Genome analysis revealed extensive auxotrophic requirements among the bacteria, with Croceibacter Crocei1 showing the highest dependence on external nutrients. Most bacteria required amino acids and vitamins (Rose1 needed niacin/B3, while Crocei1 and CS1 needed vitamin B12), indicating strong reliance on diatom-derived compounds for growth. This auxotrophy drives the dependence of bacteria on the photosynthetic diatom and shapes community assembly and dynamics. -

+

Minimal-medium supplementation with a pooled 13-amino-acid mixture plus vitamins improved growth of Rose1, Crocei1 and CS1; CS4 did not respond. DMSP or glucose supplied as carbon alone did not promote any of the four bacteria. These are direct nutrient-response assays, not merely genomic predictions. Genome analysis separately predicted amino-acid deficits, Rose1 niacin deficiency and Crocei1/CS1 vitamin B12 biosynthesis deficits. The pooled rescue does not establish which individual nutrient was limiting, its exact B12 chemical form, or donation by the diatom.

@@ -983,13 +961,9 @@

Bacterial Auxotrophy and Nutrient Dependence

(CHEBI:33709), - cobalamin - (CHEBI:15982), - - niacin - (CHEBI:15940) + vitamins + (CHEBI:33229)

@@ -1028,7 +1002,7 @@

Evidence

- SUPPORT (IN_VITRO)
-
"We further established a synthetic phytoplankton/bacteria community with the centric diatom, Coscinodiscus radiatus, and 4 phylogenetically distinctive bacterial isolates, Mameliella sp., Roseovarius sp., Croceibacter sp., and Marinobacter sp. Supported by a Lotka-Volterra model, we show that interactions within the consortium are specific and that the sum of the pairwise interactions can explain algal and bacterial growth in the community"
+
"all other bacteria grew better"
@@ -1038,15 +1012,11 @@

Evidence

-

Community-Level Emergent Effects

- COMPETITION +

Community Growth and Pairwise Model

-

When all four bacteria were combined with the diatom, an overall inhibitory effect on algal growth emerged throughout all growth phases. The growth-promoting effects of CS4 and Rose1 observed in pairwise cultures did not prevail in the four-member community, demonstrating emergent community-level properties. A Lotka-Volterra model successfully predicted community composition using only pairwise interaction parameters, indicating that higher-order bacterial-bacterial interactions were negligible and that the community dynamics arose primarily from pairwise diatom-bacteria interactions. -

+

The all-member culture generally had lower algal cell counts than the axenic control, especially before day 17; the paper also describes a very-late survival benefit. Bacteria performed similarly or slightly better than in mono/pairwise cultures, so this is not reciprocal competitive harm. A generalized Lotka-Volterra model fitted to mono/pairwise data with distinct days 1-17 and 17-41 parameter sets predicted the algal community trajectory; a neutral model failed. Bacterial-bacterial terms were unnecessary for this tested fit, not proven universally absent, and chemical cross-feeding was not thereby established.

-

Source Taxon: Coscinodiscus radiatus

-

Participating Taxa: @@ -1113,6 +1083,25 @@

Evidence

+
+

Knowledge gaps & discussions (1)

+ +
+

+ KNOWLEDGE_GAP + OPEN + Which exchanged compounds mediate the partner- and phase-specific growth responses? +

+

Complete primary main text, tables and captions support pairwise growth, pooled nutrient supplementation and a phase-specific community model. Direct DMSP release/consumption flux, individual nutrient rescue and mediator-specific perturbations remain unresolved; carbon-only supplementation was negative. CS4 is a nonresponding supplementation control despite predicted deficits. Prior rich-medium stores may buffer responses. The model fit does not rule out interactions under other nutrient conditions. The publisher-provided preview was read without copying its copyrighted body; three brief Results excerpts remain a documented abstract-cache retrieval gap under #596. No figure images or supplementary files were inspected. Non-graph roles, cultivation parameters and source discrepancies remain in #1359.

+ +

Attaches to: ecological_interactions#Candidate Diatom Resource Provision, ecological_interactions#Bacterial DMSP Catabolic Potential, ecological_interactions#Growth Phase-Dependent Bacterial Effects, ecological_interactions#Bacterial Nutrient Supplement Responses, ecological_interactions#Community Growth and Pairwise Model

+ + + + +
+ +
@@ -1638,7 +1627,7 @@

Evidence

(function() { var intId = "interaction:0"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1661,7 +1650,7 @@

Evidence

nodes.push({ id: intId, - label: "Diatom Primary Production and Carbon Release", + label: "Candidate Diatom Resource Provision", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1681,7 +1670,7 @@

Evidence

(function() { var intId = "interaction:1"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1702,7 +1691,7 @@

Evidence

nodes.push({ id: intId, - label: "Bacterial DMSP Metabolism", + label: "Bacterial DMSP Catabolic Potential", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1711,18 +1700,26 @@

Evidence

}); - var srcKey = "Mameliella CS4"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } + var participantKeys = [ + + "Mameliella CS4", + + "Roseovarius Rose1" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); })(); (function() { var intId = "interaction:2"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; var processes = []; @@ -1746,26 +1743,38 @@

Evidence

}); - var srcKey = "Mameliella CS4"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } + var participantKeys = [ + + "Coscinodiscus radiatus", + + "Mameliella CS4", + + "Roseovarius Rose1", + + "Croceibacter Crocei1", + + "Marinobacter CS1" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); })(); (function() { var intId = "interaction:3"; - var intType = "COMMENSALISM"; + var intType = "UNKNOWN"; var metabolites = []; metabolites.push("amino acids"); - metabolites.push("cobalamin"); - - metabolites.push("niacin"); + metabolites.push("vitamins"); var processes = []; @@ -1780,7 +1789,7 @@

Evidence

nodes.push({ id: intId, - label: "Bacterial Auxotrophy and Nutrient Dependence", + label: "Bacterial Nutrient Supplement Responses", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1810,7 +1819,7 @@

Evidence

(function() { var intId = "interaction:4"; - var intType = "COMPETITION"; + var intType = "UNKNOWN"; var metabolites = []; var processes = []; @@ -1825,7 +1834,7 @@

Evidence

nodes.push({ id: intId, - label: "Community-Level Emergent Effects", + label: "Community Growth and Pairwise Model", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1834,12 +1843,26 @@

Evidence

}); - var srcKey = "Coscinodiscus radiatus"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } + var participantKeys = [ + + "Coscinodiscus radiatus", + + "Mameliella CS4", + + "Roseovarius Rose1", + + "Croceibacter Crocei1", + + "Marinobacter CS1" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); })(); diff --git a/history/records/Copper_Biomining_Heap_Leach/2026-10-06T025228Z-codex-9c8b7f.yaml b/history/records/Copper_Biomining_Heap_Leach/2026-10-06T025228Z-codex-9c8b7f.yaml new file mode 100644 index 000000000..62cee0916 --- /dev/null +++ b/history/records/Copper_Biomining_Heap_Leach/2026-10-06T025228Z-codex-9c8b7f.yaml @@ -0,0 +1,30 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Copper_Biomining_Heap_Leach.yaml + slug: Copper_Biomining_Heap_Leach +session: + id: 2026-10-06T025228Z-codex-9c8b7f + timestamp: '2026-10-06T02:52:28Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1356 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Separate measured intrinsic iron oxidation from early-heap association and failed + recovery under SX reagent.; Retain observed succession with correct abundance scale and + species boundaries, without competition or resolved field flux.; Distinguish sulfur-oxidation + capacity and RNA activity from stable DNA counts, constant acid flux and selective passivation + removal.; Retain conditional mineral/redox feedback and direct laboratory outcomes without + a closed five-member consortium claim.; Preserve laboratory Sulfobacillus oxidation/leaching + and low-ORP advantage; bound field genus-to-species and thermal inference. + details: Source-based self-adversarial review; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml diff --git a/history/records/Coscinodiscus_Synthetic_Community/2026-10-06T025228Z-codex-c5e0cf.yaml b/history/records/Coscinodiscus_Synthetic_Community/2026-10-06T025228Z-codex-c5e0cf.yaml new file mode 100644 index 000000000..2f7696c43 --- /dev/null +++ b/history/records/Coscinodiscus_Synthetic_Community/2026-10-06T025228Z-codex-c5e0cf.yaml @@ -0,0 +1,31 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Coscinodiscus_Synthetic_Community.yaml + slug: Coscinodiscus_Synthetic_Community +session: + id: 2026-10-06T025228Z-codex-c5e0cf + timestamp: '2026-10-06T02:52:28Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1357 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Retain candidate diatom resource provision and actual Crocei1 promotion without + universal dependence or measured metabolite donation.; Keep DMSP homology potential computational, + distinct from consumption, product flux and a negative carbon-only growth assay.; Preserve + distinct reciprocal growth signs and control-relative algal recovery rather than global + mutualism.; Preserve real pooled nutrient responses and the CS4 negative control without + individual-vitamin rescue or exact B12-form claims.; Retain empirical community inhibition + and phase-specific model success without reciprocal harm or universal exclusion of higher-order + interactions. + details: Source-based self-adversarial review; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml diff --git a/kb/communities/Copper_Biomining_Heap_Leach.yaml b/kb/communities/Copper_Biomining_Heap_Leach.yaml index dd885b305..30f94f746 100644 --- a/kb/communities/Copper_Biomining_Heap_Leach.yaml +++ b/kb/communities/Copper_Biomining_Heap_Leach.yaml @@ -256,24 +256,13 @@ taxonomy: to Sulfobacillus thermosulfidooxidans, Acidithiobacillus caldus and Acidimicrobium ferrooxidans explanation: Establishes metal tolerance crucial for biomining ecological_interactions: -- name: Ferrous Iron Oxidation in Early Heaps - description: 'Acidithiobacillus ferrooxidans oxidizes ferrous iron (Fe²⁺) to ferric iron (Fe³⁺) during - early heap stages (pH >2, <200 days). The bacterium uses Fe²⁺ as electron donor for chemolithoautotrophic - growth, fixing CO₂ and generating reducing equivalents. The Fe³⁺ produced serves as the primary oxidant - for copper sulfide mineral dissolution according to: CuFeS₂ + 4Fe³⁺ → Cu²⁺ + 5Fe²⁺ + 2S⁰. This reaction - releases copper ions and additional Fe²⁺ substrate, creating a closed iron redox cycle. At. ferrooxidans - thrives when pH >2 and Fe concentrations are moderate, reaching peak abundance (~10⁷ copies/ml) around - day 200. As heap aging produces more acidic conditions (pH <2) and elevates Fe³⁺ concentrations (>1.8 - g/L), At. ferrooxidans is outcompeted by more acid-tolerant Leptospirillum and Ferroplasma. - - ' - interaction_type: SYNTROPHY - scope: COMMUNITY_LEVEL - participating_taxa: - - preferred_term: Acidithiobacillus ferrooxidans - term: - id: NCBITaxon:920 - label: Acidithiobacillus ferrooxidans +- name: Acidithiobacillus Iron Oxidation and Early-Heap Association + description: A. ferrooxidans has measured iron-oxidation capacity in separate laboratory assays and was abundant + during the early part of the 2009 industrial leaching cycle. Field DNA counts, rRNA and solution chemistry support + occurrence and activity, not taxon-resolved iron flux or demonstrated displacement by competitors. In the 2022 + monoculture assay, 100-300 mg/L SX reagent allowed iron oxidation while copper extraction fell from about 15% + to the approximately 5% abiotic level; oxidation capacity alone did not ensure copper recovery. + scope: PAIRWISE metabolites: - preferred_term: Fe(II) term: @@ -284,44 +273,43 @@ ecological_interactions: term: id: CHEBI:29034 label: iron(3+) - concentration: Generated product; reaches 1.86-1.9 g/L in aged heaps + concentration: Ferric iron measured in heap solution is not assigned solely to this taxon biological_processes: - - preferred_term: iron ion transport - term: - id: GO:0006826 - label: iron ion transport - preferred_term: carbon fixation term: id: GO:0015977 label: carbon fixation downstream: - target: Copper Sulfide Dissolution - description: Fe³⁺ oxidizes chalcopyrite to release Cu²⁺ and regenerate Fe²⁺ + description: PARTIAL - A. ferrooxidans iron oxidation can replenish ferric oxidant for mineral attack. The chemical + cycle and laboratory oxidation support this direction, but the SX assay shows that retained iron oxidation + need not sustain copper recovery, and the field contribution is not taxon-resolved. evidence: - reference: doi:10.1111/j.1751-7915.2009.00112.x supports: SUPPORT evidence_source: IN_VIVO - snippet: At. ferrooxidans phylotypes were the most abundant microorganisms during the first - part of the leaching cycle (around 200 days of operation) - explanation: Anchors At. ferrooxidans as the dominant taxon during the early industrial heap stage + snippet: At. ferrooxidans phylotypes were the most abundant microorganisms during the first part of the leaching + cycle (around 200 days of operation) + explanation: Supports early field abundance, not direct taxon-resolved iron-oxidation flux or competition. Field + rRNA assays add activity evidence but do not quantify that reaction. - reference: doi:10.3389/fmicb.2022.820052 supports: SUPPORT evidence_source: IN_VITRO snippet: 100 and 300 mg/L SX reagent could hardly inhibit At. ferrooxidans from oxidizing Fe2+ - explanation: Demonstrates ferrous-iron oxidation by At. ferrooxidans during chalcopyrite bioleaching - assays -- name: Ferrous Iron Oxidation in Aged Heaps - description: 'In aged heaps (>250 days, pH 1.67-1.83), Leptospirillum ferriphilum and Ferroplasma acidiphilum - take over iron oxidation as conditions become too extreme for At. ferrooxidans. These organisms oxidize - Fe²⁺ at pH values approaching 1.67 and tolerate elevated Fe³⁺ concentrations (1.86-1.9 g/L). Leptospirillum - is particularly effective at colonizing mineral surfaces and maintaining Fe³⁺ supply for chalcopyrite - dissolution. Both organisms reach ~10⁵ copies/ml in aged heaps. The shift from At. ferrooxidans to - Leptospirillum/Ferroplasma reflects thermodynamic constraints - as pH drops and Fe³⁺/Fe²⁺ ratio increases, - specialists adapted to extreme acidity outcompete generalists. This succession ensures sustained iron - oxidation throughout the multi-year heap lifetime. - - ' - interaction_type: NICHE_PARTITIONING + explanation: Supports iron oxidation in a separate A. ferrooxidans monoculture. Primary Results also show reduced + copper extraction under SX reagent despite retained iron oxidation. + source_taxon: + preferred_term: Acidithiobacillus ferrooxidans + term: + id: NCBITaxon:920 + label: Acidithiobacillus ferrooxidans +- name: Aged-Heap Iron-Oxidizer Association + description: The 2009 field survey found increasing L. ferriphilum and F. acidiphilum representation as heap strips + aged. Late L. ferriphilum DNA reached about 10^5 copies/mL, whereas Ferroplasma was around 10^3 copies/mL; neither + count is a direct oxidation flux. Lower pH and changing iron redox chemistry were proposed drivers of succession, + not selectively demonstrated competitive exclusion or reduced competition through niche partitioning. L. ferriphilum + oxidation is experimentally supported in the separate 2018 cultures; the 2022 Leptospirillum strain is L. ferrooxidans, + not this canonical species. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Leptospirillum ferriphilum @@ -341,59 +329,46 @@ ecological_interactions: term: id: CHEBI:29034 label: iron(3+) - concentration: 1.86-1.9 g/L in aged heaps - biological_processes: - - preferred_term: iron ion transport - term: - id: GO:0006826 - label: iron ion transport + concentration: Selected 2009 heap solutions contained about 1.86-1.9 g/L ferric iron; not a species-resolved + production rate downstream: - target: Copper Sulfide Dissolution - description: Sustained Fe³⁺ generation maintains copper leaching in aged heaps + description: PARTIAL - iron oxidation by the aged-heap associated taxa could replenish ferric oxidant for dissolution. + Field succession and separate L. ferriphilum cultures support the proposed contribution without measuring + their individual heap fluxes or proving displacement-driven leaching. evidence: - reference: doi:10.1111/j.1751-7915.2009.00112.x supports: SUPPORT evidence_source: IN_VIVO - snippet: Acidithiobacillus ferrooxidans was the most abundant during the first part of the leaching - cycle, while the abundance of Leptospirillum ferriphilum and Ferroplasma acidiphilum increased with - age of the heap - explanation: Documents succession from At. ferrooxidans toward Leptospirillum and Ferroplasma in - older industrial heap strips + snippet: Acidithiobacillus ferrooxidans was the most abundant during the first part of the leaching cycle, while + the abundance of Leptospirillum ferriphilum and Ferroplasma acidiphilum increased with age of the heap + explanation: Supports observed field succession. DNA abundance, rRNA activity and bulk solution chemistry do + not assign the oxidation flux to individual taxa. - reference: doi:10.1111/j.1751-7915.2009.00112.x supports: PARTIAL evidence_source: IN_VIVO - snippet: changes during the leaching cycle in chemical and physical conditions, such as pH and - Fe3+/Fe2+ ion rate, are primary factors shaping the microbial dynamic in the heap - explanation: Supports heap-age pH and iron-redox gradients as drivers of the iron-oxidizer shift + snippet: changes during the leaching cycle in chemical and physical conditions, such as pH and Fe3+/Fe2+ ion + rate, are primary factors shaping the microbial dynamic in the heap + explanation: The authors propose physical/chemical drivers from field associations; this is not a selective + competition or niche-partitioning experiment. - name: Sulfur Oxidation to Sulfuric Acid - description: 'Acidithiobacillus thiooxidans oxidizes elemental sulfur (S⁰) and reduced inorganic sulfur - compounds (RISCs) released from chalcopyrite dissolution to sulfuric acid (H₂SO₄). This process maintains - the acidic pH (1.5-2.5) essential for copper leaching by continuously generating protons. Sulfur oxidation - follows: S⁰ + 1.5O₂ + H₂O → H₂SO₄. The sulfuric acid protonates mineral surfaces, enhancing Fe³⁺ attack - and preventing precipitation of iron hydroxides. At. thiooxidans maintains constant abundance (10⁵ - copies/ml) throughout the leaching cycle, providing stable acid generation regardless of heap age - or pH. This contrasts with iron oxidizers that undergo succession. The organism prevents accumulation - of passivating sulfur layers on mineral surfaces that would inhibit leaching. - - ' - interaction_type: SYNTROPHY - scope: COMMUNITY_LEVEL - participating_taxa: - - preferred_term: Acidithiobacillus thiooxidans - term: - id: NCBITaxon:930 - label: Acidithiobacillus thiooxidans + description: A. thiooxidans is associated with sulfur oxidation and acid generation, and its approximately 10^5 + DNA copies/mL remained relatively stable in the 2009 heap survey. rRNA measurements support activity across + strips, not constant sulfur flux. Oxidation of reduced inorganic sulfur can sustain acidity and limit sulfur + accumulation, but the field study does not selectively assign acid production or passivation removal to this + taxon. The 2018 mixed-culture sulfur oxidizer was A. caldus, not A. thiooxidans. + scope: PAIRWISE metabolites: - preferred_term: sulfur term: id: CHEBI:26833 label: sulfur atom - notes: Elemental sulfur (S⁰) substrate + notes: Existing sulfur-atom annotation is elemental context, not a measured molecular allotrope or concentration - preferred_term: sulfuric acid term: id: CHEBI:26836 label: sulfuric acid - concentration: Maintains pH 1.5-2.5 + concentration: Candidate contribution to acidic leaching conditions; taxon-specific acid flux not measured biological_processes: - preferred_term: sulfur compound metabolic process term: @@ -401,33 +376,36 @@ ecological_interactions: label: sulfur compound metabolic process downstream: - target: Copper Sulfide Dissolution - description: Sulfuric acid production sustains the low pH needed for ferric-iron attack on chalcopyrite + description: PARTIAL - sulfur oxidation can generate acidity and limit reduced-sulfur accumulation, helping + sustain mineral attack under suitable conditions. A. thiooxidans-specific acid flux and passivation removal + were not selectively established in the field survey. evidence: - reference: doi:10.1111/j.1751-7915.2009.00112.x - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VIVO - snippet: Acidithiobacillus thiooxidans kept constant throughout the leaching cycle, and Firmicutes - group showed a low and a patchy distribution in the heap - explanation: Documents stable sulfur oxidation activity + snippet: Acidithiobacillus thiooxidans kept constant throughout the leaching cycle, and Firmicutes group showed + a low and a patchy distribution in the heap + explanation: The quoted constancy concerns abundance, not stable sulfur oxidation. Primary rRNA results support + physiological activity without measuring sulfur flux. - reference: doi:10.3389/fmicb.2022.820052 - supports: SUPPORT - evidence_source: IN_VITRO + supports: PARTIAL + evidence_source: OTHER snippet: sulfur-oxidizing microorganisms oxidize RISCs to sulfuric acid - explanation: Establishes sulfuric acid production from reduced inorganic sulfur compounds as a - bioleaching reaction + explanation: General bioleaching chemistry in the 2022 Introduction, not an A. thiooxidans experiment in that + study. + source_taxon: + preferred_term: Acidithiobacillus thiooxidans + term: + id: NCBITaxon:930 + label: Acidithiobacillus thiooxidans - name: Copper Sulfide Dissolution - description: 'Ferric iron generated by the microbial consortium oxidizes chalcopyrite (CuFeS₂) and other - copper sulfide minerals, releasing copper ions into solution for recovery. The primary reaction is: - CuFeS₂ + 4Fe³⁺ → Cu²⁺ + 5Fe²⁺ + 2S⁰. This process is enhanced by the acidic pH (1.5-2.5) maintained - by sulfur oxidizers. The released Fe²⁺ is re-oxidized by iron-oxidizing bacteria/archaea, closing - the iron cycle. Elemental sulfur (S⁰) is oxidized by At. thiooxidans to sulfuric acid. This biohydrometallurgical - process extracts copper from low-grade ores uneconomical for conventional smelting. Industrial heaps - operate for 200-300+ days, with copper recovery continuing as long as Fe³⁺ generation and acid production - are sustained. The process produces pregnant leach solution (PLS) containing dissolved copper that - is processed by solvent extraction and electrowinning. - - ' - interaction_type: SYNTROPHY + description: Ferric iron attacks copper sulfide minerals and releases copper and reduced substrates that can support + microbial iron regeneration and sulfur oxidation. The 2009 field heap contained mixed copper sulfides, indigenous + organisms beyond the five canonical representatives, and a 400-day leaching cycle. Separate 2018 cultures measured + copper release from chalcopyrite and favored a lower-redox-potential A. caldus/S. thermosulfidooxidans combination; + the triple culture did not outperform the binaries. The 2022 SX-reagent monocultures further dissociated iron + oxidation from copper recovery. The feedback is conditional on mineral, redox and inhibition context, not proof + of a closed five-member syntrophic consortium or monotonically increasing recovery with ferric iron. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Acidithiobacillus ferrooxidans @@ -472,48 +450,46 @@ ecological_interactions: label: iron(2+) notes: Regenerated substrate downstream: - - target: Ferrous Iron Oxidation in Early Heaps - description: Released Fe²⁺ is re-oxidized to regenerate Fe³⁺ oxidant - - target: Ferrous Iron Oxidation in Aged Heaps - description: Released Fe²⁺ also feeds the acid-tolerant iron oxidizers in aged heap strips + - target: Acidithiobacillus Iron Oxidation and Early-Heap Association + description: PARTIAL - mineral attack releases ferrous iron that can supply A. ferrooxidans oxidation, regenerating + ferric oxidant. This is a chemically grounded substrate feedback, not a measured taxon-resolved closed loop + in the industrial heap. + - target: Aged-Heap Iron-Oxidizer Association + description: PARTIAL - released ferrous iron can supply the iron-oxidizing taxa associated with older strips. + Their individual uptake and feedback fluxes were not traced by the field abundance and RNA assays. - target: Sulfur Oxidation to Sulfuric Acid - description: Released reduced inorganic sulfur compounds feed sulfur oxidation to sulfuric acid - - target: Thermophilic Iron and Sulfur Oxidation - description: Chalcopyrite-associated Fe²⁺ and sulfur substrates feed Sulfobacillus activity in hotter - bioleaching niches + description: PARTIAL - mineral dissolution generates reduced inorganic sulfur substrates that can feed A. thiooxidans + sulfur oxidation. The reaction-cycle context supports direction, not selective proof of its share of field + acid generation or passivation control. + - target: Sulfobacillus Iron and Sulfur Oxidation Capacity + description: PARTIAL - chalcopyrite-associated ferrous iron and reduced sulfur can feed Sulfobacillus oxidation + in the tested cultures. This substrate feedback does not demonstrate exact-species transfer or activity in + hotter industrial heap niches. evidence: - reference: doi:10.3389/fmicb.2022.820052 - supports: SUPPORT - evidence_source: IN_VIVO - snippet: Bioleaching, the microbial dissolution of metal sulfides, is caused by Fe3+ ions as - the crucial oxidizing reagent - explanation: Identifies ferric iron as the oxidant responsible for dissolving copper sulfides + supports: PARTIAL + evidence_source: OTHER + snippet: Bioleaching, the microbial dissolution of metal sulfides, is caused by Fe3+ ions as the crucial oxidizing + reagent + explanation: General reaction-cycle context from the 2022 Introduction. Separate laboratory results and field + observations support conditional leaching, not an exact five-member in vivo perturbation or taxon-resolved + flux. - reference: doi:10.3389/fmicb.2022.820052 - supports: SUPPORT - evidence_source: IN_VIVO - snippet: Then iron-oxidizing microorganisms re-oxidize Fe2+ to Fe3+, and sulfur-oxidizing - microorganisms oxidize RISCs to sulfuric acid - explanation: Connects mineral dissolution products to microbial iron regeneration and sulfuric - acid production -- name: Thermophilic Iron and Sulfur Oxidation - description: 'Sulfobacillus thermosulfidooxidans contributes to iron and sulfur oxidation in thermophilic - heap sections (50-60°C) where exothermic sulfide oxidation elevates temperatures. This moderately - thermophilic organism (optimum 50-55°C) oxidizes both Fe²⁺ and S⁰, performing roles analogous to At. - ferrooxidans and At. thiooxidans but at elevated temperatures. Sulfobacillus exhibits facultative - autotrophy, growing mixotrophically on organic compounds plus iron or sulfur. Its spore-forming capability - provides resilience to fluctuating heap conditions. Metal tolerance (copper, zinc, nickel, cobalt) - enables activity in polymetallic ores. Despite low abundance (10³-10⁴ copies/ml), microarray data - shows increased activity in aged heaps, suggesting specialized niches where thermophily and metal - tolerance provide competitive advantage. - - ' - interaction_type: NICHE_PARTITIONING - scope: COMMUNITY_LEVEL - participating_taxa: - - preferred_term: Sulfobacillus thermosulfidooxidans - term: - id: NCBITaxon:28034 - label: Sulfobacillus thermosulfidooxidans + supports: PARTIAL + evidence_source: OTHER + snippet: Then iron-oxidizing microorganisms re-oxidize Fe2+ to Fe3+, and sulfur-oxidizing microorganisms oxidize + RISCs to sulfuric acid + explanation: General reaction-cycle context from the 2022 Introduction. Separate laboratory results and field + observations support conditional leaching, not an exact five-member in vivo perturbation or taxon-resolved + flux. +- name: Sulfobacillus Iron and Sulfur Oxidation Capacity + description: S. thermosulfidooxidans has measured iron/sulfur oxidation and leaching capacity in separate 2018 + cultures at 38 +/- 2 C and 2022 monocultures at 45 C. In 2018, comparatively weak iron oxidation and lower redox + potential favored copper release, including the A. caldus binary. In 2022, 10 mg/L SX reagent delayed but did + not prevent recovery of iron oxidation and approximately 30% copper extraction; at 50 mg/L, sulfur oxidation + and growth persisted while iron oxidation and extraction were impaired. Genus-level Sulfobacillus RNA in older + field strips does not identify this exact species, measured 50-60 C heap niches, or competitive advantage. + scope: PAIRWISE metabolites: - preferred_term: Fe(II) term: @@ -527,23 +503,31 @@ ecological_interactions: term: id: CHEBI:26833 label: sulfur atom + notes: Elemental sulfur context, not a measured molecular allotrope or concentration downstream: - target: Copper Sulfide Dissolution - description: Sulfobacillus iron and sulfur oxidation can maintain copper extraction in thermophilic - chalcopyrite bioleaching + description: PARTIAL - Sulfobacillus iron/sulfur oxidation can support leaching in the tested laboratory systems, + subject to redox potential and SX inhibition. The lower-ORP advantage contradicts a universal more-iron-oxidation + benefit; exact field-species and hot-zone contributions remain unresolved. evidence: - reference: doi:10.1111/j.1751-7915.2009.00112.x - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VIVO - snippet: the prokaryotic acidophile microarray (PAM) analysis showed active members of Alphaproteobacteria - in all samples and of Sulfobacillus genus in older ones - explanation: Documents Sulfobacillus activity in industrial heaps + snippet: the prokaryotic acidophile microarray (PAM) analysis showed active members of Alphaproteobacteria in + all samples and of Sulfobacillus genus in older ones + explanation: Supports genus-level field RNA activity only; neither exact S. thermosulfidooxidans identification + nor a hot-zone flux measurement. - reference: doi:10.3389/fmicb.2018.03059 supports: SUPPORT evidence_source: IN_VITRO snippet: microbial iron oxidation by Sulfobacillus thermosulfidooxidans meets these specifications - explanation: Demonstrates iron oxidation by Sulfobacillus thermosulfidooxidans in chalcopyrite - bioleaching experiments + explanation: The specifications refer to comparatively weak iron oxidation and favorable lower redox potential, + not maximal ferric-iron production or a demonstrated 50-60 C field niche. + source_taxon: + preferred_term: Sulfobacillus thermosulfidooxidans + term: + id: NCBITaxon:28034 + label: Sulfobacillus thermosulfidooxidans environmental_factors: - name: pH Gradient Across Heap Age value: 1.67-2.5 @@ -847,3 +831,34 @@ growth_media: explanation: Confirms use of standard acidophile cultivation methods for consortium members culturemech_id: CultureMech:003277 culturemech_url: https://github.com/CultureBotAI/CultureMech/tree/main/kb/media/CultureMech:003277 +discussions: +- discussion_id: copper_heap_resolved_flux_and_context + prompt: Which taxa and mineral/redox conditions sustain the industrial leaching feedback? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Acidithiobacillus Iron Oxidation and Early-Heap Association + - ecological_interactions#Aged-Heap Iron-Oxidizer Association + - ecological_interactions#Sulfur Oxidation to Sulfuric Acid + - ecological_interactions#Copper Sulfide Dissolution + - ecological_interactions#Sulfobacillus Iron and Sulfur Oxidation Capacity + rationale: 'Field DNA/rRNA and solution measurements support an open indigenous community and succession, not + species-resolved iron/sulfur flux or competitive exclusion. Separate culture perturbations demonstrate oxidation + and copper release, including lower-ORP benefits and loss of recovery despite iron oxidation under SX reagent. + Taxon-resolved flux, selective perturbations and mineral/passivation measurements are needed to connect those + laboratory mechanisms to the heap. Preserve the real chemical feedback without asserting a closed five-member + syntrophy. Field-genus versus exact Sulfobacillus species, non-graph abundance/engineering metadata and culture-context + discrepancies remain in #1358.' + posed_by: codex + posed_date: '2026-10-05' +curation_history: +- timestamp: '2026-10-06T02:52:26Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Separate measured intrinsic iron oxidation from early-heap association and failed recovery under SX + reagent.; Retain observed succession with correct abundance scale and species boundaries, without competition + or resolved field flux.; Distinguish sulfur-oxidation capacity and RNA activity from stable DNA counts, constant + acid flux and selective passivation removal.; Retain conditional mineral/redox feedback and direct laboratory + outcomes without a closed five-member consortium claim.; Preserve laboratory Sulfobacillus oxidation/leaching + and low-ORP advantage; bound field genus-to-species and thermal inference. Issue #1356; reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml' + llm_assisted: true diff --git a/kb/communities/Coscinodiscus_Synthetic_Community.yaml b/kb/communities/Coscinodiscus_Synthetic_Community.yaml index 877df565f..73ff4537f 100644 --- a/kb/communities/Coscinodiscus_Synthetic_Community.yaml +++ b/kb/communities/Coscinodiscus_Synthetic_Community.yaml @@ -204,16 +204,13 @@ taxonomy: and bacterial growth in the community explanation: Demonstrates dynamic temporal effect on diatom growth ecological_interactions: -- name: Diatom Primary Production and Carbon Release - description: 'Coscinodiscus radiatus performs oxygenic photosynthesis, fixing atmospheric CO2 and producing - organic carbon compounds that are released into the surrounding medium. These photosynthate and exudates - include amino acids, vitamins, and dimethylsulfoniopropionate (DMSP), which serve as key resources - for the associated bacteria. The release of dissolved organic carbon supports bacterial growth and - metabolism in this synthetic community. - - ' - interaction_type: MUTUALISM - scope: COMMUNITY_LEVEL +- name: Candidate Diatom Resource Provision + description: The phototrophic diatom is a candidate supplier of bacterial resources. Coculture increased Crocei1 + abundance, but did not significantly increase CS4 or Rose1 and inhibited CS1 after day 9. Thus diatom presence + has partner-specific effects; neither universal bacterial dependence nor direct release and transfer of DMSP, + amino acids or vitamins was established. Photosynthetic resource provision is a proposed mediator rather than + a measured metabolite flux. + scope: PAIRWISE source_taxon: preferred_term: Coscinodiscus radiatus term: @@ -224,17 +221,17 @@ ecological_interactions: term: id: CHEBI:16457 label: S,S-dimethyl-beta-propiothetin - concentration: Diatom-produced organic sulfur compound + concentration: Candidate exchanged resource; release and partner-resolved transfer not measured - preferred_term: amino acids term: id: CHEBI:33709 label: amino acid - concentration: Organic nutrients released by diatom + concentration: Candidate exchanged resource; release and partner-resolved transfer not measured - preferred_term: vitamins term: id: CHEBI:33229 label: vitamin (role) - concentration: Growth factors released by diatom + concentration: Candidate exchanged resource; release and partner-resolved transfer not measured biological_processes: - preferred_term: photosynthesis term: @@ -245,23 +242,25 @@ ecological_interactions: id: GO:0015977 label: carbon fixation downstream: - - target: Bacterial DMSP Metabolism - description: Diatom-released DMSP and organic compounds support bacterial growth + - target: Bacterial DMSP Catabolic Potential + description: HYPOTHESIZED - diatom-derived DMSP could provide substrate for the genomic catabolic potential + of CS4 and Rose1. No partner-resolved release, consumption or flux was measured, and added DMSP as the carbon-only + supplement did not promote growth under the tested minimal-medium conditions. evidence: - reference: PMID:36300970 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VITRO - snippet: No synergistic effects between bacteria in the presence of the diatom was observed - explanation: Demonstrates diatom provision of organic nutrients to bacteria -- name: Bacterial DMSP Metabolism - description: 'The Roseobacteraceae members (Mameliella CS4 and Roseovarius Rose1) metabolize dimethylsulfoniopropionate - (DMSP) released by the diatom through demethylation and cleavage pathways. This sulfur cycling activity - is important for carbon and sulfur biogeochemistry in marine systems. The differential capacity for - DMSP metabolism among the bacteria (with Croceibacter lacking this capability) reflects functional - specialization within the community. - - ' - interaction_type: MUTUALISM + snippet: Crocei1 grew to significantly higher density + explanation: 'Primary Results, pairwise bacterial growth paragraph (Fig. 3d): supports increased Crocei1 abundance + in diatom coculture, not a measured chemical mediator. qPCR was calibrated against cells; it is not viable + coculture plating. Short excerpt verified against the publisher preview; absent from the abstract-only local + cache.' +- name: Bacterial DMSP Catabolic Potential + description: BLASTP comparisons of predicted bacterial proteins support DMSP demethylation/cleavage potential + in CS4 and Rose1. Crocei1 had weak homologs and CS1 lacked the key DmdA sequence, although downstream homologs + suggest possible MMPA use. This is sequence-based potential, not measured DMSP consumption, DMS release or diatom-to-bacterium + flux. DMSP carbon-only supplementation did not promote growth; that negative growth result does not itself prove + absence of catabolic activity. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Mameliella CS4 @@ -272,11 +271,6 @@ ecological_interactions: term: id: NCBITaxon:74030 label: Roseovarius - source_taxon: - preferred_term: Mameliella CS4 - term: - id: NCBITaxon:1434019 - label: Mameliella metabolites: - preferred_term: dimethylsulfoniopropionate term: @@ -286,7 +280,7 @@ ecological_interactions: term: id: CHEBI:17437 label: dimethyl sulfide - concentration: Product of DMSP cleavage pathway + concentration: Candidate cleavage product; production not assayed in this community biological_processes: - preferred_term: dimethylsulfoniopropionate metabolic process term: @@ -298,24 +292,24 @@ ecological_interactions: label: sulfur compound metabolic process evidence: - reference: PMID:36300970 - supports: SUPPORT - evidence_source: IN_VITRO - snippet: We further established a synthetic phytoplankton/bacteria community with the centric diatom, - Coscinodiscus radiatus, and 4 phylogenetically distinctive bacterial isolates, Mameliella sp., Roseovarius - sp., Croceibacter sp., and Marinobacter sp. Supported by a Lotka-Volterra model, we show that interactions - within the consortium are specific and that the sum of the pairwise interactions can explain algal - and bacterial growth in the community - explanation: Demonstrates bacterial capacity to metabolize diatom-derived DMSP + supports: PARTIAL + evidence_source: COMPUTATIONAL + snippet: potential for DMSP consumption + explanation: Primary Results and Table 2 infer catabolic potential from genome-protein homology. Not a metabolite-consumption + assay or reciprocal-benefit test. Short excerpt checked in the publisher preview, absent from the abstract-only + cache. + computational_provenance: + prediction_type: SEQUENCE_HOMOLOGY + tools: + - tool_name: BLASTP + parameters: Known DMSP-pathway proteins compared with predicted proteins from four bacterial genomes; Table + 2 reports coverage and identity. - name: Growth Phase-Dependent Bacterial Effects - description: 'The bacterial members exert context-dependent effects on diatom growth that vary with - algal fitness state and growth phase. Mameliella CS4 and Roseovarius Rose1 extended the stationary - phase and promoted survival during late growth phases, while Croceibacter Crocei1 consistently inhibited - growth. Marinobacter CS1 initially suppressed growth but later enabled recovery. These dynamic temporal - effects demonstrate that bacterial function depends on the physiological state of the diatom and timing - of the interaction, with no universal growth-promoting or algicidal bacteria. - - ' - interaction_type: MUTUALISM + description: 'In pairwise cultures, CS4 and Rose1 prolonged algal stationary-phase survival; Crocei1 inhibited + the diatom across phases. CS1 initially suppressed algal growth, followed by recovery to control-like density + after day 9, not necessarily growth above control. Reciprocal bacterial responses differed: Crocei1 benefited, + CS1 was inhibited significantly on days 11-21, and CS4/Rose1 showed no significant diatom effect. These measured + responses do not support one global mutualism label or identify their chemical mediators.' scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Coscinodiscus radiatus @@ -338,11 +332,6 @@ ecological_interactions: term: id: NCBITaxon:2742 label: Marinobacter - source_taxon: - preferred_term: Mameliella CS4 - term: - id: NCBITaxon:1434019 - label: Mameliella biological_processes: - preferred_term: interspecies interaction between organisms term: @@ -353,26 +342,26 @@ ecological_interactions: id: GO:0009607 label: response to biotic stimulus downstream: - - target: Community-Level Emergent Effects - description: Pairwise C. radiatus-bacterium effects vary across partners and growth phases and combine - into an all-member culture whose net effect on algal growth is inhibitory without requiring bacterial-bacterial - synergy. + - target: Community Growth and Pairwise Model + description: PARTIAL - the measured partner- and phase-specific effects combine into the observed predominantly + inhibitory all-member algal trajectory. A generalized Lotka-Volterra model fitted to monocultures and pairwise + cultures reproduces that trajectory with separate early/late parameter sets; this supports the proposed contribution + without isolating chemical mediators or proving higher-order interactions universally absent. evidence: - reference: PMID:36300970 supports: SUPPORT evidence_source: IN_VITRO - snippet: Bacteria utilize substrates produced by the phototrophic algae, while algal growth can be - supported by bacterial exudates - explanation: Demonstrates context-dependent nature of diatom-bacteria interactions -- name: Bacterial Auxotrophy and Nutrient Dependence - description: 'Genome analysis revealed extensive auxotrophic requirements among the bacteria, with Croceibacter - Crocei1 showing the highest dependence on external nutrients. Most bacteria required amino acids and - vitamins (Rose1 needed niacin/B3, while Crocei1 and CS1 needed vitamin B12), indicating strong reliance - on diatom-derived compounds for growth. This auxotrophy drives the dependence of bacteria on the photosynthetic - diatom and shapes community assembly and dynamics. - - ' - interaction_type: COMMENSALISM + snippet: The activity of bacteria can even change during the aging of an algal culture from inhibitory to stimulatory + or vice versa + explanation: Supports phase-dependent response. Primary Results and Figs. 2-3 text distinguish partner-specific + algal and bacterial trajectories, not a universal positive fitness sign or resolved chemical mechanism. +- name: Bacterial Nutrient Supplement Responses + description: Minimal-medium supplementation with a pooled 13-amino-acid mixture plus vitamins improved growth + of Rose1, Crocei1 and CS1; CS4 did not respond. DMSP or glucose supplied as carbon alone did not promote any + of the four bacteria. These are direct nutrient-response assays, not merely genomic predictions. Genome analysis + separately predicted amino-acid deficits, Rose1 niacin deficiency and Crocei1/CS1 vitamin B12 biosynthesis deficits. + The pooled rescue does not establish which individual nutrient was limiting, its exact B12 chemical form, or + donation by the diatom. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Roseovarius Rose1 @@ -392,16 +381,12 @@ ecological_interactions: term: id: CHEBI:33709 label: amino acid - - preferred_term: cobalamin - term: - id: CHEBI:15982 - label: cob(I)alamin - concentration: Vitamin B12 required by Crocei1 and CS1 - - preferred_term: niacin + concentration: Externally supplied pooled amino-acid/vitamin supplement; no individual nutrient rescue assigned + - preferred_term: vitamins term: - id: CHEBI:15940 - label: nicotinic acid - concentration: Vitamin B3 required by Rose1 + id: CHEBI:33229 + label: vitamin (role) + concentration: Externally supplied pooled amino-acid/vitamin supplement; no individual nutrient rescue assigned biological_processes: - preferred_term: vitamin metabolic process term: @@ -415,22 +400,18 @@ ecological_interactions: - reference: PMID:36300970 supports: SUPPORT evidence_source: IN_VITRO - snippet: We further established a synthetic phytoplankton/bacteria community with the centric diatom, - Coscinodiscus radiatus, and 4 phylogenetically distinctive bacterial isolates, Mameliella sp., Roseovarius - sp., Croceibacter sp., and Marinobacter sp. Supported by a Lotka-Volterra model, we show that interactions - within the consortium are specific and that the sum of the pairwise interactions can explain algal - and bacterial growth in the community - explanation: Demonstrates bacterial auxotrophy and dependence on diatom-derived nutrients -- name: Community-Level Emergent Effects - description: 'When all four bacteria were combined with the diatom, an overall inhibitory effect on - algal growth emerged throughout all growth phases. The growth-promoting effects of CS4 and Rose1 observed - in pairwise cultures did not prevail in the four-member community, demonstrating emergent community-level - properties. A Lotka-Volterra model successfully predicted community composition using only pairwise - interaction parameters, indicating that higher-order bacterial-bacterial interactions were negligible - and that the community dynamics arose primarily from pairwise diatom-bacteria interactions. - - ' - interaction_type: COMPETITION + snippet: all other bacteria grew better + explanation: Primary Results nutrient-supplementation paragraph and Fig. 5 caption report improved Rose1/Crocei1/CS1 + growth with amino acids plus vitamins, with CS4 as the nonresponding comparison. Methods describe the pooled + mixture. Not individual B12/B3 rescue or diatom transfer. Short excerpt verified in publisher preview, absent + from abstract-only cache. +- name: Community Growth and Pairwise Model + description: The all-member culture generally had lower algal cell counts than the axenic control, especially + before day 17; the paper also describes a very-late survival benefit. Bacteria performed similarly or slightly + better than in mono/pairwise cultures, so this is not reciprocal competitive harm. A generalized Lotka-Volterra + model fitted to mono/pairwise data with distinct days 1-17 and 17-41 parameter sets predicted the algal community + trajectory; a neutral model failed. Bacterial-bacterial terms were unnecessary for this tested fit, not proven + universally absent, and chemical cross-feeding was not thereby established. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Coscinodiscus radiatus @@ -453,11 +434,6 @@ ecological_interactions: term: id: NCBITaxon:2742 label: Marinobacter - source_taxon: - preferred_term: Coscinodiscus radiatus - term: - id: NCBITaxon:33642 - label: Coscinodiscus radiatus biological_processes: - preferred_term: interspecies interaction between organisms term: @@ -472,7 +448,9 @@ ecological_interactions: supports: SUPPORT evidence_source: IN_VITRO snippet: No synergistic effects between bacteria in the presence of the diatom was observed - explanation: Demonstrates emergent community-level effects and predictability from pairwise interactions + explanation: Supports the condition-bounded lack of detected bacterial synergy. Primary Results/Methods report + empirical community counts and a phase-specific pairwise model, not universal absence of higher-order ecology + or reciprocal competitive harm. related_ingredients: - preferred_term: carbon dioxide chebi_term: @@ -715,3 +693,35 @@ environmental_factors: within the consortium are specific and that the sum of the pairwise interactions can explain algal and bacterial growth in the community explanation: Demonstrates role of nutrient availability in shaping community structure +discussions: +- discussion_id: coscinodiscus_resource_transfer_and_mediation + prompt: Which exchanged compounds mediate the partner- and phase-specific growth responses? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Candidate Diatom Resource Provision + - ecological_interactions#Bacterial DMSP Catabolic Potential + - ecological_interactions#Growth Phase-Dependent Bacterial Effects + - ecological_interactions#Bacterial Nutrient Supplement Responses + - ecological_interactions#Community Growth and Pairwise Model + rationale: 'Complete primary main text, tables and captions support pairwise growth, pooled nutrient supplementation + and a phase-specific community model. Direct DMSP release/consumption flux, individual nutrient rescue and mediator-specific + perturbations remain unresolved; carbon-only supplementation was negative. CS4 is a nonresponding supplementation + control despite predicted deficits. Prior rich-medium stores may buffer responses. The model fit does not rule + out interactions under other nutrient conditions. The publisher-provided preview was read without copying its + copyrighted body; three brief Results excerpts remain a documented abstract-cache retrieval gap under #596. + No figure images or supplementary files were inspected. Non-graph roles, cultivation parameters and source discrepancies + remain in #1359.' + posed_by: codex + posed_date: '2026-10-05' +curation_history: +- timestamp: '2026-10-06T02:52:27Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Retain candidate diatom resource provision and actual Crocei1 promotion without universal dependence + or measured metabolite donation.; Keep DMSP homology potential computational, distinct from consumption, product + flux and a negative carbon-only growth assay.; Preserve distinct reciprocal growth signs and control-relative + algal recovery rather than global mutualism.; Preserve real pooled nutrient responses and the CS4 negative control + without individual-vitamin rescue or exact B12-form claims.; Retain empirical community inhibition and phase-specific + model success without reciprocal harm or universal exclusion of higher-order interactions. Issue #1357; reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml' + llm_assisted: true diff --git a/reports/causal_graph_review/adversarial-review-20261005-batch25.yaml b/reports/causal_graph_review/adversarial-review-20261005-batch25.yaml new file mode 100644 index 000000000..90b3ce6d2 --- /dev/null +++ b/reports/causal_graph_review/adversarial-review-20261005-batch25.yaml @@ -0,0 +1,130 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 2eb1818f3d94f9420099a991136254501b543891 +decision_ledger: reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml +validation_report: reports/causal_graph_review/validation-20261005-batch25.json +scope: +- kb/communities/Copper_Biomining_Heap_Leach.yaml +- kb/communities/Coscinodiscus_Synthetic_Community.yaml +findings: +- issue: 1356 + severity: P2 + finding: Field DNA/RNA succession promoted into resolved flux, competition and a closed syntrophic cycle; laboratory + conditions and species conflated. + disposition: addressed_and_locally_verified +- issue: 1357 + severity: P2 + finding: DMSP homology and pooled nutrient rescue promoted into specific vitamin donation, chemical flux and global + ecological fitness signs. + disposition: addressed_with_documented_reference_cache_limit +- issue: 1360 + severity: P2 + finding: Legitimate intrinsic-source corrections exceed the previous mixed-scope census ceiling of 122. + disposition: Exact census verified; only ceiling/comment changed to 124; full regression rerun passes and initial + failure remains recorded. +open_nongraph_followups: +- issue: 1358 + disposition: not_closed_by_graph_only_patch +- issue: 1359 + disposition: not_closed_by_graph_only_patch +adversarial_checks: +- Every original node and arrow reviewed against whole records and cited primary sources. Retain ten nodes/ten arrows + with seven exact renames; no new structure or Edison job. +- Copper field DNA/rRNA supports abundance/activity, not species-resolved oxidation flux or selective competition. + Ferroplasma approximately 10^3 copies/mL differs from late L. ferriphilum approximately 10^5. +- The indigenous 2009 heap is an open community with a 400-day cycle and mixed copper sulfides, not a closed five-member + culture. Preserve conditional substrate/regeneration feedback, not unsupported syntrophy or niche partitioning. +- Separate 2018 A. caldus/L. ferriphilum/S. thermosulfidooxidans cultures at 38 +/- 2 C from 2022 monocultures including + L. ferrooxidans, and from field genus-level Sulfobacillus RNA. Remove iron-ion-transport overannotation. +- 'Preserve measured lower-redox leaching advantage and nonmonotonic response: A. ferrooxidans retains iron oxidation + under SX reagent despite copper recovery falling to abiotic level; Sulfobacillus low-dose recovery differs from + high-dose impairment.' +- Stable A. thiooxidans DNA counts do not measure constant acid flux; RNA supports activity. General chemistry quoted + from the 2022 Introduction is OTHER/PARTIAL, not an in vivo five-member assay. +- Coscinodiscus has real pooled amino-acid/vitamin supplementation assays. Preserve the three responders and CS4 + negative control. Do not substitute a genome-only account, individual B12/B3 rescue or demonstrated diatom donation. +- DMSP pathway BLASTP is computational homology with provenance, not measured consumption or DMS release. Carbon-only + supplementation failure does not prove no catabolism. +- Remove unsupported cob(I)alamin exact-form assignment from the pooled supplement node while retaining specific + genome predictions in bounded prose. Use existing amino-acid and vitamin-role annotations for the tested mixture. +- Preserve Crocei1 promotion, CS1 suppression, CS4/Rose1 neutral bacterial effects, and control-relative algal recovery. + Do not assert one global mutualism/commensalism or reciprocal competition sign. +- Retain empirical all-member inhibition with late-survival nuance and generalized Lotka-Volterra model success + using separate days 1-17 and 17-41 parameter sets. No bacterial-bacterial terms needed for this fit does not prove + universal absence of higher-order interactions. +- Three brief Results quotes total 15 words. They were verified in the ASM-provided primary preview and remain absent + from the abstract-only cache. Reference exit 1 and three MISMATCH diagnostics are preserved, not mislabeled passed + or repaired by circular cache text. +- Four complete primary main bodies and three contextual abstracts reviewed. No figure images or supplementary files + inspected, no visually validated OCR equations, no new full copyrighted body or PDF in git. +- 'Eight tracked cache artifacts, canonical taxonomy and unrelated raw YAML blocks preserved. Metadata followups + #1358/#1359 and broader cache/link issues remain open.' +- 'Four intrinsic source-only scopes move four taxa from solely community credit while total canonical/community + coverage remains 1499. Both records become mixed-scope. Initial regressions: 292 pass and one stale ceiling failure. + #1360 changes only the ceiling 122 -> 124 and its explanatory comment; all other bounds, participant checks and + connectivity behavior remain unchanged. The complete suite is rerun successfully.' +- Coverage is 123/460, not completion. This is source-based self-adversarial review, not independent approval or + protected CI success. +verification: + status: complete_with_documented_reference_retrieval_gaps + checks: 27 + passing_command_exits: 25 + failed_reference_commands: 1 + records: 460 + nodes: 1474 + edges: 710 + review_status_counts: + needs_research: 3 + pending: 334 + reviewed: 123 + structural_defects: 0 + network_errors: 0 + network_warnings: 25 + new_network_warnings: 0 + unchanged_raw_blocks: 27 + snippet_counts: + MATCH: 46 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 3 + NOCONTENT: 0 + published_description_coverage: + pages: 456 + node_descriptions: 1460 + edge_descriptions: 702 + render_determinism: passed + regressions: 293 passed in 187.32s (0:03:07) + rights: 3 passed in 1.93s + rights_import_root_verified: true + caches_unchanged: true + primary_artifact_hashes_rechecked: true + corpus_sentinels_unchanged: false + connectivity_survey_before: + records: 460 + with_community_level: 389 + mixed: 122 + community_level_only: 267 + taxa: 1499 + credited_solely_by_the_rule: 1221 + connectivity_survey: + records: 460 + with_community_level: 389 + mixed: 124 + community_level_only: 265 + taxa: 1499 + credited_solely_by_the_rule: 1217 + connectivity_delta: + records: 0 + with_community_level: 0 + mixed: 2 + community_level_only: -2 + taxa: 0 + credited_solely_by_the_rule: -4 + main_commands: 23 + remediation_commands: 4 + initial_regression_failure_fixed: true + unresolved_failed_commands: 1 + other_corpus_sentinels_unchanged: true + census_bound_issue: 1360 diff --git a/reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml b/reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml new file mode 100644 index 000000000..dfdf2fcab --- /dev/null +++ b/reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml @@ -0,0 +1,323 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 2eb1818f3d94f9420099a991136254501b543891 +issues: +- 1356 +- 1357 +- 1360 +open_nongraph_followups: +- 1358 +- 1359 +issue_deduplication: + all_state_issue_titles_bodies: 691 + ignored_hidden_local_files_included: true + comments_exhaustive: false + relevant_issues_read: + - 596 + - 1082 + - 1289 + - 1344 + finding: No exact new graph duplicate in searched scope; broad cache and external-link issues remain open. +reference_cache_original_hashes: + references_cache/PMID_36300970.md: 27c42cb32ffce7ca994a115959fbb6aa13ef7d2d64fc9c6179ab588a0007daad + references_cache/doi_10.3389_fmicb.2022.820052.md: 17d049e355cb0e99c41ab947a8336594a3bf6313204209ca59a1f8538d0cb2cd + references_cache/doi_10.3389_fmicb.2018.03059.md: a20b7009f3ea56dcba891cac42b9b8cae962b80ccb470e37ee8945f76122fffd + references_cache/PMID_22123759.txt: 7ced7a1e9863755e1af1bc7cf3de11d6c889770e4a7dd725423cd937134393f3 + references_cache/doi_10.1038_s41598-021-95324-9.md: 9186374fcd627ba15f1d6f5cc3473c0032d872ab2073459e61068347b8995577 + references_cache/PMID_19104861.txt: 8aa57bcf203a71cd9b5df4b79c3c668ed5eec29e43c787deeb347a72aa391538 + references_cache/doi_10.1111_j.1751-7915.2009.00112.x.md: 9e3ea21b12625ecc4e829d5677761bd3dbf5aadb29b1970e0956cac93ace72e9 + references_cache/doi_DOI:10.3389_fmicb.2018.03059.json: 14a45425d23cbb930e450dd34ea6b8eba7e1c605b28b0efad6c0ad1e3798c2b2 +limitations: +- Two records, ten nodes and ten arrows retained; seven renames and two focused gaps/histories. No new graph structure + or Edison spend. +- Four complete primary main bodies and three contextual abstracts reviewed; no figure images or supplementary files + inspected. +- 'Three short Coscinodiscus Results quotes (15 words total) were verified in publisher-provided preview but remain + absent from abstract-only local cache; automated mismatch is a documented retrieval gap under #596, not a silently + passed independent match.' +- Eight tracked cache artifacts unchanged; no full copyrighted body or PDF added. +- 'Unrelated metadata and canonical taxa preserved, not certified; #1358/#1359 remain separate followups.' +- 'Issue #1360 accounts for the measured mixed-scope count 122 -> 124; only that census ceiling and its explanatory comment change. Other bounds, participant checks and connectivity behavior stay unchanged.' +- Self-adversarial review is not independent approval, protected CI success or full-corpus completion. +records: +- path: kb/communities/Copper_Biomining_Heap_Leach.yaml + id: CommunityMech:000019 + original_sha256: 49e5dcc2b5ca5164ebb9437f56bddbb7806d97d8f04ee8b89d68d170ffd3c1e3 + record_sha256: 5c620e46ecbe040463098d40373531e88b5b2bc12f08bb57b4d926b3537a0c4e + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml + scope: Whole record and every original node/arrow; primary access and cache limits below. + summary: Separate measured intrinsic iron oxidation from early-heap association and failed recovery under SX reagent.; + Retain observed succession with correct abundance scale and species boundaries, without competition or resolved + field flux.; Distinguish sulfur-oxidation capacity and RNA activity from stable DNA counts, constant acid flux + and selective passivation removal.; Retain conditional mineral/redox feedback and direct laboratory outcomes + without a closed five-member consortium claim.; Preserve laboratory Sulfobacillus oxidation/leaching and low-ORP + advantage; bound field genus-to-species and thermal inference. + renamed_nodes: + Ferrous Iron Oxidation in Early Heaps: Acidithiobacillus Iron Oxidation and Early-Heap Association + Ferrous Iron Oxidation in Aged Heaps: Aged-Heap Iron-Oxidizer Association + Thermophilic Iron and Sulfur Oxidation: Sulfobacillus Iron and Sulfur Oxidation Capacity + node_decisions: + - node: Acidithiobacillus Iron Oxidation and Early-Heap Association + rationale: Separate measured intrinsic iron oxidation from early-heap association and failed recovery under + SX reagent. + - node: Aged-Heap Iron-Oxidizer Association + rationale: Retain observed succession with correct abundance scale and species boundaries, without competition + or resolved field flux. + - node: Sulfur Oxidation to Sulfuric Acid + rationale: Distinguish sulfur-oxidation capacity and RNA activity from stable DNA counts, constant acid flux + and selective passivation removal. + - node: Copper Sulfide Dissolution + rationale: Retain conditional mineral/redox feedback and direct laboratory outcomes without a closed five-member + consortium claim. + - node: Sulfobacillus Iron and Sulfur Oxidation Capacity + rationale: Preserve laboratory Sulfobacillus oxidation/leaching and low-ORP advantage; bound field genus-to-species + and thermal inference. + edges_before: + - source: Ferrous Iron Oxidation in Early Heaps + target: Copper Sulfide Dissolution + description: Fe³⁺ oxidizes chalcopyrite to release Cu²⁺ and regenerate Fe²⁺ + - source: Ferrous Iron Oxidation in Aged Heaps + target: Copper Sulfide Dissolution + description: Sustained Fe³⁺ generation maintains copper leaching in aged heaps + - source: Sulfur Oxidation to Sulfuric Acid + target: Copper Sulfide Dissolution + description: Sulfuric acid production sustains the low pH needed for ferric-iron attack on chalcopyrite + - source: Copper Sulfide Dissolution + target: Ferrous Iron Oxidation in Early Heaps + description: Released Fe²⁺ is re-oxidized to regenerate Fe³⁺ oxidant + - source: Copper Sulfide Dissolution + target: Ferrous Iron Oxidation in Aged Heaps + description: Released Fe²⁺ also feeds the acid-tolerant iron oxidizers in aged heap strips + - source: Copper Sulfide Dissolution + target: Sulfur Oxidation to Sulfuric Acid + description: Released reduced inorganic sulfur compounds feed sulfur oxidation to sulfuric acid + - source: Copper Sulfide Dissolution + target: Thermophilic Iron and Sulfur Oxidation + description: Chalcopyrite-associated Fe²⁺ and sulfur substrates feed Sulfobacillus activity in hotter bioleaching + niches + - source: Thermophilic Iron and Sulfur Oxidation + target: Copper Sulfide Dissolution + description: Sulfobacillus iron and sulfur oxidation can maintain copper extraction in thermophilic chalcopyrite + bioleaching + edges_after: + - source: Acidithiobacillus Iron Oxidation and Early-Heap Association + target: Copper Sulfide Dissolution + description: PARTIAL - A. ferrooxidans iron oxidation can replenish ferric oxidant for mineral attack. The chemical + cycle and laboratory oxidation support this direction, but the SX assay shows that retained iron oxidation + need not sustain copper recovery, and the field contribution is not taxon-resolved. + - source: Aged-Heap Iron-Oxidizer Association + target: Copper Sulfide Dissolution + description: PARTIAL - iron oxidation by the aged-heap associated taxa could replenish ferric oxidant for dissolution. + Field succession and separate L. ferriphilum cultures support the proposed contribution without measuring + their individual heap fluxes or proving displacement-driven leaching. + - source: Sulfur Oxidation to Sulfuric Acid + target: Copper Sulfide Dissolution + description: PARTIAL - sulfur oxidation can generate acidity and limit reduced-sulfur accumulation, helping + sustain mineral attack under suitable conditions. A. thiooxidans-specific acid flux and passivation removal + were not selectively established in the field survey. + - source: Copper Sulfide Dissolution + target: Acidithiobacillus Iron Oxidation and Early-Heap Association + description: PARTIAL - mineral attack releases ferrous iron that can supply A. ferrooxidans oxidation, regenerating + ferric oxidant. This is a chemically grounded substrate feedback, not a measured taxon-resolved closed loop + in the industrial heap. + - source: Copper Sulfide Dissolution + target: Aged-Heap Iron-Oxidizer Association + description: PARTIAL - released ferrous iron can supply the iron-oxidizing taxa associated with older strips. + Their individual uptake and feedback fluxes were not traced by the field abundance and RNA assays. + - source: Copper Sulfide Dissolution + target: Sulfur Oxidation to Sulfuric Acid + description: PARTIAL - mineral dissolution generates reduced inorganic sulfur substrates that can feed A. thiooxidans + sulfur oxidation. The reaction-cycle context supports direction, not selective proof of its share of field + acid generation or passivation control. + - source: Copper Sulfide Dissolution + target: Sulfobacillus Iron and Sulfur Oxidation Capacity + description: PARTIAL - chalcopyrite-associated ferrous iron and reduced sulfur can feed Sulfobacillus oxidation + in the tested cultures. This substrate feedback does not demonstrate exact-species transfer or activity in + hotter industrial heap niches. + - source: Sulfobacillus Iron and Sulfur Oxidation Capacity + target: Copper Sulfide Dissolution + description: PARTIAL - Sulfobacillus iron/sulfur oxidation can support leaching in the tested laboratory systems, + subject to redox potential and SX inhibition. The lower-ORP advantage contradicts a universal more-iron-oxidation + benefit; exact field-species and hot-zone contributions remain unresolved. + retained_edge_decisions: + - source: Acidithiobacillus Iron Oxidation and Early-Heap Association + target: Copper Sulfide Dissolution + rationale: PARTIAL - A. ferrooxidans iron oxidation can replenish ferric oxidant for mineral attack. The chemical + cycle and laboratory oxidation support this direction, but the SX assay shows that retained iron oxidation + need not sustain copper recovery, and the field contribution is not taxon-resolved. + - source: Aged-Heap Iron-Oxidizer Association + target: Copper Sulfide Dissolution + rationale: PARTIAL - iron oxidation by the aged-heap associated taxa could replenish ferric oxidant for dissolution. + Field succession and separate L. ferriphilum cultures support the proposed contribution without measuring + their individual heap fluxes or proving displacement-driven leaching. + - source: Sulfur Oxidation to Sulfuric Acid + target: Copper Sulfide Dissolution + rationale: PARTIAL - sulfur oxidation can generate acidity and limit reduced-sulfur accumulation, helping sustain + mineral attack under suitable conditions. A. thiooxidans-specific acid flux and passivation removal were not + selectively established in the field survey. + - source: Copper Sulfide Dissolution + target: Acidithiobacillus Iron Oxidation and Early-Heap Association + rationale: PARTIAL - mineral attack releases ferrous iron that can supply A. ferrooxidans oxidation, regenerating + ferric oxidant. This is a chemically grounded substrate feedback, not a measured taxon-resolved closed loop + in the industrial heap. + - source: Copper Sulfide Dissolution + target: Aged-Heap Iron-Oxidizer Association + rationale: PARTIAL - released ferrous iron can supply the iron-oxidizing taxa associated with older strips. + Their individual uptake and feedback fluxes were not traced by the field abundance and RNA assays. + - source: Copper Sulfide Dissolution + target: Sulfur Oxidation to Sulfuric Acid + rationale: PARTIAL - mineral dissolution generates reduced inorganic sulfur substrates that can feed A. thiooxidans + sulfur oxidation. The reaction-cycle context supports direction, not selective proof of its share of field + acid generation or passivation control. + - source: Copper Sulfide Dissolution + target: Sulfobacillus Iron and Sulfur Oxidation Capacity + rationale: PARTIAL - chalcopyrite-associated ferrous iron and reduced sulfur can feed Sulfobacillus oxidation + in the tested cultures. This substrate feedback does not demonstrate exact-species transfer or activity in + hotter industrial heap niches. + - source: Sulfobacillus Iron and Sulfur Oxidation Capacity + target: Copper Sulfide Dissolution + rationale: PARTIAL - Sulfobacillus iron/sulfur oxidation can support leaching in the tested laboratory systems, + subject to redox potential and SX inhibition. The lower-ORP advantage contradicts a universal more-iron-oxidation + benefit; exact field-species and hot-zone contributions remain unresolved. + removed_edge_decisions: [] + references: + - doi:10.1111/j.1751-7915.2009.00112.x + - doi:10.3389/fmicb.2018.03059 + - doi:10.3389/fmicb.2022.820052 + - doi:10.1038/s41598-021-95324-9 + - PMID:22123759 + - PMID:19104861 + issues: + - 1356 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/Copper_Biomining_Heap_Leach/2026-10-06T025228Z-codex-9c8b7f.yaml + source_review: + doi:10.1111/j.1751-7915.2009.00112.x: + url: https://pmc.ncbi.nlm.nih.gov/articles/PMC3815317/ + path: /private/tmp/communitymech-batch24/PMC3815317.xml + sha256: 98fa9e2416d7d3e7a8505121448bd4aadd44eac77603d59fb3d3fecc1fa6fdc6 + license: Copyright 2009 authors/journal; no new full body committed + reviewed_scope: 'Complete primary main body: Methods, Results, Discussion/Conclusion, main tables and displayed + captions. No figure images or supplementary files inspected.' + doi:10.3389/fmicb.2018.03059: + url: https://pmc.ncbi.nlm.nih.gov/articles/PMC6315122/ + path: /private/tmp/communitymech-batch24/PMC6315122.xml + sha256: 78bc2cc1d5990d5f151e3bb67114f5a850473a1f10eb92f7eca824c503a1039b + license: CC BY + reviewed_scope: 'Complete primary main body: Methods, Results, Discussion/Conclusion, main tables and displayed + captions. No figure images or supplementary files inspected.' + doi:10.3389/fmicb.2022.820052: + url: https://pmc.ncbi.nlm.nih.gov/articles/PMC8972061/ + path: /private/tmp/communitymech-batch24/PMC8972061.xml + sha256: 0aa10fd1dcac06b5e769dd0042ad638227aa38e54ccaa06d3607ab4bb108018a + license: CC BY 4.0 + reviewed_scope: 'Complete primary main body: Methods, Results, Discussion/Conclusion, main tables and displayed + captions. No figure images or supplementary files inspected.' + doi:10.1038/s41598-021-95324-9: + url: https://pubmed.ncbi.nlm.nih.gov/34381075/ + reviewed_scope: Complete abstract only, contextual source; not a full-body or exact-field mechanistic review. + PMID:22123759: + url: https://pubmed.ncbi.nlm.nih.gov/22123759/ + reviewed_scope: Complete abstract only, contextual source; not a full-body or exact-field mechanistic review. + PMID:19104861: + url: https://pubmed.ncbi.nlm.nih.gov/19104861/ + reviewed_scope: Complete abstract only, contextual source; not a full-body or exact-field mechanistic review. +- path: kb/communities/Coscinodiscus_Synthetic_Community.yaml + id: CommunityMech:000020 + original_sha256: f92a79a6011428899eba0cc8e8de5bbd1410bb2e2e7e13b10593869ad1fd3b32 + record_sha256: 96bf155c9e47de5f8934bbf367f392bfcee5073098125c841db171fd0b9dda1a + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml + scope: Whole record and every original node/arrow; primary access and cache limits below. + summary: Retain candidate diatom resource provision and actual Crocei1 promotion without universal dependence + or measured metabolite donation.; Keep DMSP homology potential computational, distinct from consumption, product + flux and a negative carbon-only growth assay.; Preserve distinct reciprocal growth signs and control-relative + algal recovery rather than global mutualism.; Preserve real pooled nutrient responses and the CS4 negative control + without individual-vitamin rescue or exact B12-form claims.; Retain empirical community inhibition and phase-specific + model success without reciprocal harm or universal exclusion of higher-order interactions. + renamed_nodes: + Diatom Primary Production and Carbon Release: Candidate Diatom Resource Provision + Bacterial DMSP Metabolism: Bacterial DMSP Catabolic Potential + Bacterial Auxotrophy and Nutrient Dependence: Bacterial Nutrient Supplement Responses + Community-Level Emergent Effects: Community Growth and Pairwise Model + node_decisions: + - node: Candidate Diatom Resource Provision + rationale: Retain candidate diatom resource provision and actual Crocei1 promotion without universal dependence + or measured metabolite donation. + - node: Bacterial DMSP Catabolic Potential + rationale: Keep DMSP homology potential computational, distinct from consumption, product flux and a negative + carbon-only growth assay. + - node: Growth Phase-Dependent Bacterial Effects + rationale: Preserve distinct reciprocal growth signs and control-relative algal recovery rather than global + mutualism. + - node: Bacterial Nutrient Supplement Responses + rationale: Preserve real pooled nutrient responses and the CS4 negative control without individual-vitamin rescue + or exact B12-form claims. + - node: Community Growth and Pairwise Model + rationale: Retain empirical community inhibition and phase-specific model success without reciprocal harm or + universal exclusion of higher-order interactions. + edges_before: + - source: Diatom Primary Production and Carbon Release + target: Bacterial DMSP Metabolism + description: Diatom-released DMSP and organic compounds support bacterial growth + - source: Growth Phase-Dependent Bacterial Effects + target: Community-Level Emergent Effects + description: Pairwise C. radiatus-bacterium effects vary across partners and growth phases and combine into + an all-member culture whose net effect on algal growth is inhibitory without requiring bacterial-bacterial + synergy. + edges_after: + - source: Candidate Diatom Resource Provision + target: Bacterial DMSP Catabolic Potential + description: HYPOTHESIZED - diatom-derived DMSP could provide substrate for the genomic catabolic potential + of CS4 and Rose1. No partner-resolved release, consumption or flux was measured, and added DMSP as the carbon-only + supplement did not promote growth under the tested minimal-medium conditions. + - source: Growth Phase-Dependent Bacterial Effects + target: Community Growth and Pairwise Model + description: PARTIAL - the measured partner- and phase-specific effects combine into the observed predominantly + inhibitory all-member algal trajectory. A generalized Lotka-Volterra model fitted to monocultures and pairwise + cultures reproduces that trajectory with separate early/late parameter sets; this supports the proposed contribution + without isolating chemical mediators or proving higher-order interactions universally absent. + retained_edge_decisions: + - source: Candidate Diatom Resource Provision + target: Bacterial DMSP Catabolic Potential + rationale: HYPOTHESIZED - diatom-derived DMSP could provide substrate for the genomic catabolic potential of + CS4 and Rose1. No partner-resolved release, consumption or flux was measured, and added DMSP as the carbon-only + supplement did not promote growth under the tested minimal-medium conditions. + - source: Growth Phase-Dependent Bacterial Effects + target: Community Growth and Pairwise Model + rationale: PARTIAL - the measured partner- and phase-specific effects combine into the observed predominantly + inhibitory all-member algal trajectory. A generalized Lotka-Volterra model fitted to monocultures and pairwise + cultures reproduces that trajectory with separate early/late parameter sets; this supports the proposed contribution + without isolating chemical mediators or proving higher-order interactions universally absent. + removed_edge_decisions: [] + references: + - PMID:36300970 + issues: + - 1357 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/Coscinodiscus_Synthetic_Community/2026-10-06T025228Z-codex-c5e0cf.yaml + source_review: + PMID:36300970: + url: https://www.researchgate.net/publication/364814644_Dynamic_Diatom-Bacteria_Consortia_in_Synthetic_Plankton_Communities + doi: 10.1128/aem.01619-22 + publisher_attribution: ASM-provided publisher full-text preview, explicitly identified on page + license: Copyright 2022 American Society for Microbiology, all rights reserved + reviewed_scope: Complete primary main body, Methods, Results, Discussion/Conclusion, Tables 1-2 and displayed + captions. No figure images or supplementary files inspected; OCR equations not visually validated. + cache_scope: Existing abstract-only cache byte-preserved; three new short Results quotes independently read + in publisher preview, not matched by local abstract. No curated excerpt promoted to independent cache text. + new_body_quotes_words: 15 diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv index 816daee6e..c60d18cc4 100644 --- a/reports/causal_graph_review/inventory.tsv +++ b/reports/causal_graph_review/inventory.tsv @@ -120,10 +120,10 @@ kb/communities/Coastal_Forested_Wetland_Seawater_Ion_Microcosm_Community.yaml Co kb/communities/Community_G_GenX_Biodegradation_Consortium.yaml CommunityMech:000387 4aefdcd766a663a1d8fd547207b3f754cfcf6bc938f2212ea4389ca221aacb8d 1 0 55.0 reports/causal_graph_review/decisions/20261005-three-records-batch23.yaml reviewed kb/communities/Composting_SynCom_Lignocellulose_Degradation_Humus.yaml CommunityMech:000277 16e496ddf18a513d3b3ca26c61999146cdf18b0675044ad7ae0d1425482ed270 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch23.yaml reviewed kb/communities/Coniochaeta_Sphingobacterium_Citrobacter_Wheat_Straw_Consortium.yaml CommunityMech:000195 eb6927ba0ac59c0884bc3f479f20606ca4ae1f80b0855c415759db879a03fd2f 4 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch23.yaml reviewed -kb/communities/Copper_Biomining_Heap_Leach.yaml CommunityMech:000019 49e5dcc2b5ca5164ebb9437f56bddbb7806d97d8f04ee8b89d68d170ffd3c1e3 5 8 100.0 pending +kb/communities/Copper_Biomining_Heap_Leach.yaml CommunityMech:000019 5c620e46ecbe040463098d40373531e88b5b2bc12f08bb57b4d926b3537a0c4e 5 8 90.0 reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml reviewed kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml CommunityMech:000453 2b61b970b93b4db345670df9f86f00ba299b29ba76cb56b99333fd8bf68e7c6d 2 0 55.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml CommunityMech:000294 1522534e0e993cff111c4fcde85182868aeae81389cb47120d97a3882b88250d 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed -kb/communities/Coscinodiscus_Synthetic_Community.yaml CommunityMech:000020 f92a79a6011428899eba0cc8e8de5bbd1410bb2e2e7e13b10593869ad1fd3b32 5 2 100.0 pending +kb/communities/Coscinodiscus_Synthetic_Community.yaml CommunityMech:000020 96bf155c9e47de5f8934bbf367f392bfcee5073098125c841db171fd0b9dda1a 5 2 90.0 reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml reviewed kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml CommunityMech:000293 5dc07af806fbaa10b2eb522c2e5221c404aabc6ff58ea1f9cec7062ba079f09e 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml CommunityMech:000252 57f51f8d2b027fa5a47e9cb28eac879906288e696892879c71a63c2db1091662 3 2 100.0 pending kb/communities/Cultivated_Meat_Contaminant_SynCom.yaml CommunityMech:000366 432da24bbdadb8fb88ea3c7aec46d75743748ef94449b645a1a199bd651d047e 2 0 70.0 pending diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json index 7578237d0..83847f943 100644 --- a/reports/causal_graph_review/summary.json +++ b/reports/causal_graph_review/summary.json @@ -8,8 +8,8 @@ "records_without_edges": 141, "review_status_counts": { "needs_research": 3, - "pending": 336, - "reviewed": 121 + "pending": 334, + "reviewed": 123 }, "structural_defects": [], "network_audit": [ diff --git a/reports/causal_graph_review/validation-20261005-batch25.json b/reports/causal_graph_review/validation-20261005-batch25.json new file mode 100644 index 000000000..400b5f88f --- /dev/null +++ b/reports/causal_graph_review/validation-20261005-batch25.json @@ -0,0 +1,601 @@ +{ + "base_commit": "2eb1818f3d94f9420099a991136254501b543891", + "scope": [ + "kb/communities/Copper_Biomining_Heap_Leach.yaml", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml" + ], + "reference_validator_version": "0.1.7", + "results": [ + { + "check": "Copper_Biomining_Heap_Leach-schema", + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Copper_Biomining_Heap_Leach.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "No issues found\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-strict", + "command": [ + "python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/Copper_Biomining_Heap_Leach-strict.tsv", + "kb/communities/Copper_Biomining_Heap_Leach.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "Validating 1 files with 1 workers; schema=src/communitymech/schema/communitymech.yaml\n\n=== validate-strict summary ===\n files scanned: 1\n files with ERROR: 0\n total ERROR rows: 0\n TSV: /Copper_Biomining_Heap_Leach-strict.tsv\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-terms", + "command": [ + "linkml-term-validator", + "validate-data", + "kb/communities/Copper_Biomining_Heap_Leach.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "\u2705 Validation passed\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-references-explained", + "command": [ + "linkml-reference-validator", + "validate", + "data", + "kb/communities/Copper_Biomining_Heap_Leach.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "Validating kb/communities/Copper_Biomining_Heap_Leach.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-snippets", + "command": [ + "python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Copper_Biomining_Heap_Leach.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "# 32 evidence snippets scanned across 1 files\n MATCH 32\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-rank", + "command": [ + "python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Copper_Biomining_Heap_Leach.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000019\",\n \"name\": \"Copper Biomining Heap Leach Consortium\",\n \"score\": 90.0,\n \"taxonomy\": 5,\n \"connected_taxa\": 5,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 5,\n \"downstream_edges\": 8,\n \"interaction_evidence\": 10,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Copper_Biomining_Heap_Leach.yaml\"\n }\n]\n" + }, + { + "check": "Copper_Biomining_Heap_Leach-history-0", + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Copper_Biomining_Heap_Leach/2026-10-06T025228Z-codex-9c8b7f.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "No issues found\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-schema", + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "No issues found\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-strict", + "command": [ + "python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/Coscinodiscus_Synthetic_Community-strict.tsv", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "Validating 1 files with 1 workers; schema=src/communitymech/schema/communitymech.yaml\n\n=== validate-strict summary ===\n files scanned: 1\n files with ERROR: 0\n total ERROR rows: 0\n TSV: /Coscinodiscus_Synthetic_Community-strict.tsv\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-terms", + "command": [ + "linkml-term-validator", + "validate-data", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "\u2705 Validation passed\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-references-explained", + "command": [ + "linkml-reference-validator", + "validate", + "data", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 1, + "expected_exit_codes": [ + 0 + ], + "output": "Validating kb/communities/Coscinodiscus_Synthetic_Community.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Issues (3):\n [ERROR] Text part not found as substring: 'Crocei1 grew to significantly higher density' (note: only the abstract is cached for PMID:36300970; try `just cache-fulltext PMID:36300970`)\n Location: ecological_interactions[0].evidence[0].snippet\n Reference: PMID:36300970\n [ERROR] Text part not found as substring: 'potential for DMSP consumption' (note: only the abstract is cached for PMID:36300970; try `just cache-fulltext PMID:36300970`)\n Location: ecological_interactions[1].evidence[0].snippet\n Reference: PMID:36300970\n [ERROR] Text part not found as substring: 'all other bacteria grew better' (note: only the abstract is cached for PMID:36300970; try `just cache-fulltext PMID:36300970`)\n Location: ecological_interactions[3].evidence[0].snippet\n Reference: PMID:36300970\n\nValidation Summary:\n Total checks: 3\n Issues found: 3\n\n[annotate] rewrote 3 misleading 'only abstract available' note(s) (#496)\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-snippets", + "command": [ + "python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "# 17 evidence snippets scanned across 1 files\n MATCH 14\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 3\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n 3 (3 hard) kb/communities/Coscinodiscus_Synthetic_Community.yaml\n\n# MISMATCH/WEAK detail\n [MISMATCH cov=0.03] kb/communities/Coscinodiscus_Synthetic_Community.yaml PMID:36300970\n Crocei1 grew to significantly higher density...\n [MISMATCH cov=0.0] kb/communities/Coscinodiscus_Synthetic_Community.yaml PMID:36300970\n potential for DMSP consumption...\n [MISMATCH cov=0.04] kb/communities/Coscinodiscus_Synthetic_Community.yaml PMID:36300970\n all other bacteria grew better...\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-rank", + "command": [ + "python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Coscinodiscus_Synthetic_Community.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000020\",\n \"name\": \"Coscinodiscus Synthetic Community\",\n \"score\": 90.0,\n \"taxonomy\": 5,\n \"connected_taxa\": 5,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 5,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 5,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Coscinodiscus_Synthetic_Community.yaml\"\n }\n]\n" + }, + { + "check": "Coscinodiscus_Synthetic_Community-history-0", + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Coscinodiscus_Synthetic_Community/2026-10-06T025228Z-codex-c5e0cf.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "No issues found\n" + }, + { + "check": "inventory", + "command": [ + "python3", + "reports/causal_graph_review/build_inventory.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "{\n \"scope\": \"Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.\",\n \"semantic_review_rule\": \"Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.\",\n \"records\": 460,\n \"nodes\": 1474,\n \"edges\": 710,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 141,\n \"review_status_counts\": {\n \"needs_research\": 3,\n \"pending\": 334,\n \"reviewed\": 123\n },\n \"structural_defects\": []\n}\n" + }, + { + "check": "network", + "command": [ + "python3", + "-m", + "communitymech.cli", + "audit-network", + "--json" + ], + "exit_code": 1, + "expected_exit_codes": [ + 1 + ], + "output": "Pinus massoniana' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Protective Enzyme and Resistance-Gene Activation\",\n \"interaction_index\": 2,\n \"taxon\": \"Pinus massoniana\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Pinus massoniana' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Brocadia_Low_Nitrogen_Anammox_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Ca. Kuenenia early-acclimation lineage\",\n \"taxon_id\": \"NCBITaxon:380738\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Ca. Kuenenia early-acclimation lineage\",\n \"term\": {\n \"id\": \"NCBITaxon:380738\",\n \"label\": \"Candidatus Kuenenia\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Ca. Kuenenia was resolved at genus level as an early-acclimation anammox lineage that was ultimately replaced by Ca. Brocadia.\"\n },\n \"functional_role\": [\n \"PRIMARY_PRODUCER\"\n ],\n \"evidence\": [\n {\n \"reference\": \"PMID:42323145\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"During early acclimation, Ca. Kuenenia reduced the expression of costly biosynthetic pathways\",\n \"explanation\": \"Supports Ca. Kuenenia as the early-acclimation lineage tracked in the biofilter succession study.\"\n }\n ]\n },\n \"message\": \"Taxon 'Ca. Kuenenia early-acclimation lineage' has no interactions\"\n }\n ],\n \"Mangrove_Benzene_MFC_Bioanode_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pelobacter\",\n \"taxon_id\": \"NCBITaxon:18\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pelobacter\",\n \"term\": {\n \"id\": \"NCBITaxon:18\",\n \"label\": \"Pelobacter\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Pelobacter was a lower-abundance genus in the benzene-fed 16S profile; no species-level identity or functional role was resolved.\\n\"\n },\n \"relative_abundance\": 2.22,\n \"relative_abundance_unit\": \"percent\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41210787\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pelobacter, Desulfurumonas, and Pseudomonas were also identified at 2.22, 1.64, and 0.87%\",\n \"explanation\": \"Supports Pelobacter as a minor detected genus in the benzene-fed MFC biofilm.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pelobacter' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas\",\n \"taxon_id\": \"NCBITaxon:286\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas\",\n \"term\": {\n \"id\": \"NCBITaxon:286\",\n \"label\": \"Pseudomonas\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Pseudomonas was a lower-abundance genus in the benzene-fed 16S profile; no species-level identity or functional role was resolved.\\n\"\n },\n \"relative_abundance\": 0.87,\n \"relative_abundance_unit\": \"percent\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41210787\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pelobacter, Desulfurumonas, and Pseudomonas were also identified at 2.22, 1.64, and 0.87%\",\n \"explanation\": \"Supports Pseudomonas as a minor detected genus in the benzene-fed MFC biofilm.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas' has no interactions\"\n }\n ],\n \"Nitrifying_Wastewater_Ammonia_Oxidizing_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Legionella MAGs\",\n \"taxon_id\": \"NCBITaxon:445\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Legionella MAGs\",\n \"term\": {\n \"id\": \"NCBITaxon:445\",\n \"label\": \"Legionella\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The study detected Legionella-affiliated MAGs and used them in a virulence-gene risk assessment; the source did not assert pathogenicity for a cultured Legionella isolate.\\n\"\n },\n \"abundance_value\": \"Lower-abundance Legionella-affiliated MAGs detected during metagenomic risk assessment.\\n\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41457319\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"detection of waterborne pathogens from the Legionella genus\",\n \"explanation\": \"Supports Legionella-affiliated lower-abundance bins as monitored biosafety-relevant members of the consortium.\\n\"\n }\n ]\n },\n \"message\": \"Taxon 'Legionella MAGs' has no interactions\"\n }\n ],\n \"Sclerotinia_Sclerotia_12Strain_Biocontrol_SynCom\": [\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Twelve-Strain SynCom Suppression of Sclerotinia Sclerotia\",\n \"interaction_index\": 0,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Trinickia MC Key Contribution to Sclerotia Mortality\",\n \"interaction_index\": 1,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Space_Habitat_SevenMember_Stress_Tolerance_SynCom\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Acinetobacter radioresistens 50V1\",\n \"taxon_id\": \"NCBITaxon:40216\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Acinetobacter radioresistens 50V1\",\n \"term\": {\n \"id\": \"NCBITaxon:40216\",\n \"label\": \"Acinetobacter radioresistens\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate came from the preflight Mars Odyssey Orbiter; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"50V1\",\n \"genome_accession\": \"GCA_002834555.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Acinetobacter radioresistens | 50V1 | Preflight Mars Odyssey Orbiter | \\u2013 | Mccoy et al., 2012 | GCA_002834555.1 | TSYB/TSYA | 37 \\u00b0C | 16\\u201318 h\",\n \"explanation\": \"Identifies A. radioresistens 50V1 as a consortium member and gives its spacecraft-associated source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Acinetobacter radioresistens 50V1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Micrococcus luteus W4-Al-K1\",\n \"taxon_id\": \"NCBITaxon:1270\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Micrococcus luteus W4-Al-K1\",\n \"term\": {\n \"id\": \"NCBITaxon:1270\",\n \"label\": \"Micrococcus luteus\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from an ISS aluminum-case touch array; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"W4-Al-K1\",\n \"genome_accession\": \"GCA_057816565.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Micrococcus luteus | W4-Al-K1 | ISS, Touch Array Aluminum Case | - | Kr\\u00e4mer et al., 2025 | GCA_057816565.1 | NB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies M. luteus W4-Al-K1 as a consortium member and gives its ISS source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Micrococcus luteus W4-Al-K1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"taxon_id\": \"NCBITaxon:64702\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"term\": {\n \"id\": \"NCBITaxon:64702\",\n \"label\": \"Propionibacterium cyclohexanicum\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. cyclohexanicum type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"TA-12T\",\n \"genome_accession\": \"GCA_900111365\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"16859\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Propionibacterium cyclohexanicum | TA-12 T | Spoilt Orange Juice | DSM 16859 T | Kusano et al., 1997 | GCA_900111365 | BHI, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies P. cyclohexanicum TA-12T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Propionibacterium cyclohexanicum TA-12T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas antarctica CMS 35T\",\n \"taxon_id\": \"NCBITaxon:219572\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas antarctica CMS 35T\",\n \"term\": {\n \"id\": \"NCBITaxon:219572\",\n \"label\": \"Pseudomonas antarctica\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. antarctica type strain as a biosafety-level-1 Pseudomonas surrogate.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"CMS 35T\",\n \"genome_accession\": \"GCA_010634845\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"15318\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pseudomonas antarctica | CMS 35 T | Antarctica | DSM 15318 T | Reddy et al., 2004 | GCA_010634845 | TSYB/TSYA | Ambient | 12\\u201316 h\",\n \"explanation\": \"Identifies P. antarctica CMS 35T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas antarctica CMS 35T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Staphylococcus capitis K1-2-2-23\",\n \"taxon_id\": \"NCBITaxon:29388\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Staphylococcus capitis K1-2-2-23\",\n \"term\": {\n \"id\": \"NCBITaxon:29388\",\n \"label\": \"Staphylococcus capitis\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from ISS V2A steel; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"K1-2-2-23\",\n \"genome_accession\": \"GCA_025272695\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"111179\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n" + }, + { + "check": "render", + "command": [ + "python3", + "-m", + "communitymech.render" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "South_Bay_Salt_Pond_Methane_Restoration_Community.html\n \u2713 Soy_Sauce_Temporal_SevenSpecies_SynCom.yaml \u2192 docs/communities/Soy_Sauce_Temporal_SevenSpecies_SynCom.html\n \u2713 Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml \u2192 docs/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.html\n \u2713 Soybean_N_Fixation_sfSynCom.yaml \u2192 docs/communities/Soybean_N_Fixation_sfSynCom.html\n \u2713 Soymilk_Mixed_Starter_Metabolic_Division_SynCom.yaml \u2192 docs/communities/Soymilk_Mixed_Starter_Metabolic_Division_SynCom.html\n \u2713 Space_Habitat_SevenMember_Stress_Tolerance_SynCom.yaml \u2192 docs/communities/Space_Habitat_SevenMember_Stress_Tolerance_SynCom.html\n \u2713 Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.yaml \u2192 docs/communities/Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.html\n \u2713 Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.yaml \u2192 docs/communities/Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.html\n \u2713 Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.yaml \u2192 docs/communities/Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.html\n \u2713 Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.yaml \u2192 docs/communities/Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.html\n \u2713 Stordalen_Mire_Methylotrophic_Methanogenesis_Community.yaml \u2192 docs/communities/Stordalen_Mire_Methylotrophic_Methanogenesis_Community.html\n \u2713 Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.yaml \u2192 docs/communities/Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.html\n \u2713 Subsurface_Carboxydocella_CO_Aquifer_Community.yaml \u2192 docs/communities/Subsurface_Carboxydocella_CO_Aquifer_Community.html\n \u2713 Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.yaml \u2192 docs/communities/Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.html\n \u2713 Sulfide_Spring_Autotrophic_CPR_Biofilm.yaml \u2192 docs/communities/Sulfide_Spring_Autotrophic_CPR_Biofilm.html\n \u2713 SynComBac10_Chicken_Intestinal_SynCom.yaml \u2192 docs/communities/SynComBac10_Chicken_Intestinal_SynCom.html\n \u2713 SynCom_ARC_Peanut_Aflatoxin_Nodulation.yaml \u2192 docs/communities/SynCom_ARC_Peanut_Aflatoxin_Nodulation.html\n \u2713 SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.yaml \u2192 docs/communities/SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.html\n \u2713 SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.yaml \u2192 docs/communities/SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.html\n \u2713 SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.yaml \u2192 docs/communities/SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.html\n \u2713 SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.yaml \u2192 docs/communities/SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.html\n \u2713 SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml \u2192 docs/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.html\n \u2713 SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.yaml \u2192 docs/communities/SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.html\n \u2713 Synechococcus_Azotobacter_Photoproduction_Mutualism.yaml \u2192 docs/communities/Synechococcus_Azotobacter_Photoproduction_Mutualism.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to docs/communities\n \u2713 Generated browser at docs/browser.html\n \u2713 Generated landing at docs/index.html\n" + }, + { + "check": "render-repeat", + "command": [ + "python3", + "-m", + "communitymech.render" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "South_Bay_Salt_Pond_Methane_Restoration_Community.html\n \u2713 Soy_Sauce_Temporal_SevenSpecies_SynCom.yaml \u2192 docs/communities/Soy_Sauce_Temporal_SevenSpecies_SynCom.html\n \u2713 Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml \u2192 docs/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.html\n \u2713 Soybean_N_Fixation_sfSynCom.yaml \u2192 docs/communities/Soybean_N_Fixation_sfSynCom.html\n \u2713 Soymilk_Mixed_Starter_Metabolic_Division_SynCom.yaml \u2192 docs/communities/Soymilk_Mixed_Starter_Metabolic_Division_SynCom.html\n \u2713 Space_Habitat_SevenMember_Stress_Tolerance_SynCom.yaml \u2192 docs/communities/Space_Habitat_SevenMember_Stress_Tolerance_SynCom.html\n \u2713 Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.yaml \u2192 docs/communities/Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.html\n \u2713 Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.yaml \u2192 docs/communities/Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.html\n \u2713 Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.yaml \u2192 docs/communities/Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.html\n \u2713 Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.yaml \u2192 docs/communities/Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.html\n \u2713 Stordalen_Mire_Methylotrophic_Methanogenesis_Community.yaml \u2192 docs/communities/Stordalen_Mire_Methylotrophic_Methanogenesis_Community.html\n \u2713 Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.yaml \u2192 docs/communities/Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.html\n \u2713 Subsurface_Carboxydocella_CO_Aquifer_Community.yaml \u2192 docs/communities/Subsurface_Carboxydocella_CO_Aquifer_Community.html\n \u2713 Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.yaml \u2192 docs/communities/Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.html\n \u2713 Sulfide_Spring_Autotrophic_CPR_Biofilm.yaml \u2192 docs/communities/Sulfide_Spring_Autotrophic_CPR_Biofilm.html\n \u2713 SynComBac10_Chicken_Intestinal_SynCom.yaml \u2192 docs/communities/SynComBac10_Chicken_Intestinal_SynCom.html\n \u2713 SynCom_ARC_Peanut_Aflatoxin_Nodulation.yaml \u2192 docs/communities/SynCom_ARC_Peanut_Aflatoxin_Nodulation.html\n \u2713 SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.yaml \u2192 docs/communities/SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.html\n \u2713 SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.yaml \u2192 docs/communities/SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.html\n \u2713 SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.yaml \u2192 docs/communities/SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.html\n \u2713 SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.yaml \u2192 docs/communities/SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.html\n \u2713 SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml \u2192 docs/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.html\n \u2713 SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.yaml \u2192 docs/communities/SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.html\n \u2713 Synechococcus_Azotobacter_Photoproduction_Mutualism.yaml \u2192 docs/communities/Synechococcus_Azotobacter_Photoproduction_Mutualism.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to docs/communities\n \u2713 Generated browser at docs/browser.html\n \u2713 Generated landing at docs/index.html\n" + }, + { + "check": "regressions", + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py" + ], + "exit_code": 1, + "expected_exit_codes": [ + 0 + ], + "output": "........................................................................ [ 24%]\n........................................................................ [ 49%]\n........................................................................ [ 73%]\n........................................................................ [ 98%]\n.F... [100%]\n=================================== FAILURES ===================================\n____________ test_the_mixed_records_are_where_the_coarseness_bites _____________\n\nsurvey = {'records': 460, 'with_community_level': 389, 'mixed': 124, 'community_level_only': 265, ...}\n\n def test_the_mixed_records_are_where_the_coarseness_bites(survey):\n \"\"\"A record with both kinds is where an unrelated edge credits a lone taxon.\n \n #1344 adds two source-backed mixed-scope records (120 -> 122).\n #312 measured 46. In the\n community-level-only records the credit is not\n coarse \u2014 there is no pairwise edge it could be masking.\n \"\"\"\n> assert 35 <= survey[\"mixed\"] <= 122, survey\nE AssertionError: {'records': 460, 'with_community_level': 389, 'mixed': 124, 'community_level_only': 265, ...}\nE assert 124 <= 122\n\ntests/test_community_level_connectivity_credit.py:120: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_community_level_connectivity_credit.py::test_the_mixed_records_are_where_the_coarseness_bites\n1 failed, 292 passed in 181.14s (0:03:01)\n" + }, + { + "check": "workspace-rights", + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_no_paywalled_text_in_repo.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "... [100%]\n3 passed in 1.93s\n" + }, + { + "check": "black", + "command": [ + "black", + "--check", + "tests/test_causal_review_batch25.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n" + }, + { + "check": "ruff", + "command": [ + "ruff", + "check", + "tests/test_causal_review_batch25.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "All checks passed!\n" + }, + { + "check": "diff-check", + "command": [ + "git", + "diff", + "--check" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "output": "" + } + ], + "limitations": [ + "Two records, ten nodes and ten arrows retained; seven renames and two focused gaps/histories. No new graph structure or Edison spend.", + "Four complete primary main bodies and three contextual abstracts reviewed; no figure images or supplementary files inspected.", + "Three short Coscinodiscus Results quotes (15 words total) were verified in publisher-provided preview but remain absent from abstract-only local cache; automated mismatch is a documented retrieval gap under #596, not a silently passed independent match.", + "Eight tracked cache artifacts unchanged; no full copyrighted body or PDF added.", + "Unrelated metadata and canonical taxa preserved, not certified; #1358/#1359 remain separate followups.", + "Self-adversarial review is not independent approval, protected CI success or full-corpus completion.", + "Baseline just audit-network-json lacked the console entry point; exact repository CLI was used without dependency edits.", + "Published descriptions verified by exact HTML parsing and repeat renders, not browser screenshots.", + "The initial full suite had one stale mixed-scope ceiling failure (292 passed). #1360 changes only the ceiling/comment and the full suite is rerun below." + ], + "unchanged_raw_blocks": 27, + "reference_caches_unchanged": true, + "corpus_sentinels_unchanged": false, + "connectivity_survey_before": { + "records": 460, + "with_community_level": 389, + "mixed": 122, + "community_level_only": 267, + "taxa": 1499, + "credited_solely_by_the_rule": 1221 + }, + "new_network_warnings": [], + "render_determinism": "passed", + "published_description_coverage": { + "pages": 456, + "node_descriptions": 1460, + "edge_descriptions": 702 + }, + "rights_import_root_verified": true, + "connectivity_survey": { + "records": 460, + "with_community_level": 389, + "mixed": 124, + "community_level_only": 265, + "taxa": 1499, + "credited_solely_by_the_rule": 1217 + }, + "connectivity_delta": { + "records": 0, + "with_community_level": 0, + "mixed": 2, + "community_level_only": -2, + "taxa": 0, + "credited_solely_by_the_rule": -4 + }, + "snippet_counts": { + "MATCH": 46, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 3, + "NOCONTENT": 0 + }, + "documented_retrieval_gaps": { + "reference": "PMID:36300970", + "count": 3, + "issue": 596, + "verified_at": "https://www.researchgate.net/publication/364814644_Dynamic_Diatom-Bacteria_Consortia_in_Synthetic_Plankton_Communities", + "disposition": "Primary Results verified manually; local abstract cache does not independently validate these three short quotes. No copied full body or forged cache match." + }, + "corpus": { + "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", + "records": 460, + "nodes": 1474, + "edges": 710, + "records_without_nodes": 8, + "records_without_edges": 141, + "review_status_counts": { + "needs_research": 3, + "pending": 334, + "reviewed": 123 + }, + "structural_defects": [] + }, + "network_warning_count": 25, + "status": "complete_with_documented_reference_retrieval_gaps", + "remediation": { + "issue": 1360, + "initial_failure": { + "check": "regressions", + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py" + ], + "exit_code": 1, + "expected_exit_codes": [ + 0 + ], + "output": "........................................................................ [ 24%]\n........................................................................ [ 49%]\n........................................................................ [ 73%]\n........................................................................ [ 98%]\n.F... [100%]\n=================================== FAILURES ===================================\n____________ test_the_mixed_records_are_where_the_coarseness_bites _____________\n\nsurvey = {'records': 460, 'with_community_level': 389, 'mixed': 124, 'community_level_only': 265, ...}\n\n def test_the_mixed_records_are_where_the_coarseness_bites(survey):\n \"\"\"A record with both kinds is where an unrelated edge credits a lone taxon.\n \n #1344 adds two source-backed mixed-scope records (120 -> 122).\n #312 measured 46. In the\n community-level-only records the credit is not\n coarse \u2014 there is no pairwise edge it could be masking.\n \"\"\"\n> assert 35 <= survey[\"mixed\"] <= 122, survey\nE AssertionError: {'records': 460, 'with_community_level': 389, 'mixed': 124, 'community_level_only': 265, ...}\nE assert 124 <= 122\n\ntests/test_community_level_connectivity_credit.py:120: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_community_level_connectivity_credit.py::test_the_mixed_records_are_where_the_coarseness_bites\n1 failed, 292 passed in 181.14s (0:03:01)\n" + }, + "changed_test": "tests/test_community_level_connectivity_credit.py", + "change": "Mixed-scope ceiling 122 -> 124 plus explicit comment only; all other bounds/behavior unchanged.", + "results": [ + { + "check": "regressions-rerun", + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py" + ], + "exit_code": 0, + "output": "........................................................................ [ 24%]\n........................................................................ [ 49%]\n........................................................................ [ 73%]\n........................................................................ [ 98%]\n..... [100%]\n293 passed in 187.32s (0:03:07)\n" + }, + { + "check": "census-test-black", + "command": [ + "black", + "--check", + "tests/test_community_level_connectivity_credit.py" + ], + "exit_code": 0, + "output": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n" + }, + { + "check": "census-test-ruff", + "command": [ + "ruff", + "check", + "tests/test_community_level_connectivity_credit.py" + ], + "exit_code": 0, + "output": "All checks passed!\n" + }, + { + "check": "diff-check-rerun", + "command": [ + "git", + "diff", + "--check" + ], + "exit_code": 0, + "output": "" + } + ], + "verified_test_sha256": "ab2a788ad92a39fa635bbda66e9c98828aaa59113048500310aca1ef4c297834", + "status": "passed" + }, + "other_corpus_sentinels_unchanged": true, + "raw_gate_status": "failed", + "diagnostic_disposition": { + "failed_gate": "Coscinodiscus_Synthetic_Community-references-explained", + "exit_code_preserved": 1, + "issue": 596, + "primary_source_verified": true, + "independent_local_cache_verification": false, + "reason": "Exactly three brief Results quotes were read in the publisher-provided primary preview; the byte-preserved cache is abstract-only. Do not report this gate as passed or copy curated snippets into a trusted cache." + } +} diff --git a/tests/test_causal_review_batch25.py b/tests/test_causal_review_batch25.py new file mode 100644 index 000000000..ecbba72e9 --- /dev/null +++ b/tests/test_causal_review_batch25.py @@ -0,0 +1,160 @@ +"""Keep measured assays distinct from field association and proposed resource flux.""" + +import hashlib +from collections import Counter +from pathlib import Path + +import yaml + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml" + + +def records(): + ledger = yaml.safe_load(LEDGER.read_text()) + return ledger, [yaml.safe_load((ROOT / r["path"]).read_text()) for r in ledger["records"]] + + +def test_copper_intrinsic_capacity_and_field_subset_have_correct_scope(): + _, docs = records() + nodes = docs[0]["ecological_interactions"] + for index, taxon in [(0, "NCBITaxon:920"), (2, "NCBITaxon:930"), (4, "NCBITaxon:28034")]: + assert nodes[index]["scope"] == "PAIRWISE" + assert nodes[index]["source_taxon"]["term"]["id"] == taxon + assert not {"target_taxon", "participating_taxa", "interaction_type"} & nodes[index].keys() + assert nodes[1]["scope"] == nodes[3]["scope"] == "COMMUNITY_LEVEL" + assert len(nodes[1]["participating_taxa"]) == 2 + assert len(nodes[3]["participating_taxa"]) == 5 + assert all("interaction_type" not in n for n in nodes) + assert all( + p["term"]["id"] != "GO:0006826" for n in nodes for p in n.get("biological_processes", []) + ) + + +def test_copper_preserves_positive_assays_and_nonmonotonic_leaching(): + _, docs = records() + early, aged, sulfur, output, sulfo = docs[0]["ecological_interactions"] + assert "15% to the approximately 5% abiotic level" in early["description"] + assert "Ferroplasma was around 10^3 copies/mL" in aged["description"] + assert "L. ferrooxidans, not this canonical species" in aged["description"] + assert "rRNA measurements support activity" in sulfur["description"] + assert "not constant sulfur flux" in sulfur["description"] + assert "400-day leaching cycle" in output["description"] + assert "triple culture did not outperform the binaries" in output["description"] + assert "38 +/- 2 C" in sulfo["description"] and "45 C" in sulfo["description"] + assert "approximately 30% copper extraction" in sulfo["description"] + assert "Genus-level Sulfobacillus RNA" in sulfo["description"] + assert all(e["evidence_source"] == "OTHER" for e in output["evidence"]) + assert sulfur["evidence"][1]["evidence_source"] == "OTHER" + + +def test_copper_retains_bounded_bidirectional_substrate_feedback(): + _, docs = records() + nodes = docs[0]["ecological_interactions"] + output = nodes[3] + others = [n for n in nodes if n is not output] + assert {e["target"] for e in output["downstream"]} == {n["name"] for n in others} + assert all(n["downstream"][0]["target"] == output["name"] for n in others) + assert all( + e["description"].startswith("PARTIAL -") for n in nodes for e in n.get("downstream", []) + ) + + +def test_coscinodiscus_dmsp_is_potential_not_measured_transfer(): + _, docs = records() + production, dmsp, *_ = docs[1]["ecological_interactions"] + assert production["scope"] == "PAIRWISE" + assert production["source_taxon"]["term"]["id"] == "NCBITaxon:33642" + assert "participating_taxa" not in production and "target_taxon" not in production + assert len(dmsp["participating_taxa"]) == 2 and "source_taxon" not in dmsp + assert dmsp["evidence"][0]["evidence_source"] == "COMPUTATIONAL" + provenance = dmsp["evidence"][0]["computational_provenance"] + assert provenance["prediction_type"] == "SEQUENCE_HOMOLOGY" + assert provenance["tools"] == [{"tool_name": "BLASTP"}] + assert "negative growth result does not itself prove absence" in dmsp["description"] + assert production["downstream"][0]["target"] == dmsp["name"] + assert production["downstream"][0]["description"].startswith("HYPOTHESIZED -") + + +def test_coscinodiscus_keeps_pooled_assay_and_nonresponding_control(): + _, docs = records() + nutrient = docs[1]["ecological_interactions"][3] + assert len(nutrient["participating_taxa"]) == 3 + assert nutrient["evidence"][0]["evidence_source"] == "IN_VITRO" + assert nutrient["evidence"][0]["supports"] == "SUPPORT" + for phrase in [ + "pooled 13-amino-acid mixture plus vitamins", + "CS4 did not respond", + "not merely genomic predictions", + "does not establish which individual nutrient was limiting", + ]: + assert phrase in nutrient["description"] + assert {m["term"]["id"] for m in nutrient["metabolites"]} == {"CHEBI:33709", "CHEBI:33229"} + + +def test_coscinodiscus_signs_and_model_are_partner_phase_and_condition_specific(): + _, docs = records() + nodes = docs[1]["ecological_interactions"] + phases, output = nodes[2], nodes[4] + assert all("interaction_type" not in n for n in nodes) + assert "recovery to control-like density after day 9" in phases["description"] + assert "CS1 was inhibited significantly on days 11-21" in phases["description"] + assert "CS4/Rose1 showed no significant diatom effect" in phases["description"] + assert "distinct days 1-17 and 17-41 parameter sets" in output["description"] + assert "very-late survival benefit" in output["description"] + assert "not proven universally absent" in output["description"] + assert phases["downstream"][0]["target"] == output["name"] + assert phases["downstream"][0]["description"].startswith("PARTIAL -") + + +def test_batch25_sources_and_cache_limit_are_explicit(): + ledger, docs = records() + assert ledger["independent_approval"] is False + assert ledger["open_nongraph_followups"] == [1358, 1359] + assert len(ledger["records"][0]["source_review"]) == 6 + source = ledger["records"][1]["source_review"]["PMID:36300970"] + assert "Complete primary main body" in source["reviewed_scope"] + assert "No figure images or supplementary files inspected" in source["reviewed_scope"] + assert source["new_body_quotes_words"] == 15 + quotes = [docs[1]["ecological_interactions"][i]["evidence"][0]["snippet"] for i in [0, 1, 3]] + assert sum(len(q.split()) for q in quotes) == 15 + cache = (ROOT / "references_cache/PMID_36300970.md").read_text() + assert "content_type: abstract_only" in cache + assert all(q not in cache for q in quotes) + assert "#1358" in docs[0]["discussions"][0]["rationale"] + assert "#1359" in docs[1]["discussions"][0]["rationale"] + + +def test_batch25_accounts_for_every_node_arrow_history_and_unchanged_cache(): + ledger, docs = records() + rows = ledger["records"] + assert len(rows) == 2 + assert sum(len(r["node_decisions"]) for r in rows) == 10 + assert sum(len(r["retained_edge_decisions"]) for r in rows) == 10 + assert sum(len(r["renamed_nodes"]) for r in rows) == 7 + assert not any(r["removed_edge_decisions"] for r in rows) + assert sum(len(r["history_files"]) for r in rows) == 2 + for row, doc in zip(rows, docs, strict=True): + assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"] + names = {n["name"] for n in doc["ecological_interactions"]} + assert Counter(d["node"] for d in row["node_decisions"]) == Counter(names) + edges = [ + {"source": n["name"], **e} + for n in doc["ecological_interactions"] + for e in n.get("downstream", []) + ] + assert edges == row["edges_after"] + rename = row["renamed_nodes"] + assert {(e["source"], e["target"]) for e in edges} == { + (rename.get(e["source"], e["source"]), rename.get(e["target"], e["target"])) + for e in row["edges_before"] + } + assert all( + a.split("#", 1)[1] in names + for d in doc.get("discussions", []) + for a in d.get("attaches_to", []) + if a.startswith("ecological_interactions#") + ) + assert len(ledger["reference_cache_original_hashes"]) == 8 + for path, expected in ledger["reference_cache_original_hashes"].items(): + assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == expected diff --git a/tests/test_community_level_connectivity_credit.py b/tests/test_community_level_connectivity_credit.py index 08d3d7c27..efb34ae56 100644 --- a/tests/test_community_level_connectivity_credit.py +++ b/tests/test_community_level_connectivity_credit.py @@ -113,11 +113,12 @@ def test_the_mixed_records_are_where_the_coarseness_bites(survey): """A record with both kinds is where an unrelated edge credits a lone taxon. #1344 adds two source-backed mixed-scope records (120 -> 122). + #1360 adds Copper and Coscinodiscus intrinsic-source corrections (122 -> 124). #312 measured 46. In the community-level-only records the credit is not coarse — there is no pairwise edge it could be masking. """ - assert 35 <= survey["mixed"] <= 122, survey + assert 35 <= survey["mixed"] <= 124, survey assert survey["mixed"] + survey["community_level_only"] == survey["with_community_level"]