{ "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": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(global) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " if (typeof (window._bokeh_onload_callbacks) === \"undefined\") {\n", " window._bokeh_onload_callbacks = [];\n", " }\n", "\n", " function run_callbacks() {\n", " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " delete window._bokeh_onload_callbacks\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " window._bokeh_onload_callbacks.push(callback);\n", " if (window._bokeh_is_loading > 0) {\n", " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " window._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " window._bokeh_is_loading--;\n", " if (window._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };\n", "\n", " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-compiler-0.11.1.min.js'];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " Bokeh.$(\"#d1978319-7775-494a-a9c5-4dd8485b7ea3\").text(\"BokehJS successfully loaded\");\n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i](window.Bokeh);\n", " }\n", " }\n", "\n", " if (window._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(js_urls, function() {\n", " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(this));" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from cameo import models" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model = models.bigg.e_coli_core.copy()\n", "model.solver = \"cplex\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from cameo import phenotypic_phase_plane" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ppp = phenotypic_phase_plane(model, variables=[model.reactions.BIOMASS_Ecoli_core_w_GAM], objective=model.reactions.EX_ac_e)\n", "ppp.plot()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "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 authors summarizes the OptGene workflow.\n", "\n", "\n", "\n", "Every iteration we keep the best 50 individuals so we can generate a library of targets." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from cameo.strain_design.heuristic.evolutionary_based import OptGene" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [], "source": [ "optgene = OptGene(model)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting optimization at Fri, 10 Jun 2016 06:38:55\n" ] }, { "data": { "text/html": [ "\n", "\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:\n", "\n", "The Latex widget is deprecated. Use Label instead\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Finished after 00:00:11\n" ] } ], "source": [ "result = optgene.run(target=\"EX_ac_e\", \n", " biomass=model.reactions.BIOMASS_Ecoli_core_w_GAM,\n", " substrate=model.metabolites.glc__D_e,\n", " max_evaluations=5000,\n", " plot=False)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:\n", "\n", "The Latex widget is deprecated. Use Label instead\n", "\n" ] }, { "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", " \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(SUCDi, GND)((b4090, b2296, b0723, b2029, b0724),)5.09.08353710.71573710.6219570.6170371.0621960.655414
1(SUCDi, GND, GLUt2r)((b0721, b3962, b4077, b2029, b2133),)5.09.08353710.71573710.6219570.6170371.0621960.655414
2(FRD7, SUCDi, PGL, ADK1)((b0474, b0767, b0118, b4154, b0721),)5.09.08353710.71573710.6219570.6170371.0621960.655414
3(SUCDi, PGL, ADK1)((b0767, b2492, b0903, b2464, b0474, b0721),)6.09.08353710.71573710.6219570.6170371.0621960.655414
4(FRD7, SUCDi, GND)((b0903, b4152, b4232, b0724, b0723, b2029),)6.09.08353710.71573710.6219570.6170371.0621960.655414
5(SUCDi, GND, PPS)((b1702, b2464, b0902, b0733, b0721, b2029), (...6.09.08353710.71573710.6219570.6170371.0621960.655414
6(SUCDi, GND, ADK1)((b2464, b0474, b4395, b0721, b2935, b2029),)6.09.08353710.71573710.6219570.6170371.0621960.655414
7(FRD7, SUCDi, SUCOAS, GND)((b0729, b4152, b1621, b1241, b0723, b2029),)6.09.62760410.71573710.6219570.6170371.0621960.655414
8(SUCDi, GND, ME1)((b1479, b1812, b0724, b1297, b0723, b2029),)6.09.08353710.71573710.6219570.6170371.0621960.655414
9(GLUSy, SUCDi, GND)((b3952, b3212, b3925, b2464, b0721, b2029),)6.09.08353710.71573710.6219570.6170371.0621960.655414
10(GLUt2r, SUCDi, GND)((b3386, b2464, b2133, b0721, b4077, b2029), (...6.09.08353710.71573710.6219570.6170371.0621960.655414
11(SUCDi, PGL, GND)((b0767, b0722, b2464, b0118, b2935, b2029),)6.09.08353710.71573710.6219570.6170371.0621960.655414
12(SUCDi, PGL)((b0767, b0734, b0903, b2464, b0118, b0721, b4...7.09.08353710.71573710.6219570.6170371.0621960.655414
13(SUCDi, GND, PPS)((b1702, b3603, b2458, b0721, b0979, b0875, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
14(SUCDi, GND, PGL, ADK1)((b0767, b0903, b2464, b0118, b0474, b0721, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
15(SUCDi, GND, FRUpts2)((b1818, b0733, b4395, b0721, b0723, b2935, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
16(SUCDi, GND, AKGDH, ME2)((b0727, b2463, b0724, b0721, b4090, b0723, b2...7.09.62760410.71573710.6219570.6170371.0621960.655414
17(SUCDi, PGL, ADK1)((b0767, b0903, b2464, b0118, b0474, b0721, b3...7.09.08353710.71573710.6219570.6170371.0621960.655414
18(SUCDi, GND, AKGDH)((b0727, b0451, b0724, b0721, b4090, b0723, b2...7.09.62760410.71573710.6219570.6170371.0621960.655414
19(AKGDH, G6PDH2r, SUCDi, GND, PPS)((b1702, b0727, b1852, b0721, b0875, b2029, b0...7.09.62760410.71573710.6219570.6170371.0621960.655414
20(SUCDi, GND, ADK1)((b3952, b0903, b2464, b0118, b0474, b0721, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
21(PGL, SUCDi)((b0767, b0903, b2464, b0118, b1241, b0721, b4...7.09.08353710.71573710.6219570.6170371.0621960.655414
22(ME1, SUCDi, GND, FRUpts2)((b3925, b1818, b1479, b4395, b0723, b3115, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
23(GLUSy, ME1, SUCDi, GND)((b3212, b1479, b0721, b1297, b0723, b3115, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
24(FRD7, SUCDi, GND, ME1)((b0903, b4152, b1479, b0724, b0721, b0723, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
25(FRD7, SUCDi, GND, AKGDH)((b4152, b0727, b0724, b0721, b4090, b0723, b2...7.09.62760410.71573710.6219570.6170371.0621960.655414
26(FRD7, SUCDi, GND)((b3603, b2133, b0451, b0721, b2417, b2029, b4...7.09.08353710.71573710.6219570.6170371.0621960.655414
27(FRD7, ME1, SUCDi, GND)((b4152, b1479, b1241, b0724, b0721, b0723, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
28(FRD7, GLUSy, ME1, SUCDi, GND)((b3212, b4152, b1479, b0721, b1297, b0723, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
29(AKGDH, SUCDi, GND, PPS)((b1702, b3603, b0727, b0721, b0875, b2029, b0...7.09.62760410.71573710.6219570.6170371.0621960.655414
30(SUCDi, PGL, GND, ADK1)((b0767, b2464, b0118, b0474, b0721, b2935, b2...7.09.08353710.71573710.6219570.6170371.0621960.655414
31(SUCDi, PGL, GND)((b0351, b0767, b0903, b2464, b0118, b0721, b2...8.09.08353710.71573710.6219570.6170371.0621960.655414
32(FRD7, AKGDH, SUCDi, GND, ADK1)((b0903, b4152, b2464, b0727, b0118, b0474, b0...8.09.62760410.71573710.6219570.6170371.0621960.655414
33(SUCDi, GND, ADK1)((b0903, b2464, b0474, b0978, b0721, b4090, b3...8.09.08353710.71573710.6219570.6170371.0621960.655414
\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot(0)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "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, \"e_coli_core.Core 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": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from cameo.strain_design.deterministic.linear_programming import OptKnock" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning: File contains basis. Basis is loaded.\n" ] } ], "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": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", " jQuery(\"#5c512b9e-3400-4b8c-9417-13a937191376\").remove();\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result = optknock.run(max_knockouts=1, target=\"EX_ac_e\", biomass=\"BIOMASS_Ecoli_core_w_GAM\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/envs/python3.4/lib/python3.4/site-packages/ipywidgets/widgets/widget_string.py:55: UserWarning:\n", "\n", "The Latex widget is deprecated. Use Label instead\n", "\n" ] }, { "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", "
reactionssizeEX_ac_ebiomassfva_minfva_max
0{ATPS4r}1.014.3122670.374230.014.369145
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot(0)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "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, \"e_coli_core.Core 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." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Use OptGene or OptKnock to find a growth coupled design for a product of your choice!" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.4", "language": "python", "name": "python3.4" }, "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.4" }, "widgets": { "state": { "075e53251c414266b84f8f2b24eee1e8": { "views": [] }, "08a43129692e4478bd06b62439929a5a": { "views": [] }, "09b7816653a34ad5815ff9d06b036c94": { "views": [] }, "0b68c2e253d64114b7277968cf16ca46": { "views": [] }, "0b92bf1fc8d4426d94d6e2fbb415aec6": { "views": [] }, "10a11ea8fbc74a93bf9d5261962965a9": { "views": [] }, "13b824e5a1ad4ba2a9cc7260eb7e1874": { "views": [] }, "17eb6bf958614a40980ac1b651c983a1": { "views": [] }, "1853eaf595e9447496bc359ff94cdeef": { "views": [] }, "19916e275b5d4d64962ee84e767ececf": { "views": [] }, "1a2e8c99ce314b9bb5537ef2f0ac2450": { "views": [] }, "1e840fbd46ba4c329adf8519af09c89d": { "views": [] }, "1ec7ea00d6bc4d238ad71b31acc7a633": { "views": [] }, "229ea42427b6457b88accb71c2832cad": { "views": [] }, "2377a056111f4244b52e3936c7eb6992": { "views": [] }, "257d0f9356624cc4a56d57f0022c899a": { "views": [] }, "265c9e399e4d4cb786fe769ab644bc8c": { "views": [] }, "2b33e3b968f345f9ac31251213581128": { "views": [] }, "2b81f985258341de869316ed1ca2bb47": { "views": [] }, "2d65809c4bac4c8091ae53f33c3a9240": { "views": [] }, "30e17522bb4c4c4da84627b6fc179bb2": { "views": [] }, "3198d1e57454451aa710fecfd706a7d8": { "views": [] }, "31c1a5afe0bb4811943a42caa8dd8e3c": { "views": [] }, "37e75bc45b964ed187fef3bccd3384f0": { "views": [] }, "39bf479baacd4c4caadae215051f77e9": { "views": [] }, "3b71f4ab35434dc7b50a7b3403b95ff0": { "views": [] }, "3c3622a427544c3b92b44a08c9f98e7a": { "views": [] }, "3cd3f5f31cb14ab5950ca7d7b61bdd0a": { "views": [] }, "426a278ef53544fb8311460a5b158c75": { "views": [] }, "48d68e17518742e79d790379f4598c8f": { "views": [] }, "4a0382c1e2564c019a559517403142c5": { "views": [] }, "4b3e74ee48934412a4ac1dc6c83cb7c7": { "views": [] }, "50745acb3c5a4ac4997435008dea9db4": { "views": [] }, "56b84b5da8f54204bb763d4e2648ac10": { "views": [] }, "588007653cad4556b460a4f38f43b512": { "views": [] }, "58fecf1bce564969878c1cf5d92e6461": { "views": [] }, "5aaf21f7fc6a47478634a453ccaeded9": { "views": [] }, "5c33ad3afba3497282b32a3675930e15": { "views": [] }, "5ea58af905464abba9fea376ba8530fa": { "views": [] }, "61a698262bc44e648e5f6f65e24ed582": { "views": [] }, "61c8403ac9084d01a78fb061a6c2bf3c": { "views": [] }, "653f37d01411427dbc3d0b350efb1b6a": { "views": [] }, "6861943ab08447b5963a524d1761831b": { "views": [] }, "689aa1cdc39e44e89b7700798808509b": { "views": [] }, "68e968b490af4da399f1c52abc6ee1e8": { "views": [] }, "6c7f18790075497fad8fc91d44d62118": { "views": [] }, "7138e790ab9b48ad8e191a7af7832353": { "views": [] }, "725e8d122afc486aacb78f77ec6ad665": { "views": [] }, "72a6a9c6ed6d4c4d83a79ef7d5a5d7fb": { "views": [] }, "737fc8c1f6b648eca4736ca363130345": { "views": [] }, "777d39f2cd5b4bc6bfea5ba2363b835d": { "views": [] }, "7794d57679e54367ab7622f4ee2bfa72": { "views": [] }, "7a92b9ecefe84f418c48f30210ac3248": { "views": [] }, "7c3554d887d54b379386d15bb4e1ec7b": { "views": [] }, "7e2c0b510f194beb8f0726eb9d8a2320": { "views": [] }, "7eb2960b2fe34dc3ae4cf6b56a97f719": { "views": [] }, "7eff121932f34cc5a7874d0a919dc6ad": { "views": [] }, "7fb95b1dc28f4d73bbf95cddb46d632a": { "views": [] }, "8031f4e21c654f8fa3e33073bef923be": { "views": [] }, "81c45e017c8544688499c5b3923e9d91": { "views": [] }, "83678ed6dcac496abc93efb0a592db20": { "views": [] }, "84a65b530d664d70ae492da95e6343f0": { "views": [] }, "85f01d525309418e84a1269e38bfe735": { "views": [] }, "87a72705674446dea2bac1407e641a99": { "views": [] }, "8833802c12a94723932a66f87ef52723": { "views": [] }, "8a66eba68f6941ef8073d3247a011acd": { "views": [] }, "8aef6aca8897425481e6188959349af3": { "views": [] }, "8d087673ee134b40b6da5417b2e37327": { "views": [] }, "906690605ffc460dac8c645087d35bc5": { "views": [] }, "955725b01eb84d3da77924dcc6491de5": { "views": [] }, "962d1904cd8b46beab24cc3e22eb9122": { "views": [] }, "983613ace3ea48acaa52ecb74705c134": { "views": [] }, "98720c61cead4b87a30d480f3d638beb": { "views": [] }, "98d5d37b579c411cb8ea5fff1e7ca402": { "views": [] }, "998b1aad7cbc4875bed4d08211a90f15": { "views": [] }, "99d1c9543e6844c68de19f10019a16b5": { "views": [] }, "9a16ee40d5e04444b9c4c95822da26e1": { "views": [] }, "9a4331a8dcac417d9d4f657c026df818": { "views": [] }, "9a9adecc325f4226beea1eee39902a9c": { "views": [] }, "9bff6e83da2d4ee9a3af6754cdf226b7": { "views": [] }, "9cd59256922045b68cfa5a152094fea2": { "views": [] }, "9d7c090bb2d542bd9b0ba11436f50919": { "views": [] }, "9d81574045c7495c849daec42a65985e": { "views": [] }, "9f3e81792e31422bb3ca7303ec9970f3": { "views": [] }, "a209cb5cb2284eb6aa4bfa00ebca5d91": { "views": [] }, "a3820208eda34a8fbc90c587e7c2f654": { "views": [] }, "a6f56ec3948141538fca2751ccbc5956": { "views": [] }, "a7e6af7a134947f0998b84ffd8cb560c": { "views": [] }, "ac64eb5822e543928781d1a391a01415": { "views": [] }, "ae82f2a521c044ad85d28a44fbbf1b1f": { "views": [] }, "b1548548902b40ccbccee6d66f93d8e0": { "views": [] }, "b1b7c8337c5d4d76b1ea67ad71b27e36": { "views": [] }, "b659f2181db446f09aa4e424fec82984": { "views": [] }, "b6b9e60578c84c9998500120d237544a": { "views": [] }, "b8857ba38ab84f569c09cf52b95a41ec": { "views": [] }, "b8d97ecdbb6242628251e3986aebd99c": { "views": [] }, "bdad56606f284f9d8446ec50bbf341b2": { "views": [] }, "bf64b9029f9442f7b23c9d9a655c7029": { "views": [] }, "c15459b07a1845b68d34ace414d3e76f": { "views": [] }, "c251796d94534d50a38e18bf303b0e5c": { "views": [] }, "c4927c5bd88d48da9b57a1eedb70ca91": { "views": [] }, "c6e239777413441b99b74a7f2dc9714e": { "views": [] }, "cb22dacd57cb4139911b850b806cf093": { "views": [] }, "cc6455c7e38d4f318e622f35288a9cd2": { "views": [] }, "cd5c9e0e637541e6bb3a231f6788ebc2": { "views": [] }, "d2b7d3e00e014bf3a03062a16d43082f": { "views": [] }, "d47e21df188d4090baff073f04dd03f8": { "views": [] }, "d798315831334759b033d7939f598433": { "views": [] }, "d901d73d277c4293a8af4afde9a7605a": { "views": [] }, "da19c29f4b8c41aa86155ee61ac91a67": { "views": [ { "cell_index": 8 } ] }, "df067079beb04426a4e3f186d0670b29": { "views": [] }, "dfc099df58464be68820442d86273c5a": { "views": [] }, "e0ab45ddfd054ece888a1fdd02c2ca82": { "views": [ { "cell_index": 17 } ] }, "e1c79133bd924cb6a93b331bfd81fd0c": { "views": [] }, "e3fb5b0b519643eda73be5cc017f8851": { "views": [] }, "e41a2f7c15664550bd169869bfcaa6aa": { "views": [] }, "e4c2c8f4daaf4ad9932656603c4ace47": { "views": [] }, "e9c6157f9d3343539bbf66debaf67e0d": { "views": [] }, "edea64b7b8f947dc958bd9d8f1c4ad3a": { "views": [] }, "ee09f43458d34e10ac78ecebbd84f6f4": { "views": [] }, "ee3903e6788c4bf580ed104ab31a6614": { "views": [ { "cell_index": 9 } ] }, "f151846019a84d30b2eae22452981679": { "views": [] }, "f727042b1ffb464ba8c28dd6633d6ea2": { "views": [] }, "f808bcf5e2fb45ab9009af9319ca0f7a": { "views": [] }, "f86d0a3434244ebb96bdf2be4df25c94": { "views": [] }, "f8884f4c36eb4adb93b12a20d3f425aa": { "views": [] }, "f8b10c3157294705936480d6dc20789a": { "views": [] }, "fd8db984f7f0472eba23f482a92d0310": { "views": [] } }, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0 }