Easy strain design using a high-level interface

If you’re running this notebook on try.cameo.bio, things might run very slow due to our inability to provide access to the CPLEX solver on a public webserver. Furthermore, Jupyter kernels might crash and restart due to memory limitations on the server. To avoid that, we encourage the users to shutdown previously opened notebooks. You can do from the Home page that by selecting the notebooks highlighted in green and pressing the Shutdown button on the top of the menu.

Users primarily interested in using cameo as a tool for enumerating metabolic engineering strategies have access to cameo’s advanced programming interface via cameo.api that provides access to potential products (cameo.api.products), host organisms (cameo.api.hosts) and a configurable design function (cameo.api.design). Running cameo.api.design requires only minimal input and will run the following workflow.

Import the advanced interface.

from cameo import api

Searching for products

Search by trivial name.

api.products.search('caffeine')
InChI SMILES charge formula mass name source search_rank
MNXM680 InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)... CN1C=NC2=C1C(=O)N(C)C(=O)N2C 0 C8H10N4O2 194.1906 caffeine chebi:27732 0

Search by ChEBI ID.

api.products.search('chebi:27732')
InChI SMILES charge formula mass name source search_rank
MNXM680 InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)... CN1C=NC2=C1C(=O)N(C)C(=O)N2C 0 C8H10N4O2 194.1906 caffeine chebi:27732 0

Host organisms

Currently the following host organisms and respective models are available in cameo. More hosts and models will be added in the future (please get in touch with us if you’d like to get a particular host organism included).

for host in api.hosts:
    for model in host.models:
        print(host.name, model.id)
Escherichia coli iJO1366
Saccharomyces cerevisiae iMM904

Computing strain engineering strategies

For demonstration purposes, we’ll set a few options to limit the computational time. Also we’ll create a multiprocessing view to take advantage of multicore CPUs (strain design algorithms will be run in parallel for individually predicted heterologous pathways).

from cameo.parallel import MultiprocessingView
mp_view = MultiprocessingView()

Limit the number of predicted heterlogous pathways to 4.

api.design.options.max_pathway_predictions = 4

Set a time limit of 30 minutes on individual heuristic optimizations.

api.design.options.heuristic_optimization_timeout = 30
report = api.design(product='vanillin', view=mp_view)
Starting searching for compound vanillinFound 1 compounds that match query 'vanillin'
Id Name Formula
MNXM754vanillinC8H8O3
Choosing best match (vanillin) ... please interrupt if this is not the desired compound.

Predicting pathways for product vanillin in Escherichia coli (using model iJO1366).Pathway 1
equation lower_bound upper_bound
MNXR5340 H(+) + NADH + O2 + vanillate <=> H2O + 3,4-dih... -1000 1000
MNXR5336 2.0 H(+) + NADH + vanillate <=> H2O + vanillin... -1000 1000
MNXR2795 S-adenosyl-L-methionine + glycine <=> H(+) + S... -1000 1000
MNXR68718 H2O + 3,4-dihydroxybenzoate <=> 3-dehydroshiki... -1000 1000
Max flux: 4.29196
Pathway 2
equation lower_bound upper_bound
MNXR5340 H(+) + NADH + O2 + vanillate <=> H2O + 3,4-dih... -1000 1000
MNXR5336 2.0 H(+) + NADH + vanillate <=> H2O + vanillin... -1000 1000
MNXR84169 (6R)-5,10-methylenetetrahydrofolate + glycine ... -1000 1000
MNXR68718 H2O + 3,4-dihydroxybenzoate <=> 3-dehydroshiki... -1000 1000
Max flux: 7.28363
Pathway 3
equation lower_bound upper_bound
MNXR5340 H(+) + NADH + O2 + vanillate <=> H2O + 3,4-dih... -1000 1000
MNXR5336 2.0 H(+) + NADH + vanillate <=> H2O + vanillin... -1000 1000
MNXR68718 H2O + 3,4-dihydroxybenzoate <=> 3-dehydroshiki... -1000 1000
MNXR651 2.0 H(+) + NADH + formate <=> H2O + formaldehy... -1000 1000
Max flux: 7.58479
Pathway 4
equation lower_bound upper_bound
MNXR5340 H(+) + NADH + O2 + vanillate <=> H2O + 3,4-dih... -1000 1000
MNXR5336 2.0 H(+) + NADH + vanillate <=> H2O + vanillin... -1000 1000
MNXR230 H(+) + 4-hydroxybenzoate + O2 + NADPH <=> H2O ... -1000 1000
MNXR640 methanol + NAD(+) <=> H(+) + NADH + formaldehyde -1000 1000
<IPython.core.display.Javascript object>
This is the format of your plot grid:
[ (1,1) x1,y1 ]  [ (1,2) x2,y2 ]
[ (2,1) x3,y3 ]  [ (2,2) x4,y4 ]