Predict gene knockout strategies

In cameo we have two ways of predicting gene knockout targets: using evolutionary algorithms (OptGene) or linear programming (OptKnock)


In [1]:
from cameo import models



In [2]:
model = models.bigg.e_coli_core.copy()
model.solver = "cplex"

In [3]:
from cameo import phenotypic_phase_plane

In [4]:
ppp = phenotypic_phase_plane(model, variables=[model.reactions.BIOMASS_Ecoli_core_w_GAM], objective=model.reactions.EX_ac_e)
ppp.plot()


OptGene

OptGene is an approach to search for gene or reaction knockouts that relies on evolutionary algorithms[1]. The following image from authors summarizes the OptGene workflow.

Every iteration we keep the best 50 individuals so we can generate a library of targets.


In [5]:
from cameo.strain_design.heuristic.evolutionary_based import OptGene

In [6]:
optgene = OptGene(model)

In [7]:
result = optgene.run(target="EX_ac_e", 
                     biomass=model.reactions.BIOMASS_Ecoli_core_w_GAM,
                     substrate=model.metabolites.glc__D_e,
                     max_evaluations=5000,
                     plot=False)


Starting optimization at Fri, 10 Jun 2016 06:38:55
/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:

The Latex widget is deprecated. Use Label instead

Finished after 00:00:11

In [8]:
result


/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:

The Latex widget is deprecated. Use Label instead

Out[8]:

OptGene Result

  • Simulation: fba
  • Objective Function: $$bpcy = \frac{(BIOMASS\_Ecoli\_core\_w\_GAM * EX\_ac\_e)}{EX\_glc\_\_D\_e}$$
