mxlmodels 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mxlmodels/__init__.py +34 -0
- mxlmodels/dyn_entro.py +184 -0
- mxlmodels/ebeling2026.py +2375 -0
- mxlmodels/lotka_volterra_v1.py +92 -0
- mxlmodels/lotka_volterra_v2.py +83 -0
- mxlmodels/matuszynska2016_npq.py +683 -0
- mxlmodels/matuszynska2016_phd.py +864 -0
- mxlmodels/matuszynska2019.py +1469 -0
- mxlmodels/poolman2000.py +685 -0
- mxlmodels/pop_dyn.py +69 -0
- mxlmodels/py.typed +0 -0
- mxlmodels/saadat2021.py +1871 -0
- mxlmodels/trip_dyn.py +115 -0
- mxlmodels/yokota1985.py +170 -0
- mxlmodels-1.0.0.dist-info/METADATA +68 -0
- mxlmodels-1.0.0.dist-info/RECORD +18 -0
- mxlmodels-1.0.0.dist-info/WHEEL +4 -0
- mxlmodels-1.0.0.dist-info/licenses/LICENSE +21 -0
mxlmodels/saadat2021.py
ADDED
|
@@ -0,0 +1,1871 @@
|
|
|
1
|
+
"""Saadat 2021 chloroplast model with ROS scavenging, Calvin cycle, and thioredoxin regulation.
|
|
2
|
+
|
|
3
|
+
Reference: Saadat, Nima P., et al.
|
|
4
|
+
"Computational analysis of alternative photosynthetic electron flows linked with oxidative stress."
|
|
5
|
+
Frontiers in plant science 12 (2021): 750580
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import math
|
|
9
|
+
|
|
10
|
+
import numpy as np
|
|
11
|
+
from mxlpy import Derived, Model
|
|
12
|
+
from mxlpy.surrogates import qss
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _mass_action_1s(
|
|
16
|
+
s1: float,
|
|
17
|
+
k_fwd: float,
|
|
18
|
+
) -> float:
|
|
19
|
+
"""Mass-action rate for one substrate."""
|
|
20
|
+
return k_fwd * s1
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _dg_ph(
|
|
24
|
+
r: float,
|
|
25
|
+
t: float,
|
|
26
|
+
) -> float:
|
|
27
|
+
"""Thermodynamic coefficient dG/dpH = RT*ln(10) in kJ/mol."""
|
|
28
|
+
return np.log(10) * r * t
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _ph_lumen(
|
|
32
|
+
protons: float,
|
|
33
|
+
) -> float:
|
|
34
|
+
"""Lumenal pH from proton concentration in mmol/mmol_Chl (conversion factor 0.00025)."""
|
|
35
|
+
return -np.log10(protons * 0.00025)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _moiety_1(
|
|
39
|
+
concentration: float,
|
|
40
|
+
total: float,
|
|
41
|
+
) -> float:
|
|
42
|
+
"""Conservation moiety: total - concentration."""
|
|
43
|
+
return total - concentration
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _quencher(
|
|
47
|
+
psbs: float,
|
|
48
|
+
vx: float,
|
|
49
|
+
psbsp: float,
|
|
50
|
+
zx: float,
|
|
51
|
+
y0: float,
|
|
52
|
+
y1: float,
|
|
53
|
+
y2: float,
|
|
54
|
+
y3: float,
|
|
55
|
+
k_z_sat: float,
|
|
56
|
+
) -> float:
|
|
57
|
+
"""co-operative 4-state quenching mechanism.
|
|
58
|
+
|
|
59
|
+
gamma0: slow quenching of (Vx - protonation)
|
|
60
|
+
gamma1: fast quenching (Vx + protonation)
|
|
61
|
+
gamma2: fastest possible quenching (Zx + protonation)
|
|
62
|
+
gamma3: slow quenching of Zx present (Zx - protonation).
|
|
63
|
+
"""
|
|
64
|
+
ZAnt = zx / (zx + k_z_sat)
|
|
65
|
+
return y0 * vx * psbs + y1 * vx * psbsp + y2 * ZAnt * psbsp + y3 * ZAnt * psbs
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _keq_pq_red(
|
|
69
|
+
e0_qa: float,
|
|
70
|
+
f: float,
|
|
71
|
+
e0_pq: float,
|
|
72
|
+
p_hstroma: float,
|
|
73
|
+
d_g_p_h: float,
|
|
74
|
+
rt: float,
|
|
75
|
+
) -> float:
|
|
76
|
+
"""Equilibrium constant for PQ reduction by QA, pH-corrected via stroma proton contribution."""
|
|
77
|
+
dg1 = -e0_qa * f
|
|
78
|
+
dg2 = -2 * e0_pq * f
|
|
79
|
+
dg = -2 * dg1 + dg2 + 2 * p_hstroma * d_g_p_h
|
|
80
|
+
return np.exp(-dg / rt)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _ps2_crosssection(
|
|
84
|
+
lhc: float,
|
|
85
|
+
static_ant_ii: float,
|
|
86
|
+
static_ant_i: float,
|
|
87
|
+
) -> float:
|
|
88
|
+
"""Equilibrium constant for PQ reduction by QA, pH-corrected via stroma proton contribution."""
|
|
89
|
+
return static_ant_ii + (1 - static_ant_ii - static_ant_i) * lhc
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _pi_cbb(
|
|
93
|
+
phosphate_total: float,
|
|
94
|
+
pga: float,
|
|
95
|
+
bpga: float,
|
|
96
|
+
gap: float,
|
|
97
|
+
dhap: float,
|
|
98
|
+
fbp: float,
|
|
99
|
+
f6p: float,
|
|
100
|
+
g6p: float,
|
|
101
|
+
g1p: float,
|
|
102
|
+
sbp: float,
|
|
103
|
+
s7p: float,
|
|
104
|
+
e4p: float,
|
|
105
|
+
x5p: float,
|
|
106
|
+
r5p: float,
|
|
107
|
+
rubp: float,
|
|
108
|
+
ru5p: float,
|
|
109
|
+
atp: float,
|
|
110
|
+
) -> float:
|
|
111
|
+
"""Free orthophosphate from total minus all phosphorylated CBB intermediates (bisphosphates count twice)."""
|
|
112
|
+
return phosphate_total - (
|
|
113
|
+
pga
|
|
114
|
+
+ 2 * bpga
|
|
115
|
+
+ gap
|
|
116
|
+
+ dhap
|
|
117
|
+
+ 2 * fbp
|
|
118
|
+
+ f6p
|
|
119
|
+
+ g6p
|
|
120
|
+
+ g1p
|
|
121
|
+
+ 2 * sbp
|
|
122
|
+
+ s7p
|
|
123
|
+
+ e4p
|
|
124
|
+
+ x5p
|
|
125
|
+
+ r5p
|
|
126
|
+
+ 2 * rubp
|
|
127
|
+
+ ru5p
|
|
128
|
+
+ atp
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def _moiety_2(
|
|
133
|
+
x1: float,
|
|
134
|
+
x2: float,
|
|
135
|
+
total: float,
|
|
136
|
+
) -> float:
|
|
137
|
+
"""Conservation moiety: total - x1 - x2."""
|
|
138
|
+
return total - x1 - x2
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _glutathion_moiety(
|
|
142
|
+
gssg: float,
|
|
143
|
+
gs_total: float,
|
|
144
|
+
) -> float:
|
|
145
|
+
"""Conservation moiety: GSH = total - 2*GSSG (one GSSG releases two GSH)."""
|
|
146
|
+
return gs_total - 2 * gssg
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def _keq_atp(
|
|
150
|
+
p_h: float,
|
|
151
|
+
delta_g0_atp: float,
|
|
152
|
+
d_g_p_h: float,
|
|
153
|
+
hpr: float,
|
|
154
|
+
p_hstroma: float,
|
|
155
|
+
pi_mol: float,
|
|
156
|
+
rt: float,
|
|
157
|
+
) -> float:
|
|
158
|
+
"""Equilibrium constant for ATP synthase, driven by the transmembrane proton gradient."""
|
|
159
|
+
delta_g = delta_g0_atp - d_g_p_h * hpr * (p_hstroma - p_h)
|
|
160
|
+
return pi_mol * math.exp(-delta_g / rt)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def _keq_cytb6f(
|
|
164
|
+
p_h: float,
|
|
165
|
+
f: float,
|
|
166
|
+
e0_pq: float,
|
|
167
|
+
e0_pc: float,
|
|
168
|
+
p_hstroma: float,
|
|
169
|
+
rt: float,
|
|
170
|
+
d_g_p_h: float,
|
|
171
|
+
) -> float:
|
|
172
|
+
"""Equilibrium constant of cytochrome b6f from redox potentials and transmembrane pH gradient."""
|
|
173
|
+
DG1 = -2 * f * e0_pq
|
|
174
|
+
DG2 = -f * e0_pc
|
|
175
|
+
DG = -(DG1 + 2 * d_g_p_h * p_h) + 2 * DG2 + 2 * d_g_p_h * (p_hstroma - p_h)
|
|
176
|
+
return math.exp(-DG / rt)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def _keq_fnr(
|
|
180
|
+
e0_fd: float,
|
|
181
|
+
f: float,
|
|
182
|
+
e0_nadp: float,
|
|
183
|
+
p_hstroma: float,
|
|
184
|
+
d_g_p_h: float,
|
|
185
|
+
rt: float,
|
|
186
|
+
) -> float:
|
|
187
|
+
"""Equilibrium constant for FNR: Fd-mediated NADP+ reduction, pH-corrected."""
|
|
188
|
+
dg1 = -e0_fd * f
|
|
189
|
+
dg2 = -2 * e0_nadp * f
|
|
190
|
+
dg = -2 * dg1 + dg2 + d_g_p_h * p_hstroma
|
|
191
|
+
return math.exp(-dg / rt)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def _keq_pcp700(
|
|
195
|
+
e0_pc: float,
|
|
196
|
+
f: float,
|
|
197
|
+
eo_p700: float,
|
|
198
|
+
rt: float,
|
|
199
|
+
) -> float:
|
|
200
|
+
"""Equilibrium constant for PC -> P700 electron transfer from standard redox potentials."""
|
|
201
|
+
dg1 = -e0_pc * f
|
|
202
|
+
dg2 = -eo_p700 * f
|
|
203
|
+
dg = -dg1 + dg2
|
|
204
|
+
return math.exp(-dg / rt)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def _keq_faf_d(
|
|
208
|
+
e0_fa: float,
|
|
209
|
+
f: float,
|
|
210
|
+
e0_fd: float,
|
|
211
|
+
rt: float,
|
|
212
|
+
) -> float:
|
|
213
|
+
"""Equilibrium constant for FA -> Fd electron transfer from standard redox potentials."""
|
|
214
|
+
dg1 = -e0_fa * f
|
|
215
|
+
dg2 = -e0_fd * f
|
|
216
|
+
dg = -dg1 + dg2
|
|
217
|
+
return math.exp(-dg / rt)
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def _mul(
|
|
221
|
+
x: float,
|
|
222
|
+
y: float,
|
|
223
|
+
) -> float:
|
|
224
|
+
"""Calculate the product of two values.
|
|
225
|
+
|
|
226
|
+
Parameters
|
|
227
|
+
----------
|
|
228
|
+
x
|
|
229
|
+
First factor
|
|
230
|
+
y
|
|
231
|
+
Second factor
|
|
232
|
+
|
|
233
|
+
Returns
|
|
234
|
+
-------
|
|
235
|
+
Float
|
|
236
|
+
Product of x and y (x * y)
|
|
237
|
+
|
|
238
|
+
Examples
|
|
239
|
+
--------
|
|
240
|
+
>>> mul(2.0, 3.0)
|
|
241
|
+
6.0
|
|
242
|
+
>>> mul(0.5, 4.0)
|
|
243
|
+
2.0
|
|
244
|
+
|
|
245
|
+
"""
|
|
246
|
+
return x * y
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def _rate_translocator(
|
|
250
|
+
pi: float,
|
|
251
|
+
pga: float,
|
|
252
|
+
gap: float,
|
|
253
|
+
dhap: float,
|
|
254
|
+
k_pxt: float,
|
|
255
|
+
p_ext: float,
|
|
256
|
+
k_pi: float,
|
|
257
|
+
k_pga: float,
|
|
258
|
+
k_gap: float,
|
|
259
|
+
k_dhap: float,
|
|
260
|
+
) -> float:
|
|
261
|
+
"""Denominator term N for the phosphate translocator shared by all triose-P export reactions."""
|
|
262
|
+
return 1 + (1 + k_pxt / p_ext) * (
|
|
263
|
+
pi / k_pi + pga / k_pga + gap / k_gap + dhap / k_dhap
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def _mass_action_2s(
|
|
268
|
+
s1: float,
|
|
269
|
+
s2: float,
|
|
270
|
+
k_fwd: float,
|
|
271
|
+
) -> float:
|
|
272
|
+
"""Mass-action rate for two substrates."""
|
|
273
|
+
return k_fwd * s1 * s2
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def _rate_atp_synthase_2019(
|
|
277
|
+
atp: float,
|
|
278
|
+
adp: float,
|
|
279
|
+
keq_at_psynthase: float,
|
|
280
|
+
k_at_psynth: float,
|
|
281
|
+
convf: float,
|
|
282
|
+
) -> float:
|
|
283
|
+
"""ATP synthase rate (2019 formulation): same as 2016 but ADP/ATP scaled by convf."""
|
|
284
|
+
return k_at_psynth * (adp / convf - atp / convf / keq_at_psynthase)
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def _neg_div(
|
|
288
|
+
x: float,
|
|
289
|
+
y: float,
|
|
290
|
+
) -> float:
|
|
291
|
+
"""Return -x / y."""
|
|
292
|
+
return -x / y
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def _value(
|
|
296
|
+
x: float,
|
|
297
|
+
) -> float:
|
|
298
|
+
"""Return x unchanged."""
|
|
299
|
+
return x
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def _b6f(
|
|
303
|
+
pc_ox: float,
|
|
304
|
+
pq_ox: float,
|
|
305
|
+
pq_red: float,
|
|
306
|
+
pc_red: float,
|
|
307
|
+
keq_b6f: float,
|
|
308
|
+
k_cytb6f: float,
|
|
309
|
+
) -> float:
|
|
310
|
+
"""Cytochrome b6f rate: reversible mass action clamped to -kCytb6f to avoid runaway reverse flux."""
|
|
311
|
+
return max(
|
|
312
|
+
k_cytb6f * (pq_red * pc_ox**2 - pq_ox * pc_red**2 / keq_b6f),
|
|
313
|
+
-k_cytb6f,
|
|
314
|
+
)
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def _four_div_by(
|
|
318
|
+
x: float,
|
|
319
|
+
) -> float:
|
|
320
|
+
"""Return 4/x; used for the 4-proton stoichiometry of b6f scaled by buffering capacity."""
|
|
321
|
+
return 4.0 / x
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def _protons_stroma_2016(
|
|
325
|
+
ph: float,
|
|
326
|
+
) -> float:
|
|
327
|
+
"""Convert stromal pH to proton concentration (µmol/L).
|
|
328
|
+
|
|
329
|
+
Introduced by the Matuszynska 2016 PhD model.
|
|
330
|
+
"""
|
|
331
|
+
return 4000.0 * 10 ** (-ph)
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def _protonation_hill(
|
|
335
|
+
vx: float,
|
|
336
|
+
h: float,
|
|
337
|
+
nh: float,
|
|
338
|
+
k_fwd: float,
|
|
339
|
+
k_ph_sat: float,
|
|
340
|
+
) -> float:
|
|
341
|
+
"""Hill-type protonation rate scaled by lumenal proton concentration."""
|
|
342
|
+
return k_fwd * (h**nh / (h**nh + _protons_stroma_2016(k_ph_sat) ** nh)) * vx # type: ignore
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
def _rate_cyclic_electron_flow(
|
|
346
|
+
pox: float,
|
|
347
|
+
fdred: float,
|
|
348
|
+
kcyc: float,
|
|
349
|
+
) -> float:
|
|
350
|
+
"""Cyclic electron flow rate: mass action on Fd_red^2 and PQ_ox."""
|
|
351
|
+
return kcyc * fdred**2 * pox
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
def _rate_protonation_hill(
|
|
355
|
+
vx: float,
|
|
356
|
+
h: float,
|
|
357
|
+
k_fwd: float,
|
|
358
|
+
n_h: float,
|
|
359
|
+
kph_sat: float,
|
|
360
|
+
) -> float:
|
|
361
|
+
"""Hill-type deepoxidase rate activated by lumenal proton concentration."""
|
|
362
|
+
return k_fwd * (h**n_h / (h**n_h + _protons_stroma_2016(kph_sat) ** n_h)) * vx # type: ignore
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
def _rate_fnr_2019(
|
|
366
|
+
fd_ox: float,
|
|
367
|
+
fd_red: float,
|
|
368
|
+
nadph: float,
|
|
369
|
+
nadp: float,
|
|
370
|
+
km_fnr_f: float,
|
|
371
|
+
km_fnr_n: float,
|
|
372
|
+
vmax: float,
|
|
373
|
+
keq_fnr: float,
|
|
374
|
+
convf: float,
|
|
375
|
+
) -> float:
|
|
376
|
+
"""FNR rate (2019 formulation): same as 2016 but NADP/H concentrations scaled by convf."""
|
|
377
|
+
fdred = fd_red / km_fnr_f
|
|
378
|
+
fdox = fd_ox / km_fnr_f
|
|
379
|
+
nadph = nadph / convf / km_fnr_n
|
|
380
|
+
nadp = nadp / convf / km_fnr_n
|
|
381
|
+
return (
|
|
382
|
+
vmax
|
|
383
|
+
* (fdred**2 * nadp - fdox**2 * nadph / keq_fnr)
|
|
384
|
+
/ ((1 + fdred + fdred**2) * (1 + nadp) + (1 + fdox + fdox**2) * (1 + nadph) - 1)
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def _rate_ps2(
|
|
389
|
+
b1: float,
|
|
390
|
+
k2: float,
|
|
391
|
+
) -> float:
|
|
392
|
+
"""PSII electron transfer rate from the open-excited state B1 and photochemistry rate constant k2."""
|
|
393
|
+
return 0.5 * k2 * b1
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
def _two_div_by(
|
|
397
|
+
x: float,
|
|
398
|
+
) -> float:
|
|
399
|
+
"""Return 2/x; used for the 2-proton stoichiometry of PSII scaled by buffering capacity."""
|
|
400
|
+
return 2.0 / x
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
def _rate_ps1(
|
|
404
|
+
a: float,
|
|
405
|
+
ps2cs: float,
|
|
406
|
+
pfd: float,
|
|
407
|
+
) -> float:
|
|
408
|
+
"""PSI electron transfer rate: open PSI centers (a) * light absorbed by PSI antenna."""
|
|
409
|
+
return (1 - ps2cs) * pfd * a
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def _rate_ferredoxin_reductase(
|
|
413
|
+
fd: float,
|
|
414
|
+
fdred: float,
|
|
415
|
+
a1: float,
|
|
416
|
+
a2: float,
|
|
417
|
+
k_fdred: float,
|
|
418
|
+
keq_fa_fd: float,
|
|
419
|
+
) -> float:
|
|
420
|
+
"""Rate of the redcution of Fd by the activity of PSI.
|
|
421
|
+
|
|
422
|
+
used to be equall to the rate of PSI but now
|
|
423
|
+
alternative electron pathway from Fd allows for the production of ROS
|
|
424
|
+
hence this rate has to be separate.
|
|
425
|
+
"""
|
|
426
|
+
return k_fdred * fd * a1 - k_fdred / keq_fa_fd * fdred * a2
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
def _rate_leak(
|
|
430
|
+
protons_lumen: float,
|
|
431
|
+
ph_stroma: float,
|
|
432
|
+
k_leak: float,
|
|
433
|
+
) -> float:
|
|
434
|
+
"""Passive proton leak across the thylakoid membrane, proportional to the proton gradient."""
|
|
435
|
+
return k_leak * (protons_lumen - _protons_stroma_2016(ph_stroma))
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
def _neg_one_div_by(
|
|
439
|
+
x: float,
|
|
440
|
+
) -> float:
|
|
441
|
+
"""Return -1/x; used for negated unit stoichiometry scaled by buffering capacity."""
|
|
442
|
+
return -1.0 / x
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
def _rate_state_transition_ps1_ps2(
|
|
446
|
+
ant: float,
|
|
447
|
+
pox: float,
|
|
448
|
+
p_tot: float,
|
|
449
|
+
k_stt7: float,
|
|
450
|
+
km_st: float,
|
|
451
|
+
n_st: float,
|
|
452
|
+
) -> float:
|
|
453
|
+
"""STT7-kinase phosphorylation of LHC; inhibited by oxidised PQ (state 1 → 2 transition)."""
|
|
454
|
+
return k_stt7 * (1 / (1 + (pox / p_tot / km_st) ** n_st)) * ant
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
def _rate_poolman_5i(
|
|
458
|
+
rubp: float,
|
|
459
|
+
pga: float,
|
|
460
|
+
co2: float,
|
|
461
|
+
vmax: float,
|
|
462
|
+
kms_rubp: float,
|
|
463
|
+
kms_co2: float,
|
|
464
|
+
# inhibitors
|
|
465
|
+
ki_pga: float,
|
|
466
|
+
fbp: float,
|
|
467
|
+
ki_fbp: float,
|
|
468
|
+
sbp: float,
|
|
469
|
+
ki_sbp: float,
|
|
470
|
+
pi: float,
|
|
471
|
+
ki_p: float,
|
|
472
|
+
nadph: float,
|
|
473
|
+
ki_nadph: float,
|
|
474
|
+
) -> float:
|
|
475
|
+
"""Rubisco carboxylation rate (Poolman 2000): bi-substrate with 5 competitive inhibitors."""
|
|
476
|
+
top = vmax * rubp * co2
|
|
477
|
+
btm = (
|
|
478
|
+
rubp
|
|
479
|
+
+ kms_rubp
|
|
480
|
+
* (
|
|
481
|
+
1
|
|
482
|
+
+ pga / ki_pga
|
|
483
|
+
+ fbp / ki_fbp
|
|
484
|
+
+ sbp / ki_sbp
|
|
485
|
+
+ pi / ki_p
|
|
486
|
+
+ nadph / ki_nadph
|
|
487
|
+
)
|
|
488
|
+
) * (co2 + kms_co2)
|
|
489
|
+
return top / btm
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
def _rapid_equilibrium_2s_2p(
|
|
493
|
+
s1: float,
|
|
494
|
+
s2: float,
|
|
495
|
+
p1: float,
|
|
496
|
+
p2: float,
|
|
497
|
+
k_re: float,
|
|
498
|
+
q: float,
|
|
499
|
+
) -> float:
|
|
500
|
+
"""Rapid-equilibrium rate for two substrates, two products."""
|
|
501
|
+
return k_re * (s1 * s2 - p1 * p2 / q)
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
def _rapid_equilibrium_3s_3p(
|
|
505
|
+
s1: float,
|
|
506
|
+
s2: float,
|
|
507
|
+
s3: float,
|
|
508
|
+
p1: float,
|
|
509
|
+
p2: float,
|
|
510
|
+
p3: float,
|
|
511
|
+
k_re: float,
|
|
512
|
+
q: float,
|
|
513
|
+
) -> float:
|
|
514
|
+
"""Rapid-equilibrium rate for three substrates, three products."""
|
|
515
|
+
return k_re * (s1 * s2 * s3 - p1 * p2 * p3 / q)
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
def _rapid_equilibrium_1s_1p(
|
|
519
|
+
s1: float,
|
|
520
|
+
p1: float,
|
|
521
|
+
k_re: float,
|
|
522
|
+
q: float,
|
|
523
|
+
) -> float:
|
|
524
|
+
"""Rapid-equilibrium rate for one substrate, one product."""
|
|
525
|
+
return k_re * (s1 - p1 / q)
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
def _rapid_equilibrium_2s_1p(
|
|
529
|
+
s1: float,
|
|
530
|
+
s2: float,
|
|
531
|
+
p1: float,
|
|
532
|
+
k_re: float,
|
|
533
|
+
q: float,
|
|
534
|
+
) -> float:
|
|
535
|
+
"""Rapid-equilibrium rate for two substrates, one product."""
|
|
536
|
+
return k_re * (s1 * s2 - p1 / q)
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def _michaelis_menten_1s_2i(
|
|
540
|
+
s: float,
|
|
541
|
+
i1: float,
|
|
542
|
+
i2: float,
|
|
543
|
+
vmax: float,
|
|
544
|
+
km: float,
|
|
545
|
+
ki1: float,
|
|
546
|
+
ki2: float,
|
|
547
|
+
) -> float:
|
|
548
|
+
"""Irreversible Michaelis-Menten rate for one substrate with two inhibitors."""
|
|
549
|
+
return vmax * s / (s + km * (1 + i1 / ki1 + i2 / ki2))
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
def _michaelis_menten_1s_1i(
|
|
553
|
+
s: float,
|
|
554
|
+
i: float,
|
|
555
|
+
vmax: float,
|
|
556
|
+
km: float,
|
|
557
|
+
ki: float,
|
|
558
|
+
) -> float:
|
|
559
|
+
"""Irreversible Michaelis-Menten rate for one substrate with one inhibitor."""
|
|
560
|
+
return vmax * s / (s + km * (1 + i / ki))
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
def _rate_prk(
|
|
564
|
+
ru5p: float,
|
|
565
|
+
atp: float,
|
|
566
|
+
pi: float,
|
|
567
|
+
pga: float,
|
|
568
|
+
rubp: float,
|
|
569
|
+
adp: float,
|
|
570
|
+
v13: float,
|
|
571
|
+
km131: float,
|
|
572
|
+
km132: float,
|
|
573
|
+
ki131: float,
|
|
574
|
+
ki132: float,
|
|
575
|
+
ki133: float,
|
|
576
|
+
ki134: float,
|
|
577
|
+
ki135: float,
|
|
578
|
+
) -> float:
|
|
579
|
+
"""Phosphoribulokinase rate: ordered bi-substrate kinetics with PGA, RuBP, Pi and ADP inhibition."""
|
|
580
|
+
return (
|
|
581
|
+
v13
|
|
582
|
+
* ru5p
|
|
583
|
+
* atp
|
|
584
|
+
/ (
|
|
585
|
+
(ru5p + km131 * (1 + pga / ki131 + rubp / ki132 + pi / ki133))
|
|
586
|
+
* (atp * (1 + adp / ki134) + km132 * (1 + adp / ki135))
|
|
587
|
+
)
|
|
588
|
+
)
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
def _rate_out(
|
|
592
|
+
s1: float,
|
|
593
|
+
n_total: float,
|
|
594
|
+
vmax_efflux: float,
|
|
595
|
+
k_efflux: float,
|
|
596
|
+
) -> float:
|
|
597
|
+
"""Individual substrate export rate normalised by the translocator occupancy N."""
|
|
598
|
+
return vmax_efflux * s1 / (n_total * k_efflux)
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
def _rate_starch(
|
|
602
|
+
g1p: float,
|
|
603
|
+
atp: float,
|
|
604
|
+
adp: float,
|
|
605
|
+
pi: float,
|
|
606
|
+
pga: float,
|
|
607
|
+
f6p: float,
|
|
608
|
+
fbp: float,
|
|
609
|
+
v_st: float,
|
|
610
|
+
kmst1: float,
|
|
611
|
+
kmst2: float,
|
|
612
|
+
ki_st: float,
|
|
613
|
+
kast1: float,
|
|
614
|
+
kast2: float,
|
|
615
|
+
kast3: float,
|
|
616
|
+
) -> float:
|
|
617
|
+
"""Starch synthesis rate via G1P+ATP with ADP inhibition and allosteric activation by PGA/F6P/FBP."""
|
|
618
|
+
return (
|
|
619
|
+
v_st
|
|
620
|
+
* g1p
|
|
621
|
+
* atp
|
|
622
|
+
/ (
|
|
623
|
+
(g1p + kmst1)
|
|
624
|
+
* (
|
|
625
|
+
(1 + adp / ki_st) * (atp + kmst2)
|
|
626
|
+
+ kmst2 * pi / (kast1 * pga + kast2 * f6p + kast3 * fbp)
|
|
627
|
+
)
|
|
628
|
+
)
|
|
629
|
+
)
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
def _rate_mda_reductase1(
|
|
633
|
+
mda: float,
|
|
634
|
+
k3: float,
|
|
635
|
+
) -> float:
|
|
636
|
+
"""MDA reductase rate: second-order disproportionation of monodehydroascorbate."""
|
|
637
|
+
return k3 * mda**2
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
def _rate_mda_reductase2(
|
|
641
|
+
nadph: float,
|
|
642
|
+
mda: float,
|
|
643
|
+
vmax: float,
|
|
644
|
+
km_nadph: float,
|
|
645
|
+
km_mda: float,
|
|
646
|
+
) -> float:
|
|
647
|
+
"""Compare Valero et al. 2016."""
|
|
648
|
+
nom = vmax * nadph * mda
|
|
649
|
+
denom = km_nadph * mda + km_mda * nadph + nadph * mda + km_nadph * km_mda
|
|
650
|
+
return nom / denom
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
def _rate_ascorbate_peroxidase(
|
|
654
|
+
a: float,
|
|
655
|
+
h: float,
|
|
656
|
+
kf1: float,
|
|
657
|
+
kr1: float,
|
|
658
|
+
kf2: float,
|
|
659
|
+
kr2: float,
|
|
660
|
+
kf3: float,
|
|
661
|
+
kf4: float,
|
|
662
|
+
kr4: float,
|
|
663
|
+
kf5: float,
|
|
664
|
+
xt: float,
|
|
665
|
+
) -> float:
|
|
666
|
+
"""Lumped reaction of ascorbate peroxidase.
|
|
667
|
+
|
|
668
|
+
the cycle stretched to a linear chain with
|
|
669
|
+
two steps producing the MDA
|
|
670
|
+
two steps releasing ASC
|
|
671
|
+
and one step producing hydrogen peroxide.
|
|
672
|
+
"""
|
|
673
|
+
nom = a * h * xt
|
|
674
|
+
denom = (
|
|
675
|
+
a * h * (1 / kf3 + 1 / kf5)
|
|
676
|
+
+ a / kf1
|
|
677
|
+
+ h / kf4
|
|
678
|
+
+ h * kr4 / (kf4 * kf5)
|
|
679
|
+
+ h / kf2
|
|
680
|
+
+ h * kr2 / (kf2 * kf3)
|
|
681
|
+
+ kr1 / (kf1 * kf2)
|
|
682
|
+
+ kr1 * kr2 / (kf1 * kf2 * kf3)
|
|
683
|
+
)
|
|
684
|
+
return nom / denom
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
def _rate_glutathion_reductase(
|
|
688
|
+
nadph: float,
|
|
689
|
+
gssg: float,
|
|
690
|
+
vmax: float,
|
|
691
|
+
km_nadph: float,
|
|
692
|
+
km_gssg: float,
|
|
693
|
+
) -> float:
|
|
694
|
+
"""Glutathione reductase rate: bi-substrate Michaelis-Menten for NADPH + GSSG."""
|
|
695
|
+
nom = vmax * nadph * gssg
|
|
696
|
+
denom = km_nadph * gssg + km_gssg * nadph + nadph * gssg + km_nadph * km_gssg
|
|
697
|
+
return nom / denom
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
def _rate_dhar(
|
|
701
|
+
dha: float,
|
|
702
|
+
gsh: float,
|
|
703
|
+
vmax: float,
|
|
704
|
+
km_dha: float,
|
|
705
|
+
km_gsh: float,
|
|
706
|
+
k: float,
|
|
707
|
+
) -> float:
|
|
708
|
+
"""Dehydroascorbate reductase rate: bi-substrate random-order Michaelis-Menten."""
|
|
709
|
+
nom = vmax * dha * gsh
|
|
710
|
+
denom = k + km_dha * gsh + km_gsh * dha + dha * gsh
|
|
711
|
+
return nom / denom
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
def _ps2states_2016_phd_surrogate(
|
|
715
|
+
pq_ox: float,
|
|
716
|
+
pq_red: float,
|
|
717
|
+
ps2cs: float,
|
|
718
|
+
quencher: float,
|
|
719
|
+
psii_tot: float,
|
|
720
|
+
k2: float,
|
|
721
|
+
k_f: float,
|
|
722
|
+
_kh: float,
|
|
723
|
+
keq_pq_red: float,
|
|
724
|
+
k_pq_red: float,
|
|
725
|
+
pfd: float,
|
|
726
|
+
k_h0: float,
|
|
727
|
+
) -> tuple[float, float, float, float]:
|
|
728
|
+
"""PSII state populations (PHD quenching model, 2016) via analytical closed-form surrogate."""
|
|
729
|
+
x0 = k_f**2
|
|
730
|
+
x1 = k_h0**2
|
|
731
|
+
x2 = k2 * k_f
|
|
732
|
+
x3 = k2 * k_h0
|
|
733
|
+
x4 = 2 * k_f
|
|
734
|
+
x5 = k_h0 * x4
|
|
735
|
+
x6 = _kh * quencher
|
|
736
|
+
x7 = k2 * x6
|
|
737
|
+
x8 = x4 * x6
|
|
738
|
+
x9 = 2 * x6
|
|
739
|
+
x10 = k_h0 * x9
|
|
740
|
+
x11 = _kh**2 * quencher**2
|
|
741
|
+
x12 = k2 * keq_pq_red
|
|
742
|
+
x13 = k_pq_red * keq_pq_red * pq_ox
|
|
743
|
+
x14 = k_pq_red * pq_red
|
|
744
|
+
x15 = k2 * x14
|
|
745
|
+
x16 = pfd * ps2cs
|
|
746
|
+
x17 = k_f * x14
|
|
747
|
+
x18 = k_h0 * x14
|
|
748
|
+
x19 = x14 * x6
|
|
749
|
+
x20 = x13 * x16
|
|
750
|
+
x21 = keq_pq_red * x16
|
|
751
|
+
x22 = (
|
|
752
|
+
x0 * x14
|
|
753
|
+
+ x1 * x14
|
|
754
|
+
+ x11 * x14
|
|
755
|
+
+ x14 * x2
|
|
756
|
+
+ x14 * x3
|
|
757
|
+
+ x14 * x5
|
|
758
|
+
+ x14 * x7
|
|
759
|
+
+ x14 * x8
|
|
760
|
+
+ x18 * x9
|
|
761
|
+
+ x2 * x21
|
|
762
|
+
+ x21 * x3
|
|
763
|
+
+ x21 * x7
|
|
764
|
+
)
|
|
765
|
+
x23 = psii_tot / (
|
|
766
|
+
k_f * x20
|
|
767
|
+
+ k_h0 * x20
|
|
768
|
+
+ pfd**2 * ps2cs**2 * x12
|
|
769
|
+
+ x0 * x13
|
|
770
|
+
+ x1 * x13
|
|
771
|
+
+ x10 * x13
|
|
772
|
+
+ x11 * x13
|
|
773
|
+
+ x13 * x2
|
|
774
|
+
+ x13 * x3
|
|
775
|
+
+ x13 * x5
|
|
776
|
+
+ x13 * x7
|
|
777
|
+
+ x13 * x8
|
|
778
|
+
+ x15 * x16
|
|
779
|
+
+ x16 * x17
|
|
780
|
+
+ x16 * x18
|
|
781
|
+
+ x16 * x19
|
|
782
|
+
+ x20 * x6
|
|
783
|
+
+ x22
|
|
784
|
+
)
|
|
785
|
+
x24 = x16 * x23
|
|
786
|
+
_B0 = x13 * x23 * (x0 + x1 + x10 + x11 + x2 + x3 + x5 + x7 + x8)
|
|
787
|
+
_B1 = x13 * x24 * (k_f + k_h0 + x6)
|
|
788
|
+
_B2 = x22 * x23
|
|
789
|
+
_B3 = x24 * (x12 * x16 + x15 + x17 + x18 + x19)
|
|
790
|
+
return _B0, _B1, _B2, _B3
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
def _ps1states_2021_surrogate(
|
|
794
|
+
pc_ox: float,
|
|
795
|
+
pc_red: float,
|
|
796
|
+
fd_ox: float,
|
|
797
|
+
fd_red: float,
|
|
798
|
+
ps2cs: float,
|
|
799
|
+
ps1_tot: float,
|
|
800
|
+
k_fd_red: float,
|
|
801
|
+
keq_f: float,
|
|
802
|
+
keq_c: float,
|
|
803
|
+
k_pc_ox: float,
|
|
804
|
+
pfd: float,
|
|
805
|
+
k0: float,
|
|
806
|
+
o2: float,
|
|
807
|
+
) -> tuple[float, float, float]:
|
|
808
|
+
"""QSSA calculates open state of PSI.
|
|
809
|
+
|
|
810
|
+
depends on reduction states of plastocyanin and ferredoxin
|
|
811
|
+
C = [PC], F = [Fd] (ox. forms).
|
|
812
|
+
"""
|
|
813
|
+
kLI = (1 - ps2cs) * pfd
|
|
814
|
+
|
|
815
|
+
y0 = (
|
|
816
|
+
keq_c
|
|
817
|
+
* keq_f
|
|
818
|
+
* pc_red
|
|
819
|
+
* ps1_tot
|
|
820
|
+
* k_pc_ox
|
|
821
|
+
* (fd_ox * k_fd_red + o2 * k0)
|
|
822
|
+
/ (
|
|
823
|
+
fd_ox * keq_c * keq_f * pc_red * k_fd_red * k_pc_ox
|
|
824
|
+
+ fd_ox * keq_f * k_fd_red * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
825
|
+
+ fd_red * k_fd_red * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
826
|
+
+ keq_c * keq_f * o2 * pc_red * k0 * k_pc_ox
|
|
827
|
+
+ keq_c * keq_f * pc_red * kLI * k_pc_ox
|
|
828
|
+
+ keq_f * o2 * k0 * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
829
|
+
)
|
|
830
|
+
)
|
|
831
|
+
|
|
832
|
+
y1 = (
|
|
833
|
+
ps1_tot
|
|
834
|
+
* (
|
|
835
|
+
fd_red * k_fd_red * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
836
|
+
+ keq_c * keq_f * pc_red * kLI * k_pc_ox
|
|
837
|
+
)
|
|
838
|
+
/ (
|
|
839
|
+
fd_ox * keq_c * keq_f * pc_red * k_fd_red * k_pc_ox
|
|
840
|
+
+ fd_ox * keq_f * k_fd_red * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
841
|
+
+ fd_red * k_fd_red * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
842
|
+
+ keq_c * keq_f * o2 * pc_red * k0 * k_pc_ox
|
|
843
|
+
+ keq_c * keq_f * pc_red * kLI * k_pc_ox
|
|
844
|
+
+ keq_f * o2 * k0 * (keq_c * kLI + pc_ox * k_pc_ox)
|
|
845
|
+
)
|
|
846
|
+
)
|
|
847
|
+
y2 = ps1_tot - y0 - y1
|
|
848
|
+
|
|
849
|
+
return y0, y1, y2
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
def _div(
|
|
853
|
+
x: float,
|
|
854
|
+
y: float,
|
|
855
|
+
) -> float:
|
|
856
|
+
"""Return x / y."""
|
|
857
|
+
return x / y
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
def _rate_fluorescence(
|
|
861
|
+
q: float,
|
|
862
|
+
b0: float,
|
|
863
|
+
b2: float,
|
|
864
|
+
ps2cs: float,
|
|
865
|
+
k2: float,
|
|
866
|
+
k_f: float,
|
|
867
|
+
k_h: float,
|
|
868
|
+
) -> float:
|
|
869
|
+
"""Chlorophyll fluorescence yield from open (B0) and closed (B2) PSII centres."""
|
|
870
|
+
return ps2cs * k_f * b0 / (k_f + k2 + k_h * q) + ps2cs * k_f * b2 / (k_f + k_h * q)
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
def create_model() -> Model:
|
|
874
|
+
"""Saadat 2021 chloroplast model with ROS scavenging, Calvin cycle, and thioredoxin regulation.
|
|
875
|
+
|
|
876
|
+
Reference: Saadat, Nima P., et al.
|
|
877
|
+
"Computational analysis of alternative photosynthetic electron flows linked with oxidative stress."
|
|
878
|
+
Frontiers in plant science 12 (2021): 750580
|
|
879
|
+
"""
|
|
880
|
+
m: Model = Model()
|
|
881
|
+
m = m.add_variable("3PGA", initial_value=0.9167729479368978)
|
|
882
|
+
m = m.add_variable("BPGA", initial_value=0.0003814495319659031)
|
|
883
|
+
m = m.add_variable("GAP", initial_value=0.00580821050261484)
|
|
884
|
+
m = m.add_variable("DHAP", initial_value=0.1277806166216142)
|
|
885
|
+
m = m.add_variable("FBP", initial_value=0.005269452472931973)
|
|
886
|
+
m = m.add_variable("F6P", initial_value=0.2874944558066638)
|
|
887
|
+
m = m.add_variable("G6P", initial_value=0.6612372482712676)
|
|
888
|
+
m = m.add_variable("G1P", initial_value=0.03835176039761378)
|
|
889
|
+
m = m.add_variable("SBP", initial_value=0.011101373736607443)
|
|
890
|
+
m = m.add_variable("S7P", initial_value=0.1494578301900007)
|
|
891
|
+
m = m.add_variable("E4P", initial_value=0.00668295494870102)
|
|
892
|
+
m = m.add_variable("X5P", initial_value=0.020988553174809618)
|
|
893
|
+
m = m.add_variable("R5P", initial_value=0.035155825913785584)
|
|
894
|
+
m = m.add_variable("RUBP", initial_value=0.11293260727162346)
|
|
895
|
+
m = m.add_variable("RU5P", initial_value=0.014062330254191594)
|
|
896
|
+
m = m.add_variable("ATP", initial_value=1.4612747767895344)
|
|
897
|
+
m = m.add_variable("Ferredoxine (oxidised)", initial_value=3.715702384326767)
|
|
898
|
+
m = m.add_variable("protons_lumen", initial_value=0.002086128887296243)
|
|
899
|
+
m = m.add_variable("Light-harvesting complex", initial_value=0.7805901436176024)
|
|
900
|
+
m = m.add_variable("NADPH", initial_value=0.5578718406315588)
|
|
901
|
+
m = m.add_variable("Plastocyanine (oxidised)", initial_value=1.8083642974980014)
|
|
902
|
+
m = m.add_variable("Plastoquinone (oxidised)", initial_value=10.251099271612473)
|
|
903
|
+
m = m.add_variable("PsbS (de-protonated)", initial_value=0.9667381262477079)
|
|
904
|
+
m = m.add_variable("Violaxanthin", initial_value=0.9629870646993118)
|
|
905
|
+
m = m.add_variable("MDA", initial_value=2.0353396709300447e-07)
|
|
906
|
+
m = m.add_variable("H2O2", initial_value=1.2034405327140102e-07)
|
|
907
|
+
m = m.add_variable("DHA", initial_value=1.0296456279861962e-11)
|
|
908
|
+
m = m.add_variable("GSSG", initial_value=4.99986167652437e-12)
|
|
909
|
+
m = m.add_variable("Thioredoxin (oxidised)", initial_value=0.9334426859846461)
|
|
910
|
+
m = m.add_variable("E_inactive", initial_value=3.6023635680406634)
|
|
911
|
+
m = m.add_parameter("PPFD", value=100.0)
|
|
912
|
+
m = m.add_parameter("CO2 (dissolved)", value=0.2)
|
|
913
|
+
m = m.add_parameter("O2 (dissolved)_lumen", value=8.0)
|
|
914
|
+
m = m.add_parameter("pH", value=7.9)
|
|
915
|
+
m = m.add_parameter("protons", value=1.2589254117941661e-05)
|
|
916
|
+
m = m.add_parameter("bH", value=100.0)
|
|
917
|
+
m = m.add_parameter("F", value=96.485)
|
|
918
|
+
m = m.add_parameter("E^0_PC", value=0.38)
|
|
919
|
+
m = m.add_parameter("E^0_P700", value=0.48)
|
|
920
|
+
m = m.add_parameter("E^0_FA", value=-0.55)
|
|
921
|
+
m = m.add_parameter("E^0_Fd", value=-0.43)
|
|
922
|
+
m = m.add_parameter("E^0_NADP", value=-0.113)
|
|
923
|
+
m = m.add_parameter("convf", value=0.032)
|
|
924
|
+
m = m.add_parameter("R", value=0.0083)
|
|
925
|
+
m = m.add_parameter("T", value=298.0)
|
|
926
|
+
m = m.add_parameter("Carotenoids_tot", value=1.0)
|
|
927
|
+
m = m.add_parameter("Fd*", value=5.0)
|
|
928
|
+
m = m.add_parameter("PC_tot", value=4.0)
|
|
929
|
+
m = m.add_parameter("PSBS_tot", value=1.0)
|
|
930
|
+
m = m.add_parameter("LHC_tot", value=1.0)
|
|
931
|
+
m = m.add_parameter("gamma0", value=0.1)
|
|
932
|
+
m = m.add_parameter("gamma1", value=0.25)
|
|
933
|
+
m = m.add_parameter("gamma2", value=0.6)
|
|
934
|
+
m = m.add_parameter("gamma3", value=0.15)
|
|
935
|
+
m = m.add_parameter("kZSat", value=0.12)
|
|
936
|
+
m = m.add_parameter("E^0_QA", value=-0.14)
|
|
937
|
+
m = m.add_parameter("E^0_PQ", value=0.354)
|
|
938
|
+
m = m.add_parameter("PQ_tot", value=17.5)
|
|
939
|
+
m = m.add_parameter("staticAntII", value=0.1)
|
|
940
|
+
m = m.add_parameter("staticAntI", value=0.37)
|
|
941
|
+
m = m.add_parameter("Thioredoxin_tot", value=1.0)
|
|
942
|
+
m = m.add_parameter("E_total", value=6.0)
|
|
943
|
+
m = m.add_parameter("NADP*", value=0.8)
|
|
944
|
+
m = m.add_parameter("A*P", value=2.55)
|
|
945
|
+
m = m.add_parameter("Pi_tot", value=17.05)
|
|
946
|
+
m = m.add_parameter("kf_ferredoxin_thioredoxin_reductase", value=1.0)
|
|
947
|
+
m = m.add_parameter("kf_tr_activation", value=1.0)
|
|
948
|
+
m = m.add_parameter("kf_tr_inactivation", value=0.1)
|
|
949
|
+
m = m.add_parameter("ASC_tot*", value=10)
|
|
950
|
+
m = m.add_parameter("Glutathion_tot", value=10.0)
|
|
951
|
+
m = m.add_parameter("kf_atp_synthase", value=20.0)
|
|
952
|
+
m = m.add_parameter("HPR", value=4.666666666666667)
|
|
953
|
+
m = m.add_parameter("Pi_mol", value=0.01)
|
|
954
|
+
m = m.add_parameter("DeltaG0_ATP", value=30.6)
|
|
955
|
+
m = m.add_parameter("kcat_b6f", value=2.5)
|
|
956
|
+
m = m.add_parameter("kh_lhc_protonation", value=3.0)
|
|
957
|
+
m = m.add_parameter("kf_lhc_protonation", value=0.0096)
|
|
958
|
+
m = m.add_parameter("ksat_lhc_protonation", value=5.8)
|
|
959
|
+
m = m.add_parameter("kf_lhc_deprotonation", value=0.0096)
|
|
960
|
+
m = m.add_parameter("kf_cyclic_electron_flow", value=1.0)
|
|
961
|
+
m = m.add_parameter("kf_violaxanthin_deepoxidase", value=0.0024)
|
|
962
|
+
m = m.add_parameter("kh_violaxanthin_deepoxidase", value=5.0)
|
|
963
|
+
m = m.add_parameter("ksat_violaxanthin_deepoxidase", value=5.8)
|
|
964
|
+
m = m.add_parameter("kf_zeaxanthin_epoxidase", value=0.00024)
|
|
965
|
+
m = m.add_parameter("km_fnr_Ferredoxine (reduced)", value=1.56)
|
|
966
|
+
m = m.add_parameter("km_fnr_NADP", value=0.22)
|
|
967
|
+
m = m.add_parameter("E0_fnr", value=3.0)
|
|
968
|
+
m = m.add_parameter("kcat_fnr", value=500.0)
|
|
969
|
+
m = m.add_parameter("kf_ndh", value=0.002)
|
|
970
|
+
m = m.add_parameter("PSII_total", value=2.5)
|
|
971
|
+
m = m.add_parameter("PSI_total", value=2.5)
|
|
972
|
+
m = m.add_parameter("kH0", value=500000000.0)
|
|
973
|
+
m = m.add_parameter("kPQred", value=250.0)
|
|
974
|
+
m = m.add_parameter("kPCox", value=2500.0)
|
|
975
|
+
m = m.add_parameter("kFdred", value=250000.0)
|
|
976
|
+
m = m.add_parameter("k2", value=5000000000.0)
|
|
977
|
+
m = m.add_parameter("kH", value=5000000000.0)
|
|
978
|
+
m = m.add_parameter("kF", value=625000000.0)
|
|
979
|
+
m = m.add_parameter("kMehler", value=1.0)
|
|
980
|
+
m = m.add_parameter("E0_ferredoxin_reductase", value=1.0)
|
|
981
|
+
m = m.add_parameter("kcat_ferredoxin_reductase", value=250000.0)
|
|
982
|
+
m = m.add_parameter("kf_proton_leak", value=10.0)
|
|
983
|
+
m = m.add_parameter("kPTOX", value=0.01)
|
|
984
|
+
m = m.add_parameter("kStt7", value=0.0035)
|
|
985
|
+
m = m.add_parameter("km_lhc_state_transition_12", value=0.2)
|
|
986
|
+
m = m.add_parameter("n_ST", value=2.0)
|
|
987
|
+
m = m.add_parameter("kPph1", value=0.0013)
|
|
988
|
+
m = m.add_parameter("E0_rubisco", value=1.0)
|
|
989
|
+
m = m.add_parameter("kcat_rubisco_carboxylase", value=2.72)
|
|
990
|
+
m = m.add_parameter("km_rubisco_carboxylase_RUBP", value=0.02)
|
|
991
|
+
m = m.add_parameter("km_rubisco_carboxylase_CO2 (dissolved)", value=0.0107)
|
|
992
|
+
m = m.add_parameter("ki_rubisco_carboxylase_3PGA", value=0.04)
|
|
993
|
+
m = m.add_parameter("ki_rubisco_carboxylase_FBP", value=0.04)
|
|
994
|
+
m = m.add_parameter("ki_rubisco_carboxylase_SBP", value=0.075)
|
|
995
|
+
m = m.add_parameter("ki_rubisco_carboxylase_Orthophosphate", value=0.9)
|
|
996
|
+
m = m.add_parameter("ki_rubisco_carboxylase_NADPH", value=0.07)
|
|
997
|
+
m = m.add_parameter("kre_phosphoglycerate_kinase", value=800000000.0)
|
|
998
|
+
m = m.add_parameter("keq_phosphoglycerate_kinase", value=0.00031)
|
|
999
|
+
m = m.add_parameter("kre_gadph", value=800000000.0)
|
|
1000
|
+
m = m.add_parameter("keq_gadph", value=16000000.0)
|
|
1001
|
+
m = m.add_parameter("kre_triose_phosphate_isomerase", value=800000000.0)
|
|
1002
|
+
m = m.add_parameter("keq_triose_phosphate_isomerase", value=22.0)
|
|
1003
|
+
m = m.add_parameter("kre_aldolase_dhap_gap", value=800000000.0)
|
|
1004
|
+
m = m.add_parameter("keq_aldolase_dhap_gap", value=7.1)
|
|
1005
|
+
m = m.add_parameter("kre_aldolase_dhap_e4p", value=800000000.0)
|
|
1006
|
+
m = m.add_parameter("keq_aldolase_dhap_e4p", value=13.0)
|
|
1007
|
+
m = m.add_parameter("E0_fbpase", value=1.0)
|
|
1008
|
+
m = m.add_parameter("kcat_fbpase", value=1.6)
|
|
1009
|
+
m = m.add_parameter("km_fbpase_s", value=0.03)
|
|
1010
|
+
m = m.add_parameter("ki_fbpase_F6P", value=0.7)
|
|
1011
|
+
m = m.add_parameter("ki_fbpase_Orthophosphate", value=12.0)
|
|
1012
|
+
m = m.add_parameter("kre_transketolase_gap_f6p", value=800000000.0)
|
|
1013
|
+
m = m.add_parameter("keq_transketolase_gap_f6p", value=0.084)
|
|
1014
|
+
m = m.add_parameter("kre_transketolase_gap_s7p", value=800000000.0)
|
|
1015
|
+
m = m.add_parameter("keq_transketolase_gap_s7p", value=0.85)
|
|
1016
|
+
m = m.add_parameter("E0_SBPase", value=1.0)
|
|
1017
|
+
m = m.add_parameter("kcat_SBPase", value=0.32)
|
|
1018
|
+
m = m.add_parameter("km_SBPase_s", value=0.013)
|
|
1019
|
+
m = m.add_parameter("ki_SBPase_Orthophosphate", value=12.0)
|
|
1020
|
+
m = m.add_parameter("kre_ribose_phosphate_isomerase", value=800000000.0)
|
|
1021
|
+
m = m.add_parameter("keq_ribose_phosphate_isomerase", value=0.4)
|
|
1022
|
+
m = m.add_parameter("kre_ribulose_phosphate_epimerase", value=800000000.0)
|
|
1023
|
+
m = m.add_parameter("keq_ribulose_phosphate_epimerase", value=0.67)
|
|
1024
|
+
m = m.add_parameter("E0_phosphoribulokinase", value=1.0)
|
|
1025
|
+
m = m.add_parameter("kcat_phosphoribulokinase", value=7.9992)
|
|
1026
|
+
m = m.add_parameter("km_phosphoribulokinase_RU5P", value=0.05)
|
|
1027
|
+
m = m.add_parameter("km_phosphoribulokinase_ATP", value=0.05)
|
|
1028
|
+
m = m.add_parameter("ki_phosphoribulokinase_3PGA", value=2.0)
|
|
1029
|
+
m = m.add_parameter("ki_phosphoribulokinase_RUBP", value=0.7)
|
|
1030
|
+
m = m.add_parameter("ki_phosphoribulokinase_Orthophosphate", value=4.0)
|
|
1031
|
+
m = m.add_parameter("ki_phosphoribulokinase_4", value=2.5)
|
|
1032
|
+
m = m.add_parameter("ki_phosphoribulokinase_5", value=0.4)
|
|
1033
|
+
m = m.add_parameter("kre_g6pi", value=800000000.0)
|
|
1034
|
+
m = m.add_parameter("keq_g6pi", value=2.3)
|
|
1035
|
+
m = m.add_parameter("kre_phosphoglucomutase", value=800000000.0)
|
|
1036
|
+
m = m.add_parameter("keq_phosphoglucomutase", value=0.058)
|
|
1037
|
+
m = m.add_parameter("Orthophosphate (external)", value=0.5)
|
|
1038
|
+
m = m.add_parameter("km_ex_pga", value=0.25)
|
|
1039
|
+
m = m.add_parameter("km_ex_gap", value=0.075)
|
|
1040
|
+
m = m.add_parameter("km_ex_dhap", value=0.077)
|
|
1041
|
+
m = m.add_parameter("km_N_translocator_Orthophosphate (external)", value=0.74)
|
|
1042
|
+
m = m.add_parameter("km_N_translocator_Orthophosphate", value=0.63)
|
|
1043
|
+
m = m.add_parameter("kcat_N_translocator", value=2.0)
|
|
1044
|
+
m = m.add_parameter("E0_N_translocator", value=1.0)
|
|
1045
|
+
m = m.add_parameter("E0_ex_g1p", value=1.0)
|
|
1046
|
+
m = m.add_parameter("km_ex_g1p_G1P", value=0.08)
|
|
1047
|
+
m = m.add_parameter("km_ex_g1p_ATP", value=0.08)
|
|
1048
|
+
m = m.add_parameter("ki_ex_g1p", value=10.0)
|
|
1049
|
+
m = m.add_parameter("ki_ex_g1p_3PGA", value=0.1)
|
|
1050
|
+
m = m.add_parameter("ki_ex_g1p_F6P", value=0.02)
|
|
1051
|
+
m = m.add_parameter("ki_ex_g1p_FBP", value=0.02)
|
|
1052
|
+
m = m.add_parameter("kcat_ex_g1p", value=0.32)
|
|
1053
|
+
m = m.add_parameter("kf_mda_reductase_1", value=500.0)
|
|
1054
|
+
m = m.add_parameter("E0_mda_reductase_2", value=0.002)
|
|
1055
|
+
m = m.add_parameter("kcat_mda_reductase_2", value=300.0)
|
|
1056
|
+
m = m.add_parameter("km_mda_reductase_2_NADPH", value=0.023)
|
|
1057
|
+
m = m.add_parameter("km_mda_reductase_2_MDA", value=0.0014)
|
|
1058
|
+
m = m.add_parameter("kf1", value=10000.0)
|
|
1059
|
+
m = m.add_parameter("kr1", value=220.0)
|
|
1060
|
+
m = m.add_parameter("kf2", value=10000.0)
|
|
1061
|
+
m = m.add_parameter("kr2", value=4000.0)
|
|
1062
|
+
m = m.add_parameter("kf3", value=2510.0)
|
|
1063
|
+
m = m.add_parameter("kf4", value=10000.0)
|
|
1064
|
+
m = m.add_parameter("kr4", value=4000.0)
|
|
1065
|
+
m = m.add_parameter("kf5", value=2510.0)
|
|
1066
|
+
m = m.add_parameter("XT", value=0.07)
|
|
1067
|
+
m = m.add_parameter("E0_glutathion_reductase", value=0.0014)
|
|
1068
|
+
m = m.add_parameter("kcat_glutathion_reductase", value=595)
|
|
1069
|
+
m = m.add_parameter("km_glutathion_reductase_NADPH", value=0.003)
|
|
1070
|
+
m = m.add_parameter("km_glutathion_reductase_GSSG", value=0.2)
|
|
1071
|
+
m = m.add_parameter("km_dehydroascorbate_reductase_DHA", value=0.07)
|
|
1072
|
+
m = m.add_parameter("km_dehydroascorbate_reductase_GSH", value=2.5)
|
|
1073
|
+
m = m.add_parameter("K", value=0.5)
|
|
1074
|
+
m = m.add_parameter("E0_dehydroascorbate_reductase", value=0.0017)
|
|
1075
|
+
m = m.add_parameter("kcat_dehydroascorbate_reductase", value=142)
|
|
1076
|
+
m = m.add_parameter("kf_ex_atp", value=0.2)
|
|
1077
|
+
m = m.add_parameter("kf_ex_nadph", value=0.2)
|
|
1078
|
+
m = m.add_derived(
|
|
1079
|
+
"RT",
|
|
1080
|
+
fn=_mass_action_1s,
|
|
1081
|
+
args=["R", "T"],
|
|
1082
|
+
)
|
|
1083
|
+
m = m.add_derived(
|
|
1084
|
+
"dG_pH",
|
|
1085
|
+
fn=_dg_ph,
|
|
1086
|
+
args=["R", "T"],
|
|
1087
|
+
)
|
|
1088
|
+
m = m.add_derived(
|
|
1089
|
+
"pH_lumen",
|
|
1090
|
+
fn=_ph_lumen,
|
|
1091
|
+
args=["protons_lumen"],
|
|
1092
|
+
)
|
|
1093
|
+
m = m.add_derived(
|
|
1094
|
+
"Zeaxanthin",
|
|
1095
|
+
fn=_moiety_1,
|
|
1096
|
+
args=["Violaxanthin", "Carotenoids_tot"],
|
|
1097
|
+
)
|
|
1098
|
+
m = m.add_derived(
|
|
1099
|
+
"Ferredoxine (reduced)",
|
|
1100
|
+
fn=_moiety_1,
|
|
1101
|
+
args=["Ferredoxine (oxidised)", "Fd*"],
|
|
1102
|
+
)
|
|
1103
|
+
m = m.add_derived(
|
|
1104
|
+
"Plastocyanine (reduced)",
|
|
1105
|
+
fn=_moiety_1,
|
|
1106
|
+
args=["Plastocyanine (oxidised)", "PC_tot"],
|
|
1107
|
+
)
|
|
1108
|
+
m = m.add_derived(
|
|
1109
|
+
"PsbS (protonated)",
|
|
1110
|
+
fn=_moiety_1,
|
|
1111
|
+
args=["PsbS (de-protonated)", "PSBS_tot"],
|
|
1112
|
+
)
|
|
1113
|
+
m = m.add_derived(
|
|
1114
|
+
"Light-harvesting complex (protonated)",
|
|
1115
|
+
fn=_moiety_1,
|
|
1116
|
+
args=["Light-harvesting complex", "LHC_tot"],
|
|
1117
|
+
)
|
|
1118
|
+
m = m.add_derived(
|
|
1119
|
+
"Q",
|
|
1120
|
+
fn=_quencher,
|
|
1121
|
+
args=[
|
|
1122
|
+
"PsbS (de-protonated)",
|
|
1123
|
+
"Violaxanthin",
|
|
1124
|
+
"PsbS (protonated)",
|
|
1125
|
+
"Zeaxanthin",
|
|
1126
|
+
"gamma0",
|
|
1127
|
+
"gamma1",
|
|
1128
|
+
"gamma2",
|
|
1129
|
+
"gamma3",
|
|
1130
|
+
"kZSat",
|
|
1131
|
+
],
|
|
1132
|
+
)
|
|
1133
|
+
m = m.add_derived(
|
|
1134
|
+
"keq_Plastoquinone (reduced)",
|
|
1135
|
+
fn=_keq_pq_red,
|
|
1136
|
+
args=["E^0_QA", "F", "E^0_PQ", "pH", "dG_pH", "RT"],
|
|
1137
|
+
)
|
|
1138
|
+
m = m.add_derived(
|
|
1139
|
+
"Plastoquinone (reduced)",
|
|
1140
|
+
fn=_moiety_1,
|
|
1141
|
+
args=["Plastoquinone (oxidised)", "PQ_tot"],
|
|
1142
|
+
)
|
|
1143
|
+
m = m.add_derived(
|
|
1144
|
+
"PSII_cross_section",
|
|
1145
|
+
fn=_ps2_crosssection,
|
|
1146
|
+
args=["Light-harvesting complex", "staticAntII", "staticAntI"],
|
|
1147
|
+
)
|
|
1148
|
+
m = m.add_derived(
|
|
1149
|
+
"Thioredoxin (reduced)",
|
|
1150
|
+
fn=_moiety_1,
|
|
1151
|
+
args=["Thioredoxin (oxidised)", "Thioredoxin_tot"],
|
|
1152
|
+
)
|
|
1153
|
+
m = m.add_derived(
|
|
1154
|
+
"E_active",
|
|
1155
|
+
fn=_moiety_1,
|
|
1156
|
+
args=["E_inactive", "E_total"],
|
|
1157
|
+
)
|
|
1158
|
+
m = m.add_derived(
|
|
1159
|
+
"NADP",
|
|
1160
|
+
fn=_moiety_1,
|
|
1161
|
+
args=["NADPH", "NADP*"],
|
|
1162
|
+
)
|
|
1163
|
+
m = m.add_derived(
|
|
1164
|
+
"ADP",
|
|
1165
|
+
fn=_moiety_1,
|
|
1166
|
+
args=["ATP", "A*P"],
|
|
1167
|
+
)
|
|
1168
|
+
m = m.add_derived(
|
|
1169
|
+
"Orthophosphate",
|
|
1170
|
+
fn=_pi_cbb,
|
|
1171
|
+
args=[
|
|
1172
|
+
"Pi_tot",
|
|
1173
|
+
"3PGA",
|
|
1174
|
+
"BPGA",
|
|
1175
|
+
"GAP",
|
|
1176
|
+
"DHAP",
|
|
1177
|
+
"FBP",
|
|
1178
|
+
"F6P",
|
|
1179
|
+
"G6P",
|
|
1180
|
+
"G1P",
|
|
1181
|
+
"SBP",
|
|
1182
|
+
"S7P",
|
|
1183
|
+
"E4P",
|
|
1184
|
+
"X5P",
|
|
1185
|
+
"R5P",
|
|
1186
|
+
"RUBP",
|
|
1187
|
+
"RU5P",
|
|
1188
|
+
"ATP",
|
|
1189
|
+
],
|
|
1190
|
+
)
|
|
1191
|
+
m = m.add_derived(
|
|
1192
|
+
"ascorbate",
|
|
1193
|
+
fn=_moiety_2,
|
|
1194
|
+
args=["MDA", "DHA", "ASC_tot*"],
|
|
1195
|
+
)
|
|
1196
|
+
m = m.add_derived(
|
|
1197
|
+
"GSH",
|
|
1198
|
+
fn=_glutathion_moiety,
|
|
1199
|
+
args=["GSSG", "Glutathion_tot"],
|
|
1200
|
+
)
|
|
1201
|
+
m = m.add_derived(
|
|
1202
|
+
"keq_atp_synthase",
|
|
1203
|
+
fn=_keq_atp,
|
|
1204
|
+
args=["pH_lumen", "DeltaG0_ATP", "dG_pH", "HPR", "pH", "Pi_mol", "RT"],
|
|
1205
|
+
)
|
|
1206
|
+
m = m.add_derived(
|
|
1207
|
+
"keq_b6f",
|
|
1208
|
+
fn=_keq_cytb6f,
|
|
1209
|
+
args=["pH_lumen", "F", "E^0_PQ", "E^0_PC", "pH", "RT", "dG_pH"],
|
|
1210
|
+
)
|
|
1211
|
+
m = m.add_derived(
|
|
1212
|
+
"keq_fnr",
|
|
1213
|
+
fn=_keq_fnr,
|
|
1214
|
+
args=["E^0_Fd", "F", "E^0_NADP", "pH", "dG_pH", "RT"],
|
|
1215
|
+
)
|
|
1216
|
+
m = m.add_derived(
|
|
1217
|
+
"vmax_fnr",
|
|
1218
|
+
fn=_mass_action_1s,
|
|
1219
|
+
args=["kcat_fnr", "E0_fnr"],
|
|
1220
|
+
)
|
|
1221
|
+
m = m.add_derived(
|
|
1222
|
+
"keq_PCP700",
|
|
1223
|
+
fn=_keq_pcp700,
|
|
1224
|
+
args=["E^0_PC", "F", "E^0_P700", "RT"],
|
|
1225
|
+
)
|
|
1226
|
+
m = m.add_derived(
|
|
1227
|
+
"keq_ferredoxin_reductase",
|
|
1228
|
+
fn=_keq_faf_d,
|
|
1229
|
+
args=["E^0_FA", "F", "E^0_Fd", "RT"],
|
|
1230
|
+
)
|
|
1231
|
+
m = m.add_derived(
|
|
1232
|
+
"vmax_ferredoxin_reductase",
|
|
1233
|
+
fn=_mass_action_1s,
|
|
1234
|
+
args=["kcat_ferredoxin_reductase", "E0_ferredoxin_reductase"],
|
|
1235
|
+
)
|
|
1236
|
+
m = m.add_derived(
|
|
1237
|
+
"E0_rubisco_active",
|
|
1238
|
+
fn=_mul,
|
|
1239
|
+
args=["E0_rubisco", "E_active"],
|
|
1240
|
+
)
|
|
1241
|
+
m = m.add_derived(
|
|
1242
|
+
"vmax_rubisco_carboxylase",
|
|
1243
|
+
fn=_mass_action_1s,
|
|
1244
|
+
args=["kcat_rubisco_carboxylase", "E0_rubisco_active"],
|
|
1245
|
+
)
|
|
1246
|
+
m = m.add_derived(
|
|
1247
|
+
"E0_fbpase_active",
|
|
1248
|
+
fn=_mul,
|
|
1249
|
+
args=["E0_fbpase", "E_active"],
|
|
1250
|
+
)
|
|
1251
|
+
m = m.add_derived(
|
|
1252
|
+
"vmax_fbpase",
|
|
1253
|
+
fn=_mass_action_1s,
|
|
1254
|
+
args=["kcat_fbpase", "E0_fbpase_active"],
|
|
1255
|
+
)
|
|
1256
|
+
m = m.add_derived(
|
|
1257
|
+
"E0_SBPase_active",
|
|
1258
|
+
fn=_mul,
|
|
1259
|
+
args=["E0_SBPase", "E_active"],
|
|
1260
|
+
)
|
|
1261
|
+
m = m.add_derived(
|
|
1262
|
+
"vmax_SBPase",
|
|
1263
|
+
fn=_mass_action_1s,
|
|
1264
|
+
args=["kcat_SBPase", "E0_SBPase_active"],
|
|
1265
|
+
)
|
|
1266
|
+
m = m.add_derived(
|
|
1267
|
+
"E0_phosphoribulokinase_active",
|
|
1268
|
+
fn=_mul,
|
|
1269
|
+
args=["E0_phosphoribulokinase", "E_active"],
|
|
1270
|
+
)
|
|
1271
|
+
m = m.add_derived(
|
|
1272
|
+
"vmax_phosphoribulokinase",
|
|
1273
|
+
fn=_mass_action_1s,
|
|
1274
|
+
args=["kcat_phosphoribulokinase", "E0_phosphoribulokinase_active"],
|
|
1275
|
+
)
|
|
1276
|
+
m = m.add_derived(
|
|
1277
|
+
"vmax_ex_pga",
|
|
1278
|
+
fn=_mass_action_1s,
|
|
1279
|
+
args=["kcat_N_translocator", "E0_N_translocator"],
|
|
1280
|
+
)
|
|
1281
|
+
m = m.add_derived(
|
|
1282
|
+
"N_translocator",
|
|
1283
|
+
fn=_rate_translocator,
|
|
1284
|
+
args=[
|
|
1285
|
+
"Orthophosphate",
|
|
1286
|
+
"3PGA",
|
|
1287
|
+
"GAP",
|
|
1288
|
+
"DHAP",
|
|
1289
|
+
"km_N_translocator_Orthophosphate (external)",
|
|
1290
|
+
"Orthophosphate (external)",
|
|
1291
|
+
"km_N_translocator_Orthophosphate",
|
|
1292
|
+
"km_ex_pga",
|
|
1293
|
+
"km_ex_gap",
|
|
1294
|
+
"km_ex_dhap",
|
|
1295
|
+
],
|
|
1296
|
+
)
|
|
1297
|
+
m = m.add_derived(
|
|
1298
|
+
"E0_ex_g1p_active",
|
|
1299
|
+
fn=_mul,
|
|
1300
|
+
args=["E0_ex_g1p", "E_active"],
|
|
1301
|
+
)
|
|
1302
|
+
m = m.add_derived(
|
|
1303
|
+
"vmax_ex_g1p",
|
|
1304
|
+
fn=_mass_action_1s,
|
|
1305
|
+
args=["kcat_ex_g1p", "E0_ex_g1p_active"],
|
|
1306
|
+
)
|
|
1307
|
+
m = m.add_derived(
|
|
1308
|
+
"vmax_mda_reductase_2",
|
|
1309
|
+
fn=_mass_action_1s,
|
|
1310
|
+
args=["kcat_mda_reductase_2", "E0_mda_reductase_2"],
|
|
1311
|
+
)
|
|
1312
|
+
m = m.add_derived(
|
|
1313
|
+
"vmax_glutathion_reductase",
|
|
1314
|
+
fn=_mass_action_1s,
|
|
1315
|
+
args=["kcat_glutathion_reductase", "E0_glutathion_reductase"],
|
|
1316
|
+
)
|
|
1317
|
+
m = m.add_derived(
|
|
1318
|
+
"vmax_dehydroascorbate_reductase",
|
|
1319
|
+
fn=_mass_action_1s,
|
|
1320
|
+
args=["kcat_dehydroascorbate_reductase", "E0_dehydroascorbate_reductase"],
|
|
1321
|
+
)
|
|
1322
|
+
m = m.add_reaction(
|
|
1323
|
+
"ferredoxin_thioredoxin_reductase",
|
|
1324
|
+
fn=_mass_action_2s,
|
|
1325
|
+
args=[
|
|
1326
|
+
"Thioredoxin (oxidised)",
|
|
1327
|
+
"Ferredoxine (reduced)",
|
|
1328
|
+
"kf_ferredoxin_thioredoxin_reductase",
|
|
1329
|
+
],
|
|
1330
|
+
stoichiometry={"Thioredoxin (oxidised)": -1, "Ferredoxine (oxidised)": 1},
|
|
1331
|
+
)
|
|
1332
|
+
m = m.add_reaction(
|
|
1333
|
+
"tr_activation",
|
|
1334
|
+
fn=_mass_action_2s,
|
|
1335
|
+
args=["E_inactive", "Thioredoxin (reduced)", "kf_tr_activation"],
|
|
1336
|
+
stoichiometry={"E_inactive": -5, "Thioredoxin (oxidised)": 5},
|
|
1337
|
+
)
|
|
1338
|
+
m = m.add_reaction(
|
|
1339
|
+
"tr_inactivation",
|
|
1340
|
+
fn=_mass_action_1s,
|
|
1341
|
+
args=["E_active", "kf_tr_inactivation"],
|
|
1342
|
+
stoichiometry={"E_inactive": 5},
|
|
1343
|
+
)
|
|
1344
|
+
m = m.add_reaction(
|
|
1345
|
+
"atp_synthase",
|
|
1346
|
+
fn=_rate_atp_synthase_2019,
|
|
1347
|
+
args=["ATP", "ADP", "keq_atp_synthase", "kf_atp_synthase", "convf"],
|
|
1348
|
+
stoichiometry={
|
|
1349
|
+
"protons_lumen": Derived(fn=_neg_div, args=["HPR", "bH"]),
|
|
1350
|
+
"ATP": Derived(fn=_value, args=["convf"]),
|
|
1351
|
+
},
|
|
1352
|
+
)
|
|
1353
|
+
m = m.add_reaction(
|
|
1354
|
+
"b6f",
|
|
1355
|
+
fn=_b6f,
|
|
1356
|
+
args=[
|
|
1357
|
+
"Plastocyanine (oxidised)",
|
|
1358
|
+
"Plastoquinone (oxidised)",
|
|
1359
|
+
"Plastoquinone (reduced)",
|
|
1360
|
+
"Plastocyanine (reduced)",
|
|
1361
|
+
"keq_b6f",
|
|
1362
|
+
"kcat_b6f",
|
|
1363
|
+
],
|
|
1364
|
+
stoichiometry={
|
|
1365
|
+
"Plastocyanine (oxidised)": -2,
|
|
1366
|
+
"Plastoquinone (oxidised)": 1,
|
|
1367
|
+
"protons_lumen": Derived(fn=_four_div_by, args=["bH"]),
|
|
1368
|
+
},
|
|
1369
|
+
)
|
|
1370
|
+
m = m.add_reaction(
|
|
1371
|
+
"lhc_protonation",
|
|
1372
|
+
fn=_protonation_hill,
|
|
1373
|
+
args=[
|
|
1374
|
+
"PsbS (de-protonated)",
|
|
1375
|
+
"protons_lumen",
|
|
1376
|
+
"kh_lhc_protonation",
|
|
1377
|
+
"kf_lhc_protonation",
|
|
1378
|
+
"ksat_lhc_protonation",
|
|
1379
|
+
],
|
|
1380
|
+
stoichiometry={"PsbS (de-protonated)": -1},
|
|
1381
|
+
)
|
|
1382
|
+
m = m.add_reaction(
|
|
1383
|
+
"lhc_deprotonation",
|
|
1384
|
+
fn=_mass_action_1s,
|
|
1385
|
+
args=["PsbS (protonated)", "kf_lhc_deprotonation"],
|
|
1386
|
+
stoichiometry={"PsbS (de-protonated)": 1},
|
|
1387
|
+
)
|
|
1388
|
+
m = m.add_reaction(
|
|
1389
|
+
"cyclic_electron_flow",
|
|
1390
|
+
fn=_rate_cyclic_electron_flow,
|
|
1391
|
+
args=[
|
|
1392
|
+
"Plastoquinone (oxidised)",
|
|
1393
|
+
"Ferredoxine (reduced)",
|
|
1394
|
+
"kf_cyclic_electron_flow",
|
|
1395
|
+
],
|
|
1396
|
+
stoichiometry={"Plastoquinone (oxidised)": -1, "Ferredoxine (oxidised)": 2},
|
|
1397
|
+
)
|
|
1398
|
+
m = m.add_reaction(
|
|
1399
|
+
"violaxanthin_deepoxidase",
|
|
1400
|
+
fn=_rate_protonation_hill,
|
|
1401
|
+
args=[
|
|
1402
|
+
"Violaxanthin",
|
|
1403
|
+
"protons_lumen",
|
|
1404
|
+
"kf_violaxanthin_deepoxidase",
|
|
1405
|
+
"kh_violaxanthin_deepoxidase",
|
|
1406
|
+
"ksat_violaxanthin_deepoxidase",
|
|
1407
|
+
],
|
|
1408
|
+
stoichiometry={"Violaxanthin": -1},
|
|
1409
|
+
)
|
|
1410
|
+
m = m.add_reaction(
|
|
1411
|
+
"zeaxanthin_epoxidase",
|
|
1412
|
+
fn=_mass_action_1s,
|
|
1413
|
+
args=["Zeaxanthin", "kf_zeaxanthin_epoxidase"],
|
|
1414
|
+
stoichiometry={"Violaxanthin": 1},
|
|
1415
|
+
)
|
|
1416
|
+
m = m.add_reaction(
|
|
1417
|
+
"fnr",
|
|
1418
|
+
fn=_rate_fnr_2019,
|
|
1419
|
+
args=[
|
|
1420
|
+
"Ferredoxine (oxidised)",
|
|
1421
|
+
"Ferredoxine (reduced)",
|
|
1422
|
+
"NADPH",
|
|
1423
|
+
"NADP",
|
|
1424
|
+
"km_fnr_Ferredoxine (reduced)",
|
|
1425
|
+
"km_fnr_NADP",
|
|
1426
|
+
"vmax_fnr",
|
|
1427
|
+
"keq_fnr",
|
|
1428
|
+
"convf",
|
|
1429
|
+
],
|
|
1430
|
+
stoichiometry={
|
|
1431
|
+
"Ferredoxine (oxidised)": 2,
|
|
1432
|
+
"NADPH": Derived(fn=_value, args=["convf"]),
|
|
1433
|
+
},
|
|
1434
|
+
)
|
|
1435
|
+
m = m.add_reaction(
|
|
1436
|
+
"ndh",
|
|
1437
|
+
fn=_mass_action_1s,
|
|
1438
|
+
args=["Plastoquinone (oxidised)", "kf_ndh"],
|
|
1439
|
+
stoichiometry={"Plastoquinone (oxidised)": -1},
|
|
1440
|
+
)
|
|
1441
|
+
m = m.add_reaction(
|
|
1442
|
+
"PSII",
|
|
1443
|
+
fn=_rate_ps2,
|
|
1444
|
+
args=["B1", "k2"],
|
|
1445
|
+
stoichiometry={
|
|
1446
|
+
"Plastoquinone (oxidised)": -1,
|
|
1447
|
+
"protons_lumen": Derived(fn=_two_div_by, args=["bH"]),
|
|
1448
|
+
},
|
|
1449
|
+
)
|
|
1450
|
+
m = m.add_reaction(
|
|
1451
|
+
"PSI",
|
|
1452
|
+
fn=_rate_ps1,
|
|
1453
|
+
args=["A0", "PSII_cross_section", "PPFD"],
|
|
1454
|
+
stoichiometry={"Plastocyanine (oxidised)": 1},
|
|
1455
|
+
)
|
|
1456
|
+
m = m.add_reaction(
|
|
1457
|
+
"mehler",
|
|
1458
|
+
fn=_mass_action_2s,
|
|
1459
|
+
args=["A1", "O2 (dissolved)_lumen", "kMehler"],
|
|
1460
|
+
stoichiometry={"H2O2": Derived(fn=_value, args=["convf"])},
|
|
1461
|
+
)
|
|
1462
|
+
m = m.add_reaction(
|
|
1463
|
+
"ferredoxin_reductase",
|
|
1464
|
+
fn=_rate_ferredoxin_reductase,
|
|
1465
|
+
args=[
|
|
1466
|
+
"Ferredoxine (oxidised)",
|
|
1467
|
+
"Ferredoxine (reduced)",
|
|
1468
|
+
"A1",
|
|
1469
|
+
"A2",
|
|
1470
|
+
"vmax_ferredoxin_reductase",
|
|
1471
|
+
"keq_ferredoxin_reductase",
|
|
1472
|
+
],
|
|
1473
|
+
stoichiometry={"Ferredoxine (oxidised)": -1},
|
|
1474
|
+
)
|
|
1475
|
+
m = m.add_reaction(
|
|
1476
|
+
"proton_leak",
|
|
1477
|
+
fn=_rate_leak,
|
|
1478
|
+
args=["protons_lumen", "pH", "kf_proton_leak"],
|
|
1479
|
+
stoichiometry={"protons_lumen": Derived(fn=_neg_one_div_by, args=["bH"])},
|
|
1480
|
+
)
|
|
1481
|
+
m = m.add_reaction(
|
|
1482
|
+
"PTOX",
|
|
1483
|
+
fn=_mass_action_2s,
|
|
1484
|
+
args=["Plastoquinone (reduced)", "O2 (dissolved)_lumen", "kPTOX"],
|
|
1485
|
+
stoichiometry={"Plastoquinone (oxidised)": 1},
|
|
1486
|
+
)
|
|
1487
|
+
m = m.add_reaction(
|
|
1488
|
+
"lhc_state_transition_12",
|
|
1489
|
+
fn=_rate_state_transition_ps1_ps2,
|
|
1490
|
+
args=[
|
|
1491
|
+
"Light-harvesting complex",
|
|
1492
|
+
"Plastoquinone (oxidised)",
|
|
1493
|
+
"PQ_tot",
|
|
1494
|
+
"kStt7",
|
|
1495
|
+
"km_lhc_state_transition_12",
|
|
1496
|
+
"n_ST",
|
|
1497
|
+
],
|
|
1498
|
+
stoichiometry={"Light-harvesting complex": -1},
|
|
1499
|
+
)
|
|
1500
|
+
m = m.add_reaction(
|
|
1501
|
+
"lhc_state_transition_21",
|
|
1502
|
+
fn=_mass_action_1s,
|
|
1503
|
+
args=["Light-harvesting complex (protonated)", "kPph1"],
|
|
1504
|
+
stoichiometry={"Light-harvesting complex": 1},
|
|
1505
|
+
)
|
|
1506
|
+
m = m.add_reaction(
|
|
1507
|
+
"rubisco_carboxylase",
|
|
1508
|
+
fn=_rate_poolman_5i,
|
|
1509
|
+
args=[
|
|
1510
|
+
"RUBP",
|
|
1511
|
+
"3PGA",
|
|
1512
|
+
"CO2 (dissolved)",
|
|
1513
|
+
"vmax_rubisco_carboxylase",
|
|
1514
|
+
"km_rubisco_carboxylase_RUBP",
|
|
1515
|
+
"km_rubisco_carboxylase_CO2 (dissolved)",
|
|
1516
|
+
"ki_rubisco_carboxylase_3PGA",
|
|
1517
|
+
"FBP",
|
|
1518
|
+
"ki_rubisco_carboxylase_FBP",
|
|
1519
|
+
"SBP",
|
|
1520
|
+
"ki_rubisco_carboxylase_SBP",
|
|
1521
|
+
"Orthophosphate",
|
|
1522
|
+
"ki_rubisco_carboxylase_Orthophosphate",
|
|
1523
|
+
"NADPH",
|
|
1524
|
+
"ki_rubisco_carboxylase_NADPH",
|
|
1525
|
+
],
|
|
1526
|
+
stoichiometry={"RUBP": -1.0, "3PGA": 2.0},
|
|
1527
|
+
)
|
|
1528
|
+
m = m.add_reaction(
|
|
1529
|
+
"phosphoglycerate_kinase",
|
|
1530
|
+
fn=_rapid_equilibrium_2s_2p,
|
|
1531
|
+
args=[
|
|
1532
|
+
"3PGA",
|
|
1533
|
+
"ATP",
|
|
1534
|
+
"BPGA",
|
|
1535
|
+
"ADP",
|
|
1536
|
+
"kre_phosphoglycerate_kinase",
|
|
1537
|
+
"keq_phosphoglycerate_kinase",
|
|
1538
|
+
],
|
|
1539
|
+
stoichiometry={"3PGA": -1.0, "ATP": -1.0, "BPGA": 1.0},
|
|
1540
|
+
)
|
|
1541
|
+
m = m.add_reaction(
|
|
1542
|
+
"gadph",
|
|
1543
|
+
fn=_rapid_equilibrium_3s_3p,
|
|
1544
|
+
args=[
|
|
1545
|
+
"BPGA",
|
|
1546
|
+
"NADPH",
|
|
1547
|
+
"protons",
|
|
1548
|
+
"GAP",
|
|
1549
|
+
"NADP",
|
|
1550
|
+
"Orthophosphate",
|
|
1551
|
+
"kre_gadph",
|
|
1552
|
+
"keq_gadph",
|
|
1553
|
+
],
|
|
1554
|
+
stoichiometry={"NADPH": -1.0, "BPGA": -1.0, "GAP": 1.0},
|
|
1555
|
+
)
|
|
1556
|
+
m = m.add_reaction(
|
|
1557
|
+
"triose_phosphate_isomerase",
|
|
1558
|
+
fn=_rapid_equilibrium_1s_1p,
|
|
1559
|
+
args=[
|
|
1560
|
+
"GAP",
|
|
1561
|
+
"DHAP",
|
|
1562
|
+
"kre_triose_phosphate_isomerase",
|
|
1563
|
+
"keq_triose_phosphate_isomerase",
|
|
1564
|
+
],
|
|
1565
|
+
stoichiometry={"GAP": -1, "DHAP": 1},
|
|
1566
|
+
)
|
|
1567
|
+
m = m.add_reaction(
|
|
1568
|
+
"aldolase_dhap_gap",
|
|
1569
|
+
fn=_rapid_equilibrium_2s_1p,
|
|
1570
|
+
args=["GAP", "DHAP", "FBP", "kre_aldolase_dhap_gap", "keq_aldolase_dhap_gap"],
|
|
1571
|
+
stoichiometry={"GAP": -1, "DHAP": -1, "FBP": 1},
|
|
1572
|
+
)
|
|
1573
|
+
m = m.add_reaction(
|
|
1574
|
+
"aldolase_dhap_e4p",
|
|
1575
|
+
fn=_rapid_equilibrium_2s_1p,
|
|
1576
|
+
args=["DHAP", "E4P", "SBP", "kre_aldolase_dhap_e4p", "keq_aldolase_dhap_e4p"],
|
|
1577
|
+
stoichiometry={"DHAP": -1, "E4P": -1, "SBP": 1},
|
|
1578
|
+
)
|
|
1579
|
+
m = m.add_reaction(
|
|
1580
|
+
"fbpase",
|
|
1581
|
+
fn=_michaelis_menten_1s_2i,
|
|
1582
|
+
args=[
|
|
1583
|
+
"FBP",
|
|
1584
|
+
"F6P",
|
|
1585
|
+
"Orthophosphate",
|
|
1586
|
+
"vmax_fbpase",
|
|
1587
|
+
"km_fbpase_s",
|
|
1588
|
+
"ki_fbpase_F6P",
|
|
1589
|
+
"ki_fbpase_Orthophosphate",
|
|
1590
|
+
],
|
|
1591
|
+
stoichiometry={"FBP": -1, "F6P": 1},
|
|
1592
|
+
)
|
|
1593
|
+
m = m.add_reaction(
|
|
1594
|
+
"transketolase_gap_f6p",
|
|
1595
|
+
fn=_rapid_equilibrium_2s_2p,
|
|
1596
|
+
args=[
|
|
1597
|
+
"GAP",
|
|
1598
|
+
"F6P",
|
|
1599
|
+
"E4P",
|
|
1600
|
+
"X5P",
|
|
1601
|
+
"kre_transketolase_gap_f6p",
|
|
1602
|
+
"keq_transketolase_gap_f6p",
|
|
1603
|
+
],
|
|
1604
|
+
stoichiometry={"GAP": -1, "F6P": -1, "E4P": 1, "X5P": 1},
|
|
1605
|
+
)
|
|
1606
|
+
m = m.add_reaction(
|
|
1607
|
+
"transketolase_gap_s7p",
|
|
1608
|
+
fn=_rapid_equilibrium_2s_2p,
|
|
1609
|
+
args=[
|
|
1610
|
+
"GAP",
|
|
1611
|
+
"S7P",
|
|
1612
|
+
"R5P",
|
|
1613
|
+
"X5P",
|
|
1614
|
+
"kre_transketolase_gap_s7p",
|
|
1615
|
+
"keq_transketolase_gap_s7p",
|
|
1616
|
+
],
|
|
1617
|
+
stoichiometry={"GAP": -1, "S7P": -1, "R5P": 1, "X5P": 1},
|
|
1618
|
+
)
|
|
1619
|
+
m = m.add_reaction(
|
|
1620
|
+
"SBPase",
|
|
1621
|
+
fn=_michaelis_menten_1s_1i,
|
|
1622
|
+
args=[
|
|
1623
|
+
"SBP",
|
|
1624
|
+
"Orthophosphate",
|
|
1625
|
+
"vmax_SBPase",
|
|
1626
|
+
"km_SBPase_s",
|
|
1627
|
+
"ki_SBPase_Orthophosphate",
|
|
1628
|
+
],
|
|
1629
|
+
stoichiometry={"SBP": -1, "S7P": 1},
|
|
1630
|
+
)
|
|
1631
|
+
m = m.add_reaction(
|
|
1632
|
+
"ribose_phosphate_isomerase",
|
|
1633
|
+
fn=_rapid_equilibrium_1s_1p,
|
|
1634
|
+
args=[
|
|
1635
|
+
"R5P",
|
|
1636
|
+
"RU5P",
|
|
1637
|
+
"kre_ribose_phosphate_isomerase",
|
|
1638
|
+
"keq_ribose_phosphate_isomerase",
|
|
1639
|
+
],
|
|
1640
|
+
stoichiometry={"R5P": -1, "RU5P": 1},
|
|
1641
|
+
)
|
|
1642
|
+
m = m.add_reaction(
|
|
1643
|
+
"ribulose_phosphate_epimerase",
|
|
1644
|
+
fn=_rapid_equilibrium_1s_1p,
|
|
1645
|
+
args=[
|
|
1646
|
+
"X5P",
|
|
1647
|
+
"RU5P",
|
|
1648
|
+
"kre_ribulose_phosphate_epimerase",
|
|
1649
|
+
"keq_ribulose_phosphate_epimerase",
|
|
1650
|
+
],
|
|
1651
|
+
stoichiometry={"X5P": -1, "RU5P": 1},
|
|
1652
|
+
)
|
|
1653
|
+
m = m.add_reaction(
|
|
1654
|
+
"phosphoribulokinase",
|
|
1655
|
+
fn=_rate_prk,
|
|
1656
|
+
args=[
|
|
1657
|
+
"RU5P",
|
|
1658
|
+
"ATP",
|
|
1659
|
+
"Orthophosphate",
|
|
1660
|
+
"3PGA",
|
|
1661
|
+
"RUBP",
|
|
1662
|
+
"ADP",
|
|
1663
|
+
"vmax_phosphoribulokinase",
|
|
1664
|
+
"km_phosphoribulokinase_RU5P",
|
|
1665
|
+
"km_phosphoribulokinase_ATP",
|
|
1666
|
+
"ki_phosphoribulokinase_3PGA",
|
|
1667
|
+
"ki_phosphoribulokinase_RUBP",
|
|
1668
|
+
"ki_phosphoribulokinase_Orthophosphate",
|
|
1669
|
+
"ki_phosphoribulokinase_4",
|
|
1670
|
+
"ki_phosphoribulokinase_5",
|
|
1671
|
+
],
|
|
1672
|
+
stoichiometry={"RU5P": -1.0, "ATP": -1.0, "RUBP": 1.0},
|
|
1673
|
+
)
|
|
1674
|
+
m = m.add_reaction(
|
|
1675
|
+
"g6pi",
|
|
1676
|
+
fn=_rapid_equilibrium_1s_1p,
|
|
1677
|
+
args=["F6P", "G6P", "kre_g6pi", "keq_g6pi"],
|
|
1678
|
+
stoichiometry={"F6P": -1, "G6P": 1},
|
|
1679
|
+
)
|
|
1680
|
+
m = m.add_reaction(
|
|
1681
|
+
"phosphoglucomutase",
|
|
1682
|
+
fn=_rapid_equilibrium_1s_1p,
|
|
1683
|
+
args=["G6P", "G1P", "kre_phosphoglucomutase", "keq_phosphoglucomutase"],
|
|
1684
|
+
stoichiometry={"G6P": -1, "G1P": 1},
|
|
1685
|
+
)
|
|
1686
|
+
m = m.add_reaction(
|
|
1687
|
+
"ex_pga",
|
|
1688
|
+
fn=_rate_out,
|
|
1689
|
+
args=["3PGA", "N_translocator", "vmax_ex_pga", "km_ex_pga"],
|
|
1690
|
+
stoichiometry={"3PGA": -1},
|
|
1691
|
+
)
|
|
1692
|
+
m = m.add_reaction(
|
|
1693
|
+
"ex_gap",
|
|
1694
|
+
fn=_rate_out,
|
|
1695
|
+
args=["GAP", "N_translocator", "vmax_ex_pga", "km_ex_gap"],
|
|
1696
|
+
stoichiometry={"GAP": -1},
|
|
1697
|
+
)
|
|
1698
|
+
m = m.add_reaction(
|
|
1699
|
+
"ex_dhap",
|
|
1700
|
+
fn=_rate_out,
|
|
1701
|
+
args=["DHAP", "N_translocator", "vmax_ex_pga", "km_ex_dhap"],
|
|
1702
|
+
stoichiometry={"DHAP": -1},
|
|
1703
|
+
)
|
|
1704
|
+
m = m.add_reaction(
|
|
1705
|
+
"ex_g1p",
|
|
1706
|
+
fn=_rate_starch,
|
|
1707
|
+
args=[
|
|
1708
|
+
"G1P",
|
|
1709
|
+
"ATP",
|
|
1710
|
+
"ADP",
|
|
1711
|
+
"Orthophosphate",
|
|
1712
|
+
"3PGA",
|
|
1713
|
+
"F6P",
|
|
1714
|
+
"FBP",
|
|
1715
|
+
"vmax_ex_g1p",
|
|
1716
|
+
"km_ex_g1p_G1P",
|
|
1717
|
+
"km_ex_g1p_ATP",
|
|
1718
|
+
"ki_ex_g1p",
|
|
1719
|
+
"ki_ex_g1p_3PGA",
|
|
1720
|
+
"ki_ex_g1p_F6P",
|
|
1721
|
+
"ki_ex_g1p_FBP",
|
|
1722
|
+
],
|
|
1723
|
+
stoichiometry={"G1P": -1.0, "ATP": -1.0},
|
|
1724
|
+
)
|
|
1725
|
+
m = m.add_reaction(
|
|
1726
|
+
"mda_reductase_1",
|
|
1727
|
+
fn=_rate_mda_reductase1,
|
|
1728
|
+
args=["MDA", "kf_mda_reductase_1"],
|
|
1729
|
+
stoichiometry={"MDA": -2, "DHA": 1},
|
|
1730
|
+
)
|
|
1731
|
+
m = m.add_reaction(
|
|
1732
|
+
"mda_reductase_2",
|
|
1733
|
+
fn=_rate_mda_reductase2,
|
|
1734
|
+
args=[
|
|
1735
|
+
"NADPH",
|
|
1736
|
+
"MDA",
|
|
1737
|
+
"vmax_mda_reductase_2",
|
|
1738
|
+
"km_mda_reductase_2_NADPH",
|
|
1739
|
+
"km_mda_reductase_2_MDA",
|
|
1740
|
+
],
|
|
1741
|
+
stoichiometry={"NADPH": -1, "MDA": -2},
|
|
1742
|
+
)
|
|
1743
|
+
m = m.add_reaction(
|
|
1744
|
+
"ascorbate_peroxidase",
|
|
1745
|
+
fn=_rate_ascorbate_peroxidase,
|
|
1746
|
+
args=[
|
|
1747
|
+
"ascorbate",
|
|
1748
|
+
"H2O2",
|
|
1749
|
+
"kf1",
|
|
1750
|
+
"kr1",
|
|
1751
|
+
"kf2",
|
|
1752
|
+
"kr2",
|
|
1753
|
+
"kf3",
|
|
1754
|
+
"kf4",
|
|
1755
|
+
"kr4",
|
|
1756
|
+
"kf5",
|
|
1757
|
+
"XT",
|
|
1758
|
+
],
|
|
1759
|
+
stoichiometry={"H2O2": -1, "MDA": 2},
|
|
1760
|
+
)
|
|
1761
|
+
m = m.add_reaction(
|
|
1762
|
+
"glutathion_reductase",
|
|
1763
|
+
fn=_rate_glutathion_reductase,
|
|
1764
|
+
args=[
|
|
1765
|
+
"NADPH",
|
|
1766
|
+
"GSSG",
|
|
1767
|
+
"vmax_glutathion_reductase",
|
|
1768
|
+
"km_glutathion_reductase_NADPH",
|
|
1769
|
+
"km_glutathion_reductase_GSSG",
|
|
1770
|
+
],
|
|
1771
|
+
stoichiometry={"NADPH": -1, "GSSG": -1},
|
|
1772
|
+
)
|
|
1773
|
+
m = m.add_reaction(
|
|
1774
|
+
"dehydroascorbate_reductase",
|
|
1775
|
+
fn=_rate_dhar,
|
|
1776
|
+
args=[
|
|
1777
|
+
"DHA",
|
|
1778
|
+
"GSH",
|
|
1779
|
+
"vmax_dehydroascorbate_reductase",
|
|
1780
|
+
"km_dehydroascorbate_reductase_DHA",
|
|
1781
|
+
"km_dehydroascorbate_reductase_GSH",
|
|
1782
|
+
"K",
|
|
1783
|
+
],
|
|
1784
|
+
stoichiometry={"DHA": -1, "GSSG": 1},
|
|
1785
|
+
)
|
|
1786
|
+
m = m.add_reaction(
|
|
1787
|
+
"ex_atp",
|
|
1788
|
+
fn=_mass_action_1s,
|
|
1789
|
+
args=["ATP", "kf_ex_atp"],
|
|
1790
|
+
stoichiometry={"ATP": -1},
|
|
1791
|
+
)
|
|
1792
|
+
m = m.add_reaction(
|
|
1793
|
+
"ex_nadph",
|
|
1794
|
+
fn=_mass_action_1s,
|
|
1795
|
+
args=["NADPH", "kf_ex_nadph"],
|
|
1796
|
+
stoichiometry={"NADPH": -1},
|
|
1797
|
+
)
|
|
1798
|
+
m = m.add_surrogate(
|
|
1799
|
+
"ps2states",
|
|
1800
|
+
qss.Surrogate(
|
|
1801
|
+
model=_ps2states_2016_phd_surrogate,
|
|
1802
|
+
args=[
|
|
1803
|
+
"Plastoquinone (oxidised)",
|
|
1804
|
+
"Plastoquinone (reduced)",
|
|
1805
|
+
"PSII_cross_section",
|
|
1806
|
+
"Q",
|
|
1807
|
+
"PSII_total",
|
|
1808
|
+
"k2",
|
|
1809
|
+
"kF",
|
|
1810
|
+
"kH",
|
|
1811
|
+
"keq_Plastoquinone (reduced)",
|
|
1812
|
+
"kPQred",
|
|
1813
|
+
"PPFD",
|
|
1814
|
+
"kH0",
|
|
1815
|
+
],
|
|
1816
|
+
outputs=["B0", "B1", "B2", "B3"],
|
|
1817
|
+
),
|
|
1818
|
+
)
|
|
1819
|
+
m = m.add_surrogate(
|
|
1820
|
+
"ps1states",
|
|
1821
|
+
qss.Surrogate(
|
|
1822
|
+
model=_ps1states_2021_surrogate,
|
|
1823
|
+
args=[
|
|
1824
|
+
"Plastocyanine (oxidised)",
|
|
1825
|
+
"Plastocyanine (reduced)",
|
|
1826
|
+
"Ferredoxine (oxidised)",
|
|
1827
|
+
"Ferredoxine (reduced)",
|
|
1828
|
+
"PSII_cross_section",
|
|
1829
|
+
"PSI_total",
|
|
1830
|
+
"kFdred",
|
|
1831
|
+
"keq_ferredoxin_reductase",
|
|
1832
|
+
"keq_PCP700",
|
|
1833
|
+
"kPCox",
|
|
1834
|
+
"PPFD",
|
|
1835
|
+
"kMehler",
|
|
1836
|
+
"O2 (dissolved)_lumen",
|
|
1837
|
+
],
|
|
1838
|
+
outputs=["A0", "A1", "A2"],
|
|
1839
|
+
),
|
|
1840
|
+
)
|
|
1841
|
+
m = m.add_readout(
|
|
1842
|
+
"PQ_ox/tot",
|
|
1843
|
+
fn=_div,
|
|
1844
|
+
args=["Plastoquinone (reduced)", "PQ_tot"],
|
|
1845
|
+
)
|
|
1846
|
+
m = m.add_readout(
|
|
1847
|
+
"Fd_ox/tot",
|
|
1848
|
+
fn=_div,
|
|
1849
|
+
args=["Ferredoxine (reduced)", "Fd*"],
|
|
1850
|
+
)
|
|
1851
|
+
m = m.add_readout(
|
|
1852
|
+
"PC_ox/tot",
|
|
1853
|
+
fn=_div,
|
|
1854
|
+
args=["Plastocyanine (reduced)", "PC_tot"],
|
|
1855
|
+
)
|
|
1856
|
+
m = m.add_readout(
|
|
1857
|
+
"NADPH/tot",
|
|
1858
|
+
fn=_div,
|
|
1859
|
+
args=["NADPH", "NADP*"],
|
|
1860
|
+
)
|
|
1861
|
+
m = m.add_readout(
|
|
1862
|
+
"ATP/tot",
|
|
1863
|
+
fn=_div,
|
|
1864
|
+
args=["ATP", "A*P"],
|
|
1865
|
+
)
|
|
1866
|
+
m = m.add_readout(
|
|
1867
|
+
"Fluo",
|
|
1868
|
+
fn=_rate_fluorescence,
|
|
1869
|
+
args=["Q", "B0", "B2", "PSII_cross_section", "k2", "kF", "kH"],
|
|
1870
|
+
)
|
|
1871
|
+
return m # noqa: RET504
|