Skip to content
Weave templates

Photosynthesis — light reactions and the Calvin cycle

Both halves on one canvas with the stoichiometry attached: water split at the oxygen-evolving complex to feed P680, electrons through plastoquinone and cytochrome b₆f pumping protons into a lumen at pH 4.5, ATP synthase at 4 H⁺ per ATP, P700 reducing NADP⁺, and the Calvin cycle spending 3 ATP and 2 NADPH per CO₂ fixed.

Template previewWeave
Rendering…

Make it your own.

{
  "nodes": [
    { "id": "light", "type": "sun", "label": "Light 400–700 nm caught by chlorophyll", "x": 40, "y": 40, "width": 150, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9", "bold": true },
    { "id": "psii", "type": "solar-panel", "label": "PSII P680 — the strongest known oxidant", "x": 215, "y": 40, "width": 150, "height": 104, "fill": "#dcfce7", "stroke": "#15803d", "bold": true },
    { "id": "plastoquinone", "type": "arrow-right", "label": "Plastoquinone ferries H⁺ into the lumen", "x": 390, "y": 40, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309" },
    { "id": "cytb6f", "type": "motor", "label": "Cytochrome b₆f pumps more protons", "x": 565, "y": 40, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309", "bold": true },
    { "id": "psi", "type": "solar-panel", "label": "PSI P700 — re-energised by a second photon", "x": 740, "y": 40, "width": 150, "height": 104, "fill": "#dcfce7", "stroke": "#15803d", "bold": true },
    { "id": "nadph", "type": "battery", "label": "NADPH — the reducing power", "x": 915, "y": 40, "width": 150, "height": 104, "fill": "#fce7f3", "stroke": "#be185d", "bold": true },
    { "id": "water", "type": "water-drop", "label": "2H₂O → 4H⁺ + 4e⁻ + O₂", "x": 40, "y": 200, "width": 150, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9", "bold": true },
    { "id": "oec", "type": "gear", "label": "Oxygen-evolving complex — Mn₄CaO₅", "x": 215, "y": 200, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309", "bold": true },
    { "id": "lumen", "type": "layers", "label": "Thylakoid lumen — pH 4.5 against 8", "x": 390, "y": 200, "width": 150, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8", "bold": true },
    { "id": "atpsynthase", "type": "motor", "label": "ATP synthase — 4 H⁺ turn out 1 ATP", "x": 565, "y": 200, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309", "bold": true },
    { "id": "atp", "type": "battery", "label": "ATP — the energy currency", "x": 740, "y": 200, "width": 150, "height": 104, "fill": "#fce7f3", "stroke": "#be185d", "bold": true },
    { "id": "stoichiometry", "type": "clipboard", "label": "8 photons per O₂; 3 ATP + 2 NADPH per CO₂", "x": 915, "y": 200, "width": 150, "height": 104, "fill": "#f1f5f9", "stroke": "#475569", "bold": true },
    { "id": "oxygen", "type": "cloud", "label": "O₂ released — every breath you take", "x": 40, "y": 360, "width": 150, "height": 104, "fill": "#fce7f3", "stroke": "#be185d", "bold": true },
    { "id": "co2", "type": "cloud", "label": "CO₂ enters through open stomata", "x": 215, "y": 360, "width": 150, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9", "bold": true },
    { "id": "rubisco", "type": "gear", "label": "RuBisCO fixes CO₂ onto 5-carbon RuBP", "x": 390, "y": 360, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309", "bold": true },
    { "id": "pga", "type": "hexagon", "label": "Two 3-phosphoglycerate per CO₂ fixed", "x": 565, "y": 360, "width": 150, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8", "bold": true },
    { "id": "g3p", "type": "hexagon", "label": "G3P — one leaves per three turns", "x": 740, "y": 360, "width": 150, "height": 104, "fill": "#fce7f3", "stroke": "#be185d", "bold": true },
    { "id": "regeneration", "type": "conveyor", "label": "Five G3P of every six rebuild RuBP", "x": 915, "y": 360, "width": 150, "height": 104, "fill": "#fef3c7", "stroke": "#b45309", "bold": true },
    { "id": "photorespiration", "type": "cross", "label": "Photorespiration when O₂ wins the site", "x": 390, "y": 520, "width": 150, "height": 104, "fill": "#fee2e2", "stroke": "#b91c1c", "bold": true },
    { "id": "sucrose", "type": "iso-cube", "label": "Sucrose and starch — the exported product", "x": 740, "y": 520, "width": 150, "height": 104, "fill": "#fce7f3", "stroke": "#be185d", "bold": true }
  ],
  "edges": [
    { "id": "e1", "source": "light", "target": "psii", "thickness": 2.5 },
    { "id": "e2", "source": "water", "target": "oec", "thickness": 2.5 },
    { "id": "e3", "source": "oec", "target": "psii", "label": "replaces the electrons P680 lost", "thickness": 2.5 },
    { "id": "e4", "source": "oec", "target": "oxygen", "label": "the waste product of the whole thing", "thickness": 2.5 },
    { "id": "e5", "source": "psii", "target": "plastoquinone", "thickness": 2.5 },
    { "id": "e6", "source": "plastoquinone", "target": "cytb6f", "thickness": 2.5 },
    { "id": "e7", "source": "cytb6f", "target": "lumen", "label": "protons accumulate", "thickness": 2.5 },
    { "id": "e8", "source": "lumen", "target": "atpsynthase", "label": "chemiosmotic gradient", "thickness": 2.5 },
    { "id": "e9", "source": "atpsynthase", "target": "atp", "thickness": 2.5 },
    { "id": "e10", "source": "cytb6f", "target": "psi", "thickness": 2.5 },
    { "id": "e11", "source": "light", "target": "psi", "label": "a second photon per electron", "thickness": 2.5 },
    { "id": "e12", "source": "psi", "target": "nadph", "thickness": 2.5 },
    { "id": "e13", "source": "co2", "target": "rubisco", "thickness": 2.5 },
    { "id": "e14", "source": "rubisco", "target": "pga", "thickness": 2.5 },
    { "id": "e15", "source": "atp", "target": "pga", "label": "phosphorylation", "style": "dashed" },
    { "id": "e16", "source": "nadph", "target": "pga", "label": "reduction to G3P", "style": "dashed" },
    { "id": "e17", "source": "pga", "target": "g3p", "thickness": 2.5 },
    { "id": "e18", "source": "g3p", "target": "regeneration", "thickness": 2.5 },
    { "id": "e19", "source": "regeneration", "target": "rubisco", "label": "the cycle closes", "thickness": 2.5 },
    { "id": "e20", "source": "atp", "target": "regeneration", "label": "one more ATP per turn", "style": "dashed" },
    { "id": "e21", "source": "g3p", "target": "sucrose", "thickness": 2.5 },
    { "id": "e22", "source": "rubisco", "target": "photorespiration", "label": "wasteful above 30 °C", "style": "dashed" },
    { "id": "e23", "source": "stoichiometry", "target": "atpsynthase", "style": "dashed" }
  ]
}