Skip to content

Instantly share code, notes, and snippets.

@jhitesma
Created April 8, 2017 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jhitesma/2c6d197106661bee7c70a14f21f4f35a to your computer and use it in GitHub Desktop.
Save jhitesma/2c6d197106661bee7c70a14f21f4f35a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"f1a4618a-a5be-45ea-816b-483993931514\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 5000;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"f1a4618a-a5be-45ea-816b-483993931514\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"f1a4618a-a5be-45ea-816b-483993931514\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'f1a4618a-a5be-45ea-816b-483993931514' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" document.getElementById(\"f1a4618a-a5be-45ea-816b-483993931514\").textContent = \"BokehJS is loading...\";\n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"f1a4618a-a5be-45ea-816b-483993931514\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(this));"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Autotune data: pts = 256, aux_data_len = 0, timestep = 2.00ms\n"
]
}
],
"source": [
"%matplotlib inline\n",
"\n",
"# Import all the numerical computing stuff we need...\n",
"\n",
"from dronin import autotune\n",
"import numpy as np\n",
"import pandas\n",
"import math\n",
"from scipy import fftpack, signal\n",
"from bokeh.plotting import figure, show\n",
"from bokeh.io import output_notebook\n",
"from bokeh.models import LinearAxis, Range1d, Span\n",
"\n",
"output_notebook() # Tell bokeh to send plots to notebook\n",
"\n",
"# And load up a datafile of autotune data. In this file, the average\n",
"# motor commands and gyro responses from all 90-120 wobbles during the\n",
"# autotune sequence are stored.\n",
"df, time_step = autotune.read_autotune_lump('/Users/jhitesma/piko-90.bin', filter_freq=55, filter_order=0)#, filter_order=6)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"baa50543-620e-48d3-8a1c-392ed4b1e198\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"baa50543-620e-48d3-8a1c-392ed4b1e198\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"baa50543-620e-48d3-8a1c-392ed4b1e198\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'baa50543-620e-48d3-8a1c-392ed4b1e198' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"375cf75c-0484-48b6-8087-ff7cca9ed753\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fc03666b-d5fa-4d90-a0ed-b1d1d1af696b\",\"type\":\"BasicTicker\"}},\"id\":\"7073a0e3-67c5-442d-ada7-1ebf1d8a052b\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"322892f7-34ed-4b9d-9de5-82824287e457\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"752e51d4-0173-42e0-980f-6c3caccbfe10\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"329c156e-8305-4637-87dd-2b3eccf39f9a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0350f4f3-34b6-4dca-9c2c-7e4e1c4c8941\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"fa0f6090-5a32-4f68-b465-0171e7de87b1\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"54e276c7-cb29-47fe-8576-df6453a5f09c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fc03666b-d5fa-4d90-a0ed-b1d1d1af696b\",\"type\":\"BasicTicker\"}},\"id\":\"16d89949-ff1d-4efe-95f2-0cd76379868f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD8qfHSTWJgP/yp8dJNYnA/+n5qvHSTeD/8qfHSTWKAP3sUrkfheoQ/+n5qvHSTiD956SYxCKyMP/yp8dJNYpA/PN9PjZdukj97FK5H4XqUP7pJDAIrh5Y/+n5qvHSTmD86tMh2vp+aP3npJjEIrJw/uB6F61G4nj/8qfHSTWKgP5zEILByaKE/PN9PjZduoj/b+X5qvHSjP3sUrkfheqQ/Gy/dJAaBpT+6SQwCK4emP1pkO99Pjac/+n5qvHSTqD+amZmZmZmpPzq0yHa+n6o/2c73U+Olqz956SYxCKysPxkEVg4tsq0/uB6F61G4rj9YObTIdr6vP/yp8dJNYrA/TDeJQWDlsD+cxCCwcmixP+xRuB6F67E/PN9PjZdusj+LbOf7qfGyP9v5fmq8dLM/K4cW2c73sz97FK5H4Xq0P8uhRbbz/bQ/Gy/dJAaBtT9rvHSTGAS2P7pJDAIrh7Y/CtejcD0Ktz9aZDvfT423P6rx0k1iELg/+n5qvHSTuD9KDAIrhxa5P5qZmZmZmbk/6iYxCKwcuj86tMh2vp+6P4lBYOXQIrs/2c73U+Oluz8pXI/C9Si8P3npJjEIrLw/yXa+nxovvT8ZBFYOLbK9P2mR7Xw/Nb4/uB6F61G4vj8IrBxaZDu/P1g5tMh2vr8/VOOlm8QgwD/8qfHSTWLAP6RwPQrXo8A/TDeJQWDlwD/0/dR46SbBP5zEILByaME/RIts5/upwT/sUbgehevBP5QYBFYOLcI/PN9PjZduwj/jpZvEILDCP4ts5/up8cI/MzMzMzMzwz/b+X5qvHTDP4PAyqFFtsM/K4cW2c73wz/TTWIQWDnEP3sUrkfhesQ/I9v5fmq8xD/LoUW28/3EP3Noke18P8U/Gy/dJAaBxT/D9Shcj8LFP2u8dJMYBMY/E4PAyqFFxj+6SQwCK4fGP2IQWDm0yMY/CtejcD0Kxz+yne+nxkvHP1pkO99Pjcc/AiuHFtnOxz+q8dJNYhDIP1K4HoXrUcg/+n5qvHSTyD+iRbbz/dTIP0oMAiuHFsk/8tJNYhBYyT+amZmZmZnJP0Jg5dAi28k/6iYxCKwcyj+S7Xw/NV7KPzq0yHa+n8o/4XoUrkfhyj+JQWDl0CLLPzEIrBxaZMs/2c73U+Olyz+BlUOLbOfLPylcj8L1KMw/0SLb+X5qzD956SYxCKzMPyGwcmiR7cw/yXa+nxovzT9xPQrXo3DNPxkEVg4tss0/wcqhRbbzzT9pke18PzXOPxFYObTIds4/uB6F61G4zj9g5dAi2/nOPwisHFpkO88/sHJoke18zz9YObTIdr7PPwAAAAAAANA/VOOlm8Qg0D+oxks3iUHQP/yp8dJNYtA/UI2XbhKD0D+kcD0K16PQP/hT46WbxNA/TDeJQWDl0D+gGi/dJAbRP/T91HjpJtE/SOF6FK5H0T+cxCCwcmjRP/Cnxks3idE/RIts5/up0T+YbhKDwMrRP+xRuB6F69E/QDVeukkM0j+UGARWDi3SP+j7qfHSTdI/PN9PjZdu0j+PwvUoXI/SP+Olm8QgsNI/N4lBYOXQ0j+LbOf7qfHSP99PjZduEtM/MzMzMzMz0z+HFtnO91PTP9v5fmq8dNM/L90kBoGV0z+DwMqhRbbTP9ejcD0K19M/K4cW2c730z9/arx0kxjUP9NNYhBYOdQ/JzEIrBxa1D97FK5H4XrUP8/3U+Olm9Q/I9v5fmq81D93vp8aL93UP8uhRbbz/dQ/H4XrUbge1T9zaJHtfD/VP8dLN4lBYNU/Gy/dJAaB1T9vEoPAyqHVP8P1KFyPwtU/F9nO91Pj1T9rvHSTGATWP7+fGi/dJNY/E4PAyqFF1j9nZmZmZmbWP7pJDAIrh9Y/Di2yne+n1j9iEFg5tMjWP7bz/dR46dY/CtejcD0K1z9eukkMAivXP7Kd76fGS9c/BoGVQ4ts1z9aZDvfT43XP65H4XoUrtc/AiuHFtnO1z9WDi2yne/XP6rx0k1iENg//tR46SYx2D9SuB6F61HYP6abxCCwctg/+n5qvHST2D9OYhBYObTYP6JFtvP91Ng/9ihcj8L12D9KDAIrhxbZP57vp8ZLN9k/8tJNYhBY2T9GtvP91HjZP5qZmZmZmdk/7nw/NV662T9CYOXQItvZP5ZDi2zn+9k/6iYxCKwc2j8+CtejcD3aP5LtfD81Xto/5tAi2/l+2j86tMh2vp/aP42XbhKDwNo/4XoUrkfh2j81XrpJDALbP4lBYOXQIts/3SQGgZVD2z8xCKwcWmTbP4XrUbgehds/2c73U+Ol2z8tsp3vp8bbP4GVQ4ts59s/1XjpJjEI3D8pXI/C9SjcP30/NV66Sdw/0SLb+X5q3D8lBoGVQ4vcP3npJjEIrNw/zczMzMzM3D8hsHJoke3cP3WTGARWDt0/yXa+nxov3T8dWmQ730/dP3E9CtejcN0/xSCwcmiR3T8ZBFYOLbLdP23n+6nx0t0/wcqhRbbz3T8VrkfhehTeP2mR7Xw/Nd4/vXSTGARW3j8RWDm0yHbeP2U730+Nl94/uB6F61G43j8MAiuHFtneP2Dl0CLb+d4/tMh2vp8a3z8IrBxaZDvfP1yPwvUoXN8/sHJoke183z8EVg4tsp3fP1g5tMh2vt8/rBxaZDvf3z8AAAAAAADgP6rx0k1iEOA/VOOlm8Qg4D/+1HjpJjHgP6jGSzeJQeA/UrgehetR4D8=\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"ecf162bd-a463-4869-990c-010dfdd5cce5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"54e276c7-cb29-47fe-8576-df6453a5f09c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"roll gyro vs actuators\"},\"id\":\"f21236fc-ebb9-4c65-b2f9-417dfa478840\",\"type\":\"Title\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"322892f7-34ed-4b9d-9de5-82824287e457\",\"type\":\"PanTool\"},{\"id\":\"ebdf4cbe-f612-44bf-a450-73613bc207ec\",\"type\":\"WheelZoomTool\"},{\"id\":\"c1549b4c-dbaa-4435-a801-a5c3b3d9df8f\",\"type\":\"BoxZoomTool\"},{\"id\":\"85ade7fb-ba85-4376-83ad-5a8cde8104b8\",\"type\":\"SaveTool\"},{\"id\":\"48899715-b608-4d43-bf3a-5d5770f925d3\",\"type\":\"ResetTool\"},{\"id\":\"884cd5a3-b935-4119-a3b2-2bfcf2a47dbf\",\"type\":\"HelpTool\"}]},\"id\":\"15ea7669-4f00-4fb6-bb5e-3def9ffa9c63\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"b085ea7c-afb1-4996-b1c1-fe9e10d951d2\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ebdf4cbe-f612-44bf-a450-73613bc207ec\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"884cd5a3-b935-4119-a3b2-2bfcf2a47dbf\",\"type\":\"HelpTool\"},{\"attributes\":{\"below\":[{\"id\":\"16d89949-ff1d-4efe-95f2-0cd76379868f\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"68bde158-2a5b-4395-9a08-7f615305051f\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"df7c9410-dc41-4268-b988-60a4890edc1c\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"16d89949-ff1d-4efe-95f2-0cd76379868f\",\"type\":\"LinearAxis\"},{\"id\":\"7073a0e3-67c5-442d-ada7-1ebf1d8a052b\",\"type\":\"Grid\"},{\"id\":\"df7c9410-dc41-4268-b988-60a4890edc1c\",\"type\":\"LinearAxis\"},{\"id\":\"807e97e6-7d65-4af4-885a-33ba5e2bab12\",\"type\":\"Grid\"},{\"id\":\"1005a7b7-3eec-46a7-b171-f0bdbc4fab1f\",\"type\":\"BoxAnnotation\"},{\"id\":\"7be9fe88-8102-4a42-ac0e-55b63213525c\",\"type\":\"GlyphRenderer\"},{\"id\":\"0eeea68c-a122-4e24-969b-c7dde7566902\",\"type\":\"GlyphRenderer\"},{\"id\":\"fa0f6090-5a32-4f68-b465-0171e7de87b1\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"fa0f6090-5a32-4f68-b465-0171e7de87b1\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"f21236fc-ebb9-4c65-b2f9-417dfa478840\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"b9b532df-c0e9-44f5-9f59-fc2769919ee8\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"15ea7669-4f00-4fb6-bb5e-3def9ffa9c63\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"04a8c223-e638-4cb3-956c-8bdba03554f2\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"752e51d4-0173-42e0-980f-6c3caccbfe10\",\"type\":\"DataRange1d\"}},\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"0350f4f3-34b6-4dca-9c2c-7e4e1c4c8941\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5770a194-42e1-4d94-8b27-f246cd4ad2e7\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"ecf162bd-a463-4869-990c-010dfdd5cce5\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"5770a194-42e1-4d94-8b27-f246cd4ad2e7\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"d219fb76-efe4-48c9-803c-94f08db73f87\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"7be9fe88-8102-4a42-ac0e-55b63213525c\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"04a8c223-e638-4cb3-956c-8bdba03554f2\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"dcbd73cb-2eea-459b-9571-4ebc6550fd60\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"413ff493-9891-438c-8bbd-1804445ee7f7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"48899715-b608-4d43-bf3a-5d5770f925d3\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"b9b532df-c0e9-44f5-9f59-fc2769919ee8\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"329c156e-8305-4637-87dd-2b3eccf39f9a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"85ade7fb-ba85-4376-83ad-5a8cde8104b8\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"413ff493-9891-438c-8bbd-1804445ee7f7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"bce291ef-81c5-40e2-b275-2e54e6effb6d\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"b3fdc4c3-64cf-4508-8fe1-1ba42862dfc9\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"0eeea68c-a122-4e24-969b-c7dde7566902\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b3fdc4c3-64cf-4508-8fe1-1ba42862dfc9\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"dcbd73cb-2eea-459b-9571-4ebc6550fd60\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b085ea7c-afb1-4996-b1c1-fe9e10d951d2\",\"type\":\"BasicTicker\"}},\"id\":\"df7c9410-dc41-4268-b988-60a4890edc1c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"1005a7b7-3eec-46a7-b171-f0bdbc4fab1f\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c1549b4c-dbaa-4435-a801-a5c3b3d9df8f\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bce291ef-81c5-40e2-b275-2e54e6effb6d\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"fc03666b-d5fa-4d90-a0ed-b1d1d1af696b\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b085ea7c-afb1-4996-b1c1-fe9e10d951d2\",\"type\":\"BasicTicker\"}},\"id\":\"807e97e6-7d65-4af4-885a-33ba5e2bab12\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d219fb76-efe4-48c9-803c-94f08db73f87\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1005a7b7-3eec-46a7-b171-f0bdbc4fab1f\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"end\":21.367847442626953,\"start\":-31.711210250854492},\"id\":\"68bde158-2a5b-4395-9a08-7f615305051f\",\"type\":\"Range1d\"}],\"root_ids\":[\"0cce5a71-305c-43d6-9f86-ff31b0e38232\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"375cf75c-0484-48b6-8087-ff7cca9ed753\",\"elementid\":\"baa50543-620e-48d3-8a1c-392ed4b1e198\",\"modelid\":\"0cce5a71-305c-43d6-9f86-ff31b0e38232\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"baa50543-620e-48d3-8a1c-392ed4b1e198\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# next let's plot what the roll gyro does vs. the flight controller's roll command\n",
"\n",
"p = figure(title=\"roll gyro vs actuators\")\n",
"p.line(df.time, df.gyroX)\n",
"p.extra_y_ranges = { 'actuation' : Range1d(min(df.desiredX), max(df.desiredX)) }\n",
"p.line(df.time, df.desiredX, y_range_name='actuation', color=\"red\")\n",
"p.add_layout(LinearAxis(y_range_name=\"actuation\"), 'right')\n",
"\n",
"show(p)\n",
"\n",
"# Looks really nasty, huh? This is the gyro data vs. the actuator data. They're clearly related\n",
"# but phase is off and shape is a fair bit different."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"96b1fbbc-1314-4fcf-94f7-146af9ff05a2\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"96b1fbbc-1314-4fcf-94f7-146af9ff05a2\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"96b1fbbc-1314-4fcf-94f7-146af9ff05a2\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '96b1fbbc-1314-4fcf-94f7-146af9ff05a2' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"f5c8b8b5-81e3-4ec8-b3ef-6718577236a5\":{\"roots\":{\"references\":[{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0cebfebb-8c77-45ab-aff8-e89158c43637\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cdfff38d-43a0-4485-9a55-8486f9eea033\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7798053a-92c5-4668-b506-d27458a239ac\",\"type\":\"BasicTicker\"}},\"id\":\"03e336fe-a084-4654-b554-7869161a8daa\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"19599190-83ce-4164-97fd-f2b807115e5f\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d8dd4bba-3452-4158-a258-09ecd245fa1a\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"470fda3b-844d-48b7-8f39-2f376694e717\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"5f442c7e-e424-4925-80ac-f92300976a8d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"09431283-2e3d-4148-8303-4cf1a2a3a72a\",\"type\":\"BasicTicker\"}},\"id\":\"4280bab1-9cbe-49b3-b67b-59efaef129b2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9791d409-877e-46a8-a261-154c71089db9\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3e6332cf-a11b-4c1b-8340-eb3361ad769a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"267844a5-c657-477b-8d13-3c878df7838e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"72419021-817d-4bed-be5c-23423cca3b17\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null},\"id\":\"8cdb9104-4a34-4d04-8847-b401c0526df6\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"ef29aa87-8c66-46de-b228-66ac91a9da98\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"e57d85bf-b3ac-4f73-9bb8-155cf09d8e16\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"end\":21.367847442626953,\"start\":-31.711210250854492},\"id\":\"e613b319-c997-45d1-8338-0be3e5723535\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"d10b7ded-7a9a-4598-b11d-fc7b1c1ae5ad\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"05af3036-98ec-4587-8451-6eb7acd25b77\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"cdfff38d-43a0-4485-9a55-8486f9eea033\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"dc29d0b5-b8df-4a98-914b-d9de8eaf9a5e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"02aedbab-bea7-4408-9d3b-ad13d96a5a19\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5f442c7e-e424-4925-80ac-f92300976a8d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"267844a5-c657-477b-8d13-3c878df7838e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"470fda3b-844d-48b7-8f39-2f376694e717\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"070b3530-aeeb-4ce8-843b-5993104c5bcf\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"3e6332cf-a11b-4c1b-8340-eb3361ad769a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7798053a-92c5-4668-b506-d27458a239ac\",\"type\":\"BasicTicker\"}},\"id\":\"238c4048-7339-4d4d-bcb7-fbb0b5d00362\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"09431283-2e3d-4148-8303-4cf1a2a3a72a\",\"type\":\"BasicTicker\"}},\"id\":\"10694d2d-2683-4a51-ad63-cae08ece1f69\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"3b55d6aa-9c8b-4971-a8b2-387a98a5a4fb\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"0cebfebb-8c77-45ab-aff8-e89158c43637\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"ef29aa87-8c66-46de-b228-66ac91a9da98\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"ed2401d6-2980-4b49-9987-d38f8041eb2c\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"09431283-2e3d-4148-8303-4cf1a2a3a72a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"e57d85bf-b3ac-4f73-9bb8-155cf09d8e16\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"194cb5a1-bb90-4b10-9752-2b75668fb395\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"a9003d7f-fac0-4b4f-972a-6b82d1e58250\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"3b55d6aa-9c8b-4971-a8b2-387a98a5a4fb\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"05af3036-98ec-4587-8451-6eb7acd25b77\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"7798053a-92c5-4668-b506-d27458a239ac\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"57995aa3-69ff-4264-b923-9427986633c2\",\"type\":\"PanTool\"},{\"id\":\"d8dd4bba-3452-4158-a258-09ecd245fa1a\",\"type\":\"WheelZoomTool\"},{\"id\":\"194cb5a1-bb90-4b10-9752-2b75668fb395\",\"type\":\"BoxZoomTool\"},{\"id\":\"02aedbab-bea7-4408-9d3b-ad13d96a5a19\",\"type\":\"SaveTool\"},{\"id\":\"9791d409-877e-46a8-a261-154c71089db9\",\"type\":\"ResetTool\"},{\"id\":\"72419021-817d-4bed-be5c-23423cca3b17\",\"type\":\"HelpTool\"}]},\"id\":\"4382ea49-4c20-4551-9e7a-cc28b6b2ae0d\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":{\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"57995aa3-69ff-4264-b923-9427986633c2\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"d10b7ded-7a9a-4598-b11d-fc7b1c1ae5ad\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":\"roll gyrodiff vs actuators\"},\"id\":\"31e8bf80-7b65-4bf0-9191-1be22392c173\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"238c4048-7339-4d4d-bcb7-fbb0b5d00362\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"e613b319-c997-45d1-8338-0be3e5723535\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"4280bab1-9cbe-49b3-b67b-59efaef129b2\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"238c4048-7339-4d4d-bcb7-fbb0b5d00362\",\"type\":\"LinearAxis\"},{\"id\":\"03e336fe-a084-4654-b554-7869161a8daa\",\"type\":\"Grid\"},{\"id\":\"4280bab1-9cbe-49b3-b67b-59efaef129b2\",\"type\":\"LinearAxis\"},{\"id\":\"10694d2d-2683-4a51-ad63-cae08ece1f69\",\"type\":\"Grid\"},{\"id\":\"e57d85bf-b3ac-4f73-9bb8-155cf09d8e16\",\"type\":\"BoxAnnotation\"},{\"id\":\"ed2401d6-2980-4b49-9987-d38f8041eb2c\",\"type\":\"GlyphRenderer\"},{\"id\":\"dc29d0b5-b8df-4a98-914b-d9de8eaf9a5e\",\"type\":\"GlyphRenderer\"},{\"id\":\"070b3530-aeeb-4ce8-843b-5993104c5bcf\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"070b3530-aeeb-4ce8-843b-5993104c5bcf\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"31e8bf80-7b65-4bf0-9191-1be22392c173\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"19599190-83ce-4164-97fd-f2b807115e5f\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"4382ea49-4c20-4551-9e7a-cc28b6b2ae0d\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a9003d7f-fac0-4b4f-972a-6b82d1e58250\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"8cdb9104-4a34-4d04-8847-b401c0526df6\",\"type\":\"DataRange1d\"}},\"id\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\",\"subtype\":\"Figure\",\"type\":\"Plot\"}],\"root_ids\":[\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"f5c8b8b5-81e3-4ec8-b3ef-6718577236a5\",\"elementid\":\"96b1fbbc-1314-4fcf-94f7-146af9ff05a2\",\"modelid\":\"4bb5b05a-c9fc-44c9-83ab-d45850ba1599\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"96b1fbbc-1314-4fcf-94f7-146af9ff05a2\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p = figure(title=\"roll gyrodiff vs actuators\")\n",
"p.line(df.time, df.derivgyroX)\n",
"p.extra_y_ranges = { 'actuation' : Range1d(min(df.desiredX), max(df.desiredX)) }\n",
"p.line(df.time, df.desiredX, y_range_name='actuation', color=\"red\")\n",
"p.add_layout(LinearAxis(y_range_name=\"actuation\"), 'right')\n",
"\n",
"show(p)\n",
"\n",
"# If we differentiate the gyro, the shape is more clearly related, but boy is\n",
"# there a lot of noise."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"6108d296-e689-4785-a291-e8dcd8a7af71\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"6108d296-e689-4785-a291-e8dcd8a7af71\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"6108d296-e689-4785-a291-e8dcd8a7af71\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6108d296-e689-4785-a291-e8dcd8a7af71' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"55e243a0-27d1-4526-b17f-15de68eb388f\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"38d9fb98-7375-4c77-8d73-c379612d385d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"filtered roll gyrodiff vs actuators\"},\"id\":\"7798acfc-30a6-4d4d-8f1c-3193fc907d30\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"67b52f94-3dfa-4de0-971f-6fa77c836a5b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"83da9aa1-de83-4c95-96d7-9096a6762a13\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"85ef102d-7c20-4cd8-98c3-3b3632e8811e\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"cf4bc1f4-84d6-49aa-81d5-d0230b52b8bb\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"83da9aa1-de83-4c95-96d7-9096a6762a13\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4801642d-bc3a-4b46-ba57-41bd76e473ba\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"5128ccff-8acb-4383-b2f0-1bac5ee0a4b9\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cbc40ea8-653b-4c62-a609-76e31b4f97b9\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"13a5731f-4c89-4c49-ac36-aeca0ed61736\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"1674f82d-f82f-4a6c-ac95-44edaf86a384\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"2e04b3ec-d198-4f06-9910-4d8d2ee3ef09\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"38d9fb98-7375-4c77-8d73-c379612d385d\",\"type\":\"BasicTicker\"}},\"id\":\"0bb7adce-2c47-4936-af89-42240acfc31a\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3cd9c451-bec4-462a-b8d2-b38171f32b67\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"907d01cd-2403-4807-a355-32468e9bc9b5\",\"type\":\"PanTool\"},{\"id\":\"d9f2284a-28ac-4dbf-aa15-e90b5a983585\",\"type\":\"WheelZoomTool\"},{\"id\":\"77774583-32f4-42ee-9f0a-5fc9c3f14e5a\",\"type\":\"BoxZoomTool\"},{\"id\":\"c1646d5d-b106-42bd-a3a2-5ca5673b3e4f\",\"type\":\"SaveTool\"},{\"id\":\"3cd9c451-bec4-462a-b8d2-b38171f32b67\",\"type\":\"ResetTool\"},{\"id\":\"c878e8cf-ac58-4836-99af-0fb5372f8797\",\"type\":\"HelpTool\"}]},\"id\":\"207ec2b4-ccb6-4e77-8ad4-72ca8e929a81\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4801642d-bc3a-4b46-ba57-41bd76e473ba\",\"type\":\"BasicTicker\"}},\"id\":\"bb31e7bd-59d7-48d8-9352-0e2e1cb921a9\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"cff684bb-8075-4737-bf48-af16a134589a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1d215d6d-9148-4fc2-852a-e13cd6d25329\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"041e9595-7a12-4abd-a9e7-cc353cbd8469\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"4a8339b3-1b3d-41f0-a328-eaf295cbec7e\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"end\":21.367847442626953,\"start\":-31.711210250854492},\"id\":\"6fa337f5-1047-4a0d-9f12-62eec436f8bf\",\"type\":\"Range1d\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cbc40ea8-653b-4c62-a609-76e31b4f97b9\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"ab16b6f5-916c-4733-a1ab-0b1a41c06af4\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"6fa337f5-1047-4a0d-9f12-62eec436f8bf\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"0bb7adce-2c47-4936-af89-42240acfc31a\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"ab16b6f5-916c-4733-a1ab-0b1a41c06af4\",\"type\":\"LinearAxis\"},{\"id\":\"bb31e7bd-59d7-48d8-9352-0e2e1cb921a9\",\"type\":\"Grid\"},{\"id\":\"0bb7adce-2c47-4936-af89-42240acfc31a\",\"type\":\"LinearAxis\"},{\"id\":\"8fd422ce-06c0-40c0-9499-da30c998502e\",\"type\":\"Grid\"},{\"id\":\"169ffb1a-6bc1-4696-a6c3-9de43197ab63\",\"type\":\"BoxAnnotation\"},{\"id\":\"cf4bc1f4-84d6-49aa-81d5-d0230b52b8bb\",\"type\":\"GlyphRenderer\"},{\"id\":\"1674f82d-f82f-4a6c-ac95-44edaf86a384\",\"type\":\"GlyphRenderer\"},{\"id\":\"041e9595-7a12-4abd-a9e7-cc353cbd8469\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"041e9595-7a12-4abd-a9e7-cc353cbd8469\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"7798acfc-30a6-4d4d-8f1c-3193fc907d30\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"c9a67fef-5202-44c4-af87-17f41d2c2c8a\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"207ec2b4-ccb6-4e77-8ad4-72ca8e929a81\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a2c60057-d7fa-414b-b56c-d92b3f0bc8f8\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"4a8339b3-1b3d-41f0-a328-eaf295cbec7e\",\"type\":\"DataRange1d\"}},\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"169ffb1a-6bc1-4696-a6c3-9de43197ab63\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"77774583-32f4-42ee-9f0a-5fc9c3f14e5a\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2e04b3ec-d198-4f06-9910-4d8d2ee3ef09\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"67b52f94-3dfa-4de0-971f-6fa77c836a5b\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"c9a67fef-5202-44c4-af87-17f41d2c2c8a\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"1d215d6d-9148-4fc2-852a-e13cd6d25329\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"a2c60057-d7fa-414b-b56c-d92b3f0bc8f8\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"13a5731f-4c89-4c49-ac36-aeca0ed61736\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d9f2284a-28ac-4dbf-aa15-e90b5a983585\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"cff684bb-8075-4737-bf48-af16a134589a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"85ef102d-7c20-4cd8-98c3-3b3632e8811e\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"b41bde4f-91d6-4569-b183-41e68d7b2c4e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"AAAAQPlm/T8AAACgkqnyPwAAACD63ts/AAAAAAj12r8AAADgzLT0vwAAAKCSZAHAAAAAwHawCMAAAACg7hQQwAAAAEDB5BPAAAAAIAMDGMAAAADANAwcwAAAAOAo5R/AAAAA4NPOIcAAAAAAF3sjwAAAAOAYBCXAAAAAgF1rJsAAAABA3KgnwAAAAACqrSjAAAAAYJKaKcAAAADg4GgqwAAAAIAv+yrAAAAAwIhLK8AAAADgqlArwAAAAKDSMivAAAAAYFfuKsAAAACguG8qwAAAACAHsSnAAAAAAFm7KMAAAAAA3qwnwAAAAGAkeibAAAAA4HEsJcAAAAAA47MjwAAAAOCeDxhAAAAAwDrRGkAAAAAgxdwdQAAAAEB2ZiBAAAAAQBGDIUAAAABglE0iQAAAAKBtwSJAAAAA4JLeIkAAAACgUrAiQAAAAABbSCJAAAAAgFybIUAAAADgNUMgQAAAAGBfFx1AAAAAgGaBGUAAAAAgvyUWQAAAACAkVhJAAAAA4OFYC0AAAABgL04BQAAAAEDGFuo/AAAAgFpd5L8AAABAfnIBwAAAAOB29AzAAAAAQJIlFMAAAAAA5P4ZwAAAAEA1sh/AAAAAgI55IsAAAACANe0kwAAAACD3PCfAAAAAwCBHKcAAAAAAOy4rwAAAAICsBi3AAAAAAPV8LsAAAADAxs4+wAAAAGAXJz/AAAAAAJyDP8AAAADgEbY/wAAAAGCZeT/AAAAAgAf8PsAAAACgRDY+wAAAAEAbDz3AAAAAYLyGO8AAAAAA3rI5wAAAAMDqujfAAAAAQEeuNcAAAADAdXQzwAAAAEDD7TDAAAAAAPM9LMAAAADg4V0mwAAAAKDCqCDAAAAAYL7KFcAAAAAgmAoEwAAAAKCJptU/AAAAIOXICEAAAACAAw4XQAAAAOD5syBAAAAAAKuJJUAAAABgqCEqQAAAAIBeDi5AAAAAQDO9MEAAAAAgq0EyQAAAAOD3jDNAAAAAALGGNEAAAABA3ws1QAAAAEArXjVAAAAAoGGFGUAAAADAWikZQAAAAAA0DRdAAAAAwO49FEAAAABgvyARQAAAAADbVQtAAAAAoBkYA0AAAABgyYbzPwAAAAAgcaw/AAAA4HgL8b8AAABgQ/MBwAAAAIAsNQzAAAAAgJbWEsAAAAAgcb0XwAAAAABs6BzAAAAAIHjuIMAAAABAc3AjwAAAAEApmyXAAAAAAI9NJ8AAAADgKtkowAAAAAD8cSrAAAAAwM7NK8AAAABA8ukswAAAAKCn1C3AAAAAAE+aLsAAAAAg8QgvwAAAAKDH2y7AAAAA4CluLsAAAABAL9stwAAAAIB5ES3AAAAAAMD4K8AAAACAktkqwAAAAGAf/QJAAAAAwC5mCUAAAADgaYAQQAAAAADEWhRAAAAAwC6mF0AAAACgSLcaQAAAAGDUbB1AAAAAYH1eH0AAAADgr0YgQAAAAADqkyBAAAAA4P6nIEAAAABAZG0gQAAAAMCSih9AAAAAYFGhHUAAAABg/fIaQAAAAIDqsxdAAAAAYM7IE0AAAAAAV8IOQAAAAED+SwVAAAAAwBnJ9j8AAADg6MbFPwAAAODUePO/AAAAQNdGBcAAAABAw2UQwAAAAIA9ZRbAAAAAYK18HMAAAABAQ/wgwAAAAKCylyPAAAAAYK0QJsAAAABgZ3IowAAAAAD0lSrAAAAAQDxZLMAAAABAsu4twAAAAKDQgC/AAAAA4OpzMMAAAAAAlPQwwAAAACCLRDHAAAAAwBp7McAAAADAuYUxwAAAAECzVDHAAAAAQEP0MMAAAABAX2owwAAAAABPdi/AAAAAQNPvLcAAAABAgywswAAAAOCyLCrAAAAAwOPYJ8AAAACgRUIlwAAAAAD1kCLAAAAAQMbzH8AAAACgB7cawAAAAIDLWhXAAAAAgIZXD8AAAACAMQMEwAAAAMAJ+/K/AAAAIGD7sT8AAAAgpSr1PwAAAID8fwRAAAAAALqEDUAAAACg+cMSQAAAAIDxURZAAAAAoAJnGUAAAAAAWsMbQAAAAMBLgx1AAAAAoFX/HkAAAAAAEQMgQAAAAADyLyBAAAAAYLXJH0AAAAAgsHEeQAAAAKD0QBxAAAAA4A97GUAAAACAIogWQAAAAOCuVhNAAAAAYI/xD0AAAAAg92EHQAAAAKA94vo/AAAAoFQq3T8AAADAWGvmvwAAACARKv6/AAAAIL8ACcAAAACgk5URwAAAAODjghbAAAAA4PF5G8AAAADATB8gwAAAAOAMaCLAAAAAQENtJMAAAAAgjhkmwAAAAGDhsCfAAAAAYDFQKcAAAACgosAqwAAAAICWtyvAAAAAwN1ZLMAAAAAgwccswAAAAOAxCC3AAAAA4DT8LMAAAACAarMswAAAAGCzbCzAAAAAwNPeK8AAAAAAg9AqwAAAAGAhRSnAAAAAYBWwJ8AAAADgDQsmwAAAAEBpUiTAAAAAwL5xIsAAAADgPXMgwAAAAAA68xzAAAAAYKGqGMAAAAAglwcUwAAAAOBXDw/AAAAAwFm0BsAAAACAHin9vwAAAMDrd+m/AAAAQD8vxj8AAACgZcPvPwAAACA0Svs/AAAAgKkoA0AAAAAgW/oHQAAAAEDLDwxAAAAAoG1lD0AAAADANe8QQAAAAGBPvhFAAAAA4DI7EkAAAABgazsSQAAAAMBPhhFAAAAAoDcuEEAAAAAAx2ENQAAAAEC7jAlAAAAAwAXDBEA=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"5128ccff-8acb-4383-b2f0-1bac5ee0a4b9\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c1646d5d-b106-42bd-a3a2-5ca5673b3e4f\",\"type\":\"SaveTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"38d9fb98-7375-4c77-8d73-c379612d385d\",\"type\":\"BasicTicker\"}},\"id\":\"8fd422ce-06c0-40c0-9499-da30c998502e\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"b41bde4f-91d6-4569-b183-41e68d7b2c4e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4801642d-bc3a-4b46-ba57-41bd76e473ba\",\"type\":\"BasicTicker\"}},\"id\":\"ab16b6f5-916c-4733-a1ab-0b1a41c06af4\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"169ffb1a-6bc1-4696-a6c3-9de43197ab63\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"907d01cd-2403-4807-a355-32468e9bc9b5\",\"type\":\"PanTool\"},{\"attributes\":{\"plot\":{\"id\":\"811b431e-af19-444e-9b40-638b1e397b58\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c878e8cf-ac58-4836-99af-0fb5372f8797\",\"type\":\"HelpTool\"}],\"root_ids\":[\"811b431e-af19-444e-9b40-638b1e397b58\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"55e243a0-27d1-4526-b17f-15de68eb388f\",\"elementid\":\"6108d296-e689-4785-a291-e8dcd8a7af71\",\"modelid\":\"811b431e-af19-444e-9b40-638b1e397b58\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"6108d296-e689-4785-a291-e8dcd8a7af71\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p = figure(title=\"filtered roll gyrodiff vs actuators\")\n",
"p.line(df.time, df.derivfilteredX)\n",
"p.extra_y_ranges = { 'actuation' : Range1d(min(df.desiredX), max(df.desiredX)) }\n",
"p.line(df.time, df.desiredX, y_range_name='actuation', color=\"red\")\n",
"p.add_layout(LinearAxis(y_range_name=\"actuation\"), 'right')\n",
"\n",
"show(p)\n",
"\n",
"# Low pass filtering clearly helps. Now let's get down to business of finding how the input\n",
"# relates to the output."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"scrolled": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"03491159-2834-4b9a-9c9d-cb77c72c4ef3\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"03491159-2834-4b9a-9c9d-cb77c72c4ef3\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"03491159-2834-4b9a-9c9d-cb77c72c4ef3\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '03491159-2834-4b9a-9c9d-cb77c72c4ef3' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"9860de77-1c3e-4e82-87c8-748fdeb3e6c5\":{\"roots\":{\"references\":[{\"attributes\":{\"formatter\":{\"id\":\"31c57079-a6e7-4622-b279-c7e2546d5766\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7187ab36-50c3-43e0-ae09-660881986cf4\",\"type\":\"BasicTicker\"}},\"id\":\"904a73bd-0dfb-4576-ab3a-2d3622200fa2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f4675303-7068-441a-8483-3a351fb59b01\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2c33650f-dde5-47aa-bf92-d214d4d231ca\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"74d1f77e-d8b8-469d-99ea-aac764c0e3bf\",\"type\":\"PanTool\"},{\"id\":\"4cb765ac-fd7b-47c5-85a8-9e6d8577dc23\",\"type\":\"WheelZoomTool\"},{\"id\":\"46e74c39-e227-4c07-beda-2da27cc0bc51\",\"type\":\"BoxZoomTool\"},{\"id\":\"48efd6c1-5eec-4ea6-8aee-d78da09402f8\",\"type\":\"SaveTool\"},{\"id\":\"c2669b3b-1e37-4bea-b7a4-7a21bc3f6fd8\",\"type\":\"ResetTool\"},{\"id\":\"f4675303-7068-441a-8483-3a351fb59b01\",\"type\":\"HelpTool\"}]},\"id\":\"f8c99b99-3aaf-4c4f-bae4-e4b200b893a3\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"36587b15-4e5d-414e-89a2-e1459b078ff6\",\"type\":\"LogTicker\"}},\"id\":\"cb296898-2489-43b7-b068-f6673359a521\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"48efd6c1-5eec-4ea6-8aee-d78da09402f8\",\"type\":\"SaveTool\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.025653612339014545,\"plot\":null},\"id\":\"eb545e25-fa46-453b-80c2-7fbe0129938a\",\"type\":\"Span\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4cb765ac-fd7b-47c5-85a8-9e6d8577dc23\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":null,\"text\":\"X delay time vs. correlation\"},\"id\":\"ba611945-637a-401b-9e58-54c71038a40d\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"7187ab36-50c3-43e0-ae09-660881986cf4\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c2669b3b-1e37-4bea-b7a4-7a21bc3f6fd8\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"fe08da15-ac3d-4359-8840-bc239746aaec\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"46e74c39-e227-4c07-beda-2da27cc0bc51\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"below\":[{\"id\":\"904a73bd-0dfb-4576-ab3a-2d3622200fa2\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"dcd3fcdb-3ef2-4981-b517-98bd6958cee2\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"904a73bd-0dfb-4576-ab3a-2d3622200fa2\",\"type\":\"LinearAxis\"},{\"id\":\"43188948-c58f-4920-9a2e-474c13395649\",\"type\":\"Grid\"},{\"id\":\"dcd3fcdb-3ef2-4981-b517-98bd6958cee2\",\"type\":\"LogAxis\"},{\"id\":\"cb296898-2489-43b7-b068-f6673359a521\",\"type\":\"Grid\"},{\"id\":\"fe08da15-ac3d-4359-8840-bc239746aaec\",\"type\":\"BoxAnnotation\"},{\"id\":\"85a25f89-0bc4-4f14-8835-52c7d949a9f0\",\"type\":\"GlyphRenderer\"},{\"id\":\"eb545e25-fa46-453b-80c2-7fbe0129938a\",\"type\":\"Span\"}],\"title\":{\"id\":\"ba611945-637a-401b-9e58-54c71038a40d\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"2c33650f-dde5-47aa-bf92-d214d4d231ca\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"f8c99b99-3aaf-4c4f-bae4-e4b200b893a3\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a4a36841-2f08-4dd1-8691-60781e519fa1\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"39923998-b424-4252-bfb8-5880a587c287\",\"type\":\"DataRange1d\"}},\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"35f8fdf4-179d-4309-97d1-da154d1e7ba5\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ef1437b6-342a-4fec-8814-04696f238376\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"7ad5f59a-1457-431c-a235-8dc3068d0bf5\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"85a25f89-0bc4-4f14-8835-52c7d949a9f0\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD2fOl7VINgP/Z86XtUg3A/cTveuf7EeD/2fOl7VIOAPzTc45oppIQ/cTveuf7EiD+umtjY0+WMP/Z86XtUg5A/laxmC7+Tkj803OOaKaSUP9ILYSqUtJY/cTveuf7EmD8Qa1tJadWaP66a2NjT5Zw/TcpVaD72nj/2fOl7VIOgP8UUqMOJi6E/laxmC7+Toj9kRCVT9JujPzTc45oppKQ/A3Si4l6spT/SC2EqlLSmP6KjH3LJvKc/cTveuf7EqD9A05wBNM2pPxBrW0lp1ao/3wIakZ7dqz+umtjY0+WsP34ylyAJ7q0/TcpVaD72rj8dYhSwc/6vP/Z86XtUg7A/3sjIH28HsT/FFKjDiYuxP61gh2ekD7I/laxmC7+Tsj98+EWv2RezP2REJVP0m7M/TJAE9w4gtD803OOaKaS0Pxsowz5EKLU/A3Si4l6stT/rv4GGeTC2P9ILYSqUtLY/uldAzq44tz+iox9yyby3P4nv/hXkQLg/cTveuf7EuD9Zh71dGUm5P0DTnAE0zbk/KB98pU5Ruj8Qa1tJadW6P/e2Ou2DWbs/3wIakZ7duz/HTvk0uWG8P66a2NjT5bw/lua3fO5pvT9+MpcgCe69P2Z+dsQjcr4/TcpVaD72vj81FjUMWXq/Px1iFLBz/r8/Atf5KUdBwD/2fOl7VIPAP+oi2c1hxcA/3sjIH28HwT/SbrhxfEnBP8UUqMOJi8E/ubqXFZfNwT+tYIdnpA/CP6EGd7mxUcI/laxmC7+Twj+JUlZdzNXCP3z4Ra/ZF8M/cJ41AedZwz9kRCVT9JvDP1jqFKUB3sM/TJAE9w4gxD9ANvRIHGLEPzTc45oppMQ/J4LT7DbmxD8bKMM+RCjFPw/OspBRasU/A3Si4l6sxT/3GZI0bO7FP+u/gYZ5MMY/3mVx2IZyxj/SC2EqlLTGP8axUHyh9sY/uldAzq44xz+u/S8gvHrHP6KjH3LJvMc/lUkPxNb+xz+J7/4V5EDIP32V7mfxgsg/cTveuf7EyD9l4c0LDAfJP1mHvV0ZSck/TS2tryaLyT9A05wBNM3JPzR5jFNBD8o/KB98pU5Ryj8cxWv3W5PKPxBrW0lp1co/BBFLm3YXyz/3tjrtg1nLP+tcKj+Rm8s/3wIakZ7dyz/TqAnjqx/MP8dO+TS5Ycw/u/TohsajzD+umtjY0+XMP6JAyCrhJ80/lua3fO5pzT+KjKfO+6vNP34ylyAJ7s0/ctiGchYwzj9mfnbEI3LOP1kkZhYxtM4/TcpVaD72zj9BcEW6SzjPPzUWNQxZes8/KbwkXma8zz8dYhSwc/7PPwgEAoFAINA/Atf5KUdB0D/8qfHSTWLQPw==\",\"dtype\":\"float64\",\"shape\":[128]},\"y\":{\"__ndarray__\":\"9ovylKDsxkDDwams3+wEQTBBcF+aNRRB5qZ99xwGHkEg8ecwCLgjQVC8Xrp2DihBnOeP07ABLEGJVLMXqogvQdp/ymS8SDFBlurY6+yEMkEisAklfHczQVlDjNxZJTRBRJj+HvmKNEE/hnjySJ80QezT0ZByajRBcW/oMHLvM0GqssXo5C4zQfIiudHoLDJBys2iQK7qMEE3Kg2r09UuQRFk1leRcytBLyhDPtu+J0EML7tL3cYjQZR9YwFGJh9BLKaguXlmFkFSTxX/6eUKQfKYtA7Lz/FAugOPyfb28UCm1qzlSoIKQWS7pN0PtRVBzs1jVTW4HUEcOVaVwJMiQaMWU6Gp8CVBcuoNn+PvKEGq4I8M7JUrQboRF6UZ2C1B/aQy8wigL0Fp9F7tuGwwQSGGX4XOyDBBdC7JXXPeMEFv9B1r9qcwQbOPz06MKzBBdFeE/uDfLkF/XzI5Q/UsQdhHaJSIoCpB165v0gvoJ0FwQjzZ38ckQVuA5qEhSiFBLrBVFisTG0GyHo5usEUTQclkE0C1pwZBhpH/jhzb6kA/7O/JDEPyQEw4ZW1j0AhBTKLE4p3+E0EPnE8smSobQbGr3d4Y6SBBHSG06oP1I0HIB+4oTaUmQYdf54/r3ShBeN+rUvamKkGPtCJSSP4rQaDBO0DZ1yxB2fF1tqshLUEF+9ut7e4sQeAhql0HTCxBRQEfoDc0K0Fv/f3xcZYpQXN8lUiMiidBmiSkDoIhJUG6451bv2giQcnOyEpYxh5Bcoydmh1CGEEDVRfbZ3IRQaUZqbUE6ARBILRxizSf6UAPC4eQyqTwQM37BsxUugZBsnUihYNhEkHUHAj4nDQZQWh4ADmLuh9BiXdCgHDjIkGiLuhRmpklQaK897qT+idBEiPGHlgFKkEdZwey870rQfiOH0CoCi1BTp/0wrPgLUEgcmFKV0kuQawh1KQOSy5BPLyhrG7aLUF0l9iiwewsQd/gtb2CjytBcSfO7+/LKUFe1ANbh6YnQcQX2m79HyVBrRSLtZpPIkHp/mrtQIAeQWJJ42ip0hdBg/l95YCbEEF2WvHuDR8CQbLYIVElotZAwlr8c7Mf+UACwOIFj8ALQZf0WAXsLRVBR5h8EOshHEHxVCSoVk4hQfg4m4mNWyRBgZRGFhEsJ0ExClxusZ8pQQHJmOOpqitBLM0KeqhOLUH5qYUScYsuQY3El+9YWy9BVUWjcZy8L0Eqi5gds7EvQXh19soaOS9BvDIjd7xOLkFHpxzKqvQsQVXwbvU7LytBfJrYmSsPKUHWArGJf5kmQUJHGQBPzyNBt9brzDy+IEF+KTdkbNoaQdO5KyxE2BNBPAmA6uIsCUHs5Irhnbr0QA==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"35f8fdf4-179d-4309-97d1-da154d1e7ba5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"ticker\":null},\"id\":\"e06e3a0b-6e1d-490e-95ca-14cfa50f8977\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"74d1f77e-d8b8-469d-99ea-aac764c0e3bf\",\"type\":\"PanTool\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"36587b15-4e5d-414e-89a2-e1459b078ff6\",\"type\":\"LogTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"fe08da15-ac3d-4359-8840-bc239746aaec\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"formatter\":{\"id\":\"e06e3a0b-6e1d-490e-95ca-14cfa50f8977\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"36587b15-4e5d-414e-89a2-e1459b078ff6\",\"type\":\"LogTicker\"}},\"id\":\"dcd3fcdb-3ef2-4981-b517-98bd6958cee2\",\"type\":\"LogAxis\"},{\"attributes\":{},\"id\":\"31c57079-a6e7-4622-b279-c7e2546d5766\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"21516cd6-2129-4c07-956a-b76f150406b4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7187ab36-50c3-43e0-ae09-660881986cf4\",\"type\":\"BasicTicker\"}},\"id\":\"43188948-c58f-4920-9a2e-474c13395649\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7ad5f59a-1457-431c-a235-8dc3068d0bf5\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"39923998-b424-4252-bfb8-5880a587c287\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"ef1437b6-342a-4fec-8814-04696f238376\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"a4a36841-2f08-4dd1-8691-60781e519fa1\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"21516cd6-2129-4c07-956a-b76f150406b4\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"9860de77-1c3e-4e82-87c8-748fdeb3e6c5\",\"elementid\":\"03491159-2834-4b9a-9c9d-cb77c72c4ef3\",\"modelid\":\"21516cd6-2129-4c07-956a-b76f150406b4\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"03491159-2834-4b9a-9c9d-cb77c72c4ef3\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Axis X: tau=12.8 samples (25.65 ms / -3.663)\n",
"\tgain=65.2 (beta=10.392), bias=-289.4\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"24e36dee-d4b3-49ed-92ac-d9280823d13a\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2c49ab9f-0aa4-41ba-93e6-1fc48868e349\",\"type\":\"HelpTool\"},{\"attributes\":{\"below\":[{\"id\":\"4a09c483-4ede-4e97-a204-3bf62cc9f595\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"1a609d09-1c85-4318-b993-a37bbc02fc97\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"4a09c483-4ede-4e97-a204-3bf62cc9f595\",\"type\":\"LinearAxis\"},{\"id\":\"2396318a-bff1-44f6-ad8b-eba38f7671c8\",\"type\":\"Grid\"},{\"id\":\"1a609d09-1c85-4318-b993-a37bbc02fc97\",\"type\":\"LinearAxis\"},{\"id\":\"f1c4f3f2-7ecc-43a1-b88c-3e0fb9b9f899\",\"type\":\"Grid\"},{\"id\":\"561f5724-5b41-4401-99f5-0ca9e3ba58aa\",\"type\":\"BoxAnnotation\"},{\"id\":\"efc79f82-3f4d-48cf-b835-6cd793a4ffa2\",\"type\":\"GlyphRenderer\"},{\"id\":\"9aec35b6-8679-4808-be72-5b8f5d640700\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"eb824a15-8ec5-40da-918e-5421abbeff76\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"24d1b1d7-c82c-4b2f-9c8c-f180f4ca3d29\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"351db091-2574-45b1-b072-5316c579e374\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"4a2f4b7a-e7ea-4e0a-9ca9-9c0b15d63e3a\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"f666302c-26f6-442e-ba6d-8dc7e572fc98\",\"type\":\"DataRange1d\"}},\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"a8a0be24-e32c-4e9f-90dc-d7459355712c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"bbf83b78-8400-43a0-b1f7-ad78ed2eb74c\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"ed275e61-99aa-4305-939d-f9af5bf7dc81\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"efc79f82-3f4d-48cf-b835-6cd793a4ffa2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"ba0d27cd-bb11-4744-bb62-95e407e95aab\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"4f1cd807-7604-4501-92e9-28b76d029960\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ba0d27cd-bb11-4744-bb62-95e407e95aab\",\"type\":\"BasicTicker\"}},\"id\":\"1a609d09-1c85-4318-b993-a37bbc02fc97\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"54f0ce42-be58-41de-8fd1-81d48c6735b0\",\"type\":\"BasicTicker\"}},\"id\":\"2396318a-bff1-44f6-ad8b-eba38f7671c8\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"24d1b1d7-c82c-4b2f-9c8c-f180f4ca3d29\",\"type\":\"ToolEvents\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4e879dd5-e6e3-4172-be59-e2a53e04f627\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ba0d27cd-bb11-4744-bb62-95e407e95aab\",\"type\":\"BasicTicker\"}},\"id\":\"f1c4f3f2-7ecc-43a1-b88c-3e0fb9b9f899\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"99a47e19-d912-445a-a125-ffa7812aea4a\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e38d996f-1252-478c-b466-8d822c5e0de8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"54f0ce42-be58-41de-8fd1-81d48c6735b0\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9065e28f-e036-464b-95e6-c0d6d058e454\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"561f5724-5b41-4401-99f5-0ca9e3ba58aa\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ce830453-56a9-41d9-b72e-1068524ead39\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"561f5724-5b41-4401-99f5-0ca9e3ba58aa\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8a57573e-a5ef-4168-bc18-540e38a8ee69\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bbf83b78-8400-43a0-b1f7-ad78ed2eb74c\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"3f764211-4645-4e82-8691-1651d33b83a8\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"54f0ce42-be58-41de-8fd1-81d48c6735b0\",\"type\":\"BasicTicker\"}},\"id\":\"4a09c483-4ede-4e97-a204-3bf62cc9f595\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":null,\"text\":\"X shifted to line up\"},\"id\":\"eb824a15-8ec5-40da-918e-5421abbeff76\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"f666302c-26f6-442e-ba6d-8dc7e572fc98\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"fbb0234e-43de-4851-932b-9b1a4456bb14\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null},\"id\":\"4a2f4b7a-e7ea-4e0a-9ca9-9c0b15d63e3a\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4f1cd807-7604-4501-92e9-28b76d029960\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"ed275e61-99aa-4305-939d-f9af5bf7dc81\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3f764211-4645-4e82-8691-1651d33b83a8\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"99a47e19-d912-445a-a125-ffa7812aea4a\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"8a57573e-a5ef-4168-bc18-540e38a8ee69\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4e879dd5-e6e3-4172-be59-e2a53e04f627\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"9aec35b6-8679-4808-be72-5b8f5d640700\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"54374df2-3d54-4976-8053-98651abc498e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"607eef8e-82ae-46de-9246-780958ae56cb\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"a8a0be24-e32c-4e9f-90dc-d7459355712c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"607eef8e-82ae-46de-9246-780958ae56cb\",\"type\":\"PanTool\"},{\"id\":\"e38d996f-1252-478c-b466-8d822c5e0de8\",\"type\":\"WheelZoomTool\"},{\"id\":\"ce830453-56a9-41d9-b72e-1068524ead39\",\"type\":\"BoxZoomTool\"},{\"id\":\"9065e28f-e036-464b-95e6-c0d6d058e454\",\"type\":\"SaveTool\"},{\"id\":\"fbb0234e-43de-4851-932b-9b1a4456bb14\",\"type\":\"ResetTool\"},{\"id\":\"2c49ab9f-0aa4-41ba-93e6-1fc48868e349\",\"type\":\"HelpTool\"}]},\"id\":\"351db091-2574-45b1-b072-5316c579e374\",\"type\":\"Toolbar\"}],\"root_ids\":[\"54374df2-3d54-4976-8053-98651abc498e\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"24e36dee-d4b3-49ed-92ac-d9280823d13a\",\"elementid\":\"c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0\",\"modelid\":\"54374df2-3d54-4976-8053-98651abc498e\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"c083c7fd-9cc5-4f9f-9d53-1a9eccad49c0\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"416862d8-d151-42ef-be59-8ca3f8d83786\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"416862d8-d151-42ef-be59-8ca3f8d83786\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"416862d8-d151-42ef-be59-8ca3f8d83786\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '416862d8-d151-42ef-be59-8ca3f8d83786' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"4f929ab6-388e-4ad3-83c4-492a6018565e\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null},\"id\":\"5da20871-191c-4865-940c-2e2dca663564\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c1034207-f4db-4fba-b65f-924aa2e84655\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4f16c944-4b19-490d-946c-e6602f79a964\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"6c061ba2-9a12-4116-8de2-df888feb4a59\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"6c061ba2-9a12-4116-8de2-df888feb4a59\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e2824202-b445-4df8-ba20-8c7a82f5ed16\",\"type\":\"BasicTicker\"}},\"id\":\"ce88be13-b296-4e35-909b-5e2d164189b9\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"e2824202-b445-4df8-ba20-8c7a82f5ed16\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"98a4daa5-b692-4fcd-ae41-d57166442e4d\",\"type\":\"PanTool\"},{\"id\":\"1ecf0609-bc04-4dd0-84f6-38560b75f0be\",\"type\":\"WheelZoomTool\"},{\"id\":\"99b0b851-7dd8-48ae-a8c0-4bc841289f76\",\"type\":\"BoxZoomTool\"},{\"id\":\"c1034207-f4db-4fba-b65f-924aa2e84655\",\"type\":\"SaveTool\"},{\"id\":\"2ca0366a-840d-49a7-8ecc-1a25a60ee2cb\",\"type\":\"ResetTool\"},{\"id\":\"d37db9a0-2f57-4c50-8ba7-f2815f5b80c9\",\"type\":\"HelpTool\"}]},\"id\":\"6b55ebf5-7e9d-419b-981a-5bda2122296f\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"ebc32ab3-0322-493b-b060-ece1999b39fa\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"42da2db8-e7c8-4c7b-a4f3-0de6fde5c295\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"98a4daa5-b692-4fcd-ae41-d57166442e4d\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"4d48e4bf-7dce-444c-85b2-bda778c0a4fa\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bb74fd51-4e92-4b8c-873f-acbd47e45917\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1ecf0609-bc04-4dd0-84f6-38560b75f0be\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2ca0366a-840d-49a7-8ecc-1a25a60ee2cb\",\"type\":\"ResetTool\"},{\"attributes\":{\"data_source\":{\"id\":\"ebc32ab3-0322-493b-b060-ece1999b39fa\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"bb74fd51-4e92-4b8c-873f-acbd47e45917\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4f16c944-4b19-490d-946c-e6602f79a964\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"483e1eb5-62b1-44de-9bb7-fb15d94d8432\",\"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},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"a9d38c22-f436-450a-90fe-f7a2a6cdcd60\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"a9d38c22-f436-450a-90fe-f7a2a6cdcd60\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"99b0b851-7dd8-48ae-a8c0-4bc841289f76\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"f9212818-047a-4c42-8f5c-b30afced7fc0\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"af916560-13e2-4a78-bde9-692554402575\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e2824202-b445-4df8-ba20-8c7a82f5ed16\",\"type\":\"BasicTicker\"}},\"id\":\"b8370a00-fa09-44d0-a93b-3f525a8494e8\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"667909b9-1b26-41b0-8eca-863dad112032\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"ce88be13-b296-4e35-909b-5e2d164189b9\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"667909b9-1b26-41b0-8eca-863dad112032\",\"type\":\"LinearAxis\"},{\"id\":\"d58f7073-17d4-4998-a616-b85f6f183125\",\"type\":\"Grid\"},{\"id\":\"ce88be13-b296-4e35-909b-5e2d164189b9\",\"type\":\"LinearAxis\"},{\"id\":\"b8370a00-fa09-44d0-a93b-3f525a8494e8\",\"type\":\"Grid\"},{\"id\":\"a9d38c22-f436-450a-90fe-f7a2a6cdcd60\",\"type\":\"BoxAnnotation\"},{\"id\":\"483e1eb5-62b1-44de-9bb7-fb15d94d8432\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"bf0a27b5-32e3-41c9-9a75-53774af74b2c\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"42da2db8-e7c8-4c7b-a4f3-0de6fde5c295\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"6b55ebf5-7e9d-419b-981a-5bda2122296f\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"f9212818-047a-4c42-8f5c-b30afced7fc0\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"5da20871-191c-4865-940c-2e2dca663564\",\"type\":\"DataRange1d\"}},\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d37db9a0-2f57-4c50-8ba7-f2815f5b80c9\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":null,\"text\":\"residual X\"},\"id\":\"bf0a27b5-32e3-41c9-9a75-53774af74b2c\",\"type\":\"Title\"},{\"attributes\":{\"formatter\":{\"id\":\"af916560-13e2-4a78-bde9-692554402575\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4d48e4bf-7dce-444c-85b2-bda778c0a4fa\",\"type\":\"BasicTicker\"}},\"id\":\"667909b9-1b26-41b0-8eca-863dad112032\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4d48e4bf-7dce-444c-85b2-bda778c0a4fa\",\"type\":\"BasicTicker\"}},\"id\":\"d58f7073-17d4-4998-a616-b85f6f183125\",\"type\":\"Grid\"}],\"root_ids\":[\"be60dab0-ec23-4ef2-a28c-313d163f5067\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"4f929ab6-388e-4ad3-83c4-492a6018565e\",\"elementid\":\"416862d8-d151-42ef-be59-8ca3f8d83786\",\"modelid\":\"be60dab0-ec23-4ef2-a28c-313d163f5067\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"416862d8-d151-42ef-be59-8ca3f8d83786\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"3e1f400e-6bff-4808-b021-04bc6d5d8028\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"269e1fea-4c29-4c35-b993-64f465cbaced\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"b4b6faec-b7ff-41f4-8dd7-d5e473892f1e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.024903478330079335,\"plot\":null},\"id\":\"3f4c2c14-205a-4de7-a817-ce872a207589\",\"type\":\"Span\"},{\"attributes\":{},\"id\":\"3ba3342d-867f-4060-9a84-f708eaf36bde\",\"type\":\"ToolEvents\"},{\"attributes\":{\"overlay\":{\"id\":\"cc1360e1-c6df-4341-b2a3-2550c6122915\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"252993ee-daba-4e5d-a87c-1805dbc10385\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2c667463-e2e3-4b1c-ac7a-1eac75fc2666\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"3d16383f-2c8e-4d77-ae50-2f65812287f5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"df4e21fb-5ab1-4b24-978b-838c68bdc39b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"b4b6faec-b7ff-41f4-8dd7-d5e473892f1e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2a3efbff-d1f3-4cf2-ac62-011cec965dee\",\"type\":\"BasicTicker\"}},\"id\":\"93ede6f8-e24f-45c9-92ea-7fab9865bb3a\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"931e1e7f-b83d-4ec7-9b9c-53926824fe77\",\"type\":\"LogTicker\"}},\"id\":\"6f594d99-e331-4a2c-9614-cccf37611060\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2a3efbff-d1f3-4cf2-ac62-011cec965dee\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"a39959cd-1042-4ef9-a50e-f3ec958a0462\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"931e1e7f-b83d-4ec7-9b9c-53926824fe77\",\"type\":\"LogTicker\"}},\"id\":\"2652d652-d591-4be1-af32-65ea821e80f6\",\"type\":\"LogAxis\"},{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2a3efbff-d1f3-4cf2-ac62-011cec965dee\",\"type\":\"BasicTicker\"}},\"id\":\"25032d5e-db4d-4925-ab17-5b6acf2d2170\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"038639b0-a26f-4fc5-b187-a70fd5725917\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bde9ad6d-3617-4bb8-88ad-9a9ef3420a27\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"cc1360e1-c6df-4341-b2a3-2550c6122915\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"46e170b4-82fb-4969-bc26-a00c362bb9bd\",\"type\":\"SaveTool\"},{\"attributes\":{\"below\":[{\"id\":\"93ede6f8-e24f-45c9-92ea-7fab9865bb3a\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"2652d652-d591-4be1-af32-65ea821e80f6\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"93ede6f8-e24f-45c9-92ea-7fab9865bb3a\",\"type\":\"LinearAxis\"},{\"id\":\"25032d5e-db4d-4925-ab17-5b6acf2d2170\",\"type\":\"Grid\"},{\"id\":\"2652d652-d591-4be1-af32-65ea821e80f6\",\"type\":\"LogAxis\"},{\"id\":\"6f594d99-e331-4a2c-9614-cccf37611060\",\"type\":\"Grid\"},{\"id\":\"cc1360e1-c6df-4341-b2a3-2550c6122915\",\"type\":\"BoxAnnotation\"},{\"id\":\"3fd844fc-85f4-4613-9bb6-477a4b9051ae\",\"type\":\"GlyphRenderer\"},{\"id\":\"3f4c2c14-205a-4de7-a817-ce872a207589\",\"type\":\"Span\"}],\"title\":{\"id\":\"705a04a2-b7ee-40fb-aa8b-5c63cd43a2ff\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"3ba3342d-867f-4060-9a84-f708eaf36bde\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"44406ddc-032d-4187-bbac-92fa525b54a6\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"df4e21fb-5ab1-4b24-978b-838c68bdc39b\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"3d16383f-2c8e-4d77-ae50-2f65812287f5\",\"type\":\"DataRange1d\"}},\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"931e1e7f-b83d-4ec7-9b9c-53926824fe77\",\"type\":\"LogTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"Y delay time vs. correlation\"},\"id\":\"705a04a2-b7ee-40fb-aa8b-5c63cd43a2ff\",\"type\":\"Title\"},{\"attributes\":{\"ticker\":null},\"id\":\"a39959cd-1042-4ef9-a50e-f3ec958a0462\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"34ed6d35-c28a-477f-9d88-659f9adbce62\",\"type\":\"PanTool\"},{\"id\":\"e2e879f1-2180-46f6-a0a7-fe3c2943920b\",\"type\":\"WheelZoomTool\"},{\"id\":\"252993ee-daba-4e5d-a87c-1805dbc10385\",\"type\":\"BoxZoomTool\"},{\"id\":\"46e170b4-82fb-4969-bc26-a00c362bb9bd\",\"type\":\"SaveTool\"},{\"id\":\"269e1fea-4c29-4c35-b993-64f465cbaced\",\"type\":\"ResetTool\"},{\"id\":\"038639b0-a26f-4fc5-b187-a70fd5725917\",\"type\":\"HelpTool\"}]},\"id\":\"44406ddc-032d-4187-bbac-92fa525b54a6\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD2fOl7VINgP/Z86XtUg3A/cTveuf7EeD/2fOl7VIOAPzTc45oppIQ/cTveuf7EiD+umtjY0+WMP/Z86XtUg5A/laxmC7+Tkj803OOaKaSUP9ILYSqUtJY/cTveuf7EmD8Qa1tJadWaP66a2NjT5Zw/TcpVaD72nj/2fOl7VIOgP8UUqMOJi6E/laxmC7+Toj9kRCVT9JujPzTc45oppKQ/A3Si4l6spT/SC2EqlLSmP6KjH3LJvKc/cTveuf7EqD9A05wBNM2pPxBrW0lp1ao/3wIakZ7dqz+umtjY0+WsP34ylyAJ7q0/TcpVaD72rj8dYhSwc/6vP/Z86XtUg7A/3sjIH28HsT/FFKjDiYuxP61gh2ekD7I/laxmC7+Tsj98+EWv2RezP2REJVP0m7M/TJAE9w4gtD803OOaKaS0Pxsowz5EKLU/A3Si4l6stT/rv4GGeTC2P9ILYSqUtLY/uldAzq44tz+iox9yyby3P4nv/hXkQLg/cTveuf7EuD9Zh71dGUm5P0DTnAE0zbk/KB98pU5Ruj8Qa1tJadW6P/e2Ou2DWbs/3wIakZ7duz/HTvk0uWG8P66a2NjT5bw/lua3fO5pvT9+MpcgCe69P2Z+dsQjcr4/TcpVaD72vj81FjUMWXq/Px1iFLBz/r8/Atf5KUdBwD/2fOl7VIPAP+oi2c1hxcA/3sjIH28HwT/SbrhxfEnBP8UUqMOJi8E/ubqXFZfNwT+tYIdnpA/CP6EGd7mxUcI/laxmC7+Twj+JUlZdzNXCP3z4Ra/ZF8M/cJ41AedZwz9kRCVT9JvDP1jqFKUB3sM/TJAE9w4gxD9ANvRIHGLEPzTc45oppMQ/J4LT7DbmxD8bKMM+RCjFPw/OspBRasU/A3Si4l6sxT/3GZI0bO7FP+u/gYZ5MMY/3mVx2IZyxj/SC2EqlLTGP8axUHyh9sY/uldAzq44xz+u/S8gvHrHP6KjH3LJvMc/lUkPxNb+xz+J7/4V5EDIP32V7mfxgsg/cTveuf7EyD9l4c0LDAfJP1mHvV0ZSck/TS2tryaLyT9A05wBNM3JPzR5jFNBD8o/KB98pU5Ryj8cxWv3W5PKPxBrW0lp1co/BBFLm3YXyz/3tjrtg1nLP+tcKj+Rm8s/3wIakZ7dyz/TqAnjqx/MP8dO+TS5Ycw/u/TohsajzD+umtjY0+XMP6JAyCrhJ80/lua3fO5pzT+KjKfO+6vNP34ylyAJ7s0/ctiGchYwzj9mfnbEI3LOP1kkZhYxtM4/TcpVaD72zj9BcEW6SzjPPzUWNQxZes8/KbwkXma8zz8dYhSwc/7PPwgEAoFAINA/Atf5KUdB0D/8qfHSTWLQPw==\",\"dtype\":\"float64\",\"shape\":[128]},\"y\":{\"__ndarray__\":\"9ksdIgzLBUGsBVsILT4NQf0JTVPqcRJB4lhynrlCFkG8h6w/QdsZQUdUmxSsIh1BgjJ/dQP9H0HkB0jPIzohQYkUbERQRSJBSOLbkVIeI0EOF+REYMEjQfKaCBWtLSRBP1Ozf/xeJEGyV8sPXlYkQeMyV9O/HiRBNmy+Xo62I0He9Rc5NiAjQYQTBLCuYCJBy9xJloF1IUEWsIrTHG0gQZATwdJgnR5Bhjn76HM3HEGQCAuyJpQZQdZ6kAfRvhZBMleboGPTE0E8MayeeOsQQf+e/z1L8wtBExXH+xXsBUFF2vYxguT/QN5J0NfgTvRAEwdtx6814kDoedUkq4S5QCq5b2SCTedAgrXaMV2o9EDFOh22NX39QHsEbq5Y2wJBg1l25vOOBkE4NQeZB7sJQfgDrvsETAxB8GlYg/07DkGvugsJv5sPQURlZ6mfMRBBrveUOcNXEEHnt5ENyWEQQbEry6vmLBBB7KDteodUD0Efu97LPvoNQcOixKvZYwxBUVivR/eHCkG0U1x4MHoIQdQqNY6jOAZBrFR4yx7/A0GZrZ8Eye0BQbAvtmIFxf9AwSeMs0bP+0AktPljkw34QM49ZVfcvvRA7tAzgNsl8kC3iBxz2Q3wQMrL0injlOxAsigPZC+a6kDRLHKmmj/qQHrjAQQSm+tAatHm4k0z7kCmdkfBQO3wQODyzkDVFPNASk4bZnGC9kBkkdLeuJb6QA1GXhHOrf5AvHILua14AUFjz1PSnpgDQeurhcb2kwVBlCiffSZ8B0E2v86sfT0JQZUU0aT60gpBSPL0AK8TDEGmC8/SUgMNQYPYQee8rg1BvgAd1CwSDkGoiPb0FTUOQVg8lAE/Jw5B7ZBbagLTDUEg/K0o5BsNQVP/FoT27AtBFhAfWrxaCkFpiDCMnIkIQZIyh3M5ZwZBcnmcW03XA0GY5Gdbl/MAQf5AvOcJxPtAyUNWa0w89UBEZ71NMebrQJJei6p7MNhATKvAgd9cwEC+AqM66UrkQMNnF2aQbPJARVTo1Anl+kCfKQlWgHgBQWpV3UcfswVBpqkJKQLnCUHXkfmzbtcNQSc8YmpKxxBBB3VrPj6AEkEA/2+nFgMUQW3YKoxrVRVBuQLEvFNuFkEmzdpvtUoXQRiYQ+su+RdBd+xCsy1rGEFeQeWj8YEYQZUkXWhPRhhBeR1GitnYF0GuBhqA0TQXQYADAsgTXBZB8pJ4JL5RFUE5WgN/eiAUQVbj1DDlsRJBjpeVYr4SEUGI5KfNW5sOQX3nOps1ogpB747ludNCBkGw+yyjhNcBQd0uZq7UIftA4zGUo1IM8kAPzQhsqdTgQNdP3VJLX7FAWJzdMpxd5EAKYn445lLzQA==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"c442694a-6949-4a7c-929e-4f88bf28bd7b\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e2e879f1-2180-46f6-a0a7-fe3c2943920b\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"34ed6d35-c28a-477f-9d88-659f9adbce62\",\"type\":\"PanTool\"},{\"attributes\":{\"data_source\":{\"id\":\"c442694a-6949-4a7c-929e-4f88bf28bd7b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"bde9ad6d-3617-4bb8-88ad-9a9ef3420a27\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"2c667463-e2e3-4b1c-ac7a-1eac75fc2666\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"3fd844fc-85f4-4613-9bb6-477a4b9051ae\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"dfa7c140-925b-482f-8b21-01e8dbc747f1\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"3e1f400e-6bff-4808-b021-04bc6d5d8028\",\"elementid\":\"b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe\",\"modelid\":\"dfa7c140-925b-482f-8b21-01e8dbc747f1\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"b5fc3d04-d99a-4a9b-b28d-c8a47adb6bbe\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Axis Y: tau=12.5 samples (24.90 ms / -3.693)\n",
"\tgain=61.7 (beta=10.338), bias=-836.9\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"2fef0a03-e222-4d03-aec6-25c44a65eca7\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"2fef0a03-e222-4d03-aec6-25c44a65eca7\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"2fef0a03-e222-4d03-aec6-25c44a65eca7\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2fef0a03-e222-4d03-aec6-25c44a65eca7' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"3d3cefa8-3c83-4019-b663-2e65eccf19da\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null},\"id\":\"2ac67a6b-d775-46ce-b563-0334afd13c74\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"45087cc7-b806-4de2-afe7-2ee29d10692e\",\"type\":\"BasicTicker\"}},\"id\":\"a36ea98a-4f26-4425-bd60-a7205b8d8e81\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3afa686f-d279-413a-9293-746cb8993846\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"bae98024-a12b-412b-b1eb-b6c0beb816fe\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"352a79be-c62a-4450-bc0a-5395e4fe5fb8\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"79f7659c-7f0f-4849-ae75-eac87c603916\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"06718983-4a5c-4f70-964e-04c198405ec4\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"840d0889-a84e-44b8-a1e1-964384a91549\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"68ee8e14-82ca-402b-a1db-2e855f94cc90\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"96e450de-7c55-4ba5-b472-5543b8433d92\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"037613a3-60f2-431c-afb6-40ae36e131ae\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4b9d6e65-2766-4e5c-9e5d-231658869418\",\"type\":\"BasicTicker\"}},\"id\":\"d6d0005a-f698-4679-b3d7-93e9883b9396\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"45087cc7-b806-4de2-afe7-2ee29d10692e\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7ad192f9-2c1f-4cdf-a135-4ed04c50aabb\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"037613a3-60f2-431c-afb6-40ae36e131ae\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"3a95885e-d716-4889-9a8b-0218eafc27e4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"dbf9a76f-4755-455a-a767-bc1babae3933\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"fff40ea0-60cd-42e4-9f18-13adfeb76e9d\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"2148018a-3bab-4838-ab4f-c390f824c3e0\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"7ad192f9-2c1f-4cdf-a135-4ed04c50aabb\",\"type\":\"PanTool\"},{\"id\":\"68ee8e14-82ca-402b-a1db-2e855f94cc90\",\"type\":\"WheelZoomTool\"},{\"id\":\"7b148aed-bf23-4552-ac00-c169388aafd3\",\"type\":\"BoxZoomTool\"},{\"id\":\"840d0889-a84e-44b8-a1e1-964384a91549\",\"type\":\"SaveTool\"},{\"id\":\"96e450de-7c55-4ba5-b472-5543b8433d92\",\"type\":\"ResetTool\"},{\"id\":\"b9ae7362-4fa9-45d5-8583-f705adfad1d7\",\"type\":\"HelpTool\"}]},\"id\":\"64a9aa45-932c-48d4-8a85-2ca12ba3e781\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"b2bf7ad7-59da-4372-aefb-6ddcaca4ffbe\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7b148aed-bf23-4552-ac00-c169388aafd3\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"dbf9a76f-4755-455a-a767-bc1babae3933\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b9ae7362-4fa9-45d5-8583-f705adfad1d7\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"3a95885e-d716-4889-9a8b-0218eafc27e4\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4b9d6e65-2766-4e5c-9e5d-231658869418\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"3afa686f-d279-413a-9293-746cb8993846\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"45087cc7-b806-4de2-afe7-2ee29d10692e\",\"type\":\"BasicTicker\"}},\"id\":\"7ef534fe-33e2-4a75-bdd1-e02930c5b2ac\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"06c1ff63-aca0-4522-86ce-34d646408c63\",\"type\":\"ToolEvents\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"fff40ea0-60cd-42e4-9f18-13adfeb76e9d\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"352a79be-c62a-4450-bc0a-5395e4fe5fb8\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"Y shifted to line up\"},\"id\":\"d1afc790-c340-4b06-b274-3f27245faac9\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"bae98024-a12b-412b-b1eb-b6c0beb816fe\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"f7004b53-81e6-4522-b023-5a8e1c1058a5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4b9d6e65-2766-4e5c-9e5d-231658869418\",\"type\":\"BasicTicker\"}},\"id\":\"4e0d6194-acf4-49e0-b684-3bbdc0bc6fa2\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"79f7659c-7f0f-4849-ae75-eac87c603916\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"7ef534fe-33e2-4a75-bdd1-e02930c5b2ac\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"d6d0005a-f698-4679-b3d7-93e9883b9396\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"7ef534fe-33e2-4a75-bdd1-e02930c5b2ac\",\"type\":\"LinearAxis\"},{\"id\":\"a36ea98a-4f26-4425-bd60-a7205b8d8e81\",\"type\":\"Grid\"},{\"id\":\"d6d0005a-f698-4679-b3d7-93e9883b9396\",\"type\":\"LinearAxis\"},{\"id\":\"4e0d6194-acf4-49e0-b684-3bbdc0bc6fa2\",\"type\":\"Grid\"},{\"id\":\"b2bf7ad7-59da-4372-aefb-6ddcaca4ffbe\",\"type\":\"BoxAnnotation\"},{\"id\":\"06718983-4a5c-4f70-964e-04c198405ec4\",\"type\":\"GlyphRenderer\"},{\"id\":\"2148018a-3bab-4838-ab4f-c390f824c3e0\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"d1afc790-c340-4b06-b274-3f27245faac9\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"06c1ff63-aca0-4522-86ce-34d646408c63\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"64a9aa45-932c-48d4-8a85-2ca12ba3e781\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"f7004b53-81e6-4522-b023-5a8e1c1058a5\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"2ac67a6b-d775-46ce-b563-0334afd13c74\",\"type\":\"DataRange1d\"}},\"id\":\"d5a62816-c277-43c5-95b9-e1afb4881239\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"b2bf7ad7-59da-4372-aefb-6ddcaca4ffbe\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"d5a62816-c277-43c5-95b9-e1afb4881239\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"3d3cefa8-3c83-4019-b663-2e65eccf19da\",\"elementid\":\"2fef0a03-e222-4d03-aec6-25c44a65eca7\",\"modelid\":\"d5a62816-c277-43c5-95b9-e1afb4881239\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"2fef0a03-e222-4d03-aec6-25c44a65eca7\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"204ce924-11f8-443a-8043-39a0cf9afd79\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"204ce924-11f8-443a-8043-39a0cf9afd79\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"204ce924-11f8-443a-8043-39a0cf9afd79\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '204ce924-11f8-443a-8043-39a0cf9afd79' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"749bd86a-2b40-4d32-abdd-94512ba257f4\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"22d6472f-6ca0-4217-ad49-dde216a7d875\",\"type\":\"ToolEvents\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"96989b93-b8a9-4f3d-b731-1b117a3ca9a9\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7fb552d9-45d5-40a3-8370-59af579878e9\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c6131cc5-31d2-47d8-8a42-7d064691c09c\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"266993ed-f1be-427f-b2d2-2e6bee57458d\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"01e153a3-5744-4357-9fec-f26dac195905\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4550555e-d0ad-422e-84ea-8d187379cc2c\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"c6131cc5-31d2-47d8-8a42-7d064691c09c\",\"type\":\"PanTool\"},{\"id\":\"7fb552d9-45d5-40a3-8370-59af579878e9\",\"type\":\"WheelZoomTool\"},{\"id\":\"b758ff99-c511-4c29-803d-88de1aaaff9b\",\"type\":\"BoxZoomTool\"},{\"id\":\"8937b8ca-0ec3-4b4d-bf36-b9222feb7086\",\"type\":\"SaveTool\"},{\"id\":\"e05b2012-7dd2-4631-b439-133433ff1e0b\",\"type\":\"ResetTool\"},{\"id\":\"52e5f6e0-471f-4880-8f65-dea27b68b217\",\"type\":\"HelpTool\"}]},\"id\":\"88ae2e06-0e96-4999-a38a-782f93369e92\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7534393d-6e73-45fa-8f30-3344e1e9ac22\",\"type\":\"BasicTicker\"}},\"id\":\"c7313215-725d-4413-8577-3072edd98d24\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Y\"},\"id\":\"501bacb9-e223-45cc-8127-827cd8204b64\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"8937b8ca-0ec3-4b4d-bf36-b9222feb7086\",\"type\":\"SaveTool\"},{\"attributes\":{\"below\":[{\"id\":\"0713c3c8-8060-499f-a94f-3243b2fecad8\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"25343f0d-312d-40a9-9658-349fe4345f9a\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"0713c3c8-8060-499f-a94f-3243b2fecad8\",\"type\":\"LinearAxis\"},{\"id\":\"1e7d9176-f6a2-46ee-81e8-f69e9fcbbaf8\",\"type\":\"Grid\"},{\"id\":\"25343f0d-312d-40a9-9658-349fe4345f9a\",\"type\":\"LinearAxis\"},{\"id\":\"c7313215-725d-4413-8577-3072edd98d24\",\"type\":\"Grid\"},{\"id\":\"96989b93-b8a9-4f3d-b731-1b117a3ca9a9\",\"type\":\"BoxAnnotation\"},{\"id\":\"8808bbe0-a3d6-4124-9b45-0ff3dafdb3bd\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"501bacb9-e223-45cc-8127-827cd8204b64\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"22d6472f-6ca0-4217-ad49-dde216a7d875\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"88ae2e06-0e96-4999-a38a-782f93369e92\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"18ebf6e9-3670-41de-9e2d-2708a1f2e1c6\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"266993ed-f1be-427f-b2d2-2e6bee57458d\",\"type\":\"DataRange1d\"}},\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"7534393d-6e73-45fa-8f30-3344e1e9ac22\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"f5561f4f-f062-4327-8a23-a4ee351eac02\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"01e153a3-5744-4357-9fec-f26dac195905\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4550555e-d0ad-422e-84ea-8d187379cc2c\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8808bbe0-a3d6-4124-9b45-0ff3dafdb3bd\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"45483a53-dedf-4eb7-b477-91de91e29bb7\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"f5561f4f-f062-4327-8a23-a4ee351eac02\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e05b2012-7dd2-4631-b439-133433ff1e0b\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"52e5f6e0-471f-4880-8f65-dea27b68b217\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"96989b93-b8a9-4f3d-b731-1b117a3ca9a9\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b758ff99-c511-4c29-803d-88de1aaaff9b\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"59fdfa56-2cd3-4e6c-a1a5-9ca914e98229\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"18ebf6e9-3670-41de-9e2d-2708a1f2e1c6\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"59fdfa56-2cd3-4e6c-a1a5-9ca914e98229\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"45483a53-dedf-4eb7-b477-91de91e29bb7\",\"type\":\"BasicTicker\"}},\"id\":\"0713c3c8-8060-499f-a94f-3243b2fecad8\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"c7454ef2-aecf-4c53-9c2e-6b6aa3007617\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"45483a53-dedf-4eb7-b477-91de91e29bb7\",\"type\":\"BasicTicker\"}},\"id\":\"1e7d9176-f6a2-46ee-81e8-f69e9fcbbaf8\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"c7454ef2-aecf-4c53-9c2e-6b6aa3007617\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7534393d-6e73-45fa-8f30-3344e1e9ac22\",\"type\":\"BasicTicker\"}},\"id\":\"25343f0d-312d-40a9-9658-349fe4345f9a\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"749bd86a-2b40-4d32-abdd-94512ba257f4\",\"elementid\":\"204ce924-11f8-443a-8043-39a0cf9afd79\",\"modelid\":\"89806e18-a31d-480e-802a-5a3fbcc7aaa4\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"204ce924-11f8-443a-8043-39a0cf9afd79\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"93e8be63-124b-42ff-a316-9e5f399c5299\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"93e8be63-124b-42ff-a316-9e5f399c5299\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"93e8be63-124b-42ff-a316-9e5f399c5299\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '93e8be63-124b-42ff-a316-9e5f399c5299' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"771d66f7-43fd-4019-be94-a83661cc1217\":{\"roots\":{\"references\":[{\"attributes\":{\"overlay\":{\"id\":\"dd49c439-56ee-439f-92a3-604cef92bd55\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e52a3b2c-b62e-4872-acc2-8e1e6c75a635\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"cecea7ab-2ca8-4afc-b755-5d4d3adfc747\",\"type\":\"ResetTool\"},{\"attributes\":{\"below\":[{\"id\":\"7ec7300a-b580-479f-9746-69b09d8df518\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"7ca28d2f-fca0-4462-a189-632753b9be56\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"7ec7300a-b580-479f-9746-69b09d8df518\",\"type\":\"LinearAxis\"},{\"id\":\"846a19cf-817f-46ba-8537-e8538916bb1b\",\"type\":\"Grid\"},{\"id\":\"7ca28d2f-fca0-4462-a189-632753b9be56\",\"type\":\"LogAxis\"},{\"id\":\"5308bcd1-ac0b-4a31-8659-9652afae506b\",\"type\":\"Grid\"},{\"id\":\"dd49c439-56ee-439f-92a3-604cef92bd55\",\"type\":\"BoxAnnotation\"},{\"id\":\"439a0a65-4e2c-48e1-ad33-4be6ee5b0c7a\",\"type\":\"GlyphRenderer\"},{\"id\":\"2748497a-4d76-4e1d-90a0-5264c5f35aa9\",\"type\":\"Span\"}],\"title\":{\"id\":\"7aa95a50-3dd2-4a13-bc0f-9117b04f44f2\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"7e6ab38b-da28-4d5a-a2bf-55da734eef53\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"0380c805-80fb-4435-b459-2c11d80c9544\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"744bc672-a291-4881-b6a3-d88022f701b7\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"750d5dd0-5f06-473a-ac53-b80a61579e38\",\"type\":\"DataRange1d\"}},\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"1305157a-a32b-4a45-a5db-44eaabac5b10\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"eb1ca72d-7353-40b3-82e7-8fbb3332c4db\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"cdc84674-c7bf-40ef-b103-8cd270912f0f\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"439a0a65-4e2c-48e1-ad33-4be6ee5b0c7a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ad7e1b28-61e2-4034-ad05-79dee80107c2\",\"type\":\"BasicTicker\"}},\"id\":\"846a19cf-817f-46ba-8537-e8538916bb1b\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD2fOl7VINgP/Z86XtUg3A/cTveuf7EeD/2fOl7VIOAPzTc45oppIQ/cTveuf7EiD+umtjY0+WMP/Z86XtUg5A/laxmC7+Tkj803OOaKaSUP9ILYSqUtJY/cTveuf7EmD8Qa1tJadWaP66a2NjT5Zw/TcpVaD72nj/2fOl7VIOgP8UUqMOJi6E/laxmC7+Toj9kRCVT9JujPzTc45oppKQ/A3Si4l6spT/SC2EqlLSmP6KjH3LJvKc/cTveuf7EqD9A05wBNM2pPxBrW0lp1ao/3wIakZ7dqz+umtjY0+WsP34ylyAJ7q0/TcpVaD72rj8dYhSwc/6vP/Z86XtUg7A/3sjIH28HsT/FFKjDiYuxP61gh2ekD7I/laxmC7+Tsj98+EWv2RezP2REJVP0m7M/TJAE9w4gtD803OOaKaS0Pxsowz5EKLU/A3Si4l6stT/rv4GGeTC2P9ILYSqUtLY/uldAzq44tz+iox9yyby3P4nv/hXkQLg/cTveuf7EuD9Zh71dGUm5P0DTnAE0zbk/KB98pU5Ruj8Qa1tJadW6P/e2Ou2DWbs/3wIakZ7duz/HTvk0uWG8P66a2NjT5bw/lua3fO5pvT9+MpcgCe69P2Z+dsQjcr4/TcpVaD72vj81FjUMWXq/Px1iFLBz/r8/Atf5KUdBwD/2fOl7VIPAP+oi2c1hxcA/3sjIH28HwT/SbrhxfEnBP8UUqMOJi8E/ubqXFZfNwT+tYIdnpA/CP6EGd7mxUcI/laxmC7+Twj+JUlZdzNXCP3z4Ra/ZF8M/cJ41AedZwz9kRCVT9JvDP1jqFKUB3sM/TJAE9w4gxD9ANvRIHGLEPzTc45oppMQ/J4LT7DbmxD8bKMM+RCjFPw/OspBRasU/A3Si4l6sxT/3GZI0bO7FP+u/gYZ5MMY/3mVx2IZyxj/SC2EqlLTGP8axUHyh9sY/uldAzq44xz+u/S8gvHrHP6KjH3LJvMc/lUkPxNb+xz+J7/4V5EDIP32V7mfxgsg/cTveuf7EyD9l4c0LDAfJP1mHvV0ZSck/TS2tryaLyT9A05wBNM3JPzR5jFNBD8o/KB98pU5Ryj8cxWv3W5PKPxBrW0lp1co/BBFLm3YXyz/3tjrtg1nLP+tcKj+Rm8s/3wIakZ7dyz/TqAnjqx/MP8dO+TS5Ycw/u/TohsajzD+umtjY0+XMP6JAyCrhJ80/lua3fO5pzT+KjKfO+6vNP34ylyAJ7s0/ctiGchYwzj9mfnbEI3LOP1kkZhYxtM4/TcpVaD72zj9BcEW6SzjPPzUWNQxZes8/KbwkXma8zz8dYhSwc/7PPwgEAoFAINA/Atf5KUdB0D/8qfHSTWLQPw==\",\"dtype\":\"float64\",\"shape\":[128]},\"y\":{\"__ndarray__\":\"fcSEp/YVGEE37oOG4BAdQUYD2e9R0iBB6KxlJB3GIUFv6tW98sEgQffBExVcox1B0d46PhqbGEG6uyY5fNMTQZyzDXyY1Q5Bz15RRfTiBUFu+s9z+hb9QOD5i1SgkvFA7VR2yVn+5EBT9IFgEynQQI5lEBphmr1A6gQlcKv23EAQbpAGFoXlQPQTsyQ9y+pAvcRMGC2Z60Cpp/DkmzvsQOFyiQjHUe1Al76Qxfpi8EB0w/JK42jyQM+50RdFgfJAR5zJLDsQ8kCiO2LJIM/xQEyODTpcjPFAB0+JPGTa8ECTqL2E0bLxQJGw6bk41fJAwamIoPr58kC0Gawttzf1QLuJxGEDePdAL/Wwg/4690ClDsmXZdD2QGgwFm6m3fdAQsgw+I3c9kCwUb03pT71QLpNYpkH0PFApbjBa9Ej8EAJGKjqN2DwQFWHt7T1gvBA7+FehhOO8UAOhBFM2q3yQPCVWu1+XvFAu3rfw5qk8ECtKw2gEZ3wQLGblu9oIO9AT4UT0cVY7kB4J/OreOjvQGyXMa/t9vFA9Z8HWL+/8UDYD+JgpmnxQLB7S8H6mPJAGzzrYYtU9EBsPaJOfJP3QNC6Od/vWflAf3U1mD/x/kAq18Elt0IDQXsmEG7/XQZBHRAaha+/CUFoLHX8jFAOQWBy2kV4qxFBnohlK7uRFEEcgkOBCDAYQawKaySDxhxBEQ/czVaaIEEngbabhZIhQZqHAn5bmiBB6Zk2VqpnHUE1pcAzdWsYQeP006X3qRNBLOYHWKJ7DkGRUYlU25kFQcvnawN+p/xADIdyRVUW8UD6/23q197jQPRKXOHWystAlMrDOKu/wkBMwSdGyIXeQCoQoxifH+ZAjA2DvPCD60CFjjwUFj/sQPmtwDPicuxAxLUrz4tB7UCgcaQgRhnwQLy4v+nS2PFAJ/J1w9Dk8UDMmcXAyIHxQMXzq1ZvQPFA9GMB/KHw8ED3Wk5sxFXwQDFi9Os7VPFAIuCWFClu8kA9TaNv4V7yQAkbOUYgmvRAiBL4fln/9kBiCiurPdL2QBQ8Ajo8ffZAngdtITyL90D30v8xZHr2QMlgAy8LpvRAWf9uKR8K8UAX0eGpgYzuQJ20npGh+e5A0oTV92aA70Bis3AZkfzwQMGnbAgfZPJAyxM6O81i8UAxUafnbtfwQI1vx+7zAvFApq17DGsk8EBnuZs+n2fvQDCzsN31XPBAajXmnel28kDM+vGw3VryQMEsm3m3APJAxfI82AMg80CFqKlgRKj0QJAg9FVtxfdA6lZ3CS2/+UAPSx6bD4X/QMJdJ4J3nQNBiAU0GJHEBkHyDCog/S4KQWAnuC7mwA5BBBp0SILbEUFM15JzT7sUQQ==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"1305157a-a32b-4a45-a5db-44eaabac5b10\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e23b0150-2ee0-4161-a072-ae460b2ad78d\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"744bc672-a291-4881-b6a3-d88022f701b7\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"a9113ab7-7ab2-452f-8dc6-42be3ccb4d13\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4f10a8d1-0e34-47ea-a367-89e037d9ddd6\",\"type\":\"LogTicker\"}},\"id\":\"7ca28d2f-fca0-4462-a189-632753b9be56\",\"type\":\"LogAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"e23b0150-2ee0-4161-a072-ae460b2ad78d\",\"type\":\"PanTool\"},{\"id\":\"5bc4354d-70ab-47e8-ae09-5779ff31f472\",\"type\":\"WheelZoomTool\"},{\"id\":\"e52a3b2c-b62e-4872-acc2-8e1e6c75a635\",\"type\":\"BoxZoomTool\"},{\"id\":\"8a3793e2-23e6-49ff-b246-c32551cc7881\",\"type\":\"SaveTool\"},{\"id\":\"cecea7ab-2ca8-4afc-b755-5d4d3adfc747\",\"type\":\"ResetTool\"},{\"id\":\"76f13f0b-7fc5-4e3f-ad88-86a7b5303dc3\",\"type\":\"HelpTool\"}]},\"id\":\"0380c805-80fb-4435-b459-2c11d80c9544\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"4f10a8d1-0e34-47ea-a367-89e037d9ddd6\",\"type\":\"LogTicker\"}},\"id\":\"5308bcd1-ac0b-4a31-8659-9652afae506b\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cdc84674-c7bf-40ef-b103-8cd270912f0f\",\"type\":\"Line\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"4f10a8d1-0e34-47ea-a367-89e037d9ddd6\",\"type\":\"LogTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"Z delay time vs. correlation\"},\"id\":\"7aa95a50-3dd2-4a13-bc0f-9117b04f44f2\",\"type\":\"Title\"},{\"attributes\":{\"ticker\":null},\"id\":\"a9113ab7-7ab2-452f-8dc6-42be3ccb4d13\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"750d5dd0-5f06-473a-ac53-b80a61579e38\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"7e6ab38b-da28-4d5a-a2bf-55da734eef53\",\"type\":\"ToolEvents\"},{\"attributes\":{\"formatter\":{\"id\":\"181ce279-d84f-4486-a438-032b63a0445e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ad7e1b28-61e2-4034-ad05-79dee80107c2\",\"type\":\"BasicTicker\"}},\"id\":\"7ec7300a-b580-479f-9746-69b09d8df518\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"eb1ca72d-7353-40b3-82e7-8fbb3332c4db\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5bc4354d-70ab-47e8-ae09-5779ff31f472\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"dd49c439-56ee-439f-92a3-604cef92bd55\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"ad7e1b28-61e2-4034-ad05-79dee80107c2\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"76f13f0b-7fc5-4e3f-ad88-86a7b5303dc3\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"181ce279-d84f-4486-a438-032b63a0445e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"8a3793e2-23e6-49ff-b246-c32551cc7881\",\"type\":\"SaveTool\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.006077141122200576,\"plot\":null},\"id\":\"2748497a-4d76-4e1d-90a0-5264c5f35aa9\",\"type\":\"Span\"}],\"root_ids\":[\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"771d66f7-43fd-4019-be94-a83661cc1217\",\"elementid\":\"93e8be63-124b-42ff-a316-9e5f399c5299\",\"modelid\":\"b8912b5e-7ef0-433e-92f5-076c1d7a9df0\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"93e8be63-124b-42ff-a316-9e5f399c5299\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Axis Z: tau=3.0 samples (6.08 ms / -5.103)\n",
"\tgain=35.9 (beta=9.796), bias=-251.4\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"0be3cf6a-974b-404b-bcbf-c266dd93f17b\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"0be3cf6a-974b-404b-bcbf-c266dd93f17b\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"0be3cf6a-974b-404b-bcbf-c266dd93f17b\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '0be3cf6a-974b-404b-bcbf-c266dd93f17b' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"06b7bd05-b85a-4883-a157-24262c9f860d\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"0df767af-d65e-4e03-b8a1-ead5a32af05b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"b10c5fc4-c367-4e0f-bfb7-f66831efbeca\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ef287ce7-cbb5-499d-96af-297872d10c7a\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"a9d22522-b1ca-48a4-9137-c42946c16e4d\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e2731cd8-5813-485c-99f5-89a6d69ab679\",\"type\":\"SaveTool\"},{\"attributes\":{\"formatter\":{\"id\":\"0df767af-d65e-4e03-b8a1-ead5a32af05b\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9f64f52e-8e7c-40c1-a8e0-befaae86d696\",\"type\":\"BasicTicker\"}},\"id\":\"82c08c52-dd61-4d20-8f94-01c1d92427e4\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f29c8233-05e3-486d-95a0-a1794bc1f2fe\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"ff1182c6-6433-4af8-99be-3cd9fc28b78f\",\"type\":\"DataRange1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"88effed3-20bc-469b-826b-20bb2405216c\",\"type\":\"PanTool\"},{\"id\":\"1848da70-8f8e-45e7-b6d0-2affe069c9d9\",\"type\":\"WheelZoomTool\"},{\"id\":\"720fad81-0fe9-4ac1-ac9e-080677b20947\",\"type\":\"BoxZoomTool\"},{\"id\":\"e2731cd8-5813-485c-99f5-89a6d69ab679\",\"type\":\"SaveTool\"},{\"id\":\"ef287ce7-cbb5-499d-96af-297872d10c7a\",\"type\":\"ResetTool\"},{\"id\":\"4b9b4557-d2ac-4d51-8642-4be308dec8de\",\"type\":\"HelpTool\"}]},\"id\":\"3cc041ae-b94c-478d-8a8d-1923eeff2bff\",\"type\":\"Toolbar\"},{\"attributes\":{\"formatter\":{\"id\":\"14130193-a8ad-4095-93ba-cb7cca5febd7\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"454efedf-d443-402f-8a59-8289d4ed6f5e\",\"type\":\"BasicTicker\"}},\"id\":\"39bac147-021c-458a-9c91-aa64e9e3b88e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"88effed3-20bc-469b-826b-20bb2405216c\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"14130193-a8ad-4095-93ba-cb7cca5febd7\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9f64f52e-8e7c-40c1-a8e0-befaae86d696\",\"type\":\"BasicTicker\"}},\"id\":\"0a630f4a-699b-4684-b7de-c928e208d10b\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"e4627a43-4dbb-45c7-a9c5-04e752385216\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"500324f7-41f0-4356-b0a9-a5d8fd862143\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"Z shifted to line up\"},\"id\":\"777f0f16-7d85-4a34-a5bf-9bf9d6ad2406\",\"type\":\"Title\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"454efedf-d443-402f-8a59-8289d4ed6f5e\",\"type\":\"BasicTicker\"}},\"id\":\"4e3144c5-8051-43cd-a1f5-7d8c9557695c\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2ca2525d-6284-407d-b58f-0581571b09f3\",\"type\":\"ToolEvents\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f0070e03-c19d-461a-b8de-0b5025ad367e\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"a9d22522-b1ca-48a4-9137-c42946c16e4d\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"720fad81-0fe9-4ac1-ac9e-080677b20947\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"9f64f52e-8e7c-40c1-a8e0-befaae86d696\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"b10c5fc4-c367-4e0f-bfb7-f66831efbeca\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"4dd31add-cb64-46a3-8d34-8fcc412ec82e\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"f29c8233-05e3-486d-95a0-a1794bc1f2fe\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"a4ce1cab-d749-4918-acd4-d57a103b3909\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1848da70-8f8e-45e7-b6d0-2affe069c9d9\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"below\":[{\"id\":\"82c08c52-dd61-4d20-8f94-01c1d92427e4\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"39bac147-021c-458a-9c91-aa64e9e3b88e\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"82c08c52-dd61-4d20-8f94-01c1d92427e4\",\"type\":\"LinearAxis\"},{\"id\":\"0a630f4a-699b-4684-b7de-c928e208d10b\",\"type\":\"Grid\"},{\"id\":\"39bac147-021c-458a-9c91-aa64e9e3b88e\",\"type\":\"LinearAxis\"},{\"id\":\"4e3144c5-8051-43cd-a1f5-7d8c9557695c\",\"type\":\"Grid\"},{\"id\":\"a9d22522-b1ca-48a4-9137-c42946c16e4d\",\"type\":\"BoxAnnotation\"},{\"id\":\"58600bcf-005e-4946-b485-e3d9c28c3926\",\"type\":\"GlyphRenderer\"},{\"id\":\"a4ce1cab-d749-4918-acd4-d57a103b3909\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"777f0f16-7d85-4a34-a5bf-9bf9d6ad2406\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"2ca2525d-6284-407d-b58f-0581571b09f3\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"3cc041ae-b94c-478d-8a8d-1923eeff2bff\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"666e57e9-c069-42bc-8244-3bd571b79891\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"ff1182c6-6433-4af8-99be-3cd9fc28b78f\",\"type\":\"DataRange1d\"}},\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4dd31add-cb64-46a3-8d34-8fcc412ec82e\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4b9b4557-d2ac-4d51-8642-4be308dec8de\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null},\"id\":\"666e57e9-c069-42bc-8244-3bd571b79891\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"e4627a43-4dbb-45c7-a9c5-04e752385216\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f0070e03-c19d-461a-b8de-0b5025ad367e\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"500324f7-41f0-4356-b0a9-a5d8fd862143\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"58600bcf-005e-4946-b485-e3d9c28c3926\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"454efedf-d443-402f-8a59-8289d4ed6f5e\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"06b7bd05-b85a-4883-a157-24262c9f860d\",\"elementid\":\"0be3cf6a-974b-404b-bcbf-c266dd93f17b\",\"modelid\":\"5e2ba31c-7336-4471-a47f-e7b5e71f7435\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"0be3cf6a-974b-404b-bcbf-c266dd93f17b\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"e88d7eb2-24c2-4b53-b929-6a8b7a82572f\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._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",
" if (window.Bokeh !== undefined) {\n",
" document.getElementById(\"e88d7eb2-24c2-4b53-b929-6a8b7a82572f\").textContent = \"BokehJS successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"e88d7eb2-24c2-4b53-b929-6a8b7a82572f\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e88d7eb2-24c2-4b53-b929-6a8b7a82572f' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"fc289b82-ea68-43c0-be49-d2cde5a351ba\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD8qfHSTWJgP/yp8dJNYnA/+n5qvHSTeD/8qfHSTWKAP3sUrkfheoQ/+n5qvHSTiD956SYxCKyMP/yp8dJNYpA/PN9PjZdukj97FK5H4XqUP7pJDAIrh5Y/+n5qvHSTmD86tMh2vp+aP3npJjEIrJw/uB6F61G4nj/8qfHSTWKgP5zEILByaKE/PN9PjZduoj/b+X5qvHSjP3sUrkfheqQ/Gy/dJAaBpT+6SQwCK4emP1pkO99Pjac/+n5qvHSTqD+amZmZmZmpPzq0yHa+n6o/2c73U+Olqz956SYxCKysPxkEVg4tsq0/uB6F61G4rj9YObTIdr6vP/yp8dJNYrA/TDeJQWDlsD+cxCCwcmixP+xRuB6F67E/PN9PjZdusj+LbOf7qfGyP9v5fmq8dLM/K4cW2c73sz97FK5H4Xq0P8uhRbbz/bQ/Gy/dJAaBtT9rvHSTGAS2P7pJDAIrh7Y/CtejcD0Ktz9aZDvfT423P6rx0k1iELg/+n5qvHSTuD9KDAIrhxa5P5qZmZmZmbk/6iYxCKwcuj86tMh2vp+6P4lBYOXQIrs/2c73U+Oluz8pXI/C9Si8P3npJjEIrLw/yXa+nxovvT8ZBFYOLbK9P2mR7Xw/Nb4/uB6F61G4vj8IrBxaZDu/P1g5tMh2vr8/VOOlm8QgwD/8qfHSTWLAP6RwPQrXo8A/TDeJQWDlwD/0/dR46SbBP5zEILByaME/RIts5/upwT/sUbgehevBP5QYBFYOLcI/PN9PjZduwj/jpZvEILDCP4ts5/up8cI/MzMzMzMzwz/b+X5qvHTDP4PAyqFFtsM/K4cW2c73wz/TTWIQWDnEP3sUrkfhesQ/I9v5fmq8xD/LoUW28/3EP3Noke18P8U/Gy/dJAaBxT/D9Shcj8LFP2u8dJMYBMY/E4PAyqFFxj+6SQwCK4fGP2IQWDm0yMY/CtejcD0Kxz+yne+nxkvHP1pkO99Pjcc/AiuHFtnOxz+q8dJNYhDIP1K4HoXrUcg/+n5qvHSTyD+iRbbz/dTIP0oMAiuHFsk/8tJNYhBYyT+amZmZmZnJP0Jg5dAi28k/6iYxCKwcyj+S7Xw/NV7KPzq0yHa+n8o/4XoUrkfhyj+JQWDl0CLLPzEIrBxaZMs/2c73U+Olyz+BlUOLbOfLPylcj8L1KMw/0SLb+X5qzD956SYxCKzMPyGwcmiR7cw/yXa+nxovzT9xPQrXo3DNPxkEVg4tss0/wcqhRbbzzT9pke18PzXOPxFYObTIds4/uB6F61G4zj9g5dAi2/nOPwisHFpkO88/sHJoke18zz9YObTIdr7PPwAAAAAAANA/VOOlm8Qg0D+oxks3iUHQP/yp8dJNYtA/UI2XbhKD0D+kcD0K16PQP/hT46WbxNA/TDeJQWDl0D+gGi/dJAbRP/T91HjpJtE/SOF6FK5H0T+cxCCwcmjRP/Cnxks3idE/RIts5/up0T+YbhKDwMrRP+xRuB6F69E/QDVeukkM0j+UGARWDi3SP+j7qfHSTdI/PN9PjZdu0j+PwvUoXI/SP+Olm8QgsNI/N4lBYOXQ0j+LbOf7qfHSP99PjZduEtM/MzMzMzMz0z+HFtnO91PTP9v5fmq8dNM/L90kBoGV0z+DwMqhRbbTP9ejcD0K19M/K4cW2c730z9/arx0kxjUP9NNYhBYOdQ/JzEIrBxa1D97FK5H4XrUP8/3U+Olm9Q/I9v5fmq81D93vp8aL93UP8uhRbbz/dQ/H4XrUbge1T9zaJHtfD/VP8dLN4lBYNU/Gy/dJAaB1T9vEoPAyqHVP8P1KFyPwtU/F9nO91Pj1T9rvHSTGATWP7+fGi/dJNY/E4PAyqFF1j9nZmZmZmbWP7pJDAIrh9Y/Di2yne+n1j9iEFg5tMjWP7bz/dR46dY/CtejcD0K1z9eukkMAivXP7Kd76fGS9c/BoGVQ4ts1z9aZDvfT43XP65H4XoUrtc/AiuHFtnO1z9WDi2yne/XP6rx0k1iENg//tR46SYx2D9SuB6F61HYP6abxCCwctg/+n5qvHST2D9OYhBYObTYP6JFtvP91Ng/9ihcj8L12D9KDAIrhxbZP57vp8ZLN9k/8tJNYhBY2T9GtvP91HjZP5qZmZmZmdk/7nw/NV662T9CYOXQItvZP5ZDi2zn+9k/6iYxCKwc2j8+CtejcD3aP5LtfD81Xto/5tAi2/l+2j86tMh2vp/aP42XbhKDwNo/4XoUrkfh2j81XrpJDALbP4lBYOXQIts/3SQGgZVD2z8xCKwcWmTbP4XrUbgehds/2c73U+Ol2z8tsp3vp8bbP4GVQ4ts59s/1XjpJjEI3D8pXI/C9SjcP30/NV66Sdw/0SLb+X5q3D8lBoGVQ4vcP3npJjEIrNw/zczMzMzM3D8hsHJoke3cP3WTGARWDt0/yXa+nxov3T8dWmQ730/dP3E9CtejcN0/xSCwcmiR3T8ZBFYOLbLdP23n+6nx0t0/wcqhRbbz3T8VrkfhehTeP2mR7Xw/Nd4/vXSTGARW3j8RWDm0yHbeP2U730+Nl94/uB6F61G43j8MAiuHFtneP2Dl0CLb+d4/tMh2vp8a3z8IrBxaZDvfP1yPwvUoXN8/sHJoke183z8EVg4tsp3fP1g5tMh2vt8/rBxaZDvf3z8AAAAAAADgP6rx0k1iEOA/VOOlm8Qg4D/+1HjpJjHgP6jGSzeJQeA/UrgehetR4D8=\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"efdb6d63-3267-49ca-87a2-868e1c4e3707\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"efdb6d63-3267-49ca-87a2-868e1c4e3707\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"eb3f54c7-9357-4921-aa80-0ed454331276\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"a5a2ffb9-fbac-4fc0-adfa-86bbd46e6c5a\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"2c3313d1-0977-45e0-849b-fa635aad9946\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a5a2ffb9-fbac-4fc0-adfa-86bbd46e6c5a\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"1985b1b8-db40-498c-b609-ba1c44b38ddd\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"06656efc-b536-4432-abb5-d5c5a8d6de5d\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1985b1b8-db40-498c-b609-ba1c44b38ddd\",\"type\":\"LinearAxis\"},{\"id\":\"97065923-628c-459d-a4a5-988d10578d58\",\"type\":\"Grid\"},{\"id\":\"06656efc-b536-4432-abb5-d5c5a8d6de5d\",\"type\":\"LinearAxis\"},{\"id\":\"38df456c-ed1b-420c-9dcb-be3fc146c5e0\",\"type\":\"Grid\"},{\"id\":\"8f8ded33-f8ae-4fed-b9b2-28adac79be74\",\"type\":\"BoxAnnotation\"},{\"id\":\"2c3313d1-0977-45e0-849b-fa635aad9946\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"717da2da-5e45-4791-b4b6-497e7ee7eff9\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"cd32810b-218f-4089-adcc-7bc66dd1cc9b\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"1389553d-3839-4b3d-afdf-6e357f0a75ce\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"30d49897-e1e8-4994-881e-9114f553d214\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"800726ea-ec05-4ee8-9604-0a4eb6be883a\",\"type\":\"DataRange1d\"}},\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"57d7cba6-d63f-4d2e-bf3f-440875ef62a7\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"8f8ded33-f8ae-4fed-b9b2-28adac79be74\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f65d9cd8-15e2-4b40-9182-7e50c51d572a\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"800726ea-ec05-4ee8-9604-0a4eb6be883a\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"dac2cf55-c006-4f00-a6c3-c40fe78c27c4\",\"type\":\"BasicTicker\"}},\"id\":\"97065923-628c-459d-a4a5-988d10578d58\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"48454f30-8639-47b7-89ac-0a242a47b853\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57d7cba6-d63f-4d2e-bf3f-440875ef62a7\",\"type\":\"BasicTicker\"}},\"id\":\"38df456c-ed1b-420c-9dcb-be3fc146c5e0\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"a49c59b1-34b9-442f-9ceb-5a368cdbe365\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"dac2cf55-c006-4f00-a6c3-c40fe78c27c4\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"8f8ded33-f8ae-4fed-b9b2-28adac79be74\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"cd32810b-218f-4089-adcc-7bc66dd1cc9b\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ad5f8f23-b602-48f0-845f-b8e710a84a56\",\"type\":\"PanTool\"},{\"id\":\"397352f6-99f5-4930-8f3a-5723e9070c3b\",\"type\":\"WheelZoomTool\"},{\"id\":\"f65d9cd8-15e2-4b40-9182-7e50c51d572a\",\"type\":\"BoxZoomTool\"},{\"id\":\"5707422b-f97e-4021-a457-d4c1eaeda32d\",\"type\":\"SaveTool\"},{\"id\":\"a51ce4d6-f8d3-4cdd-8b5e-cef08331d2fa\",\"type\":\"ResetTool\"},{\"id\":\"7dafb22f-efa0-43e1-9ce9-b9cbc0ed4367\",\"type\":\"HelpTool\"}]},\"id\":\"1389553d-3839-4b3d-afdf-6e357f0a75ce\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Z\"},\"id\":\"717da2da-5e45-4791-b4b6-497e7ee7eff9\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ad5f8f23-b602-48f0-845f-b8e710a84a56\",\"type\":\"PanTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"eb3f54c7-9357-4921-aa80-0ed454331276\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"30d49897-e1e8-4994-881e-9114f553d214\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"a49c59b1-34b9-442f-9ceb-5a368cdbe365\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"dac2cf55-c006-4f00-a6c3-c40fe78c27c4\",\"type\":\"BasicTicker\"}},\"id\":\"1985b1b8-db40-498c-b609-ba1c44b38ddd\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"48454f30-8639-47b7-89ac-0a242a47b853\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57d7cba6-d63f-4d2e-bf3f-440875ef62a7\",\"type\":\"BasicTicker\"}},\"id\":\"06656efc-b536-4432-abb5-d5c5a8d6de5d\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5707422b-f97e-4021-a457-d4c1eaeda32d\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a51ce4d6-f8d3-4cdd-8b5e-cef08331d2fa\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7dafb22f-efa0-43e1-9ce9-b9cbc0ed4367\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":{\"id\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"397352f6-99f5-4930-8f3a-5723e9070c3b\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"fc289b82-ea68-43c0-be49-d2cde5a351ba\",\"elementid\":\"e88d7eb2-24c2-4b53-b929-6a8b7a82572f\",\"modelid\":\"47c7373b-9b0f-428e-a0db-5fd25e8a525c\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"e88d7eb2-24c2-4b53-b929-6a8b7a82572f\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 73676580.5097414]\n",
"[-23119729.13155137]\n",
"[ 6089171.27863839]\n",
"[ 34810092.59873442]\n",
"[ 2244194.6258314]\n",
"[ 20894386.92508978]\n"
]
}
],
"source": [
"def find_real_peak(series):\n",
" p = np.argmax(series)\n",
" \n",
" min_idx = p - 3\n",
" \n",
" if (min_idx < 0):\n",
" min_idx = 0\n",
" \n",
" max_idx = p + 3\n",
" \n",
" if (max_idx >= len(series)):\n",
" max_idx = len(series) - 1\n",
" \n",
" fit = np.polyfit(range(min_idx, max_idx+1), series[min_idx:max_idx+1], 2)\n",
" \n",
" peak = fit[1] / -fit[0] / 2\n",
"\n",
" return fit[1] / -fit[0] / 2\n",
"\n",
"\n",
"\n",
"# For now, we just want to figure the parameters that existing autotune\n",
"# uses, but in a more accurate and more robust way. In the future we'll\n",
"# do much fancier things.\n",
"\n",
"# So, for each of the three axes, let's perform fourier analysis in order to\n",
"# correlate the differentiated, filtered gyros vs. the actuator command.\n",
"# This will tell us the delay, or tau. From \n",
"\n",
"def compute_axis(desired_series, diff_gyro_series, filter_order=3,\n",
" percentile_cutoff=2, plot_tau=True, series_cutoff=2,\n",
" axis_name=\"\"):\n",
" desired_fft = fftpack.fft(desired_series)\n",
" diff_fft = fftpack.fft(diff_gyro_series)\n",
"\n",
" desired_fft_r = -desired_fft.conjugate()\n",
"\n",
" correl = fftpack.ifft(desired_fft_r * diff_fft) \n",
"\n",
" tau_offset = find_real_peak(np.abs(correl[0:len(correl)/series_cutoff]))\n",
" \n",
" if plot_tau:\n",
" p = figure(title=\"%s delay time vs. correlation\"%(axis_name), y_axis_type = \"log\")\n",
" p.line(np.linspace(0,len(correl) / 2 * time_step, len(correl) / 2), np.abs(correl[0:len(correl)/2]))\n",
" tauspan = Span(location=tau_offset * time_step, dimension='height', line_color='red', line_width=1)\n",
" #bogospan = Span(location=.0168, dimension='height', line_color='green', line_width=1)\n",
" #p.renderers.extend([bogospan])\n",
" p.renderers.extend([tauspan])\n",
" show(p)\n",
"\n",
" # half cycles per sample.e\n",
" filter_edge = filter_order / tau_offset / 3.14159 / 1.22\n",
"\n",
" # A nth order filter doesn't result in n* the delay with bessel\n",
" # design technique. 1.22 is a fudge factor for order 3. Not sure where\n",
" # 1.22 comes from :D\n",
" db, da = signal.iirfilter(filter_order, [filter_edge], btype='lowpass', ftype='bessel')\n",
"\n",
" #w, gd = signal.group_delay((db, da))\n",
" #p = figure()\n",
" #p.line(w, gd)\n",
" #show(p)\n",
" \n",
" desired_series = pandas.concat([desired_series, desired_series], ignore_index = True)\n",
" \n",
" delayedact = signal.lfilter(db, da, desired_series)\n",
" \n",
" delayedact = delayedact[len(delayedact)/2:]\n",
" \n",
" # Now compare the response magnitude of the filtered waveform vs. the\n",
" # differentiated gyro series, to compute beta and then the bias.\n",
" span_desired = np.percentile(delayedact, [percentile_cutoff, 100-percentile_cutoff])\n",
"\n",
" span_gyrodiff = np.percentile(diff_gyro_series, [percentile_cutoff, 100-percentile_cutoff])\n",
"\n",
" lin_gain = (span_gyrodiff[1]-span_gyrodiff[0]) / (span_desired[1]-span_desired[0])\n",
" \n",
" bias = delayedact.mean() * lin_gain - diff_gyro_series.mean()\n",
"\n",
" return (tau_offset, lin_gain, bias, delayedact * lin_gain - bias)\n",
" \n",
"def compute_axis_by_name(series_name, do_plots=True, series_cutoff=2):\n",
" desired = df['desired'+series_name]\n",
" deriv_filtered = df['derivfiltered'+series_name]\n",
" \n",
" tau_offset, lin_gain, bias, adjact = compute_axis(desired, deriv_filtered, plot_tau=do_plots,\n",
" series_cutoff=series_cutoff,\n",
" axis_name=series_name)\n",
" \n",
" df['adjdesired' + series_name] = pandas.Series(adjact)\n",
" \n",
" print \"Axis %s: tau=%.1f samples (%0.2f ms / %0.3f)\"%(series_name, tau_offset, tau_offset*time_step*1000, math.log(tau_offset*time_step))\n",
" print \"\\tgain=%0.1f (beta=%0.3f), bias=%0.1f\"%(lin_gain, math.log(lin_gain / time_step), bias)\n",
" \n",
" if (do_plots):\n",
" p = figure(title=\"%s shifted to line up\"%(series_name))\n",
" \n",
" p.line(df.time, deriv_filtered)\n",
" p.line(df.time, adjact, color=\"green\")\n",
"\n",
" show(p)\n",
" \n",
" p = figure(title=\"residual %s\"%(series_name))\n",
" \n",
" p.line(df.time, deriv_filtered - adjact)\n",
" show(p)\n",
"\n",
"compute_axis_by_name(\"X\", series_cutoff=5)\n",
"compute_axis_by_name(\"Y\", series_cutoff=5)\n",
"compute_axis_by_name(\"Z\", series_cutoff=5)\n",
"\n",
"print np.correlate(df.derivfilteredX, df.derivfilteredX)\n",
"print np.correlate(df.derivfilteredX, df.derivfilteredY)\n",
"print np.correlate(df.derivfilteredX, df.derivfilteredZ)\n",
"print np.correlate(df.derivfilteredY, df.derivfilteredY)\n",
"print np.correlate(df.derivfilteredY, df.derivfilteredZ)\n",
"print np.correlate(df.derivfilteredZ, df.derivfilteredZ)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment