/* * Metabolic Engineering of Lactococcus lactis * * Model Status * * This model runs in OpenCell and COR and the units are consistent * throughout. The output is similar to the original model simulation, * but differs for unknown reasons. The CellML model translation * is based on the the original model code which is available online * at the JWS website. * * Model Structure * * ABSTRACT: Everyone who has ever tried to radically change metabolic * fluxes knows that it is often harder to determine which enzymes * have to be modified than it is to actually implement these changes. * In the more traditional genetic engineering approaches 'bottle-necks' * are pinpointed using qualitative, intuitive approaches, but * the alleviation of suspected 'rate-limiting' steps has not often * been successful. Here the authors demonstrate that a model of * pyruvate distribution in Lactococcus lactis based on enzyme * kinetics in combination with metabolic control analysis clearly * indicates the key control points in the flux to acetoin and * diacetyl, important flavour compounds. The model presented here * (available at http://jjj.biochem.sun.ac.za/wcfs.html) showed * that the enzymes with the greatest effect on this flux resided * outside the acetolactate synthase branch itself. Experiments * confirmed the predictions of the model, i.e. knocking out lactate * dehydrogenase and overexpressing NADH oxidase increased the * flux through the acetolactate synthase branch from 0 to 75% * of measured product formation rates. * * Metabolic engineering of lactic acid bacteria, the combined * approach: kinetic modelling, metabolic control and experimental * analysis, Marcel H.N. Hoefnagel, Marjo J.C. Starrenburg, Dirk * E. Martens, Jeroen Hugenholtz, Michiel Kleerebezem, Iris I. * Van Swam, Roger Bongers, Hans V. Westerhoff, and Jacky L. Snoep, * 2002, Microbiology, 148, 1003-1013. PubMed ID: 11932446 * * reaction diagram * * [[Image file: hoefnagel_2002.png]] * * A schematic diagram of the reactions included in the model to * describe the distribution of carbon from pyruvate in L. lactis. */ import nsrunit; unit conversion on; // unit millimolar predefined unit minute=60 second^1; unit flux=.01666667 meter^(-3)*second^(-1)*mole^1; unit first_order_rate_constant=.01666667 second^(-1); math main { realDomain time minute; time.min=0; extern time.max; extern time.delta; real PYR(time) millimolar; when(time=time.min) PYR=1; real V_GLYC(time) flux; real V_LDH(time) flux; real V_PDH(time) flux; real V_ALS(time) flux; real ACP(time) millimolar; when(time=time.min) ACP=0.03145; real V_PTA(time) flux; real V_ACK(time) flux; real ACAL(time) millimolar; when(time=time.min) ACAL=0.11; real V_ACALDH(time) flux; real V_ADH(time) flux; real ACLAC(time) millimolar; when(time=time.min) ACLAC=1e-5; real V_ALDC(time) flux; real V_NEALC(time) flux; real ACET(time) millimolar; when(time=time.min) ACET=1e-5; real V_ACETDH(time) flux; real V_ACETEFF(time) flux; real ATP(time) millimolar; when(time=time.min) ATP=0.1; real V_ATPase(time) flux; real ADP(time) millimolar; real A_tot millimolar; A_tot=5; real NADH(time) millimolar; when(time=time.min) NADH=3.67; real V_NOX(time) flux; real NAD(time) millimolar; real NAD_tot millimolar; NAD_tot=10; real ACCOA(time) millimolar; when(time=time.min) ACCOA=0.11; real COA(time) millimolar; real C_tot millimolar; C_tot=1; real AC millimolar; AC=0.01; real BUT millimolar; BUT=0.01; real ETOH millimolar; ETOH=0.1; real GLC millimolar; GLC=15; real LAC millimolar; LAC=0.1; real O millimolar; O=0.2; real P millimolar; P=10; real V_GLYC_temp(time) flux; real Km_GLC millimolar; Km_GLC=0.1; real V_GLYC.Km_NAD millimolar; V_GLYC.Km_NAD=0.1412; real V_GLYC.Km_ADP millimolar; V_GLYC.Km_ADP=0.04699; real V_GLYC.Km_PYR millimolar; V_GLYC.Km_PYR=2.5; real V_GLYC.Km_NADH millimolar; V_GLYC.Km_NADH=0.08999; real V_GLYC.Km_ATP millimolar; V_GLYC.Km_ATP=0.01867; real V_GLYC_max flux; V_GLYC_max=2397; real V_LDH_temp(time) flux; real V_LDH.Keq dimensionless; V_LDH.Keq=21120.69; real Km_LAC millimolar; Km_LAC=100; real V_LDH.Km_NAD millimolar; V_LDH.Km_NAD=2.4; real V_LDH.Km_PYR millimolar; V_LDH.Km_PYR=1.5; real V_LDH.Km_NADH millimolar; V_LDH.Km_NADH=0.08; real V_LDH_max flux; V_LDH_max=5118; real V_PDH_temp(time) flux; real Ki dimensionless; Ki=46.4159; real V_PDH.Km_NAD millimolar; V_PDH.Km_NAD=0.4; real V_PDH.Km_COA millimolar; V_PDH.Km_COA=0.014; real V_PDH.Km_PYR millimolar; V_PDH.Km_PYR=1; real V_PDH.Km_NADH millimolar; V_PDH.Km_NADH=0.1; real V_PDH.Km_ACCOA millimolar; V_PDH.Km_ACCOA=0.008; real V_PDH_max flux; V_PDH_max=259; real V_PTA_temp(time) flux; real V_PTA.Keq dimensionless; V_PTA.Keq=0.0065; real Km_P millimolar; Km_P=2.6; real Ki_P millimolar; Ki_P=2.6; real Ki_COA millimolar; Ki_COA=0.029; real V_PTA.Km_ACP millimolar; V_PTA.Km_ACP=0.7; real Ki_ACP millimolar; Ki_ACP=0.2; real Ki_ACCOA millimolar; Ki_ACCOA=0.2; real V_PTA_max flux; V_PTA_max=42; real V_ACK_temp(time) flux; real V_ACK.Keq dimensionless; V_ACK.Keq=174.217; real Km_AC millimolar; Km_AC=7; real V_ACK.Km_ATP millimolar; V_ACK.Km_ATP=0.07; real V_ACK.Km_ADP millimolar; V_ACK.Km_ADP=0.5; real V_ACK.Km_ACP millimolar; V_ACK.Km_ACP=0.16; real V_ACK_max flux; V_ACK_max=2700; real V_ACALDH_temp(time) flux; real V_ACALDH.Keq millimolar; V_ACALDH.Keq=1; real V_ACALDH.Km_NAD millimolar; V_ACALDH.Km_NAD=0.08; real V_ACALDH.Km_NADH millimolar; V_ACALDH.Km_NADH=0.025; real V_ACALDH.Km_COA millimolar; V_ACALDH.Km_COA=0.008; real V_ACALDH.Km_ACCOA millimolar; V_ACALDH.Km_ACCOA=0.007; real V_ACALDH.Km_ACAL millimolar; V_ACALDH.Km_ACAL=10; real V_ACALDH_max flux; V_ACALDH_max=97; real V_ADH_temp(time) flux; real V_ADH.Keq dimensionless; V_ADH.Keq=12354.9; real V_ADH.Km_NAD millimolar; V_ADH.Km_NAD=0.08; real V_ADH.Km_NADH millimolar; V_ADH.Km_NADH=0.05; real Km_ETOH millimolar; Km_ETOH=1; real V_ADH.Km_ACAL millimolar; V_ADH.Km_ACAL=0.03; real V_ADH_max flux; V_ADH_max=162; real V_ALS_temp(time) flux; real V_ALS.N dimensionless; V_ALS.N=2.4; real V_ALS.Keq dimensionless; V_ALS.Keq=9e12; real V_ALS.Km_ACLAC millimolar; V_ALS.Km_ACLAC=100; real V_ALS.Km_PYR millimolar; V_ALS.Km_PYR=50; real V_ALS_max flux; V_ALS_max=600; real V_ALDC_temp(time) flux; real V_ALDC.Km_ACLAC millimolar; V_ALDC.Km_ACLAC=10; real V_ALDC.Km_ACET millimolar; V_ALDC.Km_ACET=100; real V_ALDC_max flux; V_ALDC_max=106; real V_ACETEFF_temp(time) flux; real V_ACETEFF.Km_ACET millimolar; V_ACETEFF.Km_ACET=5; real V_ACETEFF_max flux; V_ACETEFF_max=200; real V_ACETDH_temp(time) flux; real V_ACETDH.Keq dimensionless; V_ACETDH.Keq=1400; real V_ACETDH.Km_NAD millimolar; V_ACETDH.Km_NAD=0.16; real V_ACETDH.Km_NADH millimolar; V_ACETDH.Km_NADH=0.02; real Km_BUT millimolar; Km_BUT=2.6; real V_ACETDH.Km_ACET millimolar; V_ACETDH.Km_ACET=0.06; real V_ACETDH_max flux; V_ACETDH_max=105; real V_ATPase_temp(time) flux; real V_ATPase.N dimensionless; V_ATPase.N=2.58; real V_ATPase.Km_ATP dimensionless; V_ATPase.Km_ATP=6.196; real V_ATPase_max flux; V_ATPase_max=900; real V_NOX_temp(time) flux; real V_NOX.Km_NAD millimolar; V_NOX.Km_NAD=1; real V_NOX.Km_NADH millimolar; V_NOX.Km_NADH=0.041; real Km_O millimolar; Km_O=0.2; real V_NOX_max flux; V_NOX_max=118; real k first_order_rate_constant; k=0.0003; // // PYR:time=(V_GLYC-(V_LDH+V_PDH+V_ALS)); // ACP:time=(V_PTA-V_ACK); // ACAL:time=(V_ACALDH-V_ADH); // ACLAC:time=(.5*V_ALS-(V_ALDC+V_NEALC)); // ACET:time=(V_ALDC+V_NEALC-(V_ACETDH+V_ACETEFF)); // ATP:time=(V_GLYC+V_ACK-V_ATPase); // ADP=(A_tot-ATP); // NADH:time=(V_GLYC+V_PDH-(V_LDH+V_ACALDH+V_ADH+V_ACETDH+V_NOX)); // NAD=(NAD_tot-NADH); // ACCOA:time=(V_PDH-(V_ACALDH+V_PTA)); // COA=(C_tot-ACCOA); // // // // // // // // V_GLYC=(if (V_GLYC_temp>=(0 flux)) V_GLYC_temp else V_GLYC_temp); V_GLYC_temp=(V_GLYC_max*GLC/Km_GLC*NAD/V_GLYC.Km_NAD*ADP/V_GLYC.Km_ADP/((1+GLC/Km_GLC+PYR/V_GLYC.Km_PYR)*(1+NAD/V_GLYC.Km_NAD+NADH/V_GLYC.Km_NADH)*(1+ADP/V_GLYC.Km_ADP+ATP/V_GLYC.Km_ATP))); // V_LDH=(if (V_LDH_temp>=(0 flux)) V_LDH_temp else V_LDH_temp); V_LDH_temp=(V_LDH_max/(V_LDH.Km_PYR*V_LDH.Km_NADH)*(PYR*NADH-LAC*NAD/V_LDH.Keq)/((1+PYR/V_LDH.Km_PYR+LAC/Km_LAC)*(1+NADH/V_LDH.Km_NADH+NAD/V_LDH.Km_NAD))); // V_PDH=(if (V_PDH_temp>=(0 flux)) V_PDH_temp else V_PDH_temp); V_PDH_temp=(V_PDH_max/(1+Ki*NADH/NAD)*PYR/V_PDH.Km_PYR*NAD/V_PDH.Km_NAD*COA/V_PDH.Km_COA/((1+PYR/V_PDH.Km_PYR)*(1+NAD/V_PDH.Km_NAD+NADH/V_PDH.Km_NADH)*(1+COA/V_PDH.Km_COA+ACCOA/V_PDH.Km_ACCOA))); // V_PTA=(if (V_PTA_temp>=(0 flux)) V_PTA_temp else V_PTA_temp); V_PTA_temp=(V_PTA_max/(Ki_ACCOA*Km_P)*(ACCOA*P-ACP*COA/V_PTA.Keq)/(1+ACCOA/Ki_ACCOA+P/Ki_P+ACP/Ki_ACP+COA/Ki_COA+ACCOA*P/(Ki_ACCOA*Km_P)+ACP*COA/(V_PTA.Km_ACP*Ki_COA))); // V_ACK=(if (V_ACK_temp>=(0 flux)) V_ACK_temp else V_ACK_temp); V_ACK_temp=(V_ACK_max/(V_ACK.Km_ADP*V_ACK.Km_ACP)*(ACP*ADP-AC*ATP/V_ACK.Keq)/((1+ACP/V_ACK.Km_ACP+AC/Km_AC)*(1+ADP/V_ACK.Km_ADP+ATP/V_ACK.Km_ATP))); // V_ACALDH=(if (V_ACALDH_temp>=(0 flux)) V_ACALDH_temp else V_ACALDH_temp); V_ACALDH_temp=(V_ACALDH_max/(V_ACALDH.Km_ACCOA*V_ACALDH.Km_NADH)*(ACCOA*NADH-NAD*COA*ACAL/V_ACALDH.Keq)/((1+NAD/V_ACALDH.Km_NAD+NADH/V_ACALDH.Km_NADH)*(1+ACCOA/V_ACALDH.Km_ACCOA+COA/V_ACALDH.Km_COA)*(1+ACAL/V_ACALDH.Km_ACAL))); // V_ADH=(if (V_ADH_temp>=(0 flux)) V_ADH_temp else V_ADH_temp); V_ADH_temp=(V_ADH_max/(V_ADH.Km_ACAL*V_ADH.Km_NADH)*(ACAL*NADH-ETOH*NAD/V_ADH.Keq)/((1+NAD/V_ADH.Km_NAD+NADH/V_ADH.Km_NADH)*(1+ACAL/V_ADH.Km_ACAL+ETOH/Km_ETOH))); // V_ALS=(if (V_ALS_temp>=(0 flux)) V_ALS_temp else V_ALS_temp); V_ALS_temp=(V_ALS_max*PYR/V_ALS.Km_PYR*(1-ACLAC/(PYR*V_ALS.Keq))*(PYR/V_ALS.Km_PYR+ACLAC/V_ALS.Km_ACLAC)^(V_ALS.N-1)/(1+(PYR/V_ALS.Km_PYR+ACLAC/V_ALS.Km_ACLAC)^V_ALS.N)); // V_ALDC=(if (V_ALDC_temp>=(0 flux)) V_ALDC_temp else V_ALDC_temp); V_ALDC_temp=(V_ALDC_max*ACLAC/V_ALDC.Km_ACLAC/(1+ACLAC/V_ALDC.Km_ACLAC+ACET/V_ALDC.Km_ACET)); // V_ACETEFF=(if (V_ACETEFF_temp>=(0 flux)) V_ACETEFF_temp else V_ACETEFF_temp); V_ACETEFF_temp=(V_ACETEFF_max*ACET/V_ACETEFF.Km_ACET/(1+ACET/V_ACETEFF.Km_ACET)); // V_ACETDH=(if (V_ACETDH_temp>=(0 flux)) V_ACETDH_temp else V_ACETDH_temp); V_ACETDH_temp=(V_ACETDH_max/(V_ACETDH.Km_ACET*V_ACETDH.Km_NADH)*(ACET*NADH-BUT*NAD/V_ACETDH.Keq)/((1+ACET/V_ACETDH.Km_ACET+BUT/Km_BUT)*(1+NADH/V_ACETDH.Km_NADH+NAD/V_ACETDH.Km_NAD))); // V_ATPase=(if (V_ATPase_temp>=(0 flux)) V_ATPase_temp else V_ATPase_temp); V_ATPase_temp=(V_ATPase_max*(ATP/ADP)^V_ATPase.N/(V_ATPase.Km_ATP^V_ATPase.N+(ATP/ADP)^V_ATPase.N)); // V_NOX=(if (V_NOX_temp>=(0 flux)) V_NOX_temp else V_NOX_temp); V_NOX_temp=(V_NOX_max*NADH*O/(V_NOX.Km_NADH*Km_O)/((1+NADH/V_NOX.Km_NADH+NAD/V_NOX.Km_NAD)*(1+O/Km_O))); // V_NEALC=(k*ACLAC); }