// Created by libAntimony v3.0.0
model *bhagwat2026()

  // Compartments and Species:
  var compartment env, cell;
  species s_glu in env, s_pyr in env, s_acetate in env, s_acetald in env;
  species s_EtOH in env, x in env, $a in env, $AcDH in env, $CO2 in env, $Red in env;
  species $S_f in env;
  species s_AL in env, s_DHI in env, s_KIV in env;
  species s_IBO in env;

  // Assignment Rules:
  a := x*X_a;
  AcDH := x*X_AcDH;
  qO2 := is_aerobic*(1000/32)*((0.178*r1 + 0.908*r2 + 0.363*r4 + 1.066*r5 - 0.363*r6 - 0.363*r16) + 0.063*r7 + 0.214*r8)/(x*env);
  qCO2 := (1000/44.01)*(1.499*r2 + 0.5*r3 + 1.466*r5 + 0.127*r7 + 0.325*r8)/(x*env);
  qO2_TCA_growth_only := (1000/32)*((0.908*r2 + 1.066*r5) + 0.063*r7 + 0.214*r8)/(x*env);
  cell := x*env*0.0015;

  tot_mass_glu := (conc_glu_feed_spike*tot_vol_glu_feed_added) + target_conc_glu_spike*(env - tot_vol_glu_feed_added);
  y_EtOH_glu_added := s_EtOH*env/tot_mass_glu;
  y_EtOH_glu_consumed := s_EtOH*env/(tot_mass_glu-s_glu*env);

  y_IBO_glu_added := s_IBO*env/tot_mass_glu;
  y_IBO_glu_consumed := s_IBO*env/(tot_mass_glu-s_glu*env);

  y_EtOH_IBO_glu_added := y_EtOH_glu_added + y_IBO_glu_added;

  prod_EtOH := s_EtOH/time;
  
  curr_n_glu_spikes := n_glu_spikes;
  curr_env := env;
  curr_tot_vol_glu_feed_added := tot_vol_glu_feed_added;
  curr_a := a;

  // Rate Rules:
  X_a' = ((0.732*r7 + 0.619*r8)*(1 - X_a) - r9 - r10)/(x*env);
  X_AcDH' = (r9 - r11 - (0.732*r7 + 0.619*r8)*X_AcDH)/(x*env);

  // Reactions:
  r1: s_glu => 0.978 s_pyr + 0.178 $Red; (k_1l*s_glu/(s_glu + K_1l) + k_1h*s_glu/(s_glu + K_1h) + k_1e*s_acetald*s_glu/(s_glu*(K_1i*s_acetald + 1) + K_1e))*2.71828^(-k_1ie*0.40*s_EtOH)*2.71828^(-k_1ia*0.40*s_acetate)*2.71828^(-k_1ii*0.40*s_IBO)*a*env;
  r2: s_pyr => 1.499 $CO2 + 0.908 $Red; is_aerobic*(k_2*s_pyr/((s_pyr + K_2)*(K_2i*s_glu + 1)))*a*env;
  r3: s_pyr => 0.5 s_acetald + 0.33 $CO2; (k_3*s_pyr^4/(s_pyr^4 + K_3))*a*env;
  r4: s_acetald => 1.363 s_acetate + 0.363 $Red; (k_4*s_acetald*2.71828^(-k_4ie*s_EtOH)*2.71828^(-k_4ia*s_acetate)*2.71828^(-k_4ii*s_IBO)/(s_acetald + K_4))*a*X_AcDH*env;
  r5: s_acetate => 1.446 $CO2 + 1.066 $Red; is_aerobic*(k_5*s_acetate/(s_acetate + K_5) + k_5e*s_acetate/((s_acetate + K_5e)*(1 + K_5i*s_glu)))*a*env;
  r6: s_acetald + 0.363 $Red -> 1.045 s_EtOH; (k_6*(s_acetald - k_6r*s_EtOH)/(s_acetald + K_6 + K_6e*s_EtOH))*a*env;
  r7: s_glu => 0.732 x + 0.127 $CO2 + 0.063 $Red; (anaerobic_growth_mult + (1.0-anaerobic_growth_mult)*is_aerobic)*(k_7*s_glu*2.71828^(-k_7ie*s_EtOH)*2.71828^(-k_7ia*s_acetate)*2.71828^(-k_7ii*s_IBO)/(s_glu + K_7))*a*env;
  r8: s_acetate => 0.619 x + 0.325 $CO2 + 0.214 $Red; is_aerobic*(k_8*s_acetate/((s_acetate + K_5e)*(1 + K_5i*s_glu)))*a*env;
  r9: $a => $AcDH; ((k_9*s_glu/(s_glu + K_9) + k_9e*s_EtOH/(s_EtOH + K_9e))/(K_9i*s_glu + 1) + k_9c*s_glu/(s_glu + K_9))*a*env;
  r10: $a => ; k_10*a*env;
  r11: $AcDH => ; k_11*AcDH*env;

  s_glu_in: $S_f => s_glu; S_f*D*env;
  s_glu_out: s_glu => ; s_glu*D*env;
  s_pyr_out: s_pyr => ; s_pyr*D*env;
  s_acetate_out: s_acetate => ; s_acetate*D*env;
  s_acetald_out: s_acetald => ; s_acetald*D*env;
  s_EtOH_out: s_EtOH => ; s_EtOH*D*env;
  a_out: $a => ; a*D*env;
  x_out: x => ; x*D*env;
  AcDH_out: $AcDH => ; AcDH*D*env;

  r13: s_pyr => 0.750 s_AL; (k_13*s_pyr^4/(K_13 + s_pyr^4))*a*env;
  r14: s_AL => 1.015 s_DHI; (k_14*s_AL/(K_14 + s_AL))*a*env;
  r15: s_DHI => 0.866 s_KIV; (k_15*s_DHI/(K_15 + s_DHI))*a*env;
  r16: s_KIV + 0.363 $Red -> 0.638 s_IBO; (k_16*(s_KIV - k_16r*s_IBO)/(s_KIV + K_16 + K_16i*s_IBO))*a*env;

  // Events:
  glucose_feed_spike_a: at glucose_feed_spikeDelay after (s_glu <= threshold_conc_glu_spike) && (n_glu_spikes < max_n_glu_spikes), priority=5: last_vol_glu_feed_added = env*(target_conc_glu_spike - s_glu)/(conc_glu_feed_spike - target_conc_glu_spike);

  glucose_feed_spike_b: at glucose_feed_spikeDelay after (s_glu <= threshold_conc_glu_spike) && (n_glu_spikes < max_n_glu_spikes), priority=4, fromTrigger=false: env = env + last_vol_glu_feed_added, tot_vol_glu_feed_added = tot_vol_glu_feed_added + last_vol_glu_feed_added; 

  glucose_feed_spike_c: at glucose_feed_spikeDelay after (s_glu <= threshold_conc_glu_spike) && (n_glu_spikes < max_n_glu_spikes), priority=3, fromTrigger=false: s_glu = target_conc_glu_spike, n_glu_spikes = n_glu_spikes + 1;

  stage_1_complete_max_time: at (time >= stage_1_max_time): is_aerobic = 0;
  stage_1_complete_x_target: at (x >= stage_1_max_x): is_aerobic = 0;

  // Species initializations:
  s_glu = 15/env;
  s_pyr = 0;
  s_acetate = 0;
  s_acetald = 0;
  s_EtOH = 0;
  x = 0.002/env;
  CO2 = 0;
  Red = 0;
  S_f = 15;
  s_AL = 0;
  s_DHI = 0;
  s_KIV = 0;
  s_IBO = 0;

  // Compartment initializations:
  env = 1;

  // Variable initializations:
  X_a = 0.1;
  X_a has dimensionless;
  X_AcDH = 0.0075;
  X_AcDH has dimensionless;

  n_glu_spikes = 0;
  n_glu_spikes has dimensionless;
  max_n_glu_spikes = 5;
  max_n_glu_spikes has dimensionless;
  threshold_conc_glu_spike = 10;
  threshold_conc_glu_spike has g_per_l;
  target_conc_glu_spike = 100;
  target_conc_glu_spike has g_per_l;
  conc_glu_feed_spike = 600;
  conc_glu_feed_spike has g_per_l;
  last_vol_glu_feed_added = 0;
  last_vol_glu_feed_added has volume;
  tot_vol_glu_feed_added = 0;
  tot_vol_glu_feed_added has volume;
  glucose_feed_spikeDelay = 0;
  glucose_feed_spikeDelay has time_unit;
  glucose_feed_spike_dissolveDelay = 0.001;
  glucose_feed_spike_dissolveDelay has time_unit;

  is_aerobic = 1;
  is_aerobic has dimensionless;
  stage_1_max_time = infinity;
  stage_1_max_time has time_unit;
  stage_1_max_x = infinity;
  stage_1_max_x has g_per_l;
  anaerobic_growth_mult = 1.0;
  anaerobic_growth_mult has dimensionless;

  qO2 has mmole_per_g_per_h;
  qCO2 has mmole_per_g_per_h;

  k_1h = 0.584;
  k_1h has g_per_l_per_h;
  K_1h = 0.0116;
  K_1h has g_per_l;
  k_1l = 1.43;
  k_1l has g_per_l_per_h;
  K_1l = 0.94;
  K_1l has g_per_l;
  k_1e = 47.1;
  k_1e has g_per_l_per_h;
  K_1e = 0.12;
  K_1e has g_per_l;
  K_1i = 14.2;
  K_1i has l_per_g;
  k_2 = 0.501;
  k_2 has g_per_l_per_h;
  K_2 = 2e-05;
  K_2 has g_per_l;
  K_2i = 0.101;
  K_2i has l_per_g;
  k_3 = 5.81;
  k_3 has g_per_l_per_h;
  K_3 = 5e-07;
  K_3 has g_per_l;
  k_4 = 4.8;
  k_4 has g_per_l_per_h;
  K_4 = 0.000264;
  K_4 has g_per_l;
  k_5 = 0.0104;
  k_5 has g_per_l_per_h;
  K_5 = 0.0102;
  K_5 has g_per_l;
  k_5e = 0.775;
  k_5e has g_per_l_per_h;
  K_5e = 0.1;
  K_5e has g_per_l;
  K_5i = 440;
  K_5i has l_per_g;
  k_6 = 2.82;
  k_6 has g_per_l_per_h;
  K_6 = 0.034;
  K_6 has g_per_l;
  k_6r = 0.0125;
  k_6r has dimensionless;
  K_6e = 0.057;
  K_6e has g_per_l;
  k_7 = 1.203;
  k_7 has g_per_l_per_h;
  K_7 = 0.0101;
  K_7 has g_per_l;
  k_8 = 0.589;
  k_8 has g_per_l_per_h;
  k_9 = 0.008;
  k_9 has g_per_l_per_h;
  K_9 = 1e-06;
  K_9 has g_per_l;
  k_9e = 0.0751;
  k_9e has g_per_l_per_h;
  K_9e = 13;
  K_9e has g_per_l;
  K_9i = 25;
  K_9i has l_per_g;
  k_9c = 0.00399;
  k_9c has g_per_l_per_h;
  k_11 = 0.02;
  k_11 has g_per_l_per_h;
  D = 0;
  D has per_h;
  k_7ie = 0.04;
  k_7ie has g_per_l_per_h;
  k_7ia = 0.12;
  k_7ia has g_per_l_per_h;
  k_7ii = 0.04;
  k_7ii has g_per_l_per_h;
  k_1ie = 0.04;
  k_1ie has g_per_l_per_h;
  k_1ia = 0.12;
  k_1ia has g_per_l_per_h;
  k_1ii = 0.04;
  k_1ii has g_per_l_per_h;
  k_4ie = 0.04;
  k_4ie has g_per_l_per_h;
  k_4ia = 0.12;
  k_4ia has g_per_l_per_h;
  k_4ii = 0.04;
  k_4ii has g_per_l_per_h;
  k_10 = 0.06;
  k_10 has g_per_l_per_h;
  k_13 = 0.0;
  k_13 has g_per_l_per_h;
  K_13 = 5e-07;
  K_13 has g_per_l;
  k_14 = 0.0;
  k_14 has g_per_l_per_h;
  K_14 = 0.000264;
  K_14 has g_per_l;
  k_15 = 0.0;
  k_15 has g_per_l_per_h;
  K_15 = 0.000264;
  K_15 has g_per_l;
  k_16 = 0.0;
  k_16 has g_per_l_per_h;
  K_16 = 0.034;
  K_16 has g_per_l;
  k_16r = 0.0;
  k_16r has dimensionless;
  K_16i = 0.057;
  K_16i has g_per_l;

  // Other declarations:
  var X_a, X_AcDH, qO2, qCO2;

  var n_glu_spikes, glucose_feed_spikeDelay, threshold_conc_glu_spike, target_conc_glu_spike, conc_glu_feed_spike, last_vol_glu_feed_added, tot_vol_glu_feed_added;
  var tot_mass_glu, y_EtOH_glu_added, y_EtOH_glu_consumed;
  var curr_n_glu_spikes, curr_env, curr_tot_vol_glu_feed_added;

  const k_7ie, k_7ia, k_7ii, k_1ie, k_1ia, k_1ii, k_4ie, k_4ia, k_4ii, k_10;
  const k_1h, K_1h, k_1l, K_1l, k_1e, K_1e, K_1i, k_2, K_2, K_2i;
  const k_3, K_3, k_4, K_4, k_5, K_5, k_5e, K_5e, K_5i, k_6, K_6, k_6r, K_6e;
  const k_7, K_7, k_8, k_9, K_9, k_9e, K_9e, K_9i, k_9c, k_11, D;
  const k_13, K_13, k_14, K_14, k_15, K_15, k_16, K_16, k_16r, K_16i

  // Unit definitions:
  unit substance = gram;
  unit time_unit = 3600 second;
  unit volume = litre;
  unit per_h = 1 / 3600 second;
  unit g_per_l = gram / litre;
  unit l_per_g = litre / gram;
  unit g_per_l_per_h = gram / (litre * 3600 second);
  unit mmole_per_g_per_h = 1e-3 mole / (3600 second * gram);

  // Display Names:
  substance is "gram";
  time_unit is "hours";
  volume is "liter";
  per_h is "per hour";
  g_per_l is "gram  per liter";
  l_per_g is "liter  per gram";
  g_per_l_per_h is "gram  per liter per hour";
  mmole_per_g_per_h is "mmole per gram BM per hour";
  env is "environment";
  s_glu is "Glucose";
  s_pyr is "Pyruvate";
  s_acetate is "Acetate";
  s_acetald is "Acetaldehyde";
  s_EtOH is "EtOH";
  s_IBO is "Isobutanol";
  x is "BM";
  a is "BM(active)";
  AcDH is "BM(AcDH)";
  Red is "Red. Equ. (NADH)";
  S_f is "Glucose(feed)";
  r2 is "TCA (pyruvate)";
  r5 is "TCA (acetate)";
  r6 is "ADH";
  r8 is "BM growth (acetate)";
  r3 is "Pyruvate Dehydrogenase";
  r9 is "Acdh production";
  r11 is "Acdh degradation";
  D is "Dilutionrate";
  s_glu_in is "Glucose inflow";
  s_glu_out is "Glucose outflow";
  s_pyr_out is "Pyruvate outflow";
  s_acetate_out is "Acetate outflow";
  s_acetald_out is "Acetaldehyde outflow";
  s_EtOH_out is "EtOH outflow";
  a_out is "active BM outflow";
  x_out is "BM outflow";
  AcDH_out is "AcDH BM outflow";

  // SBO terms:
  env.sboTerm = 290
  cell.sboTerm = 290
  s_glu.sboTerm = 247
  s_pyr.sboTerm = 247
  s_acetate.sboTerm = 247
  s_acetald.sboTerm = 247
  s_EtOH.sboTerm = 247
  x.sboTerm = 240
  a.sboTerm = 241
  AcDH.sboTerm = 241
  CO2.sboTerm = 247
  Red.sboTerm = 247
  S_f.sboTerm = 247
  r2.sboTerm = 205
  r5.sboTerm = 205
  r6.sboTerm = 200
  r8.sboTerm = 205
  r3.sboTerm = 200
  r9.sboTerm = 184
  r11.sboTerm = 179
  s_glu_in.sboTerm = 185
  s_glu_out.sboTerm = 185
  s_pyr_out.sboTerm = 185
  s_acetate_out.sboTerm = 185
  s_acetald_out.sboTerm = 185
  s_EtOH_out.sboTerm = 185
  a_out.sboTerm = 185
  x_out.sboTerm = 185
  AcDH_out.sboTerm = 185

  // CV terms:
  env biological_system "http://identifiers.org/go/GO:0005576"
  cell identity "http://identifiers.org/go/GO:0005623"
  s_glu identity "http://identifiers.org/chebi/CHEBI:17234",
                 "http://identifiers.org/kegg.compound/C00293"
  s_pyr identity "http://identifiers.org/chebi/CHEBI:15361",
                 "http://identifiers.org/kegg.compound/C00022"
  s_acetate identity "http://identifiers.org/chebi/CHEBI:40480",
                     "http://identifiers.org/kegg.compound/C00033"
  s_acetald identity "http://identifiers.org/chebi/CHEBI:15343",
                     "http://identifiers.org/kegg.compound/C00084"
  s_EtOH identity "http://identifiers.org/chebi/CHEBI:16236",
                  "http://identifiers.org/kegg.compound/C00469"
  CO2 identity "http://identifiers.org/chebi/CHEBI:16526",
               "http://identifiers.org/kegg.compound/C00011"
  Red identity "http://identifiers.org/chebi/CHEBI:16908",
               "http://identifiers.org/kegg.compound/C00004"
  S_f version "http://identifiers.org/chebi/CHEBI:17234",
              "http://identifiers.org/kegg.compound/C00293"
  r2 identity "http://identifiers.org/go/GO:0006099"
  r5 identity "http://identifiers.org/go/GO:0006099"
  r6 version "http://identifiers.org/kegg.reaction/R00754"
  r6 biological_system "http://identifiers.org/ec-code/1.1.1.1",
                       "http://identifiers.org/go/GO:0004022"
  r8 biological_system "http://identifiers.org/go/GO:0016049",
                       "http://identifiers.org/go/GO:0008283"
  r3 version "http://identifiers.org/ec-code/1.2.4.1",
             "http://identifiers.org/ec-code/2.3.1.12"
  r3 biological_system "http://identifiers.org/kegg.reaction/R00209",
                       "http://identifiers.org/go/GO:0004738"
  r9 biological_system "http://identifiers.org/go/GO:0006412"
  r11 biological_system "http://identifiers.org/go/GO:0030163"

  model model_source "http://identifiers.org/biomodels.db/MODEL1003250000"
  model model_source "http://identifiers.org/biomodels.db/BIOMD0000000245"
  model publication "http://identifiers.org/pubmed/11434967"
  model taxon "http://identifiers.org/taxonomy/4932"
  model version "http://identifiers.org/kegg.pathway/sce00020",
                "http://identifiers.org/kegg.pathway/sce00010"
  model version "http://identifiers.org/go/GO:0006006",
                "http://identifiers.org/go/GO:0006099"
  model property "http://identifiers.org/mamo/MAMO_0000046"
  model created "2010-03-25T02:28:31Z"
  model modified "2010-06-03T10:40:01Z"
  model creator1.givenName "Lukas"
  model creator1.familyName "Endler"
  model creator1.organization "EMBL-EBI"
  model creator1.email "lukas@ebi.ac.uk"

  // Notes:
  model notes ```
This the model from the article: 
**A biochemically structured model for Saccharomyces cerevisiae.** 
Lei F, Rotbøll M, Jørgensen SB. *J Biotechnol.* 2001 Jul
12;88(3):205-21. 	 PMID: [11434967](http://www.ncbi.nlm.nih.gov/pubmed/11434967) ,DOI: [10.1016/S0168-1656(01)00269-3](http://dx.doi.org/10.1016/S0168-1656(01)00269-3)

**Abstract:** 
A biochemically structured model for the aerobic growth of Saccharomyces
cerevisiae on glucose and ethanol is presented. The model focuses on the pyruvate
and acetaldehyde branch points where overflow metabolism occurs when the growth changes
from oxidative to oxido-reductive. The model is designed to describe the onset of
aerobic alcoholic fermentation during steady-state as well as under dynamical conditions,
by triggering an increase in the glycolytic flux using a key signalling component
which is assumed to be closely related to acetaldehyde. An investigation of the modelled
process dynamics in a continuous cultivation revealed multiple steady states in a
region of dilution rates around the transition between oxidative and oxido-reductive
growth. A bifurcation analysis using the two external variables, the dilution rate,
D, and the inlet concentration of glucose, S(f), as parameters, showed that a fold
bifurcation occurs close to the critical dilution rate resulting in multiple steady-states.
The region of dilution rates within which multiple steady states may occur depends
strongly on the substrate feed concentration. Consequently a single steady state
may prevail at low feed concentrations, whereas multiple steady states may occur
over a relatively wide range of dilution rates at higher feed concentrations. 


This model originates from BioModels Database: A Database of Annotated Published
Models. It is copyright (c) 2005-2010 The BioModels Team. 
For more information see the [terms of use](http://www.ebi.ac.uk/biomodels/legal.html) . 
To cite BioModels Database, please use [Le Novère N., Bornstein B., Broicher A., Courtot M., Donizelli M., Dharuri H., Li L., Sauro H., Schilstra M., Shapiro B., Snoep J.L., Hucka M. (2006) BioModels Database: A Free, Centralized Database of Curated, Published, Quantitative Kinetic Models of Biochemical and Cellular Systems Nucleic Acids Res., 34: D689-D691.](http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=16381960)
```
end

bhagwat2026 is "Bhagwat2026_Yeast_Ethanol_Isobutanol"
