Models / Poolman 2000

Poolman 2000 CBB model

The Poolman 2000 model is a kinetic model of the Calvin–Benson cycle, the carbon-fixation pathway of C3 plant chloroplasts. Rubisco carboxylase and oxygenase compete for ribulose-1,5-bisphosphate, while downstream enzymes such as FBPase and SBPase regenerate it, with the whole cycle driven by dissolved CO₂, NADPH and ATP.

Enzyme activities scale with their maximal turnover and are subject to product inhibition, letting the model reproduce the steady-state behaviour and regulation of carbon assimilation.

tune

Simulation parameters

E0_rubisco_carboxylase 1
analytics

Analyses

Simulation

Loading chart...

Add analysis

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

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

Edit Options

preview

Generated LaTeX Code

\begin{align*}
  \frac{d 3PGA}{dt} &= 2 \cdot \frac{CO2 (dissolved) \cdot RUBP \cdot vmax\_rubisco\_carboxylase}{(CO2 (dissolved) + km\_rubisco\_carboxylase\_CO2 (dissolved)) \cdot (RUBP + km\_rubisco\_carboxylase\_RUBP \cdot (1 + \frac{FBP}{ki\_rubisco\_carboxylase\_FBP} + \frac{SBP}{ki\_rubisco\_carboxylase\_SBP} + \frac{3PGA}{ki\_rubisco\_carboxylase\_3PGA} + \frac{nadph}{ki\_rubisco\_carboxylase\_nadph} + \frac{pi}{ki\_rubisco\_carboxylase\_pi}))} \\
  & - kre\_phosphoglycerate\_kinase \cdot (3PGA \cdot atp - \frac{BPGA \cdot adp}{keq\_phosphoglycerate\_kinase}) \\
  & - \frac{3PGA \cdot vmax\_ex\_pga}{N\_translocator \cdot km\_ex\_pga} \\ 
  \frac{d BPGA}{dt} &= kre\_phosphoglycerate\_kinase \cdot (3PGA \cdot atp - \frac{BPGA \cdot adp}{keq\_phosphoglycerate\_kinase}) \\
  & - kre\_gadph \cdot (BPGA \cdot nadph \cdot protons - \frac{GAP \cdot nadp \cdot pi}{keq\_gadph}) \\ 
  \frac{d GAP}{dt} &= kre\_gadph \cdot (BPGA \cdot nadph \cdot protons - \frac{GAP \cdot nadp \cdot pi}{keq\_gadph}) \\
  & - kre\_triose\_phosphate\_isomerase \cdot (GAP - \frac{DHAP}{keq\_triose\_phosphate\_isomerase}) \\
  & - kre\_aldolase\_dhap\_gap \cdot (DHAP \cdot GAP - \frac{FBP}{keq\_aldolase\_dhap\_gap}) \\
  & - kre\_transketolase\_gap\_f6p \cdot (F6P \cdot GAP - \frac{E4P \cdot X5P}{keq\_transketolase\_gap\_f6p}) \\
  & - kre\_transketolase\_gap\_s7p \cdot (GAP \cdot S7P - \frac{R5P \cdot X5P}{keq\_transketolase\_gap\_s7p}) \\
  & - \frac{GAP \cdot vmax\_ex\_pga}{N\_translocator \cdot km\_ex\_gap} \\ 
  \frac{d DHAP}{dt} &= kre\_triose\_phosphate\_isomerase \cdot (GAP - \frac{DHAP}{keq\_triose\_phosphate\_isomerase}) \\
  & - kre\_aldolase\_dhap\_gap \cdot (DHAP \cdot GAP - \frac{FBP}{keq\_aldolase\_dhap\_gap}) \\
  & - kre\_aldolase\_dhap\_e4p \cdot (DHAP \cdot E4P - \frac{SBP}{keq\_aldolase\_dhap\_e4p}) \\
  & - \frac{DHAP \cdot vmax\_ex\_pga}{N\_translocator \cdot km\_ex\_dhap} \\ 
  \frac{d FBP}{dt} &= kre\_aldolase\_dhap\_gap \cdot (DHAP \cdot GAP - \frac{FBP}{keq\_aldolase\_dhap\_gap}) \\
  & - \frac{FBP \cdot vmax\_fbpase}{FBP + km\_fbpase\_s \cdot (1 + \frac{F6P}{ki\_fbpase\_F6P} + \frac{pi}{ki\_fbpase\_pi})} \\ 
  \frac{d F6P}{dt} &= \frac{FBP \cdot vmax\_fbpase}{FBP + km\_fbpase\_s \cdot (1 + \frac{F6P}{ki\_fbpase\_F6P} + \frac{pi}{ki\_fbpase\_pi})} \\
  & - kre\_transketolase\_gap\_f6p \cdot (F6P \cdot GAP - \frac{E4P \cdot X5P}{keq\_transketolase\_gap\_f6p}) \\
  & - kre\_g6pi \cdot (F6P - \frac{G6P}{keq\_g6pi}) \\ 
  \frac{d G6P}{dt} &= kre\_g6pi \cdot (F6P - \frac{G6P}{keq\_g6pi}) \\
  & - kre\_phosphoglucomutase \cdot (G6P - \frac{G1P}{keq\_phosphoglucomutase}) \\ 
  \frac{d G1P}{dt} &= kre\_phosphoglucomutase \cdot (G6P - \frac{G1P}{keq\_phosphoglucomutase}) \\
  & - \frac{G1P \cdot atp \cdot vmax\_ex\_g1p}{(G1P + km\_ex\_g1p\_G1P) \cdot ((1 + \frac{adp}{ki\_ex\_g1p}) \cdot (atp + km\_ex\_g1p\_atp) + \frac{km\_ex\_g1p\_atp \cdot pi}{F6P \cdot ki\_ex\_g1p\_F6P + FBP \cdot ki\_ex\_g1p\_FBP + 3PGA \cdot ki\_ex\_g1p\_3PGA})} \\ 
  \frac{d SBP}{dt} &= kre\_aldolase\_dhap\_e4p \cdot (DHAP \cdot E4P - \frac{SBP}{keq\_aldolase\_dhap\_e4p}) \\
  & - \frac{SBP \cdot vmax\_SBPase}{SBP + km\_SBPase\_s \cdot (1 + \frac{pi}{ki\_SBPase\_pi})} \\ 
  \frac{d S7P}{dt} &= - kre\_transketolase\_gap\_s7p \cdot (GAP \cdot S7P - \frac{R5P \cdot X5P}{keq\_transketolase\_gap\_s7p}) \\
  & + \frac{SBP \cdot vmax\_SBPase}{SBP + km\_SBPase\_s \cdot (1 + \frac{pi}{ki\_SBPase\_pi})} \\ 
  \frac{d E4P}{dt} &= - kre\_aldolase\_dhap\_e4p \cdot (DHAP \cdot E4P - \frac{SBP}{keq\_aldolase\_dhap\_e4p}) \\
  & + kre\_transketolase\_gap\_f6p \cdot (F6P \cdot GAP - \frac{E4P \cdot X5P}{keq\_transketolase\_gap\_f6p}) \\ 
  \frac{d X5P}{dt} &= kre\_transketolase\_gap\_f6p \cdot (F6P \cdot GAP - \frac{E4P \cdot X5P}{keq\_transketolase\_gap\_f6p}) \\
  & + kre\_transketolase\_gap\_s7p \cdot (GAP \cdot S7P - \frac{R5P \cdot X5P}{keq\_transketolase\_gap\_s7p}) \\
  & - kre\_ribulose\_phosphate\_epimerase \cdot (X5P - \frac{RU5P}{keq\_ribulose\_phosphate\_epimerase}) \\ 
  \frac{d R5P}{dt} &= kre\_transketolase\_gap\_s7p \cdot (GAP \cdot S7P - \frac{R5P \cdot X5P}{keq\_transketolase\_gap\_s7p}) \\
  & - kre\_ribose\_phosphate\_isomerase \cdot (R5P - \frac{RU5P}{keq\_ribose\_phosphate\_isomerase}) \\ 
  \frac{d RUBP}{dt} &= - \frac{CO2 (dissolved) \cdot RUBP \cdot vmax\_rubisco\_carboxylase}{(CO2 (dissolved) + km\_rubisco\_carboxylase\_CO2 (dissolved)) \cdot (RUBP + km\_rubisco\_carboxylase\_RUBP \cdot (1 + \frac{FBP}{ki\_rubisco\_carboxylase\_FBP} + \frac{SBP}{ki\_rubisco\_carboxylase\_SBP} + \frac{3PGA}{ki\_rubisco\_carboxylase\_3PGA} + \frac{nadph}{ki\_rubisco\_carboxylase\_nadph} + \frac{pi}{ki\_rubisco\_carboxylase\_pi}))} \\
  & + \frac{RU5P \cdot atp \cdot vmax\_phosphoribulokinase}{(RU5P + km\_phosphoribulokinase\_RU5P \cdot (1 + \frac{RUBP}{ki\_phosphoribulokinase\_RUBP} + \frac{3PGA}{ki\_phosphoribulokinase\_3PGA} + \frac{pi}{ki\_phosphoribulokinase\_pi})) \cdot (atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_4}) + km\_phosphoribulokinase\_atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_5}))} \\ 
  \frac{d RU5P}{dt} &= kre\_ribose\_phosphate\_isomerase \cdot (R5P - \frac{RU5P}{keq\_ribose\_phosphate\_isomerase}) \\
  & + kre\_ribulose\_phosphate\_epimerase \cdot (X5P - \frac{RU5P}{keq\_ribulose\_phosphate\_epimerase}) \\
  & - \frac{RU5P \cdot atp \cdot vmax\_phosphoribulokinase}{(RU5P + km\_phosphoribulokinase\_RU5P \cdot (1 + \frac{RUBP}{ki\_phosphoribulokinase\_RUBP} + \frac{3PGA}{ki\_phosphoribulokinase\_3PGA} + \frac{pi}{ki\_phosphoribulokinase\_pi})) \cdot (atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_4}) + km\_phosphoribulokinase\_atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_5}))} \\ 
  \frac{d atp}{dt} &= - kre\_phosphoglycerate\_kinase \cdot (3PGA \cdot atp - \frac{BPGA \cdot adp}{keq\_phosphoglycerate\_kinase}) \\
  & - \frac{RU5P \cdot atp \cdot vmax\_phosphoribulokinase}{(RU5P + km\_phosphoribulokinase\_RU5P \cdot (1 + \frac{RUBP}{ki\_phosphoribulokinase\_RUBP} + \frac{3PGA}{ki\_phosphoribulokinase\_3PGA} + \frac{pi}{ki\_phosphoribulokinase\_pi})) \cdot (atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_4}) + km\_phosphoribulokinase\_atp \cdot (1 + \frac{adp}{ki\_phosphoribulokinase\_5}))} \\
  & - \frac{G1P \cdot atp \cdot vmax\_ex\_g1p}{(G1P + km\_ex\_g1p\_G1P) \cdot ((1 + \frac{adp}{ki\_ex\_g1p}) \cdot (atp + km\_ex\_g1p\_atp) + \frac{km\_ex\_g1p\_atp \cdot pi}{F6P \cdot ki\_ex\_g1p\_F6P + FBP \cdot ki\_ex\_g1p\_FBP + 3PGA \cdot ki\_ex\_g1p\_3PGA})} \\
  & + \frac{adp \cdot pi \cdot vmax\_atp\_synthase}{(adp + km\_atp\_synthase\_adp) \cdot (km\_atp\_synthase\_pi + pi)}
\end{align*}

Fit to data

Fit settings

SettingValue
Fit backend
Function evaluations per progress update
Maximum total function evaluations
Stop once residual norm reaches
Curriculum learning (advanced)

Every bar shares one fixed step budget. Drag a divider to move a cutoff, drag a bar's top edge (or focus it and use the arrow keys) to change its share — the final stage isn't draggable, it always gets whatever's left. Double-click a bar or use its + to split it, use a divider's × (or Delete/Backspace while it's focused) to remove it.

Split into equal stages:
min viable
1000 it. (final)
t=0 t=100
StageData cutoffIteration budget
1 (final)full data1000 iterations (runs to convergence within this)

Data

Plot options

ParameterFitLog-spaceInitial guess / fixed value Fitted value
CO2__dissolved_ —
nadph —
protons —
A_P —
NADP_ —
Pi_tot —
E0_rubisco_carboxylase —
kcat_rubisco_carboxylase —
km_rubisco_carboxylase_RUBP —
km_rubisco_carboxylase_CO2__dissolved_ —
ki_rubisco_carboxylase_3PGA —
ki_rubisco_carboxylase_FBP —
ki_rubisco_carboxylase_SBP —
ki_rubisco_carboxylase_pi —
ki_rubisco_carboxylase_nadph —
kre_phosphoglycerate_kinase —
keq_phosphoglycerate_kinase —
kre_gadph —
keq_gadph —
kre_triose_phosphate_isomerase —
keq_triose_phosphate_isomerase —
kre_aldolase_dhap_gap —
keq_aldolase_dhap_gap —
kre_aldolase_dhap_e4p —
keq_aldolase_dhap_e4p —
E0_fbpase —
kcat_fbpase —
km_fbpase_s —
ki_fbpase_F6P —
ki_fbpase_pi —
kre_transketolase_gap_f6p —
keq_transketolase_gap_f6p —
kre_transketolase_gap_s7p —
keq_transketolase_gap_s7p —
E0_SBPase —
kcat_SBPase —
km_SBPase_s —
ki_SBPase_pi —
kre_ribose_phosphate_isomerase —
keq_ribose_phosphate_isomerase —
kre_ribulose_phosphate_epimerase —
keq_ribulose_phosphate_epimerase —
E0_phosphoribulokinase —
kcat_phosphoribulokinase —
km_phosphoribulokinase_RU5P —
km_phosphoribulokinase_atp —
ki_phosphoribulokinase_3PGA —
ki_phosphoribulokinase_RUBP —
ki_phosphoribulokinase_pi —
ki_phosphoribulokinase_4 —
ki_phosphoribulokinase_5 —
kre_g6pi —
keq_g6pi —
kre_phosphoglucomutase —
keq_phosphoglucomutase —
pi_ext —
km_ex_pga —
km_ex_gap —
km_ex_dhap —
km_N_translocator_pi_ext —
km_N_translocator_pi —
kcat_N_translocator —
E0_N_translocator —
km_ex_g1p_G1P —
km_ex_g1p_atp —
ki_ex_g1p —
ki_ex_g1p_3PGA —
ki_ex_g1p_F6P —
ki_ex_g1p_FBP —
E0_ex_g1p —
kcat_ex_g1p —
km_atp_synthase_adp —
km_atp_synthase_pi —
kcat_atp_synthase —
E0_atp_synthase —

Edit analysis

Plot options

Variable selection
Show Normalize

Build your own model

Choose how you want to define your system.

ODE models

Steady-state models