Skip to content

Instantly share code, notes, and snippets.

@karkir0003
Last active December 19, 2020 22:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karkir0003/f454a6c1d7f6a1f52404fa025e4cd0f4 to your computer and use it in GitHub Desktop.
Save karkir0003/f454a6c1d7f6a1f52404fa025e4cd0f4 to your computer and use it in GitHub Desktop.
Monte Carlo Pi Approximation
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "PiApproxMonteCarlo.ipynb",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"ccede336699a46669b58af71cace6ca5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "VBoxModel",
"state": {
"_view_name": "VBoxView",
"_dom_classes": [
"widget-interact"
],
"_model_name": "VBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_b02a113b093a4c6da61a4b2daa681906",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_890c532caac14699b7de028fc52fa7d8",
"IPY_MODEL_119e660777ac4b6ab27244070ad294e7"
]
}
},
"b02a113b093a4c6da61a4b2daa681906": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"890c532caac14699b7de028fc52fa7d8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "IntSliderModel",
"state": {
"_view_name": "IntSliderView",
"style": "IPY_MODEL_d4d1051caaad471989886a0e7d298c9b",
"_dom_classes": [],
"description": "i",
"step": 1,
"_model_name": "IntSliderModel",
"orientation": "horizontal",
"max": 10000,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 10,
"_view_count": null,
"disabled": false,
"_view_module_version": "1.5.0",
"min": 0,
"continuous_update": true,
"readout_format": "d",
"description_tooltip": null,
"readout": true,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_8298f4b204544524abe66ac23ab0b75b"
}
},
"119e660777ac4b6ab27244070ad294e7": {
"model_module": "@jupyter-widgets/output",
"model_name": "OutputModel",
"state": {
"_view_name": "OutputView",
"msg_id": "",
"_dom_classes": [],
"_model_name": "OutputModel",
"outputs": [
{
"output_type": "display_data",
"metadata": {
"tags": [],
"needs_background": "light"
},
"image/png": "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\n",
"text/plain": "<Figure size 576x288 with 2 Axes>"
}
],
"_view_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_view_count": null,
"_view_module_version": "1.0.0",
"layout": "IPY_MODEL_fa91f36ee8ce4afbb7793f90612046e5",
"_model_module": "@jupyter-widgets/output"
}
},
"d4d1051caaad471989886a0e7d298c9b": {
"model_module": "@jupyter-widgets/controls",
"model_name": "SliderStyleModel",
"state": {
"_view_name": "StyleView",
"handle_color": null,
"_model_name": "SliderStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"8298f4b204544524abe66ac23ab0b75b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"fa91f36ee8ce4afbb7793f90612046e5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "fZIEdp5jPBal"
},
"source": [
"#Monte Carlo Method to Approximate Pi\r\n",
"##By Karthik Subramanian and Valentin Stelea\r\n",
"\r\n",
"This notebook takes you through the process of using repeated random sampling to approximate $\\pi$. The user is able to play around with the interactive plots and test out different parameters to gain an understanding of how this method can be used to approximate $\\pi$."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ahD1OVUJS7WL"
},
"source": [
"#function that uses unit square with a circle of radius 0.5 inside\r\n",
"def getPiApproximationMonteCarlo(N_samples):\r\n",
" x = np.random.uniform(0,1,N_samples)\r\n",
" y = np.random.uniform(0,1,N_samples)\r\n",
" # check if in circle\r\n",
" check = ((x-0.5)**2+(y-0.5)**2 <=1/4).astype(int)\r\n",
" freq = np.sum(check)/N_samples\r\n",
" return freq*4"
],
"execution_count": 83,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 362,
"referenced_widgets": [
"ccede336699a46669b58af71cace6ca5",
"b02a113b093a4c6da61a4b2daa681906",
"890c532caac14699b7de028fc52fa7d8",
"119e660777ac4b6ab27244070ad294e7",
"d4d1051caaad471989886a0e7d298c9b",
"8298f4b204544524abe66ac23ab0b75b",
"fa91f36ee8ce4afbb7793f90612046e5"
]
},
"id": "KezCEp_WO-Gk",
"outputId": "4f734ab2-ef62-4616-ba09-542344d5470f"
},
"source": [
"\"\"\"\r\n",
"Interactive widget that allows the user to adjust the sample size to see how the value of the approximated pi changes\r\n",
"\"\"\"\r\n",
"\r\n",
"# nbi:hide_in\r\n",
"import matplotlib.pyplot as plt\r\n",
"import numpy as np\r\n",
"from ipywidgets import interact\r\n",
"import math\r\n",
"\r\n",
"plt.rcParams[\"figure.figsize\"] = (8, 4)\r\n",
"\r\n",
"# generate data\r\n",
"N_samples = 10000\r\n",
"x = np.random.uniform(0, 1, N_samples)\r\n",
"y = np.random.uniform(0, 1, N_samples)\r\n",
"\r\n",
"# check if in circle\r\n",
"check = ((x-0.5)**2+(y-0.5)**2 <=1/4).astype(int)\r\n",
"piVals = np.array([ getPiApproximationMonteCarlo(i) for i in range(N_samples) ])\r\n",
"\r\n",
"# ploting results\r\n",
"def draw(i=10):\r\n",
" fig, [ax1, ax2] = plt.subplots(1,2, num=1, clear=True)\r\n",
" draw_circle = plt.Circle((0.5, 0.5), 0.5, facecolor='red')\r\n",
" draw_square = plt.Rectangle((0, 0), width=1, height=1, fill=False, zorder=1)\r\n",
" ax1.add_artist(draw_circle)\r\n",
" ax1.add_artist(draw_square)\r\n",
" ax1.set_xlim(-0.1, 1.1)\r\n",
" ax1.set_ylim(-0.1, 1.1)\r\n",
" ax1.set_axis_on()\r\n",
" ax1.title.set_text('Unit Square with circle of radius 0.5')\r\n",
" ax1.scatter(x[:i], y[:i], marker=\"x\", zorder=2)\r\n",
" \r\n",
" prob = np.pi/(4*4)\r\n",
" tosses = np.arange(i)\r\n",
" ax2.scatter(tosses, piVals[:i])\r\n",
" ax2.set_xlabel('sample size')\r\n",
" ax2.set_ylabel('value of pi')\r\n",
" ax2.plot([0,N_samples], [math.pi,math.pi], 'r')\r\n",
" plt.tight_layout()\r\n",
" plt.show()\r\n",
"\r\n",
"interact(draw, i=(0,N_samples, 1));"
],
"execution_count": 84,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:7: RuntimeWarning: invalid value encountered in long_scalars\n",
" import sys\n"
],
"name": "stderr"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ccede336699a46669b58af71cace6ca5",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"interactive(children=(IntSlider(value=10, description='i', max=10000), Output()), _dom_classes=('widget-intera…"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mfC1-d84tXxe"
},
"source": [
"Bokeh Distribution Plot for Pi Approximation. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "TYDTFBjCty_b"
},
"source": [
"def generateDataFrame(num_iterations, sample_size):\r\n",
" pi_samples = [getPiApproximationMonteCarlo(sample_size) for i in range(num_iterations)] #100 samples\r\n",
" pi_samples = sorted(pi_samples, reverse=False)\r\n",
" countDict = {}\r\n",
" for element in pi_samples:\r\n",
" # checking whether it is in the dict or not\r\n",
" if element in countDict:\r\n",
" # incerementing the count by 1\r\n",
" countDict[element] += 1\r\n",
" else:\r\n",
" # setting the count to 1\r\n",
" countDict[element] = 1\r\n",
" pi_frame = pd.DataFrame.from_dict({'pi-value': countDict.keys(), 'count': countDict.values()})\r\n",
" pi_frame[\"adjusted\"] = pi_frame['pi-value'] + 0.001\r\n",
" return pi_frame\r\n",
"\r\n",
"\r\n",
"def bokehPlot(pi_frame):\r\n",
" # Convert dataframe to column data source\r\n",
" src = ColumnDataSource(pi_frame)\r\n",
" # Create the blank plot\r\n",
" p = figure(plot_height = 600, plot_width = 600, \r\n",
" title = 'Histogram of Values of Pi from Simulation',\r\n",
" x_axis_label = 'Values of Pi from Apporximation', \r\n",
" y_axis_label = 'Counts')\r\n",
"\r\n",
" # Add a quad glyph\r\n",
" p.quad(source=src, bottom=0, top='count',\r\n",
" left='pi-value', right='adjusted', \r\n",
" fill_color='red', line_color='black')\r\n",
" # Hover tool referring to our own data field using @ and\r\n",
" # a position on the graph using $\r\n",
" h = HoverTool(tooltips = [('Pi Value', '@{pi-value}'),\r\n",
" ('Count', '@count')])\r\n",
" p.add_tools(h)\r\n",
"\r\n",
" \r\n",
" # Show the plot\r\n",
" show(p)\r\n",
"\r\n",
"\r\n",
"def runMonteCarlo(num_iterations, sample_size):\r\n",
" df = generateDataFrame(num_iterations, sample_size)\r\n",
" bokehPlot(df)\r\n"
],
"execution_count": 100,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 650
},
"id": "lsrprI50u4Hk",
"outputId": "9cb8e24e-627f-4ff2-b34a-1668bd0f52de"
},
"source": [
"sample_size = int(input(\"How many elements would you like to sample?\"))\r\n",
"\r\n",
"num_iterations = int(input(\"How many times would you like to sample?\"))\r\n",
"\r\n",
"runMonteCarlo(num_iterations, sample_size)"
],
"execution_count": 102,
"outputs": [
{
"output_type": "stream",
"text": [
"How many elements would you like to sample?12345\n",
"How many times would you like to sample?2423\n"
],
"name": "stdout"
},
{
"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",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" var el = document.getElementById(null);\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",
" const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\": \"kLr4fYcqcSpbuI95brIH3vnnYCquzzSxHPU6XGQCIkQRGJwhg0StNbj1eegrHs12\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\": \"xIGPmVtaOm+z0BqfSOMn4lOR6ciex448GIKG4eE61LsAvmGj48XcMQZtKcE/UXZe\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\": \"Dc9u1wF/0zApGIWoBbH77iWEHtdmkuYWG839Uzmv8y8yBLXebjO9ZnERsde5Ln/P\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\": \"cT9JaBz7GiRXdENrJLZNSC6eMNF3nh3fa5fTF51Svp+ukxPdwcU5kGXGPBgDCa2j\"};\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",
" if (url in hashes) {\n",
" element.crossOrigin = \"anonymous\";\n",
" element.integrity = \"sha384-\" + hashes[url];\n",
" }\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" };\n",
"\n",
" function inject_raw_css(css) {\n",
" const element = document.createElement(\"style\");\n",
" element.appendChild(document.createTextNode(css));\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" \n",
" var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\", \"https://unpkg.com/@holoviz/panel@^0.9.7/dist/panel.min.js\"];\n",
" var css_urls = [];\n",
" \n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" inject_raw_css(\".panel-widget-box {\\n\\tmin-height: 20px;\\n\\tbackground-color: #f5f5f5;\\n\\tborder: 1px solid #e3e3e3 !important;\\n\\tborder-radius: 4px;\\n\\t-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\toverflow-x: hidden;\\n\\toverflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n\\tappearance: none;\\n\\t-moz-appearance: none;\\n\\t-webkit-appearance: none;\\n\\n\\tborder: none;\\n\\theight: 20px;\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n\\tcolor: royalblue;\\n\\tposition: relative;\\n\\tmargin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n\\tposition: relative;\\n\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n\\tborder-radius:3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n\\tcontent:\\\" \\\";\\n\\tposition:absolute;\\n\\theight: 20px;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\tbottom:0;\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\");\n",
" },\n",
" function(Bokeh) {\n",
" inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n",
" },\n",
" function(Bokeh) {\n",
" inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n",
" },\n",
" function(Bokeh) {\n",
" inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n",
" },\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",
" } 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(null)).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 \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\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 \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(null);\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 const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\": \"kLr4fYcqcSpbuI95brIH3vnnYCquzzSxHPU6XGQCIkQRGJwhg0StNbj1eegrHs12\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\": \"xIGPmVtaOm+z0BqfSOMn4lOR6ciex448GIKG4eE61LsAvmGj48XcMQZtKcE/UXZe\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\": \"Dc9u1wF/0zApGIWoBbH77iWEHtdmkuYWG839Uzmv8y8yBLXebjO9ZnERsde5Ln/P\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\": \"cT9JaBz7GiRXdENrJLZNSC6eMNF3nh3fa5fTF51Svp+ukxPdwcU5kGXGPBgDCa2j\"};\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 if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\", \"https://unpkg.com/@holoviz/panel@^0.9.7/dist/panel.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n inject_raw_css(\".panel-widget-box {\\n\\tmin-height: 20px;\\n\\tbackground-color: #f5f5f5;\\n\\tborder: 1px solid #e3e3e3 !important;\\n\\tborder-radius: 4px;\\n\\t-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\toverflow-x: hidden;\\n\\toverflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n\\tappearance: none;\\n\\t-moz-appearance: none;\\n\\t-webkit-appearance: none;\\n\\n\\tborder: none;\\n\\theight: 20px;\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n\\tcolor: royalblue;\\n\\tposition: relative;\\n\\tmargin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n\\tposition: relative;\\n\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n\\tborder-radius:3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n\\tcontent:\\\" \\\";\\n\\tposition:absolute;\\n\\theight: 20px;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\tbottom:0;\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n },\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 } 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(null)).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": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"235689bc-548b-4166-9218-f2653fc09879\" data-root-id=\"6811\"></div>\n"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"09650ed8-e960-414f-8bf9-84d7dc50543d\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"6822\"}],\"center\":[{\"id\":\"6825\"},{\"id\":\"6829\"}],\"left\":[{\"id\":\"6826\"}],\"renderers\":[{\"id\":\"6847\"}],\"title\":{\"id\":\"6812\"},\"toolbar\":{\"id\":\"6837\"},\"x_range\":{\"id\":\"6814\"},\"x_scale\":{\"id\":\"6818\"},\"y_range\":{\"id\":\"6816\"},\"y_scale\":{\"id\":\"6820\"}},\"id\":\"6811\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"6835\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"7075\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"6833\",\"type\":\"SaveTool\"},{\"attributes\":{\"text\":\"Histogram of Values of Pi from Simulation\"},\"id\":\"6812\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"Values of Pi from Apporximation\",\"formatter\":{\"id\":\"7072\"},\"ticker\":{\"id\":\"6823\"}},\"id\":\"6822\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"7076\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"6834\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"6836\"}},\"id\":\"6832\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"6823\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"6830\"},{\"id\":\"6831\"},{\"id\":\"6832\"},{\"id\":\"6833\"},{\"id\":\"6834\"},{\"id\":\"6835\"},{\"id\":\"6849\"}]},\"id\":\"6837\",\"type\":\"Toolbar\"},{\"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,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"6836\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"6820\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"6818\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"7070\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"Counts\",\"formatter\":{\"id\":\"7070\"},\"ticker\":{\"id\":\"6827\"}},\"id\":\"6826\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"6822\"},\"ticker\":null},\"id\":\"6825\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"6810\"}},\"id\":\"6848\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"6826\"},\"dimension\":1,\"ticker\":null},\"id\":\"6829\",\"type\":\"Grid\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_color\":{\"value\":\"red\"},\"left\":{\"field\":\"pi-value\"},\"right\":{\"field\":\"adjusted\"},\"top\":{\"field\":\"count\"}},\"id\":\"6845\",\"type\":\"Quad\"},{\"attributes\":{\"data\":{\"adjusted\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[245]},\"count\":[1,1,1,1,1,2,2,1,1,2,1,1,3,2,1,1,1,2,2,2,3,3,1,1,2,3,1,3,7,4,1,2,1,2,4,2,5,3,3,5,7,4,6,6,5,4,6,2,8,6,10,8,8,9,2,9,4,8,10,3,6,4,12,7,7,13,3,5,12,13,13,11,11,10,14,18,14,18,14,8,13,12,13,15,17,16,16,13,24,20,17,24,19,23,12,24,14,12,20,11,19,21,9,16,15,21,19,18,19,16,28,12,14,16,26,26,22,20,14,25,18,17,16,15,17,22,30,21,16,33,6,18,20,20,25,24,23,25,27,26,25,17,22,17,19,15,26,14,19,18,16,19,15,11,13,18,17,16,15,13,18,11,15,8,17,10,12,15,12,9,22,10,13,7,9,10,8,11,11,12,14,11,8,10,13,5,10,10,6,14,7,13,3,13,5,8,5,8,3,1,3,9,4,5,3,3,1,6,7,4,8,1,5,2,3,4,4,5,2,3,1,3,3,3,1,1,3,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],\"index\":[0,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,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244],\"pi-value\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[245]}},\"selected\":{\"id\":\"7076\"},\"selection_policy\":{\"id\":\"7075\"}},\"id\":\"6810\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"6827\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"7072\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"6814\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"6831\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"6816\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"6830\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Pi Value\",\"@{pi-value}\"],[\"Count\",\"@count\"]]},\"id\":\"6849\",\"type\":\"HoverTool\"},{\"attributes\":{\"data_source\":{\"id\":\"6810\"},\"glyph\":{\"id\":\"6845\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"6846\"},\"selection_glyph\":null,\"view\":{\"id\":\"6848\"}},\"id\":\"6847\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"left\":{\"field\":\"pi-value\"},\"line_alpha\":{\"value\":0.1},\"right\":{\"field\":\"adjusted\"},\"top\":{\"field\":\"count\"}},\"id\":\"6846\",\"type\":\"Quad\"}],\"root_ids\":[\"6811\"]},\"title\":\"Bokeh Application\",\"version\":\"2.1.1\"}};\n",
" var render_items = [{\"docid\":\"09650ed8-e960-414f-8bf9-84d7dc50543d\",\"root_ids\":[\"6811\"],\"roots\":{\"6811\":\"235689bc-548b-4166-9218-f2653fc09879\"}}];\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": {
"tags": [],
"application/vnd.bokehjs_exec.v0+json": {
"id": "6811"
}
}
}
]
}
]
}
arff==0.9
beautifulsoup4==4.9.1
blis==0.4.1
bokeh==2.2.3
boto==2.49.0
boto3==1.14.60
botocore==1.17.60
cachetools==4.1.1
catalogue==1.0.0
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
cycler==0.10.0
cymem==2.0.3
Cython==0.29.14
docopt==0.6.2
docutils==0.15.2
en-core-web-lg @ https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.3.1/en_core_web_lg-2.3.1.tar.gz
Flask==1.1.2
Flask-Cors==3.0.8
gensim==3.8.3
google-api-core==1.22.1
google-api-python-client==1.10.0
google-auth==1.20.1
google-auth-httplib2==0.0.4
google-auth-oauthlib==0.4.1
googleapis-common-protos==1.52.0
httplib2==0.18.1
idna==2.10
importlib-metadata==2.0.0
itsdangerous==1.1.0
Jinja2==2.11.2
jmespath==0.10.0
joblib==0.16.0
kiwisolver==1.2.0
MarkupSafe==1.1.1
matplotlib==3.3.0
murmurhash==1.0.2
nltk==3.5
numpy==1.19.1
oauth2client==4.1.3
oauthlib==3.1.0
packaging==20.4
pandas==1.1.3
pbr==3.1.1
Pillow==7.2.0
pipreqs==0.4.10
pipreqsnb==0.2.3
plac==1.1.3
preshed==3.0.2
prettytable==0.7.2
protobuf==3.13.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pyparsing==2.4.7
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2020.1
PyYAML==5.3.1
regex==2020.7.14
requests==2.24.0
requests-oauthlib==1.3.0
rsa==4.6
s3transfer==0.3.3
scikit-learn==0.23.1
scipy==1.5.2
six==1.15.0
sklearn==0.0
smart-open==2.1.1
soupsieve==2.0.1
spacy==2.3.2
srsly==1.0.2
termcolor==1.1.0
textblob==0.15.3
texttable==1.6.2
thinc==7.4.1
threadpoolctl==2.1.0
tornado==6.0.4
tqdm==4.49.0
tweepy==3.9.0
twitter==1.18.0
typing-extensions==3.7.4.3
uritemplate==3.0.1
urllib3==1.25.10
vaderSentiment==3.3.2
wasabi==0.8.0
Werkzeug==1.0.1
wikipedia==1.4.0
yarg==0.1.9
zipp==3.3.0
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
arff==0.9
beautifulsoup4==4.9.1
blis==0.4.1
bokeh==2.2.3
boto==2.49.0
boto3==1.14.60
botocore==1.17.60
cachetools==4.1.1
catalogue==1.0.0
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
cycler==0.10.0
cymem==2.0.3
Cython==0.29.14
docopt==0.6.2
docutils==0.15.2
en-core-web-lg @ https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.3.1/en_core_web_lg-2.3.1.tar.gz
Flask==1.1.2
Flask-Cors==3.0.8
gensim==3.8.3
google-api-core==1.22.1
google-api-python-client==1.10.0
google-auth==1.20.1
google-auth-httplib2==0.0.4
google-auth-oauthlib==0.4.1
googleapis-common-protos==1.52.0
httplib2==0.18.1
idna==2.10
importlib-metadata==2.0.0
itsdangerous==1.1.0
Jinja2==2.11.2
jmespath==0.10.0
joblib==0.16.0
kiwisolver==1.2.0
MarkupSafe==1.1.1
matplotlib==3.3.0
murmurhash==1.0.2
nltk==3.5
numpy==1.19.1
oauth2client==4.1.3
oauthlib==3.1.0
packaging==20.4
pandas==1.1.3
pbr==3.1.1
Pillow==7.2.0
pipreqs==0.4.10
pipreqsnb==0.2.3
plac==1.1.3
preshed==3.0.2
prettytable==0.7.2
protobuf==3.13.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pyparsing==2.4.7
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2020.1
PyYAML==5.3.1
regex==2020.7.14
requests==2.24.0
requests-oauthlib==1.3.0
rsa==4.6
s3transfer==0.3.3
scikit-learn==0.23.1
scipy==1.5.2
six==1.15.0
sklearn==0.0
smart-open==2.1.1
soupsieve==2.0.1
spacy==2.3.2
srsly==1.0.2
termcolor==1.1.0
textblob==0.15.3
texttable==1.6.2
thinc==7.4.1
threadpoolctl==2.1.0
tornado==6.0.4
tqdm==4.49.0
tweepy==3.9.0
twitter==1.18.0
typing-extensions==3.7.4.3
uritemplate==3.0.1
urllib3==1.25.10
vaderSentiment==3.3.2
wasabi==0.8.0
Werkzeug==1.0.1
wikipedia==1.4.0
yarg==0.1.9
zipp==3.3.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment