{ "cells": [ { "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 != 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", " 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 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", " 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", " 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", " 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(\"1001\");\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) {\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() {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (var i = 0; i < css_urls.length; i++) {\n", " var url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error;\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 (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error;\n", " element.async = false;\n", " element.src = url;\n", " \n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " };var element = document.getElementById(\"1001\");\n", " if (element == null) {\n", " console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n", " return false;\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", " \n", " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.0.min.js\"];\n", " var css_urls = [];\n", " \n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " function(Bokeh) {\n", " \n", " \n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if (root.Bokeh !== undefined || force === true) {\n", " \n", " for (var 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", " var cell = $(document.getElementById(\"1001\")).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.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": "\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(\"1001\");\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) {\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() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\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 (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n \n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };var element = document.getElementById(\"1001\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n return false;\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 \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.0.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var 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 var cell = $(document.getElementById(\"1001\")).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.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": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "import scipy as sp\n", "import pandas as pd\n", "\n", "from bokeh.plotting import figure, show, output_notebook\n", "from bokeh.models import (\n", " ColumnDataSource, HoverTool\n", ")\n", "from bokeh.palettes import Blues, Reds\n", "\n", "from bokeh.tile_providers import get_provider, Vendors\n", "\n", "from sklearn.preprocessing import MinMaxScaler\n", "\n", "from pyproj import Proj, transform\n", "\n", "output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Why is Coronavirus all about Mathematics?\n", "\n", "\n", "On 11 March 2020, the World Health Organization officiallly [declared](https://twitter.com/WHO/status/1237777021742338049?s=20) the coronavirus (COVID-19 or SARS-CoV-2) a [pandemic](https://en.wikipedia.org/wiki/Pandemic). But, fear not, this is not yet another opinionated response on the failing of society and the end of times. This is all about Mathematics!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "path = 'COVID-19/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-{}.csv'\n", "\n", "features = ['Confirmed', 'Deaths', 'Recovered']\n", "\n", "dataframes = dict()\n", "\n", "for feature in features: \n", " dataframes[feature] = pd.read_csv(path.format(feature))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a took at confirmed cases and prepare the dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Vizualization\n", "\n", "### Map" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/g4brielvs/.local/share/virtualenvs/COVID-19-xLAGSW6c/lib/python3.8/site-packages/pyproj/crs/crs.py:55: FutureWarning: '+init=:' syntax is deprecated. ':' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6\n", " return _prepare_from_string(\" \".join(pjargs))\n" ] } ], "source": [ "df = dataframes['Confirmed'].copy()\n", "df['total'] = df[df.columns[-1]]\n", "\n", "# in order to easily transform from longitude/latitude (EPSG:4326) into another projection (for example WebMercator EPSG:3857\n", "inProj, outProj = Proj(init=\"epsg:4326\"), Proj(\"epsg:3857\")\n", "df['x'], df['y'] = transform(inProj, outProj, df['Long'].tolist(), df['Lat'].tolist())\n", "\n", "#scale within 0 and 1\n", "df['size'] = 150 * MinMaxScaler().fit_transform(df[['total']])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's prepare the map using [Bokeh](https://bokeh.org)," ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"394c8e0d-4e6e-42ed-b8d7-e1fbade530f5\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1013\"}],\"center\":[{\"id\":\"1020\"},{\"id\":\"1028\"}],\"left\":[{\"id\":\"1021\"}],\"plot_width\":800,\"renderers\":[{\"id\":\"1041\"},{\"id\":\"1049\"}],\"title\":{\"id\":\"1003\"},\"toolbar\":{\"id\":\"1034\"},\"x_range\":{\"id\":\"1005\"},\"x_scale\":{\"id\":\"1009\"},\"y_range\":{\"id\":\"1007\"},\"y_scale\":{\"id\":\"1011\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1029\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1058\"}},\"id\":\"1030\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1029\"},{\"id\":\"1030\"},{\"id\":\"1031\"},{\"id\":\"1032\"},{\"id\":\"1033\"},{\"id\":\"1044\"}]},\"id\":\"1034\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1033\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Country/Region\",\"@region\"],[\"Province/State\",\"@province\"],[\"Confirmed Cases\",\"@total\"]]},\"id\":\"1044\",\"type\":\"HoverTool\"},{\"attributes\":{\"data\":{\"province\":[\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"British Columbia\",\"New South Wales\",\"Victoria\",\"Queensland\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"South Australia\",\"NaN\",\"NaN\",\"From Diamond Princess\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"Western Australia\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"Tasmania\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"Northern Territory\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"Ontario\",\"Alberta\",\"Quebec\",\"NaN\",\"NaN\",\"NaN\",\"Washington\",\"New York\",\"California\",\"Massachusetts\",\"Diamond Princess\",\"Grand Princess\",\"Georgia\",\"Colorado\",\"Florida\",\"New Jersey\",\"Oregon\",\"Texas\",\"Illinois\",\"Pennsylvania\",\"Iowa\",\"Maryland\",\"North Carolina\",\"South Carolina\",\"Tennessee\",\"Virginia\",\"Arizona\",\"Indiana\",\"Kentucky\",\"District of Columbia\",\"Nevada\",\"New Hampshire\",\"Minnesota\",\"Nebraska\",\"Ohio\",\"Rhode Island\",\"Wisconsin\",\"Connecticut\",\"Hawaii\",\"Oklahoma\",\"Utah\",\"NaN\",\"NaN\",\"NaN\",\"NaN\",\"Kansas\",\"Louisiana\",\"Missouri\",\"Vermont\",\"Alaska\",\"Arkansas\",\"Delaware\",\"Idaho\",\"Maine\",\"Michigan\",\"Mississippi\",\"Montana\",\"New Mexico\",\"North Dakota\",\"South Dakota\",\"West Virginia\",\"Wyoming\",\"Hubei\",\"NaN\",\"NaN\",\"France\",\"Guangdong\",\"Henan\",\"Zhejiang\",\"Hunan\",\"Anhui\",\"Jiangxi\",\"Shandong\",\"Diamond Princess\",\"Jiangsu\",\"Chongqing\",\"Sichuan\",\"Heilongjiang\",\"UK\",\"Denmark\",\"Beijing\",\"Shanghai\",\"Hebei\",\"Fujian\",\"Guangxi\",\"Shaanxi\",\"Yunnan\",\"Hainan\",\"Guizhou\",\"Tianjin\",\"Shanxi\",\"Gansu\",\"Hong Kong\",\"Liaoning\",\"Jilin\",\"NaN\",\"Xinjiang\",\"Inner Mongolia\",\"Ningxia\",\"NaN\",\"NaN\",\"NaN\",\"Qinghai\",\"Macau\",\"NaN\",\"NaN\",\"Faroe Islands\",\"St Martin\",\"NaN\",\"Channel Islands\",\"New Brunswick\",\"Tibet\",\"NaN\",\"NaN\",\"Saint Barthelemy\",\"NaN\",\"NaN\",\"NaN\",\"Gibraltar\",\"Kitsap, WA\",\"Solano, CA\",\"Santa Cruz, CA\",\"Napa, CA\",\"Ventura, CA\",\"Worcester, MA\",\"Gwinnett, GA\",\"DeKalb, GA\",\"Floyd, GA\",\"Fayette, GA\",\"Gregg, TX\",\"Monmouth, NJ\",\"Burlington, NJ\",\"Camden, NJ\",\"Passaic, NJ\",\"Union, NJ\",\"Eagle, CO\",\"Larimer, CO\",\"Arapahoe, CO\",\"Gunnison, CO\",\"Kane, IL\",\"Monroe, PA\",\"Philadelphia, PA\",\"Norfolk, VA\",\"Arlington, VA\",\"Spotsylvania, VA\",\"Loudoun, VA\",\"Prince George's, MD\",\"Pottawattamie, IA\",\"Camden, NC\",\"Pima, AZ\",\"Noble, IN\",\"Adams, IN\",\"Boone, IN\",\"Dane, WI\",\"Pierce, WI\",\"Cuyahoga, OH\",\"Weber, UT\",\"Bennington County, VT\",\"Carver County, MN\",\"Charlotte County, FL\",\"Cherokee County, GA\",\"Collin County, TX\",\"Jefferson County, KY\",\"Jefferson Parish, LA\",\"Shasta County, CA\",\"Spartanburg County, SC\",\"Harrison County, KY\",\"Johnson County, IA\",\"Berkshire County, MA\",\"Davidson County, TN\",\"Douglas County, OR\",\"Fresno County, CA\",\"Harford County, MD\",\"Hendricks County, IN\",\"Hudson County, NJ\",\"Johnson County, KS\",\"Kittitas County, WA\",\"Manatee County, FL\",\"Marion County, OR\",\"Okaloosa County, FL\",\"Polk County, GA\",\"Riverside County, CA\",\"Shelby County, TN\",\"St. Louis County, MO\",\"Suffolk County, NY\",\"Ulster County, NY\",\"Volusia County, FL\",\"Fairfax County, VA\",\"Rockingham County, NH\",\"Washington, D.C.\",\"Montgomery County, PA\",\"Alameda County, CA\",\"Broward County, FL\",\"Lee County, FL\",\"Pinal County, AZ\",\"Rockland County, NY\",\"Saratoga County, NY\",\"Charleston County, SC\",\"Clark County, WA\",\"Cobb County, GA\",\"Davis County, UT\",\"El Paso County, CO\",\"Honolulu County, HI\",\"Jackson County, OR \",\"Jefferson County, WA\",\"Kershaw County, SC\",\"Klamath County, OR\",\"Madera County, CA\",\"Pierce County, WA\",\"Tulsa County, OK\",\"Douglas County, CO\",\"Providence County, RI\",\"Chatham County, NC\",\"Delaware County, PA\",\"Douglas County, NE\",\"Fayette County, KY\",\"Marion County, IN\",\"Middlesex County, MA\",\"Nassau County, NY\",\"Ramsey County, MN\",\"Washoe County, NV\",\"Wayne County, PA\",\"Yolo County, CA\",\"Santa Clara County, CA\",\"Clark County, NV\",\"Fort Bend County, TX\",\"Grant County, WA\",\"Santa Rosa County, FL\",\"Williamson County, TN\",\"New York County, NY\",\"Montgomery County, MD\",\"Suffolk County, MA\",\"Denver County, CO\",\"Summit County, CO\",\"Bergen County, NJ\",\"Harris County, TX\",\"San Francisco County, CA\",\"Contra Costa County, CA\",\"Orange County, CA\",\"Norfolk County, MA\",\"Maricopa County, AZ\",\"Wake County, NC\",\"Westchester County, NY\",\"Grafton County, NH\",\"Hillsborough, FL\",\"Placer County, CA\",\"San Mateo, CA\",\"Sonoma County, CA\",\"Umatilla, OR\",\"Fulton County, GA\",\"Washington County, OR\",\"Snohomish County, WA\",\"Humboldt County, CA\",\"Sacramento County, CA\",\"San Diego County, CA\",\"San Benito, CA\",\"Los Angeles, CA\",\"King County, WA\",\"Cook County, IL\",\"Skagit, WA\",\"Thurston, WA\",\"Island, WA\",\"Whatcom, WA\",\"Marin, CA\",\"Calaveras, CA\",\"Stanislaus, CA\",\"San Joaquin, CA\",\"Essex, MA\",\"Charlton, GA\",\"Collier, FL\",\"Pinellas, FL\",\"Alachua, FL\",\"Nassau, FL\",\"Pasco, FL\",\"Dallas, TX\",\"Tarrant, TX\",\"Montgomery, TX\",\"Middlesex, NJ\",\"Jefferson, CO\",\"Multnomah, OR\",\"Polk, OR\",\"Deschutes, OR\",\"McHenry, IL\",\"Lake, IL\",\"Bucks, PA\",\"Hanover, VA\",\"Lancaster, SC\",\"Sullivan, TN\",\"Johnson, IN\",\"Howard, IN\",\"St. Joseph, IN\",\"Knox, NE\",\"Stark, OH\",\"Anoka, MN\",\"Olmsted, MN\",\"Summit, UT\",\"Fairfield, CT\",\"Litchfield, CT\",\"Orleans, LA\",\"Pennington, SD\",\"Beadle, SD\",\"Charles Mix, SD\",\"Davison, SD\",\"Minnehaha, SD\",\"Bon Homme, SD\",\"Socorro, NM\",\"Bernalillo, NM\",\"Oakland, MI\",\"Wayne, MI\",\"New Castle, DE\",\"NaN\",\"NaN\"],\"region\":[\"Thailand\",\"Japan\",\"Singapore\",\"Nepal\",\"Malaysia\",\"Canada\",\"Australia\",\"Australia\",\"Australia\",\"Cambodia\",\"Sri Lanka\",\"Germany\",\"Finland\",\"United Arab Emirates\",\"Philippines\",\"India\",\"Italy\",\"Sweden\",\"Spain\",\"Australia\",\"Belgium\",\"Egypt\",\"Australia\",\"Lebanon\",\"Iraq\",\"Oman\",\"Afghanistan\",\"Bahrain\",\"Kuwait\",\"Algeria\",\"Croatia\",\"Switzerland\",\"Austria\",\"Israel\",\"Pakistan\",\"Brazil\",\"Georgia\",\"Greece\",\"North Macedonia\",\"Norway\",\"Romania\",\"Estonia\",\"Netherlands\",\"San Marino\",\"Belarus\",\"Iceland\",\"Lithuania\",\"Mexico\",\"New Zealand\",\"Nigeria\",\"Australia\",\"Ireland\",\"Luxembourg\",\"Monaco\",\"Qatar\",\"Ecuador\",\"Azerbaijan\",\"Armenia\",\"Dominican Republic\",\"Indonesia\",\"Portugal\",\"Andorra\",\"Australia\",\"Latvia\",\"Morocco\",\"Saudi Arabia\",\"Senegal\",\"Argentina\",\"Chile\",\"Jordan\",\"Ukraine\",\"Hungary\",\"Australia\",\"Liechtenstein\",\"Poland\",\"Tunisia\",\"Bosnia and Herzegovina\",\"Slovenia\",\"South Africa\",\"Bhutan\",\"Cameroon\",\"Colombia\",\"Costa Rica\",\"Peru\",\"Serbia\",\"Slovakia\",\"Togo\",\"French Guiana\",\"Malta\",\"Martinique\",\"Bulgaria\",\"Maldives\",\"Bangladesh\",\"Paraguay\",\"Canada\",\"Canada\",\"Canada\",\"Albania\",\"Cyprus\",\"Brunei\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"Burkina Faso\",\"Holy See\",\"Mongolia\",\"Panama\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"China\",\"Iran\",\"Korea, South\",\"France\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"Cruise Ship\",\"China\",\"China\",\"China\",\"China\",\"United Kingdom\",\"Denmark\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"Czechia\",\"China\",\"China\",\"China\",\"Taiwan*\",\"Vietnam\",\"Russia\",\"China\",\"China\",\"Moldova\",\"Bolivia\",\"Denmark\",\"France\",\"Honduras\",\"United Kingdom\",\"Canada\",\"China\",\"Congo (Kinshasa)\",\"Cote d'Ivoire\",\"France\",\"Jamaica\",\"Reunion\",\"Turkey\",\"United Kingdom\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"US\",\"Cuba\",\"Guyana\"],\"size\":[0.15491066818134877,1.4141130995411695,0.3939156990897154,0.0022130095454478394,0.32973842227172806,0.10179843909060061,0.14384562045410956,0.046473200454404624,0.04426019090895679,0.006639028636343518,0.004426019090895679,4.59863383544061,0.13056756318142254,0.18810581136306637,0.11507649636328765,0.1615496968176923,27.578524955370973,1.3255927177232558,5.039022734984731,0.019917085909030553,0.6948849972706216,0.14827163954500527,0.0,0.1349935822723182,0.1571236777267966,0.039834171818061107,0.015491066818134877,0.4315368613623287,0.17704076363582716,0.05311222909074814,0.042047181363508955,1.4428822236319911,0.6683288827252475,0.28990425045366697,0.04426019090895679,0.11507649636328765,0.05311222909074814,0.2190879449993361,0.015491066818134877,1.5535327009043833,0.10843746772694414,0.03540815272716543,1.1131438013602633,0.15269765863590093,0.02655611454537407,0.2279399831811275,0.006639028636343518,0.02655611454537407,0.011065047727239197,0.004426019090895679,0.019917085909030553,0.0951594104542571,0.042047181363508955,0.004426019090895679,0.5798085009073339,0.03762116227261327,0.024343104999926236,0.008852038181791358,0.011065047727239197,0.07524232454522654,0.13056756318142254,0.0022130095454478394,0.006639028636343518,0.022130095454478395,0.013278057272687036,0.09958542954515277,0.008852038181791358,0.042047181363508955,0.05089921954530031,0.0022130095454478394,0.0022130095454478394,0.028769124090821913,0.0022130095454478394,0.0022130095454478394,0.10843746772694414,0.015491066818134877,0.024343104999926236,0.1969578495448577,0.03762116227261327,0.0022130095454478394,0.004426019090895679,0.019917085909030553,0.04868620999985247,0.03319514318171759,0.042047181363508955,0.03540815272716543,0.0022130095454478394,0.011065047727239197,0.013278057272687036,0.006639028636343518,0.015491066818134877,0.017704076363582715,0.006639028636343518,0.011065047727239197,0.09294640090880925,0.042047181363508955,0.019917085909030553,0.05089921954530031,0.013278057272687036,0.024343104999926236,0.9781502190879451,0.7258671309068914,0.48907510954397254,0.23900503090836667,0.10179843909060061,0.046473200454404624,0.06860329590888303,0.09958542954515277,0.07745533409067439,0.06417727681798735,0.05311222909074814,0.05975125772709167,0.07081630545433086,0.04868620999985247,0.03540815272716543,0.02655611454537407,0.03319514318171759,0.02655611454537407,0.039834171818061107,0.03762116227261327,0.019917085909030553,0.028769124090821913,0.022130095454478395,0.022130095454478395,0.030982133636269754,0.013278057272687036,0.019917085909030553,0.022130095454478395,0.011065047727239197,0.011065047727239197,0.017704076363582715,0.011065047727239197,0.004426019090895679,0.004426019090895679,0.011065047727239197,0.004426019090895679,0.0022130095454478394,0.0022130095454478394,0.024343104999926236,0.0022130095454478394,0.042047181363508955,0.0022130095454478394,0.004426019090895679,0.0,0.013278057272687036,0.0022130095454478394,0.0,0.0,0.004426019090895679,0.0022130095454478394,0.0022130095454478394,0.011065047727239197,0.0022130095454478394,0.017704076363582715,0.0,0.0022130095454478394,150.0,22.296071170386984,17.414172113129048,5.047874773166522,3.0008409436272703,2.8171611513550996,2.688806597719125,2.2528437172659004,2.190879449993361,2.06916392499373,1.681887254540358,1.5402546436316962,1.3964090231775868,1.2746934981779554,1.1928121449963855,1.0666706009058586,1.0091323527242149,1.3610008704504213,0.9626591522698101,0.7612752836340568,0.703737035452413,0.6550508254525605,0.5576784054528555,0.5421873386347207,0.38506366090792404,0.371785603635237,0.3230993936353846,0.3009692981809062,0.29433026954456265,0.2810522122718756,0.2854782313627713,0.2766261931809799,0.20580988772664907,0.2080228972720969,0.16818872545403582,0.16597571590858795,0.16597571590858795,0.10843746772694414,0.08630737227246574,0.06196426727253951,0.039834171818061107,0.022130095454478395,0.006639028636343518,0.004426019090895679,0.004426019090895679,0.004426019090895679,0.004426019090895679,0.004426019090895679,0.0022130095454478394,0.0022130095454478394,0.0022130095454478394,0.0022130095454478394,0.0022130095454478394,0.004426019090895679,0.0022130095454478394,0.0022130095454478394,0.0022130095454478394,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006639028636343518,0.0022130095454478394],\"total\":[70,639,178,1,149,46,65,21,20,3,2,2078,59,85,52,73,12462,599,2277,9,314,67,0,61,71,18,7,195,80,24,19,652,302,131,20,52,24,99,7,702,49,16,503,69,12,103,3,12,5,2,9,43,19,2,262,17,11,4,5,34,59,1,3,10,6,45,4,19,23,1,1,13,1,1,49,7,11,89,17,1,2,9,22,15,19,16,1,5,6,3,7,8,3,5,42,19,9,23,6,11,442,328,221,108,46,21,31,45,35,29,24,27,32,22,16,12,15,12,18,17,9,13,10,10,14,6,9,10,5,5,8,5,2,2,5,2,1,1,11,1,19,1,2,0,6,1,0,0,2,1,1,5,1,8,0,1,67781,10075,7869,2281,1356,1273,1215,1018,990,935,760,696,631,576,539,482,456,615,435,344,318,296,252,245,174,168,146,136,133,127,129,125,93,94,76,75,75,49,39,28,18,10,3,2,2,2,2,2,1,1,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1],\"x\":[11243268.57012063,15362089.72947175,11558670.083385212,9378667.099333297,12523442.714243276,-13705733.630111396,16832542.27920734,16137218.475814397,17076409.887688164,11679273.619710645,9016878.754255159,1001875.4171394621,2894306.760625113,6011252.502836772,13580977.876779376,8682920.281875338,1335833.8895192828,1781111.852692377,-445277.96317309426,15428959.347591272,445277.96317309426,3339584.723798207,15544431.055391135,3992172.974675615,4898057.594904037,6345210.975216594,7235766.901562782,5627200.259599979,5315505.685378813,184745.82692051682,1692056.260057758,915881.1105016582,1619709.7229912097,3896182.1777645745,7719461.221008635,-5780297.955287968,4826468.030374884,2429469.9629196404,2420675.723146972,942753.6355791545,2779291.4627375025,2784501.214906628,589024.8216344484,1386795.9524044436,3111758.253940693,-2117385.770480698,2658454.155481404,-11416125.475424428,19468220.466872443,965729.9784788863,12897531.863054074,-856280.6551309396,682343.9507664497,825623.267366472,5697765.684813836,-8703336.276486825,5296236.281522498,5013629.490245614,-7810476.036681215,12681661.106507756,-915547.1520292785,169406.00108920372,16249383.994737698,2738815.6958850683,-789544.6204003722,5009377.085697311,-1608833.8087407069,-7081778.649948447,-7964130.329823172,4064274.608862418,3469338.722266847,2171097.424788452,14565665.564540355,1063101.1370757627,2131222.7831863016,1001875.4171394621,1968028.4096833626,1669291.4241905338,2553390.820070713,10067022.302602584,1280407.915053312,-8270737.603315085,-9323385.840205358,-8350653.865755575,2338366.0916544255,2192882.649136696,91816.31600629205,-5913937.003985293,1600262.2079496249,-6793182.870066885,2837066.2784592113,8150891.039527046,10058417.305964265,-6505934.056023922,-9498135.17685264,-12977236.618462056,-8187448.360303557,2245124.8861659793,3721399.445270057,12771429.143883452,-13524260.5962202,-8343184.327923347,-13322894.76932425,-7962694.308391938,15544431.055391135,-13655060.997902298,-9311107.30037086,-11723178.026879512,-9093332.98053198,-8295639.77340554,-13588870.428676616,-10860719.140009547,-9905887.339679321,-8594955.620250493,-10376145.396586426,-8549570.663854076,-8884007.810044307,-9010756.182261528,-9650542.69169771,-8701844.595310194,-12404464.442483425,-9602230.03269343,-9425432.417415552,-8574584.153435323,-13030547.522602955,-7966456.907180751,-10452922.449386546,-10939154.853222486,-9213346.523556208,-7960657.161710421,-9976063.1466754,-8099094.080460935,-17532630.556806237,-10790075.791152135,-12452465.406913485,-173836.516822776,1386306.1466449532,11560161.764561841,-8992622.237211304,-10767544.726215577,-10226676.716298297,-10273497.694125948,-8094118.099222477,-16965580.202654384,-10282926.454996139,-8405411.923276786,-12743721.722625006,-7723557.778269828,-9410515.605649255,-9982987.219002742,-12295727.563876556,-11827528.917549128,-11107904.069316009,-11069476.581094172,-9011813.717424065,-11944859.660845237,12497917.15500438,5899933.012043499,14248894.821539016,246427.9567690697,12626346.45153258,12647452.626986982,13368736.13563292,12435366.733127639,13049583.155528605,12882125.245528284,13152375.573327113,15544431.055391135,13297669.772710495,12008478.749833593,11433658.295224367,14222345.122984821,-382493.770365688,1057735.5376195267,12959169.465106308,13519651.969301362,12927599.257517336,13134297.288022285,12110235.896367725,12119364.094612772,11297481.162136955,12216790.912955048,11897248.314632952,13060336.618339233,12500310.524056435,11249758.496433878,12712685.848591842,13648715.786927084,14047662.578032017,1722446.481044322,9488884.527167719,12684277.114541398,11818289.399813283,13469658.385986103,12022505.005673544,10018754.171394622,10686181.310394773,12640328.179576214,3158122.821856092,-7078661.704206235,-769418.0564649482,-7018705.026464977,-9600404.39304442,-263203.804031616,-7398504.865153469,9806401.110757373,2422167.4043236016,-617500.3473793679,-6994570.9608609965,-8604718.339593064,6182283.768491559,3923266.2098745783,-595960.0259108694,-13652367.066225102,-13570046.302783474,-13576302.458166057,-13610522.06963591,-13262503.945568899,-7999095.781881339,-9352696.262131229,-9376206.938586768,-9214793.67693652,-9404303.97806299,-10558887.472672664,-8251445.93556061,-8333922.546289348,-8362275.620594393,-8251946.87326918,-8266941.608679033,-11892116.486107383,-11754703.706672167,-11614251.905138293,-11902869.948918013,-9840821.097310653,-8376557.911263171,-8367351.789374566,-8492107.542706588,-8581730.864744253,-8639260.777586216,-8644359.210264549,-8557363.028209606,-10628540.078062017,-8973130.194373403,-12430613.390870765,-9501675.136659866,-8603493.825194338,-9629102.557770927,-9968638.136639489,-10283850.406769723,-9092108.466133252,-12462461.897186723,-8141350.959166063,-10440009.388454527,-9118157.22697888,-9404303.97806299,-10741551.625115346,-9533790.809753725,-10031233.086312547,-13563990.522484323,-9123021.888726545,-9390266.590273958,-10196687.24547859,-8146605.239131505,-9664980.829653598,-13720038.184678335,-13272856.658212673,-8500768.199090304,-9633599.865198974,-8243597.911459683,-10558887.472672664,-13462077.528663078,-9166625.73327027,-13646956.938972548,-9647069.52358496,-9478620.87011658,-13068474.073116222,-10010438.605432363,-10064673.461346846,-8083475.95590264,-8272351.735931587,-9025283.375810053,-8598373.128617847,-7909227.556963929,-8575708.480292337,-8392142.639974229,-13549752.759611862,-8946291.065143144,-9123021.888726545,-12388133.873184051,-8235749.8873587595,-8230517.871291475,-8881603.309043175,-13638797.220297402,-9413632.551391466,-12478391.716319239,-11629803.238002114,-17572716.705440894,-13666103.891388992,-13726138.492773805,-8971048.519895568,-13538030.817231331,-13324531.16583891,-13595393.750837104,-10680103.26619746,-11681744.912406256,-7956827.7712271325,-8814065.773978895,-8392142.639974229,-10708389.54880803,-9404303.97806299,-9592979.38300851,-7935677.0679764105,-8188594.951058728,-10359569.924407307,-13314200.717093294,-8376557.911263171,-13570046.302783474,-13575990.763591837,-12812205.473361028,-10665999.086713951,-13288563.838363606,-9682836.475976838,-9669455.873183487,-8238310.235647004,-8598373.128617847,-7910240.564330147,-11687466.734233031,-11806990.471497767,-8246213.919493327,-10609894.063354142,-13627665.271218073,-13570046.302783474,-13119347.080408748,-7919814.040538371,-12515550.162346033,-8745938.245613411,-8214810.691140544,-7995633.745717668,-9161794.467369843,-13447828.63384154,-13617212.371032588,-13691050.589275764,-13220369.518303644,-9394953.140836352,-13707726.248996599,-13562487.709358614,-13789089.664817402,-13509087.74962508,-13042313.992779806,-13468278.024300266,-13162828.473512601,-13617947.079671822,-9762452.175792187,-13548851.071736436,-13666649.356893878,-13645487.521694077,-13577849.799088085,-13665948.04410188,-13434091.80867765,-13468278.024300266,-13379378.278952757,-7879516.384871204,-9137582.478122305,-9064512.3643656,-9214793.67693652,-9183234.601296628,-9108427.903483547,-9176277.133122047,-10775392.750316504,-10837141.671859529,-10652863.386800345,-8292489.43181609,-11718190.913691973,-13646244.494231472,-13747055.425093861,-13498790.696726704,-9825815.22995172,-9776879.181798996,-8376557.911263171,-8629052.780280473,-8980933.690678012,-9166625.73327027,-9588448.679733222,-9588448.679733222,-9611068.800262416,-10895083.46681743,-9044920.133985985,-10377169.535901723,-10283850.406769723,-12356285.366868097,-8167611.227044197,-8157102.667113311,-10026713.51498634,-11382952.26716803,-10933945.10105336,-10953448.275840342,-10933945.10105336,-10779634.022915725,-10895083.46681743,-11880405.675675932,-11869897.115745047,-9276943.348646406,-9276943.348646406,-8423256.437650949,-8905559.263461886,-6540020.084104822],\"y\":[1689200.1396078914,4300621.372044271,142868.2482940523,3270007.148852346,278387.0759542342,6322966.515806542,-4011198.6473075734,-4553127.106333027,-3251079.4407753292,1294537.6877693047,781182.214188248,6621293.722740169,9349764.174146913,2753408.10936498,1459732.2718804975,2391878.587944315,5311971.846945471,9100250.907059547,4865942.279503176,-4154168.819822751,6591859.227158039,2999080.9434706415,4224342.88005881,4009308.4326744657,3895303.9633938945,2391878.587944315,3895303.9633938945,3002487.33506674,3439440.060731259,3253248.4767457563,5637278.201890525,5912450.006944056,6026741.865081758,3632749.143384426,3551882.9552530204,-1601191.3540548019,5208342.549136038,4732305.665843057,5102528.745553899,8505581.61782037,5771251.647800527,8093425.104960372,6824136.837054972,5456532.773166133,7115386.341846563,9598658.594354585,7394812.853907286,2708933.1707211714,-4997691.223498094,1015264.0959171564,-3756814.7353761178,7009381.626352507,6414350.285451867,5424262.080325444,2919387.1300638346,-203882.96460540124,4886759.023693316,4875988.78987947,2123843.448999351,-87867.2532947046,4779116.775302183,5237125.051634542,-5079613.224401289,7735549.669246183,3735998.9657222056,2753408.10936498,1631344.5157257887,-4638374.701313473,-4256007.234461246,3663957.0930902106,6170207.180618671,5968638.661473665,-1398492.2699271585,5964955.649843611,6785565.04024444,4028802.026134406,5452436.725142801,5804612.321431459,-3575673.002489011,3187862.4424485723,428679.7819698759,509370.8549286857,1090517.31143147,-1027441.0770771292,5467995.951474614,6218883.111278172,963158.2335735479,438264.2191689674,4292024.872787977,1647918.625575204,5271556.023861179,356719.8898791519,2715070.696633067,-2685619.968026841,6666311.391036501,7157534.219010198,6971888.775136797,5034979.742534969,4181071.6938792625,505395.3350147116,6007758.430275307,5185832.90811315,4316622.115110655,5195524.904174069,4224342.88005881,4529945.201379444,3900694.175102788,4730241.032897715,3219541.389134986,4909473.15640459,5554391.44265098,3639829.0303156143,4916861.408045727,4952170.834583614,5162702.243968472,4730828.836890181,4249842.347769592,4009603.3392309453,4265974.301010014,4546886.706747683,3992578.215233987,4844081.571304204,4532644.993386503,4706985.640443384,4623808.002427541,5381102.556117775,5731527.060418204,5030855.767678724,4922603.539410544,5113299.016352529,5507087.632093539,5100920.945078651,2403126.4139069146,4240971.003861836,4887763.872814636,1372840.554806195,5146445.414129022,5919659.3809888065,953983.0401278976,4654086.164078308,3654781.5647162977,4644059.328931767,5472548.063771218,8711442.682332871,4159764.2570853312,4767397.194536941,5502735.857864199,5573460.345803712,5361816.561568907,3861055.697652417,5929335.468710874,4142226.801099876,6028835.3902955195,5511954.74866638,4649050.186498073,5274905.996578319,3629580.744169083,3763310.6271446515,4300621.372044271,5816897.598697101,2673394.1105092955,4012968.4929162613,3398984.0175784635,3199942.3494157176,3740452.727035034,3200394.6098226854,4347879.403068543,4224342.88005881,3891468.5997194117,3510904.4911490805,3583121.493215443,6083927.181620726,7435596.131566581,7611131.059376355,4892483.660507338,3659010.568613181,4800619.005880656,3008856.332504274,2732682.170768369,4189963.0206505125,2872551.447904348,2178013.597873206,3100427.288742939,4765512.394113554,4519939.5598042775,4552605.75590404,2547582.1334137614,5056040.855320675,5413914.952374526,6414729.839176607,5029008.677484246,5479922.9431379745,4476696.516932871,2716894.181017615,1804722.766257292,8399737.889818355,4265617.687866122,2531551.360891716,6009518.368481555,-1838354.124395453,8833721.249303209,2045837.2262775034,1712260.2558615336,6338270.647939681,5871406.379786143,3723039.978316015,-449914.1574857518,841782.1416064136,2025847.032474197,2050381.0279319286,-2405608.3367887107,4716473.242066962,4320012.570333066,6048443.517540862,4623382.385984445,4445436.852460313,4650657.447084015,4078660.2837628997,5222549.463522928,4017944.2986487816,4001389.0104111093,4515417.678899682,3955214.0829597344,3827711.6248054435,4903636.556453314,4876294.270220656,4855180.104937822,4991242.58641461,4967839.53622261,4815977.1238142485,4967545.884282402,4810917.754847444,4656818.577918999,5159167.09502338,5019099.502306083,4859056.629543971,4418330.585568827,4704725.950840467,4608312.721597979,4732678.491689633,4690907.010920857,5070215.944540827,4061949.1739996374,3770860.7645088388,5075633.478974942,4844487.57391846,4867482.762197528,5314803.385262412,5582390.667590041,5076554.02023874,5050812.001475358,5316219.476067727,5594076.043831019,3110309.572080045,4062622.5320236366,3919153.894879275,4606839.543952474,3458626.66792267,4981548.212800077,4144953.340321804,4640818.705228427,5111659.606124766,5207800.60767914,4319116.615040741,5331185.291236662,4437141.611274804,4805658.7245416865,4837863.100374154,4974845.749532931,4699550.580923598,5970685.453068062,3183557.921975936,5597090.023789528,3577974.3205344006,4030574.6013739924,4022533.079507624,4181139.7473801104,4666003.127288974,5010114.672356457,5139821.886780026,3379210.290431043,4708573.444580464,5310921.655553075,4708387.4727026755,4899275.951380583,4523311.177836799,3022644.7566537224,3081430.7752533746,3870932.92235837,5034329.250040002,5316904.7583197765,3868217.846215098,5739834.265307072,4015368.9482926927,5006870.961459498,4708902.4800922675,2428522.9312317926,5211218.368354773,6064122.42381604,4078215.2326580514,5265707.802383623,4474276.803263663,5953115.1017432995,4322563.003321006,4758796.165043695,5144247.030250141,4262312.712496718,4852553.058520535,5058886.06593282,4587990.101037691,4842167.781988687,5231222.699744649,4961527.960892635,5620954.757674719,4947774.01813288,5112255.72288128,4688008.415460957,4488579.365599802,4311579.744285206,3448306.64639082,5974469.192202056,3602785.5936628953,4289330.411135841,4970071.579142425,4743855.307680666,5215074.239663489,4828115.596032434,4806713.198631137,5001477.000816712,3474686.504317913,4547675.354340557,4558736.799235176,4000357.6103008646,5187485.107235597,3934099.892031496,4273575.67510422,5030353.3243158525,5451339.603274426,3247763.503191203,4734800.992849565,4517874.980419102,4661402.701883527,5744365.834207108,4002433.899923587,5708050.463029463,6112346.615992937,4974801.66960262,4646703.754240729,3857628.4081548126,4380184.155663756,4035813.3662658846,6041588.817409255,5121768.798001278,6177718.994458358,5920001.2822452625,6139791.617826642,6254304.329031599,4591214.144293607,4607151.160138277,4510308.338735028,4384412.842833283,5256125.187823774,3605726.867304869,3007753.3294289294,3233399.5756232957,3477072.1972127897,3579965.6893635467,3289783.3630172876,3865701.9930471093,3865238.605011204,3553560.4751150236,4949503.197393026,4805095.420895044,5702901.827644854,5609989.273391714,5439557.656111984,5211052.721561536,5216400.058218624,4925819.426956255,4547999.280478659,4126612.8901425935,4368712.723179146,4788326.375059931,4931303.477758095,5104643.115087274,5262058.294834367,4992964.749950668,5673512.868629426,5464699.402312732,4987269.523331576,5050175.252090237,5129066.566665949,3497265.7517998563,5448450.62671053,5539979.4632625375,5326976.589228515,5422860.227576963,5413468.685400318,5309156.382098598,4013196.447477928,4166300.3561409567,5250105.089798177,5202879.39154991,4799218.732048679,2511525.234845711,557305.2572745753]},\"selected\":{\"id\":\"1057\"},\"selection_policy\":{\"id\":\"1056\"}},\"id\":\"1043\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"attribution\":\"© OpenStreetMap contributors,© CartoDB\",\"url\":\"https://tiles.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png\"},\"id\":\"1040\",\"type\":\"WMTSTileSource\"},{\"attributes\":{\"source\":{\"id\":\"1043\"}},\"id\":\"1050\",\"type\":\"CDSView\"},{\"attributes\":{\"tile_source\":{\"id\":\"1040\"}},\"id\":\"1041\",\"type\":\"TileRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"1043\"},\"glyph\":{\"id\":\"1047\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1048\"},\"selection_glyph\":null,\"view\":{\"id\":\"1050\"}},\"id\":\"1049\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#FF0000\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#FF0000\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1048\",\"type\":\"Circle\"},{\"attributes\":{\"text\":\"COVID-19: Confirmed Cases\"},\"id\":\"1003\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.05},\"fill_color\":{\"value\":\"#FF0000\"},\"line_color\":{\"value\":\"#FF0000\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1047\",\"type\":\"Circle\"},{\"attributes\":{\"formatter\":{\"id\":\"1016\"},\"ticker\":{\"id\":\"1014\"},\"visible\":false},\"id\":\"1013\",\"type\":\"MercatorAxis\"},{\"attributes\":{},\"id\":\"1056\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"dimension\":\"lat\"},\"id\":\"1022\",\"type\":\"MercatorTicker\"},{\"attributes\":{},\"id\":\"1057\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"dimension\":\"lon\"},\"id\":\"1014\",\"type\":\"MercatorTicker\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1032\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{\"dimension\":\"lon\"},\"id\":\"1016\",\"type\":\"MercatorTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1013\"},\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"1024\"},\"ticker\":{\"id\":\"1022\"},\"visible\":false},\"id\":\"1021\",\"type\":\"MercatorAxis\"},{\"attributes\":{\"dimension\":\"lat\"},\"id\":\"1024\",\"type\":\"MercatorTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1058\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1021\"},\"dimension\":1,\"ticker\":null},\"id\":\"1028\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1031\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", " var render_items = [{\"docid\":\"394c8e0d-4e6e-42ed-b8d7-e1fbade530f5\",\"root_ids\":[\"1002\"],\"roots\":{\"1002\":\"423fab0e-fa3d-43bf-a63e-0adad6cfa1a3\"}}];\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", " 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": "1002" } }, "output_type": "display_data" } ], "source": [ "p = figure(\n", " title=\"COVID-19: Confirmed Cases\", \n", " x_axis_type=\"mercator\", \n", " y_axis_type=\"mercator\", \n", " width=800, \n", " tools='pan,box_zoom,wheel_zoom,save,help')\n", "\n", "CARTODBPOSITRON = get_provider(Vendors.CARTODBPOSITRON)\n", "p.add_tile(CARTODBPOSITRON)\n", "\n", "source = ColumnDataSource(data=dict(\n", " x=list(df['x']), \n", " y=list(df['y']),\n", " size=list(df['size']),\n", " total=list(df['total']),\n", " region=list(df['Country/Region']),\n", " province=list(df['Province/State'])))\n", "\n", "hover = HoverTool(tooltips=[\n", " (\"Country/Region\", \"@region\"),\n", " (\"Province/State\", \"@province\"),\n", " (\"Confirmed Cases\", \"@total\")\n", " \n", "])\n", "\n", "p.add_tools(hover)\n", "p.circle(x ='x', y='y', source=source,size='size', line_color=\"#FF0000\", fill_color=\"#FF0000\", fill_alpha=0.05)\n", "\n", "#p.toolbar.logo = None\n", "p.xaxis.visible = False\n", "p.yaxis.visible = False\n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fit" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df = dataframes['Confirmed'].copy()\n", "\n", "# unpivot dataframe \n", "df = df.melt(id_vars=['Province/State', 'Country/Region', 'Lat', 'Long'], var_name=\"date\", value_name=\"count\")\n", "df = df.groupby(['Country/Region', 'date']).agg(sum)\n", "\n", "# set time series\n", "df = df.reset_index()\n", "\n", "df['date'] = pd.to_datetime(df['date'])\n", "df = df.set_index('date').sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take at closer look at China at the beginning of the epidemic," ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "df = df[df.index < pd.Timestamp('2020-02-15')]\n", "df = df[df['Country/Region'] == 'China']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's fit the data to an exponential," ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# expoenential\n", "exp = lambda x, a, b : np.exp(a*(x-b))\n", "\n", "# fit\n", "y = df['count']\n", "x = np.arange(len(y))\n", "\n", "popt, pcov = sp.optimize.curve_fit(exp, x, y)\n", "\n", "# put it back\n", "df['fit'] = exp(x, *popt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's prepare the map using [Bokeh](https://bokeh.org)," ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"93eaf45e-3fbb-42a7-98e1-5f841aaa89d7\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1118\"}],\"center\":[{\"id\":\"1121\"},{\"id\":\"1125\"},{\"id\":\"1163\"}],\"left\":[{\"id\":\"1122\"}],\"plot_height\":400,\"plot_width\":800,\"renderers\":[{\"id\":\"1143\"},{\"id\":\"1168\"}],\"title\":{\"id\":\"1108\"},\"toolbar\":{\"id\":\"1132\"},\"x_range\":{\"id\":\"1110\"},\"x_scale\":{\"id\":\"1114\"},\"y_range\":{\"id\":\"1112\"},\"y_scale\":{\"id\":\"1116\"}},\"id\":\"1107\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1127\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1131\",\"type\":\"HelpTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1139\"},\"glyph\":{\"id\":\"1166\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1167\"},\"selection_glyph\":null,\"view\":{\"id\":\"1169\"}},\"id\":\"1168\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"overlay\":{\"id\":\"1162\"}},\"id\":\"1128\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1130\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1126\"},{\"id\":\"1127\"},{\"id\":\"1128\"},{\"id\":\"1129\"},{\"id\":\"1130\"},{\"id\":\"1131\"},{\"id\":\"1170\"}]},\"id\":\"1132\",\"type\":\"Toolbar\"},{\"attributes\":{\"label\":{\"value\":\"Confirmed Cases\"},\"renderers\":[{\"id\":\"1143\"}]},\"id\":\"1164\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"count\"}},\"id\":\"1141\",\"type\":\"Scatter\"},{\"attributes\":{\"source\":{\"id\":\"1139\"}},\"id\":\"1144\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1114\",\"type\":\"LinearScale\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"1150\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"items\":[{\"id\":\"1164\"}],\"location\":\"center_left\"},\"id\":\"1163\",\"type\":\"Legend\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"1151\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"count\"}},\"id\":\"1142\",\"type\":\"Scatter\"},{\"attributes\":{\"data_source\":{\"id\":\"1139\"},\"glyph\":{\"id\":\"1141\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1142\"},\"selection_glyph\":null,\"view\":{\"id\":\"1144\"}},\"id\":\"1143\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"1152\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"1157\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"1116\",\"type\":\"LinearScale\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"1158\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"1154\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1146\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1110\",\"type\":\"DataRange1d\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"1156\",\"type\":\"DaysTicker\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"1150\"},{\"id\":\"1151\"},{\"id\":\"1152\"},{\"id\":\"1153\"},{\"id\":\"1154\"},{\"id\":\"1155\"},{\"id\":\"1156\"},{\"id\":\"1157\"},{\"id\":\"1158\"},{\"id\":\"1159\"},{\"id\":\"1160\"},{\"id\":\"1161\"}]},\"id\":\"1119\",\"type\":\"DatetimeTicker\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Confirmed Cases\",\"@count\"]]},\"id\":\"1170\",\"type\":\"HoverTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[2,4],\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"fit\"}},\"id\":\"1167\",\"type\":\"Line\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"1155\",\"type\":\"DaysTicker\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"1160\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"id\":\"1153\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1161\",\"type\":\"YearsTicker\"},{\"attributes\":{\"axis_label\":\"Date\",\"formatter\":{\"id\":\"1148\"},\"ticker\":{\"id\":\"1119\"}},\"id\":\"1118\",\"type\":\"DatetimeAxis\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[2,4],\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"fit\"}},\"id\":\"1166\",\"type\":\"Line\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"1159\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1122\"},\"dimension\":1,\"ticker\":null},\"id\":\"1125\",\"type\":\"Grid\"},{\"attributes\":{\"text\":\"COVID-19: Confirmed Cases in China and Exponential\"},\"id\":\"1108\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"Cases\",\"formatter\":{\"id\":\"1146\"},\"ticker\":{\"id\":\"1123\"}},\"id\":\"1122\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"Country/Region\":[\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\",\"China\"],\"Lat\":{\"__ndarray__\":\"QILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBAQILix1jtkEBAguLHWO2QQECC4sdY7ZBA\",\"dtype\":\"float64\",\"shape\":[24]},\"Long\":{\"__ndarray__\":\"RBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxARBzr4tbIrEBEHOvi1sisQEQc6+LWyKxA\",\"dtype\":\"float64\",\"shape\":[24]},\"count\":[548,643,920,1406,2075,2877,5509,6087,8141,9802,11891,16630,19716,23707,27440,30587,34110,36814,39829,42354,44386,44759,59895,66358],\"date\":{\"__ndarray__\":\"AABAx6j8dkIAAAAt+/x2QgAAwJJN/XZCAACA+J/9dkIAAEBe8v12QgAAAMRE/nZCAADAKZf+dkIAAICP6f52QgAAQPU7/3ZCAAAAW47/dkIAAMDA4P92QgAAgCYzAHdCAABAjIUAd0IAAADy1wB3QgAAwFcqAXdCAACAvXwBd0IAAEAjzwF3QgAAAIkhAndCAADA7nMCd0IAAIBUxgJ3QgAAQLoYA3dCAAAAIGsDd0IAAMCFvQN3QgAAgOsPBHdC\",\"dtype\":\"float64\",\"shape\":[24]},\"fit\":{\"__ndarray__\":\"KEXK753Zr0AJFBfmCv2xQEcUKGG4UbRAt6e/r7XztkDb6a5BB+25QHJdRM39SL1A9F9xrjCKwEC9P1X40K7CQBuJnzaHGsVAwIlVVInWx0DQfL3APu3KQO60XgVoas5AXIeJvqUt0UBCFybrc2fTQMM2XZAW69VAfvm0nx7C2ED5gUVaWvfbQJQO8G3+lt9AB/QrM2rX4UABjCiRNyfkQCEErwqzw+ZAXe5YG8y26UBJ7zHOuwvtQGj1n7iXZ/BA\",\"dtype\":\"float64\",\"shape\":[24]}},\"selected\":{\"id\":\"1186\"},\"selection_policy\":{\"id\":\"1185\"}},\"id\":\"1139\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1112\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1139\"}},\"id\":\"1169\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1162\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1118\"},\"ticker\":null},\"id\":\"1121\",\"type\":\"Grid\"}],\"root_ids\":[\"1107\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", " var render_items = [{\"docid\":\"93eaf45e-3fbb-42a7-98e1-5f841aaa89d7\",\"root_ids\":[\"1107\"],\"roots\":{\"1107\":\"787e836d-6df1-4d26-b34b-53d71a3e1b54\"}}];\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", " 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": "1107" } }, "output_type": "display_data" } ], "source": [ "p = figure(title=\"COVID-19: Confirmed Cases in China and Exponential\", x_axis_type=\"datetime\", y_axis_type=\"linear\", plot_width=800, plot_height=400)\n", "\n", "source = ColumnDataSource(df)\n", "\n", "p.scatter('date', 'count', source=source, legend_label='Confirmed Cases')\n", "p.line('date', 'fit', source=source, line_dash='dotted')\n", "\n", "hover = HoverTool(tooltips=[\n", " (\"Confirmed Cases\", \"@count\")\n", " \n", "])\n", "p.add_tools(hover)\n", "\n", "p.xaxis.axis_label = 'Date'\n", "p.yaxis.axis_label = 'Cases'\n", "p.legend.location = 'center_left'\n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exponential Growth\n", "\n", "An epidemic is a textbook example of an exponential growth. Not only an example, but its underlying principle is a centerpiece in the history of Mathematics and its discovery was fundamental for breakthroughs in Probability Theory, Mathematical Analysis, Differential Equations, Physics, Chemistry and Biology and even Pop Culture.\n", "\n", "The idea is rather straightforward: it has do with the way a quantity changes. When the rate on which a given quantity changes is proportional to the quantity itself at any given moment, mathematicians called it exponential.\n", "\n", "```\n", "the rate of change is proportional to the quantity at any given time\n", "```\n", "\n", "Probably many in the past observed this behavior on how populations expand, diseases spread, biology decays or even how science progresses, but it was formally brought to life in the work on logarithms. Later, while studying compound interest - more money you have, more money you make - [Bernoulli](https://en.wikipedia.org/wiki/Jacob_Bernoulli) discovered a constant ironically known as [Euler's number](https://en.wikipedia.org/wiki/E_(mathematical_constant)).\n", "\n", "We will have the opportunity to talk about the multiple \"origins\" of that constant in the future.\n", "\n", "### Exponentiate!\n", "\n", "Coming back to the virus. In our case, having an exponential growth suggests that the larger the infectious population, quicker we will have new cases and the infectious population will grow. We pratically experience that whenever people get sick around us (or when all of our friends start getting pregnant at the same...no! it is not exponential...or is it?)\n", "\n", "Scientists denote ideas using mathematical script for convenience (sometimes laziness). Let us do it then,\n", "\n", "- *I(t)*: infectious population\n", "\n", "$$\n", "\\begin{equation}\n", "\\Delta I(t) \\sim I(t) \\implies \\frac{dI}{dt} \\sim I(t)\n", "\\end{equation}\n", "$$\n", "\n", "```\n", "the rate of infection is proportional to the infectious population\n", "```\n", "\n", "Well, stating a relation of proportionality does not give us much. We still are not able to answer any questions. Is this virus dangerous? How contagious is it? Is it deadly? Are we all going to die?\n", "\n", "We are going to formulate a model using variables and parameters to quantify *how proportial* that relation is.\n", "\n", "- *$\\beta$*: *contact rate* or how many people an infected person comes into contact with in given time\n", "- *$\\gamma$*: *recovery rate* or how many people recover in given time\n", "\n", "Using our intuition for the model's formulation, those are the two parameters we will take into account. The rate on which people are infected should grow the more contact they have to each other and should decay as they recover. In another words, the rate of change is *positively* proportional to $\\beta$ (*contact rate*) and *negatively* proportional to $\\gamma$ (*recovery rate*)\n", "\n", "Finally, we have our equation,\n", "\n", "$$\n", "\\begin{equation}\n", "\\frac{dI}{dt} = \\left(\\beta - \\gamma\\right) I \n", "\\end{equation}\n", "$$\n", "\n", "Now let us take some time to check if we can take some conclusions from it. \n", "\n", "If the *recovery rate* is greater than *contact rate*, the rate of change will always be negative, so the infection will eventually dissipate and even not outbreak. On the other hand, if *contact rate* is greater *recovery rate*, we will have a disaster. Apparently, those paramaters indicate how strong an epidemic can be.\n", "\n", "Now, if $\\gamma$ is the *recovery rate*, then $1/\\gamma$ is the *infectious/recovery period* or the period of time during which an infected individual can pass it on, consider the product between the $\\beta$ (*contact rate*) and $1/\\gamma$ (*infectious period/recovery*) and we will have the average number of people an infected patient will pass it on.\n", "\n", "$$\n", "\\begin{equation}\n", "R_{0} = \\frac {\\beta}{\\gamma}\n", "\\end{equation}\n", "$$\n", "\n", "In fact, that indicator is known as the *basic reproduction number*. Note that when $R_0 > 1$ the infection will be able to start spreading in a population, but not if $R_0 < 1$.\n", "\n", "Probably everybody has that number in their minds at the present. When trying to mitigiate, we will see how important bringing it down is in order to slow down the epidemic.\n", "\n", "After the outbreak in China, studies found that COVID-19's basic reproduction number is between [1.4-3.9](https://pubmed.ncbi.nlm.nih.gov/31995857-early-transmission-dynamics-in-wuhan-china-of-novel-coronavirus-infected-pneumonia/), which means that, on avarage, a sick patient transmits the infection to 1.4 and 3.9 others. The *recovery period* is around [10 days](https://www.statnews.com/2020/03/09/people-shed-high-levels-of-coronavirus-study-finds-but-most-are-likely-not-infectious-after-recovery-begins/). \n", "\n", "We solved our equation numerically inputting different parameters to see how it plays out.\n", "\n", "#### The I Model" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# total population\n", "N = 10000000\n", "# initial number of infected and recovered \n", "I0, R0 = 1, 0\n", "# initial susceptible \n", "S0 = N - I0 - R0\n", "# contact rate and recovery rate\n", "beta, gamma = 0.2, 1./10\n", "# time\n", "t = np.linspace(0, 45, 45)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# gradient vector\n", "def gradient(y, t, N, beta, gamma):\n", " I = y\n", " dI = (beta - gamma) * I\n", " return dI\n", "\n", "# initial conditions vector\n", "y0 = I0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Simulate" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "betas = [0.20, 0.25, 0.30, 0.35, 0.4, 0.41, 0.42]\n", "results = dict()\n", "\n", "for beta in betas:\n", " y = sp.integrate.odeint(gradient, y0, t, args=(N, beta, gamma))\n", " I = y.T[0]\n", " \n", " results[beta] = I" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We wil solve the equation for multiple parameters, " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"f681ac81-5968-4e55-9c22-72634491ce5b\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1331\"}],\"center\":[{\"id\":\"1334\"},{\"id\":\"1338\"},{\"id\":\"1363\"}],\"left\":[{\"id\":\"1335\"}],\"plot_height\":400,\"plot_width\":750,\"renderers\":[{\"id\":\"1355\"},{\"id\":\"1368\"},{\"id\":\"1382\"},{\"id\":\"1398\"},{\"id\":\"1416\"},{\"id\":\"1436\"},{\"id\":\"1458\"}],\"title\":{\"id\":\"1321\"},\"toolbar\":{\"id\":\"1345\"},\"x_range\":{\"id\":\"1323\"},\"x_scale\":{\"id\":\"1327\"},\"y_range\":{\"id\":\"1325\"},\"y_scale\":{\"id\":\"1329\"}},\"id\":\"1320\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":\"#fee5d9\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1353\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fee5d9\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1354\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD8ZNYYDRhpUP9pN6BZPqlg/P3E3PnNDXj/pydcU75BiP7TIua2xx2Y/R4yMKEzzaz/tOtZjqCVxP6GA1Vz3CXU/ar8dcWfQeT9K3YOSS6x/P21i5mVOboM/nMK3jE/Xhz9boCXwj0CNP+/BYDkc8pE/4BOjntIElj9eFhNgMgSbP+mdyDD5kqA/NSFPRP1VpD/zKN0LlPOoP1DVKGlZna4/NTbw2RXIsj92/SD5XAu3P7uL+UZTRrw/mE2HDphYwT+cwPCZdkjFP/4vXf4VHco/FDQQ0DAF0D//AK3MBqjTP+Z6qLYhHtg/LzuVD3WX3T8TNMw9ayfiP3OPsg87RuY/mhC9QXNU6z/VG9sjNcTwP/PiG+ZlkvQ/T6dGpLI9+T8F1IGeSvj+Py3w/H3g/wJACWnFTdFPB0ASCEQOUZoMQFo3AgwfjBFACHikg6+HFUDV/3NZqGoaQBG1sJbHNCBA\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1410\"},\"selection_policy\":{\"id\":\"1409\"}},\"id\":\"1379\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1352\"}},\"id\":\"1356\",\"type\":\"CDSView\"},{\"attributes\":{\"click_policy\":\"hide\",\"inactive_fill_alpha\":0.6,\"items\":[{\"id\":\"1364\"},{\"id\":\"1378\"},{\"id\":\"1394\"},{\"id\":\"1412\"},{\"id\":\"1432\"},{\"id\":\"1454\"},{\"id\":\"1478\"}],\"location\":\"top_left\"},\"id\":\"1363\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"#fc9272\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1380\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fc9272\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1381\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1379\"}},\"id\":\"1383\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1358\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"3.0\"},\"renderers\":[{\"id\":\"1382\"}]},\"id\":\"1394\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1391\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1392\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"#fb6a4a\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1396\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD9jThGsRyhVP/rQIMZEUls/xdbT8P6jYT/7stutscdmP4CB2dC1am0/hxmkQlz+cj9tSLUa+IZ4P9j3spJLrH8/bhZISkpzhD/829GJjGiKPzj4gPYWDZE/TMzDntIElj/dneKSEG+cPxNKaVfhW6I/TgfB2Ca1pz/FTlZpWZ2uP0ZKZipZxLM/5Zffo6OGuT95RenxOXvAP01fEJp2SMU/TIcVDdR7yz/p3BRe1L7RP6VCDnxY6tY/5jHBD3WX3T/29kuUQBvjPzmjHEhHrOg/mEcRa3nc7z+jbzrmZZL0P4ijEEm4kPo/sJT14AYnAUBmzo4FUSYGQI6Ebg5RmgxAC2NOhc53EkCYs7HhNtkXQO7qbB/ryx5AnUMbq2riI0BvkR6/d60pQEurd/tLlDBAcqpne9ZoNUAP0zqJoqU7QK7kwKbS2UFAaDmwBTQNR0DEsilmeMRNQODP6dxQOFNA\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1430\"},\"selection_policy\":{\"id\":\"1429\"}},\"id\":\"1395\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1360\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"1395\"},\"glyph\":{\"id\":\"1396\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1397\"},\"selection_glyph\":null,\"view\":{\"id\":\"1399\"}},\"id\":\"1398\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fb6a4a\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1397\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1395\"}},\"id\":\"1399\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"3.5\"},\"renderers\":[{\"id\":\"1398\"}]},\"id\":\"1412\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1409\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1410\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1362\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"#ef3b2c\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1414\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD99sPHnc0RWP00Imj5zQ14/b/CgicGQZD/3AOgoTPNrP3n6xUJc/nI/GS1ycWfQeT+mmg57uIqBP2erBY1P14c/1Dh/bHwzkD9ZBeue0gSWP+nzSpn47J0/XpKRRP1VpD/CpuiUbaOrPyGSLdoVyLI/ChANpKOGuT+I978OmFjBP/Mj5hYvk8c/t4hE0DAF0D8g9qUr58XVP6/m9Q91l90//IIO8eAb5D8ZWBZCc1TrP6wDdo1qkvI/IhqZpLI9+T9qIRThBicBQGyMEU7RTwdAOgLB/NKuD0CRx+qDr4cVQATlgOLlQh1ANa0+q2riI0AT1vudWgYrQA4PZp1YXTJAgKkTFJL1OEDca09XA/ZAQBBG2QU0DUdARf7r+UlUT0CFLQimKUpVQOGBhlZI71xAUb6NmJipY0C6XKEjIblqQBxNuFPeKHJA8Wzanj+ueECfdLHci8WAQGeRJxhVy4ZA\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1452\"},\"selection_policy\":{\"id\":\"1451\"}},\"id\":\"1413\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1413\"},\"glyph\":{\"id\":\"1414\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1415\"},\"selection_glyph\":null,\"view\":{\"id\":\"1417\"}},\"id\":\"1416\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2.0\"},\"renderers\":[{\"id\":\"1355\"}]},\"id\":\"1364\",\"type\":\"LegendItem\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD+ryB8juhlTP1bJjudzRFY/MYB1F5n1WT8q0xM+c0NeP37xpPD+o2E/9l5FicGQZD8+uwV9qflnPw1BayhM82s/Dbn/UNRKcD83LXFCXP5yP0eimmyMJHY/YRH/cGfQeT+iVrPfFhh+P/RowHq4ioE/8mURSkpzhD+gdpuMT9eHPylU9CpAy4s/6Q03bHwzkD9Xp3+NJeOSP/TuiJ7SBJY/kSASCWurmT+0pMWY+OydP5q4dEKWcaE/i/w2RP1VpD/RqIHYJrWnP9yMbZRto6s/V63O/EUcsD+67dnZFciyP0/x2EpG5bU/rWabo6OGuT/RlW8cGMK9P1a9cg6YWME/rt7dOto4xD8SMn0WL5PHP/MlzAzUe8s/2Tb9zzAF0D8F75PsLK3SP0EBRSvnxdU/+s7c8BBi2T8tHHIPdZfdP8ZTzqm9P+E/UvO08OAb5D/JqG3/Z3HnP56gnEFzVOs/\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1392\"},\"selection_policy\":{\"id\":\"1391\"}},\"id\":\"1365\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#ef3b2c\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1415\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1413\"}},\"id\":\"1417\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1379\"},\"glyph\":{\"id\":\"1380\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1381\"},\"selection_glyph\":null,\"view\":{\"id\":\"1383\"}},\"id\":\"1382\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"1433\"},\"glyph\":{\"id\":\"1434\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1435\"},\"selection_glyph\":null,\"view\":{\"id\":\"1437\"}},\"id\":\"1436\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2.5\"},\"renderers\":[{\"id\":\"1368\"}]},\"id\":\"1378\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"4.0\"},\"renderers\":[{\"id\":\"1416\"}]},\"id\":\"1432\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1429\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1430\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1375\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1376\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1365\"},\"glyph\":{\"id\":\"1366\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1367\"},\"selection_glyph\":null,\"view\":{\"id\":\"1369\"}},\"id\":\"1368\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD9zssRODX9WP3UODnaN414/2MSvuco0ZT8BLnSHFR5tP7DxrZB4/XM/WtMFxJ5yez9O/tfIANiCP488U3Gr34k/zaHDTl3DkT/SCV2002OYPwVvghGXvqA/MZW5TcT9pj/iPX5UipGvP1Vb2HQ9rLU/Xbf/HBjCvT+ijSW4EW7EPza0rJU5Dcw/NeFq7yRC0z9c/f2TaHHaP4SYDj5rJ+I/UGFQTTXt6D8Bntcj6BzxP447Yw5Ff/c/RLxkm60hAECz6b4FUSYGQBe8Wou2aQ5AKFngHyXhFEBH7SlDO6scQKwQBfSeriNAx2UGnloGK0BZbc7ArI0yQNUGqbmceTlAAo/Ed0x9QUCnUgFCnwNIQD563taKfFBAAL/CNBSjVkD8OoMeBRVfQNmkF7fAVmVABmnt8LZMbUAgZ2/8ex10QNdKup6TnntAPa9sPS72gkCy3WAAGwmKQO8GB77P35FA\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1476\"},\"selection_policy\":{\"id\":\"1475\"}},\"id\":\"1433\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#cb181d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1434\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1329\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"4.1\"},\"renderers\":[{\"id\":\"1436\"}]},\"id\":\"1454\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#cb181d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1435\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1433\"}},\"id\":\"1437\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1352\"},\"glyph\":{\"id\":\"1353\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1354\"},\"selection_glyph\":null,\"view\":{\"id\":\"1356\"}},\"id\":\"1355\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Infected Population (in thousands)\",\"formatter\":{\"id\":\"1358\"},\"ticker\":{\"id\":\"1336\"}},\"id\":\"1335\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"1455\"},\"glyph\":{\"id\":\"1456\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1457\"},\"selection_glyph\":null,\"view\":{\"id\":\"1459\"}},\"id\":\"1458\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1451\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"Days\",\"formatter\":{\"id\":\"1360\"},\"ticker\":{\"id\":\"1332\"}},\"id\":\"1331\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1452\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1331\"},\"ticker\":null},\"id\":\"1334\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1325\",\"type\":\"DataRange1d\"},{\"attributes\":{\"text\":\"The I Model: Basic Reproductive Number Sensibility\"},\"id\":\"1321\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1332\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1327\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#99000d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1456\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1339\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1336\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD89QT7rQLpWP6E7F6r2hl8/aPiDT/DdZT8YgU/lWFVuP//XKl33CXU/CXIapU0vfT/sUAI0BT6EPyrfFcdkFIw/1EbgDcx5kz90yIBgMgSbP7VrlgsBvaI/L4ZplE7+qT8z124lXAeyP7OvV3lVArk/SLrNDphYwT8itNvt5g/IP/BQ3RpysNA/JbZqdKYm1z+5JBwjqg7gP8j8DBA7RuY/qlfI3QTm7j+5d2siT271Pxs5vTd/uv0/qJglS5CeBEDlJLgOUZoMQPHhY0iv1hNAIKEQcQyFG0CFGpvYXxYjQFmi4pZHeipASZ90nVhdMkDvRbO5nHk5QMa40P9Sq0FAP8Gc7amCSEAPR9gUCwBRQI618vsQlVdAnH0ThD9bYEDep1A/d7BmQFmZ99xieW9AhOYEgYXUdUB76v6sSEh+QNaqytfnAIVA9UDbEbwijUD4OseHTTWUQCr3ig1NCJxA\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1525\"},\"selection_policy\":{\"id\":\"1524\"}},\"id\":\"1455\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1365\"}},\"id\":\"1369\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fcbba1\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1367\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99000d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1457\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1455\"}},\"id\":\"1459\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1475\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1476\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1335\"},\"dimension\":1,\"ticker\":null},\"id\":\"1338\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1525\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1524\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1339\"},{\"id\":\"1340\"},{\"id\":\"1341\"},{\"id\":\"1342\"},{\"id\":\"1343\"},{\"id\":\"1344\"}]},\"id\":\"1345\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"1362\"}},\"id\":\"1341\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"4.2\"},\"renderers\":[{\"id\":\"1458\"}]},\"id\":\"1478\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_color\":\"#fcbba1\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1366\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1343\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1342\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1340\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABddNFFF13wP1100UUXXQBAjC666KKLCEBddNFFF10QQHTRRRdddBRAjC666KKLGECjiy666KIcQF100UUXXSBA6aKLLrpoIkB00UUXXXQkQAAAAAAAgCZAjC666KKLKEAXXXTRRZcqQKOLLrrooixALrrooouuLkBddNFFF10wQKOLLrroYjFA6aKLLrpoMkAuuuiii24zQHTRRRdddDRAuuiiiy56NUAAAAAAAIA2QEYXXXTRhTdAjC666KKLOEDRRRdddJE5QBdddNFFlzpAXXTRRRedO0Cjiy666KI8QOmiiy66qD1ALrrooouuPkB00UUXXbQ/QF100UUXXUBAAAAAAADgQECjiy666GJBQEYXXXTR5UFA6aKLLrpoQkCMLrrooutCQC666KKLbkNA0UUXXXTxQ0B00UUXXXREQBdddNFF90RAuuiiiy56RUBddNFFF/1FQAAAAAAAgEZA\",\"dtype\":\"float64\",\"shape\":[45]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD9nCBNF+CVSP0HMXANGGlQ/ty9753NEVj/OebUWT6pYPxQQwMVEUls/Eyj5PXNDXj+DkvKI3sJgPxwtsBTvkGI/J9YyicGQZD8q5YmtscdmP8aaHOCuO2k/edRRKEzzaz+DZ8HJ0fVuPwsrsmOoJXE/t95fQlz+cj/coKlc9wl1PxSobvX0TXc/FMLncGfQeT8KLkWVCJh8P46PQZJLrH8/146weriKgT9mxL1lTm6DP7YHaY/3hYU/k/uFjE/Xhz9EhHOJjGiKPxSb6O+PQI0/Z24obHwzkD8BRTs5HPKRP1b7MVbU4JM/YQ11ntIElj/F5NCz02OYP7fX2l8yBJs/xp6qmPjsnT8lC6Yw+ZKgP621J1fhW6I/iqEkRP1VpD+Yhz5amYamP0UJqQuU86g/GqFUlG2jqz9vE+loWZ2uP8Ir7r+o9LA/EwTJ2RXIsj8s/Oq42M20P1LT8PhcC7c/\",\"dtype\":\"float64\",\"shape\":[45]}},\"selected\":{\"id\":\"1376\"},\"selection_policy\":{\"id\":\"1375\"}},\"id\":\"1352\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1320\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", " var render_items = [{\"docid\":\"f681ac81-5968-4e55-9c22-72634491ce5b\",\"root_ids\":[\"1320\"],\"roots\":{\"1320\":\"44fc8713-a103-44f9-9543-c2f1a1af2a0d\"}}];\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", " 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": "1320" } }, "output_type": "display_data" } ], "source": [ "title = \"The I Model: Basic Reproductive Number Sensibility\"\n", "\n", "p = figure(title=title, x_axis_type=\"linear\", y_axis_type=\"linear\", plot_width=750, plot_height=400)\n", "\n", "for beta, color in zip(betas, reversed(Reds[len(betas)])):\n", " p.line(t, results[beta]/1000, color=color, legend_label=f'{beta*10}')\n", "\n", "p.xaxis.axis_label = 'Days'\n", "p.yaxis.axis_label = 'Infected Population (in thousands)'\n", "\n", "p.legend.location = \"top_left\"\n", "p.legend.click_policy = 'hide'\n", "p.legend.inactive_fill_alpha = 0.6 \n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "We visually check how small decrements *basic reproduction number* will have a huge accumulative gain over time.That is reason why we should take agressive action, either by social distancing, avoiding and cancelling events. \n", "\n", "We saw that the *basic reproduction number* depends on *contact rate* and *recovery rate*. Since the *recovery rate* is barely in our control as it is typicallly a biological charateristic of the virus, controlling the *contact rate* is our best chance to flatten the curve. That does not mean we should not invest in treatments, best case scenario will bring both down." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Thou shall not exponentiate!\n", "\n", "But here is the plot twist: an epidemic is not purely exponential! Our first model assumed that the infection will spread indefinitely, the population is infinite and there is no immunity or cure. \n", "\n", "Of course, that is nonsense. An rather evil way of think is that once the entire population is infected, there is none left to be infected!\n", "\n", "Let us address that in a new model by assuming the following,\n", "\n", "- fixed population (nobody dying, moving or being born)\n", "- recovery and immunity\n", "\n", "In COVID's case, [it is not clear how long the protection lasts](https://www.independent.co.uk/life-style/health-and-families/coronavirus-immunity-reinfection-get-covid-19-twice-sick-spread-relapse-a9400691.html). But we will assume it lasts longer than our simulated timeframe.\n", "\n", "We will use a compartmental model. The idea is to divide the population into group (or *compartments*) and describe how the infection moves from one to another. It was first introduced by [Anderson Ogilvy Kermack](https://en.wikipedia.org/wiki/Anderson_Gray_McKendrick) and [Anderson Gray McKendrick](https://en.wikipedia.org/wiki/Anderson_Gray_McKendrick]).\n", "\n", "Let the SIR model be as follows,\n", "\n", "- *S(t)*: susceptible but not yet infected population\n", "- *I(t)*: infectious population\n", "- *R(t)*: recovered population\n", "\n", "- *$\\beta$*: *contact rate* or how many people an infected person comes into contact with in given time\n", "- *$\\gamma$*: *recovery rate* or how many people recover in given time\n", "- *N*: total population \n", "\n", "First, the *equation S* tell us that as the population is infected, the susceptible population becames smaller. \n", "\n", "$$\n", "\\begin{equation}\n", "\\frac{dS}{dt} = - \\frac{\\beta SI}{N}\n", "\\end{equation}\n", "$$\n", "\n", "Second, the *equation I* is similar to our original model's, adding a factor of susceptibility.\n", "\n", "$$\n", "\\begin{equation}\n", "\\frac{dI}{dt} = \\frac{\\beta SI}{N} - \\gamma I\n", "\\end{equation}\n", "$$\n", "\n", "Last, the *equation R* represents that recovered population is proportinal to the recovery rate.\n", "\n", "$$\n", "\\begin{equation}\n", "\\frac{dR}{dt} = \\gamma I\n", "\\end{equation}\n", "$$\n", "\n", "Unfortunately, that system of differential equations non-linear and does not have analytical solution. Fortunately, we solve it numerically with the following initial conditions,\n", "\n", "#### The SIR Model" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# total population\n", "N = 10000000\n", "# initial number of infected and recovered \n", "I0, R0 = 1, 0\n", "# initial susceptible \n", "S0 = N - I0 - R0\n", "# contact rate and recovery rate\n", "beta, gamma = 0.2, 1./10\n", "# time\n", "t = np.linspace(0, 180, 180)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# gradient vector\n", "def gradient(y, t, N, beta, gamma):\n", " S, I, R = y = y\n", " dS = -beta * S * I / N\n", " dI = beta * S * I / N - gamma * I\n", " dR = gamma * I\n", " return dS, dI, dR\n", "\n", "# initial conditions vector\n", "y0 = S0, I0, R0" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "betas = [0.20, 0.25, 0.30, 0.35, 0.4, 0.41, 0.42]\n", "results = dict()\n", "\n", "for beta in betas:\n", " y = sp.integrate.odeint(gradient, y0, t, args=(N, beta, gamma))\n", " S, I, R = y.T\n", " \n", " results[beta] = (S, I, R)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"58e2bcb7-cfe1-4c92-9c90-766c2ba34e89\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1658\"}],\"center\":[{\"id\":\"1661\"},{\"id\":\"1665\"},{\"id\":\"1690\"}],\"left\":[{\"id\":\"1662\"}],\"plot_height\":400,\"plot_width\":750,\"renderers\":[{\"id\":\"1682\"},{\"id\":\"1695\"},{\"id\":\"1709\"}],\"title\":{\"id\":\"1648\"},\"toolbar\":{\"id\":\"1672\"},\"x_range\":{\"id\":\"1650\"},\"x_scale\":{\"id\":\"1654\"},\"y_range\":{\"id\":\"1652\"},\"y_scale\":{\"id\":\"1656\"}},\"id\":\"1647\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1667\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"Days\",\"formatter\":{\"id\":\"1687\"},\"ticker\":{\"id\":\"1659\"}},\"id\":\"1658\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1666\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1671\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1689\"}},\"id\":\"1668\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1654\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1656\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1687\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1669\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1670\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1666\"},{\"id\":\"1667\"},{\"id\":\"1668\"},{\"id\":\"1669\"},{\"id\":\"1670\"},{\"id\":\"1671\"}]},\"id\":\"1672\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1703\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1779\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1679\"}},\"id\":\"1683\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_dash\":[2,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1681\",\"type\":\"Line\"},{\"attributes\":{\"click_policy\":\"hide\",\"inactive_fill_alpha\":0.6,\"items\":[{\"id\":\"1691\"},{\"id\":\"1705\"},{\"id\":\"1721\"}],\"location\":\"center_left\"},\"id\":\"1690\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"WmQ73/+Hw0CF9tjP/4fDQCO5C7v/h8NAIFjrnv+Hw0BnjON4/4fDQAiPd0X/h8NAeTvw//6Hw0D5Xe2h/ofDQG4H0CL+h8NAny7wdv2Hw0A7D4uO/IfDQGExUVT7h8NACy1yq/mHw0CXTvhs94fDQD8cNmT0h8NAMuzxSfCHw0AoPt696ofDQP+zxT3jh8NAb66bGdmHw0AR3Vljy4fDQFPjMNm4h8NA9LUNyJ+Hw0Cnp8LjfYfDQIhaMhFQh8NANtmWHRKHw0Ds7EtcvobDQLCFPCJNhsNAqeoHE7SFw0BWL+cv5YTDQN6/AZPNg8NAJQ7dulOCw0DJLIBAVYDDQOjuWsejfcNAbRu55wB6w0DeAZ3DGHXDQBKnKeN6bsNAaoMV5JBlw0AWUnp8klnDQOHFyFh2ScNA10Cxi98zw0DI4tnBBxfDQBvDlmun8MJAfil14969wkAWfrebJnvCQLpvAb5QJMJAosS3+Ku0wUDfjb6LWyfBQK5ZaaX3d8BAXVmV2vdGv0AbMeMX1VK9QMXZ5/W1GbtA1L881waquED5fqwjoRm2QB1FVKPagrNA26x3jjEAsUDqMEiEFlCtQCpq973QE6lA03U1oklbpUAvfrju3yiiQJ2WiUiw6p5AALeMGrBnmkDWy/P6VaqWQDpZgqH7k5NA+DEEaFIIkUB5xxJgJN2NQJdPa6eJY4pAoe8iiyeBh0D3XE2KtxmFQBwFbileFoNAD+wyK7dkgUDw1/jz+et/QNZsYM6ifH1A9QqLVE5oe0BKHqgPkZ95QHTsXTTtFXhAydo8ejnBdkDo/KRGKJl1QHnyfnXolnRAoI96SNq0c0Dk7jkiVO5yQPVKTZtzP3JAfctYQfikcUBYsNvnJRxxQIAY++msonBA6TgwGZc2cECxVtK4cKxvQMnF/XZEAG9AUsB0ezNmbkD8SvNFHtxtQMgPETMuYG1A9fh8TMrwbECf084EjoxsQO5wRYhBMmxAnclbUNPga0AZOYvEUpdrQAi92rTrVGtAnTvDiOIYa0BZZngDkeJqQGJIm4NjsWpAFwZNqtaEakBfXB5YdVxqQMhZhvPWN2pAEcW06Z0WakBTKnRldvhpQISspzAV3WlAmCtkujbEaUCvFrY9nq1pQL9BEgMVmWlAiqbouGmGaUCdoLvgb3VpQCByXk3/ZWlAMFsusPNXaUBZ05UzLEtpQHhTziCLP2lARaS5j/U0aUCBYaUfUytpQJT/DreNImlALhguS5EaaUBQqlasSxNpQELovVisDGlABFQBU6QGaUBwlqL9JQFpQBm6d/kk/GhAphQYCJb3aEB2oYjwbvNoQBgdQGem72hATvvY9zPsaEAJUnzxD+loQFuar1Qz5mhAt588w5fjaECWGFtxN+FoQFD9ZxgN32hABlPH6hPdaEC0TOiIR9toQEYYWfej2WhAiZiwlSXYaEA7RGgWydZoQGOwV3eL1WhAGTv++mnUaEClD0wiYtNoQFwjFqdx0mhA97X0dpbRaECgs6muztBoQDS75ZUY0GhAEIJ1m3LPaEDHsMRR285oQPUvsGtRzmhAatykudPNaEDOAPsmYc1oQOLolLf4zGhAgLishZnMaECO19u/QsxoQLhXSKfzy2hAv0sCjqvLaEDHJYHVactoQBiAR+0ty2hA5DyjUffKaEBzhYuKxcpoQPAvmCqYymhA8jAQzm7KaECcnw4aScpoQOKSubsmymhAQsCMZwfKaEA6IrLY6sloQAOLa9DQyWhAOZaHFbnJaEB1rORzo8loQOCt/buPyWhAE+KBwn3JaEDwdPVfbcloQKm8WnBeyWhA+STj0lDJaECe6KZpRMloQISRYxk5yWhAPMQ/yS7JaEC29ZRiJcloQPdPvdAcyWhARaTmABXJaECrxujhDcloQCIZIGQHyWhA\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1703\"},\"selection_policy\":{\"id\":\"1702\"}},\"id\":\"1679\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1658\"},\"ticker\":null},\"id\":\"1661\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1780\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1663\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1662\"},\"dimension\":1,\"ticker\":null},\"id\":\"1665\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1689\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"label\":{\"value\":\"Infected\"},\"renderers\":[{\"id\":\"1695\"}]},\"id\":\"1705\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1650\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"1679\"},\"glyph\":{\"id\":\"1680\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1681\"},\"selection_glyph\":null,\"view\":{\"id\":\"1683\"}},\"id\":\"1682\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.5,\"line_color\":\"green\",\"line_dash\":[2,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1707\",\"type\":\"Line\"},{\"attributes\":{\"text\":\"The SIR Model: R = 4\"},\"id\":\"1648\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"1692\"},\"glyph\":{\"id\":\"1693\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1694\"},\"selection_glyph\":null,\"view\":{\"id\":\"1696\"}},\"id\":\"1695\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1692\"}},\"id\":\"1696\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"Recovered\"},\"renderers\":[{\"id\":\"1709\"}]},\"id\":\"1721\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1685\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"green\",\"line_dash\":[2,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1708\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1694\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1706\"}},\"id\":\"1710\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1718\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1719\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.5,\"line_dash\":[2,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1680\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1652\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"Susceptible\"},\"renderers\":[{\"id\":\"1682\"}]},\"id\":\"1691\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1659\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Population (in thousands)\",\"formatter\":{\"id\":\"1685\"},\"ticker\":{\"id\":\"1663\"}},\"id\":\"1662\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD+AbsT+NidWP8rl9vst9F0/R9DtJilAZD8czoVLn2FrPxGOaFnvgnI/mfhBFp8HeT9gGlvW8euAPyp8zbpR4YY/lA0Ul8/vjj/qULdARuqUP96UR/GgR5w/0bP6DW0eoz9SSynO2dmpP+/P7GkPerE/GDK8QnShtz9mycgnj/O/Py7o25TXmcU/DuDRtPI0zT8SPfIEzr7TP99M0gqWsto/cXpX53oM4j/eq9KzPGfoP5k7vqhQf/A/sVmeuRJO9j9JRRtADCj+P7vmA5OcYgRAJi1KZRSPC0COFDO4o6ASQKpHs3zoLRlANuLLGx0EIUCnTAei3f4mQNHvz0wKEi9AFAxUqzH8NEAyn70XVVY8QD/oliKvH0NAbb0Rgr3LSUBhDeyWJGJRQKD9B/gDZ1dA4XV0G0h1X0BKMl850hllQDOVMQA2O2xAmghSw4PRckAcsvKBZvh4QPO36K8Td4BAAMr5CbqKhUCJXaBrSuaLQPZHvXSs1pFAwWHYMmZ1lkDP0XfW9MCbQAGbq0ODyKBAupeewOPQo0CMPXFL18ymQLiPMGxoi6lAIMt3fxbgq0Ctu+CsfaqtQAH6yXh42q5AB1OR8vZvr0Ddm8ofl3evQPr/UVHcBa9APxTOlqQyrkAcKUT7vBWtQBlfpB3FxKtA8Qcr+itSqkBV1Mwb78yoQGnJyLvLQKdAqVzBr6a2pUBWlDO+BTWkQK0mHIyFwKJAZ5XIWEJcoUCMwTA3MAqgQGk/ItDFlp1At/ovF45Am0BC34LanRGZQF4ukloqCZdATmmDou4llUAioLbnU2aTQMkp1/ePyJFA8eJr9btKkECPG5xOytWNQI/1u3wyTotA/XPHRt76iEBKTH1CGtiGQOc+Hh5a4oRAKXvU8D0Wg0CttTRIlXCBQMd7PBDB3H9AhdZFHKIZfUDwZqbgkJJ6QI8VUzOuQnhA6XoP7nQldkDb/EC5tTZ0QDyi3HuScnJA0R1Uo3nVcEDdmNK8QrhuQIZZNMsFB2xAkyGSwquRaUCrImL0F1NnQOR8HDaZRmVA6Ply0+FnY0DPPMzz/7JhQOL3m3NWJGBA+bw8bSxxXUAiwGnSb9laQFeIJ2Xse1hAeyzcpJBTVkAME4JGultUQA0hjPsskFJAcQLj7QntUEDKzV7Mj91OQMiFjCNYJExAxR8YuYaoSUCHbNipuGRHQJsL0R8DVEVA7qzDBulxQ0DI4UmbUbpBQMa7Z8V/KUBAeZbVVhR4PUCG9ADip906QGSkFykMfjhAr+f2tRJUNkCd3zeJAVs0QGMwDOyIjjJArAtOMLrqMEBMj71Y/tcuQOyoUgslHixAkNwRJ/GhKUD4E7jj8V0nQFV+KiYxTSVAMt5BxihrI0D4B6yxuLMhQJ7mtPYdIyBA9TYkJdVrHUBcSd/s+9EaQI8pnXP8chhAZJ+tuKNJFkD8u18/NFEUQE7dvKVbhRJA+F20QSniEEBqGzbrCsgOQCeMbMNTDwxA1unQXjSUCUDhG0AgO1EHQLYXx4VxQQVArr1MT1FgA0B/Zg2VuqkBQPafNbvqGQBA3rGadOha/T+DMzEobsL6P6bjFga0ZPg/AepgY4g89j9PdBAlL0X0P1eUv0tXevI/0qzvixHY8D9YYJc/j7XuP+cak+No/us/oq5S1bmE6T8QpwjTEkPnP5mVZpt/NOU/0Hu+CXxU4z9F5dQ06p7hP6e3mFsJEOA/QatdaNtI3T/yovO68bHaP4YXViWmVdg/5w+Axcku1j8ehjUTozjUP/ViHHLjbtI/syRcx53N0D8mDZ+qe6LOP6IzGMQA7cs/C6CZHdh0yT++nquZlTTHP4zeEt5HJ8U//75ibG1Iwz9yiR/M6pPBP4nrAXcBBsA/Zxb0XY82vT+3UijlQaG6P9iwQGZuRrg/\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1719\"},\"selection_policy\":{\"id\":\"1718\"}},\"id\":\"1692\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAB8r2Dp28QeP5lE2crVFzI/xd3eQwMUQD8vb65q9pVJPzAGGxZ7OFM/9EeJ6mXpWz+nDHgo4dRjP59VZjm3xms/hXoH/lpCcz+N96kVhYV6P3a/TwerK4I/A0xB9yjPiD+3fPHuieSQPzvrT3YR9pY/1xGGk58qnz9Eq863aCGlP2eOlNyKoaw/B45+OeNisz86fBQyFD66PxRcCQejwcE/nF2vrAYGyD9nOYdEpT/QP1tHwy8k+tU/wjnsrOm43T95646E1BjkP+2+hJL+LOs/1dwWOHZf8j/5Skk5dNf4P2jTm+r+ygBAe17uv92zBkCGeRZ1gbAOQNb16I6wvRRAT4rUifsHHEBFVH1cR/AiQFkjCM+2lSlAFrfV0LxGMUALpKuvdFI3QMZNVI4+dz9AgkHWF+Q1RUDHc6BA9ZBMQEJKOzTeNVNAbiAjOH/KWUAsFzsOjEVhQI8yAcCBD2dAmbAnqhmqbkCPie2w+Ud0QAKr339ZpnpA3nGkxXRdgUDU0/aTbWeGQCHGEkJDkIxAZtHPIR32kUAyiWvazD+WQEjMTZrEHZtAP9uYY4Y/oEB/E9fOayWjQOqbPsm2MaZAOTc5a79UqUAI5nzxiH+sQM00aYrLpK9AK8j1rcFcsUCI+KADjNqyQC86zYieSLRAlG/paNWktUDyPBfm4+22QGMxLu0oI7hAwvO6todEuUBCipwvRlK6QBEsxHTxTLtA1lc17kc1vEDHEShFKAy9QGNpEV+E0r1ArVDrlFeJvkBVxmR4nzG/QKyVFZZWzL9ABazdXzgtwEAaBNRAbG7AQDcjWb02qsBAKq8OrwHhwEDVbgS6MBPBQFTWWTshQcFAacKIWSprwUC+TZksnZHBQFNDzvbEtMFAjDYpaOfUwUBQa5noRPLBQA8louUYDcJAUP4vIZolwkCh/+L/+jvCQBkjmdVpUMJASpBdLxFjwkDPvCIaGHTCQC8FAGaig8JA7++j5dCRwkC8iPqpwZ7CQKrD/zmQqsJAj6rSxlW1wkDglSBcKb/CQO8gGQ0gyMJAAwAJHk3QwkCeVdAqwtfCQLt2Y0qP3sJAdbN+L8PkwkDZW8VGa+rCQD8Sc9KT78JA+rbMA0j0wkCAI3wSkvjCQLie/FF7/MJAYpdARQwAw0CxsrCwTAPDQLL5pqpDBsNAdC6GqvcIw0BH0IeWbgvDQKf1XNCtDcNAwlW6QLoPw0CZIOZhmBHDQEZcXklME8NA1NynsNkUw0DdpF39QxbDQI18iEiOF8NAPP9YZbsYw0C22UTnzRnDQAAbpCfIGsNAqHjHSqwbw0AWrqdEfBzDQOAqIN05HcNAm9fWs+Ydw0CzIMFDhB7DQPe2Y+YTH8NACX3B1pYfw0CcKA40DiDDQNGyIAR7IMNALT6wNd4gw0Dkwl6iOCHDQPonlBCLIcNA7CcyNdYhw0D5ch61GiLDQKTprSZZIsNAidDrEpIiw0BhHMj2xSLDQKxwJ0T1IsNAHEDeYiAjw0AxVZOxRyPDQKMMkIZrI8NALjV9MIwjw0BonA/3qSPDQOeLpRvFI8NAusfV2d0jw0B10vJn9CPDQKd7gfcIJMNAGTKmtRskw0AgaIfLLCTDQKaAqF48JMNAVZc7kUokw0AN/WyCVyTDQLVTp05jJMNAxB3SD24kw0DKhYrddyTDQKgxV82AJMNARJjX8ogkw0Aw8u5fkCTDQFOr6ySXJMNARfyqUJ0kw0CQwbnwoiTDQCkHchGoJMNAp1YWvqwkw0DiRuoAsSTDQA8lSeO0JMNAv2m6bbgkw0CNfwSouyTDQPXQPZm+JMNA0lXcR8Ekw0CxysO5wyTDQKeTUvTFJMNAjJRt/Mckw0AJ4IrWySTDQL6Tu4bLJMNAdba0EM0kw0BRatd3ziTDQHtMOL/PJMNA\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1780\"},\"selection_policy\":{\"id\":\"1779\"}},\"id\":\"1706\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1693\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"1706\"},\"glyph\":{\"id\":\"1707\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1708\"},\"selection_glyph\":null,\"view\":{\"id\":\"1710\"}},\"id\":\"1709\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"1647\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", " var render_items = [{\"docid\":\"58e2bcb7-cfe1-4c92-9c90-766c2ba34e89\",\"root_ids\":[\"1647\"],\"roots\":{\"1647\":\"97caffa4-da62-452c-86b6-0c0ea588556c\"}}];\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", " 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": "1647" } }, "output_type": "display_data" } ], "source": [ "title = \"The SIR Model: R = 4\"\n", "\n", "p = figure(title=title, x_axis_type=\"linear\", y_axis_type=\"linear\", plot_width=750, plot_height=400)\n", "\n", "p.line(t, results[0.4][0]/1000, color='black', line_alpha=0.5, line_dash='dotted', legend_label=f'Susceptible')\n", "p.line(t, results[0.4][1]/1000, color='red', legend_label=f'Infected')\n", "p.line(t, results[0.4][2]/1000, color='green', line_alpha=0.5, line_dash='dotted', legend_label=f'Recovered')\n", "\n", "p.xaxis.axis_label = 'Days'\n", "p.yaxis.axis_label = 'Population (in thousands)'\n", "\n", "p.legend.location = \"center_left\"\n", "p.legend.click_policy = 'hide'\n", "p.legend.inactive_fill_alpha = 0.6 \n", "\n", "show(p)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"2f3fe129-d199-4a89-b171-57588801eee0\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1865\"}],\"center\":[{\"id\":\"1868\"},{\"id\":\"1872\"},{\"id\":\"1897\"}],\"left\":[{\"id\":\"1869\"}],\"plot_height\":400,\"plot_width\":750,\"renderers\":[{\"id\":\"1889\"},{\"id\":\"1902\"},{\"id\":\"1916\"},{\"id\":\"1932\"},{\"id\":\"1950\"},{\"id\":\"1970\"},{\"id\":\"1992\"}],\"title\":{\"id\":\"1855\"},\"toolbar\":{\"id\":\"1879\"},\"x_range\":{\"id\":\"1857\"},\"x_scale\":{\"id\":\"1861\"},\"y_range\":{\"id\":\"1859\"},\"y_scale\":{\"id\":\"1863\"}},\"id\":\"1854\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"1896\"}},\"id\":\"1875\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1925\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1926\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1857\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"#99000d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1990\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD9IIhhsbZpWPxGKAlnoLl8/idXrpJOCZT/GzYDM06xtP9yyrG1CeHQ/mNTcx2o9fD9Vm48D0nqDP4FPe83F34o/GNQon6KJkj9ikZo8CJOZP5j2deAbpKE/+GH5iV9WqD9Tyr0+rMmwP3yNX1oCKbc/XTDZjJDzvz+JAOI7LwrGPwo6CwvTZ84/bRzFyCr51D9DOpzJGe/cPyJnEK489eM/F5Za4l+I6z/32h2rqv3yP4Q7hmyYMvo/bZb+4q8RAkAmPQsynuwIQBuy7YdtMBFAIrKTyBa1F0CSZeaWz1ggQC2zCx8/iiZA/D5ZtbgSL0ADNuFFkGk1QOMFm8q9fz1Afi2Y2h9PREDBD5CIpvFLQLdhNg6RNFNABGdSkONcWkAZNchwZA9iQM1ioTd8rmhACi5gN6POcEDc7dXbn8h2QF4RNeuXsX5AjspNX2mBhEDqt0ulHhuLQGO1Jhnnq5FAWDyFsoemlkBINx9iqW+cQNVZYm3ya6FAyA4r1sTFpEAvI89qYw2oQHflcDNpBqtAxCITlQp8rUCUgGiT+EqvQG86buvHMrBA/iSUUPlosEBGUDhjJVKwQBCJgJYd+K9ALsnEzLzqrkDNTQpJm5etQKDs2EBnFqxAf1xfmmt6qkBWgguztNKoQHWAjTqUKqdArTpnokSKpUDsx0CCifejQFXn6SM9dqJAgU8+PMYIoUB341KS7GCfQBiw4tSm25xALWiecKKBmkCtlHL691GYQJaW2I0yS5ZA/ZI/eYBrlEB1c2VV17CSQAQm6ooOGZFASv8rOOVDj0CwjYX0pZKMQIfKDYQXGopAEfALyhjWh0DI3c0RuMKFQHregWY43INA5tSIZhQfgkCg0dRC/4eAQK2JzdTIJ35A8EoUjMx/e0AwlUCcuBJ5QLHY9mSh23ZAjKyAfPvVdEBDSJMvlv1yQP1vRuGVTnFA/1iT6dyKb0D8dc6ku71sQF9lkTfNL2pARl1iM5bbZ0Bik9HUELxlQKwO+umjzGNA8zW+RRoJYkBp5BPDmm1gQKR1DppB7V1AJkeC5upBW0C7tMX6UdNYQPQImvEZnFZAHCGHeF2XVECxyqSwpMBSQMfnft3bE1FAbDTippUaT0ATq00xGlNMQNfnD1gVy0lAXf4ny+J8R0A/HOPFXWNFQAeQIffVeUNARjE2TQW8QUANYluvBiZAQAGxgOaaaD1AmxHTOjvHOkDvL6d/CWI4QLr2DQSnMzZAeUWXYC83NED4JA6rLWgyQFxaNJWSwjBAD59M1laFLkAniZG3M8orQKYI0gOZTSlAr/L+BfAJJ0CwAJGwIfokQH4rF0+LGSNAO4TTHvRjIUCN3C2+B6sfQEte2Xd01RxAT8U1681AGkAyW3l7RecXQCXvt2eRwxVASzIW7+DQE0B7DbyH0QoSQKojnAVlbRBA8XMmRPHpDUATB7yoeTwLQMnSUcFbzAhA6XSBIxqUBkBFhX8dtY4EQKVrkHaftwJA3zLfNLQKAUD0uP2XWgj/P0mIIzs2Qfw/2w5ogbm5+T8R/k/uMWz3P5QqAIdvU/U/4nMGKblq8z/fJKTlwa3xP+JJoFSfGPA/N2gQioFP7T9415Bnzq/qP8kwNf07TOg/y/qed2gf5j/FfbtTbSTkP5vXZlnUVuI/P0j8i42y4D+DS0YJzGfeP5+JsD7/rts/Cz78xJI02T8Gd/Aw8fLWP7sULAsF5dQ/vhjnWS0G0z8awVE3M1LRP2pu4aCAis8/t26pgKy3zD+skk9mjSXKP85bQ3JYzsc/gvI4g8esxT98O6dUDbzDP39BhKrK98E/Y8wpewRcwD+Wb13qNcq9P2f8lamCH7s/ipZE7eyxuD+ty/Ig/Hu2P7FpJhG1eLQ/vmb1so6jsj92fibpZ/iwP39uJXP85q4/\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"2091\"},\"selection_policy\":{\"id\":\"2090\"}},\"id\":\"1989\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD8MR4ylHhFVP+7VCbGUFls/NFK1qU9qYT8BaBHFlWRmP5Z4n00Sy2w/koDHSu+Ccj9Vl4hnas13PxelM4MIm34/Wqi5HTitgz91mYUt9EyJP7y83XcYRJA/AfaZ0EXqlD/iz1qKn+SaPzPcEsovSqE/bPeByUQ7pj+xpFXx7ZWsP7G4YGLBYLI/Gjqrw3Ghtz9/n/zddGK+P51By3fQiMM/+iopnBceyT8aTgjc7CXQP0iiWKFow9Q/rAo75Yiy2j+6Ky9d4ynhPyP9kmCUEeY/Zisj2w9g7D8eAVf65z3yP0OR231GdPc/jEHlk8gn/j+hqSYkmmIDQNeUVKMl7AhAI6fiAyUFEECKFCibJpgUQCErbwEVeRpARN2qUXADIUDld2ddpN0lQNQ2AjInGSxA0FH5YekMMkBHB/G0py83QDufu7JGxj1AhCGXAkUcQ0Bw9QwNH4VIQPKaF64ZcU9Atl5k/qQkVEAivAU8pchZQEMRvYspe2BAtj3u3yIJZUAELJEUS8tqQHP+HDY3BXFAFyKCpaeNdUASytQBty57QMZDVQXgDYFA1UIKyiFEhUDTSjOGH1GKQHkFycaAIpBAryPLF/SRk0D4FY/bHXCXQOYd3ljcqptA0nkdtbwRoEBYOcX3wleiQGTcvrUjjqRAhIs36DOapkB16HOQXGOoQEuNo8Iv1qlAqcC+3XDmqkA5+nAKso+rQIy9KwGh1KtAuuexdHK9q0BR4mb49FWrQEf01Qu8q6pASeqe96XMqUBO/IgQ08WoQOJVQDUHo6dA9JGEpF9upkDW4fEkRDClQKN9Pzx976NATPoYd16xokAiMV0D+XmhQEJ4Tj9PTKBAM+wdAApVnkA2hFQiFSycQB2kwGaDH5pAozeFYzkwmEArZTwQcF6WQF/MKYjeqZRAK66tp9sRk0CKAqnZeJWRQKEu5UaXM5BA7+YI4fDVjUBW/iUrlnSLQLLzcTtqQIlAKbprRbY2h0AzcQcqzFSFQB1acMEOmINA3rdyyPf9gUC8LSj0G4SAQIzHEilbUH5AqHwpM/zPe0DVKjx7/YJ5QD6nqBOBZXdAB6OFuudzdUBnJ104z6pzQHuNqDYQB3JADsbCv7uFcEBgJjUNMUhuQFYOFxtAv2tAbk+YfvdraUDVXosSBEpnQAVYdQRnVWVAWknKR3CKY0DvMYE8ueVhQL81hZAfZGBASr9AvoAFXkAkmg8q531bQHgeDSuPLFlAT0aLSPoMV0DHqJYgBxtVQHM+qT/qUlNA7x0DdSexUUCT5VOcizJQQA8Zt7JNqE1Ayixofo4mS0DWjFu359pIQKVzPUTQwEZAEvKRXh/UREAaadPABBFDQB7ncG8BdEFAkJMyIsLzP0B6Q0ykZz89QGSS1naRxTpA5L9cEVGBOEBti4u2IW42QHEE2L3fhzRAA9Sqc8DKMkAfANXASjMxQI9+8J6gfC9AfjDdss7RLEALIinEyWAqQOF68viuJChA2t819QQZJkBird3wsjkkQAxDbp/4giJAJ1Rsz2bxIEBp29QZsQMfQLws4sLZYhxAfvRVPgL7GUAzENc6V8cXQOcb9t1twxVAqrkb7jrrE0AZ9Ke/CjsSQFPghdV5rxBAMMVJM9yKDkA/cvVVIfQLQG+gx1qQlQlAHL+nMWdqB0DmZHTqSm4FQG/e5Pw+nQNAlD3GTZ3zAUD/C37bDm4AQFYcYSMKE/4/OFAKSWeG+z/OxYTrFTH5P0ZB2eRlDvc/d8Isugwa9T/GWl0FHVDzP08lN47+rPE/vn/kFmct8D/NfSeAp5ztPzdgjvkFGus/gd/XF97N6D/3vjnJkbPmP6xffSznxuQ/q9TVDwAE4z+B1cgtUmfhP1tQOSNA298/ZxGRJOUn3T8dh0/CJa/aPxMv/yQKbNg/\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1964\"},\"selection_policy\":{\"id\":\"1963\"}},\"id\":\"1929\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99000d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1991\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1873\"},{\"id\":\"1874\"},{\"id\":\"1875\"},{\"id\":\"1876\"},{\"id\":\"1877\"},{\"id\":\"1878\"}]},\"id\":\"1879\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1989\"}},\"id\":\"1993\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#fb6a4a\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1930\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1859\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"4.2\"},\"renderers\":[{\"id\":\"1992\"}]},\"id\":\"2012\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fb6a4a\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1931\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1929\"}},\"id\":\"1933\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"3.5\"},\"renderers\":[{\"id\":\"1932\"}]},\"id\":\"1946\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2009\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2010\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1943\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1944\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1865\"},\"ticker\":null},\"id\":\"1868\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1861\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1870\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1866\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"#ef3b2c\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1948\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"Days\",\"formatter\":{\"id\":\"1894\"},\"ticker\":{\"id\":\"1866\"}},\"id\":\"1865\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1892\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD+AbsT+NidWP8rl9vst9F0/R9DtJilAZD8czoVLn2FrPxGOaFnvgnI/mfhBFp8HeT9gGlvW8euAPyp8zbpR4YY/lA0Ul8/vjj/qULdARuqUP96UR/GgR5w/0bP6DW0eoz9SSynO2dmpP+/P7GkPerE/GDK8QnShtz9mycgnj/O/Py7o25TXmcU/DuDRtPI0zT8SPfIEzr7TP99M0gqWsto/cXpX53oM4j/eq9KzPGfoP5k7vqhQf/A/sVmeuRJO9j9JRRtADCj+P7vmA5OcYgRAJi1KZRSPC0COFDO4o6ASQKpHs3zoLRlANuLLGx0EIUCnTAei3f4mQNHvz0wKEi9AFAxUqzH8NEAyn70XVVY8QD/oliKvH0NAbb0Rgr3LSUBhDeyWJGJRQKD9B/gDZ1dA4XV0G0h1X0BKMl850hllQDOVMQA2O2xAmghSw4PRckAcsvKBZvh4QPO36K8Td4BAAMr5CbqKhUCJXaBrSuaLQPZHvXSs1pFAwWHYMmZ1lkDP0XfW9MCbQAGbq0ODyKBAupeewOPQo0CMPXFL18ymQLiPMGxoi6lAIMt3fxbgq0Ctu+CsfaqtQAH6yXh42q5AB1OR8vZvr0Ddm8ofl3evQPr/UVHcBa9APxTOlqQyrkAcKUT7vBWtQBlfpB3FxKtA8Qcr+itSqkBV1Mwb78yoQGnJyLvLQKdAqVzBr6a2pUBWlDO+BTWkQK0mHIyFwKJAZ5XIWEJcoUCMwTA3MAqgQGk/ItDFlp1At/ovF45Am0BC34LanRGZQF4ukloqCZdATmmDou4llUAioLbnU2aTQMkp1/ePyJFA8eJr9btKkECPG5xOytWNQI/1u3wyTotA/XPHRt76iEBKTH1CGtiGQOc+Hh5a4oRAKXvU8D0Wg0CttTRIlXCBQMd7PBDB3H9AhdZFHKIZfUDwZqbgkJJ6QI8VUzOuQnhA6XoP7nQldkDb/EC5tTZ0QDyi3HuScnJA0R1Uo3nVcEDdmNK8QrhuQIZZNMsFB2xAkyGSwquRaUCrImL0F1NnQOR8HDaZRmVA6Ply0+FnY0DPPMzz/7JhQOL3m3NWJGBA+bw8bSxxXUAiwGnSb9laQFeIJ2Xse1hAeyzcpJBTVkAME4JGultUQA0hjPsskFJAcQLj7QntUEDKzV7Mj91OQMiFjCNYJExAxR8YuYaoSUCHbNipuGRHQJsL0R8DVEVA7qzDBulxQ0DI4UmbUbpBQMa7Z8V/KUBAeZbVVhR4PUCG9ADip906QGSkFykMfjhAr+f2tRJUNkCd3zeJAVs0QGMwDOyIjjJArAtOMLrqMEBMj71Y/tcuQOyoUgslHixAkNwRJ/GhKUD4E7jj8V0nQFV+KiYxTSVAMt5BxihrI0D4B6yxuLMhQJ7mtPYdIyBA9TYkJdVrHUBcSd/s+9EaQI8pnXP8chhAZJ+tuKNJFkD8u18/NFEUQE7dvKVbhRJA+F20QSniEEBqGzbrCsgOQCeMbMNTDwxA1unQXjSUCUDhG0AgO1EHQLYXx4VxQQVArr1MT1FgA0B/Zg2VuqkBQPafNbvqGQBA3rGadOha/T+DMzEobsL6P6bjFga0ZPg/AepgY4g89j9PdBAlL0X0P1eUv0tXevI/0qzvixHY8D9YYJc/j7XuP+cak+No/us/oq5S1bmE6T8QpwjTEkPnP5mVZpt/NOU/0Hu+CXxU4z9F5dQ06p7hP6e3mFsJEOA/QatdaNtI3T/yovO68bHaP4YXViWmVdg/5w+Axcku1j8ehjUTozjUP/ViHHLjbtI/syRcx53N0D8mDZ+qe6LOP6IzGMQA7cs/C6CZHdh0yT++nquZlTTHP4zeEt5HJ8U//75ibG1Iwz9yiR/M6pPBP4nrAXcBBsA/Zxb0XY82vT+3UijlQaG6P9iwQGZuRrg/\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1986\"},\"selection_policy\":{\"id\":\"1985\"}},\"id\":\"1947\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"4.0\"},\"renderers\":[{\"id\":\"1950\"}]},\"id\":\"1966\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2091\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1947\"},\"glyph\":{\"id\":\"1948\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1949\"},\"selection_glyph\":null,\"view\":{\"id\":\"1951\"}},\"id\":\"1950\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1876\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1863\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#ef3b2c\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1949\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2090\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1886\"},\"glyph\":{\"id\":\"1887\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1888\"},\"selection_glyph\":null,\"view\":{\"id\":\"1890\"}},\"id\":\"1889\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1947\"}},\"id\":\"1951\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD/PJ9gPiGBWP7jIxBP2j14/oxOl8u/eZD+aUrIbUoFsP42BPQdMd3M/MdmokyCWej+nec/q3CeCP9XqCmr+y4g/3+QJPwHvkD9DBg52sSCXPwxhsA5nlp8/Iy+WiCWSpT/VdfBHEHatP0JXXqFpHrQ/I/VArFZ6uz8H2ioVrcPCP/xI3GG+oMk/TGLPijyA0T+gi3O18ubXP368p49+UuA/9IgExcBK5j+hy/6q3nHuPycZ84gQyvQ/jZBgvjVk/D8AsmDh2mIDQOk987YoeQpA6PieVhoTEkD3JFoU0a0YQKHYq5uy2CBAZJykHA//JkBTKD11kGIvQFuLb2xAaTVAzeTphfszPUAh1B3FxudDQBaOGiMNHktAEbnBHEV0UkBei3nm9hVZQNXCzU55BWFAmhudwM0LZ0AghIc/fhtvQEsyw5Nx6HRA5RtlTcrze0DBBoA8H42CQJp/gIw9ZYhA916oInWzj0A/MQUA50qUQFMjAywSg5lAQ+0IvIVkn0AHcLTw7diiQDcvZ/1GCKZAEr9RT5EKqUCQW320QaurQF+hv/blwK1AmH5Ztaczr0CCXEgvnv6vQMo7iy1SFrBA3eUrdefSr0DBUl3pXwuvQA5d2OeD8K1AoOI2aZKarEBIAAn0Px6rQEw1ZAJajKlALlKMkfrxp0CmViteAFmmQCTTEX2cyKRAddzdettFo0Dhr1I4HtShQEk119F+daBAq3SQAURWnkB/Y/+J7uqbQH5Cw1TVqJlASKlg4hWPl0AwfzsRTZyVQH5Fi8TCzpNA/G+TgookkkBYlJSbm5uQQLn5lrnFY45AMlWct57Ki0ANeuwUt2eJQIrIt/kmN4dAC3IGJzI1hUA4R5wjTV6DQNbRyhAgr4FANKFFxYckgEAAHC9MK3d9QNe4ITYd43pAMcmMvtKHeECBumzRmGB2QFo1FhMXaXRAT0FL1kqdckBwl3jwgflwQAtn5Rir9G5A1vbBJko5bEBdHCt7IrtpQD+GoqfudGdAn1v0VdlhZUDeQt+8dH1jQNlptJKyw2FAxsxGg9wwYECmDEFJGoNdQAovKtFS5VpABsVcC7WCWEBadRynEFZWQKoL9iaoWlRA+1mSQSeMUkAgRn3+meZQQKXIaxjJzE5AlAoCeHcQTEBFuEE2PJJJQDuRKDibTEdAcsUVj5M6RUCBJpXPlFdDQPXrTVF1n0FAedCLPmkOQECTQpzN9EE9QHQ/lIwBqDpAmkJmWjdJOECQdQAEVyA2QOgnvBSYKDRAzQt0Z55dMkCAPkCicLswQDzb6P/efC5AIriNxZvGK0DW5kAmE04pQNwGeUXJDSdARA6ty74AJUCnABvfZSIjQFKqPR6YbiFAD/sO6RrDH0CBeleBp+8cQBmo6HKOXBpAWLyt8RYEGECpIJBVCuEVQFgavYuo7hNAUnqKkZ0oEkCZ9ULg94oQQBhBl1U/JA5A+2G71J11C0BgNsYxFAQJQM2eEiYzygZAbhhTJAfDBECoSLlUDeoCQHrIN5YpOwFAZ7VttDpl/z9/kDKn/pn8P6bDkslnDvo/kv4daMy89z+rZWzIA6D1P/Ki9qxas/M/WQ7T4ojy8T9MbYa/p1nwP39LvN9Syu0/QqfAKqIj6z9tFEcgV7noPxHnmN8RhuY/JyqZ9uyE5D+BFOZ3crHiP/+vhxSSB+E/tt0hHDAH3z9WGJP1SUTcPyyMMI5MwNk/zUa7t5511z9XA5LPJl/VP8WUCGE/eNM/vheVz6y80T/iIYHukyjQP6Nsdc/icM0/K6iG3iPSyj+NezFCFm/IP3s0lAlqQsY/LOYjTEhHxD/WIPFeSHnCP/e2xgpm1MA/Ka1qMPGpvj9JGlJXVe+7P1H27rjlcrk/KHRf3hkvtz+hCDdi5x61P4nT77O2PbM/\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"2010\"},\"selection_policy\":{\"id\":\"2009\"}},\"id\":\"1967\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1877\",\"type\":\"ResetTool\"},{\"attributes\":{\"text\":\"The SIR Model: Infected Population\"},\"id\":\"1855\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1963\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1964\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1873\",\"type\":\"PanTool\"},{\"attributes\":{\"axis_label\":\"Infected Population (in thousands)\",\"formatter\":{\"id\":\"1892\"},\"ticker\":{\"id\":\"1870\"}},\"id\":\"1869\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1869\"},\"dimension\":1,\"ticker\":null},\"id\":\"1872\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"2.0\"},\"renderers\":[{\"id\":\"1889\"}]},\"id\":\"1898\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD/yz9tUAx5SP8cFck2pCFQ/8Yko7zYnVj8497DlKX9YPz5CHZWUFls/Xixqzy30XT+u7tAgsY9gP8vv18MzUGI/u5t25ChAZD/EAXBxlWRmPxZzwE0Gw2g/28YCrJ5haz8AHKD0J0duP3U+Pa6RvXA/YKAfrO6Ccj/B9ZCHQXh0P8pKfxudonY/sjylp50HeT8GqW1cd617P9t1/2kGm34/2cvcZPDrgD81DP/xNLaCP3liaSX0sIQ/+nQf4U7hhj+jUnzp8EyJP0nvlpYf+os/Y7jrD8rvjj+Z8wekzRqRPwPOreoG6pI/8Tlw9UDqlD83/3PRqiCXPz23xur/kpk/wiOb6JZHnD/PmI4WckWfP9z/jcUoSqE/ot0zn2Meoz8UR2ucJiSlP7hy6g+vYKc/6FADLsjZqT8LRg4L2pWsP27NgTX6m68/It6kBv95sT/ZaiCFR1OzP1hxIZegXrU/gLXh5lWhtz+A8qF9QiG6PwIwPu7f5Lw/1u2UFFfzvz8JechPSarBP86JJsepiMM/20yy6aOZxT+cA4SykeLHP77qxPRdaco/sJb7qJM0zT9D06tttyXQP2QJWa732tE/kRCvuHa+0z+v/xVXGNXVP2nu/5tEJNg/DEEf2/Wx2j9dA3AXyITdP8M1TwgFUuA/joh5EOgL4j8zsdiHhPTjP5CM0YvKEOY/u+5prS9m6D8AR7P8vPrqP1L+3JEe1e0/JG4YWlp+8D/n9/Nk0zzyPyB9jSR8KvQ/FI066E9M9j+PLidV0Kf4P5ZSzH0TQ/s/PLDVatMk/j835BmiP6oAQInQpR8nbQJAUOQ/PqpfBEBH4ncIzYYGQBi3+zIa6AhAZZopGLGJC0DHRtgiVXIOQGGDz2G/1BBAD8BkD7ebEkBTWwLNn5IUQE82oTiBvhZANee8xugkGUBQdadj98sbQG+Zz2dwuh5AqYP3/+T7IEC64umQH8YiQOO1aJlxwCRA9QZXwdvvJkBZOete4VkpQK6kXzmVBCxAH4B2b6f2LkA2Q+VEuhsxQH0TCOqK5zJAk0C0gTnjNEAgVUCfqhM3QDZnr8Y9fjlAAQq9W9goPEBeE75K8Rk/QLg+ZbBOLEFA9y/1Kk72QkDX1fE0M+9EQGS200idG0dAdiSKfpaASUCs0QbwmiNMQIyWexigCk9ABByDBg4eUUDITIwwht9SQEIBsjd+zVRA7IzhYgXsVkDn98Cxdj9ZQCOhZSB6zFtApkXK2wSYXkBDRPcLrNNgQMF9hBf/f2JAnjmH1OJTZEAyDR3cXFJmQBaR8NuLfmhASy86kqDbakBjOiDD1GxtQG7hx/GvGnBAVgBamjSccUBFEwCNezxzQDRHSbzt/HRAG7Plgc7edkCJpBfCLuN4QBzEpZneCntAG7+4wl1WfUDXwBH/ysV/QMyaT3FpLIFA8cIjSE+HgkCxbySN4fKDQND76iQZboVAHWfU5Jb3hkD8R07Uno2IQI1h/p4VLopAtFEHvoDWi0BmUXKrCYSNQAu36paEM49AztHVU71wkECFRcvjG0WRQNJUtuztFJJAbc7+VjfekkDPEvIe+56TQFm4xRJHVZRALTaFuj//lECeSljhK5uVQAszKS9/J5ZAe6ACc+OilkDwaZINQAyXQH35Lly/YpdAfY4249Gll0BNMhEpL9WXQGQwbXXU8JdA3Hg8hAH5l0DTrnWVM+6XQPZPlRYf0ZdACq4PWqiil0D13uSx22OXQHuQ2T7lFZdA8z+w4Ai6lkA9ov5omlGWQBT8ZF/23ZVA4j+edntglUAKEzPFhNqUQG6m4NtkTZRAn4p1r2G6k0Cq4dVasSKTQG31OqR3h5JADiIiOsTpkUAAA6yUkUqRQA4cAGDEqpBArlWUYysLkEDDqTyV/9iOQAhg8XjLno1A\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1910\"},\"selection_policy\":{\"id\":\"1909\"}},\"id\":\"1886\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#fee5d9\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1887\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#cb181d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1968\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1886\"}},\"id\":\"1890\",\"type\":\"CDSView\"},{\"attributes\":{\"click_policy\":\"hide\",\"inactive_fill_alpha\":0.6,\"items\":[{\"id\":\"1898\"},{\"id\":\"1912\"},{\"id\":\"1928\"},{\"id\":\"1946\"},{\"id\":\"1966\"},{\"id\":\"1988\"},{\"id\":\"2012\"}],\"location\":\"top_left\"},\"id\":\"1897\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#cb181d\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1969\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1967\"}},\"id\":\"1971\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1989\"},\"glyph\":{\"id\":\"1990\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1991\"},\"selection_glyph\":null,\"view\":{\"id\":\"1993\"}},\"id\":\"1992\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fee5d9\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1888\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"4.1\"},\"renderers\":[{\"id\":\"1970\"}]},\"id\":\"1988\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"1967\"},\"glyph\":{\"id\":\"1968\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1969\"},\"selection_glyph\":null,\"view\":{\"id\":\"1971\"}},\"id\":\"1970\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1874\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1985\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1986\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1894\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1899\"}},\"id\":\"1903\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1896\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"#fcbba1\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1900\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD/N1B/PKw1TP7d3Qfc2J1Y/OuWI8ojCWT/uTvHlLfRdP4VG7JlPamE/uQGsBylAZD9fnAwOL4xnP7eHFQGfYWs/PvJZHtjWbz8597cI74JyPyNOYGJ4hnU/Btv0bZ4HeT9zdUyG1Bp9P3Ioly3x64A/5CG+Wzetgz+MKb5uUOGGP/oelxLumoo/18QIFc3vjj9cX0EcmvyRP/nT59pD6pQ/+TvgXPpRmD/2bXRnnEecPweGgG8icaA/Kxbcymgeoz87KtMFQDumP+H9+tjR2ak/jeDr6zwPrj9zsCAFCHqxPyd7oLJsUrQ/Ad5qkmahtz9CbiCJQ3q7PwdfMeJ1878/Id0im4uTwj/gfNpNwJnFP/YTK8v9Hck/aqXS5cc0zT89tIeJ/PrQP4kjKbWmvtM/bqqzHIL11j8qeNPqTbLaP7Wp0/TVCt8/u+1yyzgM4j/dzSqRS/zkP7Jot5fDZug/YedH1olf7D9diS7I4X7wP4ShRVMsLvM/rbZyykdN9j+EA8lKYe75P/CxMvSYJv4/GcDG9z2HAUCf8ewASWEEQGdckd8AsgdAYmPGcqeMC0Bbvda7zQMQQPnvYyBsnhJA2C+TwUSlFUAMxKsf2ykZQL5+/BmDQB1ADlFNbmkAIUCgXY8XE8MjQDFfc8ga+CZAUlbj5uGxKkAnEleDsgUvQFuYUI8YBjJAyIDvM+/wNEDU2xlU1VM4QAvHUkjOQTxANLdsQWNoQEAyN5BR/gxDQD1dqBU7HUZA2YAS+b+pSUBRWFjxnMVNQGIgHTRLQ1FAt+lmA7oCVEDWMTG9KC9XQFDB2hp32FpAVkpEDXwQX0DmKnG6kvVhQJf9OStHv2RAH8AiIYPxZ0BUW6yfgZlrQKixF/96xW9Al+gFnD1CckBN5TVgD/N0QDrC6O8X/XdAuZNlMg9oe0DsBWQ1Jjt/QH3Szy9LvoFAk+c+sowYhEA14Kg4pq2GQC2QXT2CfYlA4cfG4E6GjEBdDXqZKsSPQOzx/p1vmJFAd2liGNthk0Db9iFouDiVQPnd1CA3FpdAJHKOQYLymEBDXvhVBsWaQNaes9TNhJxAPjcf8OwonkDttMRV86ifQFVGiHusfqBAv9WYpe0PoUDP+cM/4YWhQBQofqoE36FAS+1KIbMaokCMBfkOHDmiQNFQJrEtO6JAtFrQbnciokCDabaCB/GhQBp9+VVHqaFANfwLTNlNoUCOGU78eeGgQL/4ZA7mZqBA9l5UforBn0ApnR4WNaOeQLjNOTdyd51A1eq9uXpCnEAjvdYLEwibQE23wLmJy5lAW3HMFbqPmEBBGdXSEVeXQLTmVpSYI5ZAU0k6p/j2lECizflHiNKTQML8nfxSt5JAu1wksCKmkUCsGtBViJ+QQKOYRd7HR49A9yjexddmjUCKCZM3Z5yLQIk/ud5i6IlAFq1DqYdKiECtfMLoa8KGQKM2/z6HT4VApAh7dDnxg0CUGihN0KaCQOHD14GMb4FAs2b376VKgEBKcPgynm5+QLx/jBtwaXxA+W3kmiGEekAdjdh3Fr14QKXFvF25EndAfVFIVH6DdUC4MOSo5A10QBgDlF94sHJAr60SP9NpcUBn9UuHnThwQFEN5cccN25Amd5DRdgibECHuix2GDJqQFtqHGKmYmhAQeqKrWiyZkALeu3wYh9lQD8Doue0p2NAHf4jhZlJYkCqY3b0ZQNhQLLyuRMRp19A87bjWA9xXUDxBll0AWJbQNFNXtlNd1lAlgsKfoSuV0AREDCvXAVWQEaUUPOyeVRACZly+oYJU0CErwSg+bJRQLzrTP5KdFBAZrQKMLGXTkBlzqonN3BMQB3mch1Ob0pAXzCkAk2SSEAl6yF3uNZGQLknDuY/OkVADfwdzrq6Q0DsE+IsJlZCQIW49hGiCkFA\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1926\"},\"selection_policy\":{\"id\":\"1925\"}},\"id\":\"1899\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1899\"},\"glyph\":{\"id\":\"1900\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1901\"},\"selection_glyph\":null,\"view\":{\"id\":\"1903\"}},\"id\":\"1902\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fcbba1\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1901\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"2.5\"},\"renderers\":[{\"id\":\"1902\"}]},\"id\":\"1912\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1909\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1910\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"#fc9272\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1914\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAA4Q2v34RbwPzhDa/fhFgBA1OQg81IiCEA4Q2v34RYQQAYURnWaHBRA1OQg81IiGECitftwCygcQDhDa/fhFiBAn6tYNr4ZIkAGFEZ1mhwkQG18M7R2HyZA1OQg81IiKEA7TQ4yLyUqQKK1+3ALKCxACR7pr+cqLkA4Q2v34RYwQGz34RZQGDFAn6tYNr4ZMkDSX89VLBszQAYURnWaHDRAOsi8lAgeNUBtfDO0dh82QKAwqtPkIDdA1OQg81IiOEAImZcSwSM5QDtNDjIvJTpAbgGFUZ0mO0CitftwCyg8QNZpcpB5KT1ACR7pr+cqPkA80l/PVSw/QDhDa/fhFkBAUp0mB5mXQEBs9+EWUBhBQIVRnSYHmUFAn6tYNr4ZQkC5BRRGdZpCQNJfz1UsG0NA7LmKZeObQ0AGFEZ1mhxEQCBuAYVRnURAOsi8lAgeRUBTInikv55FQG18M7R2H0ZAh9buwy2gRkCgMKrT5CBHQLqKZeOboUdA1OQg81IiSEDuPtwCCqNIQAiZlxLBI0lAIfNSInikSUA7TQ4yLyVKQFWnyUHmpUpAbgGFUZ0mS0CIW0BhVKdLQKK1+3ALKExAvA+3gMKoTEDWaXKQeSlNQO/DLaAwqk1ACR7pr+cqTkAjeKS/nqtOQDzSX89VLE9AViwb3wytT0A4Q2v34RZQQEXwSH89V1BAUp0mB5mXUEBfSgSP9NdQQGz34RZQGFFAeKS/nqtYUUCFUZ0mB5lRQJL+eq5i2VFAn6tYNr4ZUkCsWDa+GVpSQLkFFEZ1mlJAxrLxzdDaUkDSX89VLBtTQN8Mrd2HW1NA7LmKZeObU0D5ZmjtPtxTQAYURnWaHFRAE8Ej/fVcVEAgbgGFUZ1UQC0b3wyt3VRAOsi8lAgeVUBGdZocZF5VQFMieKS/nlVAYM9VLBvfVUBtfDO0dh9WQHopETzSX1ZAh9buwy2gVkCUg8xLieBWQKAwqtPkIFdArd2HW0BhV0C6imXjm6FXQMc3Q2v34VdA1OQg81IiWEDhkf56rmJYQO4+3AIKo1hA++u5imXjWEAImZcSwSNZQBRGdZocZFlAIfNSInikWUAuoDCq0+RZQDtNDjIvJVpASPrruYplWkBVp8lB5qVaQGJUp8lB5lpAbgGFUZ0mW0B7rmLZ+GZbQIhbQGFUp1tAlQge6a/nW0CitftwCyhcQK9i2fhmaFxAvA+3gMKoXEDJvJQIHulcQNZpcpB5KV1A4hZQGNVpXUDvwy2gMKpdQPxwCyiM6l1ACR7pr+cqXkAWy8Y3Q2teQCN4pL+eq15AMCWCR/rrXkA80l/PVSxfQEl/PVexbF9AViwb3wytX0Bj2fhmaO1fQDhDa/fhFmBAvhlauw83YEBF8Eh/PVdgQMvGN0Nrd2BAUp0mB5mXYEDYcxXLxrdgQF9KBI/012BA5SDzUiL4YEBs9+EWUBhhQPLN0Np9OGFAeKS/nqtYYUD/eq5i2XhhQIVRnSYHmWFADCiM6jS5YUCS/nquYtlhQBnVaXKQ+WFAn6tYNr4ZYkAlgkf66zliQKxYNr4ZWmJAMi8lgkd6YkC5BRRGdZpiQD/cAgqjumJAxrLxzdDaYkBMieCR/vpiQNJfz1UsG2NAWTa+GVo7Y0DfDK3dh1tjQGbjm6G1e2NA7LmKZeObY0BzkHkpEbxjQPlmaO0+3GNAgD1XsWz8Y0AGFEZ1mhxkQIzqNDnIPGRAE8Ej/fVcZECZlxLBI31kQCBuAYVRnWRApkTwSH+9ZEAtG98Mrd1kQLPxzdDa/WRAOsi8lAgeZUDAnqtYNj5lQEZ1mhxkXmVAzUuJ4JF+ZUBTInikv55lQNr4ZmjtvmVAYM9VLBvfZUDnpUTwSP9lQG18M7R2H2ZA81IieKQ/ZkB6KRE80l9mQAAAAAAAgGZA\",\"dtype\":\"float64\",\"shape\":[180]},\"y\":{\"__ndarray__\":\"/Knx0k1iUD/MX95QqQhUPyGdffQpf1g/KXc08S30XT/vTKnxM1BiP6qMO7mVZGY/cEpOKZ9haz/NYrIYkr1wP1zivTdCeHQ/aEnTx54HeT9SeEY2CJt+Pz2L9V42toI/dYVwHlHhhj9QPlATI/qLP15Hm1fQGpE/zDjtHkXqlD/u2ahMBpOZP+95GNZ7RZ8/rgjBCmseoz8Y9N9TumCnP0UPORvrlaw/prgh7At6sT8XXEoNtF61PygbVNFfIbo/kgNWOIPzvz8o4wL2yojDP/iivovD4sc//ln7fN40zT85YvnOL9vRP9YrGH9s1dU/Et7g+nOy2j9aMICBY1LgP6vT4gMS9eM/o+jngQNn6D8XR0mkW9btP4fe0aTAPfI/yt/U4rJN9j+ZzYaIJkX7P8v7PMnMqwBAeq4wM/xhBEB/VQtdkusIQP/ehw+Fdw5AyVvZoZefEkCLuIHRTMQWQM65Z4+g1BtAEatjbV0CIUD9mPwSHMokQL3KwvtQaClArPRhLjUML0CSRH2boPcyQLuyg8mpKzdAwQG8oqBMPEBwECIR+EZBQLBuQNjmFkVAiQddW6e7SUB5qQczZ2JPQNEud/uoIFNAXvGmdIhMV0DBPTK/MltcQA+GfPvyPGFA9BaOYMHuZEDC4Y/xlWFpQBZIbSxNuG5AV3ucGvyMckByxR4KsVh2QE/K3tcB1npAtjw7nwwOgEAY3tovlSCDQBIAtiU8rIZAe+ZB9eG3ikB3l9/qGUaPQJ8d0mK8KZJAec4FLXrqlEAsZ/lCUduXQL3YUueZ7ZpA6M2ZkT8OnkD1Y11HVJOgQAFYGqEcD6JAop1luSNuo0BEeBIrGaWkQCqEszejqqVAtaS3hA94pkBP9vwQqwmnQDKLJxu+XqdAs4nhlTp5p0ChTo3YNl2nQHFwuetQEKdAfKBR8BKZpkAeozDEaf6lQFIeUwE3R6VALgnrzQB6pEC7j3SGvZyjQO8EOK+2tKJAaFSb533GoUDgpcmz7tWgQC911XRxzJ9ABZZ+893znUAqC+/FMiacQKql4CeOZppAZ5aZB0C3mEDQOMHf6hmXQKh2el2hj5VAItJThQAZlEAUH8ZiRraSQP2VvG5lZ5FAml6A9RQskEAp26ehvQeOQKseOJdV3ItA48KCAJDUiUCpQ/376O6HQOSFdPDGKYZAUcigd4SDhECStJo8ePqCQFG55Sb7jIFAVBipHm05gEDREU5Scfx9QKsMgimrs3tAqCdVw5WVeUDoGa4VYJ93QFArXaNbznVAuCCSSf0fdEA7JiNs3ZFyQHCZZai3IXFAfbmqUdSab0AQKq9f6SVtQBoamN/u4GpAGPvUe2PIaEBn9utXAdlmQLiI9Si7D2VAGxpDQLlpY0AsVdWUVuRhQB9FPNUdfWBAWsHRF41jXkD5eh6tZABcQB1xkHHUzFlA5ZYoEzjFV0AZPtQBMOZVQHnTY8acLFRAogvbmJqVUkAvGig3fR5RQAc9mvCXiU9AbnUNPHwMTUBZJ6C/bsFKQNegaF2JpEhAz5q0YDKyRkC4egbZFudEQOIkMVglQENAXFGqDYm6QUDGn8E4pVNAQB4eDtwhEj5AQjeYUiaxO0C0MldSPoA5QCtiWRuiezdASPtNbtWfNUDBfIC/oekzQIuiwtgQVjJATAcj4mfiMEBOIyOURRgvQD7JhAzgoSxAIv8eTlldKkDncYBuwUYoQAz4hsV3WiZAE1oxviSVJEAlwfMgtPMiQJlAss5PcyFATWnp41oRIECRu6N42pYdQLDEXp6ePhtA/OfmvOwVGUAg6aLiARkXQIpROCtnRBVAbaUtw+uUE0C3ZLJjnwcSQOc3nzzNmRBAEm4die6RDkDd01vOoyUMQC97wxOA6glAVOEiwp7cB0CmXxIdavgFQN3gRQmVOgRA\",\"dtype\":\"float64\",\"shape\":[180]}},\"selected\":{\"id\":\"1944\"},\"selection_policy\":{\"id\":\"1943\"}},\"id\":\"1913\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1913\"},\"glyph\":{\"id\":\"1914\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1915\"},\"selection_glyph\":null,\"view\":{\"id\":\"1917\"}},\"id\":\"1916\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fc9272\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1915\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1913\"}},\"id\":\"1917\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1929\"},\"glyph\":{\"id\":\"1930\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1931\"},\"selection_glyph\":null,\"view\":{\"id\":\"1933\"}},\"id\":\"1932\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"3.0\"},\"renderers\":[{\"id\":\"1916\"}]},\"id\":\"1928\",\"type\":\"LegendItem\"}],\"root_ids\":[\"1854\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", " var render_items = [{\"docid\":\"2f3fe129-d199-4a89-b171-57588801eee0\",\"root_ids\":[\"1854\"],\"roots\":{\"1854\":\"68940f04-69f6-497e-8fa8-782e5f4b60a8\"}}];\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", " 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": "1854" } }, "output_type": "display_data" } ], "source": [ "title = \"The SIR Model: Infected Population\"\n", "\n", "p = figure(title=title, x_axis_type=\"linear\", y_axis_type=\"linear\", plot_width=750, plot_height=400)\n", "\n", "for beta, color in zip(betas, reversed(Reds[len(betas)])):\n", " #p.line(t, results[beta][0]/1000, color=color, legend_label=f'{beta*10}')\n", " p.line(t, results[beta][1]/1000, color=color, legend_label=f'{beta*10}')\n", " #p.line(t, results[beta][2]/1000, color=color, legend_label=f'{beta*10}')\n", " \n", "p.xaxis.axis_label = 'Days'\n", "p.yaxis.axis_label = 'Infected Population (in thousands)'\n", "\n", "p.legend.location = \"top_left\"\n", "p.legend.click_policy = 'hide'\n", "p.legend.inactive_fill_alpha = 0.6 \n", "\n", "show(p)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.1" } }, "nbformat": 4, "nbformat_minor": 4 }