reactions genes size fva_min fva_max target_flux biomass_flux yield fitness
0 (SUCDi, GND) ((b4090, b2296, b0723, b2029, b0724),) 5.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
1 (SUCDi, GND, GLUt2r) ((b0721, b3962, b4077, b2029, b2133),) 5.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
2 (FRD7, SUCDi, PGL, ADK1) ((b0474, b0767, b0118, b4154, b0721),) 5.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
3 (SUCDi, PGL, ADK1) ((b0767, b2492, b0903, b2464, b0474, b0721),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
4 (FRD7, SUCDi, GND) ((b0903, b4152, b4232, b0724, b0723, b2029),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
5 (SUCDi, GND, PPS) ((b1702, b2464, b0902, b0733, b0721, b2029), (... 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
6 (SUCDi, GND, ADK1) ((b2464, b0474, b4395, b0721, b2935, b2029),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
7 (FRD7, SUCDi, SUCOAS, GND) ((b0729, b4152, b1621, b1241, b0723, b2029),) 6.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
8 (SUCDi, GND, ME1) ((b1479, b1812, b0724, b1297, b0723, b2029),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
9 (GLUSy, SUCDi, GND) ((b3952, b3212, b3925, b2464, b0721, b2029),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
10 (GLUt2r, SUCDi, GND) ((b3386, b2464, b2133, b0721, b4077, b2029), (... 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
11 (SUCDi, PGL, GND) ((b0767, b0722, b2464, b0118, b2935, b2029),) 6.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
12 (SUCDi, PGL) ((b0767, b0734, b0903, b2464, b0118, b0721, b4... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
13 (SUCDi, GND, PPS) ((b1702, b3603, b2458, b0721, b0979, b0875, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
14 (SUCDi, GND, PGL, ADK1) ((b0767, b0903, b2464, b0118, b0474, b0721, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
15 (SUCDi, GND, FRUpts2) ((b1818, b0733, b4395, b0721, b0723, b2935, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
16 (SUCDi, GND, AKGDH, ME2) ((b0727, b2463, b0724, b0721, b4090, b0723, b2... 7.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
17 (SUCDi, PGL, ADK1) ((b0767, b0903, b2464, b0118, b0474, b0721, b3... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
18 (SUCDi, GND, AKGDH) ((b0727, b0451, b0724, b0721, b4090, b0723, b2... 7.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
19 (AKGDH, G6PDH2r, SUCDi, GND, PPS) ((b1702, b0727, b1852, b0721, b0875, b2029, b0... 7.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
20 (SUCDi, GND, ADK1) ((b3952, b0903, b2464, b0118, b0474, b0721, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
21 (PGL, SUCDi) ((b0767, b0903, b2464, b0118, b1241, b0721, b4... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
22 (ME1, SUCDi, GND, FRUpts2) ((b3925, b1818, b1479, b4395, b0723, b3115, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
23 (GLUSy, ME1, SUCDi, GND) ((b3212, b1479, b0721, b1297, b0723, b3115, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
24 (FRD7, SUCDi, GND, ME1) ((b0903, b4152, b1479, b0724, b0721, b0723, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
25 (FRD7, SUCDi, GND, AKGDH) ((b4152, b0727, b0724, b0721, b4090, b0723, b2... 7.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
26 (FRD7, SUCDi, GND) ((b3603, b2133, b0451, b0721, b2417, b2029, b4... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
27 (FRD7, ME1, SUCDi, GND) ((b4152, b1479, b1241, b0724, b0721, b0723, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
28 (FRD7, GLUSy, ME1, SUCDi, GND) ((b3212, b4152, b1479, b0721, b1297, b0723, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
29 (AKGDH, SUCDi, GND, PPS) ((b1702, b3603, b0727, b0721, b0875, b2029, b0... 7.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
30 (SUCDi, PGL, GND, ADK1) ((b0767, b2464, b0118, b0474, b0721, b2935, b2... 7.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
31 (SUCDi, PGL, GND) ((b0351, b0767, b0903, b2464, b0118, b0721, b2... 8.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414
32 (FRD7, AKGDH, SUCDi, GND, ADK1) ((b0903, b4152, b2464, b0727, b0118, b0474, b0... 8.0 9.627604 10.715737 10.621957 0.617037 1.062196 0.655414
33 (SUCDi, GND, ADK1) ((b0903, b2464, b0474, b0978, b0721, b4090, b3... 8.0 9.083537 10.715737 10.621957 0.617037 1.062196 0.655414

In [9]:
result.plot(0)



In [10]:
result.display_on_map(0, "e_coli_core.Core metabolism")


OptKnock

OptKnock uses a bi-level mixed integer linear programming approach to identify reaction knockouts[2]:

$$ \begin{matrix} maximize & \mathit{v_{chemical}} & & (\mathbf{OptKnock}) \\ \mathit{y_j} & & & \\ subject~to & maximize & \mathit{v_{biomass}} & (\mathbf{Primal}) \\ & \mathit{v_j} & & & & \\ \end{matrix}\\ \begin{bmatrix} subject~to & \sum_{j=1}^{M}S_{ij}v_{j} = 0,\\ & v_{carbon\_uptake} = v_{carbon~target}\\ & v_{apt} \ge v_{apt\_main}\\ & v_{biomass} \ge v_{target\_biomass}\\ & v_{j}^{min} \cdot y_j \le v_j \le v_{j}^{max} \cdot y_j, \forall j \in \boldsymbol{M} \\ \end{bmatrix}\\ \begin{align} & y_j = {0, 1}, & & \forall j \in \boldsymbol{M} & \\ & \sum_{j \in M} (1 - y_j) \le K& & & \\ \end{align} $$

In [11]:
from cameo.strain_design.deterministic.linear_programming import OptKnock

In [12]:
optknock = OptKnock(model, fraction_of_optimum=0.1)


Warning:  File contains basis.  Basis is loaded.

Running multiple knockouts with OptKnock can take a few hours or days...


In [13]:
result = optknock.run(max_knockouts=1, target="EX_ac_e", biomass="BIOMASS_Ecoli_core_w_GAM")



In [14]:
result


/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:

The Latex widget is deprecated. Use Label instead

Out[14]:

OptKnock:

  • Target: EX_ac_e
reactions size EX_ac_e biomass fva_min fva_max
0 {ATPS4r} 1.0 14.312267 0.37423 0.0 14.369145

In [15]:
result.plot(0)



In [16]:
result.display_on_map(0, "e_coli_core.Core metabolism")


References

[1]Patil, K. R., Rocha, I., Förster, J., & Nielsen, J. (2005). Evolutionary programming as a platform for in silico metabolic engineering. BMC Bioinformatics, 6, 308. doi:10.1186/1471-2105-6-308

[2]Burgard, A.P., Pharkya, P., Maranas, C.D. (2003), "OptKnock: A Bilevel Programming Framework for Identifying Gene Knockout Strategies for Microbial Strain Optimization," Biotechnology and Bioengineering, 84(6), 647-657.

Exercises

  • Use OptGene or OptKnock to find a growth coupled design for a product of your choice!

In [ ]: