Computational strain design: Growth-coupled production (GCP)

A main principle for the design of bioproduction hosts is the coupling of product synthesis to microbial growth, such that the product of interest becomes a byproduct of growth. Different notions of growth-coupling principle prevail in literature. With gradually increasing coupling strength, we can distinguish four different classes: - potentially growth-coupled production (pGCP): product synthesis is possible at maximum growth (e.g., minimum demand in OptKnock computations) - weakly growth-coupled production (wGCP): product synthesis is enforced at maximum growth (e.g., demanded by RobustKnock or OptCouple) - directionally growth-coupled production (dGCP): product synthesis is enforced at all growth rates greater than zero (e.g., often demanded by MCS, often generated by OptCouple) - substrate-uptake-coupled production (SUCP): product is synthesized whenever substrate is taken up, i.e., a minimum product yield is guaranteed (e.g., often demanded by MCS)

Before moving on the computation of strain designs, we will provide strain design examples for the different coupling types and show their main property. To keep it as simple as possible, we will use ethanol as the desired product, use the small “textbook model” e_coli_core, and introduce only reaction knockouts (and no knock-ins).

[1]:
import cobra
import straindesign as sd
model = cobra.io.load_model('e_coli_core')
Set parameter Username
Academic license - for non-commercial use only - expires 2023-07-20

pGCP: potentially growth-coupled production

When we knock out the reactions PPS, THD2, TKT2 and MDH in e_coli_core, we obtain a potentially coupled strain design. f15682d4d07c4851bb926bbd919d7b6c Below, we plot the flux space of the wild type model (blue/background) on the dimensions of growth rate and the ethanol yield and compare it to the pGCP strain design (orange/foreground). In the wild type model, growth and ethanol production compete, whereas, in the strain designed for pGCP, product synthesis is also possible (yet not required) at growth-maximal flux states.

[2]:
import matplotlib.pyplot as plt
# Wild-type plot
datapoints, triang, plot1 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               show=False);
# pGCP design plot
constraints = ['PPS=0', 'THD2=0', 'TKT2=0', 'MDH=0']
_,          _,      plot2 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               constraints=constraints,
                                               show=False);
# adjust axes limits and show plot
plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))
plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))
plt.show()
../_images/examples_JN_04_strain_design_introduction_4_0.png

wGCP: weakly growth-coupled production

A weakly growth-coupled production strain design can be generated by knocking out the reactions ACALDt, PTAr, PPS, PYRt2 and MDH in e_coli_core. a20ce60c417046b29bf961fc69c32724 Below, we plot the flux space of the wild type model (blue/background) on the dimensions of growth rate and the ethanol yield and compare it to the wGCP strain design (orange/foreground). In the wild type model, growth and ethanol production compete, whereas, in the strain designed for wGCP, growth-maximal flux states can only be reached by simultanously producing ethanol.

[3]:
import matplotlib.pyplot as plt
# Wild-type plot
datapoints, triang, plot1 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               show=False);
# pGCP design plot
constraints = ['ACALDt=0', 'PTAr=0', 'PPS=0', 'PYRt2=0', 'MDH=0']
_,          _,      plot2 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               constraints=constraints,
                                               show=False);
# adjust axes limits and show plot
plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))
plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))
plt.show()
../_images/examples_JN_04_strain_design_introduction_6_0.png

dGCP: directionally growth-coupled production

By knocking out the reactions PGL, ATPS4r and NADH16 in e_coli_core, we obtain a directionally coupled strain design. 02ecd19ed2a1451cbb80514b43664b43 Below, we plot the flux space of the the dGCP strain design (orange/foreground) on the dimensions of growth rate and the ethanol production. In the strain designed for dGCP, product synthesis is occurs at all growth-associated flux states. In this example significantly higher specific production rates are reached than in the pGCP and wGCP scenario, however at the detriment of high growth rates.

[4]:
import matplotlib.pyplot as plt
# Wild-type plot
datapoints, triang, plot1 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               show=False);
# pGCP design plot
constraints = ['PGL=0', 'ATPS4r=0', 'NADH16=0']
_,          _,      plot2 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM','EX_etoh_e'),
                                               constraints=constraints,
                                               show=False);
# adjust axes limits and show plot
plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))
plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))
plt.show()
../_images/examples_JN_04_strain_design_introduction_8_0.png

SUCP: substrate-uptake-coupled production

In strain designs with substrate-uptake-coupled production, all feasible flux states of substrate uptake also entail production. To obtain a such a strain design for the production of ethanol, the reactions knockouts LDH_D, ATPS4r and NADH16 can be introduced to e_coli_core. da7c2b0ed25444e6b639af6705001c9f Other than in the previous examples, we here plot the flux space of the SUCP strain design (orange/foreground) on the dimensions of growth rate and ethanol yield. In the SUCP strain design, a minimum product yield is ensured in all remaining feasible flux states. Again, the improved production capacities often come at the expense of viability.

[5]:
import matplotlib.pyplot as plt
# Wild-type plot
datapoints, triang, plot1 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM',('EX_etoh_e','-EX_glc__D_e')),
                                               show=False);
# pGCP design plot
constraints = ['LDH_D=0', 'ATPS4r=0', 'NADH16=0']
_,          _,      plot2 = sd.plot_flux_space(model,
                                               ('BIOMASS_Ecoli_core_w_GAM',('EX_etoh_e','-EX_glc__D_e')),
                                               constraints=constraints,
                                               show=False);
# adjust axes limits and show plot
plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))
plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))
plt.show()
../_images/examples_JN_04_strain_design_introduction_10_0.png

In the following chapter, we discuss how different algorithms can be used to generate growth-coupled strain designs.