{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "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",
       "      }\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",
       "    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",
       "      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",
       "  var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n",
       "  var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n",
       "\n",
       "  var inline_js = [\n",
       "    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "    \n",
       "    function(Bokeh) {\n",
       "      \n",
       "    },\n",
       "    function(Bokeh) {} // ensure no trailing comma for IE\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    \n",
       "    if ((root.Bokeh !== undefined) || (force === true)) {\n",
       "      for (var i = 0; i < inline_js.length; i++) {\n",
       "        inline_js[i].call(root, root.Bokeh);\n",
       "      }} 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.holoviews_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    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      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  var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n  var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n\n  var inline_js = [\n    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\n    \n    function(Bokeh) {\n      \n    },\n    function(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    \n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (var i = 0; i < inline_js.length; i++) {\n        inline_js[i].call(root, root.Bokeh);\n      }} 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": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\" href=\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">\n",
       "<style>div.bk-hbox {\n",
       "    display: flex;\n",
       "    justify-content: center;\n",
       "}\n",
       "\n",
       "div.bk-hbox div.bk-plot {\n",
       "    padding: 8px;\n",
       "}\n",
       "\n",
       "div.bk-hbox div.bk-data-table {\n",
       "    padding: 20px;\n",
       "}\n",
       "\n",
       "div.hololayout {\n",
       "  display: flex;\n",
       "  align-items: center;\n",
       "  margin: 0;\n",
       "}\n",
       "\n",
       "div.holoframe {\n",
       "  width: 75%;\n",
       "}\n",
       "\n",
       "div.holowell {\n",
       "  display: flex;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       "form.holoform {\n",
       "  background-color: #fafafa;\n",
       "  border-radius: 5px;\n",
       "  overflow: hidden;\n",
       "  padding-left: 0.8em;\n",
       "  padding-right: 0.8em;\n",
       "  padding-top: 0.4em;\n",
       "  padding-bottom: 0.4em;\n",
       "  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n",
       "  margin-bottom: 20px;\n",
       "  border: 1px solid #e3e3e3;\n",
       "}\n",
       "\n",
       "div.holowidgets {\n",
       "  padding-right: 0;\n",
       "  width: 25%;\n",
       "}\n",
       "\n",
       "div.holoslider {\n",
       "  min-height: 0 !important;\n",
       "  height: 0.8em;\n",
       "  width: 100%;\n",
       "}\n",
       "\n",
       "div.holoformgroup {\n",
       "  padding-top: 0.5em;\n",
       "  margin-bottom: 0.5em;\n",
       "}\n",
       "\n",
       "div.hologroup {\n",
       "  padding-left: 0;\n",
       "  padding-right: 0.8em;\n",
       "  width: 100%;\n",
       "}\n",
       "\n",
       ".holoselect {\n",
       "  width: 92%;\n",
       "  margin-left: 0;\n",
       "  margin-right: 0;\n",
       "}\n",
       "\n",
       ".holotext {\n",
       "  padding-left:  0.5em;\n",
       "  padding-right: 0;\n",
       "  width: 100%;\n",
       "}\n",
       "\n",
       ".holowidgets .ui-resizable-se {\n",
       "  visibility: hidden\n",
       "}\n",
       "\n",
       ".holoframe > .ui-resizable-se {\n",
       "  visibility: hidden\n",
       "}\n",
       "\n",
       ".holowidgets .ui-resizable-s {\n",
       "  visibility: hidden\n",
       "}\n",
       "\n",
       "\n",
       "/* CSS rules for noUISlider based slider used by JupyterLab extension  */\n",
       "\n",
       ".noUi-handle {\n",
       "  width: 20px !important;\n",
       "  height: 20px !important;\n",
       "  left: -5px !important;\n",
       "  top: -5px !important;\n",
       "}\n",
       "\n",
       ".noUi-handle:before, .noUi-handle:after {\n",
       "  visibility: hidden;\n",
       "  height: 0px;\n",
       "}\n",
       "\n",
       ".noUi-target {\n",
       "  margin-left: 0.5em;\n",
       "  margin-right: 0.5em;\n",
       "}\n",
       "</style>\n",
       "\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script type=\"application/javascript\">function HoloViewsWidget() {\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.init_slider = function(init_val){\n",
       "  if(this.load_json) {\n",
       "    this.from_json()\n",
       "  } else {\n",
       "    this.update_cache();\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.populate_cache = function(idx){\n",
       "  this.cache[idx].innerHTML = this.frames[idx];\n",
       "  if (this.embed) {\n",
       "    delete this.frames[idx];\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.process_error = function(msg){\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.from_json = function() {\n",
       "  var data_url = this.json_path + this.id + '.json';\n",
       "  $.getJSON(data_url, $.proxy(function(json_data) {\n",
       "    this.frames = json_data;\n",
       "    this.update_cache();\n",
       "    this.update(0);\n",
       "  }, this));\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.dynamic_update = function(current){\n",
       "  if (current === undefined) {\n",
       "    return\n",
       "  }\n",
       "  this.current = current;\n",
       "  if (this.comm) {\n",
       "    var msg = {comm_id: this.id+'_client', content: current}\n",
       "    this.comm.send(msg);\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.update_cache = function(force){\n",
       "  var frame_len = Object.keys(this.frames).length;\n",
       "  for (var i=0; i<frame_len; i++) {\n",
       "    if(!this.load_json || this.dynamic)  {\n",
       "      var frame = Object.keys(this.frames)[i];\n",
       "    } else {\n",
       "      var frame = i;\n",
       "    }\n",
       "    if(!(frame in this.cache) || force) {\n",
       "      if ((frame in this.cache) && force) { this.cache[frame].remove() }\n",
       "      var div = document.createElement(\"div\");\n",
       "      var parent = document.getElementById(\"_anim_img\"+this.id);\n",
       "      div.style.display = \"none\";\n",
       "      parent.appendChild(div)\n",
       "      this.cache[frame] = div;\n",
       "      var cache_id = \"_anim_img\"+this.id+\"_\"+frame;\n",
       "      this.populate_cache(frame);\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.update = function(current){\n",
       "  if(current in this.cache) {\n",
       "    for (var index in this.cache) {\n",
       "      this.cache[index].style.display = \"none\";\n",
       "    }\n",
       "    this.cache[current].style.display = \"\";\n",
       "    this.wait = false;\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.init_comms = function() {\n",
       "  var that = this\n",
       "  HoloViews.comm_manager.register_target(this.plot_id, this.id, function (msg) { that.msg_handler(msg) })\n",
       "  if (!this.cached || this.dynamic) {\n",
       "    function ack_callback(msg) {\n",
       "      var msg = msg.metadata;\n",
       "      var comm_id = msg.comm_id;\n",
       "      var comm_status = HoloViews.comm_status[comm_id];\n",
       "      if (that.queue.length > 0) {\n",
       "        that.time = Date.now();\n",
       "        that.dynamic_update(that.queue[that.queue.length-1]);\n",
       "        that.queue = [];\n",
       "      } else {\n",
       "        that.wait = false;\n",
       "      }\n",
       "      if ((msg.msg_type == \"Ready\") && msg.content) {\n",
       "        console.log(\"Python callback returned following output:\", msg.content);\n",
       "      } else if (msg.msg_type == \"Error\") {\n",
       "        console.log(\"Python failed with the following traceback:\", msg.traceback)\n",
       "      }\n",
       "    }\n",
       "    var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\n",
       "    return comm\n",
       "  }\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.msg_handler = function(msg) {\n",
       "  var metadata = msg.metadata;\n",
       "  if ((metadata.msg_type == \"Ready\")) {\n",
       "    if (metadata.content) {\n",
       "      console.log(\"Python callback returned following output:\", metadata.content);\n",
       "    }\n",
       "\treturn;\n",
       "  } else if (metadata.msg_type == \"Error\") {\n",
       "    console.log(\"Python failed with the following traceback:\", metadata.traceback)\n",
       "    return\n",
       "  }\n",
       "  this.process_msg(msg)\n",
       "}\n",
       "\n",
       "HoloViewsWidget.prototype.process_msg = function(msg) {\n",
       "}\n",
       "\n",
       "function SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\n",
       "  this.frames = frames;\n",
       "  this.id = id;\n",
       "  this.plot_id = plot_id;\n",
       "  this.slider_ids = slider_ids;\n",
       "  this.keyMap = keyMap\n",
       "  this.current_frame = 0;\n",
       "  this.current_vals = dim_vals;\n",
       "  this.load_json = load_json;\n",
       "  this.mode = mode;\n",
       "  this.notFound = notFound;\n",
       "  this.cached = cached;\n",
       "  this.dynamic = dynamic;\n",
       "  this.cache = {};\n",
       "  this.json_path = json_path;\n",
       "  this.init_slider(this.current_vals[0]);\n",
       "  this.queue = [];\n",
       "  this.wait = false;\n",
       "  if (!this.cached || this.dynamic) {\n",
       "    this.comm = this.init_comms();\n",
       "  }\n",
       "}\n",
       "\n",
       "SelectionWidget.prototype = new HoloViewsWidget;\n",
       "\n",
       "\n",
       "SelectionWidget.prototype.get_key = function(current_vals) {\n",
       "  var key = \"(\";\n",
       "  for (var i=0; i<this.slider_ids.length; i++)\n",
       "  {\n",
       "    var val = this.current_vals[i];\n",
       "    if (!(typeof val === 'string')) {\n",
       "      if (val % 1 === 0) { val = val.toFixed(1); }\n",
       "      else { val = val.toFixed(10); val = val.slice(0, val.length-1);}\n",
       "    }\n",
       "    key += \"'\" + val + \"'\";\n",
       "    if(i != this.slider_ids.length-1) { key += ', ';}\n",
       "    else if(this.slider_ids.length == 1) { key += ',';}\n",
       "  }\n",
       "  key += \")\";\n",
       "  return this.keyMap[key];\n",
       "}\n",
       "\n",
       "SelectionWidget.prototype.set_frame = function(dim_val, dim_idx){\n",
       "  this.current_vals[dim_idx] = dim_val;\n",
       "  var key = this.current_vals;\n",
       "  if (!this.dynamic) {\n",
       "    key = this.get_key(key)\n",
       "  }\n",
       "  if (this.dynamic || !this.cached) {\n",
       "    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n",
       "      this.queue.push(key);\n",
       "      return\n",
       "    }\n",
       "    this.queue = [];\n",
       "    this.time = Date.now();\n",
       "    this.current_frame = key;\n",
       "    this.wait = true;\n",
       "    this.dynamic_update(key)\n",
       "  } else if (key !== undefined) {\n",
       "    this.update(key)\n",
       "  }\n",
       "}\n",
       "\n",
       "\n",
       "/* Define the ScrubberWidget class */\n",
       "function ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\n",
       "  this.slider_id = \"_anim_slider\" + id;\n",
       "  this.loop_select_id = \"_anim_loop_select\" + id;\n",
       "  this.id = id;\n",
       "  this.plot_id = plot_id;\n",
       "  this.interval = interval;\n",
       "  this.current_frame = 0;\n",
       "  this.direction = 0;\n",
       "  this.dynamic = dynamic;\n",
       "  this.timer = null;\n",
       "  this.load_json = load_json;\n",
       "  this.mode = mode;\n",
       "  this.cached = cached;\n",
       "  this.frames = frames;\n",
       "  this.cache = {};\n",
       "  this.length = num_frames;\n",
       "  this.json_path = json_path;\n",
       "  document.getElementById(this.slider_id).max = this.length - 1;\n",
       "  this.init_slider(0);\n",
       "  this.wait = false;\n",
       "  this.queue = [];\n",
       "  if (!this.cached || this.dynamic) {\n",
       "    this.comm = this.init_comms()\n",
       "  }\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype = new HoloViewsWidget;\n",
       "\n",
       "ScrubberWidget.prototype.set_frame = function(frame){\n",
       "  this.current_frame = frame;\n",
       "  var widget = document.getElementById(this.slider_id);\n",
       "  if (widget === null) {\n",
       "    this.pause_animation();\n",
       "    return\n",
       "  }\n",
       "  widget.value = this.current_frame;\n",
       "  if (this.dynamic || !this.cached) {\n",
       "    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n",
       "      this.queue.push(frame);\n",
       "      return\n",
       "    }\n",
       "    this.queue = [];\n",
       "    this.time = Date.now();\n",
       "    this.wait = true;\n",
       "    this.dynamic_update(frame)\n",
       "  } else {\n",
       "    this.update(frame)\n",
       "  }\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.get_loop_state = function(){\n",
       "  var button_group = document[this.loop_select_id].state;\n",
       "  for (var i = 0; i < button_group.length; i++) {\n",
       "    var button = button_group[i];\n",
       "    if (button.checked) {\n",
       "      return button.value;\n",
       "    }\n",
       "  }\n",
       "  return undefined;\n",
       "}\n",
       "\n",
       "\n",
       "ScrubberWidget.prototype.next_frame = function() {\n",
       "  this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.previous_frame = function() {\n",
       "  this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.first_frame = function() {\n",
       "  this.set_frame(0);\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.last_frame = function() {\n",
       "  this.set_frame(this.length - 1);\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.slower = function() {\n",
       "  this.interval /= 0.7;\n",
       "  if(this.direction > 0){this.play_animation();}\n",
       "  else if(this.direction < 0){this.reverse_animation();}\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.faster = function() {\n",
       "  this.interval *= 0.7;\n",
       "  if(this.direction > 0){this.play_animation();}\n",
       "  else if(this.direction < 0){this.reverse_animation();}\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.anim_step_forward = function() {\n",
       "  if(this.current_frame < this.length - 1){\n",
       "    this.next_frame();\n",
       "  }else{\n",
       "    var loop_state = this.get_loop_state();\n",
       "    if(loop_state == \"loop\"){\n",
       "      this.first_frame();\n",
       "    }else if(loop_state == \"reflect\"){\n",
       "      this.last_frame();\n",
       "      this.reverse_animation();\n",
       "    }else{\n",
       "      this.pause_animation();\n",
       "      this.last_frame();\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.anim_step_reverse = function() {\n",
       "  if(this.current_frame > 0){\n",
       "    this.previous_frame();\n",
       "  } else {\n",
       "    var loop_state = this.get_loop_state();\n",
       "    if(loop_state == \"loop\"){\n",
       "      this.last_frame();\n",
       "    }else if(loop_state == \"reflect\"){\n",
       "      this.first_frame();\n",
       "      this.play_animation();\n",
       "    }else{\n",
       "      this.pause_animation();\n",
       "      this.first_frame();\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.pause_animation = function() {\n",
       "  this.direction = 0;\n",
       "  if (this.timer){\n",
       "    clearInterval(this.timer);\n",
       "    this.timer = null;\n",
       "  }\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.play_animation = function() {\n",
       "  this.pause_animation();\n",
       "  this.direction = 1;\n",
       "  var t = this;\n",
       "  if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\n",
       "}\n",
       "\n",
       "ScrubberWidget.prototype.reverse_animation = function() {\n",
       "  this.pause_animation();\n",
       "  this.direction = -1;\n",
       "  var t = this;\n",
       "  if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\n",
       "}\n",
       "\n",
       "function extend(destination, source) {\n",
       "  for (var k in source) {\n",
       "    if (source.hasOwnProperty(k)) {\n",
       "      destination[k] = source[k];\n",
       "    }\n",
       "  }\n",
       "  return destination;\n",
       "}\n",
       "\n",
       "function update_widget(widget, values) {\n",
       "  if (widget.hasClass(\"ui-slider\")) {\n",
       "    widget.slider('option', {\n",
       "      min: 0,\n",
       "      max: values.length-1,\n",
       "      dim_vals: values,\n",
       "      value: 0,\n",
       "      dim_labels: values\n",
       "    })\n",
       "    widget.slider('option', 'slide').call(widget, event, {value: 0})\n",
       "  } else {\n",
       "    widget.empty();\n",
       "    for (var i=0; i<values.length; i++){\n",
       "      widget.append($(\"<option>\", {\n",
       "        value: i,\n",
       "        text: values[i]\n",
       "      }))\n",
       "    };\n",
       "    widget.data('values', values);\n",
       "    widget.data('value', 0);\n",
       "    widget.trigger(\"change\");\n",
       "  };\n",
       "}\n",
       "\n",
       "function init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\n",
       "                     dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\n",
       "  // Slider JS Block START\n",
       "  function loadcssfile(filename){\n",
       "    var fileref=document.createElement(\"link\")\n",
       "    fileref.setAttribute(\"rel\", \"stylesheet\")\n",
       "    fileref.setAttribute(\"type\", \"text/css\")\n",
       "    fileref.setAttribute(\"href\", filename)\n",
       "    document.getElementsByTagName(\"head\")[0].appendChild(fileref)\n",
       "  }\n",
       "  loadcssfile(\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\");\n",
       "  /* Check if jQuery and jQueryUI have been loaded\n",
       "     otherwise load with require.js */\n",
       "  var jQuery = window.jQuery,\n",
       "    // check for old versions of jQuery\n",
       "    oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\.[0-4](\\.|$)/),\n",
       "    jquery_path = '',\n",
       "    paths = {},\n",
       "    noConflict;\n",
       "  var jQueryUI = jQuery.ui;\n",
       "  // check for jQuery\n",
       "  if (!jQuery || oldjQuery) {\n",
       "    // load if it's not available or doesn't meet min standards\n",
       "    paths.jQuery = jQuery;\n",
       "    noConflict = !!oldjQuery;\n",
       "  } else {\n",
       "    // register the current jQuery\n",
       "    define('jquery', [], function() { return jQuery; });\n",
       "  }\n",
       "  if (!jQueryUI) {\n",
       "    paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\n",
       "  } else {\n",
       "    define('jQueryUI', [], function() { return jQuery.ui; });\n",
       "  }\n",
       "  paths.underscore = UNDERSCORE_CDN.slice(null, -3);\n",
       "  var jquery_require = {\n",
       "    paths: paths,\n",
       "    shim: {\n",
       "      \"jQueryUI\": {\n",
       "        exports:\"$\",\n",
       "        deps: ['jquery']\n",
       "      },\n",
       "      \"underscore\": {\n",
       "        exports: '_'\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  require.config(jquery_require);\n",
       "  require([\"jQueryUI\", \"underscore\"], function(jUI, _){\n",
       "    if (noConflict) $.noConflict(true);\n",
       "    var vals = values;\n",
       "    if (dynamic && vals.constructor === Array) {\n",
       "      var default_value = parseFloat(value);\n",
       "      var min = parseFloat(vals[0]);\n",
       "      var max = parseFloat(vals[vals.length-1]);\n",
       "      var wstep = step;\n",
       "      var wlabels = [default_value];\n",
       "      var init_label = default_value;\n",
       "    } else {\n",
       "      var min = 0;\n",
       "      if (dynamic) {\n",
       "        var max = Object.keys(vals).length - 1;\n",
       "        var init_label = labels[value];\n",
       "        var default_value = values[value];\n",
       "      } else {\n",
       "        var max = vals.length - 1;\n",
       "        var init_label = labels[value];\n",
       "        var default_value = value;\n",
       "      }\n",
       "      var wstep = 1;\n",
       "      var wlabels = labels;\n",
       "    }\n",
       "    function adjustFontSize(text) {\n",
       "      var width_ratio = (text.parent().width()/8)/text.val().length;\n",
       "      var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\n",
       "      text.css('font-size', size);\n",
       "    }\n",
       "    var slider = $('#_anim_widget'+id+'_'+dim);\n",
       "    slider.slider({\n",
       "      animate: \"fast\",\n",
       "      min: min,\n",
       "      max: max,\n",
       "      step: wstep,\n",
       "      value: default_value,\n",
       "      dim_vals: vals,\n",
       "      dim_labels: wlabels,\n",
       "      next_vals: next_vals,\n",
       "      slide: function(event, ui) {\n",
       "        var vals = slider.slider(\"option\", \"dim_vals\");\n",
       "        var next_vals = slider.slider(\"option\", \"next_vals\");\n",
       "        var dlabels = slider.slider(\"option\", \"dim_labels\");\n",
       "        if (dynamic) {\n",
       "          var dim_val = ui.value;\n",
       "          if (vals.constructor === Array) {\n",
       "            var label = ui.value;\n",
       "          } else {\n",
       "            var label = dlabels[ui.value];\n",
       "          }\n",
       "        } else {\n",
       "          var dim_val = vals[ui.value];\n",
       "          var label = dlabels[ui.value];\n",
       "        }\n",
       "        var text = $('#textInput'+id+'_'+dim);\n",
       "        text.val(label);\n",
       "        adjustFontSize(text);\n",
       "        HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\n",
       "        if (Object.keys(next_vals).length > 0) {\n",
       "          var new_vals = next_vals[dim_val];\n",
       "          var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n",
       "          update_widget(next_widget, new_vals);\n",
       "        }\n",
       "      }\n",
       "    });\n",
       "    slider.keypress(function(event) {\n",
       "      if (event.which == 80 || event.which == 112) {\n",
       "        var start = slider.slider(\"option\", \"value\");\n",
       "        var stop =  slider.slider(\"option\", \"max\");\n",
       "        for (var i=start; i<=stop; i++) {\n",
       "          var delay = i*delay;\n",
       "          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n",
       "            var val = {value:i};\n",
       "            slider.slider('value',i);\n",
       "            slider.slider(\"option\", \"slide\")(null, val);\n",
       "          }, slider), delay);}, slider)(i);\n",
       "        }\n",
       "      }\n",
       "      if (event.which == 82 || event.which == 114) {\n",
       "        var start = slider.slider(\"option\", \"value\");\n",
       "        var stop =  slider.slider(\"option\", \"min\");\n",
       "        var count = 0;\n",
       "        for (var i=start; i>=stop; i--) {\n",
       "          var delay = count*delay;\n",
       "          count = count + 1;\n",
       "          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n",
       "            var val = {value:i};\n",
       "            slider.slider('value',i);\n",
       "            slider.slider(\"option\", \"slide\")(null, val);\n",
       "          }, slider), delay);}, slider)(i);\n",
       "        }\n",
       "      }\n",
       "    });\n",
       "    var textInput = $('#textInput'+id+'_'+dim)\n",
       "    textInput.val(init_label);\n",
       "    adjustFontSize(textInput);\n",
       "  });\n",
       "}\n",
       "\n",
       "function init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\n",
       "  var widget = $(\"#_anim_widget\"+id+'_'+dim);\n",
       "  widget.data('values', vals)\n",
       "  for (var i=0; i<vals.length; i++){\n",
       "    if (dynamic) {\n",
       "      var val = vals[i];\n",
       "    } else {\n",
       "      var val = i;\n",
       "    }\n",
       "    widget.append($(\"<option>\", {\n",
       "      value: val,\n",
       "      text: labels[i]\n",
       "    }));\n",
       "  };\n",
       "  widget.data(\"next_vals\", next_vals);\n",
       "  widget.val(value);\n",
       "  widget.on('change', function(event, ui) {\n",
       "    if (dynamic) {\n",
       "      var dim_val = parseInt(this.value);\n",
       "    } else {\n",
       "      var dim_val = $.data(this, 'values')[this.value];\n",
       "    }\n",
       "    var next_vals = $.data(this, \"next_vals\");\n",
       "    if (Object.keys(next_vals).length > 0) {\n",
       "      var new_vals = next_vals[dim_val];\n",
       "      var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n",
       "      update_widget(next_widget, new_vals);\n",
       "    }\n",
       "    var widgets = HoloViews.index[plot_id]\n",
       "    if (widgets) {\n",
       "      widgets.set_frame(dim_val, dim_idx);\n",
       "    }\n",
       "  });\n",
       "}\n",
       "\n",
       "\n",
       "if (window.HoloViews === undefined) {\n",
       "  window.HoloViews = {}\n",
       "  window.PyViz = window.HoloViews\n",
       "} else if (window.PyViz === undefined) {\n",
       "  window.PyViz = window.HoloViews\n",
       "}\n",
       "\n",
       "\n",
       "var _namespace = {\n",
       "  init_slider: init_slider,\n",
       "  init_dropdown: init_dropdown,\n",
       "  comms: {},\n",
       "  comm_status: {},\n",
       "  index: {},\n",
       "  plot_index: {},\n",
       "  kernels: {},\n",
       "  receivers: {}\n",
       "}\n",
       "\n",
       "for (var k in _namespace) {\n",
       "  if (!(k in window.HoloViews)) {\n",
       "    window.HoloViews[k] = _namespace[k];\n",
       "  }\n",
       "}\n",
       "\n",
       "// Define Bokeh specific subclasses\n",
       "function BokehSelectionWidget() {\n",
       "  SelectionWidget.apply(this, arguments);\n",
       "}\n",
       "\n",
       "function BokehScrubberWidget() {\n",
       "  ScrubberWidget.apply(this, arguments);\n",
       "}\n",
       "\n",
       "// Let them inherit from the baseclasses\n",
       "BokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\n",
       "BokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n",
       "\n",
       "// Define methods to override on widgets\n",
       "var BokehMethods = {\n",
       "  update_cache : function(){\n",
       "    for (var index in this.frames) {\n",
       "      this.frames[index] = JSON.parse(this.frames[index]);\n",
       "    }\n",
       "  },\n",
       "  update : function(current){\n",
       "    if (current === undefined) {\n",
       "      return;\n",
       "    }\n",
       "    var data = this.frames[current];\n",
       "    if (data !== undefined) {\n",
       "      if (data.root in HoloViews.plot_index) {\n",
       "        var doc = HoloViews.plot_index[data.root].model.document;\n",
       "      } else {\n",
       "        var doc = Bokeh.index[data.root].model.document;\n",
       "      }\n",
       "      doc.apply_json_patch(data.content);\n",
       "    }\n",
       "  },\n",
       "  init_comms: function() {\n",
       "    if (Bokeh.protocol !== undefined) {\n",
       "      this.receiver = new Bokeh.protocol.Receiver()\n",
       "    } else {\n",
       "      this.receiver = null;\n",
       "    }\n",
       "    return HoloViewsWidget.prototype.init_comms.call(this);\n",
       "  },\n",
       "  process_msg : function(msg) {\n",
       "    if (this.plot_id in HoloViews.plot_index) {\n",
       "      var doc = HoloViews.plot_index[this.plot_id].model.document;\n",
       "    } else {\n",
       "      var doc = Bokeh.index[this.plot_id].model.document;\n",
       "    }\n",
       "    if (this.receiver === null) { return }\n",
       "    var receiver = this.receiver;\n",
       "    if (msg.buffers.length > 0) {\n",
       "      receiver.consume(msg.buffers[0].buffer)\n",
       "    } else {\n",
       "      receiver.consume(msg.content.data)\n",
       "    }\n",
       "    const comm_msg = receiver.message;\n",
       "    if ((comm_msg != null) && (doc != null)) {\n",
       "      doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "// Extend Bokeh widgets with backend specific methods\n",
       "extend(BokehSelectionWidget.prototype, BokehMethods);\n",
       "extend(BokehScrubberWidget.prototype, BokehMethods);\n",
       "\n",
       "window.HoloViews.BokehSelectionWidget = BokehSelectionWidget\n",
       "window.HoloViews.BokehScrubberWidget = BokehScrubberWidget\n",
       "\n",
       "    function JupyterCommManager() {\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
       "      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        comm_manager.register_target(comm_id, function(comm) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        });\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        });\n",
       "      }\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
       "      if (comm_id in window.PyViz.comms) {\n",
       "        return window.PyViz.comms[comm_id];\n",
       "      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
       "        if (msg_handler) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        }\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
       "        comm.open();\n",
       "        if (msg_handler) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        }\n",
       "      }\n",
       "\n",
       "      window.PyViz.comms[comm_id] = comm;\n",
       "      return comm;\n",
       "    }\n",
       "\n",
       "    window.PyViz.comm_manager = new JupyterCommManager();\n",
       "    \n",
       "\n",
       "var JS_MIME_TYPE = 'application/javascript';\n",
       "var HTML_MIME_TYPE = 'text/html';\n",
       "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
       "var CLASS_NAME = 'output';\n",
       "\n",
       "/**\n",
       " * Render data to the DOM node\n",
       " */\n",
       "function render(props, node) {\n",
       "  var div = document.createElement(\"div\");\n",
       "  var script = document.createElement(\"script\");\n",
       "  node.appendChild(div);\n",
       "  node.appendChild(script);\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when a new output is added\n",
       " */\n",
       "function handle_add_output(event, handle) {\n",
       "  var output_area = handle.output_area;\n",
       "  var output = handle.output;\n",
       "  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
       "    return\n",
       "  }\n",
       "  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
       "  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
       "  if (id !== undefined) {\n",
       "    var nchildren = toinsert.length;\n",
       "    var html_node = toinsert[nchildren-1].children[0];\n",
       "    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "    var scripts = [];\n",
       "    var nodelist = html_node.querySelectorAll(\"script\");\n",
       "    for (var i in nodelist) {\n",
       "      if (nodelist.hasOwnProperty(i)) {\n",
       "        scripts.push(nodelist[i])\n",
       "      }\n",
       "    }\n",
       "\n",
       "    scripts.forEach( function (oldScript) {\n",
       "      var newScript = document.createElement(\"script\");\n",
       "      var attrs = [];\n",
       "      var nodemap = oldScript.attributes;\n",
       "      for (var j in nodemap) {\n",
       "        if (nodemap.hasOwnProperty(j)) {\n",
       "          attrs.push(nodemap[j])\n",
       "        }\n",
       "      }\n",
       "      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
       "      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
       "      oldScript.parentNode.replaceChild(newScript, oldScript);\n",
       "    });\n",
       "    if (JS_MIME_TYPE in output.data) {\n",
       "      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
       "    }\n",
       "    output_area._hv_plot_id = id;\n",
       "    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
       "      window.PyViz.plot_index[id] = Bokeh.index[id];\n",
       "    } else {\n",
       "      window.PyViz.plot_index[id] = null;\n",
       "    }\n",
       "  } else 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].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
       "    }\n",
       "    // store reference to server id on output_area\n",
       "    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when an output is cleared or removed\n",
       " */\n",
       "function handle_clear_output(event, handle) {\n",
       "  var id = handle.cell.output_area._hv_plot_id;\n",
       "  var server_id = handle.cell.output_area._bokeh_server_id;\n",
       "  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
       "  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
       "  if (server_id !== null) {\n",
       "    comm.send({event_type: 'server_delete', 'id': server_id});\n",
       "    return;\n",
       "  } else if (comm !== null) {\n",
       "    comm.send({event_type: 'delete', 'id': id});\n",
       "  }\n",
       "  delete PyViz.plot_index[id];\n",
       "  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
       "    var doc = window.Bokeh.index[id].model.document\n",
       "    doc.clear();\n",
       "    const i = window.Bokeh.documents.indexOf(doc);\n",
       "    if (i > -1) {\n",
       "      window.Bokeh.documents.splice(i, 1);\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle kernel restart event\n",
       " */\n",
       "function handle_kernel_cleanup(event, handle) {\n",
       "  delete PyViz.comms[\"hv-extension-comm\"];\n",
       "  window.PyViz.plot_index = {}\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle update_display_data messages\n",
       " */\n",
       "function handle_update_output(event, handle) {\n",
       "  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
       "  handle_add_output(event, handle)\n",
       "}\n",
       "\n",
       "function register_renderer(events, OutputArea) {\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[0]);\n",
       "    element.append(toinsert);\n",
       "    return toinsert\n",
       "  }\n",
       "\n",
       "  events.on('output_added.OutputArea', handle_add_output);\n",
       "  events.on('output_updated.OutputArea', handle_update_output);\n",
       "  events.on('clear_output.CodeCell', handle_clear_output);\n",
       "  events.on('delete.Cell', handle_clear_output);\n",
       "  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
       "\n",
       "  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
       "    safe: true,\n",
       "    index: 0\n",
       "  });\n",
       "}\n",
       "\n",
       "if (window.Jupyter !== undefined) {\n",
       "  try {\n",
       "    var events = require('base/js/events');\n",
       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
       "      register_renderer(events, OutputArea);\n",
       "    }\n",
       "  } catch(err) {\n",
       "  }\n",
       "}\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import adaptive\n",
    "adaptive.notebook_extension(_inline_js=False)\n",
    "\n",
    "import numpy as np\n",
    "from functools import partial\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "offset = random.uniform(-0.5, 0.5)\n",
    "\n",
    "def f(x, offset=offset, wait=True):\n",
    "    from time import sleep\n",
    "    from random import random\n",
    "\n",
    "    a = 0.01\n",
    "    if wait:\n",
    "        sleep(random() / 10)\n",
    "    return x + a**2 / (a**2 + (x - offset)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "learner = adaptive.Learner1D(f, bounds=(-1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The end condition is when the \"loss\" is less than 0.1. In the context of the\n",
    "# 1D learner this means that we will resolve features in 'func' with width 0.1 or wider.\n",
    "runner = adaptive.Runner(learner, goal=lambda l: l.loss() < 0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "await runner.task  # This is not needed in a notebook environment!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3a1c1b746b204a8c820007f568b97d25",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(HTML(value='\\n        <dl>\\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">f…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "runner.live_info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "29c6da91d43948c6a167f4d80caafc0a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Button(description='cancel live-plot', layout=Layout(width='150px'), style=ButtonStyle())"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div id='1003' style='display: table; margin: 0 auto;'>\n",
       "    <div id=\"fig_1003\">\n",
       "      \n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"96c0a0ae-da29-4d31-861b-39895385157a\" data-root-id=\"1003\"></div>\n",
       "\n",
       "    </div>\n",
       "    </div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"95fdfa92-0f10-4818-b97b-80219bf8fe29\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1016\",\"type\":\"Grid\"},{\"id\":\"1021\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1017\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"1043\",\"type\":\"GlyphRenderer\"},{\"id\":\"1051\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"1004\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1027\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1001\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1008\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1002\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"1010\",\"type\":\"LinearScale\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1004\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1050\",\"type\":\"MultiLine\"},{\"attributes\":{\"callback\":null,\"end\":1.1,\"reset_end\":1.1,\"reset_start\":-1.1,\"start\":-1.1,\"tags\":[[[\"x\",\"x\",null]]]},\"id\":\"1001\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"1045\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1048\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1050\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"1049\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"1052\",\"type\":\"CDSView\"}},\"id\":\"1051\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1048\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1049\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1033\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1059\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"1046\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1061\",\"type\":\"UnionRenderers\"}},\"id\":\"1045\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1037\",\"type\":\"ColumnDataSource\"}},\"id\":\"1044\",\"type\":\"CDSView\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1013\",\"type\":\"BasicTicker\"}},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1033\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1013\",\"type\":\"BasicTicker\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]}},\"selected\":{\"id\":\"1038\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1059\",\"type\":\"UnionRenderers\"}},\"id\":\"1037\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"end\":1.1875163141802667,\"reset_end\":1.1875163141802667,\"reset_start\":-0.9999292483944984,\"start\":-0.9999292483944984,\"tags\":[[[\"y\",\"y\",null]]]},\"id\":\"1002\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1038\",\"type\":\"Selection\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1040\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1041\",\"type\":\"Scatter\"},{\"attributes\":{\"data_source\":{\"id\":\"1037\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1040\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1042\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"1041\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"1044\",\"type\":\"CDSView\"}},\"id\":\"1043\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1061\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1022\",\"type\":\"SaveTool\"},{\"id\":\"1023\",\"type\":\"PanTool\"},{\"id\":\"1024\",\"type\":\"WheelZoomTool\"},{\"id\":\"1025\",\"type\":\"BoxZoomTool\"},{\"id\":\"1026\",\"type\":\"ResetTool\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1018\",\"type\":\"BasicTicker\"}},\"id\":\"1021\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1042\",\"type\":\"Scatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1058\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"1045\",\"type\":\"ColumnDataSource\"}},\"id\":\"1052\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1035\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1058\",\"type\":\"BoxAnnotation\"}},\"id\":\"1025\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1035\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1018\",\"type\":\"BasicTicker\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
       "  var render_items = [{\"docid\":\"95fdfa92-0f10-4818-b97b-80219bf8fe29\",\"roots\":{\"1003\":\"96c0a0ae-da29-4d31-861b-39895385157a\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        embed_document(root);\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "      attempts++;\n",
       "      if (attempts > 100) {\n",
       "        console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);\n",
       "\n",
       "    function msg_handler(msg) {\n",
       "      var metadata = msg.metadata;\n",
       "      var buffers = msg.buffers;\n",
       "      var msg = msg.content.data;\n",
       "      if ((metadata.msg_type == \"Ready\")) {\n",
       "        if (metadata.content) {\n",
       "          console.log(\"Python callback returned following output:\", metadata.content);\n",
       "        }\n",
       "      } else if (metadata.msg_type == \"Error\") {\n",
       "        console.log(\"Python failed with the following traceback:\", metadata.traceback)\n",
       "      } else {\n",
       "        \n",
       "var plot_id = \"1003\";\n",
       "if (plot_id in window.PyViz.plot_index) {\n",
       "  var plot = window.PyViz.plot_index[plot_id];\n",
       "} else {\n",
       "  var plot = Bokeh.index[plot_id];\n",
       "}\n",
       "\n",
       "if (plot_id in window.PyViz.receivers) {\n",
       "  var receiver = window.PyViz.receivers[plot_id];\n",
       "} else if (Bokeh.protocol === undefined) {\n",
       "  return;\n",
       "} else {\n",
       "  var receiver = new Bokeh.protocol.Receiver();\n",
       "  window.PyViz.receivers[plot_id] = receiver;\n",
       "}\n",
       "\n",
       "if ((buffers != undefined) && (buffers.length > 0)) {\n",
       "  receiver.consume(buffers[0].buffer)\n",
       "} else {\n",
       "  receiver.consume(msg)\n",
       "}\n",
       "\n",
       "const comm_msg = receiver.message;\n",
       "if ((comm_msg != null) && (Object.keys(comm_msg.content).length > 0)) {\n",
       "  plot.model.document.apply_json_patch(comm_msg.content, comm_msg.buffers)\n",
       "}\n",
       "\n",
       "      }\n",
       "    }\n",
       "    if ((window.PyViz == undefined) || (!window.PyViz.comm_manager)) {\n",
       "      console.log(\"Could not find comm manager\")\n",
       "    } else {\n",
       "      window.PyViz.comm_manager.register_target('1003', '748623573b8c4a7a9e7fb0182e33075f', msg_handler);\n",
       "    }\n",
       "    </script>"
      ],
      "text/plain": [
       ":DynamicMap   []\n",
       "   :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "runner.live_plot(update_interval=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "if not runner.task.done():\n",
    "    raise RuntimeError('Wait for the runner to finish before executing the cells below!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div id='1477' style='display: table; margin: 0 auto;'>\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"b6bc043a-8644-4fe0-9233-4033567831f2\" data-root-id=\"1477\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"27cf82dd-c896-42c1-aee2-ba27253c2c2f\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1476\",\"type\":\"ToolbarBox\"},{\"id\":\"1474\",\"type\":\"GridBox\"}],\"sizing_mode\":\"fixed\"},\"id\":\"1477\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1353\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1367\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"1267\",\"type\":\"BoxAnnotation\"}},\"id\":\"1234\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1351\",\"type\":\"SaveTool\"},{\"id\":\"1352\",\"type\":\"PanTool\"},{\"id\":\"1353\",\"type\":\"WheelZoomTool\"},{\"id\":\"1354\",\"type\":\"BoxZoomTool\"},{\"id\":\"1355\",\"type\":\"ResetTool\"}]},\"id\":\"1356\",\"type\":\"Toolbar\"},{\"attributes\":{\"children\":[[{\"id\":\"1212\",\"subtype\":\"Figure\",\"type\":\"Plot\"},0,0],[{\"id\":\"1332\",\"subtype\":\"Figure\",\"type\":\"Plot\"},0,1]]},\"id\":\"1474\",\"type\":\"GridBox\"},{\"attributes\":{},\"id\":\"1217\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"1387\",\"type\":\"BoxAnnotation\"}},\"id\":\"1354\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1244\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1227\",\"type\":\"BasicTicker\"}},\"id\":\"1226\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1347\",\"type\":\"BasicTicker\"}},\"id\":\"1350\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1268\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1390\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1231\",\"type\":\"SaveTool\"},{\"id\":\"1232\",\"type\":\"PanTool\"},{\"id\":\"1233\",\"type\":\"WheelZoomTool\"},{\"id\":\"1234\",\"type\":\"BoxZoomTool\"},{\"id\":\"1235\",\"type\":\"ResetTool\"},{\"id\":\"1351\",\"type\":\"SaveTool\"},{\"id\":\"1352\",\"type\":\"PanTool\"},{\"id\":\"1353\",\"type\":\"WheelZoomTool\"},{\"id\":\"1354\",\"type\":\"BoxZoomTool\"},{\"id\":\"1355\",\"type\":\"ResetTool\"}]},\"id\":\"1475\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"1355\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1362\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"toolbar\":{\"id\":\"1475\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"1476\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"1337\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]}},\"selected\":{\"id\":\"1247\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1268\",\"type\":\"UnionRenderers\"}},\"id\":\"1246\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1233\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1257\",\"type\":\"MultiLine\"},{\"attributes\":{\"source\":{\"id\":\"1366\",\"type\":\"ColumnDataSource\"}},\"id\":\"1373\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1388\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1366\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1369\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1371\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"1370\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"1373\",\"type\":\"CDSView\"}},\"id\":\"1372\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1352\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"1375\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1390\",\"type\":\"UnionRenderers\"}},\"id\":\"1374\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1364\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"1341\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1345\",\"type\":\"Grid\"},{\"id\":\"1350\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1346\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"1372\",\"type\":\"GlyphRenderer\"},{\"id\":\"1380\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"1333\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1356\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1210\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1337\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1211\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"1339\",\"type\":\"LinearScale\"}},\"id\":\"1332\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1255\",\"type\":\"Selection\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1370\",\"type\":\"Scatter\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1333\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1339\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1232\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1371\",\"type\":\"Scatter\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1364\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1347\",\"type\":\"BasicTicker\"}},\"id\":\"1346\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1247\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1267\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1254\",\"type\":\"ColumnDataSource\"}},\"id\":\"1261\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1369\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1375\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1347\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1244\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1342\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1249\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1231\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1222\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1250\",\"type\":\"Scatter\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1222\",\"type\":\"BasicTicker\"}},\"id\":\"1225\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"1255\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1270\",\"type\":\"UnionRenderers\"}},\"id\":\"1254\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1377\",\"type\":\"MultiLine\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1251\",\"type\":\"Scatter\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1258\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1219\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1378\",\"type\":\"MultiLine\"},{\"attributes\":{\"data_source\":{\"id\":\"1246\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1249\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1251\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"1250\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"1253\",\"type\":\"CDSView\"}},\"id\":\"1252\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1362\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1342\",\"type\":\"BasicTicker\"}},\"id\":\"1341\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1259\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1379\",\"type\":\"MultiLine\"},{\"attributes\":{\"source\":{\"id\":\"1246\",\"type\":\"ColumnDataSource\"}},\"id\":\"1253\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1254\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1257\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1259\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"1258\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"1261\",\"type\":\"CDSView\"}},\"id\":\"1260\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1242\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1222\",\"type\":\"BasicTicker\"}},\"id\":\"1221\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1227\",\"type\":\"BasicTicker\"}},\"id\":\"1230\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1270\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"end\":1.1875163141802667,\"reset_end\":1.1875163141802667,\"reset_start\":-0.9999292483944984,\"start\":-0.9999292483944984,\"tags\":[[[\"y\",\"y\",null]]]},\"id\":\"1211\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"1374\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1377\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1379\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"1378\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"1381\",\"type\":\"CDSView\"}},\"id\":\"1380\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"end\":1.1,\"reset_end\":1.1,\"reset_start\":-1.1,\"start\":-1.1,\"tags\":[[[\"x\",\"x\",null]]]},\"id\":\"1210\",\"type\":\"Range1d\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1342\",\"type\":\"BasicTicker\"}},\"id\":\"1345\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1374\",\"type\":\"ColumnDataSource\"}},\"id\":\"1381\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1227\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"1221\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1225\",\"type\":\"Grid\"},{\"id\":\"1230\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1226\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"1252\",\"type\":\"GlyphRenderer\"},{\"id\":\"1260\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"1213\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1236\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1210\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1217\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1211\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"1219\",\"type\":\"LinearScale\"}},\"id\":\"1212\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1235\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1351\",\"type\":\"SaveTool\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1213\",\"type\":\"Title\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1387\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1242\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1231\",\"type\":\"SaveTool\"},{\"id\":\"1232\",\"type\":\"PanTool\"},{\"id\":\"1233\",\"type\":\"WheelZoomTool\"},{\"id\":\"1234\",\"type\":\"BoxZoomTool\"},{\"id\":\"1235\",\"type\":\"ResetTool\"}]},\"id\":\"1236\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[309]}},\"selected\":{\"id\":\"1367\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1388\",\"type\":\"UnionRenderers\"}},\"id\":\"1366\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1477\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
       "  var render_items = [{\"docid\":\"27cf82dd-c896-42c1-aee2-ba27253c2c2f\",\"roots\":{\"1477\":\"b6bc043a-8644-4fe0-9233-4033567831f2\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        embed_document(root);\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "      attempts++;\n",
       "      if (attempts > 100) {\n",
       "        console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);</script>"
      ],
      "text/plain": [
       ":Layout\n",
       "   .Overlay.I  :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]\n",
       "   .Overlay.II :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "learner2 = adaptive.Learner1D(f, bounds=learner.bounds)\n",
    "\n",
    "xs = np.linspace(*learner.bounds, len(learner.data))\n",
    "learner2.tell_many(xs, map(partial(f, wait=False), xs))\n",
    "\n",
    "learner.plot() + learner2.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "random.seed(0)\n",
    "offsets = [random.uniform(-0.8, 0.8) for _ in range(3)]\n",
    "\n",
    "# sharp peaks at random locations in the domain\n",
    "def f_levels(x, offsets=offsets):\n",
    "    a = 0.01\n",
    "    return np.array([offset + x + a**2 / (a**2 + (x - offset)**2)\n",
    "                     for offset in offsets])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "learner = adaptive.Learner1D(f_levels, bounds=(-1, 1))\n",
    "runner = adaptive.Runner(learner, goal=lambda l: l.loss() < 0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "await runner.task  # This is not needed in a notebook environment!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "196b7b33048c4560a9d0f03e63f1a6be",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(HTML(value='\\n        <dl>\\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">f…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "runner.live_info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a9f17c1fd90846e2b9d4bae1cb8db20f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Button(description='cancel live-plot', layout=Layout(width='150px'), style=ButtonStyle())"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div id='1780' style='display: table; margin: 0 auto;'>\n",
       "    <div id=\"fig_1780\">\n",
       "      \n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"9340e238-2762-462f-ae9a-b684579d0be7\" data-root-id=\"1780\"></div>\n",
       "\n",
       "    </div>\n",
       "    </div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"08e3e51d-d9e6-44b9-96be-6404208905ab\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1789\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1793\",\"type\":\"Grid\"},{\"id\":\"1798\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1794\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"1820\",\"type\":\"GlyphRenderer\"},{\"id\":\"1828\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"1781\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1804\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1778\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1785\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1779\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"1787\",\"type\":\"LinearScale\"}},\"id\":\"1780\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1817\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1838\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1795\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1818\",\"type\":\"MultiLine\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1827\",\"type\":\"Scatter\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"\",\"dtype\":\"float64\",\"shape\":[0]},\"y\":{\"__ndarray__\":\"\",\"dtype\":\"float64\",\"shape\":[0]}},\"selected\":{\"id\":\"1823\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1838\",\"type\":\"UnionRenderers\"}},\"id\":\"1822\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1803\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null,\"end\":1.1,\"reset_end\":1.1,\"reset_start\":-1.1,\"start\":-1.1,\"tags\":[[[\"x\",\"x\",null]]]},\"id\":\"1778\",\"type\":\"Range1d\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1819\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1815\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1814\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1817\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1819\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"1818\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"1821\",\"type\":\"CDSView\"}},\"id\":\"1820\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1799\",\"type\":\"SaveTool\"},{\"id\":\"1800\",\"type\":\"PanTool\"},{\"id\":\"1801\",\"type\":\"WheelZoomTool\"},{\"id\":\"1802\",\"type\":\"BoxZoomTool\"},{\"id\":\"1803\",\"type\":\"ResetTool\"}]},\"id\":\"1804\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1835\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1814\",\"type\":\"ColumnDataSource\"}},\"id\":\"1821\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1836\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1812\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1800\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1823\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"end\":2.0844775056508484,\"reset_end\":2.0844775056508484,\"reset_start\":-1.126954250812553,\"start\":-1.126954250812553,\"tags\":[[[\"y\",\"y\",null]]]},\"id\":\"1779\",\"type\":\"Range1d\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1812\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1795\",\"type\":\"BasicTicker\"}},\"id\":\"1794\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1781\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1810\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1825\",\"type\":\"Scatter\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]},{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]},{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]}],\"ys\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]},{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]},{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[457]}]},\"selected\":{\"id\":\"1815\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1836\",\"type\":\"UnionRenderers\"}},\"id\":\"1814\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1822\",\"type\":\"ColumnDataSource\"}},\"id\":\"1829\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1787\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1801\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1785\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"1835\",\"type\":\"BoxAnnotation\"}},\"id\":\"1802\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1790\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"1810\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"1790\",\"type\":\"BasicTicker\"}},\"id\":\"1789\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"1822\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1825\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1827\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"1826\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"1829\",\"type\":\"CDSView\"}},\"id\":\"1828\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1790\",\"type\":\"BasicTicker\"}},\"id\":\"1793\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1799\",\"type\":\"SaveTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1826\",\"type\":\"Scatter\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"1795\",\"type\":\"BasicTicker\"}},\"id\":\"1798\",\"type\":\"Grid\"}],\"root_ids\":[\"1780\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
       "  var render_items = [{\"docid\":\"08e3e51d-d9e6-44b9-96be-6404208905ab\",\"roots\":{\"1780\":\"9340e238-2762-462f-ae9a-b684579d0be7\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        embed_document(root);\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "      attempts++;\n",
       "      if (attempts > 100) {\n",
       "        console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);\n",
       "\n",
       "    function msg_handler(msg) {\n",
       "      var metadata = msg.metadata;\n",
       "      var buffers = msg.buffers;\n",
       "      var msg = msg.content.data;\n",
       "      if ((metadata.msg_type == \"Ready\")) {\n",
       "        if (metadata.content) {\n",
       "          console.log(\"Python callback returned following output:\", metadata.content);\n",
       "        }\n",
       "      } else if (metadata.msg_type == \"Error\") {\n",
       "        console.log(\"Python failed with the following traceback:\", metadata.traceback)\n",
       "      } else {\n",
       "        \n",
       "var plot_id = \"1780\";\n",
       "if (plot_id in window.PyViz.plot_index) {\n",
       "  var plot = window.PyViz.plot_index[plot_id];\n",
       "} else {\n",
       "  var plot = Bokeh.index[plot_id];\n",
       "}\n",
       "\n",
       "if (plot_id in window.PyViz.receivers) {\n",
       "  var receiver = window.PyViz.receivers[plot_id];\n",
       "} else if (Bokeh.protocol === undefined) {\n",
       "  return;\n",
       "} else {\n",
       "  var receiver = new Bokeh.protocol.Receiver();\n",
       "  window.PyViz.receivers[plot_id] = receiver;\n",
       "}\n",
       "\n",
       "if ((buffers != undefined) && (buffers.length > 0)) {\n",
       "  receiver.consume(buffers[0].buffer)\n",
       "} else {\n",
       "  receiver.consume(msg)\n",
       "}\n",
       "\n",
       "const comm_msg = receiver.message;\n",
       "if ((comm_msg != null) && (Object.keys(comm_msg.content).length > 0)) {\n",
       "  plot.model.document.apply_json_patch(comm_msg.content, comm_msg.buffers)\n",
       "}\n",
       "\n",
       "      }\n",
       "    }\n",
       "    if ((window.PyViz == undefined) || (!window.PyViz.comm_manager)) {\n",
       "      console.log(\"Could not find comm manager\")\n",
       "    } else {\n",
       "      window.PyViz.comm_manager.register_target('1780', '8ae15fe66e844164b3c31e65b5c84262', msg_handler);\n",
       "    }\n",
       "    </script>"
      ],
      "text/plain": [
       ":DynamicMap   []\n",
       "   :Overlay\n",
       "      .Path.I    :Path   [x,y]\n",
       "      .Scatter.I :Scatter   [x]   (y)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "runner.live_plot(update_interval=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from adaptive.learner.learner1D import (curvature_loss_function,\n",
    "                                        uniform_loss,\n",
    "                                        default_loss)\n",
    "curvature_loss = curvature_loss_function()\n",
    "learner = adaptive.Learner1D(f, bounds=(-1, 1), loss_per_interval=curvature_loss)\n",
    "runner = adaptive.Runner(learner, goal=lambda l: l.loss() < 0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "await runner.task  # This is not needed in a notebook environment!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cb37b0e936944665ab7fe01f9173bdd1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(HTML(value='\\n        <dl>\\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">f…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "runner.live_info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "aa1daad9af05427287608ef2a407f009",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Button(description='cancel live-plot', layout=Layout(width='150px'), style=ButtonStyle())"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div id='1995' style='display: table; margin: 0 auto;'>\n",
       "    <div id=\"fig_1995\">\n",
       "      \n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"c1d1a7c8-f076-4e0d-8480-03507bfa0c1d\" data-root-id=\"1995\"></div>\n",
       "\n",
       "    </div>\n",
       "    </div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"18170607-9f70-49b0-b8c1-62ae9d2010c5\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2004\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"2008\",\"type\":\"Grid\"},{\"id\":\"2013\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"2009\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"2035\",\"type\":\"GlyphRenderer\"},{\"id\":\"2043\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"1996\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2019\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1993\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"2000\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1994\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"2002\",\"type\":\"LinearScale\"}},\"id\":\"1995\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"2050\",\"type\":\"BoxAnnotation\"}},\"id\":\"2017\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2042\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"2018\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2034\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2005\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"2029\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2032\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2034\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"2033\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"2036\",\"type\":\"CDSView\"}},\"id\":\"2035\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2005\",\"type\":\"BasicTicker\"}},\"id\":\"2008\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2014\",\"type\":\"SaveTool\"},{\"id\":\"2015\",\"type\":\"PanTool\"},{\"id\":\"2016\",\"type\":\"WheelZoomTool\"},{\"id\":\"2017\",\"type\":\"BoxZoomTool\"},{\"id\":\"2018\",\"type\":\"ResetTool\"}]},\"id\":\"2019\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2025\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2005\",\"type\":\"BasicTicker\"}},\"id\":\"2004\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2010\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"2029\",\"type\":\"ColumnDataSource\"}},\"id\":\"2036\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2027\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2010\",\"type\":\"BasicTicker\"}},\"id\":\"2009\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"2038\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2053\",\"type\":\"UnionRenderers\"}},\"id\":\"2037\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2027\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2040\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"2015\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAA8L9WVVVVVVXlvwAAAAAAAOC/VlVVVVVV1b9XVVVVVVXFv1lVVVVVVbW/AAAAAAAAkLxRVVVVVVW1P6aqqqqqqro//P//////vz+oqqqqqqrCP/7//////8M/U1VVVVVVxT/+///////FP6iqqqqqqsY//v//////xj9TVVVVVVXHP/7//////8c/U1VVVVVVyD+oqqqqqqrIP/7//////8g/U1VVVVVVyT/+///////JP6iqqqqqqso//v//////yz9TVVVVVVXNP/7//////88/VFVVVVVV0T+qqqqqqqrSP1RVVVVVVdU/////////1z+qqqqqqqraP////////98/VVVVVVVV5T+qqqqqqqrqPwAAAAAAAPA/\",\"dtype\":\"float64\",\"shape\":[36]},\"y\":{\"__ndarray__\":\"JmKFn2v/778GSDrSNlTlv5eBYjKM/N+/sBXghVNP1b9AQ3iHbDvFv5NR8Mb4/LS/TlVPeprpZj9ICAnlCJ23P6KJfmKTML4/MUG28zYRwz/U0jjL2TzJP2nMV9yzBs8/mrbN+MZ/1T8tozuFv4fbP6eb2Iv0H+M/DEbizjUy5z9thmxGwETsP28o2Gu+ufI/5ZL1pVLI8j+cJcKDo/vwP5h1gBxgw+w/kFFWxXHY5z90v6b+ZgHhP9OVgzB9pdo/f32c8Wdt1D9eYlUS8V7SPy4TfkNZqtE/V4WvM1tF0j8QZtxlHUTTP+77AqFpo9U/dlhukCEv2D/hY+KFKsraPxI5gYVzCOA/UyMpYetY5T9mlbFmo6zqP8Vmw1SfAPA/\",\"dtype\":\"float64\",\"shape\":[36]}},\"selected\":{\"id\":\"2030\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2051\",\"type\":\"UnionRenderers\"}},\"id\":\"2029\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2014\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2041\",\"type\":\"MultiLine\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2010\",\"type\":\"BasicTicker\"}},\"id\":\"2013\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2016\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2053\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2000\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2051\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2002\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2050\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2038\",\"type\":\"Selection\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1996\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2030\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2025\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"2037\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2040\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2042\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"2041\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"2044\",\"type\":\"CDSView\"}},\"id\":\"2043\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2033\",\"type\":\"Scatter\"},{\"attributes\":{\"callback\":null,\"end\":1.1739069445404138,\"reset_end\":1.1739069445404138,\"reset_start\":-0.9999292483944984,\"start\":-0.9999292483944984,\"tags\":[[[\"y\",\"y\",null]]]},\"id\":\"1994\",\"type\":\"Range1d\"},{\"attributes\":{\"source\":{\"id\":\"2037\",\"type\":\"ColumnDataSource\"}},\"id\":\"2044\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2032\",\"type\":\"Scatter\"},{\"attributes\":{\"callback\":null,\"end\":1.1,\"reset_end\":1.1,\"reset_start\":-1.1,\"start\":-1.1,\"tags\":[[[\"x\",\"x\",null]]]},\"id\":\"1993\",\"type\":\"Range1d\"}],\"root_ids\":[\"1995\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
       "  var render_items = [{\"docid\":\"18170607-9f70-49b0-b8c1-62ae9d2010c5\",\"roots\":{\"1995\":\"c1d1a7c8-f076-4e0d-8480-03507bfa0c1d\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        embed_document(root);\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "      attempts++;\n",
       "      if (attempts > 100) {\n",
       "        console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);\n",
       "\n",
       "    function msg_handler(msg) {\n",
       "      var metadata = msg.metadata;\n",
       "      var buffers = msg.buffers;\n",
       "      var msg = msg.content.data;\n",
       "      if ((metadata.msg_type == \"Ready\")) {\n",
       "        if (metadata.content) {\n",
       "          console.log(\"Python callback returned following output:\", metadata.content);\n",
       "        }\n",
       "      } else if (metadata.msg_type == \"Error\") {\n",
       "        console.log(\"Python failed with the following traceback:\", metadata.traceback)\n",
       "      } else {\n",
       "        \n",
       "var plot_id = \"1995\";\n",
       "if (plot_id in window.PyViz.plot_index) {\n",
       "  var plot = window.PyViz.plot_index[plot_id];\n",
       "} else {\n",
       "  var plot = Bokeh.index[plot_id];\n",
       "}\n",
       "\n",
       "if (plot_id in window.PyViz.receivers) {\n",
       "  var receiver = window.PyViz.receivers[plot_id];\n",
       "} else if (Bokeh.protocol === undefined) {\n",
       "  return;\n",
       "} else {\n",
       "  var receiver = new Bokeh.protocol.Receiver();\n",
       "  window.PyViz.receivers[plot_id] = receiver;\n",
       "}\n",
       "\n",
       "if ((buffers != undefined) && (buffers.length > 0)) {\n",
       "  receiver.consume(buffers[0].buffer)\n",
       "} else {\n",
       "  receiver.consume(msg)\n",
       "}\n",
       "\n",
       "const comm_msg = receiver.message;\n",
       "if ((comm_msg != null) && (Object.keys(comm_msg.content).length > 0)) {\n",
       "  plot.model.document.apply_json_patch(comm_msg.content, comm_msg.buffers)\n",
       "}\n",
       "\n",
       "      }\n",
       "    }\n",
       "    if ((window.PyViz == undefined) || (!window.PyViz.comm_manager)) {\n",
       "      console.log(\"Could not find comm manager\")\n",
       "    } else {\n",
       "      window.PyViz.comm_manager.register_target('1995', '3546a55abba04872a3e31511beb15e14', msg_handler);\n",
       "    }\n",
       "    </script>"
      ],
      "text/plain": [
       ":DynamicMap   []\n",
       "   :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "runner.live_plot(update_interval=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div id='2640' style='display: table; margin: 0 auto;'>\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"ecd9b26b-af45-4a38-86bf-d01f107671bb\" data-root-id=\"2640\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"cf02c6d5-e51e-44a2-bffd-c86a157da644\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2639\",\"type\":\"ToolbarBox\"},{\"id\":\"2637\",\"type\":\"GridBox\"}],\"sizing_mode\":\"fixed\"},\"id\":\"2640\",\"type\":\"Column\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2339\",\"type\":\"BasicTicker\"}},\"id\":\"2342\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2343\",\"type\":\"SaveTool\"},{\"id\":\"2344\",\"type\":\"PanTool\"},{\"id\":\"2345\",\"type\":\"WheelZoomTool\"},{\"id\":\"2346\",\"type\":\"BoxZoomTool\"},{\"id\":\"2347\",\"type\":\"ResetTool\"}]},\"id\":\"2348\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2219\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2476\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2459\",\"type\":\"BasicTicker\"}},\"id\":\"2458\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2236\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2339\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2219\",\"type\":\"BasicTicker\"}},\"id\":\"2222\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2454\",\"type\":\"BasicTicker\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2454\",\"type\":\"BasicTicker\"}},\"id\":\"2457\",\"type\":\"Grid\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2334\",\"type\":\"BasicTicker\"}},\"id\":\"2337\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2356\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2339\",\"type\":\"BasicTicker\"}},\"id\":\"2338\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2451\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2234\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2334\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2474\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2454\",\"type\":\"BasicTicker\"}},\"id\":\"2453\",\"type\":\"LinearAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2223\",\"type\":\"SaveTool\"},{\"id\":\"2224\",\"type\":\"PanTool\"},{\"id\":\"2225\",\"type\":\"WheelZoomTool\"},{\"id\":\"2226\",\"type\":\"BoxZoomTool\"},{\"id\":\"2227\",\"type\":\"ResetTool\"}]},\"id\":\"2228\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2223\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2329\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2449\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2354\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2334\",\"type\":\"BasicTicker\"}},\"id\":\"2333\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"curvature loss\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"2445\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2224\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2367\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2209\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAA8L8AAAAAAADsvwAAAAAAAOu/AAAAAAAA6r8AAAAAAADpvwAAAAAAAOi/AAAAAAAA5r8AAAAAAADlvwAAAAAAgOS/AAAAAAAA5L8AAAAAAIDjvwAAAAAAAOO/AAAAAACA4r8AAAAAAADivwAAAAAAAOG/AAAAAAAA4L8AAAAAAADevwAAAAAAAN2/AAAAAAAA3L8AAAAAAIDbvwAAAAAAANu/AAAAAACA2r8AAAAAAADavwAAAAAAgNm/AAAAAAAA2b8AAAAAAIDYvwAAAAAAANi/AAAAAAAA0L8AAAAAAADPvwAAAAAAAM6/AAAAAAAAzb8AAAAAAADMvwAAAAAAAMu/AAAAAAAAyr8AAAAAAADJvwAAAAAAAMi/AAAAAAAAx78AAAAAAADGvwAAAAAAAMW/AAAAAAAAxL8AAAAAAADCvwAAAAAAAMC/AAAAAAAAuL8AAAAAAAC0vwAAAAAAALC/AAAAAAAAqL8AAAAAAACkvwAAAAAAAKC/AAAAAAAAmL8AAAAAAACQvwAAAAAAAIC/AAAAAAAAAAAAAAAAAACAPwAAAAAAAJA/AAAAAAAAmD8AAAAAAACgPwAAAAAAAKQ/AAAAAAAAqD8AAAAAAACwPwAAAAAAAMA/AAAAAAAAwj8AAAAAAADEPwAAAAAAAMU/AAAAAAAAxj8AAAAAAADHPwAAAAAAAMg/AAAAAAAAyT8AAAAAAADKPwAAAAAAAMs/AAAAAAAAzD8AAAAAAADNPwAAAAAAAM4/AAAAAAAAzz8AAAAAAADQPwAAAAAAANg/AAAAAACA2D8AAAAAAADZPwAAAAAAgNk/AAAAAAAA2j8AAAAAAIDaPwAAAAAAANs/AAAAAAAA3D8AAAAAAADdPwAAAAAAAN4/AAAAAAAA4D8AAAAAAADhPwAAAAAAAOI/AAAAAACA4j8AAAAAAADjPwAAAAAAgOM/AAAAAAAA5D8AAAAAAIDkPwAAAAAAAOU/AAAAAAAA5j8AAAAAAADoPwAAAAAAAOk/AAAAAAAA6j8AAAAAAADrPwAAAAAAAOw/AAAAAAAA8D8=\",\"dtype\":\"float64\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"vCk4lp6Htr+JaXk0Hli9v97zSxK2IZa/S1pu0U5JuT9wdM85p0/MP+L76pPfG9Q/Psdx5M1J0z/bTfSekgHGP5wKilPIrbQ/MBA9OsxTl783iUd6NhPBv3epVHWkV8+/hoY6o2Ft1r+lCkE0o13cv7jVAP7nE+K/mRduw6M04r+N8+jNjA3cv+jKKhqb29S/8esZxK0QyL8W7pepcpC8v0hXYKjOHKC/uB3VkOQ6qj8UeMZLq1PBP+W9YokTIMw/eGag2qRl0z9XYJ28FJbYP05Pkl/ajN0/T8cKww0k4D/IB6XN6NjaP/m9kIVs89Q/cuJgmOdXzT+n+fwsIDHAP8UgSwpaDJU/QMxvoDRLtr9lQq/Im/HIv7Spf6+IR9O/OJCdKVXl2b9t9Cw+fhzgv5tne1gPFeO/1puf1crQ5b9pfgyCn2fqvwE0QtNml+2/ZdEF+ogE778Lo4UyLiHtvzxBBzsHmOm/ZT3zPcKZ5L88NhX+NqThvyf2Apdh29y/Xh9tMuID1r/H9/peKrbNv8DaBqd/7b2/AAAAAAAAAADA2ganf+29P8f3+l4qts0/Xh9tMuID1j8n9gKXYdvcPzw2Ff42pOE/ZT3zPcKZ5D88QQc7B5jpPwE0QtNml+0/aX4Mgp9n6j/Wm5/VytDlP5tne1gPFeM/bfQsPn4c4D84kJ0pVeXZP7Spf6+IR9M/ZUKvyJvxyD9AzG+gNEu2P8UgSwpaDJW/p/n8LCAxwL9y4mCY51fNv/m9kIVs89S/yAelzejY2r9PxwrDDSTgv05Pkl/ajN2/V2CdvBSW2L94ZqDapGXTv+W9YokTIMy/FHjGS6tTwb+4HdWQ5Dqqv0hXYKjOHKA/8esZxK0QyD/oyioam9vUP43z6M2MDdw/mRduw6M04j+41QD+5xPiP6UKQTSjXdw/hoY6o2Ft1j93qVR1pFfPPzeJR3o2E8E/MBA9OsxTlz+cCopTyK20v9tN9J6SAca/Psdx5M1J07/i++qT3xvUv3B0zzmnT8y/S1pu0U5Jub/e80sStiGWP4lpeTQeWL0/vCk4lp6Htj8=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"2359\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2380\",\"type\":\"UnionRenderers\"}},\"id\":\"2358\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2359\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2474\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2361\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2262\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2260\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2362\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2363\",\"type\":\"Scatter\"},{\"attributes\":{\"data_source\":{\"id\":\"2358\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2361\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2363\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"2362\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"2365\",\"type\":\"CDSView\"}},\"id\":\"2364\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2259\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"2358\",\"type\":\"ColumnDataSource\"}},\"id\":\"2365\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"2367\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2382\",\"type\":\"UnionRenderers\"}},\"id\":\"2366\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"2246\",\"type\":\"ColumnDataSource\"}},\"id\":\"2253\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2500\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2225\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"2246\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2249\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2251\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"2250\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"2253\",\"type\":\"CDSView\"}},\"id\":\"2252\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"2453\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"2457\",\"type\":\"Grid\"},{\"id\":\"2462\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"2458\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"2484\",\"type\":\"GlyphRenderer\"},{\"id\":\"2492\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"2445\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2468\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2202\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"2449\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"2203\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"2451\",\"type\":\"LinearScale\"}},\"id\":\"2444\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2369\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2250\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2251\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2370\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"2502\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2371\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"2331\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"2366\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2369\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2371\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"2370\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"2373\",\"type\":\"CDSView\"}},\"id\":\"2372\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2249\",\"type\":\"MultiLine\"},{\"attributes\":{\"callback\":null,\"end\":1.1,\"reset_end\":1.1,\"reset_start\":-1.1,\"start\":-1.1,\"tags\":[[[\"x\",\"x\",null]]]},\"id\":\"2202\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"end\":0.9739787557254554,\"reset_end\":0.9739787557254554,\"reset_start\":-0.9739787557254554,\"start\":-0.9739787557254554,\"tags\":[[[\"y\",\"y\",null]]]},\"id\":\"2203\",\"type\":\"Range1d\"},{\"attributes\":{\"source\":{\"id\":\"2366\",\"type\":\"ColumnDataSource\"}},\"id\":\"2373\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2379\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2380\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"overlay\":{\"id\":\"2259\",\"type\":\"BoxAnnotation\"}},\"id\":\"2226\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2247\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"2213\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"2217\",\"type\":\"Grid\"},{\"id\":\"2222\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"2218\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"2244\",\"type\":\"GlyphRenderer\"},{\"id\":\"2252\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"2205\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2228\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2202\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"2209\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"2203\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"2211\",\"type\":\"LinearScale\"}},\"id\":\"2204\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2354\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"text\":\"homogeneous\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"2205\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2459\",\"type\":\"BasicTicker\"},{\"attributes\":{\"text\":\"euclidean loss\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"2325\",\"type\":\"Title\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2459\",\"type\":\"BasicTicker\"}},\"id\":\"2462\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"2573\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"2577\",\"type\":\"Grid\"},{\"id\":\"2582\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"2578\",\"type\":\"LinearAxis\"}],\"outline_line_alpha\":{\"value\":0},\"plot_height\":300,\"plot_width\":300,\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"2630\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2589\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2564\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"2569\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"2565\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"2571\",\"type\":\"LinearScale\"}},\"id\":\"2566\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2214\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2356\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2476\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"ticker\":{\"id\":\"2214\",\"type\":\"BasicTicker\"}},\"id\":\"2217\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2499\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2382\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2343\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2463\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2236\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2219\",\"type\":\"BasicTicker\"}},\"id\":\"2218\",\"type\":\"LinearAxis\"},{\"attributes\":{\"below\":[{\"id\":\"2333\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"2337\",\"type\":\"Grid\"},{\"id\":\"2342\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"2338\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"2364\",\"type\":\"GlyphRenderer\"},{\"id\":\"2372\",\"type\":\"GlyphRenderer\"}],\"sizing_mode\":\"fixed\",\"title\":{\"id\":\"2325\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"2348\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2202\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"2329\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"2203\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"2331\",\"type\":\"LinearScale\"}},\"id\":\"2324\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2344\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2464\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAA8L8AAAAAAIDvvwAAAAAAAO+/AAAAAACA7r8AAAAAAADuvwAAAAAAgO2/AAAAAAAA7b8AAAAAAIDsvwAAAAAAAOy/AAAAAACA678AAAAAAADrvwAAAAAAgOq/AAAAAAAA6r8AAAAAAIDpvwAAAAAAAOm/AAAAAACA6L8AAAAAAADovwAAAAAAgOe/AAAAAAAA578AAAAAAIDmvwAAAAAAAOa/AAAAAACA5b8AAAAAAADlvwAAAAAAgOS/AAAAAAAA5L8AAAAAAIDjvwAAAAAAAOO/AAAAAACA4r8AAAAAAADivwAAAAAAgOG/AAAAAAAA4b8AAAAAAIDgvwAAAAAAAOC/AAAAAAAA378AAAAAAADevwAAAAAAAN2/AAAAAAAA3L8AAAAAAADbvwAAAAAAANq/AAAAAAAA2b8AAAAAAADYvwAAAAAAANe/AAAAAAAA1r8AAAAAAADVvwAAAAAAANS/AAAAAAAA078AAAAAAADSvwAAAAAAANG/AAAAAAAA0L8AAAAAAADOvwAAAAAAAMy/AAAAAAAAyr8AAAAAAADIvwAAAAAAAMa/AAAAAAAAxL8AAAAAAADCvwAAAAAAAMC/AAAAAAAAvL8AAAAAAAC4vwAAAAAAALS/AAAAAAAAsL8AAAAAAACovwAAAAAAAKC/AAAAAAAAkL8AAAAAAAAAAAAAAAAAAJA/AAAAAAAAoD8AAAAAAACoPwAAAAAAALA/AAAAAAAAtD8AAAAAAAC4PwAAAAAAAMA/AAAAAAAAxD8AAAAAAADIPwAAAAAAAMw/AAAAAAAA0D8AAAAAAADSPwAAAAAAANQ/AAAAAAAA1j8AAAAAAADYPwAAAAAAANo/AAAAAAAA3D8AAAAAAADePwAAAAAAAOA/AAAAAAAA4T8AAAAAAADiPwAAAAAAAOM/AAAAAAAA5D8AAAAAAADlPwAAAAAAAOY/AAAAAAAA5z8AAAAAAADoPwAAAAAAAOk/AAAAAAAA6j8AAAAAAADrPwAAAAAAAOw/AAAAAAAA7T8AAAAAAADuPwAAAAAAAO8/AAAAAAAA8D8=\",\"dtype\":\"float64\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"vCk4lp6Htr/zsob4ttG9v9xIBYPmFsK/OkRf/v6JxL9Uyz1mKwLGv3xiX4VASMa/jxsS3a0yxb91YGkh56nCv4lpeTQeWL2/uOPrrxefsr/e80sStiGWv9ogffNNtKI/S1pu0U5JuT+JtPLFCrDEP3B0zzmnT8w/2gwBSvp+0T/i++qT3xvUP/Jf/LqIwtU/sqifshhB1j8CBVFXCXTVPz7HceTNSdM/WNGwxCGLzz/bTfSekgHGP5wKilPIrbQ/MBA9OsxTl783iUd6NhPBv3epVHWkV8+/hoY6o2Ft1r+lCkE0o13cvwivNjJ1iOC/uNUA/ucT4r+vKhaaFqviv5kXbsOjNOK/l6TrSlqm4L+N8+jNjA3cv+jKKhqb29S/8esZxK0QyL9IV2CozhygvxR4xkurU8E/eGag2qRl0z9OT5Jf2ozdPzA/j6zdPuM/nccRewnR5j/J7WtfmDzpPwoHjOZ3UOo/1HBAUJHu6T8fhhVkag7oPwtfov15vuQ/T8cKww0k4D/5vZCFbPPUP6f5/CwgMcA/QMxvoDRLtr+0qX+viEfTv230LD5+HOC/1puf1crQ5b9pfgyCn2fqvwE0QtNml+2/Cd7aftUq779l0QX6iATvvwujhTIuIe2/PEEHOweY6b9lPfM9wpnkvyf2Apdh29y/x/f6Xiq2zb8AAAAAAAAAAMf3+l4qts0/J/YCl2Hb3D9lPfM9wpnkPzxBBzsHmOk/C6OFMi4h7T9l0QX6iATvPwE0QtNml+0/1puf1crQ5T+0qX+viEfTP6f5/CwgMcC/T8cKww0k4L8fhhVkag7ovwoHjOZ3UOq/nccRewnR5r9OT5Jf2ozdvxR4xkurU8G/8esZxK0QyD+N8+jNjA3cP5kXbsOjNOI/uNUA/ucT4j+lCkE0o13cP3epVHWkV88/MBA9OsxTlz/bTfSekgHGvz7HceTNSdO/sqifshhB1r/i++qT3xvUv3B0zzmnT8y/S1pu0U5Jub/e80sStiGWP4lpeTQeWL0/jxsS3a0yxT9Uyz1mKwLGP9xIBYPmFsI/vCk4lp6Htj8=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"2239\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2260\",\"type\":\"UnionRenderers\"}},\"id\":\"2238\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2345\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2465\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"2565\",\"type\":\"Range1d\"},{\"attributes\":{\"overlay\":{\"id\":\"2379\",\"type\":\"BoxAnnotation\"}},\"id\":\"2346\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2499\",\"type\":\"BoxAnnotation\"}},\"id\":\"2466\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2234\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"ticker\":{\"id\":\"2214\",\"type\":\"BasicTicker\"}},\"id\":\"2213\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2211\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2467\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2347\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2463\",\"type\":\"SaveTool\"},{\"id\":\"2464\",\"type\":\"PanTool\"},{\"id\":\"2465\",\"type\":\"WheelZoomTool\"},{\"id\":\"2466\",\"type\":\"BoxZoomTool\"},{\"id\":\"2467\",\"type\":\"ResetTool\"}]},\"id\":\"2468\",\"type\":\"Toolbar\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2583\",\"type\":\"PanTool\"},{\"id\":\"2584\",\"type\":\"WheelZoomTool\"},{\"id\":\"2585\",\"type\":\"BoxZoomTool\"},{\"id\":\"2586\",\"type\":\"SaveTool\"},{\"id\":\"2587\",\"type\":\"ResetTool\"},{\"id\":\"2588\",\"type\":\"HelpTool\"}]},\"id\":\"2589\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2634\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2632\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2579\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_alpha\":{\"value\":0},\"ticker\":{\"id\":\"2579\",\"type\":\"BasicTicker\"}},\"id\":\"2582\",\"type\":\"Grid\"},{\"attributes\":{\"grid_line_alpha\":{\"value\":0},\"ticker\":{\"id\":\"2574\",\"type\":\"BasicTicker\"}},\"id\":\"2577\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"2634\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"2579\",\"type\":\"BasicTicker\"},\"visible\":false},\"id\":\"2578\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2242\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2487\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"2238\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2241\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2243\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"2242\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"2245\",\"type\":\"CDSView\"}},\"id\":\"2244\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAA8L8AAAAAAADvvwAAAAAAAO6/AAAAAAAA7b8AAAAAAIDsvwAAAAAAAOy/AAAAAAAA678AAAAAAADqvwAAAAAAAOm/AAAAAAAA6L8AAAAAAIDnvwAAAAAAAOe/AAAAAAAA5r8AAAAAAIDlvwAAAAAAAOW/AAAAAAAA5L8AAAAAAADjvwAAAAAAAOK/AAAAAACA4b8AAAAAAADhvwAAAAAAgOC/AAAAAAAA4L8AAAAAAADfvwAAAAAAAN6/AAAAAAAA3b8AAAAAAADcvwAAAAAAANq/AAAAAAAA2L8AAAAAAADXvwAAAAAAANa/AAAAAAAA1b8AAAAAAADUvwAAAAAAANO/AAAAAAAA0r8AAAAAAADRvwAAAAAAANC/AAAAAAAAzr8AAAAAAADMvwAAAAAAAMi/AAAAAAAAxr8AAAAAAADEvwAAAAAAAMK/AAAAAAAAwL8AAAAAAAC8vwAAAAAAALi/AAAAAAAAtL8AAAAAAACwvwAAAAAAAKi/AAAAAAAAoL8AAAAAAACQvwAAAAAAAAAAAAAAAAAAoD8AAAAAAACoPwAAAAAAALA/AAAAAAAAtD8AAAAAAAC4PwAAAAAAALw/AAAAAAAAwD8AAAAAAADCPwAAAAAAAMQ/AAAAAAAAxj8AAAAAAADIPwAAAAAAAMw/AAAAAAAAzj8AAAAAAADQPwAAAAAAANE/AAAAAAAA0j8AAAAAAADTPwAAAAAAANQ/AAAAAAAA1T8AAAAAAADWPwAAAAAAANc/AAAAAAAA2D8AAAAAAADaPwAAAAAAANw/AAAAAAAA3T8AAAAAAADePwAAAAAAAN8/AAAAAAAA4D8AAAAAAIDgPwAAAAAAAOE/AAAAAACA4T8AAAAAAADiPwAAAAAAAOM/AAAAAAAA5D8AAAAAAADlPwAAAAAAgOU/AAAAAAAA5j8AAAAAAADnPwAAAAAAgOc/AAAAAAAA6D8AAAAAAADpPwAAAAAAAOo/AAAAAAAA6z8AAAAAAADsPwAAAAAAgOw/AAAAAAAA7T8AAAAAAADuPwAAAAAAAO8/AAAAAAAA8D8=\",\"dtype\":\"float64\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"vCk4lp6Htr/cSAWD5hbCv1TLPWYrAsa/jxsS3a0yxb91YGkh56nCv4lpeTQeWL2/3vNLErYhlr9LWm7RTkm5P3B0zzmnT8w/4vvqk98b1D/yX/y6iMLVP7Kon7IYQdY/Psdx5M1J0z9Y0bDEIYvPP9tN9J6SAcY/MBA9OsxTl793qVR1pFfPv6UKQTSjXdy/CK82MnWI4L+41QD+5xPiv68qFpoWq+K/mRduw6M04r+XpOtKWqbgv43z6M2MDdy/6MoqGpvb1L/x6xnErRDIvxR4xkurU8E/Tk+SX9qM3T8wP4+s3T7jP53HEXsJ0eY/ye1rX5g86T8KB4zmd1DqP9RwQFCR7uk/H4YVZGoO6D8LX6L9eb7kP0/HCsMNJOA/+b2QhWzz1D+n+fwsIDHAP7Spf6+IR9O/bfQsPn4c4L/Wm5/VytDlv2l+DIKfZ+q/ATRC02aX7b8J3tp+1Srvv2XRBfqIBO+/C6OFMi4h7b88QQc7B5jpv2U98z3CmeS/J/YCl2Hb3L/H9/peKrbNvwAAAAAAAAAAJ/YCl2Hb3D9lPfM9wpnkPzxBBzsHmOk/C6OFMi4h7T9l0QX6iATvPwne2n7VKu8/ATRC02aX7T9pfgyCn2fqP9abn9XK0OU/bfQsPn4c4D+0qX+viEfTP6f5/CwgMcC/+b2QhWzz1L9PxwrDDSTgvwtfov15vuS/H4YVZGoO6L/UcEBQke7pvwoHjOZ3UOq/ye1rX5g86b+dxxF7CdHmvzA/j6zdPuO/Tk+SX9qM3b8UeMZLq1PBv/HrGcStEMg/6MoqGpvb1D+N8+jNjA3cP5ek60papuA/mRduw6M04j+vKhaaFqviP7jVAP7nE+I/CK82MnWI4D+lCkE0o13cP3epVHWkV88/MBA9OsxTlz/bTfSekgHGv1jRsMQhi8+/Psdx5M1J07+yqJ+yGEHWv/Jf/LqIwtW/4vvqk98b1L9wdM85p0/Mv0tabtFOSbm/3vNLErYhlj+JaXk0Hli9P3VgaSHnqcI/jxsS3a0yxT9Uyz1mKwLGP9xIBYPmFsI/vCk4lp6Htj8=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"2479\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2500\",\"type\":\"UnionRenderers\"}},\"id\":\"2478\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2479\",\"type\":\"Selection\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2243\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2574\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2227\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2481\",\"type\":\"Scatter\"},{\"attributes\":{\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"2630\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2482\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2483\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2241\",\"type\":\"Scatter\"},{\"attributes\":{\"data_source\":{\"id\":\"2478\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2481\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2483\",\"type\":\"Scatter\"},\"nonselection_glyph\":{\"id\":\"2482\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"2485\",\"type\":\"CDSView\"}},\"id\":\"2484\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2478\",\"type\":\"ColumnDataSource\"}},\"id\":\"2485\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"2487\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2502\",\"type\":\"UnionRenderers\"}},\"id\":\"2486\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2239\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2569\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"2632\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"2574\",\"type\":\"BasicTicker\"},\"visible\":false},\"id\":\"2573\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2489\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2490\",\"type\":\"MultiLine\"},{\"attributes\":{\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"2491\",\"type\":\"MultiLine\"},{\"attributes\":{\"data_source\":{\"id\":\"2486\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2489\",\"type\":\"MultiLine\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2491\",\"type\":\"MultiLine\"},\"nonselection_glyph\":{\"id\":\"2490\",\"type\":\"MultiLine\"},\"selection_glyph\":null,\"view\":{\"id\":\"2493\",\"type\":\"CDSView\"}},\"id\":\"2492\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2486\",\"type\":\"ColumnDataSource\"}},\"id\":\"2493\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2583\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2571\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2584\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"xs\":[],\"ys\":[]},\"selected\":{\"id\":\"2247\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2262\",\"type\":\"UnionRenderers\"}},\"id\":\"2246\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"2635\",\"type\":\"BoxAnnotation\"}},\"id\":\"2585\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2586\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2587\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2588\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"2238\",\"type\":\"ColumnDataSource\"}},\"id\":\"2245\",\"type\":\"CDSView\"},{\"attributes\":{\"children\":[[{\"id\":\"2204\",\"subtype\":\"Figure\",\"type\":\"Plot\"},0,0],[{\"id\":\"2324\",\"subtype\":\"Figure\",\"type\":\"Plot\"},0,1],[{\"id\":\"2444\",\"subtype\":\"Figure\",\"type\":\"Plot\"},1,0],[{\"id\":\"2566\",\"subtype\":\"Figure\",\"type\":\"Plot\"},1,1]]},\"id\":\"2637\",\"type\":\"GridBox\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2635\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"tools\":[{\"id\":\"2223\",\"type\":\"SaveTool\"},{\"id\":\"2224\",\"type\":\"PanTool\"},{\"id\":\"2225\",\"type\":\"WheelZoomTool\"},{\"id\":\"2226\",\"type\":\"BoxZoomTool\"},{\"id\":\"2227\",\"type\":\"ResetTool\"},{\"id\":\"2343\",\"type\":\"SaveTool\"},{\"id\":\"2344\",\"type\":\"PanTool\"},{\"id\":\"2345\",\"type\":\"WheelZoomTool\"},{\"id\":\"2346\",\"type\":\"BoxZoomTool\"},{\"id\":\"2347\",\"type\":\"ResetTool\"},{\"id\":\"2463\",\"type\":\"SaveTool\"},{\"id\":\"2464\",\"type\":\"PanTool\"},{\"id\":\"2465\",\"type\":\"WheelZoomTool\"},{\"id\":\"2466\",\"type\":\"BoxZoomTool\"},{\"id\":\"2467\",\"type\":\"ResetTool\"},{\"id\":\"2583\",\"type\":\"PanTool\"},{\"id\":\"2584\",\"type\":\"WheelZoomTool\"},{\"id\":\"2585\",\"type\":\"BoxZoomTool\"},{\"id\":\"2586\",\"type\":\"SaveTool\"},{\"id\":\"2587\",\"type\":\"ResetTool\"},{\"id\":\"2588\",\"type\":\"HelpTool\"}]},\"id\":\"2638\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"2564\",\"type\":\"Range1d\"},{\"attributes\":{\"toolbar\":{\"id\":\"2638\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"2639\",\"type\":\"ToolbarBox\"}],\"root_ids\":[\"2640\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
       "  var render_items = [{\"docid\":\"cf02c6d5-e51e-44a2-bffd-c86a157da644\",\"roots\":{\"2640\":\"ecd9b26b-af45-4a38-86bf-d01f107671bb\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        embed_document(root);\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "      attempts++;\n",
       "      if (attempts > 100) {\n",
       "        console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        clearInterval(timer);\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);</script>"
      ],
      "text/plain": [
       ":Layout\n",
       "   .Overlay.Homogeneous    :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]\n",
       "   .Overlay.Euclidean_loss :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]\n",
       "   .Overlay.Curvature_loss :Overlay\n",
       "      .Scatter.I :Scatter   [x]   (y)\n",
       "      .Path.I    :Path   [x,y]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def sin_exp(x):\n",
    "    from math import exp, sin\n",
    "    return sin(15 * x) * exp(-x**2*2)\n",
    "\n",
    "learner_h = adaptive.Learner1D(sin_exp, (-1, 1), loss_per_interval=uniform_loss)\n",
    "learner_1 = adaptive.Learner1D(sin_exp, (-1, 1), loss_per_interval=default_loss)\n",
    "learner_2 = adaptive.Learner1D(sin_exp, (-1, 1), loss_per_interval=curvature_loss)\n",
    "\n",
    "npoints_goal = lambda l: l.npoints >= 100\n",
    "# adaptive.runner.simple is a non parallel blocking runner.\n",
    "adaptive.runner.simple(learner_h, goal=npoints_goal)\n",
    "adaptive.runner.simple(learner_1, goal=npoints_goal)\n",
    "adaptive.runner.simple(learner_2, goal=npoints_goal)\n",
    "\n",
    "(learner_h.plot().relabel('homogeneous')\n",
    " + learner_1.plot().relabel('euclidean loss')\n",
    " + learner_2.plot().relabel('curvature loss')).cols(2)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "02a0ca1b96544cb580b69ff8e77657d0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": "center",
       "align_self": null,
       "border": "solid 1px",
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "200px"
      }
     },
     "196b7b33048c4560a9d0f03e63f1a6be": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HBoxModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HBoxModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HBoxView",
       "box_style": "",
       "children": [
        "IPY_MODEL_a82815d0326b4d6982fb7275e6556932",
        "IPY_MODEL_c7a86db12ce84bc2afc0fa65f367f499"
       ],
       "layout": "IPY_MODEL_714b4946321e4dba98420659774a012b"
      }
     },
     "1b5402f4b4fa4ff3aa1d8553894b2e4b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel runner",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_f2f46bbc58d449d88d54acc19d59b428",
       "style": "IPY_MODEL_5e6066bbba0e498db81f089adbafd53e",
       "tooltip": ""
      }
     },
     "2553aa8e90474349afcae44501a7556f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "29c6da91d43948c6a167f4d80caafc0a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel live-plot",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_836fc24358a14e148bd1a03c4378a28e",
       "style": "IPY_MODEL_831e7f43bba44b9ab65c94445c8a760c",
       "tooltip": ""
      }
     },
     "2a89f4a7ac41450c912242f87ec04530": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel runner",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_48887510679f4cf8b147c21c9d7eb403",
       "style": "IPY_MODEL_7ad0cfbb50024b7291a1421b9f547fc7",
       "tooltip": ""
      }
     },
     "3a1c1b746b204a8c820007f568b97d25": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HBoxModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HBoxModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HBoxView",
       "box_style": "",
       "children": [
        "IPY_MODEL_9662c37b466f4ff3bc038468910d0ca8",
        "IPY_MODEL_1b5402f4b4fa4ff3aa1d8553894b2e4b"
       ],
       "layout": "IPY_MODEL_02a0ca1b96544cb580b69ff8e77657d0"
      }
     },
     "44eab8a30d684f94986718cbff4300ec": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "150px"
      }
     },
     "48887510679f4cf8b147c21c9d7eb403": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100px"
      }
     },
     "56234e3dfc014f48a3b820a64cea393b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "5e6066bbba0e498db81f089adbafd53e": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "62c69d178b434ac281d44ca46b655184": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "63823b52ee0c4969b1cc4d2161347194": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "6d93dc1ea9e0476e8b978ff1040c1a4d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100px"
      }
     },
     "714b4946321e4dba98420659774a012b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": "center",
       "align_self": null,
       "border": "solid 1px",
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "200px"
      }
     },
     "7ad0cfbb50024b7291a1421b9f547fc7": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "831e7f43bba44b9ab65c94445c8a760c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "836fc24358a14e148bd1a03c4378a28e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "150px"
      }
     },
     "863625c5bf17490eafdd22c345373fa8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "88c6f2bb095c41d983a944cc2b9a1b35": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "9662c37b466f4ff3bc038468910d0ca8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_63823b52ee0c4969b1cc4d2161347194",
       "placeholder": "​",
       "style": "IPY_MODEL_863625c5bf17490eafdd22c345373fa8",
       "value": "\n        <dl>\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">finished</font></dd>\n<dt class=\"ignore-css\">elapsed time</dt><dd>0:00:05.355121</dd>\n<dt class=\"ignore-css\">overhead</dt><dd>1.85%</dd>\n<dt class=\"ignore-css\"># of points</dt><dd>309</dd>\n<dt class=\"ignore-css\">latest loss</dt><dd>0.010</dd>\n        </dl>\n    "
      }
     },
     "9e3b75ccb85742e599c1bd173fced08d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a19ed2c5278f47499a1ad4e731035a32": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "a82815d0326b4d6982fb7275e6556932": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_56234e3dfc014f48a3b820a64cea393b",
       "placeholder": "​",
       "style": "IPY_MODEL_2553aa8e90474349afcae44501a7556f",
       "value": "\n        <dl>\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">finished</font></dd>\n<dt class=\"ignore-css\">elapsed time</dt><dd>0:00:00.655481</dd>\n<dt class=\"ignore-css\">overhead</dt><dd>24.17%</dd>\n<dt class=\"ignore-css\"># of points</dt><dd>457</dd>\n<dt class=\"ignore-css\">latest loss</dt><dd>0.010</dd>\n        </dl>\n    "
      }
     },
     "a9f17c1fd90846e2b9d4bae1cb8db20f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel live-plot",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_b1ad6e9f52cd40ccbe3fed29615b1022",
       "style": "IPY_MODEL_62c69d178b434ac281d44ca46b655184",
       "tooltip": ""
      }
     },
     "aa1daad9af05427287608ef2a407f009": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel live-plot",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_44eab8a30d684f94986718cbff4300ec",
       "style": "IPY_MODEL_a19ed2c5278f47499a1ad4e731035a32",
       "tooltip": ""
      }
     },
     "b1ad6e9f52cd40ccbe3fed29615b1022": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "150px"
      }
     },
     "c7a86db12ce84bc2afc0fa65f367f499": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "ButtonView",
       "button_style": "",
       "description": "cancel runner",
       "disabled": false,
       "icon": "",
       "layout": "IPY_MODEL_6d93dc1ea9e0476e8b978ff1040c1a4d",
       "style": "IPY_MODEL_ce1c589a65e6466c9810a3fc5f5a5e9c",
       "tooltip": ""
      }
     },
     "cb37b0e936944665ab7fe01f9173bdd1": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HBoxModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HBoxModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HBoxView",
       "box_style": "",
       "children": [
        "IPY_MODEL_dde14191fd6e44eebfbc6649ef39afcc",
        "IPY_MODEL_2a89f4a7ac41450c912242f87ec04530"
       ],
       "layout": "IPY_MODEL_da2ceb3de05843f09b7254ebba8e173e"
      }
     },
     "ce1c589a65e6466c9810a3fc5f5a5e9c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "ButtonStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "ButtonStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "StyleView",
       "button_color": null,
       "font_weight": ""
      }
     },
     "da2ceb3de05843f09b7254ebba8e173e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": "center",
       "align_self": null,
       "border": "solid 1px",
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "200px"
      }
     },
     "dde14191fd6e44eebfbc6649ef39afcc": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.4.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.4.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.4.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_9e3b75ccb85742e599c1bd173fced08d",
       "placeholder": "​",
       "style": "IPY_MODEL_88c6f2bb095c41d983a944cc2b9a1b35",
       "value": "\n        <dl>\n        <dt class=\"ignore-css\">status</dt><dd><font color=\"green\">finished</font></dd>\n<dt class=\"ignore-css\">elapsed time</dt><dd>0:00:00.573592</dd>\n<dt class=\"ignore-css\">overhead</dt><dd>8.09%</dd>\n<dt class=\"ignore-css\"># of points</dt><dd>36</dd>\n<dt class=\"ignore-css\">latest loss</dt><dd>0.010</dd>\n        </dl>\n    "
      }
     },
     "f2f46bbc58d449d88d54acc19d59b428": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.1.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.1.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": "none",
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100px"
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}