{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Predict gene knockout strategies\n", "\n", "In cameo we have two ways of predicting gene knockout targets: using evolutionary algorithms (OptGene) or linear programming (OptKnock)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "If you're running this notebook on [try.cameo.bio](http://try.cameo.bio), things might run very slow due to our inability to provide access to the proprietary [CPLEX](https://www-01.ibm.com/software/commerce/optimization/cplex-optimizer/) solver on a public webserver. Furthermore, Jupyter kernels might crash and restart due to memory limitations on the server.\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from cameo import models" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "model = models.bigg.iJO1366" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "wt_solution = model.optimize()\n", "growth = wt_solution.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"]\n", "acetate_production = wt_solution.fluxes[\"EX_ac_e\"]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from cameo import phenotypic_phase_plane" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "fill": "toself", "fillcolor": "#B3E2CD", "hoverinfo": "none", "marker": { "line": { "color": "#B3E2CD" }, "opacity": 0.3 }, "mode": "line", "name": "WT", "opacity": 0.3, "type": "scatter", "x": [ 0, 0.05170377961720957, 0.10340755923441915, 0.15511133885162873, 0.2068151184688383, 0.2585188980860479, 0.31022267770325745, 0.361926457320467, 0.4136302369376766, 0.46533401655488615, 0.5170377961720958, 0.5687415757893053, 0.6204453554065149, 0.6721491350237244, 0.723852914640934, 0.7755566942581436, 0.8272604738753532, 0.8789642534925628, 0.9306680331097723, 0.9823718127269819, 0.9823718127269819, 0.9306680331097723, 0.8789642534925628, 0.8272604738753532, 0.7755566942581436, 0.723852914640934, 0.6721491350237244, 0.6204453554065149, 0.5687415757893053, 0.5170377961720958, 0.46533401655488615, 0.4136302369376766, 0.361926457320467, 0.31022267770325745, 0.2585188980860479, 0.2068151184688383, 0.15511133885162873, 0.10340755923441915, 0.05170377961720957, 0, 0, 0 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.443045765687657e-13, 1.9178137651822735, 3.8356275303643903, 5.753441295546489, 7.49395498751835, 9.191567907024954, 10.69046951910808, 12.166899126226081, 13.629127229343755, 15.091355332461378, 16.553604142942426, 17.955299118971524, 19.352213259712343, 20.746340227647277, 22.137517223957918, 23.52870724650301, 24.919897269047976, 26.31108729159315, 27.7022773141384, 29.09346733668346, 0, 29.09346733668346 ] }, { "marker": { "color": "green" }, "mode": "markers", "name": "Data Points", "type": "scatter", "x": [ 0.9823718127269799 ], "y": [ 0 ] } ], "layout": { "height": 432, "title": "Phenotypic Phase Plane (flux)", "width": 700, "xaxis": { "title": "BIOMASS_Ec_iJO1366_core_53p95M [h^-1]" }, "yaxis": { "title": "EX_ac_e [mmol gDW^-1 h^-1]" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = phenotypic_phase_plane(model, variables=['BIOMASS_Ec_iJO1366_core_53p95M'], objective='EX_ac_e')\n", "p.plot(points=[(growth, acetate_production)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## OptGene\n", "\n", "OptGene is an approach to search for gene or reaction knockouts that relies on evolutionary algorithms[1]. The following image from the authors summarizes OptGene workflow.\n", "\n", "\n", "\n", "At every iteration, we keep the best 50 individuals found overall so we can generate a library of targets." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from cameo.strain_design import OptGene" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [], "source": [ "optgene = OptGene(model)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting optimization at Mon, 22 Jan 2018 13:41:01\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e7aa5a7a3eb4410e9dcdc72383c01c85", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox()" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Finished after 05:13:14\n" ] } ], "source": [ "result = optgene.run(target=model.reactions.EX_ac_e, \n", " biomass=model.reactions.BIOMASS_Ec_iJO1366_core_53p95M,\n", " substrate=model.metabolites.glc__D_e,\n", " max_evaluations=5000,\n", " plot=False)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2164424c8b9344d0be7a09f2e2e61fc3", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "

OptGene Result

\n", " \n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
reactionsgenessizefva_minfva_maxtarget_fluxbiomass_fluxyieldfitness
0(ATPS4rpp,)((b3734,), (b3737,))10.014.187819-0.0000000.402478-0.000000-0.000000
1(SUCTARTtpp, ATPS4rpp, TARTt2_3pp)((b3733, b4123),)20.014.18781913.7316880.4024781.3731690.552670
2(RHAT1, ATPS4rpp)((b3629, b3733),)20.014.18781913.9429320.4024781.3942930.561172
3(PSP_L, ATPS4rpp)((b3733, b4388),)20.014.97629614.8013910.3883651.4801390.574834
4(PHEMEabcpp, ATPS4rpp)((b3733, b2199), (b3733, b2198))20.014.18781913.7316880.4024781.3731690.552670
5(EDTXS4, EDTXS2, ATPS4rpp)((b1855, b3733),)20.014.1878190.2344720.4024780.0234470.009437
6(SULFACabcpp, ETHSO3abcpp, ATPS4rpp, MSO3abcpp)((b0933, b3733),)20.014.18781913.7316880.4024781.3731690.552670
7(CITL, ATPS4rpp)((b0614, b3733),)20.014.18781913.9429320.4024781.3942930.561172
8(ATPS4rpp, NMNPtpp)((b3733, b0751),)20.014.18781913.7316880.4024781.3731690.552670
9(ATPS4rpp, GHMT2r, THFAT)((b3733, b2551),)20.014.64467414.2608530.3933621.4260850.560968
10(ATPS4rpp, G6PDA)((b3733, b0678),)20.014.18781913.7316880.4024781.3731690.552670
11(ATPS4rpp,)((b3386, b3733), (b0186, b3733))20.014.18781912.7518570.4024781.2751860.513234
12(COLIPAKpp, ATPS4rpp)((b2174, b3733),)20.014.18781913.9429320.4024781.3942930.561172
13(SUCTARTtpp, ATPS4rpp, TARTt2_3pp)((b4123, b3733, b4219),)30.014.18781912.7518570.4024781.2751860.513234
14(PPCSCT, ATPS4rpp)((b2920, b3733, b4219),)30.014.18781912.7518570.4024781.2751860.513234
15(PSP_L, ATPS4rpp)((b3733, b4388, b4219),)30.014.97629612.8021750.3883651.2802180.497192
16(FEENTERabcpp, ATPS4rpp, FE3DHBZSabcpp)((b0592, b2224, b3733),)30.014.187819-0.0000000.402478-0.000000-0.000000
17(NMNPtpp, ATPS4rpp, MTRPOX, SARCOX)((b2291, b0751, b3733, b1059),)40.014.18781913.9429320.4024781.3942930.561172
\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "fill": "toself", "fillcolor": "#B3E2CD", "hoverinfo": "none", "marker": { "line": { "color": "#B3E2CD" }, "opacity": 0.3 }, "mode": "line", "name": "WT", "opacity": 0.3, "type": "scatter", "x": [ 0, 0.05170377961720971, 0.10340755923441942, 0.15511133885162914, 0.20681511846883885, 0.25851889808604855, 0.3102226777032583, 0.36192645732046796, 0.4136302369376777, 0.46533401655488743, 0.5170377961720971, 0.5687415757893068, 0.6204453554065166, 0.6721491350237263, 0.7238529146409359, 0.7755566942581457, 0.8272604738753554, 0.8789642534925651, 0.9306680331097749, 0.9823718127269845, 0.9823718127269845, 0.9306680331097749, 0.8789642534925651, 0.8272604738753554, 0.7755566942581457, 0.7238529146409359, 0.6721491350237263, 0.6204453554065166, 0.5687415757893068, 0.5170377961720971, 0.46533401655488743, 0.4136302369376777, 0.36192645732046796, 0.3102226777032583, 0.25851889808604855, 0.20681511846883885, 0.15511133885162914, 0.10340755923441942, 0.05170377961720971, 0, 0, 0 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.094947017729282e-13, 1.9178137651828138, 3.835627530365173, 5.753441295547532, 7.493954987519828, 9.191567907026524, 10.69046951910775, 12.166899126225758, 13.629127229343453, 15.091355332461262, 16.553583435579185, 17.95528167897112, 19.352197999711734, 20.74632720141426, 22.137517223959662, 23.528707246502904, 24.919897269046942, 26.311087291592116, 27.702277314138087, 29.093467336683375, 0, 29.093467336683375 ] }, { "fill": "toself", "fillcolor": "#FDCDAC", "hoverinfo": "none", "marker": { "line": { "color": "#FDCDAC" }, "opacity": 0.3 }, "mode": "line", "name": "MT", "opacity": 0.3, "type": "scatter", "x": [ 0, 0.02118304085503876, 0.04236608171007752, 0.06354912256511627, 0.08473216342015503, 0.1059152042751938, 0.12709824513023255, 0.14828128598527132, 0.16946432684031007, 0.19064736769534882, 0.2118304085503876, 0.23301344940542634, 0.2541964902604651, 0.27537953111550384, 0.29656257197054264, 0.3177456128255814, 0.33892865368062014, 0.3601116945356589, 0.38129473539069764, 0.4024777762457364, 0.4024777762457364, 0.38129473539069764, 0.3601116945356589, 0.33892865368062014, 0.3177456128255814, 0.29656257197054264, 0.27537953111550384, 0.2541964902604651, 0.23301344940542634, 0.2118304085503876, 0.19064736769534882, 0.16946432684031007, 0.14828128598527132, 0.12709824513023255, 0.1059152042751938, 0.08473216342015503, 0.06354912256511627, 0.04236608171007752, 0.02118304085503876, 0, 0, 0 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.942931769394843, 15.1197369018247, 16.073270036906806, 17.026803171992324, 17.980336307075337, 18.933869442161082, 19.887402577241026, 20.840935712327227, 21.794468847409107, 22.74800198249701, 23.70153511757832, 24.388554754411114, 25.037485410108864, 25.668937772140566, 26.195512531158652, 26.713246183119814, 27.23097983507961, 27.748713487039975, 28.266447138998974, 28.784180790960477, 0, 28.784180790960477 ] } ], "layout": { "height": 432, "title": "Production Envelope", "width": 700, "xaxis": { "title": "BIOMASS_Ec_iJO1366_core_53p95M" }, "yaxis": { "title": "EX_ac_e" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot(0)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
\n", "\n", " \n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.display_on_map(0, \"iJO1366.Central metabolism\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## OptKnock\n", "\n", "OptKnock uses a bi-level mixed integer linear programming approach to identify reaction knockouts[2]:\n", "\n", "$$\n", "\\begin{matrix}\n", "maximize & \\mathit{v_{chemical}} & & (\\mathbf{OptKnock}) \\\\\n", "\\mathit{y_j} & & & \\\\\n", "subject~to & maximize & \\mathit{v_{biomass}} & (\\mathbf{Primal}) \\\\\n", "& \\mathit{v_j} & & & & \\\\\n", "\\end{matrix}\\\\\n", "\\begin{bmatrix}\n", "subject~to & \\sum_{j=1}^{M}S_{ij}v_{j} = 0,\\\\ \n", "& v_{carbon\\_uptake} = v_{carbon~target}\\\\ \n", "& v_{apt} \\ge v_{apt\\_main}\\\\ \n", "& v_{biomass} \\ge v_{target\\_biomass}\\\\ \n", "& v_{j}^{min} \\cdot y_j \\le v_j \\le v_{j}^{max} \\cdot y_j, \\forall j \\in \\boldsymbol{M} \\\\\n", "\\end{bmatrix}\\\\\n", "\\begin{align}\n", " & y_j = {0, 1}, & & \\forall j \\in \\boldsymbol{M} & \\\\\n", " & \\sum_{j \\in M} (1 - y_j) \\le K& & & \\\\\n", "\\end{align}\n", "$$\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from cameo.strain_design import OptKnock" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "optknock = OptKnock(model, fraction_of_optimum=0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Running multiple knockouts with OptKnock can take a few hours or days..." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", " jQuery(\"#22086c8a-5ba6-405c-b460-0b6e358a0d76\").remove();\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result = optknock.run(max_knockouts=1, target=\"EX_ac_e\", biomass=\"BIOMASS_Ec_iJO1366_core_53p95M\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ace89bf5283b4ec6b6ee817ab5936531", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "

OptKnock:

\n", "
    \n", "
  • Target: EX_ac_e
  • \n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
reactionssizeEX_ac_ebiomassfva_minfva_max
0{ATPS4rpp}113.942930.4024770.014.187819
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "fill": "toself", "fillcolor": "#B3E2CD", "hoverinfo": "none", "marker": { "line": { "color": "#B3E2CD" }, "opacity": 0.3 }, "mode": "line", "name": "WT", "opacity": 0.3, "type": "scatter", "x": [ 0, 0.05170377961720918, 0.10340755923441836, 0.15511133885162753, 0.2068151184688367, 0.2585188980860459, 0.31022267770325507, 0.36192645732046425, 0.4136302369376734, 0.4653340165548826, 0.5170377961720918, 0.568741575789301, 0.6204453554065101, 0.6721491350237193, 0.7238529146409285, 0.7755566942581377, 0.8272604738753468, 0.878964253492556, 0.9306680331097652, 0.9823718127269744, 0.9823718127269744, 0.9306680331097652, 0.878964253492556, 0.8272604738753468, 0.7755566942581377, 0.7238529146409285, 0.6721491350237193, 0.6204453554065101, 0.568741575789301, 0.5170377961720918, 0.4653340165548826, 0.4136302369376734, 0.36192645732046425, 0.31022267770325507, 0.2585188980860459, 0.2068151184688367, 0.15511133885162753, 0.10340755923441836, 0.05170377961720918, 0, 0, 0 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.398475499436174e-13, 1.9178137651832106, 3.835627530365554, 5.753441295547897, 7.493954987520064, 9.191567907026858, 10.69046951910625, 12.166899126226173, 13.629127229343625, 15.091355332461307, 16.553604142942987, 17.955299118972572, 19.35221325971349, 20.746340227649153, 22.137528079154855, 23.528715930659423, 24.919903782164557, 26.311091633670603, 27.702279485176874, 29.09346733668349, 0, 29.09346733668349 ] }, { "fill": "toself", "fillcolor": "#FDCDAC", "hoverinfo": "none", "marker": { "line": { "color": "#FDCDAC" }, "opacity": 0.3 }, "mode": "line", "name": "MT", "opacity": 0.3, "type": "scatter", "x": [ 0, 0.021183040855038936, 0.04236608171007787, 0.0635491225651168, 0.08473216342015574, 0.10591520427519469, 0.1270982451302336, 0.14828128598527254, 0.16946432684031149, 0.19064736769535043, 0.21183040855038937, 0.23301344940542829, 0.2541964902604672, 0.27537953111550617, 0.2965625719705451, 0.31774561282558406, 0.33892865368062297, 0.3601116945356619, 0.38129473539070086, 0.40247777624573977, 0.40247777624573977, 0.38129473539070086, 0.3601116945356619, 0.33892865368062297, 0.31774561282558406, 0.2965625719705451, 0.27537953111550617, 0.2541964902604672, 0.23301344940542829, 0.21183040855038937, 0.19064736769535043, 0.16946432684031149, 0.14828128598527254, 0.1270982451302336, 0.10591520427519469, 0.08473216342015574, 0.0635491225651168, 0.04236608171007787, 0.021183040855038936, 0, 0, 0 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.942931769395614, 15.11973690182458, 16.073270036907047, 17.026803171992697, 17.98033630707505, 18.93386944216104, 19.887402577241915, 20.84093571232802, 21.794468847409007, 22.74800198249602, 23.70153511757883, 24.38855475441096, 25.037485410108616, 25.668937772140453, 26.195512531158784, 26.71324618311985, 27.230979835079438, 27.748713487039367, 28.266447138998615, 28.784180790960363, 0, 28.784180790960363 ] } ], "layout": { "height": 432, "title": "Production Envelope", "width": 700, "xaxis": { "title": "BIOMASS_Ec_iJO1366_core_53p95M" }, "yaxis": { "title": "EX_ac_e" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot(0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
\n", "\n", " \n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.display_on_map(0, \"iJO1366.Central metabolism\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "[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\n", "\n", "[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." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.5" } }, "nbformat": 4, "nbformat_minor": 1 }