Skip to content

Instantly share code, notes, and snippets.

@jhitesma
Created April 8, 2017 20:15
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/021e444780539f64d1dc22ca9fb4bf80 to your computer and use it in GitHub Desktop.
Save jhitesma/021e444780539f64d1dc22ca9fb4bf80 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=\"af17fbc8-ff15-477f-8f53-7dc04189b7ed\">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(\"af17fbc8-ff15-477f-8f53-7dc04189b7ed\").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(\"af17fbc8-ff15-477f-8f53-7dc04189b7ed\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'af17fbc8-ff15-477f-8f53-7dc04189b7ed' 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(\"af17fbc8-ff15-477f-8f53-7dc04189b7ed\").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(\"af17fbc8-ff15-477f-8f53-7dc04189b7ed\")).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/verris.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=\"eb7314aa-9858-4403-908d-517483418ae7\"></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(\"eb7314aa-9858-4403-908d-517483418ae7\").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(\"eb7314aa-9858-4403-908d-517483418ae7\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'eb7314aa-9858-4403-908d-517483418ae7' 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 = {\"112fa682-d724-4cbc-be74-8b1cb4965eaa\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"0aa016fa-c58d-488a-896d-3a7174622177\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"bf3bcbd0-4e7f-4e2d-a4b9-2fe7fbcdacc5\",\"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\":\"563471bf-decf-4ad3-a51e-52eb2bc7bd05\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"b6a7ef30-1fd6-4114-89d0-3e635e813566\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"f535698b-e1b8-4617-9908-a95e05d359b9\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"9de2777d-12c4-47ee-93c3-33796bbf7458\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"ea0ebc73-03b6-4b6b-9990-e5088f8b707d\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"f535698b-e1b8-4617-9908-a95e05d359b9\",\"type\":\"LinearAxis\"},{\"id\":\"a7199236-2a46-44ff-a23f-9c9a8c2ebec3\",\"type\":\"Grid\"},{\"id\":\"ea0ebc73-03b6-4b6b-9990-e5088f8b707d\",\"type\":\"LinearAxis\"},{\"id\":\"1fb63faa-e5da-4a49-a771-2483c2a26347\",\"type\":\"Grid\"},{\"id\":\"ce516e5e-fb1b-4caf-9379-a721ad694dc4\",\"type\":\"BoxAnnotation\"},{\"id\":\"3c0f03a4-6c88-436e-9204-f4ca8812bbe4\",\"type\":\"GlyphRenderer\"},{\"id\":\"42ed711d-c456-45d1-b962-6b82f0bd7b70\",\"type\":\"GlyphRenderer\"},{\"id\":\"3f8cb386-9260-4c6d-9bc5-3f155f47914f\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"3f8cb386-9260-4c6d-9bc5-3f155f47914f\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"5d4b78ab-0166-4cbe-9c93-cfc57f0e6b9d\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"bfd66b55-a8ef-4a3e-876d-d73e2833c74b\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"6d602fe1-7826-458b-ad78-4c5788ec2b65\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"3a54095d-3f83-4898-956e-86c8a77e02f0\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"93aa89b2-50c3-4f58-be2d-f91629e4b413\",\"type\":\"DataRange1d\"}},\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0cd29438-4aea-45de-9b92-a9d514d93ba0\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"3a54095d-3f83-4898-956e-86c8a77e02f0\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"84863575-84ce-4270-8627-d1721fbec152\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"563471bf-decf-4ad3-a51e-52eb2bc7bd05\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"00a22d5f-afb4-442b-be3d-b31c5171a309\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"0cd29438-4aea-45de-9b92-a9d514d93ba0\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"42ed711d-c456-45d1-b962-6b82f0bd7b70\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"245200f8-5fb2-410b-ba9a-39b75b176541\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"ce516e5e-fb1b-4caf-9379-a721ad694dc4\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"260a1a85-674b-43a5-8c93-df34675b9d0c\",\"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\":\"ce516e5e-fb1b-4caf-9379-a721ad694dc4\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"350adb2f-b474-47a9-a6b2-3b5317ce36d9\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"bfd66b55-a8ef-4a3e-876d-d73e2833c74b\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"350adb2f-b474-47a9-a6b2-3b5317ce36d9\",\"type\":\"BasicTicker\"}},\"id\":\"a7199236-2a46-44ff-a23f-9c9a8c2ebec3\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"93aa89b2-50c3-4f58-be2d-f91629e4b413\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"74a95274-7c58-4dcf-96e2-b7ff8edf9514\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0aa016fa-c58d-488a-896d-3a7174622177\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"3f8cb386-9260-4c6d-9bc5-3f155f47914f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"84863575-84ce-4270-8627-d1721fbec152\",\"type\":\"BasicTicker\"}},\"id\":\"1fb63faa-e5da-4a49-a771-2483c2a26347\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":null,\"text\":\"roll gyro vs actuators\"},\"id\":\"5d4b78ab-0166-4cbe-9c93-cfc57f0e6b9d\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"74a95274-7c58-4dcf-96e2-b7ff8edf9514\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f094f3fe-f881-4722-852a-1c11ec3b6970\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"end\":27.05937385559082,\"start\":-26.116741180419922},\"id\":\"9de2777d-12c4-47ee-93c3-33796bbf7458\",\"type\":\"Range1d\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"6fdf5788-2c32-4dc4-af31-95e78001e613\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c930c6f9-aa9f-4f41-9afa-b2a57561d51a\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"809af5ce-b4f1-4229-99f3-271643c6d980\",\"type\":\"ResetTool\"},{\"attributes\":{\"data_source\":{\"id\":\"f4504753-d27f-4a02-a4d7-c9242d223d68\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"81596b8b-af0b-447a-9b2e-28751da72cac\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"245200f8-5fb2-410b-ba9a-39b75b176541\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"3c0f03a4-6c88-436e-9204-f4ca8812bbe4\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"b6a7ef30-1fd6-4114-89d0-3e635e813566\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"84863575-84ce-4270-8627-d1721fbec152\",\"type\":\"BasicTicker\"}},\"id\":\"ea0ebc73-03b6-4b6b-9990-e5088f8b707d\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAD8qfHSTWJgP/yp8dJNYnA/+n5qvHSTeD/8qfHSTWKAP3sUrkfheoQ/+n5qvHSTiD956SYxCKyMP/yp8dJNYpA/PN9PjZdukj97FK5H4XqUP7pJDAIrh5Y/+n5qvHSTmD86tMh2vp+aP3npJjEIrJw/uB6F61G4nj/8qfHSTWKgP5zEILByaKE/PN9PjZduoj/b+X5qvHSjP3sUrkfheqQ/Gy/dJAaBpT+6SQwCK4emP1pkO99Pjac/+n5qvHSTqD+amZmZmZmpPzq0yHa+n6o/2c73U+Olqz956SYxCKysPxkEVg4tsq0/uB6F61G4rj9YObTIdr6vP/yp8dJNYrA/TDeJQWDlsD+cxCCwcmixP+xRuB6F67E/PN9PjZdusj+LbOf7qfGyP9v5fmq8dLM/K4cW2c73sz97FK5H4Xq0P8uhRbbz/bQ/Gy/dJAaBtT9rvHSTGAS2P7pJDAIrh7Y/CtejcD0Ktz9aZDvfT423P6rx0k1iELg/+n5qvHSTuD9KDAIrhxa5P5qZmZmZmbk/6iYxCKwcuj86tMh2vp+6P4lBYOXQIrs/2c73U+Oluz8pXI/C9Si8P3npJjEIrLw/yXa+nxovvT8ZBFYOLbK9P2mR7Xw/Nb4/uB6F61G4vj8IrBxaZDu/P1g5tMh2vr8/VOOlm8QgwD/8qfHSTWLAP6RwPQrXo8A/TDeJQWDlwD/0/dR46SbBP5zEILByaME/RIts5/upwT/sUbgehevBP5QYBFYOLcI/PN9PjZduwj/jpZvEILDCP4ts5/up8cI/MzMzMzMzwz/b+X5qvHTDP4PAyqFFtsM/K4cW2c73wz/TTWIQWDnEP3sUrkfhesQ/I9v5fmq8xD/LoUW28/3EP3Noke18P8U/Gy/dJAaBxT/D9Shcj8LFP2u8dJMYBMY/E4PAyqFFxj+6SQwCK4fGP2IQWDm0yMY/CtejcD0Kxz+yne+nxkvHP1pkO99Pjcc/AiuHFtnOxz+q8dJNYhDIP1K4HoXrUcg/+n5qvHSTyD+iRbbz/dTIP0oMAiuHFsk/8tJNYhBYyT+amZmZmZnJP0Jg5dAi28k/6iYxCKwcyj+S7Xw/NV7KPzq0yHa+n8o/4XoUrkfhyj+JQWDl0CLLPzEIrBxaZMs/2c73U+Olyz+BlUOLbOfLPylcj8L1KMw/0SLb+X5qzD956SYxCKzMPyGwcmiR7cw/yXa+nxovzT9xPQrXo3DNPxkEVg4tss0/wcqhRbbzzT9pke18PzXOPxFYObTIds4/uB6F61G4zj9g5dAi2/nOPwisHFpkO88/sHJoke18zz9YObTIdr7PPwAAAAAAANA/VOOlm8Qg0D+oxks3iUHQP/yp8dJNYtA/UI2XbhKD0D+kcD0K16PQP/hT46WbxNA/TDeJQWDl0D+gGi/dJAbRP/T91HjpJtE/SOF6FK5H0T+cxCCwcmjRP/Cnxks3idE/RIts5/up0T+YbhKDwMrRP+xRuB6F69E/QDVeukkM0j+UGARWDi3SP+j7qfHSTdI/PN9PjZdu0j+PwvUoXI/SP+Olm8QgsNI/N4lBYOXQ0j+LbOf7qfHSP99PjZduEtM/MzMzMzMz0z+HFtnO91PTP9v5fmq8dNM/L90kBoGV0z+DwMqhRbbTP9ejcD0K19M/K4cW2c730z9/arx0kxjUP9NNYhBYOdQ/JzEIrBxa1D97FK5H4XrUP8/3U+Olm9Q/I9v5fmq81D93vp8aL93UP8uhRbbz/dQ/H4XrUbge1T9zaJHtfD/VP8dLN4lBYNU/Gy/dJAaB1T9vEoPAyqHVP8P1KFyPwtU/F9nO91Pj1T9rvHSTGATWP7+fGi/dJNY/E4PAyqFF1j9nZmZmZmbWP7pJDAIrh9Y/Di2yne+n1j9iEFg5tMjWP7bz/dR46dY/CtejcD0K1z9eukkMAivXP7Kd76fGS9c/BoGVQ4ts1z9aZDvfT43XP65H4XoUrtc/AiuHFtnO1z9WDi2yne/XP6rx0k1iENg//tR46SYx2D9SuB6F61HYP6abxCCwctg/+n5qvHST2D9OYhBYObTYP6JFtvP91Ng/9ihcj8L12D9KDAIrhxbZP57vp8ZLN9k/8tJNYhBY2T9GtvP91HjZP5qZmZmZmdk/7nw/NV662T9CYOXQItvZP5ZDi2zn+9k/6iYxCKwc2j8+CtejcD3aP5LtfD81Xto/5tAi2/l+2j86tMh2vp/aP42XbhKDwNo/4XoUrkfh2j81XrpJDALbP4lBYOXQIts/3SQGgZVD2z8xCKwcWmTbP4XrUbgehds/2c73U+Ol2z8tsp3vp8bbP4GVQ4ts59s/1XjpJjEI3D8pXI/C9SjcP30/NV66Sdw/0SLb+X5q3D8lBoGVQ4vcP3npJjEIrNw/zczMzMzM3D8hsHJoke3cP3WTGARWDt0/yXa+nxov3T8dWmQ730/dP3E9CtejcN0/xSCwcmiR3T8ZBFYOLbLdP23n+6nx0t0/wcqhRbbz3T8VrkfhehTeP2mR7Xw/Nd4/vXSTGARW3j8RWDm0yHbeP2U730+Nl94/uB6F61G43j8MAiuHFtneP2Dl0CLb+d4/tMh2vp8a3z8IrBxaZDvfP1yPwvUoXN8/sHJoke183z8EVg4tsp3fP1g5tMh2vt8/rBxaZDvf3z8AAAAAAADgP6rx0k1iEOA/VOOlm8Qg4D/+1HjpJjHgP6jGSzeJQeA/UrgehetR4D8=\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"f4504753-d27f-4a02-a4d7-c9242d223d68\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"81596b8b-af0b-447a-9b2e-28751da72cac\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"bcbb4c6f-0e8a-494d-93ab-79cc59922a6d\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"bf3bcbd0-4e7f-4e2d-a4b9-2fe7fbcdacc5\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"350adb2f-b474-47a9-a6b2-3b5317ce36d9\",\"type\":\"BasicTicker\"}},\"id\":\"f535698b-e1b8-4617-9908-a95e05d359b9\",\"type\":\"LinearAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"bcbb4c6f-0e8a-494d-93ab-79cc59922a6d\",\"type\":\"PanTool\"},{\"id\":\"f094f3fe-f881-4722-852a-1c11ec3b6970\",\"type\":\"WheelZoomTool\"},{\"id\":\"260a1a85-674b-43a5-8c93-df34675b9d0c\",\"type\":\"BoxZoomTool\"},{\"id\":\"6fdf5788-2c32-4dc4-af31-95e78001e613\",\"type\":\"SaveTool\"},{\"id\":\"809af5ce-b4f1-4229-99f3-271643c6d980\",\"type\":\"ResetTool\"},{\"id\":\"c930c6f9-aa9f-4f41-9afa-b2a57561d51a\",\"type\":\"HelpTool\"}]},\"id\":\"6d602fe1-7826-458b-ad78-4c5788ec2b65\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"00a22d5f-afb4-442b-be3d-b31c5171a309\",\"type\":\"Line\"}],\"root_ids\":[\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"112fa682-d724-4cbc-be74-8b1cb4965eaa\",\"elementid\":\"eb7314aa-9858-4403-908d-517483418ae7\",\"modelid\":\"c2b1787d-ecc1-4ea2-acd3-7a7adb636050\"}];\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(\"eb7314aa-9858-4403-908d-517483418ae7\")).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=\"3539760b-b11e-4788-9d40-e0fe53cb842f\"></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(\"3539760b-b11e-4788-9d40-e0fe53cb842f\").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(\"3539760b-b11e-4788-9d40-e0fe53cb842f\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '3539760b-b11e-4788-9d40-e0fe53cb842f' 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 = {\"8a176904-6419-4e86-98d4-92c001159ad1\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2404dc6f-157a-4b93-bc75-814b747c7218\",\"type\":\"BasicTicker\"}},\"id\":\"2a1ba3b8-2013-4c55-a89d-203d15d7af8d\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"12d7dc20-aedd-4544-8ba1-a7a49a29d5b2\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"453125b7-5d6b-4b1b-bf34-3c09a5b1b3cf\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"808263e5-4ef7-45f7-a1b4-7be1c420dab4\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"5d3a9517-decb-4e8a-8f11-ebc72309206d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2c1fd188-89aa-4a59-a6be-4e0a179854c9\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"30d16d27-6ff4-4e7a-aebe-0a7952964ddc\",\"type\":\"BasicTicker\"}},\"id\":\"52425ac9-43c5-4cc8-8d5f-66b7dc6bddb7\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"251b2633-9bcc-4511-8473-0c44c5a8b51c\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f4ec2358-f38b-47b0-a519-bba7e7ccdb34\",\"type\":\"SaveTool\"},{\"attributes\":{\"formatter\":{\"id\":\"16403bd5-505b-4bee-9345-4ce7c1e2995e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"251b2633-9bcc-4511-8473-0c44c5a8b51c\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"9b74a2dc-78ff-4bb8-b33d-56f6e3355f8f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"below\":[{\"id\":\"d5c1feaf-aebc-42b5-9c81-310962acf89c\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"c225f179-4e73-469a-a552-e826fa5dd53f\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"40c95336-b2ba-4304-abc6-e306b1eb560c\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"d5c1feaf-aebc-42b5-9c81-310962acf89c\",\"type\":\"LinearAxis\"},{\"id\":\"2a1ba3b8-2013-4c55-a89d-203d15d7af8d\",\"type\":\"Grid\"},{\"id\":\"40c95336-b2ba-4304-abc6-e306b1eb560c\",\"type\":\"LinearAxis\"},{\"id\":\"52425ac9-43c5-4cc8-8d5f-66b7dc6bddb7\",\"type\":\"Grid\"},{\"id\":\"93526083-eca2-4ec4-908e-c79c27f31800\",\"type\":\"BoxAnnotation\"},{\"id\":\"c97872b5-45c1-4e32-ad4f-c0c27a88f8e2\",\"type\":\"GlyphRenderer\"},{\"id\":\"5d3a9517-decb-4e8a-8f11-ebc72309206d\",\"type\":\"GlyphRenderer\"},{\"id\":\"9b74a2dc-78ff-4bb8-b33d-56f6e3355f8f\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"9b74a2dc-78ff-4bb8-b33d-56f6e3355f8f\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"640f8a89-a99d-4bbc-b171-9fe6ad0b182b\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"9d6cd909-9045-425c-9627-809061596bad\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"94f3c79b-fbe8-44ef-86ce-da24ed78763d\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"dccc4d77-effa-447e-b0f1-417d423f2d90\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"8f439ad8-cbc2-4352-bd54-4911a87cc3e7\",\"type\":\"DataRange1d\"}},\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"end\":27.05937385559082,\"start\":-26.116741180419922},\"id\":\"c225f179-4e73-469a-a552-e826fa5dd53f\",\"type\":\"Range1d\"},{\"attributes\":{\"plot\":null,\"text\":\"roll gyrodiff vs actuators\"},\"id\":\"640f8a89-a99d-4bbc-b171-9fe6ad0b182b\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"8638e9af-b5b4-4895-9f77-c90a81850cfb\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2c1fd188-89aa-4a59-a6be-4e0a179854c9\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"0f8cc6fe-d5be-4490-8f59-16111533de26\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"c97872b5-45c1-4e32-ad4f-c0c27a88f8e2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"49863edb-205f-485d-9fad-955ce09e9fab\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e495c3bf-aec7-4e2f-ab5c-8084944bff47\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"bd568e88-e799-4147-8a06-194a2114424d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"30d16d27-6ff4-4e7a-aebe-0a7952964ddc\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"9d6cd909-9045-425c-9627-809061596bad\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"2404dc6f-157a-4b93-bc75-814b747c7218\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"49863edb-205f-485d-9fad-955ce09e9fab\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"30d16d27-6ff4-4e7a-aebe-0a7952964ddc\",\"type\":\"BasicTicker\"}},\"id\":\"40c95336-b2ba-4304-abc6-e306b1eb560c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"AAAAIHZ4EsAAAAAgKTgSwAAAAABejRHAAAAAAKfvEMAAAACgERgQwAAAAGD9Pw7AAAAAYCFnDMAAAABggQoKwAAAACDk5wfAAAAAgPNhBcAAAADgmjEDwAAAACCuigDAAAAAQD24/L8AAACgH/n3vwAAAICc//K/AAAAQO2z7r8AAABgUPDivwAAAICtf9m/AAAAAKFZtr8AAADgtuXGPwAAAAATd9Y/AAAA4Fz85T8AAABg0lbpPwAAAADHCvE/AAAAwARg8z8AAACgtVj1PwAAACD2uPg/AAAA4FGC+T8AAABgVXv8PwAAACBuGv0/AAAAIEGZ/j8AAADgpJL/PwAAACA2IjFAAAAA4OgvMUAAAADAbBcxQAAAAIBNBDFAAAAAwD68MEAAAADAwWcwQAAAAOBI9i9AAAAAAE/GLkAAAABgpqAtQAAAAECRCyxAAAAA4JWTKkAAAADgr88oQAAAACBL9CZAAAAA4KMKJUAAAADgeOQiQAAAAGBW4iBAAAAAIIQxHUAAAADA5vUYQAAAAADAXhRAAAAAANK4D0AAAAAAAtQGQAAAAMAxLPs/AAAAwLwJ5D8AAABgTI7gvwAAAMBnbfm/AAAA4K71BMAAAACg+XcNwAAAAEBFYRLAAAAAIJExFsAAAAAgmYoZwAAAAEDG2BzAAAAAQIfmH8AAAABAis03wAAAAABbdjjAAAAAQJYEOcAAAADA4Iw5wAAAACBW2DnAAAAAwOIdOsAAAABABRk6wAAAAMDvBzrAAAAAgLDBOcAAAADAKVY5wAAAAEAlzDjAAAAAYAETOMAAAADgf0c3wAAAAOCGTzbAAAAAYPRPNcAAAABACCc0wAAAAKA27zLAAAAAIIOkMcAAAACgaEEwwAAAAOAqty3AAAAAgOzHKsAAAADgGssnwAAAAGCyyiTAAAAAIFG3IcAAAABgZjkdwAAAAMAADxfAAAAA4K7LEMAAAADAGWQFwAAAAACBlPK/AAAAgKEE0z8AAABgT6n7PwAAACCFxwhAAAAAoP9vJcAAAACgDPAiwAAAAGB9jSDAAAAA4IIlHMAAAABggGoXwAAAAODvWxLAAAAAAAv9CsAAAAAgVhoBwAAAAACV/+y/AAAAAN420j8AAABAFp/3PwAAAODCygRAAAAAoJGaDUAAAACA0AoTQAAAACBlCxdAAAAAYH/pGkAAAACANkoeQAAAAMDw1iBAAAAAAOlHIkAAAACAIKYjQAAAAGBp3CRAAAAAoP7uJUAAAADgiNAmQAAAAMBGiydAAAAAQJolKEAAAADAuJQoQAAAACDo7ChAAAAAACwMKUAAAABgzhopQAAAAECH/ihAAAAAoCuzKEAAAADgH2UoQAAAACAzDztAAAAAYHPGOkAAAAAAw2I6QAAAAEBj7TlAAAAAgEhfOUAAAABA6KE4QAAAAKDjzjdAAAAA4BnSNkAAAACga7o1QAAAAIAKizRAAAAAwC83M0AAAADAa9oxQAAAAEBjXDBAAAAAQJewLUAAAADA+5UqQAAAAID5XidAAAAAAEg1JEAAAADgad0gQAAAACBPXxtAAAAAQJyuFEAAAADgKzQNQAAAACAaKQBAAAAAIA0e4D8AAACAPYrwvwAAAKDuRQTAAAAA4AQvD8AAAAAA308VwAAAAMAuLRrAAAAAoBhPH8AAAADgS+YhwAAAAMCcCSTAAAAAgD3+JcAAAADgSLAnwAAAAIBtXCnAAAAAQNe2KsAAAABAPQIswAAAAACpDS3AAAAAYD7ZLcAAAADA+XkuwAAAAADE5y7AAAAAYM8fL8AAAABgb0MvwAAAACBLGS/AAAAAAIvYLsAAAAAgX3AuwAAAAMC+uy3AAAAAwAMTLcAAAADAOxEswAAAAOBpDivAAAAAYJfZKcAAAACAKYQowAAAAMBCMifAAAAAIJ6iJcAAAADgJyQkwAAAACCzeiLAAAAAwKHRIMAAAADgPFoewAAAACD6xBrAAAAAADozF8AAAABAQ6ITwAAAACBo1Q/AAAAAIPHICMAAAADgE58BwAAAAMC5QPW/AAAAALlF4L8AAAAg0aHUPwAAAGCDbvE/AAAAgLik/D8AAAAAUs0DQAAAAABBywhAAAAAQEdoDUAAAAAAqtwQQAAAAGCQ6RJAAAAAwBCkFEAAAACABGMWQAAAAED5xxdAAAAAYGUVGUAAAABgpDIaQAAAAODV+hpAAAAAIGS0G0AAAACARREcQAAAAEBVRRxAAAAA4OxdHEAAAADgjB8cQAAAAIC8+xtAAAAAIFg1G0AAAACAm9EaQAAAAEBgvxlAAAAAAMfiGEAAAADgJsMXQAAAAAByZBZAAAAAAAZQFUAAAABA3XUTQAAAAKCyRxJAAAAAANxxEEAAAAAAATwOQAAAAKCmYgpAAAAAoIJBB0AAAACApJkDQAAAAIAtRgBAAAAAgHPa+T8AAAAASPvyPwAAAKAR6ug/AAAA4OD21D8AAADAzO+2vwAAAADWU9+/AAAAYPFD7b8AAADgU9n0vwAAAMADOPu/AAAA4IyXAMAAAAAAkl4DwAAAAODlKwbAAAAA4KNbCMAAAAAA4PoKwAAAAEDQ0wzAAAAAQDkiD8AAAACAODsQwAAAAADJJxHAAAAAoP7BEcAAAADAd2cSwAAAAIDC9BLAAAAAgLsfE8AAAABAtrETwAAAAOA5eRPAAAAAYLizE8AAAADgN28TwAAAAAAzRBPAAAAAYN8CE8A=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"12d7dc20-aedd-4544-8ba1-a7a49a29d5b2\",\"type\":\"ColumnDataSource\"},{\"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\":\"93526083-eca2-4ec4-908e-c79c27f31800\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5899254b-1584-4f33-9a7d-8ecca5c7615b\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"808263e5-4ef7-45f7-a1b4-7be1c420dab4\",\"type\":\"Line\"},{\"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\":\"8638e9af-b5b4-4895-9f77-c90a81850cfb\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"dccc4d77-effa-447e-b0f1-417d423f2d90\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a07f319a-2427-4be7-a721-e159ec0d5173\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"641d2f65-533b-46db-83d8-bdeb7d7793f8\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"5899254b-1584-4f33-9a7d-8ecca5c7615b\",\"type\":\"PanTool\"},{\"id\":\"a07f319a-2427-4be7-a721-e159ec0d5173\",\"type\":\"WheelZoomTool\"},{\"id\":\"7de1a580-a6eb-4b2d-a7f9-7611b1fca05f\",\"type\":\"BoxZoomTool\"},{\"id\":\"f4ec2358-f38b-47b0-a519-bba7e7ccdb34\",\"type\":\"SaveTool\"},{\"id\":\"641d2f65-533b-46db-83d8-bdeb7d7793f8\",\"type\":\"ResetTool\"},{\"id\":\"e495c3bf-aec7-4e2f-ab5c-8084944bff47\",\"type\":\"HelpTool\"}]},\"id\":\"94f3c79b-fbe8-44ef-86ce-da24ed78763d\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"8f439ad8-cbc2-4352-bd54-4911a87cc3e7\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"bd568e88-e799-4147-8a06-194a2114424d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2404dc6f-157a-4b93-bc75-814b747c7218\",\"type\":\"BasicTicker\"}},\"id\":\"d5c1feaf-aebc-42b5-9c81-310962acf89c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0f8cc6fe-d5be-4490-8f59-16111533de26\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"16403bd5-505b-4bee-9345-4ce7c1e2995e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"93526083-eca2-4ec4-908e-c79c27f31800\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7de1a580-a6eb-4b2d-a7f9-7611b1fca05f\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"453125b7-5d6b-4b1b-bf34-3c09a5b1b3cf\",\"type\":\"Line\"}],\"root_ids\":[\"eec1304d-631a-4553-b49c-f3e12f77b14f\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"8a176904-6419-4e86-98d4-92c001159ad1\",\"elementid\":\"3539760b-b11e-4788-9d40-e0fe53cb842f\",\"modelid\":\"eec1304d-631a-4553-b49c-f3e12f77b14f\"}];\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(\"3539760b-b11e-4788-9d40-e0fe53cb842f\")).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=\"241f65fa-db0c-46af-b326-933779caa31c\"></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(\"241f65fa-db0c-46af-b326-933779caa31c\").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(\"241f65fa-db0c-46af-b326-933779caa31c\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '241f65fa-db0c-46af-b326-933779caa31c' 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 = {\"a2011b4c-5b9b-4f8f-80a9-3127a175b133\":{\"roots\":{\"references\":[{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"be5f807f-e69a-4af5-99d6-2f278a026d1e\",\"type\":\"PanTool\"},{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a190abd8-fa99-498d-9fdd-735b2f1f1f20\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"7d0eb038-b3d2-47b1-8d1d-bdf11e621c5c\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"255d9fb7-9471-419a-86c0-840d35ea4f02\",\"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\":\"071078d8-beb7-41ea-9bcc-32371f4958cd\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"aad99395-d9ea-4ce0-b074-4f7837c58286\",\"type\":\"HelpTool\"},{\"attributes\":{\"formatter\":{\"id\":\"4bd8d8d0-f897-4983-bb55-8027ea85766a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"043fc7ea-467e-4459-aa09-fff350564954\",\"type\":\"BasicTicker\"}},\"id\":\"b2854caa-2b64-42c9-9493-087eee926aa2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"250ea5cd-3b52-420e-81d6-9338106e8877\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"44d82743-813c-415a-97d8-8112b174ebb1\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":null,\"text\":\"filtered roll gyrodiff vs actuators\"},\"id\":\"34707846-31cd-4072-bd50-08cb53a37264\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"fe2e9cbb-8065-4314-adab-70798a8e03f7\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"be5f807f-e69a-4af5-99d6-2f278a026d1e\",\"type\":\"PanTool\"},{\"id\":\"b83dc9fa-3501-4263-9f94-e58d6434d85f\",\"type\":\"WheelZoomTool\"},{\"id\":\"6a38ab27-4ff4-4825-97a3-bcccf9b46122\",\"type\":\"BoxZoomTool\"},{\"id\":\"a190abd8-fa99-498d-9fdd-735b2f1f1f20\",\"type\":\"SaveTool\"},{\"id\":\"4c6c952d-b1c2-4c2e-be12-3b6295f08a02\",\"type\":\"ResetTool\"},{\"id\":\"aad99395-d9ea-4ce0-b074-4f7837c58286\",\"type\":\"HelpTool\"}]},\"id\":\"8e067152-9c83-4d34-99c0-ad3d188a4f31\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"end\":27.05937385559082,\"start\":-26.116741180419922},\"id\":\"ee7c5855-f151-49e3-b980-9626c6164339\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"cb7ee0fc-e432-43e5-ba06-945516ddd591\",\"type\":\"BasicTickFormatter\"},{\"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\":\"9ec58709-206b-4781-90c7-f772d5706805\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4bd8d8d0-f897-4983-bb55-8027ea85766a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"red\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"75da8bfe-84ef-4ee7-a90e-a0c2e164ddda\",\"type\":\"Line\"},{\"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\":\"54ed7025-87e7-47f7-9bcc-d4fb14b94c35\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"100d1eb3-4f68-43e4-bb07-1bcdacd5abe2\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"043fc7ea-467e-4459-aa09-fff350564954\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"cb7ee0fc-e432-43e5-ba06-945516ddd591\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7d0eb038-b3d2-47b1-8d1d-bdf11e621c5c\",\"type\":\"BasicTicker\"}},\"id\":\"0038425b-d525-4076-8b99-e2182a510167\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"043fc7ea-467e-4459-aa09-fff350564954\",\"type\":\"BasicTicker\"}},\"id\":\"660f5d75-4f2e-4f4e-a9ee-a2c39de4be31\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"0038425b-d525-4076-8b99-e2182a510167\",\"type\":\"LinearAxis\"}],\"extra_y_ranges\":{\"actuation\":{\"id\":\"ee7c5855-f151-49e3-b980-9626c6164339\",\"type\":\"Range1d\"}},\"left\":[{\"id\":\"b2854caa-2b64-42c9-9493-087eee926aa2\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"0038425b-d525-4076-8b99-e2182a510167\",\"type\":\"LinearAxis\"},{\"id\":\"4484fea1-f045-4866-97fc-0919c7a3f93e\",\"type\":\"Grid\"},{\"id\":\"b2854caa-2b64-42c9-9493-087eee926aa2\",\"type\":\"LinearAxis\"},{\"id\":\"660f5d75-4f2e-4f4e-a9ee-a2c39de4be31\",\"type\":\"Grid\"},{\"id\":\"071078d8-beb7-41ea-9bcc-32371f4958cd\",\"type\":\"BoxAnnotation\"},{\"id\":\"769c9dec-39f0-4410-a0f1-2045d1e775e2\",\"type\":\"GlyphRenderer\"},{\"id\":\"c2e72d27-2a8a-4a24-b982-b307633dc20a\",\"type\":\"GlyphRenderer\"},{\"id\":\"6ffee744-952a-416a-9b4b-1e3e0efa4929\",\"type\":\"LinearAxis\"}],\"right\":[{\"id\":\"6ffee744-952a-416a-9b4b-1e3e0efa4929\",\"type\":\"LinearAxis\"}],\"title\":{\"id\":\"34707846-31cd-4072-bd50-08cb53a37264\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"44d82743-813c-415a-97d8-8112b174ebb1\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"8e067152-9c83-4d34-99c0-ad3d188a4f31\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"354dfd26-db24-4aaf-9b4e-0a3b9bc7497c\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"209e48ea-f956-4978-82d0-78745d0aadf5\",\"type\":\"DataRange1d\"}},\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"354dfd26-db24-4aaf-9b4e-0a3b9bc7497c\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"fe2e9cbb-8065-4314-adab-70798a8e03f7\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"255d9fb7-9471-419a-86c0-840d35ea4f02\",\"type\":\"BasicTicker\"},\"y_range_name\":\"actuation\"},\"id\":\"6ffee744-952a-416a-9b4b-1e3e0efa4929\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b83dc9fa-3501-4263-9f94-e58d6434d85f\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"209e48ea-f956-4978-82d0-78745d0aadf5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7d0eb038-b3d2-47b1-8d1d-bdf11e621c5c\",\"type\":\"BasicTicker\"}},\"id\":\"4484fea1-f045-4866-97fc-0919c7a3f93e\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"24359911-dbae-42cd-a7a9-cbfbbf4e676d\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"54ed7025-87e7-47f7-9bcc-d4fb14b94c35\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"100d1eb3-4f68-43e4-bb07-1bcdacd5abe2\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"24359911-dbae-42cd-a7a9-cbfbbf4e676d\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"769c9dec-39f0-4410-a0f1-2045d1e775e2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4c6c952d-b1c2-4c2e-be12-3b6295f08a02\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"071078d8-beb7-41ea-9bcc-32371f4958cd\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"6a38ab27-4ff4-4825-97a3-bcccf9b46122\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"9ec58709-206b-4781-90c7-f772d5706805\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"75da8bfe-84ef-4ee7-a90e-a0c2e164ddda\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"250ea5cd-3b52-420e-81d6-9338106e8877\",\"type\":\"Line\"},\"selection_glyph\":null,\"y_range_name\":\"actuation\"},\"id\":\"c2e72d27-2a8a-4a24-b982-b307633dc20a\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"a2011b4c-5b9b-4f8f-80a9-3127a175b133\",\"elementid\":\"241f65fa-db0c-46af-b326-933779caa31c\",\"modelid\":\"88a85e1c-ad75-45c0-a6fc-9b512d30e5c4\"}];\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(\"241f65fa-db0c-46af-b326-933779caa31c\")).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=\"fcc110d6-3d53-4379-946a-648f1165c422\"></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(\"fcc110d6-3d53-4379-946a-648f1165c422\").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(\"fcc110d6-3d53-4379-946a-648f1165c422\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'fcc110d6-3d53-4379-946a-648f1165c422' 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 = {\"870a7c64-7d34-4087-a0a1-441f9e9eff04\":{\"roots\":{\"references\":[{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"dd8c83c7-eb86-48d2-9e36-5a8c0bf09420\",\"type\":\"LogTicker\"}},\"id\":\"5c5da140-9787-4707-9d11-9f9597550f15\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4660cb3e-537a-4c7f-8fb5-a8d14daa86ef\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"X delay time vs. correlation\"},\"id\":\"e24e2f58-ab70-436f-ad70-f15860984267\",\"type\":\"Title\"},{\"attributes\":{\"formatter\":{\"id\":\"f854c45a-49fb-4882-bd2f-af83f4f55a86\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ef9d40a2-581c-4eda-a8be-acc4ec0f143d\",\"type\":\"BasicTicker\"}},\"id\":\"582fff56-a974-4e03-b948-db30d39a4ab0\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"8e86c950-f325-482c-8020-0e92e9c750bd\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f4c41a7f-92b6-4952-97fb-f0c70574c8b8\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4660cb3e-537a-4c7f-8fb5-a8d14daa86ef\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"9a70ec30-5a2d-4ce2-8d87-76f844f037ba\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ef9d40a2-581c-4eda-a8be-acc4ec0f143d\",\"type\":\"BasicTicker\"}},\"id\":\"ffb65f17-a899-4fa5-9229-697084cb711a\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"29c97ead-7d92-4298-97cd-39274133c85b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"dd8c83c7-eb86-48d2-9e36-5a8c0bf09420\",\"type\":\"LogTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"76aced42-1092-4925-9e3a-ce93c9d7907c\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"eb094429-8916-4d39-b545-355f1ce5b459\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"dd8c83c7-eb86-48d2-9e36-5a8c0bf09420\",\"type\":\"LogTicker\"}},\"id\":\"23589f35-73c4-4a87-be1b-561cb87e940f\",\"type\":\"LogAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2d561dcc-5197-40c5-b447-abfad7ad4b81\",\"type\":\"PanTool\"},{\"id\":\"9d51118f-a96e-40c6-b4c5-93be1b709825\",\"type\":\"WheelZoomTool\"},{\"id\":\"5f91f809-e28c-4de5-aba1-7952e9ab4a66\",\"type\":\"BoxZoomTool\"},{\"id\":\"3f7208bc-6712-4a24-9ad5-2c3ea9d4e5a3\",\"type\":\"SaveTool\"},{\"id\":\"425d640a-0211-43e0-b214-3a5bc5518912\",\"type\":\"ResetTool\"},{\"id\":\"0e3ba235-8716-475d-a871-f38afa3f800e\",\"type\":\"HelpTool\"}]},\"id\":\"08227dc6-7563-4880-8c94-43e60a3dd7eb\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"425d640a-0211-43e0-b214-3a5bc5518912\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f4c41a7f-92b6-4952-97fb-f0c70574c8b8\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"f854c45a-49fb-4882-bd2f-af83f4f55a86\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.03292527217627239,\"plot\":null},\"id\":\"09e024e3-ada1-4c8b-ab00-37ddee4fe24c\",\"type\":\"Span\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9d51118f-a96e-40c6-b4c5-93be1b709825\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"be248759-0542-47bb-82b9-4043064d57f4\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"ef9d40a2-581c-4eda-a8be-acc4ec0f143d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"ticker\":null},\"id\":\"eb094429-8916-4d39-b545-355f1ce5b459\",\"type\":\"LogTickFormatter\"},{\"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\":\"4263bfbd-b7b9-4292-8263-a51af170d678\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"below\":[{\"id\":\"582fff56-a974-4e03-b948-db30d39a4ab0\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"23589f35-73c4-4a87-be1b-561cb87e940f\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"582fff56-a974-4e03-b948-db30d39a4ab0\",\"type\":\"LinearAxis\"},{\"id\":\"ffb65f17-a899-4fa5-9229-697084cb711a\",\"type\":\"Grid\"},{\"id\":\"23589f35-73c4-4a87-be1b-561cb87e940f\",\"type\":\"LogAxis\"},{\"id\":\"5c5da140-9787-4707-9d11-9f9597550f15\",\"type\":\"Grid\"},{\"id\":\"4263bfbd-b7b9-4292-8263-a51af170d678\",\"type\":\"BoxAnnotation\"},{\"id\":\"9a70ec30-5a2d-4ce2-8d87-76f844f037ba\",\"type\":\"GlyphRenderer\"},{\"id\":\"09e024e3-ada1-4c8b-ab00-37ddee4fe24c\",\"type\":\"Span\"}],\"title\":{\"id\":\"e24e2f58-ab70-436f-ad70-f15860984267\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"be248759-0542-47bb-82b9-4043064d57f4\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"08227dc6-7563-4880-8c94-43e60a3dd7eb\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"29c97ead-7d92-4298-97cd-39274133c85b\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"76aced42-1092-4925-9e3a-ce93c9d7907c\",\"type\":\"DataRange1d\"}},\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3f7208bc-6712-4a24-9ad5-2c3ea9d4e5a3\",\"type\":\"SaveTool\"},{\"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__\":\"/TlsS+QwJUE6S8vGppspQTTQM35ABS5B1D7IXT0lMUEXMrNrsjYzQZ3mDo5yJDVBPCsqWajzNkFamgtwmZo4QSujo8gvGTpBmN3mz0hwO0Fa2Qzi45g8QQ1WgaqgmT1Bi4qhoONsPkGqHhv6ExU/QVjwRScrkT9BhlSLK4TjP0FSYCVd1QRAQcrmiLVqBEBBZiuydH/cP0EIOqTD1Yk/QeFY7zITDj9Bizjjk/9wPkF08RRMuak9QSgV2hPZxzxB0jCm7Oy+O0Gmr05Njpg6QejgYjuSWTlB6HQbqcLzN0HN8o6sQIM2QSrRL+G47zRB83eu9LxPM0ESWKFI+ZkxQXSjnPcYpC9B0nTgMSQELEE0Zs7fwz8oQSoue6jBdSRBr8TkB+mQIEEpjyymN20ZQZncOYWgpBFBVAqNIxkUBEHAekAR4vnjQORI+2I2aPNAw8VAzccjCEEEZVtPLgsTQZ2MguyzzBlBAF882ZQpIEE6DG22zkEjQQ6kRyHmRCZBzppzc0oSKUEnyPMFEcMrQfAak1RsRC5B52/OElJNMEGmqa6XomQxQbKT0w50ZDJBK6est/9MM0EfUnd5tB80Qf/IQ4xj2TRBTQJeIth6NUEue0u6pAY2QeBM1JEadTZB8CEKijzSNkEGC0FHixE3QU+AaOz+PjdBIWKLZCZRN0HEubcI8E43Qdqgk8WCNjdBgdrQW/QFN0HE5ml+DcI2QZ3NYWp7YDZB8hbgeATnNUFkAt9WmE01QSK8OGnAmzRB6Bces5vNM0HngslFOeYyQch/VTDr5TFBvg+NDNnMMEHuK7I/ikQvQbwc4X66vyxBXtJbCpwhKkGK7OKqq2EnQepS6UwYiiRBmOTPz2qkIUFrb4ltJEUdQcJFqIGaQxdBboE7G8UXEUHO1PUiEfUFQWR2+IysP/NAsJ31Jtfo1EAIxMoU3Vz9QEwMD2hPsgpBcI4EzXohE0GSHYIiA90YQbKVcz2VWB5BHd/2Bn/OIUEA0SaiB1skQZcN7yEUuCZB8pq4sKICKUFsxDu10hErQQ7oz3+lBy1BkLQ8FCvFLkEo3Mrx5i0wQZucx5T/2zBBQPg39s5qMUFbOZtlFt0xQYOOGzOsLDJBqssW78hcMkGlLzRgJXAyQaSG1Eg7XDJBFQ1MfIIvMkGGO2MjAeAxQbevpTdecTFBlLzim57sMEFJ0Wwg80MwQQmI4zlQFS9BktDxeJxfLUG8WxDGCYkrQcYfukaagilBTsIYdnZXJ0FX8m63HgklQXGgpvD2lyJBgFqXTEUQIEHdHEfNwNIaQW6AI0j7ehVBX8T10lu/D0E+UlWGFrEEQYj88rtBs/JAgLXR7NlgzkCcxpBCvQT6QA==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"8e86c950-f325-482c-8020-0e92e9c750bd\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0e3ba235-8716-475d-a871-f38afa3f800e\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"4263bfbd-b7b9-4292-8263-a51af170d678\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5f91f809-e28c-4de5-aba1-7952e9ab4a66\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2d561dcc-5197-40c5-b447-abfad7ad4b81\",\"type\":\"PanTool\"}],\"root_ids\":[\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"870a7c64-7d34-4087-a0a1-441f9e9eff04\",\"elementid\":\"fcc110d6-3d53-4379-946a-648f1165c422\",\"modelid\":\"b9b6d46c-1cb2-4be4-920d-966731b3d68f\"}];\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(\"fcc110d6-3d53-4379-946a-648f1165c422\")).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=16.5 samples (32.93 ms / -3.414)\n",
"\tgain=82.6 (beta=10.629), bias=-42.4\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"44d5d1e7-6ee1-48bf-b42b-d4911778e6e8\"></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(\"44d5d1e7-6ee1-48bf-b42b-d4911778e6e8\").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(\"44d5d1e7-6ee1-48bf-b42b-d4911778e6e8\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '44d5d1e7-6ee1-48bf-b42b-d4911778e6e8' 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 = {\"2fddbd0d-09d1-4473-ab50-860f909d31c3\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"d66ebf8b-8e8b-446c-b1f6-4eb3da8731ea\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"b689913d-6b4b-4c77-b188-6a3a2d81c480\",\"type\":\"PanTool\"},{\"id\":\"1d054b62-38ce-4d61-bcf5-f3a841bbbb63\",\"type\":\"WheelZoomTool\"},{\"id\":\"38b4138d-72ca-4b04-b802-b36e1010ded4\",\"type\":\"BoxZoomTool\"},{\"id\":\"7a1c44dd-8df2-4472-8cb9-59d6aced6845\",\"type\":\"SaveTool\"},{\"id\":\"2dd8521b-d3db-44a9-b4d2-f59e9c7ef6fb\",\"type\":\"ResetTool\"},{\"id\":\"0eb4e8fc-0314-4325-b435-5e33a8f3f695\",\"type\":\"HelpTool\"}]},\"id\":\"2edfda0e-03cb-4d3c-9940-a4f238b09172\",\"type\":\"Toolbar\"},{\"attributes\":{\"formatter\":{\"id\":\"18757232-fe9a-4b67-a3ed-863415358b81\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1af815ab-279e-49af-a7ab-07776a6586a0\",\"type\":\"BasicTicker\"}},\"id\":\"7efbf255-9278-4a8c-a27a-57a5820c4424\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"70c522eb-7396-47f1-8230-e7b1b6f2fafc\",\"type\":\"BasicTicker\"}},\"id\":\"54860585-ee62-4ea4-ac5d-b5e2538dc7e2\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f4826b85-0b35-4cdd-89f2-d7ae80b1d05a\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cd7b3ad5-c42a-4f81-a4e6-e69c5c8b65b0\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"f5e311c9-7e4c-4265-8677-cec5b1f260f3\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"53293560-2f11-4807-8268-73cc1f35cd2f\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"38b4138d-72ca-4b04-b802-b36e1010ded4\",\"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\":\"53293560-2f11-4807-8268-73cc1f35cd2f\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"18757232-fe9a-4b67-a3ed-863415358b81\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1af815ab-279e-49af-a7ab-07776a6586a0\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"953e12ff-ba58-4076-aeb1-4bd36321140b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"da942739-6700-42ea-85de-e2a9ae0e1ee3\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1d054b62-38ce-4d61-bcf5-f3a841bbbb63\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1af815ab-279e-49af-a7ab-07776a6586a0\",\"type\":\"BasicTicker\"}},\"id\":\"df6c2d8f-6d8a-41eb-81cf-a9cd7b67fa25\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"7f918f93-c71d-4497-922a-26fe9be4526b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cd7b3ad5-c42a-4f81-a4e6-e69c5c8b65b0\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"f4826b85-0b35-4cdd-89f2-d7ae80b1d05a\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"c18e03f1-c7a1-4ba0-9667-af6c5cafd31b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"953e12ff-ba58-4076-aeb1-4bd36321140b\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"70c522eb-7396-47f1-8230-e7b1b6f2fafc\",\"type\":\"BasicTicker\"}},\"id\":\"dc1bf2fb-c634-4028-880d-9230ca4b3cab\",\"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\":\"7f918f93-c71d-4497-922a-26fe9be4526b\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"70c522eb-7396-47f1-8230-e7b1b6f2fafc\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0eb4e8fc-0314-4325-b435-5e33a8f3f695\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b689913d-6b4b-4c77-b188-6a3a2d81c480\",\"type\":\"PanTool\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2dd8521b-d3db-44a9-b4d2-f59e9c7ef6fb\",\"type\":\"ResetTool\"},{\"attributes\":{\"data_source\":{\"id\":\"d1c54859-0f88-44f5-8c1b-e8c434c983fd\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"b09f56ea-875f-45ae-8336-11c49589f948\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"0365f5fe-88db-4151-9f61-a91673a5e115\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8aa937ba-f7fc-4104-ae20-572d9254e00c\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":null,\"text\":\"X shifted to line up\"},\"id\":\"6c518f1a-32a3-493c-9567-36802cf2a4e4\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"7a1c44dd-8df2-4472-8cb9-59d6aced6845\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0365f5fe-88db-4151-9f61-a91673a5e115\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"7efbf255-9278-4a8c-a27a-57a5820c4424\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"dc1bf2fb-c634-4028-880d-9230ca4b3cab\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"7efbf255-9278-4a8c-a27a-57a5820c4424\",\"type\":\"LinearAxis\"},{\"id\":\"df6c2d8f-6d8a-41eb-81cf-a9cd7b67fa25\",\"type\":\"Grid\"},{\"id\":\"dc1bf2fb-c634-4028-880d-9230ca4b3cab\",\"type\":\"LinearAxis\"},{\"id\":\"54860585-ee62-4ea4-ac5d-b5e2538dc7e2\",\"type\":\"Grid\"},{\"id\":\"53293560-2f11-4807-8268-73cc1f35cd2f\",\"type\":\"BoxAnnotation\"},{\"id\":\"8aa937ba-f7fc-4104-ae20-572d9254e00c\",\"type\":\"GlyphRenderer\"},{\"id\":\"c18e03f1-c7a1-4ba0-9667-af6c5cafd31b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"6c518f1a-32a3-493c-9567-36802cf2a4e4\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"d66ebf8b-8e8b-446c-b1f6-4eb3da8731ea\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"2edfda0e-03cb-4d3c-9940-a4f238b09172\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"f5e311c9-7e4c-4265-8677-cec5b1f260f3\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"da942739-6700-42ea-85de-e2a9ae0e1ee3\",\"type\":\"DataRange1d\"}},\"id\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b09f56ea-875f-45ae-8336-11c49589f948\",\"type\":\"Line\"},{\"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\":\"d1c54859-0f88-44f5-8c1b-e8c434c983fd\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"9ae3b285-2f71-4df9-83e6-966e4c84e337\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"2fddbd0d-09d1-4473-ab50-860f909d31c3\",\"elementid\":\"44d5d1e7-6ee1-48bf-b42b-d4911778e6e8\",\"modelid\":\"9ae3b285-2f71-4df9-83e6-966e4c84e337\"}];\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(\"44d5d1e7-6ee1-48bf-b42b-d4911778e6e8\")).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=\"941a743d-ef2f-4a89-acd8-9d5a370fd664\"></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(\"941a743d-ef2f-4a89-acd8-9d5a370fd664\").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(\"941a743d-ef2f-4a89-acd8-9d5a370fd664\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '941a743d-ef2f-4a89-acd8-9d5a370fd664' 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 = {\"4f9b3f3f-22ac-4db4-a498-3abdfb0b946a\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"ffd5f613-ad46-4c58-b0d2-a2d5a9e9e3c4\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"6f4259c4-8bf9-476e-9bbc-7489ee9bcacc\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d6806933-a63e-40cd-aad2-d057919a98ca\",\"type\":\"BasicTicker\"}},\"id\":\"cc7cd289-8d3b-4c8a-adff-09b97e0fb6d7\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"d6806933-a63e-40cd-aad2-d057919a98ca\",\"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\":\"951b6812-5239-41ab-87f1-a9cc6f44f046\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"355e5292-9f29-44de-b60a-b6cf32da80e1\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"baf01cd2-c074-43d4-b884-ec7e73b30d8c\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9358ad3b-e51c-4fb9-804e-03bd1b3877bb\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":null,\"text\":\"residual X\"},\"id\":\"7a8d7d92-859d-4e92-b240-6551a702e692\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"24befdd7-3faa-4948-8b68-039a6e64df36\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"251a5a5e-c227-4540-8454-afcf95245785\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"24befdd7-3faa-4948-8b68-039a6e64df36\",\"type\":\"LinearAxis\"},{\"id\":\"cc7cd289-8d3b-4c8a-adff-09b97e0fb6d7\",\"type\":\"Grid\"},{\"id\":\"251a5a5e-c227-4540-8454-afcf95245785\",\"type\":\"LinearAxis\"},{\"id\":\"b8ceb826-a0f7-4f2d-9335-fb21abb75b13\",\"type\":\"Grid\"},{\"id\":\"f114997b-b354-4631-ba75-0a35dba5bd81\",\"type\":\"BoxAnnotation\"},{\"id\":\"5404a97b-6a3b-4f37-9d02-08f78871da43\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"7a8d7d92-859d-4e92-b240-6551a702e692\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"4708e202-30cd-45f7-ab9e-034eb96e5c3e\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"e58637b6-fc6d-4ec6-8c2e-d2b9c6dd5e8b\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"baf01cd2-c074-43d4-b884-ec7e73b30d8c\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"b1de8b84-6d53-4406-8b62-79ecc839fa5b\",\"type\":\"DataRange1d\"}},\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"formatter\":{\"id\":\"ffd5f613-ad46-4c58-b0d2-a2d5a9e9e3c4\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d6806933-a63e-40cd-aad2-d057919a98ca\",\"type\":\"BasicTicker\"}},\"id\":\"24befdd7-3faa-4948-8b68-039a6e64df36\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"355e5292-9f29-44de-b60a-b6cf32da80e1\",\"type\":\"BasicTicker\"}},\"id\":\"b8ceb826-a0f7-4f2d-9335-fb21abb75b13\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3779a598-f6c1-4c47-846a-5d0a52476cc1\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"5f1fbc77-e1ef-4179-9613-bd3059be6d7a\",\"type\":\"PanTool\"},{\"id\":\"6f4259c4-8bf9-476e-9bbc-7489ee9bcacc\",\"type\":\"WheelZoomTool\"},{\"id\":\"5c7e4595-b0e4-42b0-86ad-d0e98e689ba1\",\"type\":\"BoxZoomTool\"},{\"id\":\"1525b4b7-2fc2-438b-b705-fbc34f2ee06a\",\"type\":\"SaveTool\"},{\"id\":\"9cbba19f-ce21-4b4f-b973-afe3684f9e00\",\"type\":\"ResetTool\"},{\"id\":\"9358ad3b-e51c-4fb9-804e-03bd1b3877bb\",\"type\":\"HelpTool\"}]},\"id\":\"e58637b6-fc6d-4ec6-8c2e-d2b9c6dd5e8b\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"92d8a394-ec49-48a3-b502-e6a7b39c7867\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"951b6812-5239-41ab-87f1-a9cc6f44f046\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"92d8a394-ec49-48a3-b502-e6a7b39c7867\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"00cbb385-fb7a-468a-8de2-9499e122b10a\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"5404a97b-6a3b-4f37-9d02-08f78871da43\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"3779a598-f6c1-4c47-846a-5d0a52476cc1\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"355e5292-9f29-44de-b60a-b6cf32da80e1\",\"type\":\"BasicTicker\"}},\"id\":\"251a5a5e-c227-4540-8454-afcf95245785\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9cbba19f-ce21-4b4f-b973-afe3684f9e00\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"00cbb385-fb7a-468a-8de2-9499e122b10a\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5f1fbc77-e1ef-4179-9613-bd3059be6d7a\",\"type\":\"PanTool\"},{\"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\":\"f114997b-b354-4631-ba75-0a35dba5bd81\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4708e202-30cd-45f7-ab9e-034eb96e5c3e\",\"type\":\"ToolEvents\"},{\"attributes\":{\"overlay\":{\"id\":\"f114997b-b354-4631-ba75-0a35dba5bd81\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5c7e4595-b0e4-42b0-86ad-d0e98e689ba1\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1525b4b7-2fc2-438b-b705-fbc34f2ee06a\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"b1de8b84-6d53-4406-8b62-79ecc839fa5b\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"4f9b3f3f-22ac-4db4-a498-3abdfb0b946a\",\"elementid\":\"941a743d-ef2f-4a89-acd8-9d5a370fd664\",\"modelid\":\"ddc76bd6-8cfd-47b7-b52d-0a39dd7f90b8\"}];\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(\"941a743d-ef2f-4a89-acd8-9d5a370fd664\")).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=\"316f8a96-852b-4563-a8af-b2833543bd04\"></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(\"316f8a96-852b-4563-a8af-b2833543bd04\").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(\"316f8a96-852b-4563-a8af-b2833543bd04\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '316f8a96-852b-4563-a8af-b2833543bd04' 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 = {\"40eb2486-3c26-4846-9156-8189fe17585f\":{\"roots\":{\"references\":[{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7f3cd510-3bbd-4afb-b866-ae8b485b839e\",\"type\":\"LogTicker\"}},\"id\":\"e0d511d8-0273-408b-a870-564bcb67d1ac\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"ce74e449-799b-440d-8ed7-5a769f7fbb1b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"dc24805f-3235-4f2c-ba3c-bb24bebc70c0\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7f3cd510-3bbd-4afb-b866-ae8b485b839e\",\"type\":\"LogTicker\"}},\"id\":\"ec4e73c7-2799-44b8-a5f4-58a882d1fc5d\",\"type\":\"LogAxis\"},{\"attributes\":{\"plot\":null,\"text\":\"Y delay time vs. correlation\"},\"id\":\"8e01e67a-1026-4227-a8ee-ef8080645a78\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"355c7def-608c-49aa-a454-09fa74770d45\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"845683f3-27e3-470c-8699-56ccb119bc30\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"505ae554-69d0-4869-84f3-0d1be7d20eb1\",\"type\":\"BasicTicker\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"7f3cd510-3bbd-4afb-b866-ae8b485b839e\",\"type\":\"LogTicker\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1570760a-fcdb-484d-86e5-3b82336e73ca\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4f17aa78-d807-4223-a655-be1cc952c01e\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"f4b66343-d7ad-4e32-a0df-e8ba3230f295\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"876f73c4-ef9a-4997-bb32-78e4d0e81065\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"formatter\":{\"id\":\"ce74e449-799b-440d-8ed7-5a769f7fbb1b\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"505ae554-69d0-4869-84f3-0d1be7d20eb1\",\"type\":\"BasicTicker\"}},\"id\":\"26ee803c-1aa5-42af-8b8f-d1d4e3826380\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"974272a3-d64a-42ef-bbb4-68a754f8e07b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"505ae554-69d0-4869-84f3-0d1be7d20eb1\",\"type\":\"BasicTicker\"}},\"id\":\"13482479-4792-4cc8-a875-aac6b23feed1\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"9b37739d-3d2b-47eb-a5a6-be5f70dbd179\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"5e9ad2c2-621d-45a0-8f9e-a889652bbe60\",\"type\":\"PanTool\"},{\"id\":\"16f6b1a4-2578-4a02-a9a1-1caf8c6762ca\",\"type\":\"WheelZoomTool\"},{\"id\":\"876f73c4-ef9a-4997-bb32-78e4d0e81065\",\"type\":\"BoxZoomTool\"},{\"id\":\"845683f3-27e3-470c-8699-56ccb119bc30\",\"type\":\"SaveTool\"},{\"id\":\"355c7def-608c-49aa-a454-09fa74770d45\",\"type\":\"ResetTool\"},{\"id\":\"4af17428-596d-45dc-bbd9-609a2c4a58d5\",\"type\":\"HelpTool\"}]},\"id\":\"1eaa0a79-9e38-4b02-b7f7-f83b90c13dc5\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.03317385679874718,\"plot\":null},\"id\":\"5749942d-5bc2-4e1f-b9b9-f950b3d470ec\",\"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__\":\"EowK7MUgJUFwY2GEQoAoQXpmYuGX1CtB7GB5TTkUL0GO9SbTgBwxQZ6OZSi2iTJBRQL1JP3rM0E8S9UZtSA1QXJvSPTSRDZBRtEe7+09N0FgCv3B/B04Qa4GO5AR3zhBVlLwUEB6OUHA01PTF/45QXaAFeqgVTpB3FGBlECbOkEwd+fs6rQ6QQ6nkA60vDpB6A+TYCCbOkHNQ2m2vWQ6QS7E1UPcDjpBH9BMF82bOUEzdqZ3QxU5QWCiA40zajhB7nXts8+yN0GK6cPD6ds2QZSBlqzH9TVB6Flz+4L4NEFqwZU9bOozQeSfjMYVyjJBprSLnK6bMUGmzIeeeV4wQXA/2thaIy5BDW/5NhmMK0E0MSRapcQoQXufowz++SVBBJ7RM/IdI0GKKNgM6DIgQZw1q/mmtxpBBdwq0FreFEHUnNF1xYAOQfRnkvePPANBeFaHf6Vx8EDgOL2o74/UQEQkBPCyBfpABHcAZT9NB0HPHv1Gln4QQZ5TO08ySBVB0b12ljPTGUELKhKXXSkeQU/3IH5nLSFBOHCngN0jI0Gkguj+9wglQe5kxwWLySZB7qtWvHx3KEFefKkbaP0pQVFZRjVmdCtBtencc2K/LEEWHiUWfvktQa2+v4AzEC9BXvrwj9UCMEH72lAf/HMwQVh4LZcozjBBK8F1apoiMUHwGKZ/+14xQTrk2iSojzFBWjDmfzayMUGZIw+QU8cxQXejDKOqyzFBcEEIh36zMUHnCUimVZMxQZKKbFvzUDFBdxR4ZtkHMUGGf08/VaEwQcIlJKQqLjBBDHXv5I9TL0HXqJM+QyMuQZdDyDSS4yxBipmRF/x3K0GeoJwHNQUqQTL6sCW9bChBakcz7LjLJkG8Yl/QDhIlQVQ7hAxmTiNBF0zs9p12IUGGE345rD8fQarFAGBIaxtB3WDsjxiZF0HMPTydX8MTQazxMab2sw9BHMEoGvlBCEFUgZT4r28AQRjmShhLXvJAwGq8e6K/zEDgDK6nbjjlQDjvrrVeB/hAeCCtz63YAkHoIqQruckIQVRh7SW8/Q5BKAYtS4dWEkF0uvpEuPsUQdIT2vmCihdBZumAUDSgGUGhoP0mubAbQTgDlyQQQh1BEJI5+xCrHkEHyBhomcIfQdynTeW5QiBBdNJJt5WJIEE0iL0uyqAgQchqa2onnyBBNGf/NuVzIEGSQ/z6MTAgQXGIoWsejB9BhI4V9m+NHkFVqFQxRFIdQZ6Zk1a93xtBpJaVU6VTGkHbms4lSYAYQdkhP8hPoRZBfefePCGVFEEbh35Ibm0SQTqMRIEpRRBBthCo5f3ZC0E/4C+BxlUHQWIGqEYfjAJBPGVXQq/C+0BUNw4OWm3yQA==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"73746d2d-492d-4cab-a66c-2e24c3086e78\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"a4043d18-52a6-45ae-a8d4-86a05a38d490\",\"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\":\"f4b66343-d7ad-4e32-a0df-e8ba3230f295\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4af17428-596d-45dc-bbd9-609a2c4a58d5\",\"type\":\"HelpTool\"},{\"attributes\":{\"ticker\":null},\"id\":\"dc24805f-3235-4f2c-ba3c-bb24bebc70c0\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"73746d2d-492d-4cab-a66c-2e24c3086e78\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1570760a-fcdb-484d-86e5-3b82336e73ca\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"4f17aa78-d807-4223-a655-be1cc952c01e\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"c1b5b873-993c-4605-a93e-c154a41b603c\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"16f6b1a4-2578-4a02-a9a1-1caf8c6762ca\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"below\":[{\"id\":\"26ee803c-1aa5-42af-8b8f-d1d4e3826380\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"ec4e73c7-2799-44b8-a5f4-58a882d1fc5d\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"26ee803c-1aa5-42af-8b8f-d1d4e3826380\",\"type\":\"LinearAxis\"},{\"id\":\"13482479-4792-4cc8-a875-aac6b23feed1\",\"type\":\"Grid\"},{\"id\":\"ec4e73c7-2799-44b8-a5f4-58a882d1fc5d\",\"type\":\"LogAxis\"},{\"id\":\"e0d511d8-0273-408b-a870-564bcb67d1ac\",\"type\":\"Grid\"},{\"id\":\"f4b66343-d7ad-4e32-a0df-e8ba3230f295\",\"type\":\"BoxAnnotation\"},{\"id\":\"c1b5b873-993c-4605-a93e-c154a41b603c\",\"type\":\"GlyphRenderer\"},{\"id\":\"5749942d-5bc2-4e1f-b9b9-f950b3d470ec\",\"type\":\"Span\"}],\"title\":{\"id\":\"8e01e67a-1026-4227-a8ee-ef8080645a78\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"9b37739d-3d2b-47eb-a5a6-be5f70dbd179\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"1eaa0a79-9e38-4b02-b7f7-f83b90c13dc5\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a4043d18-52a6-45ae-a8d4-86a05a38d490\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"974272a3-d64a-42ef-bbb4-68a754f8e07b\",\"type\":\"DataRange1d\"}},\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"ad06e866-b395-4b56-b298-a67d16746bc3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5e9ad2c2-621d-45a0-8f9e-a889652bbe60\",\"type\":\"PanTool\"}],\"root_ids\":[\"ad06e866-b395-4b56-b298-a67d16746bc3\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"40eb2486-3c26-4846-9156-8189fe17585f\",\"elementid\":\"316f8a96-852b-4563-a8af-b2833543bd04\",\"modelid\":\"ad06e866-b395-4b56-b298-a67d16746bc3\"}];\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(\"316f8a96-852b-4563-a8af-b2833543bd04\")).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=16.6 samples (33.17 ms / -3.406)\n",
"\tgain=70.0 (beta=10.463), bias=-554.6\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"e6872531-2a91-40b5-94cb-e85c26f11db1\"></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(\"e6872531-2a91-40b5-94cb-e85c26f11db1\").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(\"e6872531-2a91-40b5-94cb-e85c26f11db1\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e6872531-2a91-40b5-94cb-e85c26f11db1' 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 = {\"5fc321c3-430b-4cab-a192-d46cea9f89d2\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"cb9e9fbf-c677-4707-991c-3ff97abbf320\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3c92ad41-9f3f-45c8-b4d1-f9b96d0e5571\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"975ba9a5-c8f8-4fb5-bd1a-341f2a02c85c\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"91664a43-d12a-4086-98d1-f990f95f4829\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e29be377-4b69-42e4-b098-a1d8bb7fc1f0\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3c92ad41-9f3f-45c8-b4d1-f9b96d0e5571\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f2409b59-65ae-4600-9d67-5926071383c3\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0ca7c39d-a52e-46df-995a-f4586226cf30\",\"type\":\"BasicTicker\"}},\"id\":\"b45b4180-8aaa-49ab-9f29-6b53b2e3a68e\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"943f9b80-77af-41c5-80ad-bf324f4e5fd2\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"17ed1a2d-fa98-491c-80b4-73e641a9519a\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"943f9b80-77af-41c5-80ad-bf324f4e5fd2\",\"type\":\"LinearAxis\"},{\"id\":\"b45b4180-8aaa-49ab-9f29-6b53b2e3a68e\",\"type\":\"Grid\"},{\"id\":\"17ed1a2d-fa98-491c-80b4-73e641a9519a\",\"type\":\"LinearAxis\"},{\"id\":\"91ba7ef1-f14c-42d4-baec-86f3d91a22ed\",\"type\":\"Grid\"},{\"id\":\"76db955e-8ec9-45cc-8b56-bdb7cc76a5a7\",\"type\":\"BoxAnnotation\"},{\"id\":\"e22a487b-7001-457c-84ea-ef6514d13d46\",\"type\":\"GlyphRenderer\"},{\"id\":\"91664a43-d12a-4086-98d1-f990f95f4829\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"4cd7e82f-cdb1-4112-9045-12b767835744\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"7340a2a2-3cfd-49cd-8a92-30f50199930a\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"340bb258-cdef-4c49-a093-ffcdada60db3\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"221d6e9f-fb39-4290-88ae-f4adfa8fc347\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"7ce3a8c0-1599-4a62-be7e-37c3f9c70116\",\"type\":\"DataRange1d\"}},\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"847ad2f9-5c3d-46c8-95b7-d3898c200515\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cfd5652e-4dd2-4bf7-ae38-ba5b83fd61b7\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"7ce3a8c0-1599-4a62-be7e-37c3f9c70116\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"7340a2a2-3cfd-49cd-8a92-30f50199930a\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9b9832d3-6957-49aa-9f31-9443c136fc10\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"847ad2f9-5c3d-46c8-95b7-d3898c200515\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0ca7c39d-a52e-46df-995a-f4586226cf30\",\"type\":\"BasicTicker\"}},\"id\":\"943f9b80-77af-41c5-80ad-bf324f4e5fd2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"56407238-75b3-456f-9683-0d1a3485a1cb\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"c176dc14-0602-4b5d-a11c-d24e7675513e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"09b5c45e-bd08-4c3d-a800-17c0c68d1e2f\",\"type\":\"BasicTicker\"}},\"id\":\"17ed1a2d-fa98-491c-80b4-73e641a9519a\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"09b5c45e-bd08-4c3d-a800-17c0c68d1e2f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"09b5c45e-bd08-4c3d-a800-17c0c68d1e2f\",\"type\":\"BasicTicker\"}},\"id\":\"91ba7ef1-f14c-42d4-baec-86f3d91a22ed\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"221d6e9f-fb39-4290-88ae-f4adfa8fc347\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":null,\"text\":\"Y shifted to line up\"},\"id\":\"4cd7e82f-cdb1-4112-9045-12b767835744\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"975ba9a5-c8f8-4fb5-bd1a-341f2a02c85c\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"84f6ee5d-7c51-471a-8c3e-a7566d8ae9a8\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"f520bf02-9080-470d-af92-918814e8ca0d\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cfd5652e-4dd2-4bf7-ae38-ba5b83fd61b7\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"bdf2856d-7f71-4715-8ba4-f287b90dbc1c\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"e22a487b-7001-457c-84ea-ef6514d13d46\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"0ca7c39d-a52e-46df-995a-f4586226cf30\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"56407238-75b3-456f-9683-0d1a3485a1cb\",\"type\":\"PanTool\"},{\"id\":\"f2409b59-65ae-4600-9d67-5926071383c3\",\"type\":\"WheelZoomTool\"},{\"id\":\"c08bd68b-27ee-4052-a738-829ab1c10ea4\",\"type\":\"BoxZoomTool\"},{\"id\":\"84f6ee5d-7c51-471a-8c3e-a7566d8ae9a8\",\"type\":\"SaveTool\"},{\"id\":\"9b9832d3-6957-49aa-9f31-9443c136fc10\",\"type\":\"ResetTool\"},{\"id\":\"e29be377-4b69-42e4-b098-a1d8bb7fc1f0\",\"type\":\"HelpTool\"}]},\"id\":\"340bb258-cdef-4c49-a093-ffcdada60db3\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"XuRfkECSYkCI962MELVpQNUeXzwelXBASI+R1QqMdECKMXC2Kcd4QEzxZzebRX1AlXwqf/L/gEBlA51B3XSDQCwmnxq++YVA9LrBSLmFiEBofyicbA+LQF+ozm9cjY1AquPS7Uf2j0BDwUPCtiCRQBSNKPFdM5JAmhNqp3ovk0ABgXW65BGUQDLtkS7w15RAkKwcU3B/lUAmjAvMtwaWQGdBnSqVbJZAmZR5D0+wlkC0l4yYnNGWQOyFBu6c0JZAUwbm9s6tlkBZDfGcB2qWQLatCpFoBpZAyI50SFWElUDhES5xaeWUQO7w1vdwK5RAiB7zUl9Yk0DUAPcZSG6SQI65XytWb5FAGp1L7cRdkEDgT5YqtHeOQOVlAXC8F4xASkrfCy2giUAOZBp6exWHQJ2rfCYCfIRAXcnHIP3XgUAmqgkDD1t+QAluP+Q0AXlAMPIrRhKqc0CyRZ+G/LlsQORqUjn6QWJAQCEf1xfmT0CAxlQGzJQwwCjhyziorFfAcGYSmmVGZcBY+Ws9a1huwAgH0otzgXPAVgZG/KKed8AqQtE69X97wD75gqQXIn/AKw9SMxtBgcCbp7Kx/M6CwHGI/f+/OYTAz1pxdLCAhcDl1piZVKOGwO0Sj2RuoYfAt7zNXvh6iMApLaRcIDCJwEMwovdCwYnAuVEVSecuisCRSk1lvXmKwNn8EbidoorA1R+L6YWqisA9bxCTlZKKwEVvDaoNXIrAf0RGnFEIisDpdFv+5piJwOlMZ+5xD4nAdwLIma5tiMArGkZ7arWHwGVE2Nd86IbA280S+8AIhsCRj+XyEhiFwEOySTdKGITAoYbjaTYLg8DTW37mnfKBwKmXRc470IDANn+7S4JLf8AIpCmKq+l8wGoEQd8sfnrALl1gPiMMeMDeCxZUipZ1wPyZAuY4IHPAbKEO/t+rcMC8bkfxGHhswJyQIyZNpmfAaIA/yu7mYsAoASWIsXxcwFA+S7FdYVPAkEbKtYcHRcCA/eyARLUewAAM96PVgzlA0F19KTO1TEA0LVFFrvtVQIQBHrHmPl1AcCHJjMoPYkDyI+ZU4ExlQFTds3QWVWhA7BAX7R0na0AclQ7j6MFtQHdagutMEnBAJ5aUpDsncUDK696Zdx9yQAGOu+HL+nJAsLvqYxm5c0BOU4T2Wlp0QCZr+Qeo3nRAgmNCfjhGdUA7P3puZJF1QBqMsAChwHVAOO2lDoPUdUA4vXvOvs11QNInsMMlrXVAKANyv6VzdUAjMmJ7RCJ1QMaHq78gunRAoM7l/nE8dECGg/ryhqpzQJILp+/EBXNAKaOVg6RPckAUR/S3rolxQIDKd2x2tXBADkhy3Cqpb0C0mebbT9FtQPD430yS5mtAzliOiSTsaUCYRfJdMOVnQKpBdmHc1GVAMKoS30u+Y0D6sgBPo6RhQFxqaPP8FV9ApC3j1cfoWkDsLSAIgsdWQMidT+zAt1JAgAHuCad9TUCIh05Oa8NFQOCiPMIMlDxAAIufdVVnLEAAmAD7yiPdP4DexEeUOCnA4Nq33ZnzOMDgpq7h30NCwCBTlI6NqEfAgGYWDO6kTMAILlrLf5tQwJDl6cjTrlLAMFZLzUiMVMCYa3tMFzRWwEiZflfMplfAOHxolUHlWMCA3YnDpPBZwDj2Y5x0ylrAmAbYcoV0W8AoPCDdDfFbwGigSoaXQlzAUCDN6O5rXMDYY6u73lhcwECMGNq1t1vAUObNL/IPWsCI13haxwJXwAj/dkVIYFLA4JVNL7I6SMDgKxbWiCwxwGC1QMG9wDNAeF66axa/TkCcBMveNMRaQJjydz8DbWNA7Gh04HytaUBg0YdDeABwQCvJZZ4dI3NANy9cyEIvdkBb5GG66hZ5QIcY/qW3zXtAB2Uf5gZJfkC7KtMW+z+AQI/5QyKxNYFAJy48eO0CgkDjfVXWxKWCQNUsheALHYNAAQYwsEdog0CKNUqnn4eDQOdoE+bOe4NAuJ0ooRFGg0A1m6OeFuiCQGLzB5rtY4JARF3AGfW7gUA3JaUEy/KAQFaClag5C4BABYR3PIgKfkCIcZAdn7J7QAdg/1fe9XhAwLzLw93BdUCjGBnw2A9yQNqygTsixGtAnKubPT+DYkA4RRV4gfJQQKD5jFMNtTHAsO4Wl2LJWsAos7wL0+ZowJj5mYQgSXLAQvYk2XEeeMBy0OQaK999wDlTbPUpvIHAjcB9sT5shMBvbOxZ/feGwCvB0TyCWInAw6COo+aHi8DJ2ZU6RIGNwBt8lzmzQI/AnJBgFaBhkMBCbgexbwORwJSU8AUuhZHAtHI1gKLmkcBiJWP37SeSwEojQdqBSZLAsPmxrhdMksCGiCPOpzCSwCCSM91g+JHAUPOZnaCkkcDc5yuE7DaRwCZVQJhespDAMEPdOQUekMB/B5md4QaPwHcwe7VH1Y3AG+nhenOxjMD9fNJRB6GLwGVikDkcporAi6FOaiPAicAB0LEeo+yIwE8puijUJ4jAZ1agASRth8Bjhn9woLeGwEmS0XFNAobAResSWGRIhcAdlRJrg4WEwI/rSM/RtYPAjbrSjxfWgsBP8GIQzuOBwEMBVOMi3YDAxrHn9+SBf8CwR1usgx19wATtP2VmjXrAMKJbiPDSd8BafGMXgPB0wFZQl0NJ6XHAbM0z5XOCbcC4nxuos/lmwIzv5mtVQmDAkC+1ujrOUsCgtFhqspozwMCRcOWGNUJAUOy9AJEeV0A=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"cb9e9fbf-c677-4707-991c-3ff97abbf320\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bdf2856d-7f71-4715-8ba4-f287b90dbc1c\",\"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\":\"76db955e-8ec9-45cc-8b56-bdb7cc76a5a7\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"76db955e-8ec9-45cc-8b56-bdb7cc76a5a7\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c08bd68b-27ee-4052-a738-829ab1c10ea4\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"c176dc14-0602-4b5d-a11c-d24e7675513e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"f520bf02-9080-470d-af92-918814e8ca0d\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"5fc321c3-430b-4cab-a192-d46cea9f89d2\",\"elementid\":\"e6872531-2a91-40b5-94cb-e85c26f11db1\",\"modelid\":\"fdcca1ad-5a68-4f9e-93a3-0b0186aa7163\"}];\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(\"e6872531-2a91-40b5-94cb-e85c26f11db1\")).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=\"797d6704-a53d-464d-a803-c3617e95987d\"></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(\"797d6704-a53d-464d-a803-c3617e95987d\").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(\"797d6704-a53d-464d-a803-c3617e95987d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '797d6704-a53d-464d-a803-c3617e95987d' 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 = {\"d3095cff-621f-4c24-b23c-c4e34ba27138\":{\"roots\":{\"references\":[{\"attributes\":{\"formatter\":{\"id\":\"5be7b127-7d03-4430-a8ab-c0b53708ada1\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fbbb4cb9-14f5-4f91-b5de-bc87aeaea2cf\",\"type\":\"BasicTicker\"}},\"id\":\"42a46fca-bbaf-4930-9c04-2c17c869d078\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5ec942d3-ee10-4197-ad79-d3efc9bad2fb\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"719346a0-0cf0-42d1-8fda-33d6ba7a1ad0\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"1fc559c6-c412-4edc-86de-c226d6349889\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3006f32f-0202-45a8-bf9f-fc06fbae9899\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"046a679d-c3b1-4bf9-b780-d69ed550ffa8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"eJF/QYKFRMCI962M0I1owKo9vnjMKGTAkB4jq5VuYsAoxsDZhgxdwGCKP7sZ60/AUMmn8ifKQMBA2UBnUJErwECdDVZe8ElAgKHI59aMOkCACXg9tklLQAi9ioF8OVdAwIqjRYIqNUDQ68Pb85pbQIBd7toBqERAwIy9EmsLR0Dw76dYFKNUQABnCbdoFCJAAG5qnHV2TECA9hz9TOk5QICzoE6VVyPA4GzNEJ7EQ0AA2ktGzKUowACg0MuPdOg/QGt+RqJnN0AgqyGem6tHwEBJqt4x40pAANmR/v0hQcCAD/coS34pQEDiIQU5XUFAANFjXuLMRcDA8o9gothaQMAx92uVBkbAYC5GKyEzWUAAAptW/eNKQLCh6f/YBUxA2NaC0FOEZkBAfrO80JU9QIxRDWaXpmtAGLXB+RYmUkC0q+z5YQlnQO4jgTfO6GNAoBuoc2tpYEBOumB5mx1sQDgqW41rXFlAsDc4CkopbEDQmMqAObBgQJTwZRy0cGhAcGYSml2ZZ0BY+Ws94wxlQBAOpBef9GlArAyM+BX9Z0BUhKJ1qiBoQHzyBUnfm2tArDxIzWwYZ0BsnsrGolhrQMQh9v83TmpAPGvF0RnoaECUW2Nm0sJsQLRLPJIJRGdA3PI2eyGfakCktJByQbJnQAzBiN6LRmdA5EZVJJXCZ0BEKjWVnatmQGTzR+CyqmVAVH8sptPGZUD0vEFMavlkQBS9Naj6AWdA/BEZcaYXZECk0235S41mQKQznblLs2FA3AkgZyrqZUBY0TDa1zZdQJQRYV+R0mBA2G6W2HEGXUCIfCyXI/tTQBiSTbpcPFhACDUcR9IzUEAwveV3Zn5HQJB6WeR6DUxAYPO3u+ghM0BAIE1ROChEQMBy3xf0virAwKULzOcdKEAgQp++qsE+wCAw688Q9kDAQOkVH6AHN8CIInEdQv1UwED2xp3NlCzAMP+Aa5LOV8Cw/bXv/HRKwLDBtE5ChFLAuNwaJbxQV8AoMPG3A6BQwADD/Wj1yVjA6K6+lGEiVsA0LVFFBgRawIQBHrFu21fA4EKSGYU/XcDkR8ypKL1fwKi6Z+nsa1jA7BAX7XFTYcA4Kh3G6RtVwNxpCa4rylrAnFhSku7OWcAor3tnJtlSwAQ47obLT1fAwO6qj3XDUsA4TRHaO9tUwJis5R+s31HACI4J+XXPVMDY+dFza7RIwGgwwgJMA1jAwGkvdbhrR8Dg9O45g9tQwEifwA4jc1PAgDIg9yt4McCMyIjtte9YwIDx4eqvyRLAgDqX+3+RVcBgOKgvZ4o/wJBcOH36hkXApIxWDsfOU8CAHXcBzRQpQAAq37E93lnAyN82jqzyQUBoM8230RtVwAAQByCzku8/cMZyTBycMsBgFsl34ZBOwFj5JnreykJAYFQlvmG7XcAYNP3DkvRMQFxqaPPwylnAcElzqCC1MEDYW0AQzDxDwJA7n9iJFETAAPpH2OMWKUDEQyenZYVSwJCu4Z5RwEdAYPGzrmLyUsDQ/glqAO1IQGDIDu4KV0rAgGvfdmcnGEDATV3DT9QxQOCsa3Gif0TAgGYWDC4fSkDwo0tpONVBwECWpyN/njxAAHQqrcxE+r9gru0xXUoyQEDK9LvycCBAcPjQKmMXQEAAdicOc6IxQODYj3HK+D5AMA2w5eJaSECg8IB0h3c/QNBAlQyzvUlAoECa0XGqTECwx1Z3ZQ9DQIAYMbTTrklAUObNL4rpUkCI13ha8VhRQIR/uyKgM2pAeGXTi0Q9YUC+YmGNuU9xQFTp10cLrG1AMbSIMuaacEDZPk3IOd1zQGgNiMBuPmxAisvFj93Fc0BAXfB4bRVvQKptNMOs029AkqFHbw4Vb0BKNzyLgktqQPLOA7RQtmhA8jXBM6JSaEAUVbOkS65iQMQZ8Haj5GFAZEcPH4JaYkDoEFRN+XRVQFiZ1vtgbl9A8J///MS6TkBgp1yLZUJLQMi4ZM9YNldAALcTJTQrOMBYJuMKq3NTQACx+QPNrBjAACDqAs643b9I1tbaZ7NSQGAlWImaxUrA7O8hDn84UUAAPMc3ccAPQAAHYP9XjvW/ABqi4dFgQUCMYmTAQ/pRwNCWDdyRPDbAOFc3ex5RW8A4RRV4wSFXwMxgjlXOamLAqIh0tI7TYMDYTEP07KdgwNAMzPZ+vGXA+CZsm1gBWMAcXzbKQeJrwHDMOqng+0rAzP0IOlX1aMAQOTlhCuBFwFT7uAxHV2DA0PMVx3WcTMBwY6JWnOZAwCgfRDPWgFXAgBMSrMKLREDgG4nvvERVwICSEr4AvUlAgKlR+X/BQ8CAWMnY3SE7QAClkSCNdCpAAABl4BRN0L+AIeKI18k2QAAAEMmZBqg/ANR8ZoeTMUAAEgzqXW0rwACTKiAMJSNAAGheEYMfL8AgEN9MbNY2wEh8JlSiblDAlFt4FKLXZMAMDLa4+odhwDY734yzG3HA1HnFViokbMD+X5zCmQx1wGKti67TL3LAMlO//A+FdsA68wAftypzwG7bXByZFnfAdinaT5d0dMDG1dopycdzwOIobmEUiXbAzBW1wJF1bsBiHzrfq1R2wPT6r3LkJ27AOk4YCCOVcsCgcEmnOMNvwPglgDXTZ23A0F2kd/9ccMBMBznRj7JrwFRf0Xj9HWzAlDLMGrzPaMBIYORXDIZswHQQGZRKHmTAOGilotI4bMBs6bSyGbhiwHAkXLnRfWbAKPZegLj7ZsA=\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"4e40f39e-3a19-4a0b-9353-8af91628c496\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fbbb4cb9-14f5-4f91-b5de-bc87aeaea2cf\",\"type\":\"BasicTicker\"}},\"id\":\"98cf62ad-5b05-4f40-bee4-199df4646412\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"fbbb4cb9-14f5-4f91-b5de-bc87aeaea2cf\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5be7b127-7d03-4430-a8ab-c0b53708ada1\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"42a46fca-bbaf-4930-9c04-2c17c869d078\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"3b15e22e-45c2-4e1b-b654-597ae21a29a3\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"42a46fca-bbaf-4930-9c04-2c17c869d078\",\"type\":\"LinearAxis\"},{\"id\":\"98cf62ad-5b05-4f40-bee4-199df4646412\",\"type\":\"Grid\"},{\"id\":\"3b15e22e-45c2-4e1b-b654-597ae21a29a3\",\"type\":\"LinearAxis\"},{\"id\":\"7f0f7764-66a1-469c-b635-4d9545a361c8\",\"type\":\"Grid\"},{\"id\":\"719346a0-0cf0-42d1-8fda-33d6ba7a1ad0\",\"type\":\"BoxAnnotation\"},{\"id\":\"04bc5ce3-4906-4e0b-b9ea-6e6140c5027a\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"ab71e19d-f225-43ab-afba-1aedb2592a0f\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"036704a4-9489-4214-9e36-b9ad7ccd7ef6\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"0be93da9-f637-4c6f-ab22-fbe483bd9425\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"b8cec7f2-f956-4cb5-9d23-7816ca82837b\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"8b356482-0336-4c6c-936e-c1c907fe11e0\",\"type\":\"DataRange1d\"}},\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"b8cec7f2-f956-4cb5-9d23-7816ca82837b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2b562d0e-9d0d-414c-9d91-4516b5b73293\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"2942cdab-9d71-43b2-add9-a93a8375aabc\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"eadd9ab1-3b97-456c-8481-0a0a7751fc7a\",\"type\":\"BasicTicker\"}},\"id\":\"3b15e22e-45c2-4e1b-b654-597ae21a29a3\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"eadd9ab1-3b97-456c-8481-0a0a7751fc7a\",\"type\":\"BasicTicker\"}},\"id\":\"7f0f7764-66a1-469c-b635-4d9545a361c8\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"4e40f39e-3a19-4a0b-9353-8af91628c496\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"5edb2e38-9a64-48a6-a516-baa1f17a57a3\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"aa218d2d-07f5-4ec5-9efc-5a61af1d3034\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"04bc5ce3-4906-4e0b-b9ea-6e6140c5027a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"036704a4-9489-4214-9e36-b9ad7ccd7ef6\",\"type\":\"ToolEvents\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"aa218d2d-07f5-4ec5-9efc-5a61af1d3034\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2942cdab-9d71-43b2-add9-a93a8375aabc\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"eadd9ab1-3b97-456c-8481-0a0a7751fc7a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"935043b0-443a-47df-892b-8185b10e39e5\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d06a2f89-855b-496d-bd1e-62cdf97880b5\",\"type\":\"PanTool\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Y\"},\"id\":\"ab71e19d-f225-43ab-afba-1aedb2592a0f\",\"type\":\"Title\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"719346a0-0cf0-42d1-8fda-33d6ba7a1ad0\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"d06a2f89-855b-496d-bd1e-62cdf97880b5\",\"type\":\"PanTool\"},{\"id\":\"046a679d-c3b1-4bf9-b780-d69ed550ffa8\",\"type\":\"WheelZoomTool\"},{\"id\":\"1fc559c6-c412-4edc-86de-c226d6349889\",\"type\":\"BoxZoomTool\"},{\"id\":\"3006f32f-0202-45a8-bf9f-fc06fbae9899\",\"type\":\"SaveTool\"},{\"id\":\"2b562d0e-9d0d-414c-9d91-4516b5b73293\",\"type\":\"ResetTool\"},{\"id\":\"5ec942d3-ee10-4197-ad79-d3efc9bad2fb\",\"type\":\"HelpTool\"}]},\"id\":\"0be93da9-f637-4c6f-ab22-fbe483bd9425\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5edb2e38-9a64-48a6-a516-baa1f17a57a3\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"8b356482-0336-4c6c-936e-c1c907fe11e0\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"935043b0-443a-47df-892b-8185b10e39e5\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"d3095cff-621f-4c24-b23c-c4e34ba27138\",\"elementid\":\"797d6704-a53d-464d-a803-c3617e95987d\",\"modelid\":\"935043b0-443a-47df-892b-8185b10e39e5\"}];\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(\"797d6704-a53d-464d-a803-c3617e95987d\")).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=\"86a524e2-5343-4186-a894-97fa27929c05\"></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(\"86a524e2-5343-4186-a894-97fa27929c05\").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(\"86a524e2-5343-4186-a894-97fa27929c05\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '86a524e2-5343-4186-a894-97fa27929c05' 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 = {\"6c4cc5ca-b749-45b2-a14f-0c0e49beb758\":{\"roots\":{\"references\":[{\"attributes\":{\"formatter\":{\"id\":\"7fd9c12c-9ee0-46a5-bb70-d5a3d46612e1\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"10f3c4ca-3fd0-439c-98bd-dd2182ad7b0a\",\"type\":\"LogTicker\"}},\"id\":\"978c881e-6fcf-4cb0-ae3a-fddea64c4f62\",\"type\":\"LogAxis\"},{\"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\":\"5ea0ad19-42a6-4d5d-9f72-6fbc57aab024\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"8fff1780-0b2a-4272-b058-4233ba718330\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c49cb583-9d13-4b42-a28f-d60fd4265c6e\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"6248c4c4-a093-46a8-9d8e-30e05b07dfb6\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"978c881e-6fcf-4cb0-ae3a-fddea64c4f62\",\"type\":\"LogAxis\"}],\"renderers\":[{\"id\":\"6248c4c4-a093-46a8-9d8e-30e05b07dfb6\",\"type\":\"LinearAxis\"},{\"id\":\"b251c95b-bd0b-40b0-a0fa-4c0ecca2f668\",\"type\":\"Grid\"},{\"id\":\"978c881e-6fcf-4cb0-ae3a-fddea64c4f62\",\"type\":\"LogAxis\"},{\"id\":\"040e291f-78e8-40ee-b1a1-890fac479435\",\"type\":\"Grid\"},{\"id\":\"5ea0ad19-42a6-4d5d-9f72-6fbc57aab024\",\"type\":\"BoxAnnotation\"},{\"id\":\"a0e7decf-1e73-460a-a955-2d90b721abce\",\"type\":\"GlyphRenderer\"},{\"id\":\"8ef765b4-3a8d-4555-9b7d-aa2eed261cef\",\"type\":\"Span\"}],\"title\":{\"id\":\"6575cd02-a8a1-40a4-8ff7-918c30f01423\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"4882df50-bf06-48a3-b868-61dac6c51752\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"c65f9096-545e-4bf2-ad7b-cad78294da9f\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"85ee1c68-cef6-4e4a-a630-6893bcdfefee\",\"type\":\"DataRange1d\"},\"y_mapper_type\":\"log\",\"y_range\":{\"id\":\"949e8806-6518-4c87-a931-9757b8e53b02\",\"type\":\"DataRange1d\"}},\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b372f885-5294-431e-8912-560dc808005b\",\"type\":\"BasicTicker\"}},\"id\":\"b251c95b-bd0b-40b0-a0fa-4c0ecca2f668\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4882df50-bf06-48a3-b868-61dac6c51752\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"320c8c9e-e5d7-48d1-bde2-f18c283e9f4c\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"cb33e299-f637-4bc4-9c05-ba99604e5245\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b372f885-5294-431e-8912-560dc808005b\",\"type\":\"BasicTicker\"}},\"id\":\"6248c4c4-a093-46a8-9d8e-30e05b07dfb6\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0a7155a0-acd6-43a6-8945-fb95efd50860\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"10f3c4ca-3fd0-439c-98bd-dd2182ad7b0a\",\"type\":\"LogTicker\"},{\"attributes\":{\"ticker\":null},\"id\":\"7fd9c12c-9ee0-46a5-bb70-d5a3d46612e1\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"dimension\":\"height\",\"line_color\":{\"value\":\"red\"},\"location\":0.0063269130431393384,\"plot\":null},\"id\":\"8ef765b4-3a8d-4555-9b7d-aa2eed261cef\",\"type\":\"Span\"},{\"attributes\":{\"callback\":null},\"id\":\"85ee1c68-cef6-4e4a-a630-6893bcdfefee\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a0d2f1a2-853b-49c9-a0e5-f081950ff85b\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"8fff1780-0b2a-4272-b058-4233ba718330\",\"type\":\"PanTool\"},{\"id\":\"0a7155a0-acd6-43a6-8945-fb95efd50860\",\"type\":\"WheelZoomTool\"},{\"id\":\"44b209ce-c0c8-49eb-9f43-4d3f0563b1fe\",\"type\":\"BoxZoomTool\"},{\"id\":\"e7fb88fe-3a2a-4697-b527-03c57910c5cc\",\"type\":\"SaveTool\"},{\"id\":\"320c8c9e-e5d7-48d1-bde2-f18c283e9f4c\",\"type\":\"ResetTool\"},{\"id\":\"91353c2b-b2cd-4c93-aa58-c6ff920598d3\",\"type\":\"HelpTool\"}]},\"id\":\"c65f9096-545e-4bf2-ad7b-cad78294da9f\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"949e8806-6518-4c87-a931-9757b8e53b02\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"304116ed-35cc-4db9-891d-d9baf5105c21\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a0d2f1a2-853b-49c9-a0e5-f081950ff85b\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"c49cb583-9d13-4b42-a28f-d60fd4265c6e\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"a0e7decf-1e73-460a-a955-2d90b721abce\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":null,\"text\":\"Z delay time vs. correlation\"},\"id\":\"6575cd02-a8a1-40a4-8ff7-918c30f01423\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e7fb88fe-3a2a-4697-b527-03c57910c5cc\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"5ea0ad19-42a6-4d5d-9f72-6fbc57aab024\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"44b209ce-c0c8-49eb-9f43-4d3f0563b1fe\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"10f3c4ca-3fd0-439c-98bd-dd2182ad7b0a\",\"type\":\"LogTicker\"}},\"id\":\"040e291f-78e8-40ee-b1a1-890fac479435\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"91353c2b-b2cd-4c93-aa58-c6ff920598d3\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"b372f885-5294-431e-8912-560dc808005b\",\"type\":\"BasicTicker\"},{\"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__\":\"SKF4TxKKG0GzazVtBicgQYwvErrVXCJBLZ/Mq96MI0GpbFvsb+YiQaD6OveUCyFBpyWzT5RxHUGxBFIO0E4YQdD6Lxv7LhNBaGy0guNdDUEsgyc5ZEYFQYxese8GHf5AmVsEF/zr8kBLAy7IYjvmQDyYf1hLgdBAPd7+MXopiED4NdRKtlzHQEVKsaO0ydVAZPF3dkyI2EAmujh91VDfQC6WUq/EOt1AJIDnXDjv30AQ9SgeI4/fQN4cS6zSPtxAjtpnZOPO3kD/FYHUGRbeQA3tDzw5sN9AQ4KxQLuq3kBS6oOGBKvgQOdZv7Q/LuFAMZB73dVB4kAfxcJ149jjQBFa5+tVjORA+xI8BbnX5UDRequcPlTmQLPUs0yHyuZAan+ateBZ5kCxE4yYXR7nQCN2+EdEZudAna9SIK735kDpfAYFEN3mQOuxrMlSe+dAzHPsoSGL6EDArLenfRPpQIfSS6iKzOlAxt9O+iE56kDMVzLU+HjqQNgcvU+4h+pAmB81lJWW6kAEYWzKpYfqQK5aRSEYv+pABpa0CkRk60BEpbThJVvsQK+Kq7owre1A7GE0N1Bb8EDhtJgx5jbyQM+VVSvaXPVAuCrBrk9Q+UDkYI5V1Vf/QFoH+hYfRgNBNgoHktldCEGtmQbE+38OQSC2FnQo8hJBhjHcblEMF0GGcgF7TJYbQaOl60MdKCBBmLe9/3ZeIkHa0xzIbowjQYTk5B4t5iJBmnC5cMYKIUEv//MhIm0dQau2boGaSxhBO527XwYpE0ESFie9flYNQegCvscgPAVBXkiNO+ML/kAPokX749fyQFILsWJ2FeZAFsM/SL430EAOcl9xSEWSQFR2p3M5JMhAde+T6cVA1kCwBtlJ1e3YQCtTxFwqw99A6UWgBzS33UAZDmJe9jvgQHl2zu2sIeBAsovLci/r3EB6BsNEspzfQBoE7owB2d5AoyMWiKo/4EAeRTF6vovfQNecs8aDF+FAbeErQy2r4UCj+l/dUaniQFA1ithaS+RACqLQ+53q5EBdVfAgNjPmQB9PeiTAq+ZAHZx6XtQO50Bd15Qm3aTmQPdyt1JlV+dAICbwwtep50DIwxVVzDLnQFPq6YWnF+dArEjPGJi250D7iim4iL/oQBCaalnqTulAsD5/aYoC6kD0LqTJG3PqQHvCcpZUrupAR6WbioGx6kC2NuoessPqQAIYGUKyrOpAlv4HMH7o6kD18U/BpYjrQDN3c/i6eOxAfXpCW5TF7UDYBoNrCl/wQGNZjYvZOfJAkFa+vjBV9UCIgn7st0f5QA+gFqtrR/9AxfgwLJQ9A0E82thPG1QIQUqEOWCScg5BlGAFfFvrEkEKiqfS+gIXQQ==\",\"dtype\":\"float64\",\"shape\":[128]}}},\"id\":\"304116ed-35cc-4db9-891d-d9baf5105c21\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"cb33e299-f637-4bc4-9c05-ba99604e5245\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"6c4cc5ca-b749-45b2-a14f-0c0e49beb758\",\"elementid\":\"86a524e2-5343-4186-a894-97fa27929c05\",\"modelid\":\"4f08054c-f15b-4ac4-bee2-c00da12b4f8e\"}];\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(\"86a524e2-5343-4186-a894-97fa27929c05\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Axis Z: tau=3.2 samples (6.33 ms / -5.063)\n",
"\tgain=38.1 (beta=9.855), bias=12.5\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"2877cac4-b1a1-4792-8b94-3329dbe6141a\"></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(\"2877cac4-b1a1-4792-8b94-3329dbe6141a\").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(\"2877cac4-b1a1-4792-8b94-3329dbe6141a\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2877cac4-b1a1-4792-8b94-3329dbe6141a' 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 = {\"a71449f5-725c-4504-88e2-6c36f82a7422\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"9f6f4c68-7d70-4dec-9783-11d3937562c5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"40675f95-1ac6-4aca-949d-ccb20e69ae01\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"795aea29-9754-4af5-9ec6-2965de368d83\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e6a00972-2b5c-4c8b-8ad7-0cbe4652a35d\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"9f6f4c68-7d70-4dec-9783-11d3937562c5\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6ab0801d-a3bd-47a1-8a78-e9763ab78415\",\"type\":\"BasicTicker\"}},\"id\":\"4a3fb4b3-3646-408a-b2b1-c8468240459b\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"d5ac77f0-17cc-4aa8-906c-f9f1efcdfd35\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"69b8dad2-c487-4543-a599-b725214708e3\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"e1a21836-90e2-4869-964a-ae520dc160a1\",\"type\":\"HelpTool\"},{\"attributes\":{\"data_source\":{\"id\":\"25469ade-82ce-4f59-b367-a7c17be00676\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"aab2a7fb-8bf7-4437-9859-d80a2c7932c0\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"69b8dad2-c487-4543-a599-b725214708e3\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"f72942b5-ece0-471d-9b56-6a561ab87252\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"bd8e6b5c-18da-48dc-889a-f5d7931b6954\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"5b2bbf05-32b1-45a0-9f30-12d292795259\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"98fade98-25c5-4666-810d-f6197eac081a\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"9f9c0e9f-9bc9-4239-a3dc-ad03759da440\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"7bff9060-c991-4e48-bb99-7e758fb40af5\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"8f827b59-70e6-427a-a24c-0f10de0c3761\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"bcf048b6-3e92-428b-beb1-5752a3bf519d\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f2f320d5-f447-4e05-ab2e-4f0b6bd4ec3e\",\"type\":\"BoxZoomTool\"},{\"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\":\"98fade98-25c5-4666-810d-f6197eac081a\",\"type\":\"ColumnDataSource\"},{\"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\":\"bcf048b6-3e92-428b-beb1-5752a3bf519d\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":null,\"text\":\"Z shifted to line up\"},\"id\":\"550751fe-ba07-45b6-9051-e7e6f2e242fd\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a2f40ed3-f9b1-4201-9b61-a19b79c815ad\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7bff9060-c991-4e48-bb99-7e758fb40af5\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"32137758-a74f-455d-ae9a-0b0821a1e733\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"aab2a7fb-8bf7-4437-9859-d80a2c7932c0\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"e6a00972-2b5c-4c8b-8ad7-0cbe4652a35d\",\"type\":\"PanTool\"},{\"id\":\"a2f40ed3-f9b1-4201-9b61-a19b79c815ad\",\"type\":\"WheelZoomTool\"},{\"id\":\"f2f320d5-f447-4e05-ab2e-4f0b6bd4ec3e\",\"type\":\"BoxZoomTool\"},{\"id\":\"795aea29-9754-4af5-9ec6-2965de368d83\",\"type\":\"SaveTool\"},{\"id\":\"32137758-a74f-455d-ae9a-0b0821a1e733\",\"type\":\"ResetTool\"},{\"id\":\"e1a21836-90e2-4869-964a-ae520dc160a1\",\"type\":\"HelpTool\"}]},\"id\":\"56990943-8ec7-4ce1-9782-b522eebeda64\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"6ab0801d-a3bd-47a1-8a78-e9763ab78415\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"98b245d1-eb42-4cc9-b6ec-790ff30a18c8\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"4a3fb4b3-3646-408a-b2b1-c8468240459b\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"98b245d1-eb42-4cc9-b6ec-790ff30a18c8\",\"type\":\"LinearAxis\"},{\"id\":\"5eb1b825-5cca-4771-9496-3fb1e269e0dc\",\"type\":\"Grid\"},{\"id\":\"4a3fb4b3-3646-408a-b2b1-c8468240459b\",\"type\":\"LinearAxis\"},{\"id\":\"eb9efbb4-f2ea-4909-b4bd-c0c43b09ad5b\",\"type\":\"Grid\"},{\"id\":\"bcf048b6-3e92-428b-beb1-5752a3bf519d\",\"type\":\"BoxAnnotation\"},{\"id\":\"f72942b5-ece0-471d-9b56-6a561ab87252\",\"type\":\"GlyphRenderer\"},{\"id\":\"8f827b59-70e6-427a-a24c-0f10de0c3761\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"550751fe-ba07-45b6-9051-e7e6f2e242fd\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"40675f95-1ac6-4aca-949d-ccb20e69ae01\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"56990943-8ec7-4ce1-9782-b522eebeda64\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"5b2bbf05-32b1-45a0-9f30-12d292795259\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"79f85319-6383-4697-b026-0eb33468f940\",\"type\":\"DataRange1d\"}},\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"9f9c0e9f-9bc9-4239-a3dc-ad03759da440\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6ab0801d-a3bd-47a1-8a78-e9763ab78415\",\"type\":\"BasicTicker\"}},\"id\":\"eb9efbb4-f2ea-4909-b4bd-c0c43b09ad5b\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[256]}}},\"id\":\"25469ade-82ce-4f59-b367-a7c17be00676\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"79f85319-6383-4697-b026-0eb33468f940\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d5ac77f0-17cc-4aa8-906c-f9f1efcdfd35\",\"type\":\"BasicTicker\"}},\"id\":\"5eb1b825-5cca-4771-9496-3fb1e269e0dc\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"bd8e6b5c-18da-48dc-889a-f5d7931b6954\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d5ac77f0-17cc-4aa8-906c-f9f1efcdfd35\",\"type\":\"BasicTicker\"}},\"id\":\"98b245d1-eb42-4cc9-b6ec-790ff30a18c8\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"a71449f5-725c-4504-88e2-6c36f82a7422\",\"elementid\":\"2877cac4-b1a1-4792-8b94-3329dbe6141a\",\"modelid\":\"3e5ec953-bdb1-42e3-ae8e-1ecb874b52ba\"}];\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(\"2877cac4-b1a1-4792-8b94-3329dbe6141a\")).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=\"2b097e0f-8300-4b10-ba35-90c6cb3259c5\"></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(\"2b097e0f-8300-4b10-ba35-90c6cb3259c5\").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(\"2b097e0f-8300-4b10-ba35-90c6cb3259c5\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2b097e0f-8300-4b10-ba35-90c6cb3259c5' 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 = {\"49f5c915-8129-4260-81c8-51a2c5675f67\":{\"roots\":{\"references\":[{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"53e40559-5b78-43f1-a145-96cc0feb37c8\",\"type\":\"BasicTicker\"}},\"id\":\"07f5a305-9999-47df-bb02-a29f17ecebbe\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"876ce2f2-01f7-4842-bac4-c46a7f03a9cf\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"53e6d919-8772-487e-9023-9bfa4de47621\",\"type\":\"HelpTool\"},{\"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\":\"95692bce-aa0a-4db4-a729-7fecc011f548\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"formatter\":{\"id\":\"876ce2f2-01f7-4842-bac4-c46a7f03a9cf\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"53e40559-5b78-43f1-a145-96cc0feb37c8\",\"type\":\"BasicTicker\"}},\"id\":\"01a14fbc-fc25-4dda-9095-a441cc1f64c6\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"8891aeb3-31b5-4050-a387-b08a5d901443\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"96cc9bff-ea88-4b41-8678-ed5508643fab\",\"type\":\"BasicTicker\"}},\"id\":\"00f0b354-e8ee-4b65-be30-bdc30d6ef0d7\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"96cc9bff-ea88-4b41-8678-ed5508643fab\",\"type\":\"BasicTicker\"}},\"id\":\"4226182b-b0f0-476f-a442-e64d5fded6d9\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"bfc58874-50f1-4f8c-a016-31442719cacc\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":null,\"text\":\"residual Z\"},\"id\":\"0855b56a-f79c-4624-b423-59c82ed7667a\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"5e8e7508-6473-4a00-ae22-81fa116bdeca\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"00f0b354-e8ee-4b65-be30-bdc30d6ef0d7\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"01a14fbc-fc25-4dda-9095-a441cc1f64c6\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"00f0b354-e8ee-4b65-be30-bdc30d6ef0d7\",\"type\":\"LinearAxis\"},{\"id\":\"4226182b-b0f0-476f-a442-e64d5fded6d9\",\"type\":\"Grid\"},{\"id\":\"01a14fbc-fc25-4dda-9095-a441cc1f64c6\",\"type\":\"LinearAxis\"},{\"id\":\"07f5a305-9999-47df-bb02-a29f17ecebbe\",\"type\":\"Grid\"},{\"id\":\"95692bce-aa0a-4db4-a729-7fecc011f548\",\"type\":\"BoxAnnotation\"},{\"id\":\"d847ce39-b44f-482b-aa35-08d20c07b85a\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"0855b56a-f79c-4624-b423-59c82ed7667a\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"bfc58874-50f1-4f8c-a016-31442719cacc\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"290c5c52-8b4c-4603-9d78-36b411aedd89\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"0a1a01dd-f011-4902-b82e-8e140177565a\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"5e8e7508-6473-4a00-ae22-81fa116bdeca\",\"type\":\"DataRange1d\"}},\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"9613371e-e06b-4dda-ab6d-b4fb3e80f2df\",\"type\":\"PanTool\"},{\"id\":\"dd847c06-d9e5-4bf9-9cf8-dd1e43b50a99\",\"type\":\"WheelZoomTool\"},{\"id\":\"877080db-c825-4827-8588-5ace4d3eca53\",\"type\":\"BoxZoomTool\"},{\"id\":\"dba2e6ec-b789-49dc-9aaf-340f286984ac\",\"type\":\"SaveTool\"},{\"id\":\"ca8ec122-081a-4b53-8409-0606c151e90e\",\"type\":\"ResetTool\"},{\"id\":\"53e6d919-8772-487e-9023-9bfa4de47621\",\"type\":\"HelpTool\"}]},\"id\":\"290c5c52-8b4c-4603-9d78-36b411aedd89\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"96cc9bff-ea88-4b41-8678-ed5508643fab\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"8891aeb3-31b5-4050-a387-b08a5d901443\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f2f3b2d4-8a90-4aaa-b66d-8f5c10761686\",\"type\":\"Line\"},{\"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\":\"2fee689c-07dd-4250-808d-0ff713c56151\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6d26de6b-6d54-440c-bef3-08b21a2d401d\",\"type\":\"Line\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"dba2e6ec-b789-49dc-9aaf-340f286984ac\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"53e40559-5b78-43f1-a145-96cc0feb37c8\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"2fee689c-07dd-4250-808d-0ff713c56151\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f2f3b2d4-8a90-4aaa-b66d-8f5c10761686\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"6d26de6b-6d54-440c-bef3-08b21a2d401d\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"d847ce39-b44f-482b-aa35-08d20c07b85a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"0a1a01dd-f011-4902-b82e-8e140177565a\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9613371e-e06b-4dda-ab6d-b4fb3e80f2df\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"95692bce-aa0a-4db4-a729-7fecc011f548\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"877080db-c825-4827-8588-5ace4d3eca53\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"dd847c06-d9e5-4bf9-9cf8-dd1e43b50a99\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ca8ec122-081a-4b53-8409-0606c151e90e\",\"type\":\"ResetTool\"}],\"root_ids\":[\"d76b492e-7a57-4c37-97b8-473e5873b5dc\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
" var render_items = [{\"docid\":\"49f5c915-8129-4260-81c8-51a2c5675f67\",\"elementid\":\"2b097e0f-8300-4b10-ba35-90c6cb3259c5\",\"modelid\":\"d76b492e-7a57-4c37-97b8-473e5873b5dc\"}];\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(\"2b097e0f-8300-4b10-ba35-90c6cb3259c5\")).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": [
"[ 1.56695249e+08]\n",
"[-25937967.88699417]\n",
"[ 83212.11951718]\n",
"[ 1.15785548e+08]\n",
"[-2447125.62572301]\n",
"[ 22210736.18808347]\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