Models / Matuszyńska 2016

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.

NameTex nameInitial valueActions

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