In 2010, Brochado et al used heuristic optimization together with flux simulations to design a vanillin producing yeast strain.
Brochado, A. R., Andrejev, S., Maranas, C. D., & Patil, K. R. (2012). Impact of stoichiometry representation on simulation of genotype-phenotype relationships in metabolic networks. PLoS Computational Biology, 8(11), e1002758. doi:10.1371/journal.pcbi.1002758
In [1]:
from cameo import models
In [2]:
model = models.bigg.iMM904
Constraints can be set in the model according to data found in the literature. The defined conditions allow the simulation of phenotypes very close to the experimental results.
Österlund, T., Nookaew, I., Bordel, S., & Nielsen, J. (2013). Mapping condition-dependent regulation of metabolism in yeast through genome-scale modeling. BMC Systems Biology, 7, 36. doi:10.1186/1752-0509-7-36
In [3]:
model.reactions.EX_glc__D_e.lower_bound = -13 #glucose exchange
model.reactions.EX_o2_e.lower_bound = -3 #oxygen exchange
In [4]:
model.medium
Out[4]:
In [5]:
model.objective = model.reactions.BIOMASS_SC5_notrace #growth
model.optimize().f
Out[5]:
Vanillin is not produced by S. cervisiae. In their work an heterolgous pathway is inserted to allow generate a vanillin production strain. The pathway is described as:
Using cameo, is very easy to generate a pathway and add it to a model.
In [6]:
from cameo.strain_design.pathway_prediction import PathwayPredictor
In [7]:
predictor = PathwayPredictor(model)
In [12]:
pathways = predictor.run('vanillin', max_predictions=3)
In [13]:
vanillin_pathway = pathways.pathways[0]
In [6]:
from cameo.core.pathway import Pathway
In [7]:
vanillin_pathway = Pathway.from_file("data/vanillin_pathway.tsv")
vanillin_pathway.data_frame
Out[7]:
And now we can plug the pathway to the model.
In [14]:
vanillin_pathway.plug_model(model)
In [15]:
from cameo import phenotypic_phase_plane
The Phenotypic phase plane can be used to analyse the theoretical yields at different growth rates.
In [ ]:
production_envelope = phenotypic_phase_plane(model, variables=[model.reactions.BIOMASS_SC5_notrace],
objective=model.reactions.EX_vnl_b_glu_c)
production_envelope.plot()
In [16]:
production_envelope = phenotypic_phase_plane(model, variables=[model.reactions.BIOMASS_SC5_notrace],
objective=model.reactions.EX_vnl_b_glu_c)
production_envelope.plot()
To find gene knockout targets, we use cameo.strain_design.heuristic package which implements the OptGene strategy.
The authors used the biomass-product coupled yield (bpcy) for optimization which is the equivalent of running OptGene in non-robust mode. All simulations were computed using MOMA but because cameo does not implement MOMA we use it's equivalent linear version (it minimizes the absolute distance instead of the quadratic distance). The linear MOMA version is faster than the original MOMA formulation.
By default, our OptGene implementation will run 20'000 evaluations.
In [11]:
from cameo.strain_design.heuristic.evolutionary_based import OptGene
from cameo.flux_analysis.simulation import lmoma
In [12]:
optgene = OptGene(model)
In [13]:
results = optgene.run(target="EX_vnl_b_glu_c",
biomass="BIOMASS_SC5_notrace",
substrate="EX_glc__D_e",
simulation_method=lmoma)
In [14]:
results
Out[14]: