{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis of the repressilator\n", "\n", "(c) 2018 Justin Bois. With the exception of pasted graphics, where the source is noted, this work is licensed under a [Creative Commons Attribution License CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/). All code contained herein is licensed under an [MIT license](https://opensource.org/licenses/MIT).\n", "\n", "This document was prepared at [Caltech](http://www.caltech.edu) with financial support from the [Donna and Benjamin M. Rosen Bioengineering Center](http://rosen.caltech.edu).\n", "\n", "\n", "\n", "*This tutorial was generated from an Jupyter notebook. You can download the notebook [here](l08_repressilator.ipynb).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, before we begin, I will import the modules necessary to do the analysis." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var 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", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var 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", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id !== undefined) {\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", " var cmd = \"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, {\n", " iopub: {\n", " output: function(msg) {\n", " var element_id = msg.content.text.trim();\n", " Bokeh.index[element_id].model.document.clear();\n", " delete Bokeh.index[element_id];\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " var 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", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\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", " var 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", " var 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", " var events = require('base/js/events');\n", " var 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", "\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", " var 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", " var el = document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\");\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", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };var element = document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\");\n", " if (element == null) {\n", " console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e1da5cc9-6e65-4a5f-b1a9-db2269a896b6' but no matching script tag was found. \")\n", " return false;\n", " }\n", "\n", " var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.15.min.js\"];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " \n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\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", " var cell = $(document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", "\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(js_urls, function() {\n", " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var 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\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 var 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 var el = document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\");\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\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e1da5cc9-6e65-4a5f-b1a9-db2269a896b6' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.15.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.15.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.15.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.15.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\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 var cell = $(document.getElementById(\"e1da5cc9-6e65-4a5f-b1a9-db2269a896b6\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "# The workhorses\n", "import numpy as np\n", "import scipy.integrate\n", "import scipy.optimize\n", "\n", "# Plotting modules\n", "import bokeh.models\n", "import bokeh.plotting\n", "import bokeh.io\n", "import ipywidgets\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The dynamical equations and fixed point\n", "\n", "The dynamical equations for the simplified repressilator are\n", "\n", "\\begin{align}\n", "\\frac{\\mathrm{d}x_1}{\\mathrm{d}t} &= \\frac{\\beta}{1+x_3^n} - x_1 \\\\[1em]\n", "\\frac{\\mathrm{d}x_2}{\\mathrm{d}t} &= \\frac{\\beta}{1+x_1^n} - x_2 \\\\[1em]\n", "\\frac{\\mathrm{d}x_3}{\\mathrm{d}t} &= \\frac{\\beta}{1+x_2^n} - x_3\n", "\\end{align}\n", "\n", "We derived in lecture that there is a single fixed point, $x_1 = x_2 = x_3 \\equiv x_0$ with $\\beta = x_0(1 + x_0^n)$. We will first write a function to compute this fixed point.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def f(x, beta, n):\n", " \"\"\"\n", " Equation for nullcline for repressilator.\n", " \"\"\"\n", " return beta / (1 + x**n)\n", "\n", "def fixed_point(beta, n):\n", " \"\"\"\n", " Computes the fixed point of the simplified dimensionless repressilator.\n", " \"\"\"\n", " \n", " def opt_fun(x):\n", " return x - f(f(f(x, beta, n), beta, n), beta, n)\n", " \n", " return scipy.optimize.brentq(opt_fun, 0, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Temporal dynamics\n", "\n", "We can integrate the dynamical equations to see the levels of the respective proteins. We use interactive plotting of the result so we can see how the dynamics depend on the parameters $\\beta$ and $n$. Note that to have these interactions, you need to be running this Jupyter notebook and have ipywidgets installed; the interactivity is lost in the static HTML rendering." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"f92db0bb-a9ea-4963-a959-69b418cd6dac\":{\"roots\":{\"references\":[{\"attributes\":{\"source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"}},\"id\":\"77abc519-d2f5-41d0-9a0a-10422bc234d8\",\"type\":\"CDSView\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"e002ffaa-1ec8-4061-a504-c98ba6f68f01\",\"type\":\"PanTool\"},{\"id\":\"55b9c140-fdb8-4fba-8f06-97d1950250eb\",\"type\":\"WheelZoomTool\"},{\"id\":\"46434776-f5bb-4c53-b7fe-d346f0dce78b\",\"type\":\"BoxZoomTool\"},{\"id\":\"240e4e91-3aaa-44ab-849e-17e20bb2559a\",\"type\":\"SaveTool\"},{\"id\":\"011756aa-9c01-4d42-9b40-b14ededf70af\",\"type\":\"ResetTool\"},{\"id\":\"e9c7c9a1-0998-4e47-9f40-a1117837e34d\",\"type\":\"HelpTool\"}]},\"id\":\"35d562b3-9250-4a3f-a1a8-9227649eaf66\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4950cedb-e194-42da-a955-7653ab5613e0\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cbcf5664-56d6-4d25-ae68-a5337eb3489d\",\"type\":\"BasicTicker\"}},\"id\":\"ca559c4c-aad3-4413-a62e-aa3520dcf90b\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"dodgerblue\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x1\"}},\"id\":\"c5d16767-1e66-4feb-b28e-f3590e418409\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"04e45c2e-292e-4c95-a0c9-59b584ab0d73\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"41905a21-539e-47b2-b1a5-ace23c23a627\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"t\",\"formatter\":{\"id\":\"3a3139e7-41fb-45d8-93a3-5606fc99bf91\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cbcf5664-56d6-4d25-ae68-a5337eb3489d\",\"type\":\"BasicTicker\"}},\"id\":\"fb3e6b92-9598-45d5-9e47-bbee2a4c1486\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"d8cea32c-3684-4153-b8aa-956f7e7ec1cd\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"52037be8-9f0a-4dac-839f-6050116ab732\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cadf633a-c05e-434c-b765-b01b0adf2189\",\"type\":\"BasicTicker\"}},\"id\":\"b751eb50-642b-44cf-91f9-12cd5ab81d75\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c5d16767-1e66-4feb-b28e-f3590e418409\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2f1e8608-2ff3-4ae8-ac47-bd089a6b3b1e\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"77abc519-d2f5-41d0-9a0a-10422bc234d8\",\"type\":\"CDSView\"}},\"id\":\"51c94956-7053-4d1e-a02b-ded7a89ba387\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"cadf633a-c05e-434c-b765-b01b0adf2189\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"e9c7c9a1-0998-4e47-9f40-a1117837e34d\",\"type\":\"HelpTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cadf633a-c05e-434c-b765-b01b0adf2189\",\"type\":\"BasicTicker\"}},\"id\":\"a21e48a1-9e05-487c-a296-46425ae65522\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x1\"}},\"id\":\"2f1e8608-2ff3-4ae8-ac47-bd089a6b3b1e\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"e002ffaa-1ec8-4061-a504-c98ba6f68f01\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"52037be8-9f0a-4dac-839f-6050116ab732\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"55b9c140-fdb8-4fba-8f06-97d1950250eb\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"04e45c2e-292e-4c95-a0c9-59b584ab0d73\",\"type\":\"BoxAnnotation\"}},\"id\":\"46434776-f5bb-4c53-b7fe-d346f0dce78b\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"240e4e91-3aaa-44ab-849e-17e20bb2559a\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"011756aa-9c01-4d42-9b40-b14ededf70af\",\"type\":\"ResetTool\"},{\"attributes\":{\"items\":[{\"id\":\"2a846e73-f815-4f09-b474-acfda8d05bba\",\"type\":\"LegendItem\"},{\"id\":\"41935dc7-ba40-4573-b149-4bb91f89a1e5\",\"type\":\"LegendItem\"},{\"id\":\"f27f2e25-9d71-4525-b48d-e849b871ca7b\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"921893e3-e27b-4140-bb75-ec1b98ab620c\",\"type\":\"Legend\"},{\"attributes\":{\"label\":{\"value\":\"1\"},\"renderers\":[{\"id\":\"51c94956-7053-4d1e-a02b-ded7a89ba387\",\"type\":\"GlyphRenderer\"}]},\"id\":\"2a846e73-f815-4f09-b474-acfda8d05bba\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_color\":\"tomato\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x2\"}},\"id\":\"53e40e67-ca19-4670-9f0b-76ffd3ba817c\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"2\"},\"renderers\":[{\"id\":\"9034dee8-4a3a-4471-b5f3-418985de58b8\",\"type\":\"GlyphRenderer\"}]},\"id\":\"41935dc7-ba40-4573-b149-4bb91f89a1e5\",\"type\":\"LegendItem\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"below\":[{\"id\":\"fb3e6b92-9598-45d5-9e47-bbee2a4c1486\",\"type\":\"LinearAxis\"}],\"border_fill_alpha\":{\"value\":0},\"left\":[{\"id\":\"b751eb50-642b-44cf-91f9-12cd5ab81d75\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"renderers\":[{\"id\":\"fb3e6b92-9598-45d5-9e47-bbee2a4c1486\",\"type\":\"LinearAxis\"},{\"id\":\"ca559c4c-aad3-4413-a62e-aa3520dcf90b\",\"type\":\"Grid\"},{\"id\":\"b751eb50-642b-44cf-91f9-12cd5ab81d75\",\"type\":\"LinearAxis\"},{\"id\":\"a21e48a1-9e05-487c-a296-46425ae65522\",\"type\":\"Grid\"},{\"id\":\"04e45c2e-292e-4c95-a0c9-59b584ab0d73\",\"type\":\"BoxAnnotation\"},{\"id\":\"921893e3-e27b-4140-bb75-ec1b98ab620c\",\"type\":\"Legend\"},{\"id\":\"51c94956-7053-4d1e-a02b-ded7a89ba387\",\"type\":\"GlyphRenderer\"},{\"id\":\"9034dee8-4a3a-4471-b5f3-418985de58b8\",\"type\":\"GlyphRenderer\"},{\"id\":\"968dd34a-ebd8-4126-b4ee-4445c7487025\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"41905a21-539e-47b2-b1a5-ace23c23a627\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"35d562b3-9250-4a3f-a1a8-9227649eaf66\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"d8cea32c-3684-4153-b8aa-956f7e7ec1cd\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"89d1bd1e-afc9-46c8-9e9c-60f19ab782b2\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"44935a33-0a3a-41e3-9688-99431706c68e\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"4950cedb-e194-42da-a955-7653ab5613e0\",\"type\":\"LinearScale\"}},\"id\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x3\"}},\"id\":\"97df4826-9f89-476e-b56b-9a5a3a04d64c\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"cbcf5664-56d6-4d25-ae68-a5337eb3489d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"53e40e67-ca19-4670-9f0b-76ffd3ba817c\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5f621277-0f6e-43b8-89a8-919be09d248e\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"38a738af-4d78-4743-9f9c-9d4525ff98ac\",\"type\":\"CDSView\"}},\"id\":\"9034dee8-4a3a-4471-b5f3-418985de58b8\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x1\",\"x2\",\"x3\",\"t\"],\"data\":{\"t\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]},\"x1\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]},\"x2\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]},\"x3\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]}},\"selected\":null,\"selection_policy\":null},\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x2\"}},\"id\":\"5f621277-0f6e-43b8-89a8-919be09d248e\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"44935a33-0a3a-41e3-9688-99431706c68e\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"}},\"id\":\"38a738af-4d78-4743-9f9c-9d4525ff98ac\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3a3139e7-41fb-45d8-93a3-5606fc99bf91\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"slateblue\",\"line_width\":3,\"x\":{\"field\":\"t\"},\"y\":{\"field\":\"x3\"}},\"id\":\"de2e961a-5bd2-48bb-87ad-0217cf61765c\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"89d1bd1e-afc9-46c8-9e9c-60f19ab782b2\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"}},\"id\":\"5296893c-0375-4ed1-a3bc-2a2547e76f13\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"41ffe22c-7abd-4c9b-bdb2-050feccba52b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"de2e961a-5bd2-48bb-87ad-0217cf61765c\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"97df4826-9f89-476e-b56b-9a5a3a04d64c\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"5296893c-0375-4ed1-a3bc-2a2547e76f13\",\"type\":\"CDSView\"}},\"id\":\"968dd34a-ebd8-4126-b4ee-4445c7487025\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"3\"},\"renderers\":[{\"id\":\"968dd34a-ebd8-4126-b4ee-4445c7487025\",\"type\":\"GlyphRenderer\"}]},\"id\":\"f27f2e25-9d71-4525-b48d-e849b871ca7b\",\"type\":\"LegendItem\"}],\"root_ids\":[\"cf090d15-a679-4bbb-98fd-bba03d76974a\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.15\"}};\n", " var render_items = [{\"docid\":\"f92db0bb-a9ea-4963-a959-69b418cd6dac\",\"elementid\":\"984de7a4-c75a-4ac6-83fd-3aad178cf663\",\"modelid\":\"cf090d15-a679-4bbb-98fd-bba03d76974a\",\"notebook_comms_target\":\"c4f07e39-01bc-4e94-ab50-8f624d3ae541\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "cf090d15-a679-4bbb-98fd-bba03d76974a" } }, "output_type": "display_data" } ], "source": [ "# Define right hand side of ODEs\n", "def dx_dt(x, t, beta, n):\n", " \"\"\"\n", " Returns 3-array of (dx_1/dt, dx_2/dt, dx_3/dt)\n", " \"\"\"\n", " x_1, x_2, x_3 = x\n", " return np.array([beta / (1 + x_3**n) - x_1,\n", " beta / (1 + x_1**n) - x_2,\n", " beta / (1 + x_2**n) - x_3])\n", "\n", "# Initial condiations\n", "x0 = np.array([1, 1, 1.2])\n", "\n", "# Time points\n", "t = np.linspace(0, 30, 1000)\n", "\n", "# Choose parameters\n", "beta = 10.0\n", "n = 3\n", "\n", "# Solve it!\n", "x = scipy.integrate.odeint(dx_dt, x0, t, args=(beta, n))\n", "\n", "# Plot the solutions\n", "source = bokeh.models.ColumnDataSource(\n", " data=dict(x1=x[:,0], x2=x[:,1], x3=x[:,2], t=t))\n", "p = bokeh.plotting.figure(width=600, height=300, x_axis_label='t',\n", " border_fill_alpha=0, background_fill_alpha=0)\n", "p.line('t', 'x1', source=source, line_width=3, color='dodgerblue', legend='1')\n", "p.line('t', 'x2', source=source, line_width=3, color='tomato', legend='2')\n", "p.line('t', 'x3', source=source, line_width=3, color='slateblue', legend='3')\n", "p.legend.location = 'top_left'\n", "bokeh.io.show(p, notebook_handle=True)\n", "\n", "# Set up callbacks\n", "def update(n=3, beta=10):\n", " # Generate the new curve\n", " x = scipy.integrate.odeint(dx_dt, x0, t, args=(beta, n))\n", "\n", " # Re-source data\n", " source.data = dict(x1=x[:,0], x2=x[:,1], x3=x[:,2], t=t)\n", " bokeh.io.push_notebook()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6128282eb8124ff5aae79fc1fd8fc4de", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=3.0, description='n', max=5.0, min=1.0), FloatSlider(value=10.0, descr…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ipywidgets.interactive(update, n=ipywidgets.FloatSlider(min=1, max=5, value=3), \n", " beta=ipywidgets.FloatSlider(min=1, max=100, value=10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We clearly see oscillations and can investigate how the parameter values change them using the widgets." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trajectory in phase space\n", "\n", "Making a stream plot is difficult in multiple dimensions. Instead, we will plot the trajectory of $x_1$ and $x_2$ in the $x_1$-$x_2$ plane. We indicate the fixed point with a circle." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"0ba2e87a-7611-4d76-b60b-09c52feddce4\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"column_names\":[\"x1\",\"x2\"],\"data\":{\"x1\":[1.6974718808441565],\"x2\":[1.6974718808441565]},\"selected\":null,\"selection_policy\":null},\"id\":\"d325ab38-c981-4a61-a4a8-bf57b7e1e0a6\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"d325ab38-c981-4a61-a4a8-bf57b7e1e0a6\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"b19da63a-c9f6-4c4a-8c69-1094cc8026ea\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"c548907f-aa9c-4cbe-977b-3dbade26d4da\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"163694ec-cac4-4327-a0d0-c2950ef264e0\",\"type\":\"CDSView\"}},\"id\":\"08ba6743-82a3-4e61-9a34-d15088d0da5b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"8fdb46a8-8c48-4871-b87b-cfe0f2f6779b\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"845ff012-6891-4a49-a76d-77982bd251cc\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"8fdb46a8-8c48-4871-b87b-cfe0f2f6779b\",\"type\":\"LinearAxis\"},{\"id\":\"f3e377ed-7862-42fa-ae80-c4cbe68fd204\",\"type\":\"Grid\"},{\"id\":\"845ff012-6891-4a49-a76d-77982bd251cc\",\"type\":\"LinearAxis\"},{\"id\":\"07debea6-3720-445d-86ae-15df83fc3875\",\"type\":\"Grid\"},{\"id\":\"953a19a0-2cb6-4f0d-ab8b-6f4a86f902ca\",\"type\":\"BoxAnnotation\"},{\"id\":\"08ba6743-82a3-4e61-9a34-d15088d0da5b\",\"type\":\"GlyphRenderer\"},{\"id\":\"2f37de0c-58e3-4ead-ab9c-094724b9df54\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"57b5c6fa-a64c-4d0a-89c5-c4243fa003b1\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"12144a3e-282b-40ca-8e25-c4c7cbcf4eb2\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"dd360a34-1576-48c5-93fc-93f6c9c22f83\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"4c79a42a-c997-4653-a059-0cc7a0431057\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"98e2f2b0-e7c8-454b-a2a9-1a25d5e31592\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"734b182a-69cd-4624-9f05-b18638f92809\",\"type\":\"LinearScale\"}},\"id\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"6c11d3cb-38a7-4da1-a951-c226b7b2bf65\",\"type\":\"PanTool\"},{\"id\":\"ea7c5bcb-0357-4bd1-ab28-efdcdd298445\",\"type\":\"WheelZoomTool\"},{\"id\":\"f7b5d272-6b4a-4f5c-b8f1-244862ed9531\",\"type\":\"BoxZoomTool\"},{\"id\":\"34691f05-701d-465c-a375-df38d6f34d0d\",\"type\":\"SaveTool\"},{\"id\":\"e9976291-ec26-457a-ba5e-42a2f2cb676f\",\"type\":\"ResetTool\"},{\"id\":\"a799d04f-4ada-4e7e-88a4-8018a93ffff2\",\"type\":\"HelpTool\"}]},\"id\":\"12144a3e-282b-40ca-8e25-c4c7cbcf4eb2\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"dd360a34-1576-48c5-93fc-93f6c9c22f83\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_color\":{\"value\":\"tomato\"},\"line_color\":{\"value\":\"tomato\"},\"size\":{\"units\":\"screen\",\"value\":12},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"b19da63a-c9f6-4c4a-8c69-1094cc8026ea\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"98e2f2b0-e7c8-454b-a2a9-1a25d5e31592\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4c79a42a-c997-4653-a059-0cc7a0431057\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"734b182a-69cd-4624-9f05-b18638f92809\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4d7ad72b-4699-48c7-809f-13e255b5d6fd\",\"type\":\"BasicTicker\"}},\"id\":\"f3e377ed-7862-42fa-ae80-c4cbe68fd204\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"x1\",\"formatter\":{\"id\":\"1ef94c26-7b99-4425-bb72-cefca0ca290c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4d7ad72b-4699-48c7-809f-13e255b5d6fd\",\"type\":\"BasicTicker\"}},\"id\":\"8fdb46a8-8c48-4871-b87b-cfe0f2f6779b\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4d7ad72b-4699-48c7-809f-13e255b5d6fd\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"x2\",\"formatter\":{\"id\":\"c2e5c18c-ace3-4706-a687-fa2e90f3b081\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ab00046e-a5fa-4ccd-9655-ccb177e6e32c\",\"type\":\"BasicTicker\"}},\"id\":\"845ff012-6891-4a49-a76d-77982bd251cc\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"ab00046e-a5fa-4ccd-9655-ccb177e6e32c\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"953a19a0-2cb6-4f0d-ab8b-6f4a86f902ca\",\"type\":\"BoxAnnotation\"}},\"id\":\"f7b5d272-6b4a-4f5c-b8f1-244862ed9531\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"34691f05-701d-465c-a375-df38d6f34d0d\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"e9976291-ec26-457a-ba5e-42a2f2cb676f\",\"type\":\"ResetTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ab00046e-a5fa-4ccd-9655-ccb177e6e32c\",\"type\":\"BasicTicker\"}},\"id\":\"07debea6-3720-445d-86ae-15df83fc3875\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":12},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"c548907f-aa9c-4cbe-977b-3dbade26d4da\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"c2e5c18c-ace3-4706-a687-fa2e90f3b081\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"953a19a0-2cb6-4f0d-ab8b-6f4a86f902ca\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"6c11d3cb-38a7-4da1-a951-c226b7b2bf65\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"d325ab38-c981-4a61-a4a8-bf57b7e1e0a6\",\"type\":\"ColumnDataSource\"}},\"id\":\"163694ec-cac4-4327-a0d0-c2950ef264e0\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"ea7c5bcb-0357-4bd1-ab28-efdcdd298445\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"a799d04f-4ada-4e7e-88a4-8018a93ffff2\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"07de6ce6-dd86-4890-aff2-ad49beeb2add\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1ef94c26-7b99-4425-bb72-cefca0ca290c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"57b5c6fa-a64c-4d0a-89c5-c4243fa003b1\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"9600e2bb-8bdc-44f7-aee3-364a30ccfa5b\",\"type\":\"ColumnDataSource\"}},\"id\":\"5d2ab909-dab0-4207-bae1-28624cbb9547\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"97d6a77a-9d4e-4015-8041-ed72f9ed2386\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"9600e2bb-8bdc-44f7-aee3-364a30ccfa5b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"97d6a77a-9d4e-4015-8041-ed72f9ed2386\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"07de6ce6-dd86-4890-aff2-ad49beeb2add\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"5d2ab909-dab0-4207-bae1-28624cbb9547\",\"type\":\"CDSView\"}},\"id\":\"2f37de0c-58e3-4ead-ab9c-094724b9df54\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x1\",\"x2\"],\"data\":{\"x1\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]},\"x2\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1000]}},\"selected\":null,\"selection_policy\":null},\"id\":\"9600e2bb-8bdc-44f7-aee3-364a30ccfa5b\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"72ca29d6-e08d-43bf-8348-9f78d4654a06\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.15\"}};\n", " var render_items = [{\"docid\":\"0ba2e87a-7611-4d76-b60b-09c52feddce4\",\"elementid\":\"735d7b20-4c93-442a-b0b3-7c8143bfdc11\",\"modelid\":\"72ca29d6-e08d-43bf-8348-9f78d4654a06\",\"notebook_comms_target\":\"4eb0e066-1565-4d4b-91dc-13caa7d60950\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "72ca29d6-e08d-43bf-8348-9f78d4654a06" } }, "output_type": "display_data" } ], "source": [ "# Compute fixed point\n", "x_fp = fixed_point(beta, n)\n", "\n", "# Plot trajectory\n", "source = bokeh.models.ColumnDataSource(data=dict(x1=x[:,0], x2=x[:,1]))\n", "source_fp = bokeh.models.ColumnDataSource(data=dict(x1=[x_fp], x2=[x_fp]))\n", "p = bokeh.plotting.figure(height=400, width=400, x_axis_label='x1', y_axis_label='x2')\n", "fp = p.circle('x1', 'x2', source=source_fp, color='tomato', size=12)\n", "p.line('x1', 'x2', source=source, line_width=2)\n", "bokeh.io.show(p, notebook_handle=True)\n", "\n", "# Set up callbacks\n", "def update_traj(n=3, beta=10):\n", " # Generate the new curve\n", " x = scipy.integrate.odeint(dx_dt, x0, t, args=(beta, n))\n", " \n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", " x_fp = fixed_point(beta, n)\n", "\n", " # Re-source data\n", " source.data = dict(x1=x[:,0], x2=x[:,1])\n", " source_fp.data = dict(x1=np.array([x_fp]), x2=np.array([x_fp]))\n", " \n", " bokeh.io.push_notebook()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9d5ffa443f0947d3a66b0f3ea1e453b1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=3.0, description='n', max=5.0, min=1.0), FloatSlider(value=10.0, descr…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ipywidgets.interactive(update_traj, n=ipywidgets.FloatSlider(min=1, max=5, value=3), \n", " beta=ipywidgets.FloatSlider(min=1, max=100, value=10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear stability diagram\n", "\n", "It is useful to make a **linear stability diagram**, which is a map of phase space highlighting stable and unstable regions. We know the bifurcation line is\n", "\n", "\\begin{align}\n", "\\beta = \\frac{n}{2}\\left(\\frac{n}{2} - 1\\right)^{-\\frac{n+1}{n}}\n", "\\end{align}\n", "\n", "We can plot this line and delineate the regions of stability and instability." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"cfdece77-d30e-407c-841a-229ebf0f3b05\":{\"roots\":{\"references\":[{\"attributes\":{\"text_color\":{\"value\":\"black\"},\"x\":{\"value\":3.5},\"y\":{\"value\":100}},\"id\":\"a5fb6cf2-46d3-4b8f-bfd9-15f11df7e8a9\",\"type\":\"Text\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"9404d16b-08f5-458d-b5eb-9d96a4760b76\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"012ccc22-74b2-4c9e-8d3e-caba6ea6b2bd\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"251c5767-eb6d-4f96-b97c-3dd179e9d6d4\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"9404d16b-08f5-458d-b5eb-9d96a4760b76\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"13c7ca2c-3b0b-4e90-8154-b27d1847e47b\",\"type\":\"CDSView\"}},\"id\":\"d261e431-a606-4dd8-a1be-1b4b4da2eaba\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"text_color\":{\"value\":\"black\"},\"x\":{\"value\":2.1},\"y\":{\"value\":2}},\"id\":\"8e3c306c-46b4-4e10-b3df-d46e863b04b5\",\"type\":\"Text\"},{\"attributes\":{\"source\":{\"id\":\"012ccc22-74b2-4c9e-8d3e-caba6ea6b2bd\",\"type\":\"ColumnDataSource\"}},\"id\":\"13c7ca2c-3b0b-4e90-8154-b27d1847e47b\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"text\"],\"data\":{\"text\":[\"unstable\"]},\"selected\":null,\"selection_policy\":null},\"id\":\"2a1b12c4-90e4-48df-a087-2a597690097d\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":0.7,\"fill_color\":\"seashell\",\"line_alpha\":0.7,\"line_color\":\"seashell\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"42d6ef80-1fad-483a-a6b7-4f54252d1917\",\"type\":\"Patch\"},{\"attributes\":{\"data_source\":{\"id\":\"f717a49f-f8a6-40a7-8afe-8ff06db4b231\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"8e3c306c-46b4-4e10-b3df-d46e863b04b5\",\"type\":\"Text\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"45adca64-7e02-4bbf-89e0-0e3b88b21d2f\",\"type\":\"Text\"},\"selection_glyph\":null,\"view\":{\"id\":\"615ac71f-663a-4fdd-a529-0bef2b67e8ba\",\"type\":\"CDSView\"}},\"id\":\"0c02c32a-7773-4391-9dd4-d912f6843bd4\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[201]}},\"selected\":null,\"selection_policy\":null},\"id\":\"250b2bde-5784-4632-971a-fd262dce4618\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"f19d6943-611e-480d-a929-1935bfee1768\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"728f88c5-1a59-4d12-a727-cf377f02e9da\",\"type\":\"LogAxis\"}],\"plot_height\":400,\"plot_width\":500,\"renderers\":[{\"id\":\"f19d6943-611e-480d-a929-1935bfee1768\",\"type\":\"LinearAxis\"},{\"id\":\"eb61737f-4948-4193-9693-9afceffa147c\",\"type\":\"Grid\"},{\"id\":\"728f88c5-1a59-4d12-a727-cf377f02e9da\",\"type\":\"LogAxis\"},{\"id\":\"80d10f35-2050-43fa-b050-bb01a34822be\",\"type\":\"Grid\"},{\"id\":\"3988e197-2790-42d5-8212-1cddfc3aa769\",\"type\":\"BoxAnnotation\"},{\"id\":\"2b995df7-c00f-4fc2-beb7-c793038a48c0\",\"type\":\"GlyphRenderer\"},{\"id\":\"d261e431-a606-4dd8-a1be-1b4b4da2eaba\",\"type\":\"GlyphRenderer\"},{\"id\":\"0c02c32a-7773-4391-9dd4-d912f6843bd4\",\"type\":\"GlyphRenderer\"},{\"id\":\"0e68a089-032d-4d13-840d-c49f6a05872b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"b001198f-6e64-4251-8715-c7cc9768199a\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2e416099-35b3-44a1-995f-1b8f4ed42a28\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"2c93ab82-7038-4446-bebe-ffcb8e5e9bef\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"9e9dc38e-a3c5-410c-a22b-ef39333e9ea0\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"2234d993-2c6b-4219-840f-9fe1fe9506a5\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"4e321db3-1190-4125-9acf-9a50a4a712d8\",\"type\":\"LogScale\"}},\"id\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"fb7af80d-b0fc-4a69-bf67-fbec48f527ac\",\"type\":\"PanTool\"},{\"id\":\"acd28cc3-30dc-47f0-b70c-f190035ccee4\",\"type\":\"WheelZoomTool\"},{\"id\":\"52432ba6-388a-4203-8e3c-1c526753049b\",\"type\":\"BoxZoomTool\"},{\"id\":\"307b33c0-a1c3-4eb8-aa9e-39209a55091a\",\"type\":\"SaveTool\"},{\"id\":\"ef4d0aaa-2b3d-4ac4-80ca-780ca5384f13\",\"type\":\"ResetTool\"},{\"id\":\"d2d9a89c-77e5-4ee3-a239-cce4ef5c5383\",\"type\":\"HelpTool\"}]},\"id\":\"2e416099-35b3-44a1-995f-1b8f4ed42a28\",\"type\":\"Toolbar\"},{\"attributes\":{\"text_alpha\":{\"value\":0.1},\"text_color\":{\"value\":\"black\"},\"x\":{\"value\":2.1},\"y\":{\"value\":2}},\"id\":\"45adca64-7e02-4bbf-89e0-0e3b88b21d2f\",\"type\":\"Text\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"text\"],\"data\":{\"text\":[\"stable\"]},\"selected\":null,\"selection_policy\":null},\"id\":\"f717a49f-f8a6-40a7-8afe-8ff06db4b231\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"f717a49f-f8a6-40a7-8afe-8ff06db4b231\",\"type\":\"ColumnDataSource\"}},\"id\":\"615ac71f-663a-4fdd-a529-0bef2b67e8ba\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"end\":5,\"start\":2},\"id\":\"2c93ab82-7038-4446-bebe-ffcb8e5e9bef\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null},\"id\":\"2234d993-2c6b-4219-840f-9fe1fe9506a5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"2a1b12c4-90e4-48df-a087-2a597690097d\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a5fb6cf2-46d3-4b8f-bfd9-15f11df7e8a9\",\"type\":\"Text\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"56415577-a045-4ee7-8ed1-a5ddee2bf740\",\"type\":\"Text\"},\"selection_glyph\":null,\"view\":{\"id\":\"6d9b1e4d-38de-42f7-9b8d-cc4c72a04f94\",\"type\":\"CDSView\"}},\"id\":\"0e68a089-032d-4d13-840d-c49f6a05872b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"acd28cc3-30dc-47f0-b70c-f190035ccee4\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3988e197-2790-42d5-8212-1cddfc3aa769\",\"type\":\"BoxAnnotation\"}},\"id\":\"52432ba6-388a-4203-8e3c-1c526753049b\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"text_alpha\":{\"value\":0.1},\"text_color\":{\"value\":\"black\"},\"x\":{\"value\":3.5},\"y\":{\"value\":100}},\"id\":\"56415577-a045-4ee7-8ed1-a5ddee2bf740\",\"type\":\"Text\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"b001198f-6e64-4251-8715-c7cc9768199a\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"9e9dc38e-a3c5-410c-a22b-ef39333e9ea0\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"2a1b12c4-90e4-48df-a087-2a597690097d\",\"type\":\"ColumnDataSource\"}},\"id\":\"6d9b1e4d-38de-42f7-9b8d-cc4c72a04f94\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5e2f4c8e-1f7d-4d44-85d5-909e6b7d0e02\",\"type\":\"Patch\"},{\"attributes\":{},\"id\":\"4e321db3-1190-4125-9acf-9a50a4a712d8\",\"type\":\"LogScale\"},{\"attributes\":{\"plot\":{\"id\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0743739b-00f3-41c0-add9-e8a734d26c24\",\"type\":\"BasicTicker\"}},\"id\":\"eb61737f-4948-4193-9693-9afceffa147c\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"\\u03b2\",\"formatter\":{\"id\":\"293909a1-ae2b-4d12-acde-f6259badc333\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"578f9c24-cd90-4cf6-a3d6-c3fdcb05ec07\",\"type\":\"LogTicker\"}},\"id\":\"728f88c5-1a59-4d12-a727-cf377f02e9da\",\"type\":\"LogAxis\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"578f9c24-cd90-4cf6-a3d6-c3fdcb05ec07\",\"type\":\"LogTicker\"},{\"attributes\":{\"axis_label\":\"n\",\"formatter\":{\"id\":\"e9a21f9d-faea-4222-bf0d-88261c691abd\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0743739b-00f3-41c0-add9-e8a734d26c24\",\"type\":\"BasicTicker\"}},\"id\":\"f19d6943-611e-480d-a929-1935bfee1768\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"0743739b-00f3-41c0-add9-e8a734d26c24\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"578f9c24-cd90-4cf6-a3d6-c3fdcb05ec07\",\"type\":\"LogTicker\"}},\"id\":\"80d10f35-2050-43fa-b050-bb01a34822be\",\"type\":\"Grid\"},{\"attributes\":{\"ticker\":null},\"id\":\"293909a1-ae2b-4d12-acde-f6259badc333\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3988e197-2790-42d5-8212-1cddfc3aa769\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"fb7af80d-b0fc-4a69-bf67-fbec48f527ac\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":null,\"selection_policy\":null},\"id\":\"012ccc22-74b2-4c9e-8d3e-caba6ea6b2bd\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"307b33c0-a1c3-4eb8-aa9e-39209a55091a\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"ef4d0aaa-2b3d-4ac4-80ca-780ca5384f13\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"d2d9a89c-77e5-4ee3-a239-cce4ef5c5383\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"251c5767-eb6d-4f96-b97c-3dd179e9d6d4\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"e9a21f9d-faea-4222-bf0d-88261c691abd\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"250b2bde-5784-4632-971a-fd262dce4618\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"42d6ef80-1fad-483a-a6b7-4f54252d1917\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5e2f4c8e-1f7d-4d44-85d5-909e6b7d0e02\",\"type\":\"Patch\"},\"selection_glyph\":null,\"view\":{\"id\":\"6036becc-b882-49d8-9802-d9e8d4f0debd\",\"type\":\"CDSView\"}},\"id\":\"2b995df7-c00f-4fc2-beb7-c793038a48c0\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"250b2bde-5784-4632-971a-fd262dce4618\",\"type\":\"ColumnDataSource\"}},\"id\":\"6036becc-b882-49d8-9802-d9e8d4f0debd\",\"type\":\"CDSView\"}],\"root_ids\":[\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.15\"}};\n", " var render_items = [{\"docid\":\"cfdece77-d30e-407c-841a-229ebf0f3b05\",\"elementid\":\"8b287b99-3d34-4f5b-abcd-bec981a4b711\",\"modelid\":\"fc3ddbe4-6455-4d18-a681-d8f3b1f61f86\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "fc3ddbe4-6455-4d18-a681-d8f3b1f61f86" } }, "output_type": "display_data" } ], "source": [ "# Get bifurcation line\n", "n = np.linspace(2.01, 5, 200)\n", "beta = n / 2 * (n / 2 - 1)**(-(1 + 1/n))\n", "\n", "p = bokeh.plotting.figure(height=400, width=500, x_axis_label='n', y_axis_label='β',\n", " y_axis_type='log', x_range=[2, 5])\n", "p.patch(np.append(n, n[-1]), np.append(beta, beta[0]), color='seashell', alpha=0.7)\n", "p.line(n, beta, line_width=4, color='black')\n", "p.text(x=2.1, y=2, text=['stable'])\n", "p.text(x=3.5, y=100, text=['unstable'])\n", "bokeh.io.show(p);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }