{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Sticky switches: bistability through positive feedback\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Concepts**\n", "\n", "- Bifurcations are critical points where small changes in a parameter cause large changes in system behavior.\n", "\n", "\n", "**Design principles**\n", "\n", "- Positive, ultrasensitive feedback loops enable bistability.\n", "- Hysteresis (history-dependent system behavior) allows cells to encode memory of past events. \n", "\n", "\n", "**Techniques**\n", "\n", "- Graphical approaches for characterizing state stability .\n", "- Nullcline analysis identifies fixed points and provides insight into the structure of dynamical systems.\n", "- Nondimensionalization simplifies analysis of a model's parameter space.\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T17:20:07.050555Z", "start_time": "2019-04-05T17:20:07.025621Z" }, "tags": [ "remove_output", "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " const el = document.getElementById(\"p1001\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) {\n", " if (callback != null)\n", " callback();\n", " });\n", " } finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(css_urls, js_urls, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"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.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", " run_callbacks()\n", " }\n", " }\n", "\n", " function on_error(url) {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (let i = 0; i < css_urls.length; i++) {\n", " const url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.rel = \"stylesheet\";\n", " element.type = \"text/css\";\n", " element.href = url;\n", " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", " document.body.appendChild(element);\n", " }\n", "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.async = false;\n", " element.src = url;\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " };\n", "\n", " function inject_raw_css(css) {\n", " const element = document.createElement(\"style\");\n", " element.appendChild(document.createTextNode(css));\n", " document.body.appendChild(element);\n", " }\n", "\n", " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.1.0.min.js\"];\n", " const css_urls = [];\n", "\n", " const inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " if (root.Bokeh !== undefined || force === true) {\n", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", "if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " const cell = $(document.getElementById(\"p1001\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(css_urls, js_urls, function() {\n", " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"p1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"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.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.1.0.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"p1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Colab setup ------------------\n", "import os, sys, subprocess\n", "if \"google.colab\" in sys.modules:\n", " cmd = \"pip install --upgrade biocircuits watermark\"\n", " process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " stdout, stderr = process.communicate()\n", " data_path = \"https://biocircuits.github.io/chapters/data/\"\n", "else:\n", " data_path = \"data/\"\n", "# ------------------------------\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import scipy.integrate\n", "import scipy.optimize\n", "\n", "import biocircuits.jsplots\n", "\n", "import bokeh.io\n", "import bokeh.models\n", "import bokeh.plotting\n", "\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-03T18:59:51.945279Z", "start_time": "2019-04-03T18:59:51.939867Z" } }, "source": [ "## Sticky switches are prevalent in biology\n", "\n", "One of the most amazing aspects of living cells is their ability to differentiate into different—sometimes radically different—types. In animals, neurons look and behave quite differently than skin or blood cells even though they all share the same genome. Single cell analysis and large scale cell atlas projects (see [Regev, et al., 2017](https://doi.org/10.7554/eLife.27041)) are only beginning to reveal the full diversity of cell types. And, as we zoom in to examine individual cells of any one nominal type, we often find many sub-types, or state, with different morphologies, functions, spatial locations, and gene expression profiles. Something similar occurs in bacteria, where a given strain can often exist in different states that differ in function and gene expression. \n", "\n", "It is not straightforward to define what we mean by a cell \"type\" (See [Clevers, et al., 2017](https://doi.org/10.1016/j.cels.2017.03.006).) Nevertheless, one of their key properties is a kind of \"stickiness\" or memory. If you take a neural progenitor out of a developing embryo, and culture it in a dish, it largely retains its neural progenitor identity, including gene expression and the repertoire of cell types that it can differentiate into. Cell type identity is mitotically stable, retained even as the cell undergoes multiple rounds of cell division. Having said that, cell type identity is not absolutely fixed. Combinations of signaling molecules or drugs or forced expression of transcription factors can induce changes in cell identity. This is put to good use in the field of regenerative medicine, which seeks to generate cells of desired types for therapeutic purposes. Nevertheless, in general, a cell type is a relatively stable, mitotically heritable property of a cell. \n", "\n", "Just as important as the stability of a cellular state is the nature of transitions between those states. How does a cell switch from one state to another in response to an instructional cue to differentiate? Does it gradually meander from one state to the next, able at backtrack at any point? Or does it transition more suddenly and even irreversibly? This question was studied in a series of beautiful papers by James Ferrell and colleagues on the maturation of Xenopus frog oocytes ([Ferrell, 1999](https://doi.org/10.1002/(SICI)1521-1878(199910)21:10%3C833::AID-BIES5%3E3.0.CO;2-P)). In response to the hormone progesterone, these oocytes can switch from an \"immature\" state, stable for weeks, to a \"mature\" state, stable for 1-2 days. When they exposed immature oocytes to increasing concentrations of progesterone, they observed that the fraction of oocytes that matured correspondingly increased. But maturation was an all-or-none transition at the level of each individual oocyte. Lower progesterone concentration had a lower likelihood of triggering a transition in any individual cell. But once triggered, maturation occurred in the same stereotyped, almost \"digital,\" manner. \n", "\n", "\n", "\n", "Programmed cell death is another process that involves all-or-none transitions. In multicellular organisms, there are several different processes, including apoptosis, pyroptosis, and ferroptosis, that cause cells to die in specific, organized ways. This is important for removing cells in diseased or senescent states, and for sculpting developing tissues. Initiation of cell death is not only a stochastic, all-or-none process, it is also one of the more irreversible processes in biology. Work from Sabrina Spencer, Peter Sorger, and colleagues lab [showed](https://doi.org/10.1038/nature08012\n", ") how a ligand that induces cell death does so in a stochastic, all-or-none, and irreversible fashion.\n", "\n", "At the level of genes, eukaryotic gene expression can also be \"sticky.\" Chemical modifications to histones, the proteins that organize DNA within the nucleus, modulate the expression level of genes they interact with. The cell has enzymes that not only \"write\" these modifications but also propagate them, so that once established they are constantly replaced. The result is that a gene can be repressed—or silenced—by a signal, and stay silent, even after that signal is removed, for many cell generations. \n", "\n", "In prokaryotes, the bacteriophage lambda, which infects E. coli, can exist in either a dormant \"lysogenic\" state or a \"lytic\" state in which it replicates and ultimately kills the cell. This system is beautifully described in Mark Ptashne's classic book [_A Genetic Switch_](http://www.cshteaching.org/home_genetic_switch.php). We will discuss this example more below. \n", "\n", "As you can see, a huge diversity of biological systems seem to involve sticky switches and all-or-none, and sometimes irreversible, transitions between different states. While the components and interactions used by these systems are diverse, similar principles apply to all. \n", "\n", "## Positive autoregulation enables bistability\n", "\n", "What types of circuits can allow a cell to exist in two or more distinct states, each one stable on its own? In 1949, Max Delbrück noted that two metabolic pathways, if they cross-inhibited each other, could under some circumstances become bistable, such that either one or the other, but not both, would be active. He then [speculated](https://doi.org/10.1063%2F5.0079700), \"Models of this kind can […] account for large numbers of alternative steady states […] similar to the phenomena of differentiation.” \n", "\n", "The key circuit property we will study is **bistability**, defined as the ability of a circuit to exist in two distinct stable states. We will see that bistability can be achieved with circuits as simple as a single gene, as long as they possess two key properties: positive feedback and ultrasensitivity.\n", "\n", "In Chapter 1, we analyzed the steady-state behavior of a gene regulated by an activator, which we assumed was present at some fixed concentration within the cell. However, just as repressors can repress their own expression (negative autoregulation), as we saw in the Chapter 2, activators can activate their own expression. This phenomenon, **positive autoregulation**, occurs with both bacterial and eukaryotic transcription factors, especially those that establish and maintain cell states. Here, we will show how positive autoregulation can, under some conditions, generate bistability, such that states of high and low expression can both be stable. \n", "\n", "
\n", "\n", "![positive autoregulation](figs/positive_autoregulation_2.png)\n", "\n", "
\n", "\n", "We can represent a positive autoregulatory circuit with the following ODE, where the production term for the activator, X, is an activating Hill function of its own concentration, $x$:\n", "\n", "\\begin{align}\n", "\\frac{\\mathrm{d}x}{\\mathrm{d}t} = \\beta\\, \\frac{(x/k)^n} {1 + (x/k)^n} - \\gamma x .\n", "\\end{align}\n", "\n", "We can get some intuition about this system's behavior without diving straight into solving the ODE or even finding its steady states. First, we notice that $\\mathrm{d}x/\\mathrm{d}t$ vanishes for $x = 0$, regardless of the parameter values, so $x = 0$ is always a steady state. If the activator is absent, it stays absent.\n", "\n", "To go further, we will turn to graphical methods and plot the values of the production term (the activating Hill function) and the degradation term ($\\gamma x$) for various values of $x$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"c3bfb5ea-40b4-4a42-9ccb-2c75a0ccd5fc\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1002\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1012\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1004\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1016\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1018\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1005\",\"attributes\":{\"text\":\"\\u03b2 = 10, \\u03b3 = 1 , k = 4, n = 4\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1055\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1049\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1050\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1051\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1056\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1057\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1052\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1053\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1054\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1064\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1058\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1059\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1060\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1065\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1066\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1061\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1062\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1063\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1073\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1067\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1068\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1069\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1074\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1075\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1070\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1071\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1072\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1083\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1077\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1078\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1079\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[3.3819761988413224]],[\"y\",[3.3819761988413224]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1084\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1085\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1080\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1081\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1082\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1092\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1086\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1087\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1088\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[9.72134917189334]],[\"y\",[9.72134917189334]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1093\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1094\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1089\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1090\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1091\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1119\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1113\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1114\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1115\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[14]],[\"y\",[9.933]],[\"text\",[\"production rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1120\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1121\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1116\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"top\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1117\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"top\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1118\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"top\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1128\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1122\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1123\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1124\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[14]],[\"y\",[14]],[\"text\",[\"removal rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1129\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1130\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1125\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"angle\":{\"type\":\"value\",\"value\":0.6},\"text_color\":{\"type\":\"value\",\"value\":\"orange\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1126\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"angle\":{\"type\":\"value\",\"value\":0.6},\"text_color\":{\"type\":\"value\",\"value\":\"orange\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p1127\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"angle\":{\"type\":\"value\",\"value\":0.6},\"text_color\":{\"type\":\"value\",\"value\":\"orange\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1009\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1034\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1035\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1036\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1037\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1038\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1039\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1040\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1027\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1028\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1029\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1030\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1020\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1021\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1022\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1023\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1026\",\"attributes\":{\"axis\":{\"id\":\"p1020\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1033\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1027\"}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p1076\",\"attributes\":{\"level\":\"underlay\",\"location\":3.3819761988413224,\"dimension\":\"height\",\"line_dash\":[6]}},{\"type\":\"object\",\"name\":\"Arrow\",\"id\":\"p1096\",\"attributes\":{\"source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1098\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1099\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1100\"},\"data\":{\"type\":\"map\"}}},\"x_start\":{\"type\":\"value\",\"value\":3.25},\"y_start\":{\"type\":\"value\",\"value\":12},\"x_end\":{\"type\":\"value\",\"value\":0.1},\"y_end\":{\"type\":\"value\",\"value\":12},\"end\":{\"type\":\"object\",\"name\":\"VeeHead\",\"id\":\"p1095\",\"attributes\":{\"size\":{\"type\":\"value\",\"value\":15},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"fill_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":4}}},{\"type\":\"object\",\"name\":\"Arrow\",\"id\":\"p1102\",\"attributes\":{\"source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1104\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1105\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1106\"},\"data\":{\"type\":\"map\"}}},\"x_start\":{\"type\":\"value\",\"value\":3.5},\"y_start\":{\"type\":\"value\",\"value\":12},\"x_end\":{\"type\":\"value\",\"value\":6.75},\"y_end\":{\"type\":\"value\",\"value\":12},\"end\":{\"type\":\"object\",\"name\":\"VeeHead\",\"id\":\"p1101\",\"attributes\":{\"size\":{\"type\":\"value\",\"value\":15},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"fill_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":4}}},{\"type\":\"object\",\"name\":\"Arrow\",\"id\":\"p1108\",\"attributes\":{\"source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1110\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1111\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1112\"},\"data\":{\"type\":\"map\"}}},\"x_start\":{\"type\":\"value\",\"value\":20},\"y_start\":{\"type\":\"value\",\"value\":12},\"x_end\":{\"type\":\"value\",\"value\":13},\"y_end\":{\"type\":\"value\",\"value\":12},\"end\":{\"type\":\"object\",\"name\":\"VeeHead\",\"id\":\"p1107\",\"attributes\":{\"size\":{\"type\":\"value\",\"value\":15},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"fill_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":4}}}],\"frame_width\":375,\"frame_height\":275}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"c3bfb5ea-40b4-4a42-9ccb-2c75a0ccd5fc\",\"roots\":{\"p1002\":\"634c5eec-46d0-41f8-aef4-5d407e65d82c\"},\"root_ids\":[\"p1002\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" } ], "source": [ "# Parameters\n", "beta = 10\n", "gamma = 1\n", "k = 4\n", "n = 4\n", "\n", "# Theroetical curves\n", "x = np.linspace(0, 20, 400)\n", "prod = beta * (x / k) ** n / (1 + (x / k) ** n)\n", "removal = gamma * x\n", "\n", "# Fixed points\n", "fp_rhs = lambda x: beta / gamma * (x / k) ** n / (1 + (x / k) ** n)\n", "fixed_points = [\n", " 0,\n", " float(scipy.optimize.fixed_point(fp_rhs, 3)),\n", " float(scipy.optimize.fixed_point(fp_rhs, 5)),\n", "]\n", "\n", "# Build plot\n", "p = bokeh.plotting.figure(\n", " frame_height=275,\n", " frame_width=375,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"production or removal rate\",\n", " title=f\"β = {beta}, γ = {gamma} , k = {k}, n = {n}\",\n", " x_range=[-1, 20],\n", ")\n", "\n", "# Plot production and removal rates\n", "p.line(x, prod, line_width=2, color=\"#1f77b4\")\n", "p.line(x, removal, line_width=2, color=\"orange\")\n", "\n", "# Plot fixed points\n", "for i, fp in enumerate(fixed_points):\n", " if i % 2 :\n", " p.add_layout(\n", " bokeh.models.Span(\n", " location=fp,\n", " level=\"underlay\",\n", " dimension=\"height\",\n", " line_color=\"black\",\n", " line_dash=\"dashed\",\n", " )\n", " )\n", " fill_color = \"white\"\n", " else:\n", " fill_color = \"black\"\n", "\n", " p.circle(\n", " [fp], [gamma * fp], color=\"black\", size=10, line_width=2, fill_color=fill_color,\n", " )\n", "\n", "# Annotate\n", "p.add_layout(\n", " bokeh.models.Arrow(\n", " end=bokeh.models.VeeHead(size=15, fill_color=\"gray\", line_color=\"gray\"),\n", " line_width=4,\n", " x_start=3.25,\n", " y_start=12,\n", " x_end=0.1,\n", " y_end=12,\n", " line_color=\"gray\",\n", " )\n", ")\n", "p.add_layout(\n", " bokeh.models.Arrow(\n", " end=bokeh.models.VeeHead(size=15, fill_color=\"gray\", line_color=\"gray\"),\n", " line_width=4,\n", " x_start=3.5,\n", " y_start=12,\n", " x_end=6.75,\n", " y_end=12,\n", " line_color=\"gray\",\n", " )\n", ")\n", "p.add_layout(\n", " bokeh.models.Arrow(\n", " end=bokeh.models.VeeHead(size=15, fill_color=\"gray\", line_color=\"gray\"),\n", " line_width=4,\n", " x_start=20,\n", " y_start=12,\n", " x_end=13,\n", " y_end=12,\n", " line_color=\"gray\",\n", " )\n", ")\n", "p.text(\n", " x=[14],\n", " y=[9.933],\n", " text=[\"production rate\"],\n", " text_color=\"#1f77b4\",\n", " text_font_size=\"10pt\",\n", " text_align=\"left\",\n", " text_baseline=\"top\",\n", ")\n", "p.text(\n", " x=[14],\n", " y=[14],\n", " text=[\"removal rate\"],\n", " text_color=\"orange\",\n", " text_font_size=\"10pt\",\n", " text_align=\"left\",\n", " angle=0.6,\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The value of $\\mathrm{d}x/\\mathrm{d}t$ at a particular value of $x$ is determined by the difference between the production rate and the degradation rate for that $x$ value. Whenever the production rate is equal to the degradation rate, the time derivative vanishes ($\\mathrm{d}x/\\mathrm{d}t = 0$), and we have a **fixed point**. \n", "\n", "We can see in the plot above that, for the parameters that were chosen here, there are three fixed points corresponding to the three intersections between the production rate function and the removal rate function. This means that there are three possible values of $x$ that give steady states. How do we know which fixed point the system will move toward?\n", "\n", "We can answer this question by determining the **stability** of each fixed point. Notice that the above graph, in addition to telling us the location of the fixed points, also tells us the direction that the system will move at any given value of $x$. If, at that value, the production rate is higher than the degradation rate, then $\\mathrm{d}x/\\mathrm{d}t > 0$ so $x$ will increase. Correspondingly, if the degradation rate is higher than the production rate at a particular value of $x$, then $\\mathrm{d}x/\\mathrm{d}t < 0$ and $x$ will decrease. We have marked this information in the above plot with horizontal arrows indicating the direction that the system when $x$ lies within different ranges.\n", "\n", "Looking at these arrows, we see that the system moves towards some fixed points and away from others. When a system near a fixed point tends to move towards that fixed point, from any direction, then we call that fixed point **stable**. Otherwise, it is called an **unstable** fixed point. Unless this system's initial condition places it exactly at the unstable fixed point, as the system evolves over time it will converge to one of the two stable fixed points. Which fixed point it converges to is determined by the initial value of $x$; if the system starts below the unstable fixed point (to the left of the dashed line) then it will converge to the lower stable fixed point; if it starts above the unstable fixed point it will converge to the higher stable fixed point. In such a way, each stable fixed point has a **basin of attraction**, a set of values of $x$ for which the system will converge toward the fixed point. In the above plot, the basin of attraction for the higher fixed point is all $x$-values to the right of the dashed line, and that for the lower fixed point is all $x$-values to the left of the dashed line (including, of course, only non-negative $x$).\n", "\n", "Since this system has two stable fixed points, we can describe it as **bistable**. As long as noise or other perturbations are not too strong, the cell can happily remain at either a low or high value of x. Bistability is a special case of the more general phenomenon of **multistability**, which is one of the most important properties in biology, underlying the ability of a single genome to produce a vast array of distinct cell types in a multicellular organism. (We will discuss a larger multistable circuit later in the course.) \n", "\n", "This simple analysis shows us that a single positive autoregulatory gene can generate bistability! However, positive feedback by itself _is not enough_. Bistabiity also requires an **ultrasensitive** response to $x$. (In the context of the Hill function, ultrasensitivity can be defined as $n>1$). If we reduce the Hill coefficient to 1, keeping other parameters the same, you can see that we now have only a single stable fixed point (and one unstable fixed point at $x=0$)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"f63881fd-b432-4dd0-bc16-f9eef66fab69\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1489\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1499\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1491\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1503\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1505\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1492\",\"attributes\":{\"text\":\"\\u03b2 = 10, \\u03b3 = 1 , k = 4, n = 1\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1542\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1536\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1537\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1538\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1543\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1544\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1539\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1540\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1541\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1551\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1545\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1546\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1547\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1552\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1553\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1548\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1549\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1550\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1560\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1554\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1555\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1556\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1561\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1562\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1557\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1558\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1559\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1569\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1563\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1564\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1565\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[5.999999999999999]],[\"y\",[5.999999999999999]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1570\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1571\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1566\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1567\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1568\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1496\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1521\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1522\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1523\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1524\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1525\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1526\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1527\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1514\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1515\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1516\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1517\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1507\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1508\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1509\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1510\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1513\",\"attributes\":{\"axis\":{\"id\":\"p1507\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1520\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1514\"}}}],\"frame_width\":375,\"frame_height\":275}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"f63881fd-b432-4dd0-bc16-f9eef66fab69\",\"roots\":{\"p1489\":\"a007afd7-d90e-449c-80a8-cf4bb8a93010\"},\"root_ids\":[\"p1489\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1489" } }, "output_type": "display_data" } ], "source": [ "# Reduce n to 1\n", "n = 1\n", "\n", "# Recompute production curve\n", "prod = beta * (x/k) ** n / (1 + (x/k) ** n)\n", "\n", "# Fixed points\n", "fp_rhs = lambda x: beta / gamma * (x/k) ** n / (1 + (x/k) ** n)\n", "fixed_points = [0, float(scipy.optimize.fixed_point(fp_rhs, 3))]\n", "\n", "# Build plot\n", "p = bokeh.plotting.figure(\n", " frame_height=275,\n", " frame_width=375,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"production or removal rate\",\n", " title=f\"β = {beta}, γ = {gamma} , k = {k}, n = {n}\",\n", " x_range=[-1, 20],\n", ")\n", "\n", "# Plot production and removal rates\n", "p.line(x, prod, line_width=2, color=\"#1f77b4\")\n", "p.line(x, removal, line_width=2, color=\"orange\")\n", "\n", "# Plot fixed points\n", "for i, fp in enumerate(fixed_points):\n", " fill_color = \"black\" if i % 2 else \"white\"\n", " p.circle(\n", " [fp], [gamma * fp], color=\"black\", size=10, line_width=2, fill_color=fill_color,\n", " )\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In an end-of-chapter problem, you can prove that no matter how we change the other parameters in this model, the system will never be able to obtain bistability unless it has ultrasensitivity ($n>1$). \n", "\n", "Nevertheless, ultrasensitivity does *not* guarantee bistability in this system. It also requires tuning of the system's other parameters relative to one another. We can explore this relationship between the parameter values in the interactive plot below." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"f64a61d2-77ea-4997-ab0f-db3c21dc53d9\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1907\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1812\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1821\",\"attributes\":{\"start\":-1,\"end\":16}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1823\",\"attributes\":{\"start\":-1,\"end\":16}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1825\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1827\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1815\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1867\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1858\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1859\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1860\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"fp\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"fd\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1868\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1869\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1864\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fp\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1865\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fp\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1866\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fp\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1876\",\"attributes\":{\"data_source\":{\"id\":\"p1858\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1877\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1878\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1873\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fd\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1874\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fd\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1875\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"fd\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1891\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1879\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1880\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1881\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0,9.97546]],[\"y\",[0,9.97546]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1892\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1893\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1888\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1889\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1890\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1900\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1882\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1883\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1884\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[2.37605]],[\"y\",[2.37605]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1901\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1902\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1897\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1898\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1899\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1818\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1843\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1844\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1845\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1846\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1847\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1848\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1849\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1836\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1837\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1838\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1839\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1829\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1830\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1831\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1832\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1835\",\"attributes\":{\"axis\":{\"id\":\"p1829\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1842\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1836\"}}}],\"frame_width\":300,\"frame_height\":200}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1904\",\"attributes\":{\"width\":30}},{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p1906\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1905\",\"attributes\":{\"height\":20}},{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1808\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1903\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"cds\",{\"id\":\"p1858\"}],[\"cds_fp_stable\",{\"id\":\"p1879\"}],[\"cds_fp_unstable\",{\"id\":\"p1882\"}],[\"gamma_slider\",{\"id\":\"p1808\"}],[\"beta_slider\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1809\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p1903\"}]]]},\"width\":100,\"title\":\"\\u03b2\",\"start\":0.1,\"end\":15,\"value\":10,\"step\":0.1}}],[\"k_slider\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1810\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p1903\"}]]]},\"width\":100,\"title\":\"k\",\"start\":1,\"end\":5,\"value\":3,\"step\":0.1}}],[\"n_slider\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1811\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p1903\"}]]]},\"width\":100,\"title\":\"n\",\"start\":0.1,\"end\":10,\"value\":5,\"step\":0.1}}]]},\"code\":\"\\n/** \\n * Find a root of a scalar function f(x) using Newton's method.\\n * @param {float} x0 - guess for root location\\n * @param {function} f - function we are funding the root of with call signature f(x, ...args)\\n * @param {function} df - derivative of function we are funding the root of with call signature df(x, ...args)\\n * @param {array} args - arguments to pass to f and df\\n * @param {float} tol - tolerance for convergence\\n * @param {int} maxIter - maximum of Newton steps to take\\n * @param {float} epsilon - small number. Abort if derivative is smaller than this.\\n */\\nfunction newtonSolve(x0, f, df, args=[], tol=1e-8, maxIter=200, epsilon=1e-14) {\\n\\tlet x = Infinity;\\n\\tlet solved = false;\\n\\n for (let i = 0; i < maxIter; i++) {\\n let y = f(x0, ...args);\\n let yprime = df(x0, ...args);\\n\\n if (Math.abs(yprime) < epsilon) {\\n \\tbreak;\\n\\t\\t}\\n \\n x = x0 - y / yprime;\\n\\n if (Math.abs(x - x0) <= tol) {\\n \\tsolved = true;\\n \\tbreak;\\n }\\n\\n x0 = x;\\n }\\n\\n if (solved) return x;\\n else return null;\\n}\\n\\n\\n/** \\n * Find a root of a scalar function f(x) using Brent's method.\\n * @param {function} f - function we are funding the root of with call signature f(x, ...args)\\n * @param {float} lower - lower bound for root\\n * @param {float} upper - upper bound for root\\n * @param {function} df - derivative of function we are funding the root of with call signature df(x, ...args)\\n * @param {float} tol - tolerance for convergence\\n * @param {int} maxIter - maximum of Newton steps to take\\n */\\nfunction brentSolve(f, lower, upper, args=[], tol=1e-8, maxIter=1000) {\\n\\tlet a = lower;\\n\\tlet b = upper;\\n let fa = f(a, ...args);\\n let fb = f(b, ...args);\\n\\n // We may have already guessed the solution\\n if (Math.abs(fa) < tol) return a;\\n if (Math.abs(fb) < tol) return b;\\n\\n // Solution is not bracketed\\n if (fa * fb >= 0) return null;\\n\\n // c is where we are closing in on the root\\n let c = a;\\n let fc = fa;\\n\\n \\tlet iter = 0;\\n while (iter++ < maxIter) {\\n \\tlet prevStep = b - a;\\n\\n\\t // Make sure a has the larger function value\\n\\t if (Math.abs(fc) < Math.abs(fb)) { \\n\\t \\t[a, b, c] = [b, c, b];\\n\\t \\t[fa, fb, fc] = [fb, fc, fb];\\n\\t }\\n\\n\\t // Next step toward root\\n\\t let newStep = (c - b) / 2.0;\\n\\n\\t // Adjusted tolerance\\n\\t let tolAdj = 1e-15 * Math.abs(b) + tol / 2;\\n\\n\\t // Found a root!\\n \\tif (Math.abs(newStep) <= tolAdj || fb === 0 ) {\\n \\t\\treturn b;\\n \\t}\\n\\n\\t // Try interpolation\\n\\t if (Math.abs(prevStep) > tolAdj && Math.abs(fa) > Math.abs(fb)) {\\n\\t \\tlet p;\\n\\t \\tlet q;\\n\\t \\tlet t1;\\n\\t \\tlet t2;\\n\\t \\tlet cb = c - b;\\n\\t \\tif (a === c) { // a and c coincide, so try linear interpolation\\n\\t \\t\\tt1 = fb / fa;\\n\\t \\t\\tp = cb * t1;\\n\\t \\t\\tq = 1.0 - t1;\\n\\t \\t}\\n\\t \\telse { // Use inverse quadratic interpolation\\n\\t \\t\\tq = fa / fc;\\n\\t \\t\\tt1 = fb / fc;\\n\\t \\t\\tt2 = fb / fa;\\n\\t \\t\\tp = t2 * (cb * q * (q - t1) - (b - a) * (t1 - 1.0));\\n\\t \\t\\tq = (q - 1.0) * (t1 - 1.0) * (t2 - 1.0);\\n\\t \\t}\\n\\n\\t \\t// Fix the signs on p and q\\n\\t \\tif (p > 0) q = -q;\\n\\t \\telse p = -p;\\n\\n\\t \\t// Accept the step if it's not too large and falls in interval\\n\\t \\tif (p < (0.75 * cb * q - Math.abs(tolAdj * q) / 2.0) \\n\\t \\t\\t&& p < Math.abs(prevStep * q / 2.0)) { \\n\\t\\t newStep = p / q;\\n\\t \\t}\\n\\t }\\n\\n\\t // If we can't do interpolation, do bisection\\n\\t // First make sure step is not smaller than the tolerance\\n if (Math.abs(newStep) < tolAdj) {\\n\\t newStep = (newStep > 0) ? tolAdj : -tolAdj;\\n }\\n \\n // Swap with the previous approximation\\n a = b;\\n fa = fb;\\n\\n // Take the step\\n b += newStep;\\n fb = f(b, ...args);\\n \\n \\t// Adjust c so that the sign of f(c) is opposite f(b)\\n if ((fb > 0 && fc > 0) || (fb < 0 && fc < 0)) {\\n c = a; \\n fc = fa;\\n }\\n }\\n\\n // If we did not converge, return null\\n return null;\\n}\\n\\n\\n\\nfunction f(x, beta, n) {\\n /* Derivative of function for root finding for fixed points */\\n return Math.pow(x, n) - beta * Math.pow(x, n - 1) + 1.0;\\n}\\n\\n\\nfunction df(x, beta, n) {\\n /* Function for root finding for fixed points */\\n return n * Math.pow(x, n - 1) - (n - 1) * beta * Math.pow(x, n - 2);\\n}\\n\\n\\nfunction fixedPoints(beta, n, epsilon) {\\n /* Find fixed points for dimensionless autorepression system. */\\n let xMin = beta * (n - 1.0) / n;\\n let fMin = f(xMin, beta, n)\\n\\n if (Math.abs(fMin) < epsilon) return [xMin];\\n else if (fMin > 0.0) return [];\\n else if (Math.abs(n - 1) < 1e-7) {\\n return[beta - 1.0];\\n }\\n else if (n < 1) {\\n return [newtonSolve(1e-6, f, df, [beta, n])];\\n }\\n else if (Math.abs(n - 2) < 1e-7) {\\n let sqrt_discr = Math.sqrt(Math.pow(beta, 2) - 4.0);\\n return [(beta - sqrt_discr) / 2.0, (beta + sqrt_discr) / 2.0];\\n }\\n else {\\n let x1;\\n let x2;\\n if (n < 2) x1 = newtonSolve(1e-6, f, df, [beta, n]);\\n else {\\n let xInfl = beta * (n - 2.0) / n;\\n x1 = newtonSolve(xInfl, f, df, [beta, n]);\\n }\\n x2 = newtonSolve(beta, f, df, [beta, n]);\\n\\n return [x1, x2];\\n }\\n}\\n\\n\\nfunction fixedPointsDimensional(beta, gamma, k, n, tol, maxiters, epsilon) {\\n /* Find fixed points for dimensional autorepression system. */\\n let fps = fixedPoints(beta / gamma / k, n, epsilon);\\n\\n let x = [];\\n let y = [];\\n\\n if (fps.length > 0) {\\n for (let i = 0; i < fps.length; i++) {\\n x.push(k * fps[i]);\\n y.push(beta * Math.pow(fps[i], n) / (1 + Math.pow(fps[i], n)));\\n }\\n }\\n return [x, y];\\n}\\n\\n\\nfunction callback() {\\n\\t// Extract data from source and sliders\\n\\tlet x = cds.data['x'];\\n\\tlet fp = cds.data['fp'];\\n\\tlet fd = cds.data['fd'];\\n\\tlet gamma = gamma_slider.value;\\n\\tlet beta = beta_slider.value;\\n\\tlet k = k_slider.value;\\n\\tlet n = n_slider.value;\\n\\n\\t// Update plot\\n\\tfor (let i = 0; i < x.length; i++) {\\n\\t fp[i] = beta * Math.pow(x[i] / k, n) / (1 + Math.pow(x[i] / k, n));\\n\\t fd[i] = gamma * x[i];\\n\\t}\\n\\n\\t// Compute fixed points\\n\\tlet tol = 1e-8;\\n\\tlet maxiters = 200;\\n\\tlet epsilon = 1e-14;\\n\\tlet [xFixedPoints, yFixedPoints] = fixedPointsDimensional(\\n\\t beta, gamma, k, n, tol, maxiters, epsilon\\n\\t);\\n\\n\\t// Update data sources\\n\\tif (xFixedPoints.length == 0) {\\n\\t cds_fp_stable.data['x'] = [0];\\n\\t cds_fp_stable.data['y'] = [0];\\n\\t cds_fp_unstable.data['x'] = [];\\n\\t cds_fp_unstable.data['y'] = [];\\n\\t}\\n\\telse if (xFixedPoints.length == 1) {\\n\\t if (n - 1 < 1+1e-7) {\\n\\t cds_fp_stable.data['x'] = xFixedPoints;\\n\\t cds_fp_stable.data['y'] = yFixedPoints;\\n\\t cds_fp_unstable.data['x'] = [0];\\n\\t cds_fp_unstable.data['y'] = [0];\\n\\t }\\n\\t else {\\n\\t cds_fp_stable.data['x'] = [0];\\n\\t cds_fp_stable.data['y'] = [0];\\n\\t cds_fp_unstable.data['x'] = xFixedPoints;\\n\\t cds_fp_unstable.data['y'] = yFixedPoints;\\n\\t }\\n\\n\\t}\\n\\telse {\\n\\t cds_fp_stable.data['x'] = [0, xFixedPoints[1]];\\n\\t cds_fp_stable.data['y'] = [0, yFixedPoints[1]];\\n\\t cds_fp_unstable.data['x'] = [xFixedPoints[0]];\\n\\t cds_fp_unstable.data['y'] = [yFixedPoints[0]];\\n\\t}\\n\\n\\t// Emit changes\\n\\tcds.change.emit();\\n\\tcds_fp_stable.change.emit();\\n\\tcds_fp_unstable.change.emit();\\n}\\n\\ncallback()\"}}]]]},\"width\":100,\"title\":\"\\u03b3\",\"start\":0.1,\"end\":4,\"value\":1,\"step\":0.1}},{\"id\":\"p1809\"},{\"id\":\"p1810\"},{\"id\":\"p1811\"}]}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"f64a61d2-77ea-4997-ab0f-db3c21dc53d9\",\"roots\":{\"p1907\":\"18399aaf-a17d-4d0c-a6cd-157870a5d2e6\"},\"root_ids\":[\"p1907\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1907" } }, "output_type": "display_data" } ], "source": [ "bokeh.io.show(biocircuits.jsplots.autoactivator_fixed_points())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As $\\gamma$ increases, the upper two fixed points get closer and closer together, eventually disappearing as the system becomes monostable, always converging to the single value of $x=0$, and therefore unable to activate itself. The range of parameter values that is near this disappearing point is important because a very small change in a parameter can lead to a very drastic change in the behavior of the system. Such a phenomenon is called a **bifurcation**. In this case, we can see that the system transitions between monostability and bistability, and within a critical region of parameter space near this bifurcation, even a miniscule change in the value of a parameter is enough to push the system over the edge into one regime or the other.\n", "\n", "When we design a biological circuit, it is important to be aware of bifurcations. Slight deviations in a parameter value that would have only modest effects on system performance away from a bifurcation point can generate much more drastic changes if they cause the system to bifurcate from one regime to another.\n", "\n", "But how can you know whether a given parametrization of the system is close to a bifurcation value or not? A simple way to find out for the positive autoregulation circuit is to determine the number of fixed points in the system and identify the boundary in parameter space between regimes that exhibit one fixed point and those that have three fixed points. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analytically determining the number of fixed points\n", "\n", "In this section, we will illustrate how we can mathematically manipulate the ODE for the positive autoregulation system to analytically determine the number of fixed points for a given parametrization. While the approach here is not universal—it cannot be applied directly to any system to analyze its behavior—it illustrates a useful style of reasoning that will help develop intuition for other circuits we encounter." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Using nondimensionalization to simplify the system\n", "\n", "Recall our differential equation for the dynamics of an autoactivator:\n", "\n", "\\begin{align}\n", "\\frac{\\mathrm{d}x}{\\mathrm{d}t} = \\beta\\, \\frac{(x/k)^n} {1 + (x/k)^n} - \\gamma x,\n", "\\end{align}\n", "\n", "Here we can identify two variables, $x$ and $t$, and four parameters, $\\beta$, $\\gamma$, $k$, and $n$. Understanding how the circuit behaves as four parameters are varied is challenging. However, the dynamics do not depend on all four parameters _independently_. In a simpler case, we saw that for unregulated expression, the steady state protein concentration is given by the ratio $\\beta/\\gamma$. It is the _ratio_ that matters, not the individual values of $\\beta$ and $\\gamma$. \n", "\n", "The procedure of **nondimensionalization** allows us to reduce the number of independent parameters and still be able to explore the full dynamics. The key idea is that each variable or parameter has some **dimension**. For example, $x$ has dimension of concentration, or number of particles per cubic length, written as\n", "\n", "\\begin{align}\n", "x = \\left[\\frac{N}{L^3}\\right].\n", "\\end{align}\n", "\n", "Similarly, the parameter $\\gamma$ has dimension of inverse time, or $\\gamma = [T^{-1}]$. It is clear that each term in the dynamical equation has dimension of $N/L^3 T$. In general, every term in an equation must have the same dimension; trying to add, for example, a meter to a kilogram is nonsensical.\n", "\n", "The nondimensionalization procedure involves rewriting the equations such that every term is **dimensionless**, which means that every term has dimension of unity. This is beneficial for several reasons.\n", "\n", "1. It reduces the number of parameters you need to consider. Only dimensionless ratios/products of parameters are considered.\n", "2. It allows comparison of the relative magnitudes of terms in an equation.\n", "3. It provides intuition by identifying which ratios and products of parameters control the dynamics.\n", "\n", "We detail procedures of nondimensionalization generally and applied to the autoactivation system and the synthetic toggle system at the end of this chapter in [Technical Appendix 3a](../technical_appendices/03a_nondimensionalization.ipynb). The result is\n", "\n", "\\begin{align}\n", "\\frac{\\mathrm{d}x}{\\mathrm{d}t} = \\beta\\,\\frac{x^{n}}{1 + x^n} - x.\n", "\\end{align}\n", "\n", "where we have redefined variables\n", "\n", "\\begin{align}\n", "&t \\leftarrow \\gamma t,\\\\[1em]\n", "&x \\leftarrow x/k,\\\\[1em]\n", "&\\beta \\leftarrow \\beta/\\gamma k.\n", "\\end{align}\n", "\n", "The nondimensionalization procedure provides insight about the important ratios of parameters. Here, there are two dimensionless parameters: $\\beta$ and $n$. $n$ is a measure of the ultrasensitivity of the activation. The non-dimensionalized $\\beta$ is the ratio of the gene's unregulated steady state, expressed in dimensional parameters, $\\beta/\\gamma$, to the level of gene product necessary to activate itself, $k$.\n", "\n", "Another way to look at this result is to say that we have chosen meaningful units of time and concentration. We are effectively measuring time in units of the key timescale in the system—the protein lifetime $\\gamma^{-1}$—and protein concentrations in terms of the only concentration scale in the problem, the amount required for half-maximal repression, $k$. \n", "\n", "Nondimensionalization is often the first step in analyzing a model for circuit behavior, We will apply it again and again throughout this book." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analytical methods for exploring steady states\n", "\n", "From our analysis above, we found that the system has the following properties.\n", "\n", "1. The system always has a fixed point at $x = 0$.\n", "2. The system has either zero, one, or two fixed points with $x > 0$.\n", "3. If the system has zero fixed points with $x > 0$, it is monostable at $x = 0$.\n", "4. If the system has two fixed points with $x > 0$, the greater of the two is stable, as is the fixed point at zero, with the middle fixed point being unstable. This is the **bistable regime.**\n", "\n", "\n", "If we can find the number of fixed points, we can determine if the system is monostable or bistable. Fortunately, now that we have expressed the system's dynamics using only two parameters, it is easier to analyze.\n", "\n", "Finding the fixed points amounts to finding the roots of the equation\n", "\n", "\\begin{align}\n", "f(x) = \\beta \\frac{x^n}{1 + x^n} - x = 0,\n", "\\end{align}\n", "\n", "where $f(x)$ is the right hand side of the dimensionless ODE defined above.\n", "\n", "Since we know that $x=0$ is always a fixed point, for the remainder of our analysis, we will therefore assume that $x>0$ as we try to determine if there are any nonzero fixed points. (We ignore fixed points where $x < 0$, since a negative concentration is unphysical.)\n", "\n", "With these assumptions, and some basic algebraic operations, we can rewrite the equation $f(x) = 0$ as\n", "\n", "\\begin{align}\n", "g(x) = x^n - \\beta x^{n-1} + 1 = 0,\n", "\\end{align}\n", "\n", "were we have defined the function $g(x)$ for convenience of reference. We are trying to find positive values of $x$ for which $g(x) = 0$. To find the roots, we need to consider different values of $n$ separately.\n", "\n", "**The n > 1 regime**\n", "\n", "From looking at the form of the $g(x)$ expression, as long as $n > 1$, we can see that in the limit as $x$ approaches $0$, $g(x)$ approaches a value of $1$. Meanwhile, as $x$ gets large, we see that the $x^n$ term will dominate the expression and $g(x)$ will approach infinity. Further, for $n > 1$, we can show that a unique minimum of $g(x)$ exists. We do this by recalling the conditions for a minimum: The the first derivative of $g(x)$ is zero and the second derivative of $g(x)$ is positive.\n", "\n", "\\begin{align}\n", "&\\frac{\\mathrm{d}g}{\\mathrm{d}x} = nx^{n-1} - \\beta(n-1)x^{n-2} = 0,\\\\[1em]\n", "&\\frac{\\mathrm{d}^2g}{\\mathrm{d}x^2} = n(n-1)x^{n-2} - \\beta(n-1)(n-2)x^{n-3} > 0.\n", "\\end{align}\n", "\n", "For $n > 1$, this is satisfied only if\n", "\n", "\\begin{align}\n", "x_{\\mathrm{min}} = \\beta \\,\\frac{n-1}{n}.\n", "\\end{align}\n", "\n", "So, the function $g(x)$ decreases from unity at $x = 0$, hits a minimum, and then grows to infinity with increasing $x$.\n", "\n", "If $g(x_{\\mathrm{min}}) > 0$, then we know that $g(x)$ never dips low enough to satisfy $g(x) = 0$, and $x=0$ is our only fixed point. On the other hand, if $g(x_{\\mathrm{min}}) < 0$, then we know that there must be at least two nonzero fixed points, since $g(x)$ had to cross the $x$-axis to get from $1$ to $g(x_{\\mathrm{min}})$ and must cross it again to get from $g(x_{\\mathrm{min}})$ to $+\\infty$. \n", "\n", "To make this more clear, in the plot below, we visualize the known limiting behavior at the edges using dark lines and potential behaviors of $g(x)$ in the interior using faint lines. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"8e90700f-4fc1-41b1-aa1e-f5d04ae4eaac\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2165\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p2174\",\"attributes\":{\"start\":0.0001,\"end\":10.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p2176\",\"attributes\":{\"start\":-1,\"end\":15}},\"x_scale\":{\"type\":\"object\",\"name\":\"LogScale\",\"id\":\"p2178\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2180\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2168\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2217\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2211\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2212\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2213\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[1e-06,100.0]],[\"y\",[0,0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2218\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2219\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2214\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2215\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2216\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2226\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2220\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2221\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2222\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2227\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2228\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2223\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2224\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2225\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2235\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2229\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2230\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2231\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[401],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[401],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2236\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2237\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2232\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2233\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2234\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#6baed6\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2244\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2238\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2239\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2240\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"LUMc6+I2Gj82qvznzNQaP2JGpyhudhs/pS55D90bHD9F2qaFMMUcP3pnaP5/ch0/IP84euMjHj8CySmKc9keP7vlSFNJkx8/53MOSb8oID9KoxrPFoogP94k6La47SA/d3fLzLJTIT+4pjcwE7whP8P/slXoJiI/SY7XCEGUIj+qqF9uLAQjP+nTPga6diM/+UnHrfnrIz85btyh+2MkPxF+MoHQ3iQ/ts2bTolcJT9G4mNzN90lP+a8uMHsYCY/rKwid7vnJj9U/go/tnEnP5fjUTXw/ic//u3z6HyPKD93er9ecCMpP2VuGhTfuik/2afYAd5VKj/XhSOfgvQqP9PvcuTilis/VEWYThU9LD/dodvhMOcsP8/jKy1NlS0/heZhTYJHLj9JZJfw6P0uP7v1kVmauC8/D1ShMdg7MD99Uy3Cop0wP6O7emm6ATE/PaMsBC1oMT9p6WbCCNExPw06xSlcPDI/dehdFzaqMj9/59DBpRozPxkoY7u6jTM/0Kgm9IQDND8vgy+8FHw0P8JE1sV69zQ/A+QHKMh1NT9po6NgDvc1PxU251ZfezY/NXzpXc0CNz83LyQ3a403P1/XDBVMGzg/CGe9nYOsOD8N2qztJUE5P2g5eJpH2Tk/7GW8tf10Oj+IDwHQXRQ7P8w/tft9tzs/aeI90HRePD8xtxZtWQk9P14dBn1DuD0/7ihkOUtrPj+bdnVtiSI/P5412nkX3j8/O/AIrAdPQD++EArPRbFAP6Wx/8DTFUE/VMfubr98QT8Lvr8ZF+ZBP/rQN1jpUUI/TkX+GEXAQj//0K2kOTFDP+h28p/WpEM/zCK0DSwbRD9JUk5RSpREP5IZ1TBCEEU/8tNn1ySPRT+00pHXAxFGP+1euS3xlUY/AWSdQv8dRz9vG+LtQKlHP3oUrXjJN0g/yPNQoKzJSD/aSQmZ/l5JP4/hxhDU90k/QOkMMkKUSj/LXN+mXjRLP8QXw5s/2Es/e/rPwvt/TD/8jtVWqitNP7+ckh5j200/+R0AcD6PTj+RCrAzVUdPPzo4IHTgAVA//Knx0k1iUD8=\"},\"shape\":[100],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ZV67csX+7z8u9QQMvv7vPzV8uni2/u8/GX3Pt67+7z8wMTHIpv7vP4dbxqie/u8/BSJvWJb+7z+e5QTWjf7vP5QZWiCF/u8/0Rk6Nnz+7z81AGkWc/7vP/B4o79p/u8/0pWeMGD+7z+NoAdoVv7vP+frg2RM/u8/z6OwJEL+7z9XnCKnN/7vP4QfZuos/u8/8rn+7CH+7z9FBmetFv7vP1h3ECoL/u8/NCFjYf/97z+xgL1R8/3vP8xBdPnm/e8/ogTSVtr97z8GIRdozf3vP6xoeSvA/e8/5ecjn7L97z/gpDbBpP3vP1xdxo+W/e8/3ULcCIj97z84tXUqef3vP5D7g/Jp/e8/nPvrXlr97z8+74VtSv3vP1wYHRw6/e8/8HJvaCn97z9EZS1QGP3vP1Bu+dAG/e8/MtJn6PT87z+qRP6T4vzvP52RM9HP/O8/h0Nvnbz87z/YRwn2qPzvPyyRSdiU/O8/SrdnQYD87z/wlIoua/zvP0rjx5xV/O8/EdMjiT/87z9Ho5DwKPzvP3U17s8R/O8/ap8JJPr77z9lupzp4fvvP5yvTR3J++8/EIKuu6/77z+dlTzBlfvvPzozYCp7++8/Uwps81/77z8ur5wYRPvvP0oWGJYn++8/pwztZwr77z/irBKK7PrvPxPRZ/jN+u8/V4Gyrq767z8CX5+ojvrvP0gMweFt+u8/ZpCPVUz67z8juGf/KfrvP51yitoG+u8/RSoc4uL57z/4GSQRvvnvPyWei2KY+e8/1IEd0XH57z+RR4VXSvnvPwVuTvAh+e8/RLDjlfj47z+aQY5CzvjvP8sEdfCi+O8/rr6bmXb47z/9Q+I3SfjvP0SiA8Ua+O8/00OVOuv37z+ZDgaSuvfvP7x9ncSI9+8/4LV6y1X37z/6k5OfIffvP4G2szns9u8/8IB7krX27z9xGV+iffbvP4NgpWFE9u8/i+JmyAn27z8iw4zOzfXvP/ihz2uQ9e8/Mnm2l1H17z8WdZVJEfXvP9rEjHjP9O8/fWSHG4z07z9u3zkpR/TvP+kLIZgA9O8/176AXrjz7z8=\"},\"shape\":[100],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2245\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2246\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2241\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2242\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2243\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2253\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2247\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2248\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2249\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"321SHzzZD0CGllh/uBIQQHe0OBsuORBAdm9xvf9fEEC5pTRCLocQQPYVw4e6rhBAIUxxbqXWEEDdmazY7/4QQOcaAKuaJxFAbcUZzKZQEUCWhs8kFXoRQDVrJKDmoxFA5tRNKxzOEUCKu7i1tvgRQGz7DjG3IxJADLA8kR5PEkC5m3XM7XoSQCecOtslpxJA/CtfuMfTEkCh8Q5h1AATQFNb09RMLhNAnkiZFTJcE0BtwbYnhYoTQMO68BFHuRNAO+mA3XjoE0CIoRuWGxgUQOzG9UkwSBRA98fKCbh4FECIqeLos6kUQFogGP0k2xRAC7neXgwNFUD3Dkkpaz8VQOgRD3pCchVAx1qUcZOlFUB7j+4yX9kVQAPW6+OmDRZADFcZrWtCFkAc0Mm5rncWQGg1HDhxrRZAlmMCWbTjFkB/4UdQeRoXQBqymFTBURdAujaIn42JF0DOIZht38EXQCh6P/63+hdAJ6/xkxg0GEDJvSV0Am4YQMhmXed2qBhACXYsOXfjGEByG0C4BB8ZQEtVZrYgWxlAbmyViMyXGUBPgvOGCdUZQB4x3gzZEhpANT7yeDxRGkDXXhMtNZAaQJoPdI7EzxpAkX6dBewPG0BciHf+rFAbQGLIUOgIkhtAU7zmNQHUG0AZ+21dlxYcQHt/mtjMWRxAoAaoJKOdHEB9gmLCG+IcQJWgLjY4Jx1AEWUSCPpsHUB02r3DYrMdQBLWk/hz+h1AlNGyOS9CHkCI2f0dlooeQHiRJUCq0x5AbE2xPm0dH0BTQQi84GcfQFLGel4Gsx9ATLZL0N/+H0Dj7txftyUgQDnChG9aTCBAOgZH8llzIEBj1FnFtpogQGGVBMhxwiBAm/Ok24vqIECH2bPjBRMhQAF8ysXgOyFAonCnaR1lIUBI0DO5vI4hQPVliKC/uCFA+enyDSfjIUDBSfvx8w0iQCn8aD8nOSJAqGJI68FkIkBNN/DsxJAiQL0HBz4xvSJAUb2I2gfqIkBvMszASRcjQDrViPH3RCNAyFfcbxNzI0DrbVBBnaEjQLyY4G2W0CNAAAAAAAAAJEA=\"},\"shape\":[100],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Mo/KqDDBJUCw4btsAz0mQPfrhYpuuyZA3E5zIX88J0DzBnGRQsAnQIrfSHzGRihAi9bhxhjQKEBujYaaR1wpQPvkMWZh6ylA7uDh33R9KkCC8vAFkRIrQP7HdSDFqitAhMGpwiBGLEBEKlbMs+QsQIdXSGuOhi1AVc7MHMErLkClkTGvXNQuQN+7T0NygC9ALEMOpwkYMECa8SDNqHEwQNpm36QfzTBAG7vHa3cqMUADuK6MuYkxQLIDnKDv6jFAanOqbyNOMkBDmuzxXrMyQMynVVCsGjNA4qum5RWEM0CMVGA/pu8zQMU7uR5oXTRAxtqYeWbNNECeOZd7rD81QKlxAYdFtDVAPBrjNT0rNkA8txRbn6Q2QI9BTwN4IDdATuJEdtOeN0CM+b43vh84QC2KwQhFozhA9CS06HQpOUAsbZAWW7I5QPBRFhIFPjpAchcGnYDMOkCTTGC82107QMHIq7kk8jtA5s9BJGqJPEB2eaDSuiM9QO94w+MlwT1ArmaDwLphPkBNqPsciQU/QFIY9/mgrD9A/sYxU4krQEAFM2Zgd4JAQB4Xbhwj20BAHctyKJU1QUA75LlP1pFBQH8ncYjv70FAVFR+9OlPQkCh2VLizrFCQHaIw82nFUNAdlfkYH57Q0BfSuh0XONDQAGSBRNMTURAtfhddVe5RED6r+sHiSdFQJiUcmnrl0VAh/51bIkKRkCQMjMYbn9GQACMoKmk9kZAL3VxlDhwR0DSRR+ENexHQPge91ynakhAbNwsPZrrSEA6NPN9Gm9JQCAdmbQ09UlAXpWss/V9SkDR4yKMaglLQLZtho6gl0tA2jsqTKUoTEDTSmOYhrxMQNjBx4lSU01A8Cx0exftTUAm11YO5IlOQI5igSrHKU9AwbuAANDMT0Dew10FhzlQQLeVa4dIjlBADcaRj7TkUEDz1AZO0zxRQDSazBqtllFAAp5wdkryUUCkENAKtE9SQOhy36vyrlJA+QB2WA8QU0C+8Rw7E3NTQCKd4qoH2FNALJwxLPY+VEDr9atx6KdUQMRsCl3oElVAAAAAAACAVUA=\"},\"shape\":[100],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2254\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2255\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2250\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2251\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2252\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#08519c\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2262\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2256\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2257\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2258\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.00013]],[\"y\",[1.2]],[\"text\",[\"g(x) \\u2192 1 as x \\u2192 0\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2263\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2264\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2259\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2260\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2261\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2271\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2265\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2266\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2267\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[3.0]],[\"y\",[14]],[\"text\",[\"g(x) \\u2192 \\u221e as x \\u2192 \\u221e\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2272\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2273\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2268\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2269\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2270\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#08519c\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2280\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2274\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2275\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2276\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[2.0]],[\"y\",[4]],[\"text\",[\"Does g(x) cross 0?\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2281\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2282\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2277\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#6baed6\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2278\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#6baed6\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2279\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"#6baed6\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"8pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2171\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p2196\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p2197\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p2198\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p2199\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2200\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p2201\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p2202\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2189\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2190\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2191\"},\"axis_label\":\"g(x)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2192\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LogAxis\",\"id\":\"p2182\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"LogTicker\",\"id\":\"p2183\",\"attributes\":{\"num_minor_ticks\":10,\"mantissas\":[1,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"LogTickFormatter\",\"id\":\"p2184\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2185\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2188\",\"attributes\":{\"axis\":{\"id\":\"p2182\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2195\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p2189\"}}}],\"frame_width\":275,\"frame_height\":275}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"8e90700f-4fc1-41b1-aa1e-f5d04ae4eaac\",\"roots\":{\"p2165\":\"e09034dc-c7cb-403e-be98-d921d74b23b8\"},\"root_ids\":[\"p2165\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p2165" } }, "output_type": "display_data" } ], "source": [ "def g(x, beta, n):\n", " return x ** n - beta * x ** (n - 1) + 1\n", "\n", "\n", "x0 = -3\n", "x1 = 0.6\n", "x_left = np.logspace(-4, x0, 100)\n", "x_right = np.logspace(x1, 1, 100)\n", "x_mid = np.logspace(x0, x1, 400)\n", "\n", "# Build plot\n", "p = bokeh.plotting.figure(\n", " frame_height=275,\n", " frame_width=275,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"g(x)\",\n", " x_range=[1e-4, 1e1],\n", " y_range=[-1, 15],\n", " x_axis_type=\"log\",\n", ")\n", "\n", "# Emphasize x axis\n", "p.line([1e-6, 1e2], [0, 0], line_width=1, color=\"black\")\n", "\n", "# Plot lines\n", "p.line(x_mid, g(x_mid, 1.5, 2), line_width=2, color=\"#6baed6\")\n", "p.line(\n", " np.append(x_mid, 7), g(np.append(x_mid, 7), 2.2, 2), line_width=2, color=\"#6baed6\",\n", ")\n", "p.line(x_left, g(x_left, 1.5, 2), line_width=2, color=\"#08519c\")\n", "p.line(x_right, g(x_right, 1.5, 2), line_width=2, color=\"#08519c\")\n", "\n", "# Add labels\n", "p.text(\n", " x=[1.3e-4],\n", " y=[1.2],\n", " text=[\"g(x) → 1 as x → 0\"],\n", " text_align=\"left\",\n", " text_baseline=\"bottom\",\n", " text_font_size='8pt',\n", " text_color=\"#08519c\"\n", ")\n", "\n", "p.text(\n", " x=[3e0],\n", " y=[14],\n", " text=[\"g(x) → ∞ as x → ∞\"],\n", " text_align=\"right\",\n", " text_baseline=\"bottom\",\n", " text_font_size='8pt',\n", " text_color=\"#08519c\"\n", ")\n", "\n", "p.text(\n", " x=[2e0],\n", " y=[4],\n", " text=[\"Does g(x) cross 0?\"],\n", " text_align=\"right\",\n", " text_baseline=\"bottom\",\n", " text_color=\"#6baed6\",\n", " text_font_size='8pt',\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, the condition for $g(x)$ to be less than zero for some values of $x$ is $g(x_\\mathrm{min}) < 0$, which, using the above expression and rearranging, is equivalent to\n", "\n", "\\begin{align}\n", "\\beta > n (n-1)^{(1-n)/n}.\n", "\\end{align}\n", "\n", "In the regime where the above inequality holds, there is a unique minimum of $g(x)$ below zero, and therefore the system has two positive fixed points, in addition to the fixed point at $x = 0$. When $\\beta < n (n-1)^{(1-n)/n}$, the unique minimum is above zero, so the $g(x)$ curve never crosses the x-axis, and the fixed point at zero is the only fixed point. So, when $\\beta = n (n-1)^{(1-n)/n}$ the system switches from having one to having three fixed points. This line in parameter space represents a **bifurcation**, where the qualitative properties of the system change upon crossing it.\n", "\n", "**The n ≤ 1 regime:**\n", "\n", "We have not yet considered the $n \\le 1$ regime. In an end-of-chapter problem, you can prove that only one stable fixed point exists in this regime, regardless of the values of $\\beta$. We will take that as given going forward." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A bifurcation diagram\n", "\n", "We have now analyzed the system fully and shown that the system is monostable for $n\\leq 1$. For $n>1$, the system is bistable when $\\beta > n(n-1)^{(1-n)/n}$, monostable when $\\beta < n(n-1)^{(1-n)/n}$, and undergoes a bifurcation between these two regimes when $\\beta = n(n-1)^{(1-n)/n}$. \n", "\n", "Thanks to the fact that we nondimensionalized our system, its bifurcation behavior can be fully explained using only two dimensionless parameters. This allows us to visualize it with the nature of the steady states of the system with a **bifurcation diagram**, shown below." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"a3c7a67e-bd1a-4842-8aef-04bbbece6f06\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2713\",\"attributes\":{\"width\":400,\"height\":300,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p2722\",\"attributes\":{\"end\":10}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p2724\",\"attributes\":{\"end\":3}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2726\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2728\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2716\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2753\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2747\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2748\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2749\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[402],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[402],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2754\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2755\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2750\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.7,\"fill_color\":\"lightgray\",\"fill_alpha\":0.7,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.7}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2751\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.1,\"fill_color\":\"lightgray\",\"fill_alpha\":0.1,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2752\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.2,\"fill_color\":\"lightgray\",\"fill_alpha\":0.2,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2762\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2756\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2757\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2758\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0,0,1,1]],[\"y\",[0,10,10,0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2763\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2764\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2759\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.7,\"fill_color\":\"lightgray\",\"fill_alpha\":0.7,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.7}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2760\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.1,\"fill_color\":\"lightgray\",\"fill_alpha\":0.1,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2761\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"lightgray\",\"line_alpha\":0.2,\"fill_color\":\"lightgray\",\"fill_alpha\":0.2,\"hatch_color\":\"lightgray\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2771\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2765\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2766\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2767\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[402],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[402],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2772\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2773\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2768\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"gray\",\"line_alpha\":0.7,\"fill_alpha\":0.7,\"hatch_color\":\"gray\",\"hatch_alpha\":0.7}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2769\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"gray\",\"line_alpha\":0.1,\"fill_alpha\":0.1,\"hatch_color\":\"gray\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p2770\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"gray\",\"line_alpha\":0.2,\"fill_alpha\":0.2,\"hatch_color\":\"gray\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2780\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2774\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2775\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2776\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAA8D/GBRkXZFzwP4wLMi7IuPA/UxFLRSwV8T8ZF2RckHHxP98cfXP0zfE/piKWilgq8j9sKK+hvIbyPzIuyLgg4/I/+DPhz4Q/8z++Ofrm6JvzP4U/E/5M+PM/S0UsFbFU9D8RS0UsFbH0P9hQXkN5DfU/nlZ3Wt1p9T9kXJBxQcb1PypiqYilIvY/8GfCnwl/9j+3bdu2bdv2P31z9M3RN/c/Q3kN5TWU9z8Kfyb8mfD3P9CEPxP+TPg/lopYKmKp+D9ckHFBxgX5PyKWilgqYvk/6Zujb46++T+vobyG8hr6P3Wn1Z1Wd/o/PK3utLrT+j8CswfMHjD7P8i4IOOCjPs/jr45+ubo+z9UxFIRS0X8PxvKayivofw/4c+EPxP+/D+n1Z1Wd1r9P27btm3btv0/NOHPhD8T/j/65uibo2/+P8DsAbMHzP4/hvIaymso/z9N+DPhz4T/PxP+TPgz4f8/7AGzB8weAEDQhD8T/kwAQLMHzB4wewBAlopYKmKpAEB5DeU1lNcAQFyQcUHGBQFAQBP+TPgzAUAilopYKmIBQAYZF2RckAFA6Zujb46+AUDMHjB7wOwBQK+hvIbyGgJAkiRJkiRJAkB1p9WdVncCQFgqYqmIpQJAPK3utLrTAkAeMHvA7AEDQAKzB8weMANA5TWU11BeA0DIuCDjgowDQKs7re60ugNAjr45+uboA0ByQcYFGRcEQFTEUhFLRQRAOEffHH1zBEAbymsor6EEQP5M+DPhzwRA4c+EPxP+BEDEUhFLRSwFQKfVnVZ3WgVAilgqYqmIBUBu27Zt27YFQFBeQ3kN5QVANOHPhD8TBkAXZFyQcUEGQPrm6JujbwZA3Wl1p9WdBkDA7AGzB8wGQKRvjr45+gZAhvIaymsoB0BqdafVnVYHQE34M+HPhAdAMHvA7AGzB0AT/kz4M+EHQPaA2QNmDwhA2QNmD5g9CEC8hvIaymsIQKAJfyb8mQhAg4wLMi7ICEBmD5g9YPYIQEmSJEmSJAlALBWxVMRSCUAPmD1g9oAJQPIaymsorwlA1Z1Wd1rdCUC4IOOCjAsKQJyjb46+OQpAfyb8mfBnCkBiqYilIpYKQEUsFbFUxApAKK+hvIbyCkALMi7IuCALQO60utPqTgtA0jdH3xx9C0C1utPqTqsLQJg9YPaA2QtAe8DsAbMHDEBeQ3kN5TUMQEHGBRkXZAxAJEmSJEmSDEAHzB4we8AMQOpOqzut7gxAztE3R98cDUCxVMRSEUsNQJTXUF5DeQ1Ad1rdaXWnDUBa3Wl1p9UNQD1g9oDZAw5AIOOCjAsyDkAEZg+YPWAOQOfom6Nvjg5Aymsor6G8DkCt7rS60+oOQJBxQcYFGQ9Ac/TN0TdHD0BWd1rdaXUPQDn65uibow9AHH1z9M3RD0AAAAAAAAAQQHJBxgUZFxBA44KMCzIuEEBUxFIRS0UQQMYFGRdkXBBAOEffHH1zEECpiKUilooQQBvKayivoRBAjAsyLsi4EED+TPgz4c8QQHCOvjn65hBA4c+EPxP+EEBSEUtFLBURQMRSEUtFLBFANpTXUF5DEUCn1Z1Wd1oRQBkXZFyQcRFAilgqYqmIEUD8mfBnwp8RQG7btm3bthFA3xx9c/TNEUBQXkN5DeURQMKfCX8m/BFANOHPhD8TEkCmIpaKWCoSQBdkXJBxQRJAiKUilopYEkD65uibo28SQGwor6G8hhJA3Wl1p9WdEkBOqzut7rQSQMDsAbMHzBJAMi7IuCDjEkCkb46+OfoSQBWxVMRSERNAhvIaymsoE0D4M+HPhD8TQGp1p9WdVhNA27Zt27ZtE0BN+DPhz4QTQL45+ubomxNAMHvA7AGzE0CivIbyGsoTQBP+TPgz4RNAhD8T/kz4E0D2gNkDZg8UQGjCnwl/JhRA2QNmD5g9FEBLRSwVsVQUQLyG8hrKaxRALsi4IOOCFECgCX8m/JkUQBFLRSwVsRRAg4wLMi7IFED0zdE3R98UQGYPmD1g9hRA11BeQ3kNFUBJkiRJkiQVQLrT6k6rOxVALBWxVMRSFUCeVnda3WkVQA+YPWD2gBVAgdkDZg+YFUDyGsprKK8VQGRckHFBxhVA1Z1Wd1rdFUBH3xx9c/QVQLgg44KMCxZAKmKpiKUiFkCco2+OvjkWQA3lNZTXUBZAfyb8mfBnFkDwZ8KfCX8WQGKpiKUilhZA0+pOqzutFkBFLBWxVMQWQLdt27Zt2xZAKK+hvIbyFkCa8GfCnwkXQAsyLsi4IBdAfXP0zdE3F0DutLrT6k4XQGD2gNkDZhdA0jdH3xx9F0BDeQ3lNZQXQLW60+pOqxdAJvyZ8GfCF0CYPWD2gNkXQAl/JvyZ8BdAe8DsAbMHGEDsAbMHzB4YQF5DeQ3lNRhA0IQ/E/5MGEBBxgUZF2QYQLMHzB4wexhAJEmSJEmSGECWilgqYqkYQAfMHjB7wBhAeQ3lNZTXGEDqTqs7re4YQFyQcUHGBRlAztE3R98cGUA/E/5M+DMZQLFUxFIRSxlAIpaKWCpiGUCU11BeQ3kZQAUZF2RckBlAd1rdaXWnGUDpm6Nvjr4ZQFrdaXWn1RlAzB4we8DsGUA9YPaA2QMaQK+hvIbyGhpAIOOCjAsyGkCSJEmSJEkaQARmD5g9YBpAdafVnVZ3GkDn6Jujb44aQFgqYqmIpRpAymsor6G8GkA7re60utMaQK3utLrT6hpAHjB7wOwBG0CQcUHGBRkbQAKzB8weMBtAc/TN0TdHG0DlNZTXUF4bQFZ3Wt1pdRtAyLgg44KMG0A5+ubom6MbQKs7re60uhtAHH1z9M3RG0COvjn65ugbQAAAAAAAABxAcUHGBRkXHEDjgowLMi4cQFTEUhFLRRxAxgUZF2RcHEA3R98cfXMcQKmIpSKWihxAG8prKK+hHECMCzIuyLgcQP5M+DPhzxxAb46+OfrmHEDhz4Q/E/4cQFIRS0UsFR1AxFIRS0UsHUA2lNdQXkMdQKfVnVZ3Wh1AGRdkXJBxHUCKWCpiqYgdQPyZ8GfCnx1Abdu2bdu2HUDfHH1z9M0dQFBeQ3kN5R1Awp8Jfyb8HUA04c+EPxMeQKUilopYKh5AF2RckHFBHkCIpSKWilgeQPrm6Jujbx5AayivobyGHkDdaXWn1Z0eQE6rO63utB5AwOwBswfMHkAyLsi4IOMeQKNvjr45+h5AFbFUxFIRH0CG8hrKaygfQPgz4c+EPx9AaXWn1Z1WH0Dbtm3btm0fQE34M+HPhB9Avjn65uibH0Awe8DsAbMfQKG8hvIayh9AE/5M+DPhH0CEPxP+TPgfQHvA7AGzByBANOHPhD8TIEDsAbMHzB4gQKYilopYKiBAXkN5DeU1IEAXZFyQcUEgQNCEPxP+TCBAiKUilopYIEBBxgUZF2QgQPrm6JujbyBAswfMHjB7IEBsKK+hvIYgQCRJkiRJkiBA3Wl1p9WdIECWilgqYqkgQE6rO63utCBACMweMHvAIEDA7AGzB8wgQHkN5TWU1yBAMi7IuCDjIEDqTqs7re4gQKRvjr45+iBAXJBxQcYFIUAVsVTEUhEhQM7RN0ffHCFAhvIaymsoIUBAE/5M+DMhQPgz4c+EPyFAsVTEUhFLIUBqdafVnVYhQCKWilgqYiFA27Zt27ZtIUCU11BeQ3khQE34M+HPhCFABhkXZFyQIUC+Ofrm6JshQHda3Wl1pyFAMHvA7AGzIUDom6Nvjr4hQKK8hvIayiFAWt1pdafVIUAT/kz4M+EhQMweMHvA7CFAhD8T/kz4IUA9YPaA2QMiQPaA2QNmDyJAr6G8hvIaIkBowp8JfyYiQCDjgowLMiJA2QNmD5g9IkCSJEmSJEkiQEtFLBWxVCJABGYPmD1gIkC8hvIaymsiQHWn1Z1WdyJALsi4IOOCIkDn6Jujb44iQKAJfyb8mSJAWCpiqYilIkARS0UsFbEiQMprKK+hvCJAg4wLMi7IIkA7re60utMiQPTN0TdH3yJAre60utPqIkBmD5g9YPYiQB8we8DsASNA11BeQ3kNI0CQcUHGBRkjQEmSJEmSJCNAArMHzB4wI0C60+pOqzsjQHP0zdE3RyNALBWxVMRSI0DlNZTXUF4jQJ5Wd1rdaSNAVnda3Wl1I0APmD1g9oAjQMi4IOOCjCNAgdkDZg+YI0A5+ubom6MjQPIaymsoryNAqzut7rS6I0BkXJBxQcYjQB19c/TN0SNA1Z1Wd1rdI0COvjn65ugjQEffHH1z9CNAAAAAAAAAJEA=\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2781\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2782\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2777\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2778\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2779\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2789\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2783\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2784\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2785\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[1,1]],[\"y\",[1,5]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2790\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2791\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2786\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2787\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2788\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2798\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2792\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2793\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2794\"},\"data\":{\"type\":\"map\",\"entries\":[[\"text\",[\"bistable\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2799\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2800\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2795\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":4.5},\"y\":{\"type\":\"value\",\"value\":2.2},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2796\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":4.5},\"y\":{\"type\":\"value\",\"value\":2.2},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2797\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":4.5},\"y\":{\"type\":\"value\",\"value\":2.2},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2807\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2801\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2802\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2803\"},\"data\":{\"type\":\"map\",\"entries\":[[\"text\",[\"monostable\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2808\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2809\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2804\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":3.2},\"y\":{\"type\":\"value\",\"value\":0.8},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2805\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":3.2},\"y\":{\"type\":\"value\",\"value\":0.8},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2806\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":3.2},\"y\":{\"type\":\"value\",\"value\":0.8},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2719\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2744\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2737\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2738\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2739\"},\"axis_label\":\"nondimesional \\u03b2\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2740\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2730\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2731\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2732\"},\"axis_label\":\"n\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2733\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2736\",\"attributes\":{\"axis\":{\"id\":\"p2730\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2743\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p2737\"}}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"a3c7a67e-bd1a-4842-8aef-04bbbece6f06\",\"roots\":{\"p2713\":\"cb04dd20-7bff-4b12-825b-7607d7ffac21\"},\"root_ids\":[\"p2713\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p2713" } }, "output_type": "display_data" } ], "source": [ "# Get bifurcation line\n", "n = np.linspace(1, 10, 400)\n", "beta = n * (n - 1) ** ((1 - n) / n)\n", "\n", "# Build the plot\n", "p = bokeh.plotting.figure(\n", " height=300,\n", " width=400,\n", " x_axis_label=\"n\",\n", " y_axis_label=\"nondimesional β\",\n", " x_range=[0, 10],\n", " y_range=[0, 3],\n", " tools=[\"save\"],\n", ")\n", "p.patch(np.append(n, [n[-1], 1]), np.append(beta, [0, 0]), color=\"lightgray\", alpha=0.7)\n", "p.patch([0, 0, 1, 1], [0, 10, 10, 0], color=\"lightgray\", alpha=0.7)\n", "p.patch(np.append([n[-1], 1], n), np.append([3, 3], beta), color=\"gray\", alpha=0.7)\n", "p.line(n, beta, line_width=2, color=\"black\")\n", "p.line([1, 1], [1, 5], line_width=2, color=\"black\")\n", "p.text(x=4.5, y=2.2, text=[\"bistable\"])\n", "p.text(x=3.2, y=0.8, text=[\"monostable\"])\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This analysis can help us engineer a system to be bistable. By using a strong ($\\beta$ large) and ultrasensitive ($n$ larger than 1, and preferably larger than 2) regulatory system, we can ensure bistability. Further, if we measure the values of our parameters and find that we are near the bifurcation boundary, then we know that small variations in the parameter values can cause a large, qualitative change in the system's behavior. In particular, we can see from the plot above that the regime where $1 < \\beta < 2$ and $1 < n < 2$ is a particularly bifurcation-prone regime that we would definitely want to avoid designing our system into if its desired performance is to be reliably bistable.\n", "\n", "Because biological components fluctuate, and parameter values are rarely known with precision, for reliability one should ideally design a bistable system to lie far away from the bifurcation boundary. " ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Bistability enables memory through hysteresis\n", "\n", "Bistability's most direct function is supporting multiple phenotypically-distinct cell states. But a second function is its ability to enable irreversible responses to transient input signals, a feature known as **hysteresis**. \n", "\n", "Consider the postive autoregulation circuit in its bistable regime, with $x$ at the upper stable fixed point. Now, suppose some transient perturbation occurs. Perhaps the value of $\\gamma$ is suddenly increased because the cell has begun dividing at a much faster rate. If this perturbation is large enough to cross the bifurcation boundary, then the system becomes monostable, and $x$ will be driven to the only stable fixed point, at a value closer to what was previously the lower fixed point in the bistable regime. Once the perturbation ends, $\\gamma$ returns to its original value, and the system regains bistability. But, if the perturbed value of $x$ lies within the basin of attraction of the lower bistable state, then the system will remain in the lower state. In this scenario, a transient perturbation will have led to a permanent state switch. In this sense the system has a \"memory\" of the transient event. \n", "\n", "This scenario is illustrated in the series of plots below." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"84398f3d-7b41-4327-8271-3e4a2b422d25\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3571\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3251\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3261\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3263\",\"attributes\":{\"start\":-1.5,\"end\":15}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3265\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3267\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3254\",\"attributes\":{\"text\":\"Initial environment. \\u03b2 = 10, \\u03b3 = 1 , k = 4, n = 4\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3351\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3345\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3346\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3347\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3352\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3353\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3348\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3349\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3350\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3360\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3354\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3355\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3356\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAACgmoFqBqqpP6CagWoGqrk/+DPhz4Q/wz+gmoFqBqrJP6QAkQJECtA/+DPhz4Q/0z9MZzGdxXTWP6CagWoGqtk/9M3RN0ff3D+kAJECRArgP04aOWnkpOE/+DPhz4Q/4z+iTYk2JdrkP0xnMZ3FdOY/9oDZA2YP6D+gmoFqBqrpP0q0KdGmROs/9M3RN0ff7D+e53me53nuP6QAkQJECvA/eQ3lNZTX8D9OGjlp5KTxPyMnjZw0cvI/+DPhz4Q/8z/NQDUD1Qz0P6JNiTYl2vQ/d1rdaXWn9T9MZzGdxXT2PyF0hdAVQvc/9oDZA2YP+D/LjS03ttz4P6CagWoGqvk/dafVnVZ3+j9KtCnRpkT7Px/BfQT3Efw/9M3RN0ff/D/J2iVrl6z9P57neZ7nef4/c/TN0TdH/z+kAJECRAoAQA4HOxzscABAeQ3lNZTXAEDkE49PPD4BQE4aOWnkpAFAuCDjgowLAkAjJ42cNHICQI4tN7bc2AJA+DPhz4Q/A0BiOovpLKYDQM1ANQPVDARAOEffHH1zBECiTYk2JdoEQAxUM1DNQAVAd1rdaXWnBUDiYIeDHQ4GQExnMZ3FdAZAtm3btm3bBkAhdIXQFUIHQIx6L+q9qAdA9oDZA2YPCEBgh4MdDnYIQMuNLTe23AhANpTXUF5DCUCgmoFqBqoJQAqhK4SuEApAdafVnVZ3CkDgrX+3/t0KQEq0KdGmRAtAtLrT6k6rC0AfwX0E9xEMQIrHJx6feAxA9M3RN0ffDEBe1HtR70UNQMnaJWuXrA1ANOHPhD8TDkCe53me53kOQAjuI7iP4A5Ac/TN0TdHD0De+nfr360PQKQAkQJEChBA2QNmD5g9EEAOBzsc7HAQQEQKEClApBBAeQ3lNZTXEECuELpC6AoRQOQTj088PhFAGRdkXJBxEUBOGjlp5KQRQIMdDnY42BFAuCDjgowLEkDuI7iP4D4SQCMnjZw0chJAWCpiqYilEkCOLTe23NgSQMMwDMMwDBNA+DPhz4Q/E0AtN7bc2HITQGI6i+ksphNAmD1g9oDZE0DNQDUD1QwUQAJEChApQBRAOEffHH1zFEBtSrQp0aYUQKJNiTYl2hRA11BeQ3kNFUAMVDNQzUAVQEJXCF0hdBVAd1rdaXWnFUCsXbJ2ydoVQOJgh4MdDhZAF2RckHFBFkBMZzGdxXQWQIFqBqoZqBZAtm3btm3bFkDscLDDwQ4XQCF0hdAVQhdAVnda3Wl1F0CMei/qvagXQMF9BPcR3BdA9oDZA2YPGEArhK4QukIYQGCHgx0OdhhAlopYKmKpGEDLjS03ttwYQACRAkQKEBlANpTXUF5DGUBrl6xdsnYZQKCagWoGqhlA1Z1Wd1rdGUAKoSuErhAaQECkAJECRBpAdafVnVZ3GkCqqqqqqqoaQOCtf7f+3RpAFbFUxFIRG0BKtCnRpkQbQH+3/t36dxtAtLrT6k6rG0Dqvaj3ot4bQB/BfQT3ERxAVMRSEUtFHECKxycen3gcQL/K/CrzqxxA9M3RN0ffHEAp0aZEmxIdQF7Ue1HvRR1AlNdQXkN5HUDJ2iVrl6wdQP7d+nfr3x1ANOHPhD8THkBp5KSRk0YeQJ7neZ7neR5A0+pOqzutHkAI7iO4j+AeQD7x+MTjEx9Ac/TN0TdHH0Co96Lei3ofQN76d+vfrR9AE/5M+DPhH0CkAJECRAogQD+C+wjuIyBA2QNmD5g9IEB0hdAVQlcgQA4HOxzscCBAqYilIpaKIEBEChApQKQgQN6Lei/qvSBAeQ3lNZTXIEAUj088PvEgQK4QukLoCiFASZIkSZIkIUDkE49PPD4hQH6V+VXmVyFAGRdkXJBxIUCzmM5iOoshQE4aOWnkpCFA6Zujb46+IUCDHQ52ONghQB6feHzi8SFAuCDjgowLIkBTok2JNiUiQO4juI/gPiJAiKUilopYIkAjJ42cNHIiQL6o96LeiyJAWCpiqYilIkDzq8yvMr8iQI4tN7bc2CJAKK+hvIbyIkDDMAzDMAwjQF2ydsnaJSNA+DPhz4Q/I0CTtUvWLlkjQC03ttzYciNAyLgg44KMI0BiOovpLKYjQP279e/WvyNAmD1g9oDZI0Ayv8r8KvMjQM1ANQPVDCRAaMKfCX8mJEACRAoQKUAkQJ3FdBbTWSRAOEffHH1zJEDSyEkjJ40kQG1KtCnRpiRAB8weMHvAJECiTYk2JdokQD3P8zzP8yRA11BeQ3kNJUBy0shJIyclQAxUM1DNQCVAp9WdVndaJUBCVwhdIXQlQNzYcmPLjSVAd1rdaXWnJUAS3EdwH8ElQKxdsnbJ2iVAR98cfXP0JUDiYIeDHQ4mQHzi8YnHJyZAF2RckHFBJkCx5caWG1smQExnMZ3FdCZA5+ibo2+OJkCBagaqGagmQBzscLDDwSZAtm3btm3bJkBR70W9F/UmQOxwsMPBDidAhvIaymsoJ0AhdIXQFUInQLz179a/WydAVnda3Wl1J0Dx+MTjE48nQIx6L+q9qCdAJvyZ8GfCJ0DBfQT3EdwnQFv/bv279SdA9oDZA2YPKECRAkQKECkoQCuErhC6QihAxgUZF2RcKEBgh4MdDnYoQPsI7iO4jyhAlopYKmKpKEAwDMMwDMMoQMuNLTe23ChAZg+YPWD2KEAAkQJEChApQJsSbUq0KSlANpTXUF5DKUDQFUJXCF0pQGuXrF2ydilABRkXZFyQKUCgmoFqBqopQDsc7HCwwylA1Z1Wd1rdKUBwH8F9BPcpQAqhK4SuECpApSKWilgqKkBApACRAkQqQNola5esXSpAdafVnVZ3KkAQKUCkAJEqQKqqqqqqqipARSwVsVTEKkDgrX+3/t0qQHov6r2o9ypAFbFUxFIRK0CvMr/K/CorQEq0KdGmRCtA5TWU11BeK0B/t/7d+ncrQBo5aeSkkStAtLrT6k6rK0BPPD7x+MQrQOq9qPei3itAhD8T/kz4K0AfwX0E9xEsQLpC6AqhKyxAVMRSEUtFLEDvRb0X9V4sQIrHJx6feCxAJEmSJEmSLEC/yvwq86ssQFlMZzGdxSxA9M3RN0ffLECPTzw+8fgsQCnRpkSbEi1AxFIRS0UsLUBe1HtR70UtQPlV5leZXy1AlNdQXkN5LUAuWbtk7ZItQMnaJWuXrC1AZFyQcUHGLUD+3fp3698tQJlfZX6V+S1ANOHPhD8TLkDOYjqL6SwuQGnkpJGTRi5AA2YPmD1gLkCe53me53kuQDlp5KSRky5A0+pOqzutLkBubLmx5cYuQAjuI7iP4C5Ao2+Ovjn6LkA+8fjE4xMvQNhyY8uNLS9Ac/TN0TdHL0AOdjjY4WAvQKj3ot6Lei9AQ3kN5TWUL0De+nfr360vQHh84vGJxy9AE/5M+DPhL0Ctf7f+3fovQKQAkQJECjBAcUHGBRkXMEA/gvsI7iMwQAzDMAzDMDBA2QNmD5g9MECnRJsSbUowQHSF0BVCVzBAQcYFGRdkMEAOBzsc7HAwQNxHcB/BfTBAqYilIpaKMEB2ydola5cwQEQKEClApDBAEUtFLBWxMEDei3ov6r0wQKzMrzK/yjBAeQ3lNZTXMEBGTho5aeQwQBSPTzw+8TBA4c+EPxP+MECuELpC6AoxQHxR70W9FzFASZIkSZIkMUAW01lMZzExQOQTj088PjFAsVTEUhFLMUB+lflV5lcxQEvWLlm7ZDFAGRdkXJBxMUDmV5lfZX4xQLOYzmI6izFAgdkDZg+YMUBOGjlp5KQxQBtbbmy5sTFA6Zujb46+MUC23NhyY8sxQIMdDnY42DFAUV5DeQ3lMUAen3h84vExQOvfrX+3/jFAuCDjgowLMkCGYRiGYRgyQFOiTYk2JTJAIOOCjAsyMkDuI7iP4D4yQLtk7ZK1SzJAiKUilopYMkBW5leZX2UyQCMnjZw0cjJA8GfCnwl/MkC+qPei3osyQIvpLKazmDJAWCpiqYilMkAma5esXbIyQPOrzK8yvzJAwOwBswfMMkCOLTe23NgyQFtubLmx5TJAKK+hvIbyMkD179a/W/8yQMMwDMMwDDNAkHFBxgUZM0BdsnbJ2iUzQCvzq8yvMjNA+DPhz4Q/M0DFdBbTWUwzQJO1S9YuWTNAYPaA2QNmM0AtN7bc2HIzQPt369+tfzNAyLgg44KMM0CV+VXmV5kzQGI6i+kspjNAMHvA7AGzM0D9u/Xv1r8zQMr8KvOrzDNAmD1g9oDZM0BlfpX5VeYzQDK/yvwq8zNAAAAAAAAANEA=\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3361\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3362\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3357\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3358\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3359\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3387\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3381\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3382\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3383\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3388\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3389\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3384\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3385\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3386\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3405\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3399\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3400\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3401\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[3.3819761988413224]],[\"y\",[3.3819761988413224]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3406\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3407\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3402\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3403\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3404\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3423\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3417\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3418\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3419\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[9.72134917189334]],[\"y\",[9.72134917189334]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3424\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3425\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3420\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3421\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3422\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3515\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3509\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3510\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3511\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[9.72134917189334]],[\"y\",[9.72134917189334]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3516\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3517\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3512\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3513\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3514\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3524\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3518\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3519\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3520\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[10]],[\"y\",[7]],[\"text\",[\"system is here\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3525\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3526\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3521\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3522\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3523\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3258\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p3283\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p3284\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p3285\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p3286\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3287\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p3288\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p3289\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3276\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3277\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3278\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3279\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3269\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3270\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3271\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3272\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3275\",\"attributes\":{\"axis\":{\"id\":\"p3269\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3282\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p3276\"}}}],\"frame_width\":375,\"frame_height\":150}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p3569\",\"attributes\":{\"height\":10}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3435\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3445\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3447\",\"attributes\":{\"start\":-1.5,\"end\":15}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3449\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3451\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3438\",\"attributes\":{\"text\":\"Perturbed environment. \\u03b2 = 10, \\u03b3 = 2.5 , k = 4, n = 4\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3488\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3482\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3483\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3484\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3489\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3490\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3485\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3486\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3487\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3497\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3491\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3492\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3493\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAACkAJECRArAP6QAkQJECtA/9oDZA2YP2D+kAJECRArgP81ANQPVDOQ/9oDZA2YP6D8fwX0E9xHsP6QAkQJECvA/uCDjgowL8j/NQDUD1Qz0P+Jgh4MdDvY/9oDZA2YP+D8KoSuErhD6Px/BfQT3Efw/NOHPhD8T/j+kAJECRAoAQK4QukLoCgFAuCDjgowLAkDDMAzDMAwDQM1ANQPVDARA11BeQ3kNBUDiYIeDHQ4GQOxwsMPBDgdA9oDZA2YPCEAAkQJEChAJQAqhK4SuEApAFbFUxFIRC0AfwX0E9xEMQCnRpkSbEg1ANOHPhD8TDkA+8fjE4xMPQKQAkQJEChBAqYilIpaKEECuELpC6AoRQLOYzmI6ixFAuCDjgowLEkC+qPei3osSQMMwDMMwDBNAyLgg44KME0DNQDUD1QwUQNLISSMnjRRA11BeQ3kNFUDd2HJjy40VQOJgh4MdDhZA5uibo2+OFkDscLDDwQ4XQPL4xOMTjxdA9oDZA2YPGED6CO4juI8YQACRAkQKEBlABhkXZFyQGUAKoSuErhAaQA8pQKQAkRpAFbFUxFIRG0AaOWnkpJEbQB/BfQT3ERxAJEmSJEmSHEAp0aZEmxIdQC9Zu2Ttkh1ANOHPhD8THkA4aeSkkZMeQD7x+MTjEx9ARHkN5TWUH0CkAJECRAogQKZEmxJtSiBAqYilIpaKIECszK8yv8ogQK4QukLoCiFAsFTEUhFLIUCzmM5iOoshQLbc2HJjyyFAuCDjgowLIkC7ZO2StUsiQL6o96LeiyJAwOwBswfMIkDDMAzDMAwjQMV0FtNZTCNAyLgg44KMI0DL/Crzq8wjQM1ANQPVDCRAz4Q/E/5MJEDSyEkjJ40kQNUMVDNQzSRA11BeQ3kNJUDalGhTok0lQN3YcmPLjSVA3xx9c/TNJUDiYIeDHQ4mQOSkkZNGTiZA5uibo2+OJkDqLKazmM4mQOxwsMPBDidA7rS60+pOJ0Dy+MTjE48nQPQ8z/M8zydA9oDZA2YPKED4xOMTj08oQPoI7iO4jyhA/kz4M+HPKEAAkQJEChApQALVDFQzUClABhkXZFyQKUAIXSF0hdApQAqhK4SuECpADeU1lNdQKkAPKUCkAJEqQBJtSrQp0SpAFbFUxFIRK0AX9V7Ue1ErQBo5aeSkkStAHX1z9M3RK0AfwX0E9xEsQCEFiBQgUixAJEmSJEmSLEAnjZw0ctIsQCnRpkSbEi1ALBWxVMRSLUAvWbtk7ZItQDGdxXQW0y1ANOHPhD8TLkA2JdqUaFMuQDhp5KSRky5APK3utLrTLkA+8fjE4xMvQEA1A9UMVC9ARHkN5TWUL0BGvRf1XtQvQKQAkQJECjBApSKWilgqMECmRJsSbUowQKhmoJqBajBAqYilIpaKMECqqqqqqqowQKzMrzK/yjBAre60utPqMECuELpC6AoxQK8yv8r8KjFAsFTEUhFLMUCydsnaJWsxQLOYzmI6izFAtLrT6k6rMUC23NhyY8sxQLf+3fp36zFAuCDjgowLMkC6QugKoSsyQLtk7ZK1SzJAvIbyGsprMkC+qPei3osyQL/K/CrzqzJAwOwBswfMMkDCDgc7HOwyQMMwDMMwDDNAxFIRS0UsM0DFdBbTWUwzQMeWG1tubDNAyLgg44KMM0DJ2iVrl6wzQMv8KvOrzDNAzB4we8DsM0DNQDUD1Qw0QM9iOovpLDRAz4Q/E/5MNEDRpkSbEm00QNLISSMnjTRA0+pOqzutNEDVDFQzUM00QNYuWbtk7TRA11BeQ3kNNUDZcmPLjS01QNqUaFOiTTVA27Zt27ZtNUDd2HJjy401QN76d+vfrTVA3xx9c/TNNUDgPoL7CO41QOJgh4MdDjZA44KMCzIuNkDkpJGTRk42QObGlhtbbjZA5uibo2+ONkDoCqErhK42QOosprOYzjZA6k6rO63uNkDscLDDwQ43QO6StUvWLjdA7rS60+pON0Dw1r9b/243QPL4xOMTjzdA8hrKayivN0D0PM/zPM83QPRe1HtR7zdA9oDZA2YPOED4ot6Lei84QPjE4xOPTzhA+ubom6NvOED6CO4juI84QPwq86vMrzhA/kz4M+HPOED+bv279e84QACRAkQKEDlAArMHzB4wOUAC1QxUM1A5QAT3EdxHcDlABhkXZFyQOUAGOxzscLA5QAhdIXSF0DlACX8m/JnwOUAKoSuErhA6QAzDMAzDMDpADeU1lNdQOkAOBzsc7HA6QA8pQKQAkTpAEUtFLBWxOkASbUq0KdE6QBOPTzw+8TpAFbFUxFIRO0AW01lMZzE7QBf1XtR7UTtAGRdkXJBxO0AaOWnkpJE7QBtbbmy5sTtAHX1z9M3RO0Adn3h84vE7QB/BfQT3ETxAIeOCjAsyPEAhBYgUIFI8QCMnjZw0cjxAJEmSJEmSPEAla5esXbI8QCeNnDRy0jxAKK+hvIbyPEAp0aZEmxI9QCvzq8yvMj1ALBWxVMRSPUAtN7bc2HI9QC9Zu2Ttkj1AMHvA7AGzPUAxncV0FtM9QDK/yvwq8z1ANOHPhD8TPkA1A9UMVDM+QDYl2pRoUz5AOEffHH1zPkA4aeSkkZM+QDqL6Symsz5APK3utLrTPkA8z/M8z/M+QD7x+MTjEz9AQBP+TPgzP0BANQPVDFQ/QEJXCF0hdD9ARHkN5TWUP0BEmxJtSrQ/QEa9F/Ve1D9ARt8cfXP0P0CkAJECRApAQKWRk0ZOGkBApSKWilgqQECms5jOYjpAQKZEmxJtSkBAp9WdVndaQECoZqCagWpAQKj3ot6LekBAqYilIpaKQECqGahmoJpAQKqqqqqqqkBAqzut7rS6QECszK8yv8pAQKxdsnbJ2kBAre60utPqQECtf7f+3fpAQK4QukLoCkFAr6G8hvIaQUCvMr/K/CpBQLDDwQ4HO0FAsFTEUhFLQUCx5caWG1tBQLJ2ydola0FAsgfMHjB7QUCzmM5iOotBQLQp0aZEm0FAtLrT6k6rQUC1S9YuWbtBQLbc2HJjy0FAtm3btm3bQUC3/t36d+tBQLiP4D6C+0FAuCDjgowLQkC5seXGlhtCQLpC6AqhK0JAutPqTqs7QkC7ZO2StUtCQLz179a/W0JAvIbyGsprQkC9F/Ve1HtCQL6o96Lei0JAvjn65uibQkC/yvwq86tCQMBb/279u0JAwOwBswfMQkDBfQT3EdxCQMIOBzsc7EJAwp8Jfyb8QkDDMAzDMAxDQMTBDgc7HENAxFIRS0UsQ0DF4xOPTzxDQMV0FtNZTENAxgUZF2RcQ0DHlhtbbmxDQMcnHp94fENAyLgg44KMQ0DJSSMnjZxDQMnaJWuXrENAymsor6G8Q0DL/Crzq8xDQMuNLTe23ENAzB4we8DsQ0DMrzK/yvxDQM1ANQPVDERAzdE3R98cREDPYjqL6SxEQM/zPM/zPERAz4Q/E/5MREDRFUJXCF1EQNGmRJsSbURA0TdH3xx9REDSyEkjJ41EQNNZTGcxnURA0+pOqzutREDUe1HvRb1EQNUMVDNQzURA1Z1Wd1rdREDWLlm7ZO1EQNe/W/9u/URA11BeQ3kNRUDY4WCHgx1FQNlyY8uNLUVA2QNmD5g9RUDalGhTok1FQNsla5esXUVA27Zt27ZtRUDcR3AfwX1FQN3YcmPLjUVA3Wl1p9WdRUDe+nfr361FQN6Lei/qvUVA3xx9c/TNRUDgrX+3/t1FQOA+gvsI7kVA4c+EPxP+RUDiYIeDHQ5GQOLxiccnHkZA44KMCzIuRkDkE49PPD5GQOSkkZNGTkZA5TWU11BeRkDmxpYbW25GQOZXmV9lfkZA5uibo2+ORkDoeZ7neZ5GQOgKoSuErkZA6Jujb46+RkDqLKazmM5GQOq9qPei3kZA6k6rO63uRkDs361/t/5GQOxwsMPBDkdA7AGzB8weR0DukrVL1i5HQO4juI/gPkdA7rS60+pOR0DwRb0X9V5HQPDWv1v/bkdA8GfCnwl/R0Dy+MTjE49HQPKJxycen0dA8hrKayivR0Dyq8yvMr9HQPQ8z/M8z0dA9M3RN0ffR0D0XtR7Ue9HQPbv1r9b/0dA9oDZA2YPSED2EdxHcB9IQPii3ot6L0hA+DPhz4Q/SED4xOMTj09IQPpV5leZX0hA+ubom6NvSED6d+vfrX9IQPoI7iO4j0hA/JnwZ8KfSED8KvOrzK9IQPy79e/Wv0hA/kz4M+HPSED+3fp3699IQP5u/bv170hAAAAAAAAASUA=\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3498\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3499\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3494\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3495\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3496\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3506\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3500\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3501\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3502\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3507\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3508\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3503\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3504\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3505\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3539\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3533\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3534\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3535\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[5.5]],[\"y\",[3.5]],[\"text\",[\"system moves here\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3540\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3541\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3536\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3537\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3538\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3548\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3542\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3543\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3544\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3549\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3550\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3545\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3546\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3547\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3442\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p3467\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p3468\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p3469\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p3470\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3471\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p3472\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p3473\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3460\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3461\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3462\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3463\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3453\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3454\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3455\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3456\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3459\",\"attributes\":{\"axis\":{\"id\":\"p3453\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3466\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p3460\"}}},{\"type\":\"object\",\"name\":\"Arrow\",\"id\":\"p3528\",\"attributes\":{\"source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3530\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3531\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3532\"},\"data\":{\"type\":\"map\"}}},\"x_start\":{\"type\":\"value\",\"value\":9.72134917189334},\"y_start\":{\"type\":\"value\",\"value\":9.22134917189334},\"x_end\":{\"type\":\"value\",\"value\":1},\"y_end\":{\"type\":\"value\",\"value\":1},\"end\":{\"type\":\"object\",\"name\":\"VeeHead\",\"id\":\"p3527\",\"attributes\":{\"size\":{\"type\":\"value\",\"value\":15},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"fill_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":4}}}],\"frame_width\":375,\"frame_height\":150}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p3570\",\"attributes\":{\"height\":10}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3298\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3308\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p3310\",\"attributes\":{\"start\":-1.5,\"end\":15}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3312\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3314\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3301\",\"attributes\":{\"text\":\"Return to initial environment. \\u03b2 = 10, \\u03b3 = 1 , k = 4, n = 4\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3369\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3363\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3364\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3365\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3370\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3371\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3366\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3367\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3368\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3378\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3372\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3373\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3374\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3379\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3380\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3375\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3376\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3377\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3396\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3390\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3391\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3392\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3397\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3398\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3393\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3394\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3395\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3414\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3408\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3409\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3410\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[3.3819761988413224]],[\"y\",[3.3819761988413224]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3415\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3416\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3411\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3412\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3413\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3432\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3426\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3427\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3428\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[9.72134917189334]],[\"y\",[9.72134917189334]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3433\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3434\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3429\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3430\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3431\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3557\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3551\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3552\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3553\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[1]],[\"y\",[-1.5]],[\"text\",[\"system remains here\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3558\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3559\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3554\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3555\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3556\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"text\":{\"type\":\"field\",\"field\":\"text\"},\"text_color\":{\"type\":\"value\",\"value\":\"gray\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3566\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3560\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3561\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3562\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0]],[\"y\",[0]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3567\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3568\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3563\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3564\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p3565\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":25},\"line_color\":{\"type\":\"value\",\"value\":\"gray\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":3},\"fill_color\":{\"type\":\"value\",\"value\":null},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"gray\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3305\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p3330\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p3331\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p3332\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p3333\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3334\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p3335\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p3336\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3323\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3324\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3325\"},\"axis_label\":\"production or removal rate\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3326\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3316\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3317\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3318\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3319\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3322\",\"attributes\":{\"axis\":{\"id\":\"p3316\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3329\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p3323\"}}}],\"frame_width\":375,\"frame_height\":150}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"84398f3d-7b41-4327-8271-3e4a2b422d25\",\"roots\":{\"p3571\":\"61bea5c3-a744-445c-8449-188ce865b219\"},\"root_ids\":[\"p3571\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p3571" } }, "output_type": "display_data" } ], "source": [ "# Parameters\n", "beta = 10\n", "gamma = 1\n", "k = 4\n", "n = 4\n", "\n", "# Theretical curves\n", "x = np.linspace(0, 20, 400)\n", "prod = beta * (x / k) ** n / (1 + (x / k) ** n)\n", "removal = gamma * x\n", "\n", "# Fixed points\n", "fp_rhs = lambda x: beta / gamma * (x / k) ** n / (1 + (x / k) ** n)\n", "fixed_points = [\n", " 0,\n", " float(scipy.optimize.fixed_point(fp_rhs, 3)),\n", " float(scipy.optimize.fixed_point(fp_rhs, 5)),\n", "]\n", "fp3 = fixed_points[2]\n", "\n", "# Build plot\n", "p1 = bokeh.plotting.figure(\n", " frame_height=150,\n", " frame_width=375,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"production or removal rate\",\n", " title=f\"Initial environment. β = {beta}, γ = {gamma} , k = {k}, n = {n}\",\n", " x_range=[-1, 20],\n", " y_range=[-1.5, 15],\n", ")\n", "p3 = bokeh.plotting.figure(\n", " frame_height=150,\n", " frame_width=375,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"production or removal rate\",\n", " title=f\"Return to initial environment. β = {beta}, γ = {gamma} , k = {k}, n = {n}\",\n", " x_range=[-1, 20],\n", " y_range=[-1.5, 15],\n", ")\n", "\n", "# Plot production and removal rates\n", "p1.line(x, prod, line_width=2, color=\"#1f77b4\")\n", "p1.line(x, removal, line_width=2, color=\"orange\")\n", "p3.line(x, prod, line_width=2, color=\"#1f77b4\")\n", "p3.line(x, removal, line_width=2, color=\"orange\")\n", "\n", "# Plot fixed points\n", "for i, fp in enumerate(fixed_points):\n", " fill_color = \"white\" if i % 2 else \"black\"\n", " p1.circle(\n", " [fp],\n", " [gamma * fp],\n", " color=\"black\",\n", " size=10,\n", " line_width=2,\n", " fill_color=fill_color,\n", " )\n", " p3.circle(\n", " [fp],\n", " [gamma * fp],\n", " color=\"black\",\n", " size=10,\n", " line_width=2,\n", " fill_color=fill_color,\n", " )\n", "\n", "# Recalculate plot for disturbance condition\n", "gamma = 2.5 # new value\n", "\n", "prod = beta * (x / k) ** n / (1 + (x / k) ** n)\n", "removal = gamma * x\n", "\n", "# Build plot\n", "p2 = bokeh.plotting.figure(\n", " frame_height=150,\n", " frame_width=375,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"production or removal rate\",\n", " title=f\"Perturbed environment. β = {beta}, γ = {gamma} , k = {k}, n = {n}\",\n", " x_range=[-1, 20],\n", " y_range=[-1.5, 15],\n", ")\n", "\n", "# Plot production and removal rates\n", "p2.line(x, prod, line_width=2, color=\"#1f77b4\")\n", "p2.line(x, removal, line_width=2, color=\"orange\")\n", "\n", "# Plot fixed points\n", "p2.circle(\n", " [0],\n", " [0],\n", " color=\"black\",\n", " size=10,\n", " line_width=2,\n", " fill_color=\"black\",\n", ")\n", "\n", "# Add commentary\n", "p1.circle(\n", " [fp3],\n", " [fp3],\n", " color=\"gray\",\n", " size=25,\n", " line_width=3,\n", " fill_color=None,\n", ")\n", "p1.text(\n", " x=[10],\n", " y=[7],\n", " text=[\"system is here\"],\n", " text_color=\"gray\",\n", " text_font_size=\"10pt\",\n", " text_align=\"left\",\n", " angle=0,\n", ")\n", "p2.add_layout(\n", " bokeh.models.Arrow(\n", " end=bokeh.models.VeeHead(size=15, fill_color=\"gray\", line_color=\"gray\"),\n", " line_width=4,\n", " x_start=fp3,\n", " y_start=fp3 - 0.5,\n", " x_end=1,\n", " y_end=1,\n", " line_color=\"gray\",\n", " )\n", ")\n", "p2.text(\n", " x=[5.5],\n", " y=[3.5],\n", " text=[\"system moves here\"],\n", " text_color=\"gray\",\n", " text_font_size=\"10pt\",\n", " text_align=\"left\",\n", " angle=0,\n", ")\n", "p2.circle(\n", " [0],\n", " [0],\n", " color=\"gray\",\n", " size=25,\n", " line_width=3,\n", " fill_color=None,\n", ")\n", "p3.text(\n", " x=[1],\n", " y=[-1.5],\n", " text=[\"system remains here\"],\n", " text_color=\"gray\",\n", " text_font_size=\"10pt\",\n", " text_align=\"left\",\n", " angle=0,\n", ")\n", "p3.circle(\n", " [0],\n", " [0],\n", " color=\"gray\",\n", " size=25,\n", " line_width=3,\n", " fill_color=None,\n", ")\n", "\n", "# Build layout\n", "hysteresis_layout = bokeh.layouts.column(\n", " p1,\n", " bokeh.layouts.Spacer(height=10),\n", " p2,\n", " bokeh.layouts.Spacer(height=10),\n", " p3,\n", ")\n", "\n", "bokeh.io.show(hysteresis_layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is the principle of hysteresis—a dependence of the system state on its past history. We will now examine how a circuit can be designed to explicitly enable the recording of an external stimulus via hysteresis in a bistable system." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide_input" ] }, "source": [ "## The toggle switch: a two-gene positive feedback system\n", "\n", "In natural circuits, positive feedback loops often include multiple regulators rather than just a single autoregulatory transcription factor. For example, the \"genetic switch\" in the bacterial virus, or bacteriophage, lambda involves reciprocal repression of the *cro* repressor by the $\\lambda$ *cI* repressor, and vice versa (see [Mark Ptashne's classic book, _A genetic switch_](http://www.cshteaching.org/home_genetic_switch.php)). This arrangement allows lambda to remain in its dormant \"lysogenic\" state, where *λcI* is expressed and represses *cro*, or switch to a \"lytic\" state in which *cro* is expressed, repressing *cI*. In the lytic phase, the phage replicates itself and lyses the host cell, enabling lambda to go on to infect other cells. Interestingly, cI is not only a repressor, but also an activator, and it activates its own expression in an ultrasensitive manner due to cooperative binding interactions. Thus, the natural circuit combines a 1-gene positive autoregulation circuit with a 2-gene mutual repression circuit. \n", "\n", "In 2000, [Gardner, Cantor, and Collins](https://doi.org/10.1038/35002131) designed, constructed, and analyzed a synthetic version of the two-gene mutual repression \"toggle switch,\" and showed that it could exhibit bistability. Here is a simplified diagram of the general design:\n", "\n", "
\n", "\n", "![toggle](figs/toggle_diagram.png)\n", "\n", "
\n", "\n", "Importantly, they chose to build their circuit using two repressors whose ability to repress their target genes could be inactivated by corresponding small molecule inducers (or in some cases by a temperature shift that inactivated a temperature-sensitive repressor mutant). They could thereby inhibit each of the two repressors, pushing the circuit into a monostable regime, with the other repressor highly expressed. When these input signals were subsequently removed, the circuit returned to a bistable regime, but, due to hysteresis, its expression states remained largely unchanged. In this way, they showed that the toggle circuit could record a minimal 1 bit memory of the last signal that it experienced.\n", "\n", "The figure below, featuring data digitized from the paper, shows the toggling behavior. IPTG is an inducer that inhibits repression by LacI, one of the two repressors they used in the toggle. In a control experiment without the toggle architecture, expression of the gene under control of the promoter repressed by LacI grows steadily with increasing IPTG concentration. Conversely, for the toggle architecture, there is a sharp jump in expression at an intermediate IPTG concentration, marking the \"switch\" of the toggle." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"22f98b77-3bd1-4791-8929-e57cfb135017\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p4551\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p4553\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p4552\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LogScale\",\"id\":\"p4564\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p4566\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p4554\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p4603\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p4597\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p4598\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p4599\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD97FK5H4XqEP3sUrkfhepQ/uB6F61G4nj97FK5H4XqkP7gehetRuK4/mpmZmZmZuT8zMzMzMzPTPzMzMzMzM+M/AAAAAAAA8D8AAAAAAAAIQAAAAAAAABhAAAAAAAAAJEA=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD/xD1t6NNVzP+UqFr8prIQ/bt3NUx1ykz/4/ZsXJ76aP3Jr0m2JXKg/EY/Ey9O5tj8yIHu9++PZPx6Jl6dzReU/FVYqqKj66T/5gas8gTDtP7KEtTF2wu0/mDEFa5zN6z8=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p4604\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p4605\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4600\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4601\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4602\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p4617\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p4608\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p4609\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p4610\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA==\"},\"shape\":[13],\"dtype\":\"int32\",\"order\":\"little\"}],[\"iptg (mM)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD97FK5H4XqEP3sUrkfhepQ/uB6F61G4nj97FK5H4XqkP7gehetRuK4/mpmZmZmZuT8zMzMzMzPTPzMzMzMzM+M/AAAAAAAA8D8AAAAAAAAIQAAAAAAAABhAAAAAAAAAJEA=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"normalized gfp expression\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD/xD1t6NNVzP+UqFr8prIQ/bt3NUx1ykz/4/ZsXJ76aP3Jr0m2JXKg/EY/Ey9O5tj8yIHu9++PZPx6Jl6dzReU/FVYqqKj66T/5gas8gTDtP7KEtTF2wu0/mDEFa5zN6z8=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"sem\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"tXBZhc0ARz9s0QK0rWZtP2zRArStZm0/5/7qcd9qbT8zjSYXY2BdP2zRArStZm0/eVxUi4higj8AqOLGLeaXP6HZdW9FYpI/bOnRVE/mpz8ea0YGuYuQPy0/cJUnEJY/umddo+VAnz8=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"error_low\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAG/Tn/1IEWk/Fm75SEp6iD8ldm1vtySXP/Dd5o2TwqQ/yXcpdck4sj/0+L1Nf/bWPzXPEfkuJeQ/wTqOHyoN5z+qDONuEC3sP1JlGHeDaOw/k4sxsI7j6T8=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"error_high\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"2/l+arx0Yz8Bvtu8cVKIP3cwYp8AipE/+oBAZ9Kmmj/zAuyjU1eeP4m3zr9d9qs/D0dX6e46uz9vRzgteNHcP/BOPj22ZeY/Un3nFyXo7D9J93MK8jPuPymYMQVrHO8/huP5DKi37T8=\"},\"shape\":[13],\"dtype\":\"float64\",\"order\":\"little\"}],[\"trial\",{\"type\":\"ndarray\",\"array\":[\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\",\"control\"],\"shape\":[13],\"dtype\":\"object\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p4618\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p4619\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4614\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_width\":{\"type\":\"value\",\"value\":2}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4615\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4616\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p4626\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p4620\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p4621\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p4622\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD97FK5H4XqEP3sUrkfhepQ/uB6F61G4nj97FK5H4XqkP3sUrkfheqQ/uB6F61G4rj+amZmZmZm5PzMzMzMzM9M/MzMzMzMz4z8AAAAAAADwPwAAAAAAAAhAAAAAAAAAGEAAAAAAAAAkQA==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"VKnZA63AcD+pE9BE2PCEP9RIS+XtCJc/6UMX1LfMoT+fdvhrskaxPwYrTrUWZuU/Fvn1Q2yw5z9/orJhTeXqP3+kiAyr+O0/b9i2KLPB7j/RV5BmLBruP3e8yW/RSes/5pZWQ+Ie7T+yvRb03pjsPw==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p4627\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p4628\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4623\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4624\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p4625\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p4639\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p4630\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p4631\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p4632\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAA=\"},\"shape\":[14],\"dtype\":\"int32\",\"order\":\"little\"}],[\"iptg (mM)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/Knx0k1iUD97FK5H4XqEP3sUrkfhepQ/uB6F61G4nj97FK5H4XqkP3sUrkfheqQ/uB6F61G4rj+amZmZmZm5PzMzMzMzM9M/MzMzMzMz4z8AAAAAAADwPwAAAAAAAAhAAAAAAAAAGEAAAAAAAAAkQA==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"normalized gfp expression\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"VKnZA63AcD+pE9BE2PCEP9RIS+XtCJc/6UMX1LfMoT+fdvhrskaxPwYrTrUWZuU/Fvn1Q2yw5z9/orJhTeXqP3+kiAyr+O0/b9i2KLPB7j/RV5BmLBruP3e8yW/RSes/5pZWQ+Ie7T+yvRb03pjsPw==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"sem\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"8rBQa5p3bD+SeHk6V5RiP1daRuo9lXM/+n5qvHSTaD/BUl3Aywx7P6inj8AffrY/a9PYXgt6pz+C/de5aTOuP7WK/tDMk5s/AFRx4xbztz9x4xbzc0OjPyeDo+TVOa4/0nDK3Hwjqj/HuU24V+alPw==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"error_low\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAB4uYjvxKx3PzJ1V3bB4Io/Mj1hiQeUnT/HD5VGzOyrP4iCGVOwxt8/lIlbBTHQ5D9d4PJYMzLnP4CfceFASOw/12fO+pTj6D8UdeYeEr7rP85xbhPulec/MEYkCi3r6T93ai43GOrpPw==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"error_high\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4xbzc0NThj+XytsRTguOP4drtYe9UKA/Oul942vPpD9aZaa0/pa0P8iUD0HV6Oo/mGiQgqeQ6j+hZHJqZ5juP36pnzcVqe8/g6RPq+hP8j9HHR1XIzvwPyEHJcy0/e4/zXNEvksp8D/tEP+wpUfvPw==\"},\"shape\":[14],\"dtype\":\"float64\",\"order\":\"little\"}],[\"trial\",{\"type\":\"ndarray\",\"array\":[\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\",\"toggle\"],\"shape\":[14],\"dtype\":\"object\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p4640\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p4641\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4636\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_width\":{\"type\":\"value\",\"value\":2}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4637\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p4638\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y0\":{\"type\":\"field\",\"field\":\"error_low\"},\"x1\":{\"type\":\"field\",\"field\":\"iptg (mM)\"},\"y1\":{\"type\":\"field\",\"field\":\"error_high\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p4557\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p4582\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p4583\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p4584\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p4585\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p4586\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p4587\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p4588\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p4575\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p4576\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p4577\"},\"axis_label\":\"normalized expression\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p4578\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LogAxis\",\"id\":\"p4568\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"LogTicker\",\"id\":\"p4569\",\"attributes\":{\"num_minor_ticks\":10,\"mantissas\":[1,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"LogTickFormatter\",\"id\":\"p4570\"},\"axis_label\":\"[IPTG] (mM)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p4571\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p4574\",\"attributes\":{\"axis\":{\"id\":\"p4568\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p4581\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p4575\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p4606\",\"attributes\":{\"location\":\"top_left\",\"click_policy\":\"hide\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p4607\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"control\"},\"renderers\":[{\"id\":\"p4603\"},{\"id\":\"p4617\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p4629\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"toggle\"},\"renderers\":[{\"id\":\"p4626\"},{\"id\":\"p4639\"}]}}]}}],\"frame_width\":300,\"frame_height\":200}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"22f98b77-3bd1-4791-8929-e57cfb135017\",\"roots\":{\"p4551\":\"af087f68-91c1-400a-8444-4f1030c1f690\"},\"root_ids\":[\"p4551\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p4551" } }, "output_type": "display_data" } ], "source": [ "df = pd.read_csv(os.path.join(data_path, \"collins_toggle_data.csv\"))\n", "\n", "p = bokeh.plotting.figure(\n", " frame_width=300,\n", " frame_height=200,\n", " x_axis_label=\"[IPTG] (mM)\",\n", " y_axis_label=\"normalized expression\",\n", " x_axis_type=\"log\",\n", ")\n", "\n", "colors = [\"#1f77b3\", \"orange\"]\n", "for color, (trial, g) in zip(colors, df.groupby(\"trial\")):\n", " p.circle(\n", " g[\"iptg (mM)\"], g[\"normalized gfp expression\"], color=color, legend_label=trial\n", " )\n", " p.segment(\n", " source=g,\n", " x0=\"iptg (mM)\",\n", " y0=\"error_low\",\n", " x1=\"iptg (mM)\",\n", " y1=\"error_high\",\n", " line_width=2,\n", " color=color,\n", " legend_label=trial,\n", " )\n", "\n", "p.legend.location = \"top_left\"\n", "p.legend.click_policy = \"hide\"\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide_input" ] }, "source": [ "To analyze this two-repressor feedback loop, we can write down differential equations for the concentrations of the $x$ and $y$ proteins, assuming for simplicity that they share the same Hill coefficient, $n$. For now we will neglect the dynamics associated with using the inducer signals to inactivate a particular repressor. \n", "\n", "\\begin{align}\n", "&\\frac{dx}{dt} = \\frac{\\beta_x}{1 + (y/k_y)^n} - \\gamma_x x,\\\\[1em]\n", "&\\frac{dy}{dt} = \\frac{\\beta_y}{1 + (x/k_x)^n} - \\gamma_y y.\n", "\\end{align}\n", "\n", "The dimensionless version of this equation (worked out in [Technical Appendix 3a](../technical_appendices/03a_nondimensionalization.ipynb)) is\n", "\n", "\\begin{align}\n", "\\frac{dx}{dt} &= \\frac{\\beta_x}{1 + y^n} - x,\\\\[1em]\n", "\\gamma^{-1}\\,\\frac{dy}{dt} &= \\frac{\\beta_y}{1 + x^n} - y.\n", "\\end{align}\n", "\n", "As before, this corresponds to measuring each repressor concentration in units of the concentration required to half-maximally repress its target, and measuring time in units of one of the repressor lifetimes. With this, we can now clearly see that the dynamics of the system depends only on (a) the strengths of the two promoters, (b) the sensitivity of the response (Hill coefficient), and (c) the _relative_ lifetimes of the two proteins (expressed by $\\gamma = \\gamma_y/\\gamma_x$).\n", "\n", "A useful next step to analyze a two-dimensional system like this is to compute the **nullclines**, which are defined by setting each of the time derivatives equal to zero:\n", "\n", "\\begin{align}\n", "x\\text{ nullcline: }& x = \\frac{\\beta_x}{1 + y^n}, \\\\[1em]\n", "y\\text{ nullcline: }& y= \\frac{\\beta_y}{1 + x^n}.\n", "\\end{align}\n", "\n", "Wherever these two lines cross, one has a fixed point, since both time derivatives vanish simultaneously. The stability of that fixed point can be determined by **linear stability analysis**, which we will introduce in [Chapter 9](09_repressilator.ipynb). For now, we will plot the two nullclines and investigate their behavior by varying the dimensionless parameters $\\beta_x$ and $\\beta_y$, as well as the Hill coefficient $n$. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"47be5850-6d07-4810-a9eb-0af1c83ccdc7\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p5262\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p5167\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p5176\",\"attributes\":{\"start\":-1,\"end\":20}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p5178\",\"attributes\":{\"start\":-1,\"end\":20}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p5180\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p5182\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p5170\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p5219\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p5164\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p5165\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p5166\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x_x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"x_y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y_x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAACgmoFqBqqpP6CagWoGqrk/+DPhz4Q/wz+gmoFqBqrJP6QAkQJECtA/+DPhz4Q/0z9MZzGdxXTWP6CagWoGqtk/9M3RN0ff3D+kAJECRArgP04aOWnkpOE/+DPhz4Q/4z+iTYk2JdrkP0xnMZ3FdOY/9oDZA2YP6D+gmoFqBqrpP0q0KdGmROs/9M3RN0ff7D+e53me53nuP6QAkQJECvA/eQ3lNZTX8D9OGjlp5KTxPyMnjZw0cvI/+DPhz4Q/8z/NQDUD1Qz0P6JNiTYl2vQ/d1rdaXWn9T9MZzGdxXT2PyF0hdAVQvc/9oDZA2YP+D/LjS03ttz4P6CagWoGqvk/dafVnVZ3+j9KtCnRpkT7Px/BfQT3Efw/9M3RN0ff/D/J2iVrl6z9P57neZ7nef4/c/TN0TdH/z+kAJECRAoAQA4HOxzscABAeQ3lNZTXAEDkE49PPD4BQE4aOWnkpAFAuCDjgowLAkAjJ42cNHICQI4tN7bc2AJA+DPhz4Q/A0BiOovpLKYDQM1ANQPVDARAOEffHH1zBECiTYk2JdoEQAxUM1DNQAVAd1rdaXWnBUDiYIeDHQ4GQExnMZ3FdAZAtm3btm3bBkAhdIXQFUIHQIx6L+q9qAdA9oDZA2YPCEBgh4MdDnYIQMuNLTe23AhANpTXUF5DCUCgmoFqBqoJQAqhK4SuEApAdafVnVZ3CkDgrX+3/t0KQEq0KdGmRAtAtLrT6k6rC0AfwX0E9xEMQIrHJx6feAxA9M3RN0ffDEBe1HtR70UNQMnaJWuXrA1ANOHPhD8TDkCe53me53kOQAjuI7iP4A5Ac/TN0TdHD0De+nfr360PQKQAkQJEChBA2QNmD5g9EEAOBzsc7HAQQEQKEClApBBAeQ3lNZTXEECuELpC6AoRQOQTj088PhFAGRdkXJBxEUBOGjlp5KQRQIMdDnY42BFAuCDjgowLEkDuI7iP4D4SQCMnjZw0chJAWCpiqYilEkCOLTe23NgSQMMwDMMwDBNA+DPhz4Q/E0AtN7bc2HITQGI6i+ksphNAmD1g9oDZE0DNQDUD1QwUQAJEChApQBRAOEffHH1zFEBtSrQp0aYUQKJNiTYl2hRA11BeQ3kNFUAMVDNQzUAVQEJXCF0hdBVAd1rdaXWnFUCsXbJ2ydoVQOJgh4MdDhZAF2RckHFBFkBMZzGdxXQWQIFqBqoZqBZAtm3btm3bFkDscLDDwQ4XQCF0hdAVQhdAVnda3Wl1F0CMei/qvagXQMF9BPcR3BdA9oDZA2YPGEArhK4QukIYQGCHgx0OdhhAlopYKmKpGEDLjS03ttwYQACRAkQKEBlANpTXUF5DGUBrl6xdsnYZQKCagWoGqhlA1Z1Wd1rdGUAKoSuErhAaQECkAJECRBpAdafVnVZ3GkCqqqqqqqoaQOCtf7f+3RpAFbFUxFIRG0BKtCnRpkQbQH+3/t36dxtAtLrT6k6rG0Dqvaj3ot4bQB/BfQT3ERxAVMRSEUtFHECKxycen3gcQL/K/CrzqxxA9M3RN0ffHEAp0aZEmxIdQF7Ue1HvRR1AlNdQXkN5HUDJ2iVrl6wdQP7d+nfr3x1ANOHPhD8THkBp5KSRk0YeQJ7neZ7neR5A0+pOqzutHkAI7iO4j+AeQD7x+MTjEx9Ac/TN0TdHH0Co96Lei3ofQN76d+vfrR9AE/5M+DPhH0CkAJECRAogQD+C+wjuIyBA2QNmD5g9IEB0hdAVQlcgQA4HOxzscCBAqYilIpaKIEBEChApQKQgQN6Lei/qvSBAeQ3lNZTXIEAUj088PvEgQK4QukLoCiFASZIkSZIkIUDkE49PPD4hQH6V+VXmVyFAGRdkXJBxIUCzmM5iOoshQE4aOWnkpCFA6Zujb46+IUCDHQ52ONghQB6feHzi8SFAuCDjgowLIkBTok2JNiUiQO4juI/gPiJAiKUilopYIkAjJ42cNHIiQL6o96LeiyJAWCpiqYilIkDzq8yvMr8iQI4tN7bc2CJAKK+hvIbyIkDDMAzDMAwjQF2ydsnaJSNA+DPhz4Q/I0CTtUvWLlkjQC03ttzYciNAyLgg44KMI0BiOovpLKYjQP279e/WvyNAmD1g9oDZI0Ayv8r8KvMjQM1ANQPVDCRAaMKfCX8mJEACRAoQKUAkQJ3FdBbTWSRAOEffHH1zJEDSyEkjJ40kQG1KtCnRpiRAB8weMHvAJECiTYk2JdokQD3P8zzP8yRA11BeQ3kNJUBy0shJIyclQAxUM1DNQCVAp9WdVndaJUBCVwhdIXQlQNzYcmPLjSVAd1rdaXWnJUAS3EdwH8ElQKxdsnbJ2iVAR98cfXP0JUDiYIeDHQ4mQHzi8YnHJyZAF2RckHFBJkCx5caWG1smQExnMZ3FdCZA5+ibo2+OJkCBagaqGagmQBzscLDDwSZAtm3btm3bJkBR70W9F/UmQOxwsMPBDidAhvIaymsoJ0AhdIXQFUInQLz179a/WydAVnda3Wl1J0Dx+MTjE48nQIx6L+q9qCdAJvyZ8GfCJ0DBfQT3EdwnQFv/bv279SdA9oDZA2YPKECRAkQKECkoQCuErhC6QihAxgUZF2RcKEBgh4MdDnYoQPsI7iO4jyhAlopYKmKpKEAwDMMwDMMoQMuNLTe23ChAZg+YPWD2KEAAkQJEChApQJsSbUq0KSlANpTXUF5DKUDQFUJXCF0pQGuXrF2ydilABRkXZFyQKUCgmoFqBqopQDsc7HCwwylA1Z1Wd1rdKUBwH8F9BPcpQAqhK4SuECpApSKWilgqKkBApACRAkQqQNola5esXSpAdafVnVZ3KkAQKUCkAJEqQKqqqqqqqipARSwVsVTEKkDgrX+3/t0qQHov6r2o9ypAFbFUxFIRK0CvMr/K/CorQEq0KdGmRCtA5TWU11BeK0B/t/7d+ncrQBo5aeSkkStAtLrT6k6rK0BPPD7x+MQrQOq9qPei3itAhD8T/kz4K0AfwX0E9xEsQLpC6AqhKyxAVMRSEUtFLEDvRb0X9V4sQIrHJx6feCxAJEmSJEmSLEC/yvwq86ssQFlMZzGdxSxA9M3RN0ffLECPTzw+8fgsQCnRpkSbEi1AxFIRS0UsLUBe1HtR70UtQPlV5leZXy1AlNdQXkN5LUAuWbtk7ZItQMnaJWuXrC1AZFyQcUHGLUD+3fp3698tQJlfZX6V+S1ANOHPhD8TLkDOYjqL6SwuQGnkpJGTRi5AA2YPmD1gLkCe53me53kuQDlp5KSRky5A0+pOqzutLkBubLmx5cYuQAjuI7iP4C5Ao2+Ovjn6LkA+8fjE4xMvQNhyY8uNLS9Ac/TN0TdHL0AOdjjY4WAvQKj3ot6Lei9AQ3kN5TWUL0De+nfr360vQHh84vGJxy9AE/5M+DPhL0Ctf7f+3fovQKQAkQJECjBAcUHGBRkXMEA/gvsI7iMwQAzDMAzDMDBA2QNmD5g9MECnRJsSbUowQHSF0BVCVzBAQcYFGRdkMEAOBzsc7HAwQNxHcB/BfTBAqYilIpaKMEB2ydola5cwQEQKEClApDBAEUtFLBWxMEDei3ov6r0wQKzMrzK/yjBAeQ3lNZTXMEBGTho5aeQwQBSPTzw+8TBA4c+EPxP+MECuELpC6AoxQHxR70W9FzFASZIkSZIkMUAW01lMZzExQOQTj088PjFAsVTEUhFLMUB+lflV5lcxQEvWLlm7ZDFAGRdkXJBxMUDmV5lfZX4xQLOYzmI6izFAgdkDZg+YMUBOGjlp5KQxQBtbbmy5sTFA6Zujb46+MUC23NhyY8sxQIMdDnY42DFAUV5DeQ3lMUAen3h84vExQOvfrX+3/jFAuCDjgowLMkCGYRiGYRgyQFOiTYk2JTJAIOOCjAsyMkDuI7iP4D4yQLtk7ZK1SzJAiKUilopYMkBW5leZX2UyQCMnjZw0cjJA8GfCnwl/MkC+qPei3osyQIvpLKazmDJAWCpiqYilMkAma5esXbIyQPOrzK8yvzJAwOwBswfMMkCOLTe23NgyQFtubLmx5TJAKK+hvIbyMkD179a/W/8yQMMwDMMwDDNAkHFBxgUZM0BdsnbJ2iUzQCvzq8yvMjNA+DPhz4Q/M0DFdBbTWUwzQJO1S9YuWTNAYPaA2QNmM0AtN7bc2HIzQPt369+tfzNAyLgg44KMM0CV+VXmV5kzQGI6i+kspjNAMHvA7AGzM0D9u/Xv1r8zQMr8KvOrzDNAmD1g9oDZM0BlfpX5VeYzQDK/yvwq8zNAAAAAAAAANEA=\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y_y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p5220\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p5221\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5216\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_x\"},\"y\":{\"type\":\"field\",\"field\":\"y_x\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5217\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_x\"},\"y\":{\"type\":\"field\",\"field\":\"y_x\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5218\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_x\"},\"y\":{\"type\":\"field\",\"field\":\"y_x\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p5230\",\"attributes\":{\"data_source\":{\"id\":\"p5164\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p5231\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p5232\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5227\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_y\"},\"y\":{\"type\":\"field\",\"field\":\"y_y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5228\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_y\"},\"y\":{\"type\":\"field\",\"field\":\"y_y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p5229\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x_y\"},\"y\":{\"type\":\"field\",\"field\":\"y_y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p5246\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p5234\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p5235\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p5236\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.0009999,9.99999999999]],[\"y\",[9.99999999999,0.0009999]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p5247\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p5248\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5243\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5244\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5245\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"black\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p5255\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p5237\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p5238\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p5239\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[1.533012798623252]],[\"y\",[1.533012798623252]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p5256\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p5257\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5252\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5253\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p5254\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":2},\"fill_color\":{\"type\":\"value\",\"value\":\"white\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p5173\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p5198\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p5199\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p5200\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p5201\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p5202\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p5203\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p5204\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p5191\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p5192\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p5193\"},\"axis_label\":\"y\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p5194\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p5184\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p5185\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p5186\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p5187\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p5190\",\"attributes\":{\"axis\":{\"id\":\"p5184\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p5197\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p5191\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p5222\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p5223\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"x nullcline\"},\"renderers\":[{\"id\":\"p5219\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p5233\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"y nullcline\"},\"renderers\":[{\"id\":\"p5230\"}]}}]}}],\"frame_width\":250,\"frame_height\":250}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p5259\",\"attributes\":{\"width\":30}},{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p5261\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p5260\",\"attributes\":{\"height\":40}},{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p5161\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p5258\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"cds\",{\"id\":\"p5164\"}],[\"cdsStable\",{\"id\":\"p5234\"}],[\"cdsUnstable\",{\"id\":\"p5237\"}],[\"beta_x_slider\",{\"id\":\"p5161\"}],[\"beta_y_slider\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p5162\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p5258\"}]]]},\"width\":150,\"title\":\"\\u03b2y\",\"start\":0.1,\"end\":20,\"value\":10,\"step\":0.1}}],[\"n_slider\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p5163\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p5258\"}]]]},\"width\":150,\"title\":\"n\",\"start\":1,\"end\":10,\"value\":4,\"step\":0.1}}]]},\"code\":\"\\n/** \\n * Find a root of a scalar function f(x) using Newton's method.\\n * @param {float} x0 - guess for root location\\n * @param {function} f - function we are funding the root of with call signature f(x, ...args)\\n * @param {function} df - derivative of function we are funding the root of with call signature df(x, ...args)\\n * @param {array} args - arguments to pass to f and df\\n * @param {float} tol - tolerance for convergence\\n * @param {int} maxIter - maximum of Newton steps to take\\n * @param {float} epsilon - small number. Abort if derivative is smaller than this.\\n */\\nfunction newtonSolve(x0, f, df, args=[], tol=1e-8, maxIter=200, epsilon=1e-14) {\\n\\tlet x = Infinity;\\n\\tlet solved = false;\\n\\n for (let i = 0; i < maxIter; i++) {\\n let y = f(x0, ...args);\\n let yprime = df(x0, ...args);\\n\\n if (Math.abs(yprime) < epsilon) {\\n \\tbreak;\\n\\t\\t}\\n \\n x = x0 - y / yprime;\\n\\n if (Math.abs(x - x0) <= tol) {\\n \\tsolved = true;\\n \\tbreak;\\n }\\n\\n x0 = x;\\n }\\n\\n if (solved) return x;\\n else return null;\\n}\\n\\n\\n/** \\n * Find a root of a scalar function f(x) using Brent's method.\\n * @param {function} f - function we are funding the root of with call signature f(x, ...args)\\n * @param {float} lower - lower bound for root\\n * @param {float} upper - upper bound for root\\n * @param {function} df - derivative of function we are funding the root of with call signature df(x, ...args)\\n * @param {float} tol - tolerance for convergence\\n * @param {int} maxIter - maximum of Newton steps to take\\n */\\nfunction brentSolve(f, lower, upper, args=[], tol=1e-8, maxIter=1000) {\\n\\tlet a = lower;\\n\\tlet b = upper;\\n let fa = f(a, ...args);\\n let fb = f(b, ...args);\\n\\n // We may have already guessed the solution\\n if (Math.abs(fa) < tol) return a;\\n if (Math.abs(fb) < tol) return b;\\n\\n // Solution is not bracketed\\n if (fa * fb >= 0) return null;\\n\\n // c is where we are closing in on the root\\n let c = a;\\n let fc = fa;\\n\\n \\tlet iter = 0;\\n while (iter++ < maxIter) {\\n \\tlet prevStep = b - a;\\n\\n\\t // Make sure a has the larger function value\\n\\t if (Math.abs(fc) < Math.abs(fb)) { \\n\\t \\t[a, b, c] = [b, c, b];\\n\\t \\t[fa, fb, fc] = [fb, fc, fb];\\n\\t }\\n\\n\\t // Next step toward root\\n\\t let newStep = (c - b) / 2.0;\\n\\n\\t // Adjusted tolerance\\n\\t let tolAdj = 1e-15 * Math.abs(b) + tol / 2;\\n\\n\\t // Found a root!\\n \\tif (Math.abs(newStep) <= tolAdj || fb === 0 ) {\\n \\t\\treturn b;\\n \\t}\\n\\n\\t // Try interpolation\\n\\t if (Math.abs(prevStep) > tolAdj && Math.abs(fa) > Math.abs(fb)) {\\n\\t \\tlet p;\\n\\t \\tlet q;\\n\\t \\tlet t1;\\n\\t \\tlet t2;\\n\\t \\tlet cb = c - b;\\n\\t \\tif (a === c) { // a and c coincide, so try linear interpolation\\n\\t \\t\\tt1 = fb / fa;\\n\\t \\t\\tp = cb * t1;\\n\\t \\t\\tq = 1.0 - t1;\\n\\t \\t}\\n\\t \\telse { // Use inverse quadratic interpolation\\n\\t \\t\\tq = fa / fc;\\n\\t \\t\\tt1 = fb / fc;\\n\\t \\t\\tt2 = fb / fa;\\n\\t \\t\\tp = t2 * (cb * q * (q - t1) - (b - a) * (t1 - 1.0));\\n\\t \\t\\tq = (q - 1.0) * (t1 - 1.0) * (t2 - 1.0);\\n\\t \\t}\\n\\n\\t \\t// Fix the signs on p and q\\n\\t \\tif (p > 0) q = -q;\\n\\t \\telse p = -p;\\n\\n\\t \\t// Accept the step if it's not too large and falls in interval\\n\\t \\tif (p < (0.75 * cb * q - Math.abs(tolAdj * q) / 2.0) \\n\\t \\t\\t&& p < Math.abs(prevStep * q / 2.0)) { \\n\\t\\t newStep = p / q;\\n\\t \\t}\\n\\t }\\n\\n\\t // If we can't do interpolation, do bisection\\n\\t // First make sure step is not smaller than the tolerance\\n if (Math.abs(newStep) < tolAdj) {\\n\\t newStep = (newStep > 0) ? tolAdj : -tolAdj;\\n }\\n \\n // Swap with the previous approximation\\n a = b;\\n fa = fb;\\n\\n // Take the step\\n b += newStep;\\n fb = f(b, ...args);\\n \\n \\t// Adjust c so that the sign of f(c) is opposite f(b)\\n if ((fb > 0 && fc > 0) || (fb < 0 && fc < 0)) {\\n c = a; \\n fc = fa;\\n }\\n }\\n\\n // If we did not converge, return null\\n return null;\\n}\\n\\n\\n\\nfunction f(x, beta, n) {return beta / (1.0 + Math.pow(x, n));}\\n\\n\\nfunction ff(x, betax, nx, betay, ny) {\\n return betax / (1.0 + Math.pow(f(x, betay, ny), nx));\\n}\\n\\n\\nfunction rootFun(x, betax, nx, betay, ny) {\\n return x - ff(x, betax, nx, betay, ny);\\n}\\n\\n\\nfunction derivff(x, betax, nx, betay, ny) {\\n let fy = betay / (1.0 + Math.pow(x, ny));\\n let fynx = Math.pow(fy, nx);\\n\\n let num = nx * ny * Math.pow(x, ny - 1.0) * betax * fynx * fy;\\n let denom = Math.pow(betay * (1.0 + fynx), 2);\\n\\n return num / denom;\\n}\\n\\n\\nfunction derivRootFun(x, betax, nx, betay, ny) {\\n return 1.0 - derivff(x, betax, nx, betay, ny);\\n}\\n\\n\\nfunction leftRoot(betax, nx, betay, ny, tol=1e-8, maxIters=200) {\\n let args = [betax, nx, betay, ny];\\n\\n return newtonSolve(\\n 0.0,\\n rootFun,\\n derivRootFun,\\n args=args,\\n tol=tol,\\n maxIters=maxIters,\\n );\\n}\\n\\n\\nfunction rightRoot(betax, nx, betay, ny, tol=1e-8, maxIters=200) {\\n let args = [betax, nx, betay, ny];\\n\\n return newtonSolve(\\n betay,\\n rootFun,\\n derivRootFun,\\n args=args,\\n tol=tol,\\n maxIters=maxIters,\\n );\\n}\\n\\n\\nfunction findRoots(betax, nx, betay, ny, tol=1e-8, nudge=1e-4) {\\n let x1 = leftRoot(betax, nx, betay, ny, tol=tol);\\n let x3 = rightRoot(betax, nx, betay, ny, tol=tol);\\n let args = [betax, nx, betay, ny];\\n\\n // If both null, try Brent's method\\n if (x1 === null) {\\n if (x3 === null) {\\n return [brentSolve(\\n rootFun,\\n 0.0,\\n betay,\\n args=args,\\n tol=tol\\n )\\n ];\\n }\\n else return [x3];\\n }\\n\\n if (x3 === null) return [x1];\\n if (Math.abs(x1 - x3) < 2.0 * nudge) return [x1];\\n\\n // Make sure x1 < x3\\n if (x1 > x3) [x1, x3] = [x3, x1];\\n\\n // Get the middle root with Brent's method\\n let x2 = brentSolve(\\n rootFun,\\n x1 + nudge,\\n x3 - nudge,\\n args=args,\\n tol=tol\\n );\\n\\n if (x2 !== null) return [x1, x2, x3];\\n else return [x1];\\n}\\n\\n\\nfunction callback() {\\n // Extract data from source and sliders\\n let x_x = cds.data['x_x'];\\n let x_y = cds.data['x_y'];\\n let y_x = cds.data['y_x'];\\n let y_y = cds.data['y_y'];\\n let beta_x = beta_x_slider.value;\\n let beta_y = beta_y_slider.value;\\n let n = n_slider.value\\n\\n // Update nullclines\\n for (let i = 0; i < x_y.length; i++) {\\n x_x[i] = beta_x / (1 + Math.pow(y_x[i], n));\\n y_y[i] = beta_y / (1 + Math.pow(x_y[i], n));\\n }\\n\\n // Update fixed points\\n let xfp = findRoots(beta_x, n, beta_y, n);\\n if (xfp === null) {\\n cdsStable.data['x'] = [];\\n cdsStable.data['y'] = [];\\n cdsUnstable.data['x'] = [];\\n cdsUnstable.data['y'] = [];\\n }\\n else if (xfp.length === 1) {\\n cdsStable.data['x'] = xfp;\\n cdsStable.data['y'] = [f(xfp[0], beta_y, n)];\\n cdsUnstable.data['x'] = [];\\n cdsUnstable.data['y'] = [];\\n }\\n else {\\n cdsStable.data['x'] = [xfp[0], xfp[2]];\\n cdsStable.data['y'] = [f(xfp[0], beta_y, n), f(xfp[2], beta_y, n)];\\n cdsUnstable.data['x'] = [xfp[1]];\\n cdsUnstable.data['y'] = [f(xfp[1], beta_y, n)];\\n }\\n\\n // Emit changes\\n cds.change.emit();\\n cdsStable.change.emit();\\n cdsUnstable.change.emit();\\n}\\ncallback()\"}}]]]},\"width\":150,\"title\":\"\\u03b2x\",\"start\":0.1,\"end\":20,\"value\":10,\"step\":0.1}},{\"id\":\"p5162\"},{\"id\":\"p5163\"}]}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"47be5850-6d07-4810-a9eb-0af1c83ccdc7\",\"roots\":{\"p5262\":\"4975e177-b656-48b7-90e5-f8b6fc90089f\"},\"root_ids\":[\"p5262\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p5262" } }, "output_type": "display_data" } ], "source": [ "bokeh.io.show(biocircuits.jsplots.toggle_nullclines())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can investigate the nullclines by playing with the sliders. For $\\beta_x = \\beta_y = 10$ and $n = 4$, we clearly have three crossings of the nullclines, giving one unstable (the one in the middle) and two stable (the ones on the ends) fixed points. \n", "\n", "Play with the $n$ slider: By moving $n$ down, you can see that bistability persists at lower Hill coefficients. However, it requires a more delicate balancing act, where the values of $\\beta_x$ and $\\beta_y$ need to be large and close in magnitude. Then, at $n=1$, bistability is lost completely and the system becomes monostable. \n", "\n", "Even at higher Hill coefficients, the strengths of the promoters must still be balanced. If $\\beta_x$ and $\\beta_y$ are very different from each other, we again have monostability. You can see this by setting $\\beta_x = 10$, $\\beta_y = 1.5$, and $n = 5$ with the sliders.\n", "\n", "The classic synthetic toggle circuit provides an ideal example of how synthetic biology can be used to design, create, and test simple circuits in living cells. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conclusions: Bistability and hysteresis are powerful features that can be generated through remarkably simple circuits. \n", "\n", "Taken together, our analysis of the positive autoregulatory and the toggle switch revealed some key design principles for bistability and hysteresis:\n", "\n", "1. Positive transcriptional feedback loops of 1 or 2 repressors can generate bistability. (Although we did not show it here, the same principles extend to larger feedback loops as well.)\n", "2. Ultrasensitivity within the positive feedback loop is necessary for bistability. However, it is not sufficient, as bistability also requires balance among other parameters. \n", "3. Bistable systems exhibit hysteresis, which allows cells to permanently switch states in response to a transient input signal. \n", "\n", "Later in the course, we will continue to analyze this system and its stability, learning how to further characterize dynamical systems beyond their nullclines. We will also explore multistable circuit architectures that can scale to produce many stable states. We are only beginning to explore the many fascinating aspects of multistable systems." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## References\n", "\n", "- Clevers, et al., Voices: What is your conceptual definition of \"cell type\" in the context of a mature organism?, _Cell Systems_, 4, 255–259, 2017. ([link](https://doi.org/10.1016/j.cels.2017.03.006))\n", "- Ferrell, J. E., _Xenopus_ oocyte maturation: New lessons from a good egg, _BioEssays_, 21, 833–842, 1999. ([link](https://doi.org/10.1002/(SICI)1521-1878(199910)21:10%3C833::AID-BIES5%3E3.0.CO;2-P))\n", "- Gardner, T. S., Cantor, C. R., and Collins, J. J., Construction of a genetic toggle switch in _Escherichia coli_, _Nature_, 403, 339–342, 2000. ([link](https://doi.org/10.1038/35002131)) \n", "- Ptashne, M., _A Genetic Switch, 3rd Ed._, Cold Spring Harbor Laboratory Press, 2004. ([link](http://www.cshteaching.org/home_genetic_switch.php)) \n", "- Regev, A., et al., Science Forum: The Human Cell Atlas, _eLife_, 6, e27041, 2017. ([link](https://doi.org/10.7554/eLife.27041))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Technical appendix" ] }, { "cell_type": "markdown", "metadata": { "nbsphinx-toctree": { "maxdepth": 1 }, "tags": [] }, "source": [ "- [3a. Nondimensionalization](../technical_appendices/03a_nondimensionalization.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "
\n", "\n", "## Problems" ] }, { "cell_type": "markdown", "metadata": { "nbsphinx-toctree": { "maxdepth": 1 }, "tags": [] }, "source": [ "- [3.1: Modes of bistability](../problems/03/problem_3.1.ipynb)\n", "- [3.2: Controlling an autoactivation circuit](../problems/03/problem_3.2.ipynb)\n", "- [3.3: Autoactivation, bistability, and the importance of leakage](../problems/03/problem_3.3.ipynb)\n", "- [3.4: Modeling inducers in a toggle switch](../problems/03/problem_3.4.ipynb)\n", "- [3.5: Negative autoregulation including mRNA dynamics](../problems/03/problem_3.5.ipynb)\n", "- [3.6: Noncooperative bistability with a growth-determined positive feedback circuit](../problems/03/problem_3.6.ipynb)\n", "- [3.7: Design principles for toggles](../problems/03/problem_3.7.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python implementation: CPython\n", "Python version : 3.10.10\n", "IPython version : 8.10.0\n", "\n", "numpy : 1.23.5\n", "scipy : 1.10.0\n", "bokeh : 3.1.0\n", "biocircuits: 0.1.9\n", "jupyterlab : 3.5.3\n", "\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p numpy,scipy,bokeh,biocircuits,jupyterlab" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.10" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "position": { "height": "730.4000244140625px", "left": "486.6000061035156px", "right": "20px", "top": "120px", "width": "517.4000244140625px" }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }