Add analysis
Matuszyńska 2016 NPQ model
tune
Simulation parameters
analytics
Analyses
Simulation
Loading chart...
PAM Fluorescence
Loading chart...
Model Details
Review and edit model structure, biological variables, and kinetic parameters.
| Name | Tex name | Initial value | Actions |
|---|---|---|---|
Edit Options
Edit Options
Edit Options
Edit Options
Edit Options
Edit Options
preview
Generated Python Code
import numpy as np
def model(
time: float,
variables: list[float],
):
pq_red, protons, vmax_atp_synthase, atp, psbs_de, vx = variables
PSII_tot = 2.5
PQ_tot = 20
AP_tot = 50
PsbS_tot = 1
X_tot = 1
O2_ex = 8
Pi = 0.01
k_Cytb6f = 0.104
k_ActATPase = 0.01
k_DeactATPase = 0.002
k_ATPsynth = 20
k_ATPconsum = 10
k_PQH2 = 250
k_H = 5000000000
k_F = 625000000
k_P = 5000000000
k_PTOX = 0.01
pH_st = 7.8
k_leak = 1000
b_H = 100
hpr = 4.666666666666667
k_DV = 0.0024
k_EZ = 0.00024
K_pHSat = 5.8
nhx = 5
K_ZSat = 0.12
nhl = 3
k_deprot = 0.0096
k_prot = 0.0096
K_pHSatLHC = 5.8
gamma_0 = 0.1
gamma_1 = 0.25
gamma_2 = 0.6
gamma_3 = 0.15
F = 96.485
R = 0.0083
T = 298
E0_QA = -0.14
E0_PQ = 0.354
E0_PC = 0.38
DG_ATP = 30.6
PPFD = 100
pH_lu = - (np.log(0.00025 * protons)) / (np.log(10))
H_st = 32000 * (10) ** (- pH_st)
K_pHSat_inv = 32000 * (10) ** (- K_pHSat)
K_pHSatLHC_inv = 32000 * (10) ** (- K_pHSatLHC)
K_QAPQ = np.exp((2 * E0_PQ * F + - 2 * E0_QA * F + - 4.605170185988092 * R * T * pH_st) / (R * T))
K_cytb6f = np.exp((2 * E0_PC * F + - 2 * E0_PQ * F + 4.605170185988092 * R * T * pH_lu + - 4.605170185988092 * R * T * (pH_st + - pH_lu)) / (R * T))
K_ATPsynth = Pi * np.exp((- DG_ATP + R * T * (10.74539710063888 * pH_st + - 10.74539710063888 * pH_lu)) / (R * T))
pq_ox = PQ_tot + - pq_red
adp = AP_tot + - atp
psbs_pr = PsbS_tot + - psbs_de
zx = X_tot + - vx
Q = gamma_0 * psbs_de * (1 + - (zx) / (K_ZSat + zx)) + gamma_1 * psbs_pr * (1 + - (zx) / (K_ZSat + zx)) + (gamma_2 * psbs_pr * zx) / (K_ZSat + zx) + (gamma_3 * psbs_de * zx) / (K_ZSat + zx)
B0 = (K_QAPQ * PSII_tot * k_PQH2 * pq_ox * ((k_F) ** (2) + k_F * k_P + (Q) ** (2) * (k_H) ** (2) + Q * k_H * k_P + 2 * Q * k_F * k_H)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B1 = (K_QAPQ * PPFD * PSII_tot * k_PQH2 * pq_ox * (k_F + Q * k_H)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B2 = (PSII_tot * (k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B3 = (PPFD * PSII_tot * (K_QAPQ * PPFD * k_P + k_F * k_PQH2 * pq_red + k_P * k_PQH2 * pq_red + Q * k_H * k_PQH2 * pq_red)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
v_PSII = 0.5 * B1 * k_P
v_PQ = pq_red * (O2_ex * k_PTOX + (K_cytb6f * PPFD * k_Cytb6f) / (1 + K_cytb6f)) + - (PPFD * k_Cytb6f * (PQ_tot + - pq_red)) / (1 + K_cytb6f)
atp_synthase = k_ATPsynth * vmax_atp_synthase * (AP_tot + - atp + - (atp) / (K_ATPsynth))
atp_activase = k_ActATPase * (1 + - vmax_atp_synthase) if PPFD > 0 else - k_DeactATPase * vmax_atp_synthase
proton_leak = k_leak * (protons + - H_st)
v_ATPcons = atp * k_ATPconsum
v_Xcyc = - k_EZ * (X_tot + - vx) + (k_DV * vx * (protons) ** (nhx)) / ((K_pHSat_inv) ** (nhx) + (protons) ** (nhx))
v_PsbSP = - k_deprot * (PsbS_tot + - psbs_de) + (k_prot * psbs_de * (protons) ** (nhl)) / ((K_pHSatLHC_inv) ** (nhl) + (protons) ** (nhl))
Fluo = (B0 * k_F) / (k_F + k_P + Q * k_H) + (B2 * k_F) / (k_F + Q * k_H)
dpq_reddt = +v_PSII-v_PQ
dprotonsdt = +((2) / (b_H))*v_PSII+((4) / (b_H))*v_PQ+(- (4.666666666666667) / (b_H))*atp_synthase+(- (1) / (b_H))*proton_leak
dvmax_atp_synthasedt = +atp_activase
datpdt = +atp_synthase-v_ATPcons
dpsbs_dedt = -v_PsbSP
dvxdt = -v_Xcyc
return [dpq_reddt, dprotonsdt, dvmax_atp_synthasedt, datpdt, dpsbs_dedt, dvxdt]
def all_derived(
time: float,
variables: list[float],
):
pq_red, protons, vmax_atp_synthase, atp, psbs_de, vx = variables
PSII_tot = 2.5
PQ_tot = 20
AP_tot = 50
PsbS_tot = 1
X_tot = 1
O2_ex = 8
Pi = 0.01
k_Cytb6f = 0.104
k_ActATPase = 0.01
k_DeactATPase = 0.002
k_ATPsynth = 20
k_ATPconsum = 10
k_PQH2 = 250
k_H = 5000000000
k_F = 625000000
k_P = 5000000000
k_PTOX = 0.01
pH_st = 7.8
k_leak = 1000
b_H = 100
hpr = 4.666666666666667
k_DV = 0.0024
k_EZ = 0.00024
K_pHSat = 5.8
nhx = 5
K_ZSat = 0.12
nhl = 3
k_deprot = 0.0096
k_prot = 0.0096
K_pHSatLHC = 5.8
gamma_0 = 0.1
gamma_1 = 0.25
gamma_2 = 0.6
gamma_3 = 0.15
F = 96.485
R = 0.0083
T = 298
E0_QA = -0.14
E0_PQ = 0.354
E0_PC = 0.38
DG_ATP = 30.6
PPFD = 100
pH_lu = - (np.log(0.00025 * protons)) / (np.log(10))
H_st = 32000 * (10) ** (- pH_st)
K_pHSat_inv = 32000 * (10) ** (- K_pHSat)
K_pHSatLHC_inv = 32000 * (10) ** (- K_pHSatLHC)
K_QAPQ = np.exp((2 * E0_PQ * F + - 2 * E0_QA * F + - 4.605170185988092 * R * T * pH_st) / (R * T))
K_cytb6f = np.exp((2 * E0_PC * F + - 2 * E0_PQ * F + 4.605170185988092 * R * T * pH_lu + - 4.605170185988092 * R * T * (pH_st + - pH_lu)) / (R * T))
K_ATPsynth = Pi * np.exp((- DG_ATP + R * T * (10.74539710063888 * pH_st + - 10.74539710063888 * pH_lu)) / (R * T))
pq_ox = PQ_tot + - pq_red
adp = AP_tot + - atp
psbs_pr = PsbS_tot + - psbs_de
zx = X_tot + - vx
Q = gamma_0 * psbs_de * (1 + - (zx) / (K_ZSat + zx)) + gamma_1 * psbs_pr * (1 + - (zx) / (K_ZSat + zx)) + (gamma_2 * psbs_pr * zx) / (K_ZSat + zx) + (gamma_3 * psbs_de * zx) / (K_ZSat + zx)
B0 = (K_QAPQ * PSII_tot * k_PQH2 * pq_ox * ((k_F) ** (2) + k_F * k_P + (Q) ** (2) * (k_H) ** (2) + Q * k_H * k_P + 2 * Q * k_F * k_H)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B1 = (K_QAPQ * PPFD * PSII_tot * k_PQH2 * pq_ox * (k_F + Q * k_H)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B2 = (PSII_tot * (k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
B3 = (PPFD * PSII_tot * (K_QAPQ * PPFD * k_P + k_F * k_PQH2 * pq_red + k_P * k_PQH2 * pq_red + Q * k_H * k_PQH2 * pq_red)) / (K_QAPQ * k_P * (PPFD) ** (2) + k_PQH2 * pq_red * (k_F) ** (2) + K_QAPQ * PPFD * k_F * k_P + K_QAPQ * k_PQH2 * pq_ox * (k_F) ** (2) + PPFD * k_F * k_PQH2 * pq_red + PPFD * k_P * k_PQH2 * pq_red + k_F * k_P * k_PQH2 * pq_red + k_PQH2 * pq_red * (Q) ** (2) * (k_H) ** (2) + K_QAPQ * PPFD * Q * k_H * k_P + K_QAPQ * PPFD * k_F * k_PQH2 * pq_ox + K_QAPQ * k_F * k_P * k_PQH2 * pq_ox + K_QAPQ * k_PQH2 * pq_ox * (Q) ** (2) * (k_H) ** (2) + PPFD * Q * k_H * k_PQH2 * pq_red + Q * k_H * k_P * k_PQH2 * pq_red + 2 * Q * k_F * k_H * k_PQH2 * pq_red + K_QAPQ * PPFD * Q * k_H * k_PQH2 * pq_ox + K_QAPQ * Q * k_H * k_P * k_PQH2 * pq_ox + 2 * K_QAPQ * Q * k_F * k_H * k_PQH2 * pq_ox)
v_PSII = 0.5 * B1 * k_P
v_PQ = pq_red * (O2_ex * k_PTOX + (K_cytb6f * PPFD * k_Cytb6f) / (1 + K_cytb6f)) + - (PPFD * k_Cytb6f * (PQ_tot + - pq_red)) / (1 + K_cytb6f)
atp_synthase = k_ATPsynth * vmax_atp_synthase * (AP_tot + - atp + - (atp) / (K_ATPsynth))
atp_activase = k_ActATPase * (1 + - vmax_atp_synthase) if PPFD > 0 else - k_DeactATPase * vmax_atp_synthase
proton_leak = k_leak * (protons + - H_st)
v_ATPcons = atp * k_ATPconsum
v_Xcyc = - k_EZ * (X_tot + - vx) + (k_DV * vx * (protons) ** (nhx)) / ((K_pHSat_inv) ** (nhx) + (protons) ** (nhx))
v_PsbSP = - k_deprot * (PsbS_tot + - psbs_de) + (k_prot * psbs_de * (protons) ** (nhl)) / ((K_pHSatLHC_inv) ** (nhl) + (protons) ** (nhl))
Fluo = (B0 * k_F) / (k_F + k_P + Q * k_H) + (B2 * k_F) / (k_F + Q * k_H)
return [pH_lu, H_st, K_pHSat_inv, K_pHSatLHC_inv, K_QAPQ, K_cytb6f, K_ATPsynth, pq_ox, adp, psbs_pr, zx, Q, B0, B1, B2, B3, v_PSII, v_PQ, atp_synthase, atp_activase, proton_leak, v_ATPcons, v_Xcyc, v_PsbSP, Fluo]
derived = all_derived
y0 = {"pq_red": 0, "protons": 0.0000632975752, "vmax_atp_synthase": 0, "atp": 25, "psbs_de": 1, "vx": 1}
preview
Generated LaTeX Code
\begin{align*}
\frac{d pq\_red}{dt} &= 0.5 \cdot ps2states \cdot k\_P \\
& - pq\_red \cdot (O2\_ex \cdot k\_PTOX + \frac{K\_cytb6f \cdot PPFD \cdot k\_Cytb6f}{1 + K\_cytb6f}) - \frac{PPFD \cdot k\_Cytb6f \cdot (PQ\_tot - pq\_red)}{1 + K\_cytb6f}\\
\frac{d protons}{dt} &= \frac{2}{b\_H} \cdot 0.5 \cdot ps2states \cdot k\_P \\
& + \frac{4}{b\_H} \cdot pq\_red \cdot (O2\_ex \cdot k\_PTOX + \frac{K\_cytb6f \cdot PPFD \cdot k\_Cytb6f}{1 + K\_cytb6f}) - \frac{PPFD \cdot k\_Cytb6f \cdot (PQ\_tot - pq\_red)}{1 + K\_cytb6f} \\
& - \frac{4.666666666666667}{b\_H} \cdot k\_ATPsynth \cdot vmax\_atp\_synthase \cdot (AP\_tot - atp - \frac{atp}{K\_ATPsynth}) \\
& - \frac{1}{b\_H} \cdot k\_leak \cdot (protons - H\_st)\\
\frac{d vmax\_atp\_synthase}{dt} &= \begin{cases}k\_ActATPase \cdot (1 - vmax\_atp\_synthase) & PPFD > 0 \\ - k\_DeactATPase \cdot vmax\_atp\_synthase & \text{else}\end{cases}\\
\frac{d atp}{dt} &= k\_ATPsynth \cdot vmax\_atp\_synthase \cdot (AP\_tot - atp - \frac{atp}{K\_ATPsynth}) \\
& - atp \cdot k\_ATPconsum\\
\frac{d psbs\_de}{dt} &= - - k\_deprot \cdot (PsbS\_tot - psbs\_de) + \frac{k\_prot \cdot psbs\_de \cdot {protons}^{nhl}}{{K\_pHSatLHC\_inv}^{nhl} + {protons}^{nhl}}\\
\frac{d vx}{dt} &= - - k\_EZ \cdot (X\_tot - vx) + \frac{k\_DV \cdot vx \cdot {protons}^{nhx}}{{K\_pHSat\_inv}^{nhx} + {protons}^{nhx}}
\end{align*}Edit analysis
Plot options
Variable selection
Show Normalize
Edit PAM analysis
Protocol phases
Group 1 — repeat ×
PFD Duration (s) Label
Group 2 — repeat ×
PFD Duration (s) Label
Group 3 — repeat ×
PFD Duration (s) Label
Variable selection
Show Normalize