.. code:: python
from cameo import config
config.default_view = config.SequentialView()
from pandas import options
options.display.max_rows = 8
.. raw:: html
.. parsed-literal::
cobra/io/sbml3.py:23 [1;31mUserWarning[0m: Install lxml for faster SBML I/O
Using meta-heuristics to search for knockout strategies.
========================================================
Cameo uses Evolutionary Algorithms, which allow the search of
near-optimal solutions very fast by combining linear programming to
simulate flux distributions and Evolutionary Algorithms to find
combinations that improve, for example the yield of a desired product.
The OptKnock[1] method uses this approach.
The evolutionary algorithms are iterative algorithms. In each iteration
multiple solutions are evaluated and assigned a fitness value. The
solutions that improve the objective are kept. Some of them are altered
and reassigned to the next iteration. After some rounds the objective
has been improved and if the algorithm is ran long enought all possible
solutions will be covered.
Thanks to the inspyred library, we implemented a low level interface to
allow the implementation of more elaborate strategies than OptGene.
Load model
^^^^^^^^^^
The first step is to load a model as usual.
.. code:: python
from cameo import models
iJO1366 = models.bigg.iJO1366
Define objective functions
--------------------------
An objective function defines how the fitness of a solution is computed
in the evaluation phase.
Cameo comes with prebuilt objective functions, e.g., Biomass-Product
coupled yield[1].
.. code:: python
from cameo.strain_design.heuristic.evolutionary.objective_functions import biomass_product_coupled_yield
of = biomass_product_coupled_yield(iJO1366.reactions.BIOMASS_Ec_iJO1366_core_53p95M,
iJO1366.reactions.EX_ac_e,
iJO1366.reactions.EX_glc__D_e)
of
.. math::
bpcy = \frac{(BIOMASS\_Ec\_iJO1366\_core\_53p95M * EX\_ac\_e)}{EX\_glc\_\_D\_e}
Other fitness functions such as yield or number of knockouts are also
available in cameo.
.. code:: python
from cameo.strain_design.heuristic.evolutionary.objective_functions import product_yield, number_of_knockouts
Costumized objectives can be implemented by extending the base class
ObjectiveFunction.
During the evaluation phase, all objective functions will be called with
the follwing parameters of(model, flux\_distribution,
decoded\_solution).
Search for gene knockouts with single objective
-----------------------------------------------
In this example, we are looking for gene knockouts leading to biomass
coupled acetate production with *E. coli* through iJO1366 model. This is
very similar to OptGene.
Setup optimization strategy for gene knockouts
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are multiple configurations for this strategy. The most basic
configuration requires a model and an objective funtion. More parameters
can be used, such as the method to simulate the flux distributions (FBA
is the defualt), the Evolutionary Computation (Genetic Algorithm
inspyred.ec.GAis the default). The implemetation removes the essential
genes from the search, as they won't yield soutions that are viable.
More genes can be removed from the search if defined (either due to
biological knowlege or user strategy).
.. code:: python
from cameo.strain_design.heuristic.evolutionary import GeneKnockoutOptimization
ko = GeneKnockoutOptimization(model=iJO1366, objective_function=of)
Run optimization for gene knockouts with single objective
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: python
res1 = ko.run(max_evaluations=15000, view=config.default_view)
.. parsed-literal::
Starting optimization at Thu, 14 Jan 2016 13:49:55
.. raw:: html
.. parsed-literal::
Using saved session configuration for http://localhost:5006/
To override, pass 'load_from_config=False' to Session
.. parsed-literal::
/Users/joao/.virtualenvs/cameo-py3/lib/python3.4/site-packages/bokeh/session.py:318 [1;31mUserWarning[0m: You need to start the bokeh-server to see this example.
.. raw:: html
.. raw:: html
0%
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::
.. parsed-literal::