Skip to content

Instantly share code, notes, and snippets.

@jhitesma
Created April 28, 2017 23:35
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/80dd407dc8eec1e043ba7f5898b234e9 to your computer and use it in GitHub Desktop.
Save jhitesma/80dd407dc8eec1e043ba7f5898b234e9 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=\"8f541f04-2931-4959-b989-e0a7a0b4be71\">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(\"8f541f04-2931-4959-b989-e0a7a0b4be71\").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(\"8f541f04-2931-4959-b989-e0a7a0b4be71\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8f541f04-2931-4959-b989-e0a7a0b4be71' 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(\"8f541f04-2931-4959-b989-e0a7a0b4be71\").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(\"8f541f04-2931-4959-b989-e0a7a0b4be71\")).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/Downloads/verrisinduc.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=\"554dcbfc-a71c-441f-9bf2-64356ce1aeec\"></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(\"554dcbfc-a71c-441f-9bf2-64356ce1aeec\").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(\"554dcbfc-a71c-441f-9bf2-64356ce1aeec\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '554dcbfc-a71c-441f-9bf2-64356ce1aeec' 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 = {\"6d5fbb2e-86c2-4bf2-8f22-f68a5cc32fd1\":{\"roots\":{\"references\":[{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"abc10d44-2284-4c02-8c9e-055097cbef82\",\"type\":\"PanTool\"},{\"id\":\"e6a2060d-ee04-4f3f-8aa2-34c1cd7e0bf8\",\"type\":\"WheelZoomTool\"},{\"id\":\"3c2b6f42-43b6-479c-9b5f-5a4a6ea1bed7\",\"type\":\"BoxZoomTool\"},{\"id\":\"3de8cc18-1813-480a-a8a2-91a25b13fac1\",\"type\":\"SaveTool\"},{\"id\":\"715d165d-5b2b-4e36-8b90-36f9d2ea1316\",\"type\":\"ResetTool\"},{\"id\":\"ba0c2c4f-03e2-4857-b635-458291da2ccb\",\"type\":\"HelpTool\"}]},\"id\":\"db69d5fa-f273-4177-85e2-2b4e1230cb00\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b8480740-9c80-4fb9-8b44-d8d02252a59f\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"abdab36a-94bc-47d2-9a27-b835889af5ea\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"4318b041-4187-451f-8c2b-bf9d4d8371e0\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"215be472-99e5-4eef-a7d0-ce80ef35d6d2\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e6a2060d-ee04-4f3f-8aa2-34c1cd7e0bf8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"8c1a366e-c974-4643-babd-8b4d55db94f6\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3c2b6f42-43b6-479c-9b5f-5a4a6ea1bed7\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":null,\"text\":\"roll gyro vs actuators\"},\"id\":\"b0321b41-fcc1-4d52-94ba-de7b86ffd7fc\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3de8cc18-1813-480a-a8a2-91a25b13fac1\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"a9461471-b2e7-4c70-9613-bb3b0316b3b0\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"bfb1c81b-9619-4df9-8600-03e01a692186\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"215be472-99e5-4eef-a7d0-ce80ef35d6d2\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"80cebab7-03c0-43c0-a918-6b8621a048d1\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"1f259b8d-8539-4603-9336-323ad6a0531d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"80cebab7-03c0-43c0-a918-6b8621a048d1\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"8fa0aea5-9e04-4519-8e08-c28cc0039f17\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"6d29171e-5283-4b2f-942e-d119de1f5df1\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"2d522daf-1603-4a66-8b5a-254def3791e0\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"8fa0aea5-9e04-4519-8e08-c28cc0039f17\",\"type\":\"LinearAxis\"},{\"id\":\"1df25527-c373-4aa0-b9aa-314675235a29\",\"type\":\"Grid\"},{\"id\":\"2d522daf-1603-4a66-8b5a-254def3791e0\",\"type\":\"LinearAxis\"},{\"id\":\"76ac7cbc-1b9b-49eb-8673-01bf6c6c2476\",\"type\":\"Grid\"},{\"id\":\"8c1a366e-c974-4643-babd-8b4d55db94f6\",\"type\":\"BoxAnnotation\"},{\"id\":\"8ded3494-cfeb-4b0b-8b13-70ca7a099e98\",\"type\":\"GlyphRenderer\"},{\"id\":\"1f259b8d-8539-4603-9336-323ad6a0531d\",\"type\":\"GlyphRenderer\"},{\"id\":\"746b880e-1761-432b-b864-354caa0226ae\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"746b880e-1761-432b-b864-354caa0226ae\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"b0321b41-fcc1-4d52-94ba-de7b86ffd7fc\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"6c0966cd-3a2c-4560-acde-31428f339e46\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"db69d5fa-f273-4177-85e2-2b4e1230cb00\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"8f875362-e27e-41fb-a8ef-34ae7cf23302\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"4318b041-4187-451f-8c2b-bf9d4d8371e0\",\"type\":\"DataRange1d\"}},\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"end\":34.14672088623047,\"start\":-11.334291458129883},\"id\":\"6d29171e-5283-4b2f-942e-d119de1f5df1\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"6c0966cd-3a2c-4560-acde-31428f339e46\",\"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\":\"8c1a366e-c974-4643-babd-8b4d55db94f6\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"c0b12adc-0875-4785-af3a-8308de97d41b\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"bff3e6e3-0774-4bf3-be69-0d3c2e877933\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a9461471-b2e7-4c70-9613-bb3b0316b3b0\",\"type\":\"BasicTicker\"}},\"id\":\"1df25527-c373-4aa0-b9aa-314675235a29\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"84796960-e67a-48ac-91cb-3cb5d0be28b7\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"64897157-c4b2-4841-92a7-0987e5e7cccf\",\"type\":\"BasicTicker\"}},\"id\":\"2d522daf-1603-4a66-8b5a-254def3791e0\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"bff3e6e3-0774-4bf3-be69-0d3c2e877933\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c0b12adc-0875-4785-af3a-8308de97d41b\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"746b880e-1761-432b-b864-354caa0226ae\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"8f875362-e27e-41fb-a8ef-34ae7cf23302\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ba0c2c4f-03e2-4857-b635-458291da2ccb\",\"type\":\"HelpTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"64897157-c4b2-4841-92a7-0987e5e7cccf\",\"type\":\"BasicTicker\"}},\"id\":\"76ac7cbc-1b9b-49eb-8673-01bf6c6c2476\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"ea2074c2-18d8-48fe-a1a7-c038c055dd11\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"715d165d-5b2b-4e36-8b90-36f9d2ea1316\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"84796960-e67a-48ac-91cb-3cb5d0be28b7\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"AAAAAJHShUAAAAAAIwqHQAAAAOBwAohAAAAAQKc1iUAAAADAhc6JQAAAAIDQGIpAAAAAwGxxikAAAACgyT6LQAAAAEANWYtAAAAAoFrWi0AAAADgXRKMQAAAACDsx4tAAAAAYBvBi0AAAAAA8NeLQAAAAMByZ4tAAAAAoO+/ikAAAABgKjyKQAAAAGCtxolAAAAAAD0fiUAAAADgWImIQAAAAICwx4dAAAAA4JEDh0AAAADA1ZmGQAAAACBVk4VAAAAAINuBhEAAAADAa92DQAAAAODeU4NAAAAAADi0gkAAAAAgP9+BQAAAAGDProBAAAAAYE29f0AAAABAVpp9QAAAAEDDW3xAAAAAANNreUAAAABAVxF4QAAAAEAXBnlAAAAAIMTOekAAAACgn3Z/QAAAAAAPQoNAAAAA4IVgh0AAAAAgCrWMQAAAAEB+b5FAAAAAwL/ilEAAAABAioGYQAAAACBUpZxAAAAAAEiQoEAAAAAAMM6iQAAAAGAgM6VAAAAA4Mi3p0AAAABgf1eqQAAAAMBr8qxAAAAAwImfr0AAAACASiKxQAAAAODcfrJAAAAAwF3Ws0AAAAAA1Sy1QAAAAMBQebZAAAAA4CjVt0AAAACgjhm5QAAAAOAMU7pAAAAA4Hd6u0AAAACg15O8QAAAAIC6q71AAAAAYPe8vkAAAACgqLC/QAAAAKBrQ8BAAAAAwCuvwEAAAAAgdwLBQAAAAODYQsFAAAAAQFtowUAAAABAw3HBQAAAACAYacFAAAAAAAdEwUAAAACgWA3BQAAAAEBxvcBAAAAAgL1WwEAAAABAXMa/QAAAAGCFqr5AAAAAoPp3vUAAAADAgyK8QAAAAIAHvLpAAAAAIAs4uUAAAAAgkJe3QAAAAODH8bVAAAAAQFgstEAAAAAAmGCyQAAAAMCMgbBAAAAAQCIkrUAAAADAMk6pQAAAAGB0bKVAAAAAoDShoUAAAABgN4ybQAAAAMAXG5RAAAAAgDQKiUAAAABAt3h0QAAAAADneGDAAAAAQAAkgsAAAABAYxCQwAAAAGB70JbAAAAAgA/4ncAAAABg7n+iwAAAAMAbQKbAAAAAIBQPqsAAAABAxuCtwAAAAOA077DAAAAAQEPjssAAAADgL9+0wAAAAODb5LbAAAAAYAHguMAAAACgDte6wAAAACDusLzAAAAAYNeRvsAAAABgJy7AwAAAACCcC8HAAAAAoJ/hwcAAAACgNLPCwAAAAGBcbMPAAAAAgEAsxMAAAABABNnEwAAAAMBZeMXAAAAAAJEFxsAAAACAaIrGwAAAAMDUAsfAAAAAgJtux8AAAAAgmtDHwAAAAADaHcjAAAAAYHlhyMAAAABA2pnIwAAAAMA+wMjAAAAAICjfyMAAAACAaPDIwAAAAKAU4sjAAAAA4PrEyMAAAAAghYjIwAAAAIAJLMjAAAAAwFS7x8AAAADgPifHwAAAAGBQiMbAAAAAQJfVxcAAAADAfQPFwAAAAABMH8TAAAAAYJkqw8AAAACAkibCwAAAACA4D8HAAAAAABTtv8AAAACgaqa9wAAAACD8SLvAAAAAILbRuMAAAABgl2S2wAAAAIAe/bPAAAAAQBF/scAAAABA6hGuwAAAAGDrJanAAAAAYNAypMAAAAAAMqCewAAAAGDyDpXAAAAAYBWch8AAAAAAARNmwAAAAGDlknhAAAAAQOn6jEAAAACgkr+WQAAAAMCMfp9AAAAAoJp2pEAAAAAgbz2pQAAAAOAOs61AAAAAgMoTsUAAAABAHlGzQAAAAMCMYLVAAAAAwPNBt0AAAAAg1aq4QAAAACBjcLlAAAAAAHS6uUAAAACAE+u5QAAAAKAh9LlAAAAA4DTquUAAAABAHuK5QAAAAED6tblAAAAAIFCJuUAAAABg4F+5QAAAAGALJblAAAAAQFzcuEAAAAAA3Ha4QAAAACBiBrhAAAAAwFiEt0AAAACgOva2QAAAAIDUS7ZAAAAAQIKctUAAAABggte0QAAAAMDa+7NAAAAAoAQjs0AAAADgpSOyQAAAAIBPCbFAAAAAwJ23r0AAAACghkqtQAAAACD71qpAAAAAoP1YqEAAAABAjealQAAAAMC1YqNAAAAAQBIToUAAAABgWledQAAAAGC2+JhAAAAAoF/alEAAAADg4euQQAAAAICOH4tAAAAAwP3fhEAAAACgd5N9QAAAAMAjlnJAAAAAYEXHXkAAAABAc8RHwAAAAOBM6WrAAAAAAGRnd8AAAACg1PGAwAAAAAAcSIbAAAAAoJlhi8AAAAAAyw+QwAAAAID8X5LAAAAAoKGBlMAAAACgmniWwAAAAMCfFpjAAAAAAOBdmcAAAADgLp+awAAAAKDyZpvAAAAAQE/Am8AAAAAAH+WbwAAAAMArwpvAAAAAgNq/m8AAAABgIYybwAAAAICLKpvAAAAAYKaImsAAAAAgjA2awAAAAOCI9JjAAAAAILfIl8AAAACAXvmWwAAAAECayJXAAAAAYN13lMAAAADg3vqSwAAAAGAxwJHAAAAAQFlLkMAAAABALHuNwAAAAGCMZIrAAAAAYCpLh8AAAAAgdAKEwAAAAECj34DAAAAAQF2Pe8AAAACAZs10wAAAAACSFW3AAAAAQIcVYcAAAACAWxVFwAAAAEDCpElAAAAAQHovYUAAAADALVVrQAAAAGAggnJAAAAAYOaKdkAAAABgNm96QAAAAIB9qH5AAAAAAM7dgEA=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"6bba1c92-63b7-44df-9312-27896a3ef840\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"AAAAgCOoHkAAAACAKSAeQAAAACDF5B1AAAAAgGqMHUAAAACAtVIdQAAAAMCHOB1AAAAAgP4IHUAAAADABrwcQAAAAIB8nRxAAAAAYHpvHEAAAADA8SgcQAAAAEDdExxAAAAAAKEKHEAAAABgd/sbQAAAAOAsBBxAAAAAoIQtHEAAAABg2TQcQAAAAMDYMhxAAAAAYOVRHEAAAACgKHocQAAAAOB3oBxAAAAAYD67HEAAAAAAf9scQAAAAGA1NB1AAAAAgFRwHUAAAAAAo6YdQAAAAODQvx1AAAAAgKPbHUAAAACgCugdQAAAAKDsIR5AAAAAgAdbHkAAAADA+5IeQAAAAACezzZAAAAAoEDrNkAAAAAg3vU2QAAAAKDi7zZAAAAAAEraNkAAAADAv7A2QAAAAIBubTZAAAAAQBgiNkAAAADAv8o1QAAAAIC1YzVAAAAAoLzrNEAAAABgCm40QAAAAGCm4jNAAAAAgP5LM0AAAACACbIyQAAAAGC1DTJAAAAAoC1kMUAAAADg9qswQAAAAICF8i9AAAAAgHSHLkAAAABgH/ssQAAAAGBBeCtAAAAA4PP+KUAAAACAeYYoQAAAAEB2BidAAAAAwBt7JUAAAAAgmgokQAAAAKBbnCJAAAAAYJVKIUAAAACARQUgQAAAAMCcYh1AAAAAADDRGkAAAAAgMQwiwAAAAMA1EiPAAAAAACIqJMAAAAAgIAglwAAAAGBSviXAAAAAQKhQJsAAAACATY4mwAAAAEAoqybAAAAAAH+iJsAAAACgRmsmwAAAAOD3+iXAAAAAAEtYJcAAAADgIZskwAAAAABCpCPAAAAAgAeQIsAAAADAjHYhwAAAAACGKiDAAAAAIIyAHcAAAACAf3YawAAAAKB5YxfAAAAA4GIwFMAAAAAgEMgQwAAAAGDHbwrAAAAA4HzaAsAAAACAVo72vwAAAKB4VN+/AAAAwE1A3D8AAACg0T/2PwAAAMD/zwJAAAAAYDWMCkAAAACglcsQQAAAAMCjdhRAAAAAINA9IsAAAADgyG0gwAAAAMBRah3AAAAAwMDFGcAAAAAAwyQWwAAAAOB9NxLAAAAAAKYfDMAAAAAgJMYDwAAAAICT0va/AAAAQM4j2L8AAACAghznPwAAAMC/a/0/AAAAgP1HB0AAAAAAWM4PQAAAAMDKBhRAAAAAgM8+GEAAAADAy3QcQAAAAODhUCBAAAAAQBdCIkAAAABgsywkQAAAAOAN9SVAAAAAoH+/J0AAAABgJ2EpQAAAAIB15SpAAAAAQGFQLEAAAABgs7AtQAAAAIA6BC9AAAAAoMkgMEAAAACAF68wQAAAACCuJTFAAAAAQIGWMUAAAACAO/sxQAAAAOBgtkBAAAAAwHfaQEAAAADgmPpAQAAAAIBqCEFAAAAAwMcSQUAAAADA8w1BQAAAAACh9EBAAAAAIE3PQEAAAAAgTZhAQAAAAKANWUBAAAAA4MgNQEAAAACgJGY/QAAAAKA1oj5AAAAAYDLPPUAAAAAgp+88QAAAAIDX8TtAAAAAgODxOkAAAACgr9o5QAAAAGBQwDhAAAAA4FqPN0AAAAAAO2M2QAAAAOC6PDVAAAAA4CYHNEAAAAAAC9IyQAAAACCMqTFAAAAAQHNsMEAAAABA43EuQAAAAKDRCCxAAAAAoIanKUAAAADA9EwnQAAAAOBqDCVAAAAAYDDsIkAAAAAAfdQgQAAAAEDaKh1AAAAAoE9JGEAAAADgADsTQAAAACA1Qw1AAAAAwDCrA0AAAADAZab0PwAAAAAPfN8/AAAAAFOBxL8AAABA+2jovwAAAKBQp/S/AAAAYCoh/L8AAACgCAgCwAAAAGAa7gTAAAAAYJFIBsAAAACgm9sGwAAAAMAlIQfAAAAAgIVbB8AAAADAx04HwAAAAIDgEAfAAAAAoBarBsAAAACALtQFwAAAACB0zATAAAAAwK8RA8AAAAAA+FUBwAAAAABITP6/AAAAgOvL+b8AAACgvNP0vwAAAIBCeu2/AAAAAOke4r8AAADAkgbBvwAAAMBRF9c/AAAAALoA7T8AAACgcAD4PwAAAKDAyQBAAAAA4ER9BUAAAAAAyvcJQAAAAIAQyA5AAAAAYHinEUAAAAAAGO8TQAAAACDJHBZAAAAAoEYiGEAAAABAIgEaQAAAAADHtBtAAAAAYHc3HUAAAACgOsIeQAAAACC5EiBAAAAAABvAIEAAAACAG3IhQAAAAEDkFCJAAAAAgNG1IkAAAADANFsjQAAAAKA5ACRAAAAAwCSwJEAAAABgEEslQAAAAADd+yVAAAAAYMahJkAAAAAgNSknQAAAAGDMnCdAAAAAIPf3J0AAAAAAqVkoQAAAAEDdkShAAAAAIJyrKEAAAADgycAoQAAAAGBAvihAAAAAQPHOKEAAAADgOMcoQAAAAGDytihAAAAAYPGqKEAAAADAe5koQAAAACCnbyhAAAAAQMw8KEAAAAAgkgUoQAAAACCwuidAAAAAQDJzJ0AAAADAdSEnQAAAAMAmvCZAAAAAIJBXJkAAAAAgbPMlQAAAACA5jyVAAAAAwEZHJUAAAADAd+IkQAAAAKBlZSRAAAAA4KH5I0AAAADA0ZcjQAAAAECrNyNAAAAAoJGyIkAAAACgEDwiQAAAAIDB7SFAAAAAwPKSIUAAAADgpU4hQAAAAEDNAiFAAAAAAEm0IEAAAADgy3AgQAAAAMD4ISBAAAAA4OTaH0A=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"bfb1c81b-9619-4df9-8600-03e01a692186\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"6bba1c92-63b7-44df-9312-27896a3ef840\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"abdab36a-94bc-47d2-9a27-b835889af5ea\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"b8480740-9c80-4fb9-8b44-d8d02252a59f\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8ded3494-cfeb-4b0b-8b13-70ca7a099e98\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"abc10d44-2284-4c02-8c9e-055097cbef82\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"ea2074c2-18d8-48fe-a1a7-c038c055dd11\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a9461471-b2e7-4c70-9613-bb3b0316b3b0\",\"type\":\"BasicTicker\"}},\"id\":\"8fa0aea5-9e04-4519-8e08-c28cc0039f17\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"64897157-c4b2-4841-92a7-0987e5e7cccf\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"21345bdc-0de5-49ab-b287-6c11f399abc0\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"6d5fbb2e-86c2-4bf2-8f22-f68a5cc32fd1\",\"elementid\":\"554dcbfc-a71c-441f-9bf2-64356ce1aeec\",\"modelid\":\"21345bdc-0de5-49ab-b287-6c11f399abc0\"}];\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(\"554dcbfc-a71c-441f-9bf2-64356ce1aeec\")).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=\"1b9557a5-e13f-4ce7-a4df-b8497fbd4649\"></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(\"1b9557a5-e13f-4ce7-a4df-b8497fbd4649\").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(\"1b9557a5-e13f-4ce7-a4df-b8497fbd4649\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '1b9557a5-e13f-4ce7-a4df-b8497fbd4649' 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 = {\"79c0a718-7cfd-4bb0-a7f3-6ffe06f6c702\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":null,\"text\":\"roll gyrodiff vs actuators\"},\"id\":\"c470b06b-3a3c-4d03-9a64-dec480e74825\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"end\":34.14672088623047,\"start\":-11.334291458129883},\"id\":\"bd6901a0-c1c8-493e-95d5-4757dfea8278\",\"type\":\"Range1d\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0e2ea8a2-32d8-4eaf-a08f-898ae4ebeb0f\",\"type\":\"BasicTicker\"}},\"id\":\"633027bc-c126-4784-9f44-6d86b1def79c\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"c7ac23d7-7c75-4ad6-a467-e10dacae9c5d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a1edcdea-d8dd-4f9e-bcef-056354185d5e\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"bc056f37-ebfa-43b4-adcd-9cb98dbd99fc\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a0229d48-8080-4383-8d08-19de127fd993\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"323b3f2b-198d-4b94-9d46-693013a8b058\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a1edcdea-d8dd-4f9e-bcef-056354185d5e\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"da04b0c0-8952-4ec4-825b-a112a37d675b\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"2510d8a9-0ea3-4122-a81e-0872f7bb6e62\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"5b33e84f-b9da-4ac8-b0cb-6ff9ba11c616\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"c7ac23d7-7c75-4ad6-a467-e10dacae9c5d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5b33e84f-b9da-4ac8-b0cb-6ff9ba11c616\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"6fb70963-53c7-43c5-9112-205d07fb092e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"da04b0c0-8952-4ec4-825b-a112a37d675b\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"8d167d45-04a6-4b92-a047-6112e9a160f7\",\"type\":\"ToolEvents\"},{\"attributes\":{\"overlay\":{\"id\":\"9b0fed29-7ff2-4897-9edf-8e22bcbc449e\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d4729458-4d2a-4a38-a303-f6d3612dfc46\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"below\":[{\"id\":\"e3875f3f-7509-49d3-84ff-cac8da214f76\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"bd6901a0-c1c8-493e-95d5-4757dfea8278\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"07515646-8159-4d87-aeb0-ab77d90d44e3\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"e3875f3f-7509-49d3-84ff-cac8da214f76\",\"type\":\"LinearAxis\"},{\"id\":\"633027bc-c126-4784-9f44-6d86b1def79c\",\"type\":\"Grid\"},{\"id\":\"07515646-8159-4d87-aeb0-ab77d90d44e3\",\"type\":\"LinearAxis\"},{\"id\":\"2bb1cc0d-5d7d-4813-b090-72a6234c67f5\",\"type\":\"Grid\"},{\"id\":\"9b0fed29-7ff2-4897-9edf-8e22bcbc449e\",\"type\":\"BoxAnnotation\"},{\"id\":\"05953b33-6ec2-48bd-993d-82f40ad8a7dd\",\"type\":\"GlyphRenderer\"},{\"id\":\"2510d8a9-0ea3-4122-a81e-0872f7bb6e62\",\"type\":\"GlyphRenderer\"},{\"id\":\"6fb70963-53c7-43c5-9112-205d07fb092e\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"6fb70963-53c7-43c5-9112-205d07fb092e\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"c470b06b-3a3c-4d03-9a64-dec480e74825\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"8d167d45-04a6-4b92-a047-6112e9a160f7\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"6380b445-c549-4ac5-9256-ef2545f4a9e4\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"86865604-8cee-4b8b-aa08-c651cc3ba8d8\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"9ac013a5-9db7-4e41-a5fd-2e63867296f9\",\"type\":\"DataRange1d\"}},\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"49713737-fb40-42d7-b70b-bd2035720961\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"bbb29bb7-1486-4cba-88fd-7c4af112022f\",\"type\":\"PanTool\"},{\"id\":\"26d759be-7684-4533-b8fa-619946a86c80\",\"type\":\"WheelZoomTool\"},{\"id\":\"d4729458-4d2a-4a38-a303-f6d3612dfc46\",\"type\":\"BoxZoomTool\"},{\"id\":\"23c7391b-3061-437f-849e-bb89a7bd3d28\",\"type\":\"SaveTool\"},{\"id\":\"b3336713-8f0e-45ac-b0ae-6737083d7934\",\"type\":\"ResetTool\"},{\"id\":\"9308cf9f-d419-4ac4-90e5-dfbf6c800bb1\",\"type\":\"HelpTool\"}]},\"id\":\"6380b445-c549-4ac5-9256-ef2545f4a9e4\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"9b0fed29-7ff2-4897-9edf-8e22bcbc449e\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b3336713-8f0e-45ac-b0ae-6737083d7934\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"0e2ea8a2-32d8-4eaf-a08f-898ae4ebeb0f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"49713737-fb40-42d7-b70b-bd2035720961\",\"type\":\"BasicTicker\"}},\"id\":\"2bb1cc0d-5d7d-4813-b090-72a6234c67f5\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"86865604-8cee-4b8b-aa08-c651cc3ba8d8\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"bc056f37-ebfa-43b4-adcd-9cb98dbd99fc\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0e2ea8a2-32d8-4eaf-a08f-898ae4ebeb0f\",\"type\":\"BasicTicker\"}},\"id\":\"e3875f3f-7509-49d3-84ff-cac8da214f76\",\"type\":\"LinearAxis\"},{\"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\":\"323b3f2b-198d-4b94-9d46-693013a8b058\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"9ac013a5-9db7-4e41-a5fd-2e63867296f9\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"26d759be-7684-4533-b8fa-619946a86c80\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"bbb29bb7-1486-4cba-88fd-7c4af112022f\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"e4e7a0e2-c984-426b-a6cd-378266c711f7\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"9ca81614-e018-4e88-80e4-31a1867379b4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a0229d48-8080-4383-8d08-19de127fd993\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"e4e7a0e2-c984-426b-a6cd-378266c711f7\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"05953b33-6ec2-48bd-993d-82f40ad8a7dd\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"23c7391b-3061-437f-849e-bb89a7bd3d28\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"94078630-b988-49bd-83ad-e4177b7e99fa\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9308cf9f-d419-4ac4-90e5-dfbf6c800bb1\",\"type\":\"HelpTool\"},{\"attributes\":{\"formatter\":{\"id\":\"94078630-b988-49bd-83ad-e4177b7e99fa\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"49713737-fb40-42d7-b70b-bd2035720961\",\"type\":\"BasicTicker\"}},\"id\":\"07515646-8159-4d87-aeb0-ab77d90d44e3\",\"type\":\"LinearAxis\"},{\"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\":\"9ca81614-e018-4e88-80e4-31a1867379b4\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"79c0a718-7cfd-4bb0-a7f3-6ffe06f6c702\",\"elementid\":\"1b9557a5-e13f-4ce7-a4df-b8497fbd4649\",\"modelid\":\"66ef4bc4-5143-484d-b1bd-f9571cf8ca17\"}];\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(\"1b9557a5-e13f-4ce7-a4df-b8497fbd4649\")).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=\"29cf7ad5-92d0-43af-991d-736f9ee666eb\"></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(\"29cf7ad5-92d0-43af-991d-736f9ee666eb\").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(\"29cf7ad5-92d0-43af-991d-736f9ee666eb\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '29cf7ad5-92d0-43af-991d-736f9ee666eb' 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 = {\"5b2fc4bf-7738-474e-aaf3-4884c44c959c\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0848f2e0-fb87-4b57-adae-0358055ed01c\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"41af616c-88e6-45ad-a4b8-271c1f1dc3c5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"filtered roll gyrodiff vs actuators\"},\"id\":\"77e9ee48-f781-41c6-a02d-c4129bb430cc\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5a15449a-d91b-4c2d-8d40-734ed7053dd4\",\"type\":\"SaveTool\"},{\"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\":\"087f6cc2-b009-498e-9f3f-85deb9fee769\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"413ebeba-2a3f-49df-af2d-cd3de7af9cc6\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"11cbc0c2-90cb-440f-b96b-edf3e2c9edcd\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fb100f77-51f3-46e8-a02e-18bac2d130a2\",\"type\":\"BasicTicker\"}},\"id\":\"66f5a72a-7ff8-40a2-917f-3a792d88828c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"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\":\"79d94aa7-b8f7-4cfa-bd8b-c9787c752f52\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"957ffaee-06d4-4476-866a-40463701fa97\",\"type\":\"ToolEvents\"},{\"attributes\":{\"below\":[{\"id\":\"2b22f8e1-2776-48d7-89b5-deb7424672a1\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"a9e4592b-910e-4dba-8393-5cbc81366266\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"66f5a72a-7ff8-40a2-917f-3a792d88828c\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"2b22f8e1-2776-48d7-89b5-deb7424672a1\",\"type\":\"LinearAxis\"},{\"id\":\"608309f7-fa04-4699-a182-8ad1761909ef\",\"type\":\"Grid\"},{\"id\":\"66f5a72a-7ff8-40a2-917f-3a792d88828c\",\"type\":\"LinearAxis\"},{\"id\":\"01883f8d-671a-4b90-b0fe-5a3a073b80bf\",\"type\":\"Grid\"},{\"id\":\"7c01a2b9-d1cd-491a-990b-fd1528ff4d37\",\"type\":\"BoxAnnotation\"},{\"id\":\"7d8cf0b6-6adc-4362-ab4e-ea06b4cae912\",\"type\":\"GlyphRenderer\"},{\"id\":\"bc1789f4-32b0-4ce8-9585-7cb90adb7541\",\"type\":\"GlyphRenderer\"},{\"id\":\"bd786bfa-78e5-46a4-bcc3-a4cb938c8f50\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"bd786bfa-78e5-46a4-bcc3-a4cb938c8f50\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"77e9ee48-f781-41c6-a02d-c4129bb430cc\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"957ffaee-06d4-4476-866a-40463701fa97\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"5fa426a5-a733-446c-8d9b-f33e26ffb533\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"0daa84fa-a969-480f-80af-79681a5543a2\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"413ebeba-2a3f-49df-af2d-cd3de7af9cc6\",\"type\":\"DataRange1d\"}},\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"0daa84fa-a969-480f-80af-79681a5543a2\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"11cbc0c2-90cb-440f-b96b-edf3e2c9edcd\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"6f6d70a3-57ae-4871-8422-c1cfd139024a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"6f6d70a3-57ae-4871-8422-c1cfd139024a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fe2d7c43-f1ca-4ccb-ac6d-46feb52029aa\",\"type\":\"BasicTicker\"}},\"id\":\"2b22f8e1-2776-48d7-89b5-deb7424672a1\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"41af616c-88e6-45ad-a4b8-271c1f1dc3c5\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"68586c3b-c417-4300-8ed1-3f9dda692826\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"bd786bfa-78e5-46a4-bcc3-a4cb938c8f50\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"79d94aa7-b8f7-4cfa-bd8b-c9787c752f52\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"52fbd6c0-f6dd-446c-82f3-404019351aa5\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"5eda9d67-36b6-431d-aaab-2abf023a1c9d\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"bc1789f4-32b0-4ce8-9585-7cb90adb7541\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fe2d7c43-f1ca-4ccb-ac6d-46feb52029aa\",\"type\":\"BasicTicker\"}},\"id\":\"608309f7-fa04-4699-a182-8ad1761909ef\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ff0a12e4-e963-493c-942f-448779325816\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"7c01a2b9-d1cd-491a-990b-fd1528ff4d37\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"af421a4c-4b33-4ae8-b8ee-681d374b65b9\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"68586c3b-c417-4300-8ed1-3f9dda692826\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"0848f2e0-fb87-4b57-adae-0358055ed01c\",\"type\":\"PanTool\"},{\"id\":\"24d5e2d2-0e52-466c-8c27-231c9fced361\",\"type\":\"WheelZoomTool\"},{\"id\":\"af421a4c-4b33-4ae8-b8ee-681d374b65b9\",\"type\":\"BoxZoomTool\"},{\"id\":\"5a15449a-d91b-4c2d-8d40-734ed7053dd4\",\"type\":\"SaveTool\"},{\"id\":\"ff0a12e4-e963-493c-942f-448779325816\",\"type\":\"ResetTool\"},{\"id\":\"ee443ddc-745f-4ba3-af71-744b02e8e746\",\"type\":\"HelpTool\"}]},\"id\":\"5fa426a5-a733-446c-8d9b-f33e26ffb533\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fb100f77-51f3-46e8-a02e-18bac2d130a2\",\"type\":\"BasicTicker\"}},\"id\":\"01883f8d-671a-4b90-b0fe-5a3a073b80bf\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ee443ddc-745f-4ba3-af71-744b02e8e746\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"fe2d7c43-f1ca-4ccb-ac6d-46feb52029aa\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"52fbd6c0-f6dd-446c-82f3-404019351aa5\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"fb100f77-51f3-46e8-a02e-18bac2d130a2\",\"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\":\"7c01a2b9-d1cd-491a-990b-fd1528ff4d37\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data_source\":{\"id\":\"087f6cc2-b009-498e-9f3f-85deb9fee769\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"b70236e3-9ad8-4b12-ac09-4dd8277121d6\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"330ce80e-d0f9-4c34-a885-6d4cb2d71eec\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"7d8cf0b6-6adc-4362-ab4e-ea06b4cae912\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"end\":34.14672088623047,\"start\":-11.334291458129883},\"id\":\"a9e4592b-910e-4dba-8393-5cbc81366266\",\"type\":\"Range1d\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"330ce80e-d0f9-4c34-a885-6d4cb2d71eec\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"24d5e2d2-0e52-466c-8c27-231c9fced361\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b70236e3-9ad8-4b12-ac09-4dd8277121d6\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5eda9d67-36b6-431d-aaab-2abf023a1c9d\",\"type\":\"Line\"}],\"root_ids\":[\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"5b2fc4bf-7738-474e-aaf3-4884c44c959c\",\"elementid\":\"29cf7ad5-92d0-43af-991d-736f9ee666eb\",\"modelid\":\"fea67b48-dcf6-4bb1-b5b3-980c0eb83c39\"}];\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(\"29cf7ad5-92d0-43af-991d-736f9ee666eb\")).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=\"fcb514ab-1b10-4b18-9611-938dd1f8a388\"></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(\"fcb514ab-1b10-4b18-9611-938dd1f8a388\").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(\"fcb514ab-1b10-4b18-9611-938dd1f8a388\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'fcb514ab-1b10-4b18-9611-938dd1f8a388' 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 = {\"5e1ca59a-0d3c-46df-b736-bf548e52e35c\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7599a4bb-c646-479a-af75-fd6a60a645e0\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"7eb76d14-1de8-4983-ada0-774031a83c16\",\"type\":\"ToolEvents\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e90a3d22-ee98-4266-be09-d2a3bc00f476\",\"type\":\"LogTicker\"}},\"id\":\"341a22fd-744a-474d-84a8-664b56904580\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f6def743-43b5-4654-b13e-b11df9aa9e9a\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"2dd1cd39-d78a-4680-a4de-b17eedcb8a5e\",\"type\":\"DataRange1d\"},{\"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__\":\"d7mEFA9JF0F1tSGHZhgaQdBbQzm43BxB2UjOMI6OH0Hwx/iebgQhQcuqyTUDMCJB3pie0Tw6I0HYirCu7CQkQX7DbroY9yRBrMFxY9CkJUGBl5F1KTsmQT5BGAV0syZBWBK7SPYLJ0FRwXosRkknQYDJd0RJaCdBTF831cNxJ0GwT911EVwnQc3g/NsOMSdBudpEGxjsJkFfEkLSfo4mQRtAX8FYGCZBVPxx79WQJUG8by/GW/EkQdaFj+XqPCRBRCVqVa11I0F47PHmi58iQVoeU8XSsyFBgmnf7Oe7IEFKFYraNmofQTQXsTPRRx1BFGkTlmgOG0EIrkevNbsYQYAR1KLRWBZB6L0mHc7pE0FAeXJ5vl8RQUKa4xl0cg1B0Mmn1/kWCEFyxgX7EMMCQVxRMZmx3PpANFJ1tclO8EAgBl+T573XQBTjpXfVctBA1IAie4FV60BFFNu60332QP5dB90Lpv5A9GkPHf9HA0FXF13S2wsHQYJvxNTmpwpBbAJGBnMpDkHGEvsGYcMQQcNgTVCWYBJBP8YxrHvrE0FCUM4Mi2MVQVY2hahlwBZBCkAdrF8QGEGHLUQ3L0AZQcp1lu8DVxpB5bmqdklVG0EygwfWyTYcQfsTbHyNBB1BGQYu4Rm2HUEWu4OW5VIeQbu9S/Ci0h5BnqLI4oIzH0HAbcnTX30fQYpylm+6pR9BjE634GqoH0E98xtksIMfQcTQKoqULB9BzpeiswbBHkGosHi+RCMeQV/lrezwXx1BRsykYqWAHEHnSyxywYIbQawmfnbDiBpB8U/v/jeTGUGE3YB9IJkYQStS7DN2iRdB2q03ygFlFkGhrPdoIjEVQSKY9Z032xNBmonwIiJ9EkFzRNBzHQkRQbrMS6/U/w5BbTrrcVDCC0EJBGE0c4EIQeOyAj5QLQVBAP5E0MvMAUE4P08oRNb8QPAlweroGfZAeB4lG83F7kC4sk4k13nhQOAyuh5OLcJAIFIcsdU10ECEKiKCI0zkQJjJUHIE4+9AjFSw9QZl9UA25VGAFo36QPbKJZlvvP9AYR7qM5JvAkGxTVx+UdUEQSq7OHtWCAdBLJsAlckNCUHtX+vX4d0KQXfGPWk4aQxBtv+G7hG/DUEe6YoElrYOQWQR8+iRNw9B5RkltoFSD0G0kIvscUUPQWlRPW7f9w5BFiH1ZzF+DkH+S8ocI9kNQeDaG1yACA1BUPtoY1URDEFfDHhfgvwKQTw9OBxytglBVB6cEtNPCEHeXYNOF80GQZmOlvPsKgVBAYAVhPtwA0HmEoy+w6MBQYY8Ze+zev9AWpDU7T6q+0AWInxx8Mz3QGwGStrj4vNA8aRZJoUV8EAUmjdy+WXoQA==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"fce8b222-bd06-4595-86ac-57a1335b2552\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"ticker\":null},\"id\":\"c05597ce-ce01-4d57-8606-a51bf970c9e7\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"f6def743-43b5-4654-b13e-b11df9aa9e9a\",\"type\":\"PanTool\"},{\"id\":\"de580add-8cfc-4842-9e51-4855c9a976b4\",\"type\":\"WheelZoomTool\"},{\"id\":\"989c5095-18af-48d8-bff9-03e1a06214b6\",\"type\":\"BoxZoomTool\"},{\"id\":\"ddbbfea1-3481-4b2f-a87c-b9e7e4c1c586\",\"type\":\"SaveTool\"},{\"id\":\"7599a4bb-c646-479a-af75-fd6a60a645e0\",\"type\":\"ResetTool\"},{\"id\":\"a2c50504-c9d3-40ba-be6c-84e064a54fc6\",\"type\":\"HelpTool\"}]},\"id\":\"0324cf1a-5249-47fc-ab8e-357fbc7ef179\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.029567500305002735,\"plot\":null},\"id\":\"f2407ef6-c017-47c1-ae27-85111910d7dd\",\"type\":\"Span\"},{\"attributes\":{\"below\":[{\"id\":\"aa770a80-6004-4cb6-b143-89116bce2c29\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"d9568e4e-5b1b-4457-940f-82706d408628\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"aa770a80-6004-4cb6-b143-89116bce2c29\",\"type\":\"LinearAxis\"},{\"id\":\"95644471-6e2a-4437-b9db-cb51da690ad0\",\"type\":\"Grid\"},{\"id\":\"d9568e4e-5b1b-4457-940f-82706d408628\",\"type\":\"LogAxis\"},{\"id\":\"341a22fd-744a-474d-84a8-664b56904580\",\"type\":\"Grid\"},{\"id\":\"bdd629d8-dc33-4958-b817-08e2fb352806\",\"type\":\"BoxAnnotation\"},{\"id\":\"62acaeac-117f-4063-ad57-909fa8297cfa\",\"type\":\"GlyphRenderer\"},{\"id\":\"f2407ef6-c017-47c1-ae27-85111910d7dd\",\"type\":\"Span\"}],\"title\":{\"id\":\"73e5675d-b8ae-4817-9280-58d2b42b7c5a\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"7eb76d14-1de8-4983-ada0-774031a83c16\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"0324cf1a-5249-47fc-ab8e-357fbc7ef179\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"7566f9eb-6174-4278-b5cd-bd0b3804eb7a\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"2dd1cd39-d78a-4680-a4de-b17eedcb8a5e\",\"type\":\"DataRange1d\"}},\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a2c50504-c9d3-40ba-be6c-84e064a54fc6\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"48942d18-08e3-4f29-a548-53d66959009c\",\"type\":\"BasicTicker\"}},\"id\":\"95644471-6e2a-4437-b9db-cb51da690ad0\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"48942d18-08e3-4f29-a548-53d66959009c\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d4627fe2-a945-4040-8899-be5583534e53\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"X delay time vs. correlation\"},\"id\":\"73e5675d-b8ae-4817-9280-58d2b42b7c5a\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f430473f-c468-4963-95b2-03995d448854\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"c05597ce-ce01-4d57-8606-a51bf970c9e7\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e90a3d22-ee98-4266-be09-d2a3bc00f476\",\"type\":\"LogTicker\"}},\"id\":\"d9568e4e-5b1b-4457-940f-82706d408628\",\"type\":\"LogAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"bdd629d8-dc33-4958-b817-08e2fb352806\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"989c5095-18af-48d8-bff9-03e1a06214b6\",\"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\":\"bdd629d8-dc33-4958-b817-08e2fb352806\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data_source\":{\"id\":\"fce8b222-bd06-4595-86ac-57a1335b2552\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d4627fe2-a945-4040-8899-be5583534e53\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"f430473f-c468-4963-95b2-03995d448854\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"62acaeac-117f-4063-ad57-909fa8297cfa\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ddbbfea1-3481-4b2f-a87c-b9e7e4c1c586\",\"type\":\"SaveTool\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"e90a3d22-ee98-4266-be09-d2a3bc00f476\",\"type\":\"LogTicker\"},{\"attributes\":{},\"id\":\"0076697f-3917-48c9-85f0-5e4ec419e1a9\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"0076697f-3917-48c9-85f0-5e4ec419e1a9\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"48942d18-08e3-4f29-a548-53d66959009c\",\"type\":\"BasicTicker\"}},\"id\":\"aa770a80-6004-4cb6-b143-89116bce2c29\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"7566f9eb-6174-4278-b5cd-bd0b3804eb7a\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"de580add-8cfc-4842-9e51-4855c9a976b4\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"ad7d0678-a97e-436d-955b-9d1a087912a2\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"5e1ca59a-0d3c-46df-b736-bf548e52e35c\",\"elementid\":\"fcb514ab-1b10-4b18-9611-938dd1f8a388\",\"modelid\":\"ad7d0678-a97e-436d-955b-9d1a087912a2\"}];\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(\"fcb514ab-1b10-4b18-9611-938dd1f8a388\")).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=14.8 samples (29.57 ms / -3.521)\n",
"\tgain=31.1 (beta=9.651), bias=260.6\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"928e6e97-0462-48c0-a2af-c61865b60714\"></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(\"928e6e97-0462-48c0-a2af-c61865b60714\").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(\"928e6e97-0462-48c0-a2af-c61865b60714\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '928e6e97-0462-48c0-a2af-c61865b60714' 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 = {\"70e5d1e1-fdaa-42ff-8c41-0d0c70ef654f\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"687faece-884b-458f-b088-057967811c6d\",\"type\":\"PanTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b05cd0a5-ec01-4b39-baa7-872ce6e4e565\",\"type\":\"BasicTicker\"}},\"id\":\"f9912ab9-dad9-4160-a813-d93fa586c497\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"3ee99e1c-5e72-4fc6-bf9f-0ec3a34aa1b6\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"b05cd0a5-ec01-4b39-baa7-872ce6e4e565\",\"type\":\"BasicTicker\"},{\"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\":\"d4a473cc-92d3-4cec-8a79-fe1d9402707a\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"d4a473cc-92d3-4cec-8a79-fe1d9402707a\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"4e71daa2-4191-4d02-bb87-754f2735e323\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"a315e240-f248-4ab8-8c16-0eb39335b601\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8ee6207e-374f-43a0-b5f3-5052ec2deb11\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"829e1bb5-d60a-4ea7-9b62-0f6ae25e931f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a491ca69-e9d2-421f-acc4-d3751094aafc\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"95e711ca-78cb-48ed-9175-73ff1c6a3bb4\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"84b4de90-a899-4e8b-bd78-20859c41a96a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"41cacd78-db7e-4619-bcc2-57220b5e43ac\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"687faece-884b-458f-b088-057967811c6d\",\"type\":\"PanTool\"},{\"id\":\"1b6bf353-a636-41de-8b10-42c7ce652ff9\",\"type\":\"WheelZoomTool\"},{\"id\":\"73da27f9-9702-4f87-b495-37b1e694d871\",\"type\":\"BoxZoomTool\"},{\"id\":\"67d3f01c-5c7b-4a2a-91a4-b12e37f493d9\",\"type\":\"SaveTool\"},{\"id\":\"41cacd78-db7e-4619-bcc2-57220b5e43ac\",\"type\":\"ResetTool\"},{\"id\":\"2dbda4f8-6cb9-4c16-8bab-a078af572dad\",\"type\":\"HelpTool\"}]},\"id\":\"8a3260ca-e384-43c9-9faf-264c89bd8101\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"496715d7-aad7-46fd-9a4c-ea837e316704\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"73da27f9-9702-4f87-b495-37b1e694d871\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2dbda4f8-6cb9-4c16-8bab-a078af572dad\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"95e711ca-78cb-48ed-9175-73ff1c6a3bb4\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"dbd884cf-4e94-443e-901c-c20b49ed2a4d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b05cd0a5-ec01-4b39-baa7-872ce6e4e565\",\"type\":\"BasicTicker\"}},\"id\":\"a0e98d20-2d72-4493-8211-1380a22b7577\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1b6bf353-a636-41de-8b10-42c7ce652ff9\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a491ca69-e9d2-421f-acc4-d3751094aafc\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"dbd884cf-4e94-443e-901c-c20b49ed2a4d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"42c83934-c140-43b3-9f07-53acff85e083\",\"type\":\"BasicTicker\"}},\"id\":\"0f42ec5c-beac-4a0a-97bd-877250ec2172\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"0a68e428-f62c-409c-9b51-fc88f8fd00e8\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"42c83934-c140-43b3-9f07-53acff85e083\",\"type\":\"BasicTicker\"}},\"id\":\"6d87fb3d-ce29-4e23-b303-3f52a4232bf8\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"ed1c7a1f-a7fb-42da-9e51-6649480914f8\",\"type\":\"ToolEvents\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a315e240-f248-4ab8-8c16-0eb39335b601\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"6d87fb3d-ce29-4e23-b303-3f52a4232bf8\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"a0e98d20-2d72-4493-8211-1380a22b7577\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"6d87fb3d-ce29-4e23-b303-3f52a4232bf8\",\"type\":\"LinearAxis\"},{\"id\":\"0f42ec5c-beac-4a0a-97bd-877250ec2172\",\"type\":\"Grid\"},{\"id\":\"a0e98d20-2d72-4493-8211-1380a22b7577\",\"type\":\"LinearAxis\"},{\"id\":\"f9912ab9-dad9-4160-a813-d93fa586c497\",\"type\":\"Grid\"},{\"id\":\"496715d7-aad7-46fd-9a4c-ea837e316704\",\"type\":\"BoxAnnotation\"},{\"id\":\"8ee6207e-374f-43a0-b5f3-5052ec2deb11\",\"type\":\"GlyphRenderer\"},{\"id\":\"84b4de90-a899-4e8b-bd78-20859c41a96a\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"cf2b28eb-be1f-46ab-bfd1-a9694dbb7c11\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"ed1c7a1f-a7fb-42da-9e51-6649480914f8\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"8a3260ca-e384-43c9-9faf-264c89bd8101\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"24af6d90-b034-4538-bb5b-efa9d8ec84d1\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"3ee99e1c-5e72-4fc6-bf9f-0ec3a34aa1b6\",\"type\":\"DataRange1d\"}},\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"42c83934-c140-43b3-9f07-53acff85e083\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"24af6d90-b034-4538-bb5b-efa9d8ec84d1\",\"type\":\"DataRange1d\"},{\"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\":\"496715d7-aad7-46fd-9a4c-ea837e316704\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":null,\"text\":\"X shifted to line up\"},\"id\":\"cf2b28eb-be1f-46ab-bfd1-a9694dbb7c11\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"5f2b02c2-7093-4530-be4b-49c833162e78\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"67d3f01c-5c7b-4a2a-91a4-b12e37f493d9\",\"type\":\"SaveTool\"},{\"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\":\"829e1bb5-d60a-4ea7-9b62-0f6ae25e931f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4e71daa2-4191-4d02-bb87-754f2735e323\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"0a68e428-f62c-409c-9b51-fc88f8fd00e8\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"5f2b02c2-7093-4530-be4b-49c833162e78\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"70e5d1e1-fdaa-42ff-8c41-0d0c70ef654f\",\"elementid\":\"928e6e97-0462-48c0-a2af-c61865b60714\",\"modelid\":\"5f2b02c2-7093-4530-be4b-49c833162e78\"}];\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(\"928e6e97-0462-48c0-a2af-c61865b60714\")).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=\"5c3d5274-d7d7-45ae-a667-4183983a9384\"></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(\"5c3d5274-d7d7-45ae-a667-4183983a9384\").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(\"5c3d5274-d7d7-45ae-a667-4183983a9384\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '5c3d5274-d7d7-45ae-a667-4183983a9384' 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 = {\"0a19ed39-eb3f-484e-8b10-6e0ca9853179\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"77b9b8c8-714b-41c5-90ac-55d3a1d5c7f8\",\"type\":\"ToolEvents\"},{\"attributes\":{\"below\":[{\"id\":\"12bb60da-1b4d-4e40-b9e2-2acb18de6df6\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"99deea86-1a9a-4540-b852-2dc9bc44192c\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"12bb60da-1b4d-4e40-b9e2-2acb18de6df6\",\"type\":\"LinearAxis\"},{\"id\":\"bcb3f152-0eca-4354-87c7-e334e97a4a82\",\"type\":\"Grid\"},{\"id\":\"99deea86-1a9a-4540-b852-2dc9bc44192c\",\"type\":\"LinearAxis\"},{\"id\":\"aa36eeda-5b0c-4d9e-ad6b-f7b0579894fc\",\"type\":\"Grid\"},{\"id\":\"20c15f9c-1cfb-4bbd-8dfb-b9c85d64b275\",\"type\":\"BoxAnnotation\"},{\"id\":\"33451296-6076-42a7-9352-79405407fa26\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"84574847-eb43-4c01-b363-4e87b7a7babf\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"77b9b8c8-714b-41c5-90ac-55d3a1d5c7f8\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"86005456-0d98-4bb0-bc56-7da666b3a817\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"ed5e9ee4-4fb1-4688-8c34-495ce6338f27\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"655fbc45-bcc6-45e3-a1ea-b09b38a46c58\",\"type\":\"DataRange1d\"}},\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4baef177-5dd1-4c0f-aa04-e4da5d60bfa6\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"d92bba4a-fd22-4910-b177-493ca1dda470\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c6d088e8-4e86-487a-9000-1181900c2c0a\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"d92bba4a-fd22-4910-b177-493ca1dda470\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"669097d7-2792-4891-ba95-90e642ab83a3\",\"type\":\"BasicTicker\"}},\"id\":\"12bb60da-1b4d-4e40-b9e2-2acb18de6df6\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6dbe80ee-8673-41b1-9944-8915efd32d15\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"16f78438-7249-4b30-a006-0b7a30cb2e8c\",\"type\":\"PanTool\"},{\"id\":\"c8ead234-f4c0-4b19-aae5-8154525496b5\",\"type\":\"WheelZoomTool\"},{\"id\":\"2e9f17d2-d09a-45e2-95be-ea338a5bd812\",\"type\":\"BoxZoomTool\"},{\"id\":\"b917b779-02e9-49d3-9368-62864d79ffe9\",\"type\":\"SaveTool\"},{\"id\":\"64a90d7f-4a75-4105-affc-45332517375a\",\"type\":\"ResetTool\"},{\"id\":\"53b925ea-82cd-492c-8265-b195fc1629f7\",\"type\":\"HelpTool\"}]},\"id\":\"86005456-0d98-4bb0-bc56-7da666b3a817\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"20c15f9c-1cfb-4bbd-8dfb-b9c85d64b275\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b917b779-02e9-49d3-9368-62864d79ffe9\",\"type\":\"SaveTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6dbe80ee-8673-41b1-9944-8915efd32d15\",\"type\":\"BasicTicker\"}},\"id\":\"aa36eeda-5b0c-4d9e-ad6b-f7b0579894fc\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"075efb43-91a0-4dc4-961c-523a47c31f0c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6dbe80ee-8673-41b1-9944-8915efd32d15\",\"type\":\"BasicTicker\"}},\"id\":\"99deea86-1a9a-4540-b852-2dc9bc44192c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"53b925ea-82cd-492c-8265-b195fc1629f7\",\"type\":\"HelpTool\"},{\"attributes\":{\"data_source\":{\"id\":\"773e0999-c2a6-4fd6-ac7b-98f00d84d499\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c6d088e8-4e86-487a-9000-1181900c2c0a\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4baef177-5dd1-4c0f-aa04-e4da5d60bfa6\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"33451296-6076-42a7-9352-79405407fa26\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c8ead234-f4c0-4b19-aae5-8154525496b5\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"ed5e9ee4-4fb1-4688-8c34-495ce6338f27\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":null,\"text\":\"residual X\"},\"id\":\"84574847-eb43-4c01-b363-4e87b7a7babf\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"64a90d7f-4a75-4105-affc-45332517375a\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"20c15f9c-1cfb-4bbd-8dfb-b9c85d64b275\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2e9f17d2-d09a-45e2-95be-ea338a5bd812\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"669097d7-2792-4891-ba95-90e642ab83a3\",\"type\":\"BasicTicker\"}},\"id\":\"bcb3f152-0eca-4354-87c7-e334e97a4a82\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"655fbc45-bcc6-45e3-a1ea-b09b38a46c58\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"16f78438-7249-4b30-a006-0b7a30cb2e8c\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"075efb43-91a0-4dc4-961c-523a47c31f0c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"669097d7-2792-4891-ba95-90e642ab83a3\",\"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\":\"773e0999-c2a6-4fd6-ac7b-98f00d84d499\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"79b6fc56-a654-45ed-8cb8-ff68624efba9\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"0a19ed39-eb3f-484e-8b10-6e0ca9853179\",\"elementid\":\"5c3d5274-d7d7-45ae-a667-4183983a9384\",\"modelid\":\"79b6fc56-a654-45ed-8cb8-ff68624efba9\"}];\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(\"5c3d5274-d7d7-45ae-a667-4183983a9384\")).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=\"5e18efe0-6cf8-482a-a233-03b8e7dc7dd7\"></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(\"5e18efe0-6cf8-482a-a233-03b8e7dc7dd7\").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(\"5e18efe0-6cf8-482a-a233-03b8e7dc7dd7\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '5e18efe0-6cf8-482a-a233-03b8e7dc7dd7' 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 = {\"42c04733-c3a8-4353-a008-c5df18662fe8\":{\"roots\":{\"references\":[{\"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\":\"60fe7a69-0c14-4ade-9193-194e4fcb6cbb\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.030307891227097414,\"plot\":null},\"id\":\"b0e0c76b-219b-4308-abd5-3890a2bf2ef0\",\"type\":\"Span\"},{\"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__\":\"H15U3OPaF0FC4fL2giMaQY4vYL59iBxBlUkRS0fpHkFauwIVlI0gQRl7oLEjkSFBrqhDILl+IkGEF//tM1AjQW6fEh9IByRBR9jG0uOlJEEicCJEMyklQYTTov/mkiVBUMnaz5XjJUFoAElsrR0mQe1fYKafQyZBdar5/2RTJkGqRpQSD0wmQbLUHbqMLSZBRtbOSMn2JUHOnWtXE6wlQQrSVFRFTiVBfZL5IBDeJEFikZHXO14kQQOBz6S2zCNBiwMbV5QuI0GBqHOKUYMiQZ0/3SnXzCFBgeGORDMMIUHykyoMzDwgQeXdDpgK0B5BDpJVzRYOHUEy5XlIizwbQfjvOVWPWRlBp4W/pnl4F0FpN9dwRXgVQR8UEu9mYRNBoZbJWf5QEUHa1bfZaXMOQW1NXR9+RwpBZUrEb1caBkGTy8ebjgECQS40NPB5u/tAv3lmla3S80C8srV/abTnQJjDim/zL9BAaOtV0L3ny0CSMdxBWt/lQDDmUGcUIfJAAk6pS80F+UBU63eYW+T/QJFLBL4dNQNB6SpSUrNbBkEAnwCwI2cJQbp/CgQGSQxBpI/siyEPD0FOAkj2TNUQQbhFSev7ExJBIuQm5mZBE0H6Xf/luVkUQXip9cNAZBVBrGAduXtZFkF7JiD3c0UXQexKkPvNIBhBBMOnewvyGEEcrzJ0l6wZQQYJlAj6RRpBIlE4oYfrGkGco3JwRn8bQZHCQ8Z+8RtBjM2A3glKHEHtsM37Lo4cQRFm0fK8rhxBnrvLyYy4HEFYKR1DyaQcQYe7lXEEdxxBFtVOKAUtHEFDZPML4swbQT1uZjj1WxtB3BspM5vTGkF+9LMjnjIaQUtL3EI3fxlBGDPd0Ee6GEEhlLpwkOUXQd442bHT/BZBhxTKMqQHFkEo8oZs9QcVQaRyTuo4+RNBggCVtrrmEkGGV5enNMIRQf8XZ+7KnBBB4D8L7+PqDkEirGdAGJQMQTPQyVQRNApBIjDa9r3YB0FR/XBP8WsFQfgLT9N8CANBBHg1ESOtAEHQxkIcydT8QJyV8+NoJvhAUtpcGKJP80CY3sD5a7XtQMhvESgJD+VAIAGST/cB2UCwmWXghBfCQGDjusN5O7hAoCNeLojB1EDsh0UjrbjgQIxRmdWEIOdADOGGg83/7EApZRKuHy/xQP/osTJTpvNAEqdycUzd9UAIegqNUcP3QJG3TEBkpvlASkj8qbtS+0DpjLrWcbr8QGY6xx9I//1Acf/Ex2YM/0CDoLK8fwAAQedYnGPaXgBByN4qfeytAEExigO1LPIAQWsLDrnrKQFB9FkP7HNYAUEcAOpx2mwBQQzXQO5BgwFBYmHsSfqMAUGf91sC2aABQQ==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"faed6f09-3c54-4ab6-8266-f50e1e44b08f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"21fe0706-3dcb-43e1-998f-86b8755376e7\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"dc05df19-0042-4704-acab-d53ad010eb65\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"dba29d47-4f4f-48a5-bcea-5a8b25eec254\",\"type\":\"ResetTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6f90d049-1240-41fb-a449-7fdd29923fdc\",\"type\":\"LogTicker\"}},\"id\":\"b57b4fca-07ca-4607-ad7f-72601299fda0\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c301d78a-7a9e-42ec-b715-31acfd095be6\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"c451e9bc-0ce6-4a06-8d0a-6f92c51441eb\",\"type\":\"ToolEvents\"},{\"attributes\":{\"callback\":null},\"id\":\"55f3a99d-f782-420d-8208-c6b204ee4632\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"19abbef2-0028-4b44-9526-4b921ae257e0\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"10cfa1fa-d087-4ff0-bcb0-76ee2cf86377\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"19abbef2-0028-4b44-9526-4b921ae257e0\",\"type\":\"LinearAxis\"},{\"id\":\"ee5481c7-78b2-4b63-ac89-b448fecb7a7d\",\"type\":\"Grid\"},{\"id\":\"10cfa1fa-d087-4ff0-bcb0-76ee2cf86377\",\"type\":\"LogAxis\"},{\"id\":\"b57b4fca-07ca-4607-ad7f-72601299fda0\",\"type\":\"Grid\"},{\"id\":\"60fe7a69-0c14-4ade-9193-194e4fcb6cbb\",\"type\":\"BoxAnnotation\"},{\"id\":\"5e78ce89-3b34-4e5d-9fcc-6485c0eb54c4\",\"type\":\"GlyphRenderer\"},{\"id\":\"b0e0c76b-219b-4308-abd5-3890a2bf2ef0\",\"type\":\"Span\"}],\"title\":{\"id\":\"3b2252f2-3b47-405f-b01d-e7cf7aadb246\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"c451e9bc-0ce6-4a06-8d0a-6f92c51441eb\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"6431e638-628e-45b8-9f8f-dd1372f31753\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"55f3a99d-f782-420d-8208-c6b204ee4632\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"dc05df19-0042-4704-acab-d53ad010eb65\",\"type\":\"DataRange1d\"}},\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"49b0c24a-5546-437e-bc04-a3f61d73d81e\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"beca3e6d-a372-4794-a2a4-45508f4b93f6\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b27f6f0e-c985-4834-80b6-923f67863729\",\"type\":\"BasicTicker\"}},\"id\":\"ee5481c7-78b2-4b63-ac89-b448fecb7a7d\",\"type\":\"Grid\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"6f90d049-1240-41fb-a449-7fdd29923fdc\",\"type\":\"LogTicker\"},{\"attributes\":{},\"id\":\"b27f6f0e-c985-4834-80b6-923f67863729\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"21fe0706-3dcb-43e1-998f-86b8755376e7\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b27f6f0e-c985-4834-80b6-923f67863729\",\"type\":\"BasicTicker\"}},\"id\":\"19abbef2-0028-4b44-9526-4b921ae257e0\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3a0ad578-f3b5-47b4-9a4b-addb9f66a04b\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"faed6f09-3c54-4ab6-8266-f50e1e44b08f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"beca3e6d-a372-4794-a2a4-45508f4b93f6\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"3a0ad578-f3b5-47b4-9a4b-addb9f66a04b\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"5e78ce89-3b34-4e5d-9fcc-6485c0eb54c4\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"28aade36-41b0-4187-b630-bc2efde4ab10\",\"type\":\"PanTool\"},{\"id\":\"4208cd13-d49d-40b8-a44a-eb83459ea3e7\",\"type\":\"WheelZoomTool\"},{\"id\":\"56c2d58d-ecf5-4838-a727-d7937ad5c1b8\",\"type\":\"BoxZoomTool\"},{\"id\":\"c301d78a-7a9e-42ec-b715-31acfd095be6\",\"type\":\"SaveTool\"},{\"id\":\"dba29d47-4f4f-48a5-bcea-5a8b25eec254\",\"type\":\"ResetTool\"},{\"id\":\"49b0c24a-5546-437e-bc04-a3f61d73d81e\",\"type\":\"HelpTool\"}]},\"id\":\"6431e638-628e-45b8-9f8f-dd1372f31753\",\"type\":\"Toolbar\"},{\"attributes\":{\"formatter\":{\"id\":\"a09b48e0-2ba7-4827-adfd-410907861dc3\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6f90d049-1240-41fb-a449-7fdd29923fdc\",\"type\":\"LogTicker\"}},\"id\":\"10cfa1fa-d087-4ff0-bcb0-76ee2cf86377\",\"type\":\"LogAxis\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"28aade36-41b0-4187-b630-bc2efde4ab10\",\"type\":\"PanTool\"},{\"attributes\":{\"plot\":null,\"text\":\"Y delay time vs. correlation\"},\"id\":\"3b2252f2-3b47-405f-b01d-e7cf7aadb246\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4208cd13-d49d-40b8-a44a-eb83459ea3e7\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"60fe7a69-0c14-4ade-9193-194e4fcb6cbb\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"56c2d58d-ecf5-4838-a727-d7937ad5c1b8\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"ticker\":null},\"id\":\"a09b48e0-2ba7-4827-adfd-410907861dc3\",\"type\":\"LogTickFormatter\"}],\"root_ids\":[\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"42c04733-c3a8-4353-a008-c5df18662fe8\",\"elementid\":\"5e18efe0-6cf8-482a-a233-03b8e7dc7dd7\",\"modelid\":\"f5b16f3a-10fb-4f09-8794-1e9664eebb22\"}];\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(\"5e18efe0-6cf8-482a-a233-03b8e7dc7dd7\")).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=15.2 samples (30.31 ms / -3.496)\n",
"\tgain=26.9 (beta=9.506), bias=57.1\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"d0c5cf52-ce94-46a9-b567-18b5995cecbe\"></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(\"d0c5cf52-ce94-46a9-b567-18b5995cecbe\").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(\"d0c5cf52-ce94-46a9-b567-18b5995cecbe\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'd0c5cf52-ce94-46a9-b567-18b5995cecbe' 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 = {\"0433105b-2d11-4a0c-babb-ae80937c23fb\":{\"roots\":{\"references\":[{\"attributes\":{\"formatter\":{\"id\":\"5a524a95-1f49-4a08-897f-473ed0268414\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"778206c0-2783-4df6-ac58-f64fa2422018\",\"type\":\"BasicTicker\"}},\"id\":\"df5ebe4e-0b9a-40bf-b839-0c85e94274fc\",\"type\":\"LinearAxis\"},{\"attributes\":{\"below\":[{\"id\":\"4942426c-46d4-43d2-8bd5-3ac8a9f22fe2\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"df5ebe4e-0b9a-40bf-b839-0c85e94274fc\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"4942426c-46d4-43d2-8bd5-3ac8a9f22fe2\",\"type\":\"LinearAxis\"},{\"id\":\"6588762c-fee3-44fe-a6ff-3f2b47a8a966\",\"type\":\"Grid\"},{\"id\":\"df5ebe4e-0b9a-40bf-b839-0c85e94274fc\",\"type\":\"LinearAxis\"},{\"id\":\"0e8dda22-d0fe-499d-8011-4974ad8f4657\",\"type\":\"Grid\"},{\"id\":\"206fa45b-fde7-40f2-ad74-a0b57669eaf5\",\"type\":\"BoxAnnotation\"},{\"id\":\"8456e6f7-edaa-472f-a5d4-7ae4beb3ee96\",\"type\":\"GlyphRenderer\"},{\"id\":\"90580564-e4f8-41e7-8d41-f6829127a307\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"aa22dfd3-06cc-4bb7-816b-951835704a13\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"390ec565-0369-4da5-b6cd-0aeca9f36cef\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"588bb88f-92f0-4e9f-9f1d-c46e42389c89\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"aaec5e64-6226-453a-860a-2975d9b9f94e\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"da99c32a-e145-4e74-94a1-7133b58f2d4b\",\"type\":\"DataRange1d\"}},\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"51d848a8-46e9-47e9-843b-e2e96d90886a\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"AAAAAGDcVcAAAAAAIIdjwAAAAADgQWPAAAAAABD8U8AAAAAAwL1HwAAAAADAxjHAAAAAAEDgPkAAAAAA8JxUQAAAAAAQqltAAAAAAOC5ZUAAAAAAsCtpQAAAAACAnG1AAAAAAIhccUAAAAAALO9yQAAAAACMUnVAAAAAAHyXd0AAAAAAeKB3QAAAAABA4HlAAAAAAKwQe0AAAAAA4EF8QAAAAAAEln1AAAAAACpDfkAAAAAA9MR+QAAAAAADR4BAAAAAAP7Df0AAAAAAj1eAQAAAAAAdQIBAAAAAAFVOgEAAAAAAewKAQAAAAAAVD4BAAAAAAEo3f0AAAAAAgeJ+QAAAAABqK39AAAAAANIafUAAAACA5gJ+QAAAAECIInxAAAAAAHc9e0AAAADQb4B6QAAAAFAxmXlAAAAAoLw0eEAAAACAhql3QAAAAIDKxnRAAAAAANWfdUAAAACAFMdzQAAAAACWt3FAAAAAAJ+lcEAAAAAAsp1uQAAAAAAWt2tAAAAAABA4akAAAAAAzDdnQAAAAACuiGVAAAAAADawYkAAAAAAoAVfQAAAAAAIb11AAAAAAFjdU0AAAAAAWDVUQAAAAABgO05AAAAAADAUQ0AAAAAAYHo9QAAAAAAA+wFAAAAAAEA6JsAAAAAA4EIywAAAAACgRUHAAAAAANBbScAAAAAAQBhMwAAAAAAIWlHAAAAAAPg6UsAAAAAAADBVwAAAAAAMsFfAAAAAADx+VsAAAAAAxMlcwAAAAABkVVrAAAAAAEAeXMAAAAAApEVfwAAAAABsTl7AAAAAAAxHXsAAAAAALNBdwAAAAAC821/AAAAAAOzCYMAAAAAAQpxhwAAAAACgOmHAAAAAAEANYMAAAAAAesNiwAAAAAB4EmHAAAAAAP5eYMAAAAAA+WFhwAAAAAAq32DAAAAAAF0kYcAAAAAACOVgwAAAAAD82V7AAAAAACjIXcAAAAAAZ0dgwAAAAACs9V3AAAAAAFXMX8AAAAAA0WxbwAAAAADNtlnAAAAAAP91W8AAAACAPq1XwAAAAAAAY1jAAAAAAAezVMAAAAAA0P5TwAAAAACuyVTAAAAAqO0PU8AAAABYWvJQwAAAAMDGI1LAAAAAAJKCSMAAAACAAGROwAAAAABDckjAAAAAADbJSMAAAAAAuN9DwAAAAACRcUPAAAAAAD75NMAAAAAAMIU+wAAAAADi2jvAAAAAABgjLcAAAAAANFcnwAAAAACAEOC/AAAAALDRGsAAAAAAoIMFQAAAAACALPm/AAAAAFDhIEAAAAAAcDsDQAAAAACMLCxAAAAAABJcNkAAAAAARFsyQAAAAABqPDdAAAAAAPgNJ0AAAAAAyNk7QAAAAAASKTZAAAAAAGV6QEAAAAAAFs07QAAAAACUl0BAAAAAAMYkO0AAAAAArqE2QAAAAAA9s0JAAAAAANdQP0AAAACAuqM7QAAAAEBUg0NAAAAAIEZmQkAAAACgiUxFQAAAAEDrDEhAAAAAAGirRkAAAACATG9IQAAAAIABuEdAAAAAAG76SEAAAAAApMBCQAAAAAARTURAAAAAAFVGRUAAAAAAAKFFQAAAAACI3zdAAAAAAIe0RUAAAAAA72NCQAAAAAB0o0NAAAAAAFApPUAAAAAAZmFEQAAAAABweDZAAAAAAIRSQUAAAAAAkMs2QAAAAAAoQD9AAAAAANDcIEAAAAAABn9EwAAAAACFYVbAAAAAACd+XMAAAACAZx1YwAAAAADQSUXAAAAAAJA4CsAAAAAAKgFQQAAAAABnAlxAAAAAAAM5Y0AAAAAACGhlQAAAAABB8GxAAAAAgPojcEAAAACA8t9xQAAAAABfQHJAAAAAAA9ycUAAAAAAQEZzQAAAAABVaXVAAAAAAIWHdkAAAAAA7ZF3QAAAAABvlHdAAAAAAOpUd0AAAAAA4qZ2QAAAAADiPXdAAAAAABITdUAAAAAAtKN0QAAAAADKwHNAAAAAALajckAAAAAANBZzQAAAAACARnJAAAAAAAhFcUAAAAAAXjlxQAAAAAAuoXBAAAAAAHIhcEAAAAAANrlwQAAAAACgDnBAAAAAAMgQa0AAAAAAaKlnQAAAAAB4L2FAAAAAAFAOWkAAAAAAIJRNQAAAAACA+ztAAAAAAMDUPcAAAAAAoChOwAAAAAAQZVnAAAAAANC6YMAAAAAAyAVkwAAAAAAo/GnAAAAAACAbbsAAAAAAIPlwwAAAAADSnHPAAAAAAOhAdcAAAAAAMKB2wAAAAAAAgXjAAAAAAHgAesAAAAAA0m17wAAAAACo5XvAAAAAAGapfcAAAAAAtMh9wAAAAADDLn7AAAAAANkFf8AAAAAALXR9wAAAAACdL37AAAAAgAYVfcAAAAAAMIp9wAAAAAAtfHzAAAAAwKdSe8AAAADgwgV7wAAAAAD0Z3zAAAAAYD45fcAAAAAAHmN9wAAAAACckH7AAAAAgOCkfsAAAACAUQOAwAAAAAAhGYDAAAAAABkxgMAAAAAApHOAwAAAAADC9X/AAAAAAMMOgMAAAAAAIxSAwAAAAACG2H7AAAAAAP5vf8AAAAAAdpR+wAAAAAAmbn3AAAAAANgQfcAAAAAAtOd7wAAAAABwrHrAAAAAAOCEecAAAAAAoCR4wAAAAAAgjHbAAAAAAPxndMAAAAAAWM9ywAAAAAB0bnHAAAAAAOgjb8AAAAAAEGJtwAAAAABAFmvAAAAAAFgPZ8A=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"3261a097-4253-4cd6-afd1-864fbd6fe241\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8a8f60ec-b5d9-4291-9e10-e8ac53351f84\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"3261a097-4253-4cd6-afd1-864fbd6fe241\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"8a8f60ec-b5d9-4291-9e10-e8ac53351f84\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"8ce421de-14ed-4a72-858b-92c0e7871ec1\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8456e6f7-edaa-472f-a5d4-7ae4beb3ee96\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8ce421de-14ed-4a72-858b-92c0e7871ec1\",\"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\":\"206fa45b-fde7-40f2-ad74-a0b57669eaf5\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a6d05f3d-d97d-491f-ab63-d5a1ac31d7ba\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"91fc317a-9e7b-4ae6-985d-dd5cc9ca624c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ecee22d1-396d-47ab-b7a8-5c034383697a\",\"type\":\"BasicTicker\"}},\"id\":\"4942426c-46d4-43d2-8bd5-3ac8a9f22fe2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"e8049f54-38b3-4bd4-8fde-9f8a46042e6e\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cbf36f5c-e5c3-4dd6-8d63-03668d75ec7f\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"a6d05f3d-d97d-491f-ab63-d5a1ac31d7ba\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"90580564-e4f8-41e7-8d41-f6829127a307\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"ecee22d1-396d-47ab-b7a8-5c034383697a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3af58add-5ce4-4c78-a544-d1867e542c95\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"206fa45b-fde7-40f2-ad74-a0b57669eaf5\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"00323f43-39b4-4b0b-b85a-136a14b93666\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"91fc317a-9e7b-4ae6-985d-dd5cc9ca624c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2e8ce32e-a1c8-42dc-8f9d-9bd40e9c7f6f\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e9bb6a65-93f5-4f80-b0ff-336c27a9724f\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":null,\"text\":\"Y shifted to line up\"},\"id\":\"aa22dfd3-06cc-4bb7-816b-951835704a13\",\"type\":\"Title\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"51d848a8-46e9-47e9-843b-e2e96d90886a\",\"type\":\"PanTool\"},{\"id\":\"2e8ce32e-a1c8-42dc-8f9d-9bd40e9c7f6f\",\"type\":\"WheelZoomTool\"},{\"id\":\"00323f43-39b4-4b0b-b85a-136a14b93666\",\"type\":\"BoxZoomTool\"},{\"id\":\"7d73782d-3cdc-4783-8911-312bd9b06562\",\"type\":\"SaveTool\"},{\"id\":\"e9bb6a65-93f5-4f80-b0ff-336c27a9724f\",\"type\":\"ResetTool\"},{\"id\":\"3af58add-5ce4-4c78-a544-d1867e542c95\",\"type\":\"HelpTool\"}]},\"id\":\"588bb88f-92f0-4e9f-9f1d-c46e42389c89\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cbf36f5c-e5c3-4dd6-8d63-03668d75ec7f\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7d73782d-3cdc-4783-8911-312bd9b06562\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"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\":\"e8049f54-38b3-4bd4-8fde-9f8a46042e6e\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5a524a95-1f49-4a08-897f-473ed0268414\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"aaec5e64-6226-453a-860a-2975d9b9f94e\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"778206c0-2783-4df6-ac58-f64fa2422018\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"390ec565-0369-4da5-b6cd-0aeca9f36cef\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ecee22d1-396d-47ab-b7a8-5c034383697a\",\"type\":\"BasicTicker\"}},\"id\":\"6588762c-fee3-44fe-a6ff-3f2b47a8a966\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"da99c32a-e145-4e74-94a1-7133b58f2d4b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"778206c0-2783-4df6-ac58-f64fa2422018\",\"type\":\"BasicTicker\"}},\"id\":\"0e8dda22-d0fe-499d-8011-4974ad8f4657\",\"type\":\"Grid\"}],\"root_ids\":[\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"0433105b-2d11-4a0c-babb-ae80937c23fb\",\"elementid\":\"d0c5cf52-ce94-46a9-b567-18b5995cecbe\",\"modelid\":\"f111fe0d-3ff0-45fa-8805-64f606bc8ded\"}];\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(\"d0c5cf52-ce94-46a9-b567-18b5995cecbe\")).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=\"81755305-0e83-4c02-82ea-9786943ac686\"></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(\"81755305-0e83-4c02-82ea-9786943ac686\").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(\"81755305-0e83-4c02-82ea-9786943ac686\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '81755305-0e83-4c02-82ea-9786943ac686' 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 = {\"e6c52508-e27b-4937-8d64-9b3cd2d0a03f\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"e0747eb4-af29-4cc2-a9b0-94a60c641e3e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"7fa82b69-312f-4b4c-8857-2f610a6bc22f\",\"type\":\"PanTool\"},{\"id\":\"1130787c-516c-4aff-a013-64a3eb011301\",\"type\":\"WheelZoomTool\"},{\"id\":\"62e68f26-eda2-467e-afde-877d37786740\",\"type\":\"BoxZoomTool\"},{\"id\":\"0dba774b-41e5-48df-a0a8-434df2d59b69\",\"type\":\"SaveTool\"},{\"id\":\"b39db392-11e6-4d7e-b6ae-352cff390436\",\"type\":\"ResetTool\"},{\"id\":\"aa59361b-b746-4277-b048-647e25773fb7\",\"type\":\"HelpTool\"}]},\"id\":\"69d33725-f061-4a1e-a3ae-4da1bb2bb132\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Y\"},\"id\":\"8ab3af5b-df8e-4989-b17b-97f73ee5c2e3\",\"type\":\"Title\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"79635b29-7fb1-4d3f-b640-40422a89cb98\",\"type\":\"BasicTicker\"}},\"id\":\"dbde981e-7296-4293-a1e4-e8ad85ef54a1\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"656df23e-4d14-4ace-914d-f18c31a687cb\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b39db392-11e6-4d7e-b6ae-352cff390436\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"79635b29-7fb1-4d3f-b640-40422a89cb98\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7fa82b69-312f-4b4c-8857-2f610a6bc22f\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"7f88836d-10eb-4557-861a-189fa6fc6b15\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"1cd9a737-e5da-40fc-8f69-47f039f7295b\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"7f88836d-10eb-4557-861a-189fa6fc6b15\",\"type\":\"LinearAxis\"},{\"id\":\"a8711733-1c44-4f9d-9111-444c3d7820ca\",\"type\":\"Grid\"},{\"id\":\"1cd9a737-e5da-40fc-8f69-47f039f7295b\",\"type\":\"LinearAxis\"},{\"id\":\"dbde981e-7296-4293-a1e4-e8ad85ef54a1\",\"type\":\"Grid\"},{\"id\":\"2899f397-f404-4fd7-b0dc-4d1a3d045f94\",\"type\":\"BoxAnnotation\"},{\"id\":\"982da85c-7472-469d-b118-16cfea7dcd5b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"8ab3af5b-df8e-4989-b17b-97f73ee5c2e3\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"2ee80a3c-feb8-4a58-8510-2252f8c472ce\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"69d33725-f061-4a1e-a3ae-4da1bb2bb132\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"5825a209-c14c-41bf-b5b4-4447d9380104\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"16e9e1b8-e109-4cb2-bb8b-70491d02abdd\",\"type\":\"DataRange1d\"}},\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"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\":\"fc0e59ad-e2ef-48cc-89a3-ddc8fceb7cff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"51bea409-13ed-48f6-bc28-c5c794af757f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"5825a209-c14c-41bf-b5b4-4447d9380104\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"2899f397-f404-4fd7-b0dc-4d1a3d045f94\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"62e68f26-eda2-467e-afde-877d37786740\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1130787c-516c-4aff-a013-64a3eb011301\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"e7b19074-30ca-4416-a645-7774e1b77b46\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"fc0e59ad-e2ef-48cc-89a3-ddc8fceb7cff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cbcb70dd-b3ce-4574-b948-84a780884341\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"e7b19074-30ca-4416-a645-7774e1b77b46\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"982da85c-7472-469d-b118-16cfea7dcd5b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"656df23e-4d14-4ace-914d-f18c31a687cb\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"51bea409-13ed-48f6-bc28-c5c794af757f\",\"type\":\"BasicTicker\"}},\"id\":\"7f88836d-10eb-4557-861a-189fa6fc6b15\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"16e9e1b8-e109-4cb2-bb8b-70491d02abdd\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0dba774b-41e5-48df-a0a8-434df2d59b69\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"51bea409-13ed-48f6-bc28-c5c794af757f\",\"type\":\"BasicTicker\"}},\"id\":\"a8711733-1c44-4f9d-9111-444c3d7820ca\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"aa59361b-b746-4277-b048-647e25773fb7\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2ee80a3c-feb8-4a58-8510-2252f8c472ce\",\"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\":\"2899f397-f404-4fd7-b0dc-4d1a3d045f94\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cbcb70dd-b3ce-4574-b948-84a780884341\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"e0747eb4-af29-4cc2-a9b0-94a60c641e3e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"05138135-024f-4545-94c6-7c9efc79cb2f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"79635b29-7fb1-4d3f-b640-40422a89cb98\",\"type\":\"BasicTicker\"}},\"id\":\"1cd9a737-e5da-40fc-8f69-47f039f7295b\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"05138135-024f-4545-94c6-7c9efc79cb2f\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"e6c52508-e27b-4937-8d64-9b3cd2d0a03f\",\"elementid\":\"81755305-0e83-4c02-82ea-9786943ac686\",\"modelid\":\"05138135-024f-4545-94c6-7c9efc79cb2f\"}];\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(\"81755305-0e83-4c02-82ea-9786943ac686\")).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=\"1d14e05b-52c9-43e0-914a-303911a15c0a\"></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(\"1d14e05b-52c9-43e0-914a-303911a15c0a\").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(\"1d14e05b-52c9-43e0-914a-303911a15c0a\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '1d14e05b-52c9-43e0-914a-303911a15c0a' 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 = {\"16794b64-b90c-4bd5-8f13-6d273c52eb62\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1c08db46-f43e-40cf-9579-f3c637047cb4\",\"type\":\"PanTool\"},{\"attributes\":{\"ticker\":null},\"id\":\"66123517-f5c4-40d0-9876-e07d849fa673\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"afa2cf4b-66ac-4792-925a-676089692db3\",\"type\":\"LogTicker\"}},\"id\":\"df9e104f-86b8-43e8-b1b4-aad28d5c6ca5\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2536a299-f627-4316-9b27-ef22da3713c3\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2536a299-f627-4316-9b27-ef22da3713c3\",\"type\":\"BasicTicker\"}},\"id\":\"617e0ffc-784a-48b8-b8ee-fd6339ba6e9a\",\"type\":\"Grid\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"afa2cf4b-66ac-4792-925a-676089692db3\",\"type\":\"LogTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"f54c91c0-76d2-4a44-83db-6c308af10397\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"b3ceb973-5d47-45af-9627-bd312ba7649f\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"677c9ae5-b8dc-4456-8e87-103218cc2ecc\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"formatter\":{\"id\":\"66123517-f5c4-40d0-9876-e07d849fa673\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"afa2cf4b-66ac-4792-925a-676089692db3\",\"type\":\"LogTicker\"}},\"id\":\"b46836eb-c9ad-4065-828b-09795c81c30f\",\"type\":\"LogAxis\"},{\"attributes\":{},\"id\":\"d153a705-d354-4a96-9d3f-27982b6ccf93\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"88b1376a-e350-4bbe-93dc-7570165078ff\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":null,\"text\":\"Z delay time vs. correlation\"},\"id\":\"3f2cc38b-bde2-4b69-8858-d86a8a784f4a\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"68f1474a-3b48-4477-99db-5b7cc13eae52\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"fdaf2ea2-f55f-4f2a-81a1-2a2baec35a95\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9c8bae71-95ce-4ca1-a4a5-5375261da266\",\"type\":\"SaveTool\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.004715100823086278,\"plot\":null},\"id\":\"2bb5117c-d2d8-46b0-a8dc-66fffc506738\",\"type\":\"Span\"},{\"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\":\"b3ceb973-5d47-45af-9627-bd312ba7649f\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"below\":[{\"id\":\"d00615b3-5ca7-4fbf-8738-997eb310f789\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"b46836eb-c9ad-4065-828b-09795c81c30f\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"d00615b3-5ca7-4fbf-8738-997eb310f789\",\"type\":\"LinearAxis\"},{\"id\":\"617e0ffc-784a-48b8-b8ee-fd6339ba6e9a\",\"type\":\"Grid\"},{\"id\":\"b46836eb-c9ad-4065-828b-09795c81c30f\",\"type\":\"LogAxis\"},{\"id\":\"df9e104f-86b8-43e8-b1b4-aad28d5c6ca5\",\"type\":\"Grid\"},{\"id\":\"b3ceb973-5d47-45af-9627-bd312ba7649f\",\"type\":\"BoxAnnotation\"},{\"id\":\"16734fdb-e58d-4258-afb9-472f8ff23e16\",\"type\":\"GlyphRenderer\"},{\"id\":\"2bb5117c-d2d8-46b0-a8dc-66fffc506738\",\"type\":\"Span\"}],\"title\":{\"id\":\"3f2cc38b-bde2-4b69-8858-d86a8a784f4a\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"88b1376a-e350-4bbe-93dc-7570165078ff\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"dfeaaecc-4cf1-40e5-ba8f-0c7aa57bc20b\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"fdaf2ea2-f55f-4f2a-81a1-2a2baec35a95\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"f54c91c0-76d2-4a44-83db-6c308af10397\",\"type\":\"DataRange1d\"}},\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4dd2c3bf-c358-40cd-8a8a-9e3fcc96cd97\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b39d5bed-1722-4cdc-a728-9863e3c36da4\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"d153a705-d354-4a96-9d3f-27982b6ccf93\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2536a299-f627-4316-9b27-ef22da3713c3\",\"type\":\"BasicTicker\"}},\"id\":\"d00615b3-5ca7-4fbf-8738-997eb310f789\",\"type\":\"LinearAxis\"},{\"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__\":\"3SAHyQ+mD0EB4bAWYYIQQRgqVPeZCBFBy13+MWAXEUGK2ZPxrlMQQUZHczwxqg5BAdH/RQmZDEEq5xqU3VYKQTRQw+TyDQhBPAZlx8PJBUE6Il7Ee7ADQTsQNngpoQFBWh1L4VNs/0ABWfR2QL37QOkFb2VcMfhAOQ4RdRjm9EBeg4zA9rHxQFSi82Btae1AFg2B1aq150C1/MI0a0jiQPD0FKMSM9pA6jBAVMJJ0EDPYXRZekG6QI+Xr5lZX6RAwAjxpKEZxkAcsbcTrNHSQGlxhJzLMdpA2DwC6j204EB0q1x24O3jQNqYflhfAudAxKuvtF0O6kD30CYaDRbtQFdvzASfE/BA8ZUOVTco8UBcKLqxYdzyQOM5hdn2nfRA7PB+FehA9kBmBXKdyfz3QPweFt7NqPlAXF7ACa5Y+0CpNtl4Odv8QG31zk9nQ/5A2NvN5MKu/0AkBrYqNJgAQd9UpHK7RgFBz126w6LeAUE5EmmoyGwCQcjUdpayBgNBsspsYbGMA0FOL5lI8R4EQe4gKqgPuwRBuHrviDA/BUFgWK/ldMgFQRy931NbZAZB10+5b4H4BkFNWj+yFZwHQQ21AMk7RQhBu7mmcSYMCUGziyAMK+EJQbmKvEvdyApB2T4qZlC0C0FfkDwKqqcMQf6REiqfnA1BClfmTbWZDkFQ7FelYJkPQaFnzsycehBBzOubdqT/EEF+Oh8fJQ0RQeP3eoDBSBBBKRdti1KTDkH4TihH+oAMQc9jcHsTPwpBjHGAxMT2B0EjwTbPf7MFQagTyJzxmwNBehhdcgGOAUFEuDib5Ej/QLJMNi2HmvtAYwDRe9MQ+EDe7nNdRsf0QONff2JJk/FAZkvDoRcu7UBbVDNoBHvnQDrEhl3cDOJAdiX7KvO22UAFU+0vwZLPQISM4JMfPLhATyInHll7qEBV/5NVTSjHQB7b++PcWdNAf958bw+22kBeTp+a2PHgQFnVPPqkJeRA41tJ0Mw050Arg/c7gz3qQBOns86gRO1Atu2sm64q8ED+4apR7T3xQOmAY7H+8fJAvQSXAiGy9EC6kAjFAFb2QJ+E8gqQEvhABR2BWiW9+UCihdMYmmz7QMoz8j9U8PxAlvwG12lc/kCYD1B6hsn/QD/5qOBLpQBB3f492etTAUFv89O93uoBQQf0vRBDdwJBVkfaH+oPA0GOpVFgTZMDQUKpWhTvIgRBAlhRLK+8BEFxNTQrMj8FQTAGEX/7xQVBITUA5LxeBkFx0kggT/AGQSIWFeRdkQdBko+YXYg4CEFy7/JJWf8IQQYJISq00glBcoeD+5S5CkENJ+7yoaQLQcEjqRsvmAxBa2upadSNDUESn0wM/IoOQQ==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"aa06b786-a05a-4fa5-ac26-f122a1e342ac\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1e219b5a-4646-4fda-8b62-237cebad6a70\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"06ef1964-d4bb-4d7b-b37c-1e0cbd8bcb51\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"aa06b786-a05a-4fa5-ac26-f122a1e342ac\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"06ef1964-d4bb-4d7b-b37c-1e0cbd8bcb51\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"b39d5bed-1722-4cdc-a728-9863e3c36da4\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"16734fdb-e58d-4258-afb9-472f8ff23e16\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1c08db46-f43e-40cf-9579-f3c637047cb4\",\"type\":\"PanTool\"},{\"id\":\"68f1474a-3b48-4477-99db-5b7cc13eae52\",\"type\":\"WheelZoomTool\"},{\"id\":\"677c9ae5-b8dc-4456-8e87-103218cc2ecc\",\"type\":\"BoxZoomTool\"},{\"id\":\"9c8bae71-95ce-4ca1-a4a5-5375261da266\",\"type\":\"SaveTool\"},{\"id\":\"1e219b5a-4646-4fda-8b62-237cebad6a70\",\"type\":\"ResetTool\"},{\"id\":\"4dd2c3bf-c358-40cd-8a8a-9e3fcc96cd97\",\"type\":\"HelpTool\"}]},\"id\":\"dfeaaecc-4cf1-40e5-ba8f-0c7aa57bc20b\",\"type\":\"Toolbar\"}],\"root_ids\":[\"739ef76a-8fd6-46cd-8472-e03adc7b7883\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"16794b64-b90c-4bd5-8f13-6d273c52eb62\",\"elementid\":\"1d14e05b-52c9-43e0-914a-303911a15c0a\",\"modelid\":\"739ef76a-8fd6-46cd-8472-e03adc7b7883\"}];\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(\"1d14e05b-52c9-43e0-914a-303911a15c0a\")).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=2.4 samples (4.72 ms / -5.357)\n",
"\tgain=7.3 (beta=8.199), bias=-9.0\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"d7dee4d0-2739-4a4e-ab6d-e8685106a8fc\"></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(\"d7dee4d0-2739-4a4e-ab6d-e8685106a8fc\").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(\"d7dee4d0-2739-4a4e-ab6d-e8685106a8fc\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'd7dee4d0-2739-4a4e-ab6d-e8685106a8fc' 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 = {\"0f986e19-c25b-4c79-b2f1-1aed4ffff05c\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"144ab51c-af64-4f62-8305-18027c13fac5\",\"type\":\"BasicTicker\"}},\"id\":\"9b9366be-e7cd-4f09-89b0-daf07a9c93db\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"144ab51c-af64-4f62-8305-18027c13fac5\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"Z shifted to line up\"},\"id\":\"aa5824f0-7fa0-4648-9800-2f0548a2347a\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"6e153bd5-9e2c-485d-9a6e-f8406da2a445\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1216208f-b270-4bf2-bcaf-c52930c8b5ae\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"aec03d11-ddcb-46f8-9bc3-9b960f188c13\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"be716b66-34df-45b3-b42e-3b40e7e293cd\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"aec03d11-ddcb-46f8-9bc3-9b960f188c13\",\"type\":\"LinearAxis\"},{\"id\":\"9b9366be-e7cd-4f09-89b0-daf07a9c93db\",\"type\":\"Grid\"},{\"id\":\"be716b66-34df-45b3-b42e-3b40e7e293cd\",\"type\":\"LinearAxis\"},{\"id\":\"6bec1959-e84a-4a71-9be0-49194167b1d7\",\"type\":\"Grid\"},{\"id\":\"4587d3f2-52b4-4af6-a23d-023e22f75c13\",\"type\":\"BoxAnnotation\"},{\"id\":\"90696dd0-28a2-4886-8907-366412242407\",\"type\":\"GlyphRenderer\"},{\"id\":\"e0e11f0e-12be-4d62-ae35-608829c79390\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"aa5824f0-7fa0-4648-9800-2f0548a2347a\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"326b2981-eb8f-482e-84f6-3849bf1b4c47\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"ac5e0e3c-3380-4d4e-bf6d-726e95bab04a\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"781c5cf1-3d88-4ca7-8286-5a7c2bb9a1ff\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"07d92740-fa68-4e54-8233-9d1006bb5aac\",\"type\":\"DataRange1d\"}},\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"781c5cf1-3d88-4ca7-8286-5a7c2bb9a1ff\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c7625ef7-a332-4bba-bc23-7e36f7edc3f5\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1216208f-b270-4bf2-bcaf-c52930c8b5ae\",\"type\":\"BasicTicker\"}},\"id\":\"6bec1959-e84a-4a71-9be0-49194167b1d7\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"9ffe31c2-d069-464a-bf82-c95b7a043cb6\",\"type\":\"PanTool\"},{\"id\":\"df8bd17a-63cd-474d-b969-950200cac200\",\"type\":\"WheelZoomTool\"},{\"id\":\"98660e02-4637-479e-901b-1908cd96daa5\",\"type\":\"BoxZoomTool\"},{\"id\":\"ffbd5d3c-307b-40f7-886d-cbac0c90e286\",\"type\":\"SaveTool\"},{\"id\":\"72333845-faba-4d4d-aa79-41ddea0f1d5c\",\"type\":\"ResetTool\"},{\"id\":\"6e153bd5-9e2c-485d-9a6e-f8406da2a445\",\"type\":\"HelpTool\"}]},\"id\":\"ac5e0e3c-3380-4d4e-bf6d-726e95bab04a\",\"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\":\"4a9f9987-088e-4c88-97be-e4e427dbccbe\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"95e83b85-9c0f-4167-899c-b1068f68ec56\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"df8bd17a-63cd-474d-b969-950200cac200\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"d3489fdb-78ff-40fb-817c-ef71d0773bea\",\"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\":\"f0189b81-11ba-4742-bb29-3515a46363eb\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a91d4094-b8c4-43a9-b957-4cc419e17e16\",\"type\":\"Line\"},{\"attributes\":{\"formatter\":{\"id\":\"d3489fdb-78ff-40fb-817c-ef71d0773bea\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"144ab51c-af64-4f62-8305-18027c13fac5\",\"type\":\"BasicTicker\"}},\"id\":\"aec03d11-ddcb-46f8-9bc3-9b960f188c13\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"4a9f9987-088e-4c88-97be-e4e427dbccbe\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"e111f916-402d-4f6d-9cdb-570ad9669493\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"c7625ef7-a332-4bba-bc23-7e36f7edc3f5\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"90696dd0-28a2-4886-8907-366412242407\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"4587d3f2-52b4-4af6-a23d-023e22f75c13\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"98660e02-4637-479e-901b-1908cd96daa5\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ffbd5d3c-307b-40f7-886d-cbac0c90e286\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"e111f916-402d-4f6d-9cdb-570ad9669493\",\"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\":\"4587d3f2-52b4-4af6-a23d-023e22f75c13\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"326b2981-eb8f-482e-84f6-3849bf1b4c47\",\"type\":\"ToolEvents\"},{\"attributes\":{\"data_source\":{\"id\":\"f0189b81-11ba-4742-bb29-3515a46363eb\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cb97da60-a8fc-432d-8522-420d3daa289f\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"a91d4094-b8c4-43a9-b957-4cc419e17e16\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"e0e11f0e-12be-4d62-ae35-608829c79390\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9ffe31c2-d069-464a-bf82-c95b7a043cb6\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"95e83b85-9c0f-4167-899c-b1068f68ec56\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1216208f-b270-4bf2-bcaf-c52930c8b5ae\",\"type\":\"BasicTicker\"}},\"id\":\"be716b66-34df-45b3-b42e-3b40e7e293cd\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cb97da60-a8fc-432d-8522-420d3daa289f\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"07d92740-fa68-4e54-8233-9d1006bb5aac\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"72333845-faba-4d4d-aa79-41ddea0f1d5c\",\"type\":\"ResetTool\"}],\"root_ids\":[\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"0f986e19-c25b-4c79-b2f1-1aed4ffff05c\",\"elementid\":\"d7dee4d0-2739-4a4e-ab6d-e8685106a8fc\",\"modelid\":\"04331ced-36a9-40f1-aaa6-1daa55b1f13c\"}];\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(\"d7dee4d0-2739-4a4e-ab6d-e8685106a8fc\")).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=\"dc443179-6162-46e0-a5d9-e7336cba5a2d\"></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(\"dc443179-6162-46e0-a5d9-e7336cba5a2d\").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(\"dc443179-6162-46e0-a5d9-e7336cba5a2d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'dc443179-6162-46e0-a5d9-e7336cba5a2d' 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 = {\"b0928747-ee6b-48b1-9229-c8f422cc8e1b\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"882d22db-fbc7-456a-81b3-81363f5bd96b\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f96a2d04-4e23-4507-93ee-2bc197a2dbd2\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"911fc27b-97af-4fbe-9ab6-2ae4e3afdad4\",\"type\":\"ToolEvents\"},{\"attributes\":{\"data_source\":{\"id\":\"d1b911e6-8457-46ef-aafd-568b45cf964f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"11e9a439-47f0-452d-a7ef-8db3ef181527\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"f7600cc9-5474-41e5-817a-fbffc7d8dc0f\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"859bbfc3-c8fe-46d3-aa59-986efb2b73dc\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"11e9a439-47f0-452d-a7ef-8db3ef181527\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Z\"},\"id\":\"bd6eba8d-6822-403b-9fa2-ebbd5ba5423b\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"34a53dea-8b66-4426-ab7f-555562f565ed\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"e7ce6b7b-03bd-44a5-a569-b36c475fd5ce\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0994b45e-64d2-4b23-92a1-c81d0c830ac0\",\"type\":\"BasicTicker\"}},\"id\":\"ee45f360-a693-4e36-bfed-501fc8ee4a7d\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"d2589b21-f5f3-484e-b9ad-d523afcd6d8a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0994b45e-64d2-4b23-92a1-c81d0c830ac0\",\"type\":\"BasicTicker\"}},\"id\":\"d2550e6b-e5bb-466d-bc44-05e4e8a6f8a7\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f7600cc9-5474-41e5-817a-fbffc7d8dc0f\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"80e3e906-1098-4526-b57b-b3e52da9f094\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"0994b45e-64d2-4b23-92a1-c81d0c830ac0\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"14a01ebe-eef8-44e9-9423-41587d66b553\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"d2589b21-f5f3-484e-b9ad-d523afcd6d8a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"649e96bc-6840-4dc7-a0c6-36b75acc6b7d\",\"type\":\"BasicTicker\"}},\"id\":\"f3d5de7f-79cb-4037-865c-ebc0a3a16d1a\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"649e96bc-6840-4dc7-a0c6-36b75acc6b7d\",\"type\":\"BasicTicker\"}},\"id\":\"f34b7350-f2f5-4af4-a71c-7e092b87e347\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"827d144b-bc26-4f29-86ab-c059a2bd9533\",\"type\":\"PanTool\"},{\"id\":\"882d22db-fbc7-456a-81b3-81363f5bd96b\",\"type\":\"WheelZoomTool\"},{\"id\":\"8a71c2df-8d34-4375-bbe2-03192b935a45\",\"type\":\"BoxZoomTool\"},{\"id\":\"f96a2d04-4e23-4507-93ee-2bc197a2dbd2\",\"type\":\"SaveTool\"},{\"id\":\"80e3e906-1098-4526-b57b-b3e52da9f094\",\"type\":\"ResetTool\"},{\"id\":\"89e9817a-d28d-4fc0-9a2f-20f18de1bc21\",\"type\":\"HelpTool\"}]},\"id\":\"17b9d1c6-e3a7-4a8b-a598-ae13a902ae2a\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"e7ce6b7b-03bd-44a5-a569-b36c475fd5ce\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"341f0885-cc71-408e-9b6f-6504dad96eab\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"89e9817a-d28d-4fc0-9a2f-20f18de1bc21\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"341f0885-cc71-408e-9b6f-6504dad96eab\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"8a71c2df-8d34-4375-bbe2-03192b935a45\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"827d144b-bc26-4f29-86ab-c059a2bd9533\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"f3d5de7f-79cb-4037-865c-ebc0a3a16d1a\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"ee45f360-a693-4e36-bfed-501fc8ee4a7d\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"f3d5de7f-79cb-4037-865c-ebc0a3a16d1a\",\"type\":\"LinearAxis\"},{\"id\":\"f34b7350-f2f5-4af4-a71c-7e092b87e347\",\"type\":\"Grid\"},{\"id\":\"ee45f360-a693-4e36-bfed-501fc8ee4a7d\",\"type\":\"LinearAxis\"},{\"id\":\"d2550e6b-e5bb-466d-bc44-05e4e8a6f8a7\",\"type\":\"Grid\"},{\"id\":\"341f0885-cc71-408e-9b6f-6504dad96eab\",\"type\":\"BoxAnnotation\"},{\"id\":\"859bbfc3-c8fe-46d3-aa59-986efb2b73dc\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"bd6eba8d-6822-403b-9fa2-ebbd5ba5423b\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"911fc27b-97af-4fbe-9ab6-2ae4e3afdad4\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"17b9d1c6-e3a7-4a8b-a598-ae13a902ae2a\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"34a53dea-8b66-4426-ab7f-555562f565ed\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"14a01ebe-eef8-44e9-9423-41587d66b553\",\"type\":\"DataRange1d\"}},\"id\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"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\":\"d1b911e6-8457-46ef-aafd-568b45cf964f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"649e96bc-6840-4dc7-a0c6-36b75acc6b7d\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"0ed7159e-3534-4a66-9824-6291b5db02f7\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"b0928747-ee6b-48b1-9229-c8f422cc8e1b\",\"elementid\":\"dc443179-6162-46e0-a5d9-e7336cba5a2d\",\"modelid\":\"0ed7159e-3534-4a66-9824-6291b5db02f7\"}];\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(\"dc443179-6162-46e0-a5d9-e7336cba5a2d\")).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": [
"[ 24136822.57838485]\n",
"[ 1813243.03973931]\n",
"[ 1227464.72096152]\n",
"[ 19312785.32626024]\n",
"[-310556.28079509]\n",
"[ 2050535.61276608]\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