{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Scipy Signal Processing: IIR Filter Design" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import addutils.toc ; addutils.toc.js(ipy_notebook=True)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from addutils import css_notebook\n", "import bokeh.plotting as bk\n", "css_notebook()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", "\n", " if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id !== undefined) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd, {\n", " iopub: {\n", " output: function(msg) {\n", " var element_id = msg.content.text.trim();\n", " Bokeh.index[element_id].model.document.clear();\n", " delete Bokeh.index[element_id];\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[0].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[0].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", "\n", " \n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\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", " \"

\\n\"+\n", " \"
    \\n\"+\n", " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " var el = document.getElementById(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._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", " root._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", " root._bokeh_is_loading--;\n", " if (root._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(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\");\n", " if (element == null) {\n", " console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e48f80b8-dc5d-4076-9430-2cc25c1bf779' 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.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " \n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " var cell = $(document.getElementById(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", "\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.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", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\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 \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._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 root._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 root._bokeh_is_loading--;\n if (root._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(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e48f80b8-dc5d-4076-9430-2cc25c1bf779' 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.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"e48f80b8-dc5d-4076-9430-2cc25c1bf779\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.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}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bk.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1 Filter Specification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following is an introduction on how to design an infinite impulse response (IIR) filters using the Python `scipy.signal` package. This notebook is not a thorough introduction to IIR filter design." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Documentation and reference:\n", "* [Signal Processing (scipy.signal)](http://docs.scipy.org/doc/scipy/reference/signal.html#module-scipy.signal)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A filter is usually defined in the frequency domain. The following figure depicts the frequency domain specification:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The specification figure illustrates a low-pass filter but the terminology applies to all filter types, lowpass, highpass, bandpass, and stopband.\n", "\n", "* **Passband (Wp):** This is the frequency range which we desire to let the signal through with minimal attenuation. In the scipy functions this is in normalized frequency, 1 > Wp > 0.\n", "* **Stopband (Ws):** This is the frequency range which the signal should be attenuated. Again, in scipy this is in normalized frequency, 1 > Ws > 0.\n", "* **Passband ripple (Rp, gpass):* The max variation in the passband, in decibals.\n", "* **Stopband attenuation (As, gstop):** The max level in the stopband or in other words the min attenuation in the stopband, in decibals.\n", "\n", "NOTE: The cutoff frequency is the -3dB point. If the cutoff frequency is required the algorithm will work to meet the -3dB point at the Wc frequency. The pass frequency, Wp, is the last, first, or first and last frequencies in the passband which the Rp value occurs (the rest are less).\n", "\n", "The above specifications are the information that will be used and passed to the IIR filter design functions. In addition to our filter specification information we need to select our \"filter\" type. The following table summarizes the different IIR filter design approaches supported by the `scipy.signal` design functions:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2 Filter Design" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", "\n", " if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id !== undefined) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd, {\n", " iopub: {\n", " output: function(msg) {\n", " var element_id = msg.content.text.trim();\n", " Bokeh.index[element_id].model.document.clear();\n", " delete Bokeh.index[element_id];\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[0].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[0].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", "\n", " \n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\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", " \"

\\n\"+\n", " \"
    \\n\"+\n", " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " var el = document.getElementById(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._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", " root._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", " root._bokeh_is_loading--;\n", " if (root._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(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\");\n", " if (element == null) {\n", " console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'c3a6ee3f-caa8-4759-bb21-a18564ee5e37' 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.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " \n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " var cell = $(document.getElementById(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", "\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.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", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\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 \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._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 root._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 root._bokeh_is_loading--;\n if (root._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(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'c3a6ee3f-caa8-4759-bb21-a18564ee5e37' 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.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"c3a6ee3f-caa8-4759-bb21-a18564ee5e37\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.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}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from scipy import signal\n", "from scipy.signal import filter_design as fd\n", "\n", "import bokeh.plotting as bk\n", "bk.output_notebook()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Specification for our filter\n", "Wp = 0.270 # Cutoff frequency \n", "Ws = 0.412 # Stop frequency \n", "Rp = 0.1 # passband maximum loss (gpass)\n", "As = 60 # stoppand min attenuation (gstop)\n", "\n", "Filters = {'ellip' : (), 'cheby2' : (), 'butter' : (), 'cheby1' : (), 'bessel' : ()}\n", "\n", "# The ellip and cheby2 filter design\n", "Filters['ellip'] = fd.iirdesign(Wp, Ws, Rp, As, ftype='ellip')\n", "Filters['cheby2'] = fd.iirdesign(Wp, Ws, Rp, As, ftype='cheby2')\n", "\n", "# The butter and cheby1 need less constraint spec\n", "Rpl = Rp*10; Asl = As/4.\n", "Filters['butter'] = fd.iirdesign(Wp, Ws, Rp, As, ftype='butter')\n", "Filters['cheby1'] = fd.iirdesign(Wp, Ws, Rp, As, ftype='cheby1')\n", "\n", "# The bessel max order of 8 for this cutoff, can't use\n", "# iirdesign have to use iirfilter.\n", "Filters['bessel'] = fd.iirfilter(8, Wp, btype='lowpass', ftype='bessel')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3 Frequency and Phase Response" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To define plot colors, any [legal HTML name for colors](http://en.wikipedia.org/wiki/Web_colors) can be used:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "plotcolors = ['DarkRed', 'Crimson', 'Red',\n", " 'Olive', 'Green', 'SeaGreen',\n", " 'SteelBlue', 'Blue', 'Navy',\n", " 'Fuchsia', 'DarkViolet', 'Indigo']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting:\n", "\n", "* `a, b` are respectively numerator and denominator of the filter\n", "* `w` are the frequencies at which the frequency response `'h'` is computed" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"c97e725b-5381-4614-b21e-40ed94963419\":{\"roots\":{\"references\":[{\"attributes\":{\"source\":{\"id\":\"7458a2a3-f371-4258-bd57-a23f24fa414f\",\"type\":\"ColumnDataSource\"}},\"id\":\"a6bb7650-bdcb-4bf4-a966-c53d5379df45\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"AAAAAAAAAADB2FM43KKXvzXafWQPo6e/NA8AhYu6sb+XcrUj3KO3v8sLBjOTjb2/KbWpMOW7wb8sbJa0TbHEvzG94gkQp8e/sQS3HTmdyr8oYwnn1ZPNvyKS77N5RdC/w3FIV0/B0b9Y4Yhrcj3Tv2MCHYbpudS/2rGKRLs21r9vvBpN7rPXv+JIhE+JMdm/LKaaBZOv2r8Grf0zEi7cv9HkzKoNrd2/J55dRows37/hGvp3Slbgv8FaQE+XFuG/woSvKzDX4b9WgY2XGJjivzEwHCVUWeO/XI//buYa5L84JKYY09zkv3jGs84dn+W/bfBuR8ph5r9GtjBD3CTnvxmL14xX6Oe/3vg8+j+s6L9SdK5smXDpv312adFnNeq/7wcbIq/66r/R62Jlc8Drv5uaWq+4huy/Yz8gIoNN7b8K7WXu1hTuv7JBBVS43O6/CrWXoiul77+I5gmdGjfwv4C9t8Xsm/C/i/KjjA4B8b/OcUc8gmbxv3k/nyhKzPG/mF6Jr2gy8r9rCiU54Jjyv9NuNjiz//K/2w6OKuRm87+LDHSZdc7zv3uFFxpqNvS/hT0CTsSe9L9+05Djhgf1v0++b5a0cPW/mVYdMFDa9b/dNHGIXET2v60vKYbcrva/VUt8H9MZ979U8rNaQ4X3v+bSy04w8fe/kcMYJJ1d+L92GfcUjcr4vzThgG4DOPm/v3JMkQOm+b+y4jPykBT6v7nbJRuvg/q/dHYArGHz+r8br3ZbrGP7v8InAfiS1Pu/RPDaaBlG/L9THQuvQ7j8v6gHfOYVK/2/6x0hR5Se/b8MRywmwxL+vyvoU/emh/6/TLcqTkT9/r/an4rfn3P/v6oXFIO+6v+/67FhmlIxAMARt06LrG0AwCb5OrlvqgDAG3ro3Z7nAMCozvDIPCUBwAJr1GBMYwHAOxIbpNChAcBBz4aqzOABwK3/WqZDIALAFSG55ThgAsDPPBXUr6ACwLH+w/ur4QLAnrqkBzEjA8AP4OnEQmUDwO2fAiXlpwPA+9OoPxzrA8B0ixZV7C4EwAgBZ9BZcwTATCUnSmm4BMDWYRqLH/4EwFq8OI+BRAXA8hTsiJSLBcC84JLkXdMFwBh6T0zjGwbANu8rrCplBsAbGps2Oq8GwHfRYGkY+gbAzhfsEsxFB8CfbS9YXJIHwLLCBLvQ3wfA9gAsITEuCMDbzvTbhX0IwBbqpbDXzQjA4Wm24S8fCcBtQe84mHEJwPyGjRIbxQnAL0CAacMZCsCBvN7knG8KwHe8tuazxgrABbVTnBUfC8DKNiIQ0HgLwEauUz3y0wvAd/pmJYwwDMAKUrnnro4MwMQGQNts7gzA6xSGqtlPDcBvEP9xCrMNwCx+suAVGA7ApSEtWxR/DsDv34YgIOgOwBZvIHFVUw/A5iyAttLAD8CYD7JVXBgQwHoWWUGVURDAisCvBSeMEMBkBFbnJcgQwDGdjpKnBRHAdM24HsNEEcATwqUHkYURwDLUwxgryBHAbCYORawMEsDMVoRlMFMSwP9ut9bTmxLAbt7b7LLmEsB8nQo16TMTwOeSTXqQgxPAdR9Ehr/VE8AZLkmYiCoUwDwPzpP3gRTA3HzB7w/cFMDZFKR9yjgVwAgu1y4TmBXAk4ruD8f5FcBEI+HAsl0WwNDo4riRwxbAz6nnnw4rF8CvqBDyxJMXwKV0GvpD/RfA1H98/BJnGMBDkS04ttAYwMv4pzm0ORnAq1KY7JqhGcCemZDlAwgawKK/LIOXbBrATaccug7PGsDACLaTMy8bwOnOo4/gjBvAwcUXMf/nG8AwdnMGhkAcwFP/nHN2lhzAfcureNrpHMBZSGedwjodwMG94BlEiR3AtgFAR3fVHcAIJk1adh8ewJ1PHWNcZx7A4IPoiUStHsBeM69/SfEewLc6SBmFMx/ANBgnDBB0H8Bn80HFAbMfwFPXtVNw8B/A+c76MDgWIMAaT7CcijMgwNwxhGY4UCDANJiX5ElsIMDYKtPSxocgwLIR2Fy2oiDA/SY1KB+9IMDGH4heB9cgwLCfTrd08CDAukNAgWwJIcAHOxqr8yEhwOBG0MsOOiHArAEfKsJRIcBa3oDDEWkhwHQRi1IBgCHAxPy5VJSWIcANIrYPzqwhwIFZG5axwiHASUDMy0HYIcD2s9tpge0hwDfVFQJzAiLAoYwxAhkXIsBq97K2dSsiwMR/hk2LPyLAAM1b2FtTIsAPsWvz1DwYwDapOXZtYxjAUmjtIIeJGMAS68FbJa8YwFp+H2hL1BjAgFg5Y/z4GMBkWW9IOx0ZwMwmevMKQRnAPitnIm5kGcD1Z2l3Z4cZwImAg3r5qRnAzOUOmybMGcAypSMx8e0ZwBXt435bDxrAWxCusWcwGsBafjfjF1EawOrekhpucRrA00UjTWyRGsD1Q35fFLEawO9ZPiZo0BrAZ1hKede8DMB2AbZbOPoMwEXTm/H6Ng3AhQS1ciJzDcDwL4H9sa4NwP5OYZis6Q3AVu+hMhUkDsAf33Wl7l0OwNCI4rQ7lw7AwQmfEP/PDsCFAedUOwgPwM/3QQvzPw/AnShAqyh3D8DHcC2b3q0PwNUGuzAX5A/AXE3QWOoMEMActhqqjCcQwJDuAKDzQRDAvvkkRyBcEMASoEilE3YQwHpGjLnOjxDAF9mqfFKpEMAg9TLhn8IQwLp7vdO32xDAOrEhO5v0EMCMDqf4Sg0RwEzjNOjHJRHAvOd/4BI+EcBo2zWzLFYRwBlKJy0WbhHAZJBvFtCFEcBjN5syW50RwPy7zEC4tBHAgtjf++fLEcBRYYsa6+IRwOzHgU/C+RHAk1WQSW4QEsBkLL2z7yYSwGgfZDVHPRLAxW1ScnVTEsBqceEKe2kSwD9KEJxYfxLAEZWcvw6VEsCCNxoMnqoSwD9MChUHwBLACDrxakrVEsCo/mubaOoSwIi1RDFi/xLAGTaRKegM+r8UJ7gBsF/6vyJUFbDrsfq/9PefNZ0D+78fInWJxlT7v6guGplppfu/DPe8SIj1+79r4XFzJEX8v7zdb+s/lPy/kmpKetzi/L9ptynh+zD9v3H1ANmffv2/MOjCEsrL/b8kzJQ3fBj+v8yg/+i3ZP6/1OYfwX6w/r/64tNS0vv+v0tz6Cm0Rv+/XYREyyWR/7+SNRO1KNv/v0lbdi9fEgDAbfb+HPQ2AMCEdZfYU1sAwP8ipBR/fwDAz6iLgHajAMCIqMjIOscAwLrQ+pbM6gDAmnX3kSwOAcB9sNldWzEBwJwKEpxZVAHAn7d16yd3AcAJY03oxpkBwFmVYyw3vAHAGLMST3neAcC+mlLljQACwKDjxYF1IgLAfMHGtDBEAsDOj3MMwGUCwJMHuxQkhwLAdyJoV12oAsAOri1cbMkCwJiRsahR6gLAHcmXwA0LA8DXF40loSsDwHZ0UVcMTAPAizHC009sA8Dz4+MWbIwDwJEJ7JphrAPAKHJK2DDMA8BIbLJF2usDwDO4I1heCwTAVULzgr0qBMAtp9M3+EkEwDKC3eYOaQTAPImX/gGIBMBAdv7r0aYEwEjAjBp/xQTAyCVC9AnkBMAFCavhcgIFwF2g50m6IAXAcfuykuA+BcCE3mkg5lwFwD91EVbLegXA9t1dlZCYBcCujrg+NrYFwK2URrG80wXAFbDuSiTxBcDtS19obQ4GwDlUFGWYKwbAj+pcm6VIBsBS+mBklWUGwIOtJhhoggbApMKXDR6fBsAZxYaat7sGwCwotBM12AbAC0bTzJb0BsAxQ48Y3RAHwOfWj0gILQfAz/l9rRhJB8AOewiXDmUHwKB86FPqgAfAxtflMaycB8B4adt9VLgHwOZIu4Pj0wfAqOaSjlnvB8AKF4/otgoIwJcGANv7JQjAoRpdrihBCMD4vEiqPVwIwMEUlBU7dwjAvatCNiGSCMAFAY5R8KwIwHkJ6auoxwjAkMNHoGXYnz/3USg7lJKSP5RDepH7XnU/NBhFhexgf7+Cnx44ev2UvzCtZTQPDKG/7BMVsiOUp79g805CCheuv+Bo5DNpSrK/xlu6vcWGtb9fEZtWosC4v13SSYIG+Lu/VZWysPksv78Kwx+fwS/Bvzh+FjrVx8K/+fNtRLtexL86XhFQd/TFv8R0zuUMice/8W58hX8cyb8zVSKm0q7Kv3mjHLYJQMy/6j5CGyjQzb8SxwgzMV/Pv5khVCmUdtC/1xefYwg90b/v+Pfq9gLSv4JYBl5hyNK/rE6XV0mN07/n0a1usFHUvwLLkjaYFdW/i+LkPgLZ1b+NC6gT8JvWvybLVD1jXte/AUDnQF0g2L/w6e2f3+HYvx40mNjrotm/I8LEZYNj2r+cgg+/pyPbvzOH31ha49u/T6R0pJyi3L/b2fQPcGHdvzqFeQbWH96/y14c8M/d3r+FQwQyX5vfv+7lOJdCLOC/uNhloqGK4L8MgtVozejgv7mXc5fGRuG/ROnQ2Y2k4b/4NCnaIwLiv7PmaEGJX+K/S8Eyt7684r9tcuXhxBnjvysSoWacduO/t41M6UXT47/e/poMwi/kv5nvEHIRjOS/F4sJujTo5L+6u7uDLETlv1c3P235n+W/o3mRE5z75b/RrJoSFVfmv+KBMgVlsua/tPckhYwN579TEjcrjGjnv9iBK49kw+e/ZjrHRxYe6L8v/NXqoXjov1/NLg0I0+i/vWS4Qkkt6b+4hm0eZofpvy1UYTJf4em/gYvDDzU76r/ovORG6JTqvxRxOmd57uq/n0Nj/+hH67/Q8CqdN6Hrv2FXjs1l+uu/MW6/HHRT7L/ILikWY6zsv+hzc0QzBe2/l82GMeVd7b9FSpBmebbtv+Q0BWzwDu6/hsmmyUpn7r/13oUGib/uv3KHBqmrF++/3KbjNrNv779dgDI1oMfvvxQdM5S5D/C/iKwpSpY78L9XmRl+Zmfwv8arU3Eqk/C/aHreZOK+8L/zFniZjurwvye3l08vFvG/0Vlvx8RB8b8iaO1AT23xv2JTvvvOmPG/GC9ON0TE8b+qR8oyr+/xv9q1Ii0QG/K/re4LZWdG8r+HUAAZtXHyv+usQYf5nPK/Rs/a7TTI8r8KAaGKZ/Pyv6GKNZuRHvO/EDIHXbNJ879rtlMNzXTzv1BJKenen/O/ZgVoLenK87/VYsMW7PXzvw6pw+HnIPS/vl7HytxL9L9NtwQOy3b0v0b+iueyofS/AAFEk5TM9L/udfVMcPf0v59iQlBGIvW/RX+s2BZN9b9FmZUh4nf1v4vzQGaoovW/kaXU4WnN9b/8+FrPJvj1v5PFw2nfIva/EMzl65NN9r97D4CQRHj2v5ItO5Lxova/t7WqK5vN9r8bf06XQfj2v8v9kw/lIve/oJbXzoVN97+f8mUPJHj3v4xRfQvAove/NttO/VnN97/38P8e8vf3vyJ+q6qIIvi/Nkdj2h1N+L+uOjHosXf4v4O+GA5Fovi/OQAYhtfM+L9qQymKaff4vw==\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"4895182d-d8ee-4f83-97bc-12b3e6fba6b5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"cheby2\"},\"renderers\":[{\"id\":\"058da4ff-2929-4ce6-a42e-aea31ce98dca\",\"type\":\"GlyphRenderer\"}]},\"id\":\"410bae3b-fa9f-41d6-a26b-3d6cac712588\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"3ef28787-a078-419a-af7b-03fd05133eb5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"cheby2\"},\"renderers\":[{\"id\":\"eacefd54-b8ec-4747-bc17-1e539bde54a1\",\"type\":\"GlyphRenderer\"}]},\"id\":\"266aeeda-ea53-4a3d-b110-a23d61e023e3\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"8fed74d6-8804-49b5-bda7-de9728137b3b\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"f2688e14-0d77-47e2-a702-1b4bbee6f753\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"3031793b-dc20-4107-8f7f-1fcb877438bc\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":350,\"renderers\":[{\"id\":\"f2688e14-0d77-47e2-a702-1b4bbee6f753\",\"type\":\"LinearAxis\"},{\"id\":\"5b7c2afa-0692-4fc8-a2b8-7df2ff8a0734\",\"type\":\"Grid\"},{\"id\":\"3031793b-dc20-4107-8f7f-1fcb877438bc\",\"type\":\"LinearAxis\"},{\"id\":\"51650424-8057-455f-9f08-289d65d3af0b\",\"type\":\"Grid\"},{\"id\":\"d907acde-e6fd-4c51-828e-59d7d07c541a\",\"type\":\"BoxAnnotation\"},{\"id\":\"bdd8bb9b-b07f-4ca9-84cf-0f48ac7accd2\",\"type\":\"Legend\"},{\"id\":\"6e685a88-8598-406e-9e48-3017285912f1\",\"type\":\"GlyphRenderer\"},{\"id\":\"058da4ff-2929-4ce6-a42e-aea31ce98dca\",\"type\":\"GlyphRenderer\"},{\"id\":\"bb2c779e-435f-40d5-ab9d-002e4032f1ce\",\"type\":\"GlyphRenderer\"},{\"id\":\"d94ebe37-4922-4ac5-bd00-e45d70aac740\",\"type\":\"GlyphRenderer\"},{\"id\":\"bc2be757-b227-4c61-a54c-f0e293295090\",\"type\":\"GlyphRenderer\"},{\"id\":\"b73a04cd-e4c7-4347-9b72-f82b34d8b032\",\"type\":\"GlyphRenderer\"},{\"id\":\"62730f09-da81-4849-8168-4bdfdc8f2177\",\"type\":\"GlyphRenderer\"},{\"id\":\"3f25ea01-4e0a-44cc-aedf-1c94a98a9683\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1c532cac-2634-41dd-8b2a-83352fe56912\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"829e3957-6393-4f2f-9829-a5ee45f80620\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"928d0551-1811-4f01-bacd-3ff5517ea12b\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"91df5197-0608-4ab6-8b3d-66e8420e8c42\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"d8709919-8b26-4c44-b552-d8c12c301974\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"549866fa-95fb-488c-b953-2e83cfb34117\",\"type\":\"LinearScale\"}},\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"below\":[{\"id\":\"bd4b8b90-5b3e-44bf-b585-7b163cf1b387\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"01d293d7-8cea-49de-b00a-a2c5bddffd23\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":350,\"renderers\":[{\"id\":\"bd4b8b90-5b3e-44bf-b585-7b163cf1b387\",\"type\":\"LinearAxis\"},{\"id\":\"51271ebc-5cb1-43a9-9908-228f6c8a6923\",\"type\":\"Grid\"},{\"id\":\"01d293d7-8cea-49de-b00a-a2c5bddffd23\",\"type\":\"LinearAxis\"},{\"id\":\"5d8528c2-ec5a-417e-804e-ce194037ea4b\",\"type\":\"Grid\"},{\"id\":\"b9491208-2f2f-4bb8-8d00-2ef7d8e5255c\",\"type\":\"BoxAnnotation\"},{\"id\":\"f361ba6b-0527-4ed0-aa9b-333157debf7d\",\"type\":\"Legend\"},{\"id\":\"3cafdfe1-1d6f-4d4f-9c47-8a5e8f551998\",\"type\":\"GlyphRenderer\"},{\"id\":\"eacefd54-b8ec-4747-bc17-1e539bde54a1\",\"type\":\"GlyphRenderer\"},{\"id\":\"59f7fc74-d61e-4925-b0a5-15dfcaf26fac\",\"type\":\"GlyphRenderer\"},{\"id\":\"350f05e6-6c7b-49f8-bd59-e6e7715714b2\",\"type\":\"GlyphRenderer\"},{\"id\":\"732081cc-76ae-4f67-b41a-f469a048ea17\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"c9730f2b-3505-49b1-9019-c47bdff475bc\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"954ad54e-8853-43a5-ba0a-81f3918da0b6\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"c20121de-ab21-497a-adc7-3993939f63a9\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1e694e30-10f4-4457-9376-610d1c879194\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"01e0833a-c3a2-403e-b174-3eced747a353\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"1b763f9b-251c-4151-af3d-a5996a9df8cd\",\"type\":\"LinearScale\"}},\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"bf0221f4-b4a3-4e01-9bf8-9ec2bc7e45dd\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"e5309ded-cfe6-4bf1-b8d8-08827a86d378\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5d66600f-67a3-497d-a1ca-f0928eec45f5\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"69a7006f-9452-4fa6-b6e4-18537085e018\",\"type\":\"CDSView\"}},\"id\":\"6e685a88-8598-406e-9e48-3017285912f1\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"4895182d-d8ee-4f83-97bc-12b3e6fba6b5\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"4903574f-929d-42f1-be3c-848a3f4c432d\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"4d3f2bc2-1a5d-4347-9976-52eed31000b8\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"bdb48d1e-5185-4d2a-8fda-17653d0fedff\",\"type\":\"CDSView\"}},\"id\":\"eacefd54-b8ec-4747-bc17-1e539bde54a1\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"9c1fca6c-1dbb-4fda-83b9-143e8451cba6\",\"type\":\"PanTool\"},{\"id\":\"a6e8b504-933e-4792-91ed-0430b966dbe6\",\"type\":\"WheelZoomTool\"},{\"id\":\"a4485fc7-6a81-4029-a2da-d4b1fc151b70\",\"type\":\"BoxZoomTool\"},{\"id\":\"20ea7158-8729-4e45-87be-1ff4f03b1483\",\"type\":\"SaveTool\"},{\"id\":\"c020acd5-b323-4986-b5e6-bf759b237251\",\"type\":\"ResetTool\"},{\"id\":\"cab73c22-0b82-42f2-b074-0dea39da6638\",\"type\":\"HelpTool\"}]},\"id\":\"954ad54e-8853-43a5-ba0a-81f3918da0b6\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"crimson\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4903574f-929d-42f1-be3c-848a3f4c432d\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"Frequency response\"},\"id\":\"1c532cac-2634-41dd-8b2a-83352fe56912\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4d3f2bc2-1a5d-4347-9976-52eed31000b8\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"8844bf65-bde0-4e6a-8779-32635b333db1\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"4895182d-d8ee-4f83-97bc-12b3e6fba6b5\",\"type\":\"ColumnDataSource\"}},\"id\":\"bdb48d1e-5185-4d2a-8fda-17653d0fedff\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"butter\"},\"renderers\":[{\"id\":\"bb2c779e-435f-40d5-ab9d-002e4032f1ce\",\"type\":\"GlyphRenderer\"}]},\"id\":\"ce642edf-d537-4198-aa43-308eef6aba37\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"44b401de-51ad-4b09-870a-85e5e20bd35c\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"d69c355f-d7ca-4db7-8fff-9ab815920a19\",\"type\":\"PanTool\"},{\"id\":\"5217f7e2-ae54-4220-ae4d-c052a30fd51c\",\"type\":\"WheelZoomTool\"},{\"id\":\"c8252f9a-66a2-4c41-ba92-cc6cf43f4ff9\",\"type\":\"BoxZoomTool\"},{\"id\":\"663f3d1c-7f35-429a-8536-9d919fda2c94\",\"type\":\"SaveTool\"},{\"id\":\"9c57f530-edd0-42fd-b29c-92416e73c7d6\",\"type\":\"ResetTool\"},{\"id\":\"511bb210-e647-4a7b-ad60-16125a1cad35\",\"type\":\"HelpTool\"}]},\"id\":\"829e3957-6393-4f2f-9829-a5ee45f80620\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"7811e1be-f243-40a5-9d11-806c5afe71ae\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"91df5197-0608-4ab6-8b3d-66e8420e8c42\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"8fed74d6-8804-49b5-bda7-de9728137b3b\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d03cd535-274d-4570-9a2d-075ac5ba42bd\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"e1781dc0-2f0d-49f9-9af8-fcd40cac7f64\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"d346b86e-cb9b-446c-815f-de08888e07ac\",\"type\":\"CDSView\"}},\"id\":\"bb2c779e-435f-40d5-ab9d-002e4032f1ce\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"end\":5.0,\"start\":-75.0},\"id\":\"d8709919-8b26-4c44-b552-d8c12c301974\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"549866fa-95fb-488c-b953-2e83cfb34117\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d03cd535-274d-4570-9a2d-075ac5ba42bd\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"e1781dc0-2f0d-49f9-9af8-fcd40cac7f64\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"Normalized Frequency\",\"formatter\":{\"id\":\"3ef28787-a078-419a-af7b-03fd05133eb5\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1abedd4b-1918-47a3-b722-37d39cc67c47\",\"type\":\"BasicTicker\"}},\"id\":\"f2688e14-0d77-47e2-a702-1b4bbee6f753\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"8fed74d6-8804-49b5-bda7-de9728137b3b\",\"type\":\"ColumnDataSource\"}},\"id\":\"d346b86e-cb9b-446c-815f-de08888e07ac\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1abedd4b-1918-47a3-b722-37d39cc67c47\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"butter\"},\"renderers\":[{\"id\":\"59f7fc74-d61e-4925-b0a5-15dfcaf26fac\",\"type\":\"GlyphRenderer\"}]},\"id\":\"fb67d530-98c0-485a-bd8c-581267a869ac\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":null,\"text\":\"Phase response\"},\"id\":\"c9730f2b-3505-49b1-9019-c47bdff475bc\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"897c0283-eacb-47e3-b14c-f9123c527852\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"Magnitude (db)\",\"formatter\":{\"id\":\"e0f45a70-8b93-4925-b0b1-569774803f2a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8226b99c-0b6e-4d0f-a7e2-d17539a8ad02\",\"type\":\"BasicTicker\"}},\"id\":\"3031793b-dc20-4107-8f7f-1fcb877438bc\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1abedd4b-1918-47a3-b722-37d39cc67c47\",\"type\":\"BasicTicker\"}},\"id\":\"5b7c2afa-0692-4fc8-a2b8-7df2ff8a0734\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"7811e1be-f243-40a5-9d11-806c5afe71ae\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a4c035ea-da40-4be6-bb61-74ace40f1f8f\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1e96a364-269e-4435-86f1-7eda119a6648\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"2a3b64c5-4f97-44f2-a002-7eb59725f16b\",\"type\":\"CDSView\"}},\"id\":\"59f7fc74-d61e-4925-b0a5-15dfcaf26fac\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"8226b99c-0b6e-4d0f-a7e2-d17539a8ad02\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a4c035ea-da40-4be6-bb61-74ace40f1f8f\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8226b99c-0b6e-4d0f-a7e2-d17539a8ad02\",\"type\":\"BasicTicker\"}},\"id\":\"51650424-8057-455f-9f08-289d65d3af0b\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1e96a364-269e-4435-86f1-7eda119a6648\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"end\":0.5,\"start\":0.1},\"id\":\"c20121de-ab21-497a-adc7-3993939f63a9\",\"type\":\"Range1d\"},{\"attributes\":{\"source\":{\"id\":\"7811e1be-f243-40a5-9d11-806c5afe71ae\",\"type\":\"ColumnDataSource\"}},\"id\":\"2a3b64c5-4f97-44f2-a002-7eb59725f16b\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"cheby1\"},\"renderers\":[{\"id\":\"d94ebe37-4922-4ac5-bd00-e45d70aac740\",\"type\":\"GlyphRenderer\"}]},\"id\":\"a6b3e5e9-2c82-457c-b6a2-2bada22c2990\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.27,0.27],\"y\":[5.0,-75.0]}},\"id\":\"fb5575e6-eb89-48b5-b9e7-5fef77aeef4f\",\"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\":\"d907acde-e6fd-4c51-828e-59d7d07c541a\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"289bbbcf-7aaa-4553-9117-2690d0e5f562\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"d69c355f-d7ca-4db7-8fff-9ab815920a19\",\"type\":\"PanTool\"},{\"attributes\":{\"data_source\":{\"id\":\"897c0283-eacb-47e3-b14c-f9123c527852\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3c89edb1-07e3-44a0-8241-f6588fb167fc\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"0c50c2f5-9da4-4f30-a3ba-789304e77df9\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"ac666716-1d8c-42f5-a4f4-0ca9d7201395\",\"type\":\"CDSView\"}},\"id\":\"d94ebe37-4922-4ac5-bd00-e45d70aac740\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44b401de-51ad-4b09-870a-85e5e20bd35c\",\"type\":\"BasicTicker\"}},\"id\":\"5d8528c2-ec5a-417e-804e-ce194037ea4b\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5217f7e2-ae54-4220-ae4d-c052a30fd51c\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":\"olive\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3c89edb1-07e3-44a0-8241-f6588fb167fc\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"d907acde-e6fd-4c51-828e-59d7d07c541a\",\"type\":\"BoxAnnotation\"}},\"id\":\"c8252f9a-66a2-4c41-ba92-cc6cf43f4ff9\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0c50c2f5-9da4-4f30-a3ba-789304e77df9\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"663f3d1c-7f35-429a-8536-9d919fda2c94\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"897c0283-eacb-47e3-b14c-f9123c527852\",\"type\":\"ColumnDataSource\"}},\"id\":\"ac666716-1d8c-42f5-a4f4-0ca9d7201395\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"9c57f530-edd0-42fd-b29c-92416e73c7d6\",\"type\":\"ResetTool\"},{\"attributes\":{\"label\":{\"value\":\"cheby1\"},\"renderers\":[{\"id\":\"350f05e6-6c7b-49f8-bd59-e6e7715714b2\",\"type\":\"GlyphRenderer\"}]},\"id\":\"b5f73701-570c-46f7-b7e8-763b12da65ac\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAACBAAECBAhgP4EAAQIECHA/wYABAwYMeD+BAAECBAiAP6FAgQIFCoQ/wYABAwYMiD/hwIEDBw6MP4EAAQIECJA/kSBBggQJkj+hQIECBQqUP7BgwYIFC5Y/wYABAwYMmD/SoEGDBg2aP+HAgQMHDpw/8ODBgwcPnj+BAAECBAigP4kQIUKECKE/kSBBggQJoj+YMGHChAmjP6FAgQIFCqQ/qVChQoUKpT+wYMGCBQumP7hw4cKFC6c/wYABAwYMqD/JkCFDhgypP9KgQYMGDao/2bBhw4YNqz/hwIEDBw6sP+nQoUOHDq0/8ODBgwcPrj/58OHDhw+vP4EAAQIECLA/hQgRIkSIsD+JECFChAixP4wYMWLEiLE/kSBBggQJsj+VKFGiRImyP5gwYcKECbM/nDhx4sSJsz+hQIECBQq0P6RIkSJFirQ/qVChQoUKtT+tWLFixYq1P7BgwYIFC7Y/tWjRokWLtj+4cOHChQu3P7148eLFi7c/wYABAwYMuD/EiBEjRoy4P8mQIUOGDLk/zZgxY8aMuT/SoEGDBg26P9WoUaNGjbo/2bBhw4YNuz/duHHjxo27P+HAgQMHDrw/5MiRI0eOvD/p0KFDhw69P+3YsWPHjr0/8ODBgwcPvj/16NGjR4++P/nw4cOHD78//vjx48ePvz+BAAECBAjAP4IECRIkSMA/hQgRIkSIwD+GDBkyZMjAP4kQIUKECME/ixQpUqRIwT+MGDFixIjBP48cOXLkyME/kSBBggQJwj+SJEmSJEnCP5UoUaJEicI/lyxZsmTJwj+YMGHChAnDP5s0adKkScM/nDhx4sSJwz+fPHny5MnDP6FAgQIFCsQ/okSJEiVKxD+kSJEiRYrEP6dMmTJlysQ/qVChQoUKxT+rVKlSpUrFP61YsWLFisU/rly5cuXKxT+wYMGCBQvGP7NkyZIlS8Y/tWjRokWLxj+3bNmyZcvGP7hw4cKFC8c/unTp0qVLxz+9ePHixYvHP798+fLly8c/wYABAwYMyD/DhAkTJkzIP8SIESNGjMg/x4wZM2bMyD/JkCFDhgzJP8uUKVOmTMk/zZgxY8aMyT/OnDlz5szJP9KgQYMGDco/06RJkyZNyj/VqFGjRo3KP9esWbNmzco/2bBhw4YNyz/atGnTpk3LP924cePGjcs/37x58+bNyz/hwIEDBw7MP+PEiRMnTsw/5MiRI0eOzD/ozJkzZ87MP+nQoUOHDs0/69SpU6dOzT/t2LFjx47NP+/cuXPnzs0/8ODBgwcPzj/z5MmTJ0/OP/Xo0aNHj84/9+zZs2fPzj/58OHDhw/PP/r06dOnT88//vjx48ePzz///Pnz58/PP4EAAQIECNA/gQIFChQo0D+CBAkSJEjQP4QGDRo0aNA/hQgRIkSI0D+GChUqVKjQP4YMGTJkyNA/hw4dOnTo0D+JECFChAjRP4oSJUqUKNE/ixQpUqRI0T+MFi1atGjRP4wYMWLEiNE/jRo1atSo0T+PHDly5MjRP5AePXr06NE/kSBBggQJ0j+RIkWKFCnSP5IkSZIkSdI/lCZNmjRp0j+VKFGiRInSP5YqVapUqdI/lyxZsmTJ0j+XLl26dOnSP5gwYcKECdM/mjJlypQp0z+bNGnSpEnTP5w2bdq0adM/nDhx4sSJ0z+dOnXq1KnTP588efLkydM/oD59+vTp0z+hQIECBQrUP6JChQoVKtQ/okSJEiVK1D+jRo0aNWrUP6RIkSJFitQ/pUqVKlWq1D+nTJkyZcrUP6hOnTp16tQ/qVChQoUK1T+qUqVKlSrVP6tUqVKlStU/rFatWrVq1T+tWLFixYrVP61atWrVqtU/rly5cuXK1T+vXr169erVP7BgwYIFC9Y/smLFihUr1j+zZMmSJUvWP7RmzZo1a9Y/tWjRokWL1j+2atWqVavWP7ds2bJly9Y/uG7dunXr1j+4cOHChQvXP7ly5cqVK9c/unTp0qVL1z+8du3atWvXP7148eLFi9c/vnr16tWr1z+/fPny5cvXP8B+/fr169c/wYABAwYM2D/CggULFizYP8OECRMmTNg/w4YNGzZs2D/EiBEjRozYP8WKFStWrNg/x4wZM2bM2D/Ijh07duzYP8mQIUOGDNk/ypIlS5Ys2T/LlClTpkzZP8yWLVu2bNk/zZgxY8aM2T/OmjVr1qzZP86cOXPmzNk/z549e/bs2T/SoEGDBg3aP9KiRYsWLdo/06RJkyZN2j/Upk2bNm3aP9WoUaNGjdo/1qpVq1at2j/XrFmzZs3aP9iuXbt27do/2bBhw4YN2z/ZsmXLli3bP9q0adOmTds/3bZt27Zt2z/duHHjxo3bP966devWrds/37x58+bN2z/gvn379u3bP+HAgQMHDtw/4sKFCxcu3D/jxIkTJ07cP+TGjRs3btw/5MiRI0eO3D/lypUrV67cP+jMmTNnztw/6M6dO3fu3D/p0KFDhw7dP+rSpUuXLt0/69SpU6dO3T/s1q1bt27dP+3YsWPHjt0/7tq1a9eu3T/v3Llz587dP+/evXv37t0/8ODBgwcP3j/z4sWLFy/eP/PkyZMnT94/9ObNmzdv3j/16NGjR4/eP/bq1atXr94/9+zZs2fP3j/47t27d+/eP/nw4cOHD98/+vLly5cv3z/69OnTp0/fP/327du3b98//vjx48eP3z/++vXr16/fP//8+fPnz98/AP/9+/fv3z+BAAECBAjgP4EBAwYMGOA/gQIFChQo4D+CAwcOHDjgP4IECRIkSOA/gwULFixY4D+EBg0aNGjgP4QHDx48eOA/hQgRIkSI4D+FCRMmTJjgP4YKFSpUqOA/hgsXLly44D+GDBkyZMjgP4cNGzZs2OA/hw4dOnTo4D+IDx8+fPjgP4kQIUKECOE/iREjRowY4T+KEiVKlCjhP4oTJ06cOOE/ixQpUqRI4T+LFStWrFjhP4wWLVq0aOE/jBcvXrx44T+MGDFixIjhP40ZM2bMmOE/jRo1atSo4T+OGzdu3LjhP48cOXLkyOE/jx07duzY4T+QHj169OjhP5AfP378+OE/kSBBggQJ4j+RIUOGDBniP5EiRYoUKeI/kiNHjhw54j+SJEmSJEniP5MlS5YsWeI/lCZNmjRp4j+UJ0+ePHniP5UoUaJEieI/lSlTpkyZ4j+WKlWqVKniP5YrV65cueI/lyxZsmTJ4j+XLVu2bNniP5cuXbp06eI/mC9fvnz54j+YMGHChAnjP5kxY8aMGeM/mjJlypQp4z+aM2fOnDnjP5s0adKkSeM/mzVr1qxZ4z+cNm3atGnjP5w3b968eeM/nDhx4sSJ4z+dOXPmzJnjP506derUqeM/njt37ty54z+fPHny5MnjP589e/bs2eM/oD59+vTp4z+gP3/+/PnjP6FAgQIFCuQ/oUGDBg0a5D+iQoUKFSrkP6JDhw4dOuQ/okSJEiVK5D+jRYsWLVrkP6NGjRo1auQ/pEePHj165D+kSJEiRYrkP6VJkyZNmuQ/pUqVKlWq5D+mS5cuXbrkP6dMmTJlyuQ/p02bNm3a5D+oTp06derkP6hPnz59+uQ/qVChQoUK5T+pUaNGjRrlP6pSpUqVKuU/qlOnTp065T+rVKlSpUrlP6tVq1atWuU/rFatWrVq5T+tV69evXrlP61YsWLFiuU/rlmzZs2a5T+tWrVq1arlP69bt27duuU/rly5cuXK5T+vXbt27drlP69evXr16uU/sF+/fv365T+wYMGCBQvmP7Fhw4YNG+Y/smLFihUr5j+yY8eOHTvmP7NkyZIlS+Y/s2XLli1b5j+0Zs2aNWvmP7Rnz549e+Y/tWjRokWL5j+1adOmTZvmP7Zq1apVq+Y/t2vXrl275j+3bNmyZcvmP7ht27Zt2+Y/uG7dunXr5j+5b9++ffvmP7hw4cKFC+c/unHjxo0b5z+5cuXKlSvnP7pz586dO+c/unTp0qVL5z+7devWrVvnP7x27dq1a+c/vHfv3r175z+9ePHixYvnP7158+bNm+c/vnr16tWr5z++e/fu3bvnP798+fLly+c/v3379u3b5z/Afv369evnP8B///79++c/wYABAwYM6D/CgQMHDhzoP8KCBQsWLOg/w4MHDx486D/DhAkTJkzoP8SFCxcuXOg/w4YNGzZs6D/Fhw8fPnzoP8SIESNGjOg/xYkTJ06c6D/FihUrVqzoP8aLFy9evOg/x4wZM2bM6D/HjRs3btzoP8iOHTt27Og/yI8fP3786D/JkCFDhgzpP8mRI0eOHOk/ypIlS5Ys6T/KkydPnjzpP8uUKVOmTOk/y5UrV65c6T/Mli1btmzpP82XL1++fOk/zZgxY8aM6T/OmTNnzpzpP86aNWvWrOk/z5s3b9686T/OnDlz5szpP9CdO3fu3Ok/z549e/bs6T/Qnz9//vzpP9KgQYMGDeo/0aFDhw4d6j/SokWLFi3qP9KjR48ePeo/06RJkyZN6j/TpUuXLl3qP9SmTZs2beo/1KdPnz596j/VqFGjRo3qP9WpU6dOneo/1qpVq1at6j/Xq1evXr3qP9esWbNmzeo/2K1bt27d6j/Yrl27du3qP9mvX79+/eo/2bBhw4YN6z/asWPHjh3rP9myZcuWLes/27Nnz5496z/atGnTpk3rP9u1a9euXes/3bZt27Zt6z/ct2/fvn3rP924cePGjes/3blz586d6z/eunXr1q3rP967d+/eves/37x58+bN6z/fvXv37t3rP+C+ffv27es/4L9///796z/hwIEDBw7sP+LBgwcPHuw/4sKFCxcu7D/jw4cPHz7sP+PEiRMnTuw/5MWLFy9e7D/kxo0bN27sP+XHjx8/fuw/5MiRI0eO7D/myZMnT57sP+XKlStXruw/5suXL1++7D/ozJkzZ87sP+fNmzdv3uw/6M6dO3fu7D/oz58/f/7sP+nQoUOHDu0/6dGjR48e7T/q0qVLly7tP+rTp0+fPu0/69SpU6dO7T/r1atXr17tP+zWrVu3bu0/7devX79+7T/t2LFjx47tP+7Zs2fPnu0/7tq1a9eu7T/v27dv377tP+/cuXPnzu0/8N27d+/e7T/v3r179+7tP/Hfv3///u0/8ODBgwcP7j/x4cOHDx/uP/PixYsXL+4/8uPHjx8/7j/z5MmTJ0/uP/Ply5cvX+4/9ObNmzdv7j/058+fP3/uP/Xo0aNHj+4/9enTp0+f7j/26tWrV6/uP/fr169fv+4/9+zZs2fP7j/47du3b9/uP/ju3bt37+4/+e/fv3//7j/58OHDhw/vP/rx48ePH+8/+vLly5cv7z/78+fPnz/vP/r06dOnT+8//PXr169f7z/99u3bt2/vP/z379+/f+8//vjx48eP7z/9+fPnz5/vP/769evXr+8//vv379+/7z///Pnz58/vP//9+/fv3+8/AP/9+/fv7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"15140b6a-e214-4d8e-9d96-773d0db8404c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"511bb210-e647-4a7b-ad60-16125a1cad35\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1b763f9b-251c-4151-af3d-a5996a9df8cd\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"289bbbcf-7aaa-4553-9117-2690d0e5f562\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f23f8604-e6bd-46c6-8f75-c81e91058bcb\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"c8fe9376-ec74-422a-a195-09509815e183\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"9ced0f1a-6f70-4eb2-af2b-784a9c521eba\",\"type\":\"CDSView\"}},\"id\":\"350f05e6-6c7b-49f8-bd59-e6e7715714b2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1e694e30-10f4-4457-9376-610d1c879194\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"end\":-0.0,\"start\":-22.0},\"id\":\"01e0833a-c3a2-403e-b174-3eced747a353\",\"type\":\"Range1d\"},{\"attributes\":{\"line_color\":\"olive\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f23f8604-e6bd-46c6-8f75-c81e91058bcb\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"bf0221f4-b4a3-4e01-9bf8-9ec2bc7e45dd\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c8fe9376-ec74-422a-a195-09509815e183\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"289bbbcf-7aaa-4553-9117-2690d0e5f562\",\"type\":\"ColumnDataSource\"}},\"id\":\"9ced0f1a-6f70-4eb2-af2b-784a9c521eba\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"bessel\"},\"renderers\":[{\"id\":\"bc2be757-b227-4c61-a54c-f0e293295090\",\"type\":\"GlyphRenderer\"}]},\"id\":\"e833c590-fdb4-4af2-ae4e-6d89abe72a7a\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1403fb0b-4c1e-43db-94de-d244e542f5d7\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"e0f45a70-8b93-4925-b0b1-569774803f2a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5d66600f-67a3-497d-a1ca-f0928eec45f5\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"Normalized Frequency\",\"formatter\":{\"id\":\"ed186b45-cac7-4bcd-9e63-f01d6c7a0303\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1403fb0b-4c1e-43db-94de-d244e542f5d7\",\"type\":\"BasicTicker\"}},\"id\":\"bd4b8b90-5b3e-44bf-b585-7b163cf1b387\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"end\":0.5,\"start\":0.1},\"id\":\"928d0551-1811-4f01-bacd-3ff5517ea12b\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"b37d3322-795c-47fa-ac33-3565923758fc\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"15140b6a-e214-4d8e-9d96-773d0db8404c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"fdcad565-574f-4395-94ce-7a33243d1c9f\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"37e4da16-dba1-4f53-9b48-2b72e66e26a4\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"b3421cd0-0b06-4df1-b704-b7f179bf4125\",\"type\":\"CDSView\"}},\"id\":\"bc2be757-b227-4c61-a54c-f0e293295090\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"2a4a5942-e54f-43d6-be86-c0a038c03a8b\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44b401de-51ad-4b09-870a-85e5e20bd35c\",\"type\":\"BasicTicker\"}},\"id\":\"01d293d7-8cea-49de-b00a-a2c5bddffd23\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"bf0221f4-b4a3-4e01-9bf8-9ec2bc7e45dd\",\"type\":\"ColumnDataSource\"}},\"id\":\"69a7006f-9452-4fa6-b6e4-18537085e018\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"green\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"fdcad565-574f-4395-94ce-7a33243d1c9f\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"10cd990c-8c1d-496f-a9eb-407b1b3155f4\",\"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\":\"b9491208-2f2f-4bb8-8d00-2ef7d8e5255c\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"37e4da16-dba1-4f53-9b48-2b72e66e26a4\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"9c1fca6c-1dbb-4fda-83b9-143e8451cba6\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"15140b6a-e214-4d8e-9d96-773d0db8404c\",\"type\":\"ColumnDataSource\"}},\"id\":\"b3421cd0-0b06-4df1-b704-b7f179bf4125\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"bessel\"},\"renderers\":[{\"id\":\"732081cc-76ae-4f67-b41a-f469a048ea17\",\"type\":\"GlyphRenderer\"}]},\"id\":\"ec322b56-3047-4a17-804e-f5d41d581a9d\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"a6e8b504-933e-4792-91ed-0430b966dbe6\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.412,0.412],\"y\":[5.0,-75.0]}},\"id\":\"be51736e-e388-4d70-a666-7223770aa882\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"children\":[{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"55a8c6ef-4999-4a2c-bf33-2a45adffc98e\",\"type\":\"Row\"},{\"attributes\":{\"overlay\":{\"id\":\"b9491208-2f2f-4bb8-8d00-2ef7d8e5255c\",\"type\":\"BoxAnnotation\"}},\"id\":\"a4485fc7-6a81-4029-a2da-d4b1fc151b70\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"20ea7158-8729-4e45-87be-1ff4f03b1483\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"b37d3322-795c-47fa-ac33-3565923758fc\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"baaaa647-7551-4888-b4c6-c040eb64a84f\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"42ac0867-c738-406c-885a-a9bdf8a9e52a\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"ea396de6-d369-4110-bb25-4a43c6644ddf\",\"type\":\"CDSView\"}},\"id\":\"732081cc-76ae-4f67-b41a-f469a048ea17\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"c020acd5-b323-4986-b5e6-bf759b237251\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":\"green\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"baaaa647-7551-4888-b4c6-c040eb64a84f\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"cab73c22-0b82-42f2-b074-0dea39da6638\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"42ac0867-c738-406c-885a-a9bdf8a9e52a\",\"type\":\"Line\"},{\"attributes\":{\"items\":[{\"id\":\"5cf482bd-fdf2-4b73-ac90-5e59740129e4\",\"type\":\"LegendItem\"},{\"id\":\"410bae3b-fa9f-41d6-a26b-3d6cac712588\",\"type\":\"LegendItem\"},{\"id\":\"ce642edf-d537-4198-aa43-308eef6aba37\",\"type\":\"LegendItem\"},{\"id\":\"a6b3e5e9-2c82-457c-b6a2-2bada22c2990\",\"type\":\"LegendItem\"},{\"id\":\"e833c590-fdb4-4af2-ae4e-6d89abe72a7a\",\"type\":\"LegendItem\"}],\"location\":\"bottom_left\",\"plot\":{\"id\":\"e56a6ab7-cc0f-499b-9dc8-419ad8a9b222\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"bdd8bb9b-b07f-4ca9-84cf-0f48ac7accd2\",\"type\":\"Legend\"},{\"attributes\":{\"source\":{\"id\":\"b37d3322-795c-47fa-ac33-3565923758fc\",\"type\":\"ColumnDataSource\"}},\"id\":\"ea396de6-d369-4110-bb25-4a43c6644ddf\",\"type\":\"CDSView\"},{\"attributes\":{\"plot\":{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1403fb0b-4c1e-43db-94de-d244e542f5d7\",\"type\":\"BasicTicker\"}},\"id\":\"51271ebc-5cb1-43a9-9908-228f6c8a6923\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"be51736e-e388-4d70-a666-7223770aa882\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"81446c30-7a2a-46f2-97ae-8789424e3733\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"fd8f80cd-5c44-4c44-b29f-4e60a85b5f75\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"d0bd5f2c-b5b0-4dc2-9a9f-4d38b773c099\",\"type\":\"CDSView\"}},\"id\":\"62730f09-da81-4849-8168-4bdfdc8f2177\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"50b2d85e-01c4-49c3-bf3d-958d439295ea\",\"type\":\"Line\"},{\"attributes\":{\"children\":[{\"id\":\"55a8c6ef-4999-4a2c-bf33-2a45adffc98e\",\"type\":\"Row\"}]},\"id\":\"196c1d4f-52c7-4349-a60b-a285e7249d8e\",\"type\":\"Column\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"81446c30-7a2a-46f2-97ae-8789424e3733\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"ed186b45-cac7-4bcd-9e63-f01d6c7a0303\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"fb5575e6-eb89-48b5-b9e7-5fef77aeef4f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"10cd990c-8c1d-496f-a9eb-407b1b3155f4\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"50b2d85e-01c4-49c3-bf3d-958d439295ea\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"f0b09a21-c633-4a21-9a71-27afa46704d5\",\"type\":\"CDSView\"}},\"id\":\"b73a04cd-e4c7-4347-9b72-f82b34d8b032\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0a9990f2-93c8-4899-84aa-91a0859c2c5c\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"ellip\"},\"renderers\":[{\"id\":\"6e685a88-8598-406e-9e48-3017285912f1\",\"type\":\"GlyphRenderer\"}]},\"id\":\"5cf482bd-fdf2-4b73-ac90-5e59740129e4\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"fb5575e6-eb89-48b5-b9e7-5fef77aeef4f\",\"type\":\"ColumnDataSource\"}},\"id\":\"f0b09a21-c633-4a21-9a71-27afa46704d5\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.1,0.5],\"y\":[-60,-60]}},\"id\":\"e44bbf83-43e5-4436-a92a-262bcff1757f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"fd8f80cd-5c44-4c44-b29f-4e60a85b5f75\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2a4a5942-e54f-43d6-be86-c0a038c03a8b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"darkred\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"e5309ded-cfe6-4bf1-b8d8-08827a86d378\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"7458a2a3-f371-4258-bd57-a23f24fa414f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"be51736e-e388-4d70-a666-7223770aa882\",\"type\":\"ColumnDataSource\"}},\"id\":\"d0bd5f2c-b5b0-4dc2-9a9f-4d38b773c099\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"b198af7f-cca0-4eec-83cb-4ec5b3717c9d\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"darkred\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d3b0864c-7caa-4edc-a508-aa8324dc14a4\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"e44bbf83-43e5-4436-a92a-262bcff1757f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"b198af7f-cca0-4eec-83cb-4ec5b3717c9d\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"344451f4-16fa-400e-b6a2-5e2c040871a3\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"7dd3e6ad-faed-49af-9113-41a74cd5574d\",\"type\":\"CDSView\"}},\"id\":\"3f25ea01-4e0a-44cc-aedf-1c94a98a9683\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"8844bf65-bde0-4e6a-8779-32635b333db1\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d3b0864c-7caa-4edc-a508-aa8324dc14a4\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"0a9990f2-93c8-4899-84aa-91a0859c2c5c\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"aa8f2581-f4cd-4145-8664-75d60289f487\",\"type\":\"CDSView\"}},\"id\":\"3cafdfe1-1d6f-4d4f-9c47-8a5e8f551998\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"344451f4-16fa-400e-b6a2-5e2c040871a3\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"8844bf65-bde0-4e6a-8779-32635b333db1\",\"type\":\"ColumnDataSource\"}},\"id\":\"aa8f2581-f4cd-4145-8664-75d60289f487\",\"type\":\"CDSView\"},{\"attributes\":{\"children\":[{\"id\":\"812d20d2-fb34-41f2-9fa0-24eaa4db2863\",\"type\":\"ToolbarBox\"},{\"id\":\"196c1d4f-52c7-4349-a60b-a285e7249d8e\",\"type\":\"Column\"}]},\"id\":\"e18371f5-5ff9-4875-9b01-24d51336aa31\",\"type\":\"Column\"},{\"attributes\":{\"label\":{\"value\":\"ellip\"},\"renderers\":[{\"id\":\"3cafdfe1-1d6f-4d4f-9c47-8a5e8f551998\",\"type\":\"GlyphRenderer\"}]},\"id\":\"75a44f77-c653-4fff-90e7-4707f39ed192\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"7458a2a3-f371-4258-bd57-a23f24fa414f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"90cc30d8-4870-4cc2-a3b8-c70248fa884c\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"d16914e0-ee7e-431c-bbc9-c6664545a450\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"a6bb7650-bdcb-4bf4-a966-c53d5379df45\",\"type\":\"CDSView\"}},\"id\":\"058da4ff-2929-4ce6-a42e-aea31ce98dca\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"e44bbf83-43e5-4436-a92a-262bcff1757f\",\"type\":\"ColumnDataSource\"}},\"id\":\"7dd3e6ad-faed-49af-9113-41a74cd5574d\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"d69c355f-d7ca-4db7-8fff-9ab815920a19\",\"type\":\"PanTool\"},{\"id\":\"5217f7e2-ae54-4220-ae4d-c052a30fd51c\",\"type\":\"WheelZoomTool\"},{\"id\":\"c8252f9a-66a2-4c41-ba92-cc6cf43f4ff9\",\"type\":\"BoxZoomTool\"},{\"id\":\"663f3d1c-7f35-429a-8536-9d919fda2c94\",\"type\":\"SaveTool\"},{\"id\":\"9c57f530-edd0-42fd-b29c-92416e73c7d6\",\"type\":\"ResetTool\"},{\"id\":\"511bb210-e647-4a7b-ad60-16125a1cad35\",\"type\":\"HelpTool\"},{\"id\":\"9c1fca6c-1dbb-4fda-83b9-143e8451cba6\",\"type\":\"PanTool\"},{\"id\":\"a6e8b504-933e-4792-91ed-0430b966dbe6\",\"type\":\"WheelZoomTool\"},{\"id\":\"a4485fc7-6a81-4029-a2da-d4b1fc151b70\",\"type\":\"BoxZoomTool\"},{\"id\":\"20ea7158-8729-4e45-87be-1ff4f03b1483\",\"type\":\"SaveTool\"},{\"id\":\"c020acd5-b323-4986-b5e6-bf759b237251\",\"type\":\"ResetTool\"},{\"id\":\"cab73c22-0b82-42f2-b074-0dea39da6638\",\"type\":\"HelpTool\"}]},\"id\":\"2452edeb-5012-4a6d-8009-fd9eff751dd3\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"line_color\":\"crimson\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"90cc30d8-4870-4cc2-a3b8-c70248fa884c\",\"type\":\"Line\"},{\"attributes\":{\"toolbar\":{\"id\":\"2452edeb-5012-4a6d-8009-fd9eff751dd3\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"812d20d2-fb34-41f2-9fa0-24eaa4db2863\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"items\":[{\"id\":\"75a44f77-c653-4fff-90e7-4707f39ed192\",\"type\":\"LegendItem\"},{\"id\":\"266aeeda-ea53-4a3d-b110-a23d61e023e3\",\"type\":\"LegendItem\"},{\"id\":\"fb67d530-98c0-485a-bd8c-581267a869ac\",\"type\":\"LegendItem\"},{\"id\":\"b5f73701-570c-46f7-b7e8-763b12da65ac\",\"type\":\"LegendItem\"},{\"id\":\"ec322b56-3047-4a17-804e-f5d41d581a9d\",\"type\":\"LegendItem\"}],\"location\":\"bottom_left\",\"plot\":{\"id\":\"318e98e6-4da2-4d5e-8ac4-68308e393de6\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f361ba6b-0527-4ed0-aa9b-333157debf7d\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d16914e0-ee7e-431c-bbc9-c6664545a450\",\"type\":\"Line\"}],\"root_ids\":[\"e18371f5-5ff9-4875-9b01-24d51336aa31\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n", " var render_items = [{\"docid\":\"c97e725b-5381-4614-b21e-40ed94963419\",\"elementid\":\"78527f38-1fdb-4663-a4c3-afc4b8d1e744\",\"modelid\":\"e18371f5-5ff9-4875-9b01-24d51336aa31\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "e18371f5-5ff9-4875-9b01-24d51336aa31" } }, "output_type": "display_data" } ], "source": [ "xmn1, xmx1, ymn1, ymx1 = 0.1, 0.5, -75., 5.\n", "xmn2, xmx2, ymn2, ymx2 = 0.1, 0.5, -22., -0.\n", "\n", "fig1 = bk.figure(plot_width=350, plot_height=400,\n", " title='Frequency response',\n", " y_axis_label='Magnitude (db)',\n", " x_axis_label='Normalized Frequency',\n", " x_range=(xmn1, xmx1), y_range=(ymn1, ymx1))\n", "fig2 = bk.figure(plot_width=350, plot_height=400,\n", " title='Phase response',\n", " x_axis_label='Normalized Frequency',\n", " x_range=(xmn2, xmx2), y_range=(ymn2, ymx2))\n", "\n", "for i, filtername in enumerate(Filters):\n", " b, a = Filters[filtername]\n", " w,h = signal.freqz(b,a)\n", " h_dB = 20*np.log10(np.abs(h))\n", " h_Phase = np.unwrap(np.arctan2(np.imag(h),np.real(h)))\n", " fig1.line(w/np.max(w),h_dB, color=plotcolors[i].lower(), legend=filtername)\n", " fig2.line(w/np.max(w),h_Phase,color=plotcolors[i].lower(), legend=filtername)\n", "\n", "fig1.line([Wp, Wp], [ymx1, ymn1], line_dash=[5])\n", "fig1.line([Ws, Ws], [ymx1, ymn1], line_dash=[5])\n", "fig1.line([xmn1, xmx1], [-As, -As], line_dash=[5])\n", "fig1.legend.location = \"bottom_left\"\n", "fig2.legend.location = \"bottom_left\"\n", "\n", "bk.show(bk.gridplot([[fig1, fig2]]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can have a better look at the Passband Ripple:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"522ec75c-79cb-44a0-bcb8-5c5a530a5c4b\":{\"roots\":{\"references\":[{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"ee0c31d8-df2b-43ef-983e-a616c9616053\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"8aa920ef-5200-4cf6-8594-9fefcea2ae56\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"ee0c31d8-df2b-43ef-983e-a616c9616053\",\"type\":\"BoxAnnotation\"}},\"id\":\"4c538435-d615-4e15-85ac-6b2f063bf2f2\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"c78013d5-7225-4f09-83a7-b302e1632c6c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"79a4a5ba-c7c4-4fc9-86cc-087cafb40a9c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"ellip\"},\"renderers\":[{\"id\":\"805d7292-fa3f-43b8-937c-a344408576b0\",\"type\":\"GlyphRenderer\"}]},\"id\":\"520feedb-313c-42dd-87e9-b72278098be6\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2618ce19-c053-47cd-9f34-fb1fdb044a01\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"cheby2\"},\"renderers\":[{\"id\":\"7e45fa04-949f-4b72-98dd-f7bfd60ea67e\",\"type\":\"GlyphRenderer\"}]},\"id\":\"2d606645-f239-4f32-8f2e-b2673f139515\",\"type\":\"LegendItem\"},{\"attributes\":{\"items\":[{\"id\":\"520feedb-313c-42dd-87e9-b72278098be6\",\"type\":\"LegendItem\"},{\"id\":\"2d606645-f239-4f32-8f2e-b2673f139515\",\"type\":\"LegendItem\"},{\"id\":\"c97ad193-8349-4297-b1f5-72841a4e6571\",\"type\":\"LegendItem\"},{\"id\":\"3fa3f3e7-b3b5-4420-bfcf-918e1cf96aec\",\"type\":\"LegendItem\"},{\"id\":\"6183ef52-aeda-482d-8c61-e4df790688e3\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0f11dc83-6ea8-4f88-b31f-7e68e671a9e8\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"aa3764a2-67e0-4488-beff-b18cc677d821\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"crimson\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"56133634-f317-421d-8780-18c043b52056\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"c78013d5-7225-4f09-83a7-b302e1632c6c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"56133634-f317-421d-8780-18c043b52056\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2618ce19-c053-47cd-9f34-fb1fdb044a01\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"44b0d05d-981d-4c51-8475-65d067de2407\",\"type\":\"CDSView\"}},\"id\":\"7e45fa04-949f-4b72-98dd-f7bfd60ea67e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"c78013d5-7225-4f09-83a7-b302e1632c6c\",\"type\":\"ColumnDataSource\"}},\"id\":\"44b0d05d-981d-4c51-8475-65d067de2407\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"butter\"},\"renderers\":[{\"id\":\"e371236d-b14f-44e6-b49a-67cb17fec99b\",\"type\":\"GlyphRenderer\"}]},\"id\":\"c97ad193-8349-4297-b1f5-72841a4e6571\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"4fad6626-d0e0-4556-a48b-5a284f7205ab\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"aa3764a2-67e0-4488-beff-b18cc677d821\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ed7b86a0-aa18-42ae-a29f-da86d8301a20\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5508154b-1512-46ec-a313-6258730b4571\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"01cbbafc-a3b4-49d3-8e56-6341d62cf60e\",\"type\":\"CDSView\"}},\"id\":\"e371236d-b14f-44e6-b49a-67cb17fec99b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"ed7b86a0-aa18-42ae-a29f-da86d8301a20\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5508154b-1512-46ec-a313-6258730b4571\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"aa3764a2-67e0-4488-beff-b18cc677d821\",\"type\":\"ColumnDataSource\"}},\"id\":\"01cbbafc-a3b4-49d3-8e56-6341d62cf60e\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"cheby1\"},\"renderers\":[{\"id\":\"a517f3ac-a670-4925-b05a-85c16fd91efa\",\"type\":\"GlyphRenderer\"}]},\"id\":\"3fa3f3e7-b3b5-4420-bfcf-918e1cf96aec\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAACBAAECBAhgP4EAAQIECHA/wYABAwYMeD+BAAECBAiAP6FAgQIFCoQ/wYABAwYMiD/hwIEDBw6MP4EAAQIECJA/kSBBggQJkj+hQIECBQqUP7BgwYIFC5Y/wYABAwYMmD/SoEGDBg2aP+HAgQMHDpw/8ODBgwcPnj+BAAECBAigP4kQIUKECKE/kSBBggQJoj+YMGHChAmjP6FAgQIFCqQ/qVChQoUKpT+wYMGCBQumP7hw4cKFC6c/wYABAwYMqD/JkCFDhgypP9KgQYMGDao/2bBhw4YNqz/hwIEDBw6sP+nQoUOHDq0/8ODBgwcPrj/58OHDhw+vP4EAAQIECLA/hQgRIkSIsD+JECFChAixP4wYMWLEiLE/kSBBggQJsj+VKFGiRImyP5gwYcKECbM/nDhx4sSJsz+hQIECBQq0P6RIkSJFirQ/qVChQoUKtT+tWLFixYq1P7BgwYIFC7Y/tWjRokWLtj+4cOHChQu3P7148eLFi7c/wYABAwYMuD/EiBEjRoy4P8mQIUOGDLk/zZgxY8aMuT/SoEGDBg26P9WoUaNGjbo/2bBhw4YNuz/duHHjxo27P+HAgQMHDrw/5MiRI0eOvD/p0KFDhw69P+3YsWPHjr0/8ODBgwcPvj/16NGjR4++P/nw4cOHD78//vjx48ePvz+BAAECBAjAP4IECRIkSMA/hQgRIkSIwD+GDBkyZMjAP4kQIUKECME/ixQpUqRIwT+MGDFixIjBP48cOXLkyME/kSBBggQJwj+SJEmSJEnCP5UoUaJEicI/lyxZsmTJwj+YMGHChAnDP5s0adKkScM/nDhx4sSJwz+fPHny5MnDP6FAgQIFCsQ/okSJEiVKxD+kSJEiRYrEP6dMmTJlysQ/qVChQoUKxT+rVKlSpUrFP61YsWLFisU/rly5cuXKxT+wYMGCBQvGP7NkyZIlS8Y/tWjRokWLxj+3bNmyZcvGP7hw4cKFC8c/unTp0qVLxz+9ePHixYvHP798+fLly8c/wYABAwYMyD/DhAkTJkzIP8SIESNGjMg/x4wZM2bMyD/JkCFDhgzJP8uUKVOmTMk/zZgxY8aMyT/OnDlz5szJP9KgQYMGDco/06RJkyZNyj/VqFGjRo3KP9esWbNmzco/2bBhw4YNyz/atGnTpk3LP924cePGjcs/37x58+bNyz/hwIEDBw7MP+PEiRMnTsw/5MiRI0eOzD/ozJkzZ87MP+nQoUOHDs0/69SpU6dOzT/t2LFjx47NP+/cuXPnzs0/8ODBgwcPzj/z5MmTJ0/OP/Xo0aNHj84/9+zZs2fPzj/58OHDhw/PP/r06dOnT88//vjx48ePzz///Pnz58/PP4EAAQIECNA/gQIFChQo0D+CBAkSJEjQP4QGDRo0aNA/hQgRIkSI0D+GChUqVKjQP4YMGTJkyNA/hw4dOnTo0D+JECFChAjRP4oSJUqUKNE/ixQpUqRI0T+MFi1atGjRP4wYMWLEiNE/jRo1atSo0T+PHDly5MjRP5AePXr06NE/kSBBggQJ0j+RIkWKFCnSP5IkSZIkSdI/lCZNmjRp0j+VKFGiRInSP5YqVapUqdI/lyxZsmTJ0j+XLl26dOnSP5gwYcKECdM/mjJlypQp0z+bNGnSpEnTP5w2bdq0adM/nDhx4sSJ0z+dOnXq1KnTP588efLkydM/oD59+vTp0z+hQIECBQrUP6JChQoVKtQ/okSJEiVK1D+jRo0aNWrUP6RIkSJFitQ/pUqVKlWq1D+nTJkyZcrUP6hOnTp16tQ/qVChQoUK1T+qUqVKlSrVP6tUqVKlStU/rFatWrVq1T+tWLFixYrVP61atWrVqtU/rly5cuXK1T+vXr169erVP7BgwYIFC9Y/smLFihUr1j+zZMmSJUvWP7RmzZo1a9Y/tWjRokWL1j+2atWqVavWP7ds2bJly9Y/uG7dunXr1j+4cOHChQvXP7ly5cqVK9c/unTp0qVL1z+8du3atWvXP7148eLFi9c/vnr16tWr1z+/fPny5cvXP8B+/fr169c/wYABAwYM2D/CggULFizYP8OECRMmTNg/w4YNGzZs2D/EiBEjRozYP8WKFStWrNg/x4wZM2bM2D/Ijh07duzYP8mQIUOGDNk/ypIlS5Ys2T/LlClTpkzZP8yWLVu2bNk/zZgxY8aM2T/OmjVr1qzZP86cOXPmzNk/z549e/bs2T/SoEGDBg3aP9KiRYsWLdo/06RJkyZN2j/Upk2bNm3aP9WoUaNGjdo/1qpVq1at2j/XrFmzZs3aP9iuXbt27do/2bBhw4YN2z/ZsmXLli3bP9q0adOmTds/3bZt27Zt2z/duHHjxo3bP966devWrds/37x58+bN2z/gvn379u3bP+HAgQMHDtw/4sKFCxcu3D/jxIkTJ07cP+TGjRs3btw/5MiRI0eO3D/lypUrV67cP+jMmTNnztw/6M6dO3fu3D/p0KFDhw7dP+rSpUuXLt0/69SpU6dO3T/s1q1bt27dP+3YsWPHjt0/7tq1a9eu3T/v3Llz587dP+/evXv37t0/8ODBgwcP3j/z4sWLFy/eP/PkyZMnT94/9ObNmzdv3j/16NGjR4/eP/bq1atXr94/9+zZs2fP3j/47t27d+/eP/nw4cOHD98/+vLly5cv3z/69OnTp0/fP/327du3b98//vjx48eP3z/++vXr16/fP//8+fPnz98/AP/9+/fv3z+BAAECBAjgP4EBAwYMGOA/gQIFChQo4D+CAwcOHDjgP4IECRIkSOA/gwULFixY4D+EBg0aNGjgP4QHDx48eOA/hQgRIkSI4D+FCRMmTJjgP4YKFSpUqOA/hgsXLly44D+GDBkyZMjgP4cNGzZs2OA/hw4dOnTo4D+IDx8+fPjgP4kQIUKECOE/iREjRowY4T+KEiVKlCjhP4oTJ06cOOE/ixQpUqRI4T+LFStWrFjhP4wWLVq0aOE/jBcvXrx44T+MGDFixIjhP40ZM2bMmOE/jRo1atSo4T+OGzdu3LjhP48cOXLkyOE/jx07duzY4T+QHj169OjhP5AfP378+OE/kSBBggQJ4j+RIUOGDBniP5EiRYoUKeI/kiNHjhw54j+SJEmSJEniP5MlS5YsWeI/lCZNmjRp4j+UJ0+ePHniP5UoUaJEieI/lSlTpkyZ4j+WKlWqVKniP5YrV65cueI/lyxZsmTJ4j+XLVu2bNniP5cuXbp06eI/mC9fvnz54j+YMGHChAnjP5kxY8aMGeM/mjJlypQp4z+aM2fOnDnjP5s0adKkSeM/mzVr1qxZ4z+cNm3atGnjP5w3b968eeM/nDhx4sSJ4z+dOXPmzJnjP506derUqeM/njt37ty54z+fPHny5MnjP589e/bs2eM/oD59+vTp4z+gP3/+/PnjP6FAgQIFCuQ/oUGDBg0a5D+iQoUKFSrkP6JDhw4dOuQ/okSJEiVK5D+jRYsWLVrkP6NGjRo1auQ/pEePHj165D+kSJEiRYrkP6VJkyZNmuQ/pUqVKlWq5D+mS5cuXbrkP6dMmTJlyuQ/p02bNm3a5D+oTp06derkP6hPnz59+uQ/qVChQoUK5T+pUaNGjRrlP6pSpUqVKuU/qlOnTp065T+rVKlSpUrlP6tVq1atWuU/rFatWrVq5T+tV69evXrlP61YsWLFiuU/rlmzZs2a5T+tWrVq1arlP69bt27duuU/rly5cuXK5T+vXbt27drlP69evXr16uU/sF+/fv365T+wYMGCBQvmP7Fhw4YNG+Y/smLFihUr5j+yY8eOHTvmP7NkyZIlS+Y/s2XLli1b5j+0Zs2aNWvmP7Rnz549e+Y/tWjRokWL5j+1adOmTZvmP7Zq1apVq+Y/t2vXrl275j+3bNmyZcvmP7ht27Zt2+Y/uG7dunXr5j+5b9++ffvmP7hw4cKFC+c/unHjxo0b5z+5cuXKlSvnP7pz586dO+c/unTp0qVL5z+7devWrVvnP7x27dq1a+c/vHfv3r175z+9ePHixYvnP7158+bNm+c/vnr16tWr5z++e/fu3bvnP798+fLly+c/v3379u3b5z/Afv369evnP8B///79++c/wYABAwYM6D/CgQMHDhzoP8KCBQsWLOg/w4MHDx486D/DhAkTJkzoP8SFCxcuXOg/w4YNGzZs6D/Fhw8fPnzoP8SIESNGjOg/xYkTJ06c6D/FihUrVqzoP8aLFy9evOg/x4wZM2bM6D/HjRs3btzoP8iOHTt27Og/yI8fP3786D/JkCFDhgzpP8mRI0eOHOk/ypIlS5Ys6T/KkydPnjzpP8uUKVOmTOk/y5UrV65c6T/Mli1btmzpP82XL1++fOk/zZgxY8aM6T/OmTNnzpzpP86aNWvWrOk/z5s3b9686T/OnDlz5szpP9CdO3fu3Ok/z549e/bs6T/Qnz9//vzpP9KgQYMGDeo/0aFDhw4d6j/SokWLFi3qP9KjR48ePeo/06RJkyZN6j/TpUuXLl3qP9SmTZs2beo/1KdPnz596j/VqFGjRo3qP9WpU6dOneo/1qpVq1at6j/Xq1evXr3qP9esWbNmzeo/2K1bt27d6j/Yrl27du3qP9mvX79+/eo/2bBhw4YN6z/asWPHjh3rP9myZcuWLes/27Nnz5496z/atGnTpk3rP9u1a9euXes/3bZt27Zt6z/ct2/fvn3rP924cePGjes/3blz586d6z/eunXr1q3rP967d+/eves/37x58+bN6z/fvXv37t3rP+C+ffv27es/4L9///796z/hwIEDBw7sP+LBgwcPHuw/4sKFCxcu7D/jw4cPHz7sP+PEiRMnTuw/5MWLFy9e7D/kxo0bN27sP+XHjx8/fuw/5MiRI0eO7D/myZMnT57sP+XKlStXruw/5suXL1++7D/ozJkzZ87sP+fNmzdv3uw/6M6dO3fu7D/oz58/f/7sP+nQoUOHDu0/6dGjR48e7T/q0qVLly7tP+rTp0+fPu0/69SpU6dO7T/r1atXr17tP+zWrVu3bu0/7devX79+7T/t2LFjx47tP+7Zs2fPnu0/7tq1a9eu7T/v27dv377tP+/cuXPnzu0/8N27d+/e7T/v3r179+7tP/Hfv3///u0/8ODBgwcP7j/x4cOHDx/uP/PixYsXL+4/8uPHjx8/7j/z5MmTJ0/uP/Ply5cvX+4/9ObNmzdv7j/058+fP3/uP/Xo0aNHj+4/9enTp0+f7j/26tWrV6/uP/fr169fv+4/9+zZs2fP7j/47du3b9/uP/ju3bt37+4/+e/fv3//7j/58OHDhw/vP/rx48ePH+8/+vLly5cv7z/78+fPnz/vP/r06dOnT+8//PXr169f7z/99u3bt2/vP/z379+/f+8//vjx48eP7z/9+fPnz5/vP/769evXr+8//vv379+/7z///Pnz58/vP//9+/fv3+8/AP/9+/fv7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"2a548811-41be-4167-b328-44b129779d11\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"4fad6626-d0e0-4556-a48b-5a284f7205ab\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"9d7903a5-dde0-4ee5-9b1e-ae4ddd59268a\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"8c512e31-4412-46b6-8aff-7fe3420c0329\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"53067836-efdf-4e9e-b5c9-7c7879483e37\",\"type\":\"CDSView\"}},\"id\":\"a517f3ac-a670-4925-b05a-85c16fd91efa\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"olive\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"9d7903a5-dde0-4ee5-9b1e-ae4ddd59268a\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8c512e31-4412-46b6-8aff-7fe3420c0329\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"4fad6626-d0e0-4556-a48b-5a284f7205ab\",\"type\":\"ColumnDataSource\"}},\"id\":\"53067836-efdf-4e9e-b5c9-7c7879483e37\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"bessel\"},\"renderers\":[{\"id\":\"0186516a-3173-41e4-b529-931ade179490\",\"type\":\"GlyphRenderer\"}]},\"id\":\"6183ef52-aeda-482d-8c61-e4df790688e3\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.412,0.412],\"y\":[0.01,-0.11]}},\"id\":\"5f3bb55e-d08d-4662-b012-30dd5c4e716a\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"2a548811-41be-4167-b328-44b129779d11\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"fe9b2ac6-ac2e-4068-a9fa-7e9e73a9dde1\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"6221bddb-89bf-4884-8a5d-e27021a6ad4d\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"9ca8ea58-d2f6-4622-b08d-d75935d5e5f1\",\"type\":\"CDSView\"}},\"id\":\"0186516a-3173-41e4-b529-931ade179490\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"green\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"fe9b2ac6-ac2e-4068-a9fa-7e9e73a9dde1\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6221bddb-89bf-4884-8a5d-e27021a6ad4d\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2a548811-41be-4167-b328-44b129779d11\",\"type\":\"ColumnDataSource\"}},\"id\":\"9ca8ea58-d2f6-4622-b08d-d75935d5e5f1\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d2a476bf-37a4-42b1-a9cd-b827c5f70573\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.1,0.3],\"y\":[-60,-60]}},\"id\":\"0812c1e2-e165-46f1-8693-ebc6702d0014\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"19d013f9-5a54-41ad-b60d-ded4f2f02c59\",\"type\":\"ColumnDataSource\"}},\"id\":\"8467dfa3-efd2-464d-a53a-6c303fad6799\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8ab73864-81cd-46cb-970a-f6ae87dc9f21\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"19d013f9-5a54-41ad-b60d-ded4f2f02c59\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d2a476bf-37a4-42b1-a9cd-b827c5f70573\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"8ab73864-81cd-46cb-970a-f6ae87dc9f21\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"8467dfa3-efd2-464d-a53a-6c303fad6799\",\"type\":\"CDSView\"}},\"id\":\"9f3fa4ff-4c9d-448c-8b5f-b943ce8cf427\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"19ab4412-d7e1-4b10-931f-ada2f5a51a7d\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"99c35335-907b-445d-b6ae-b057908ccd74\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"5f3bb55e-d08d-4662-b012-30dd5c4e716a\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"99c35335-907b-445d-b6ae-b057908ccd74\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"41fe4a25-fc71-406b-99b8-c21192c38664\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"da33599e-f6c6-4ca8-8d8e-c5ca5bd5419f\",\"type\":\"CDSView\"}},\"id\":\"a8a59937-97d6-4e7c-910c-0da272a3440d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0.27,0.27],\"y\":[0.01,-0.11]}},\"id\":\"19d013f9-5a54-41ad-b60d-ded4f2f02c59\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":\"Frequency Response\"},\"id\":\"40994468-543e-4c7c-b914-8c5e7624a3c1\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"41fe4a25-fc71-406b-99b8-c21192c38664\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2be01e80-9ee6-4c9f-9b8b-445a244eda18\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"364ff600-fef2-423e-83cf-be76008f62a9\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"d422a270-6c67-47ef-8967-e6fa2134138a\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":700,\"renderers\":[{\"id\":\"364ff600-fef2-423e-83cf-be76008f62a9\",\"type\":\"LinearAxis\"},{\"id\":\"071d5415-8e1c-417b-8ed8-966a8a418714\",\"type\":\"Grid\"},{\"id\":\"d422a270-6c67-47ef-8967-e6fa2134138a\",\"type\":\"LinearAxis\"},{\"id\":\"78e2e4cb-d7e4-4bdf-adfc-a22705f658f5\",\"type\":\"Grid\"},{\"id\":\"ee0c31d8-df2b-43ef-983e-a616c9616053\",\"type\":\"BoxAnnotation\"},{\"id\":\"0f11dc83-6ea8-4f88-b31f-7e68e671a9e8\",\"type\":\"Legend\"},{\"id\":\"805d7292-fa3f-43b8-937c-a344408576b0\",\"type\":\"GlyphRenderer\"},{\"id\":\"7e45fa04-949f-4b72-98dd-f7bfd60ea67e\",\"type\":\"GlyphRenderer\"},{\"id\":\"e371236d-b14f-44e6-b49a-67cb17fec99b\",\"type\":\"GlyphRenderer\"},{\"id\":\"a517f3ac-a670-4925-b05a-85c16fd91efa\",\"type\":\"GlyphRenderer\"},{\"id\":\"0186516a-3173-41e4-b529-931ade179490\",\"type\":\"GlyphRenderer\"},{\"id\":\"9f3fa4ff-4c9d-448c-8b5f-b943ce8cf427\",\"type\":\"GlyphRenderer\"},{\"id\":\"a8a59937-97d6-4e7c-910c-0da272a3440d\",\"type\":\"GlyphRenderer\"},{\"id\":\"b368406a-ca03-4085-97ce-dd306ffab848\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"40994468-543e-4c7c-b914-8c5e7624a3c1\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"d9eaa0fd-42e0-4550-800f-6c653391f70b\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"040b3fb5-e5e7-4be7-9b4c-dbdeaca567ed\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"6a7d0792-dc99-4c3c-bfab-d70ac2d57cdf\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"c3fda1a5-7d7b-4d7e-8bc1-87d9e9ea7179\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"157708a7-82e8-4b48-a45c-051326225e4c\",\"type\":\"LinearScale\"}},\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"5f3bb55e-d08d-4662-b012-30dd5c4e716a\",\"type\":\"ColumnDataSource\"}},\"id\":\"da33599e-f6c6-4ca8-8d8e-c5ca5bd5419f\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"end\":0.5,\"start\":0.1},\"id\":\"040b3fb5-e5e7-4be7-9b4c-dbdeaca567ed\",\"type\":\"Range1d\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"af38475f-9e0f-4451-9a27-490ba2f33042\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"0812c1e2-e165-46f1-8693-ebc6702d0014\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"af38475f-9e0f-4451-9a27-490ba2f33042\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"4e66f861-6945-409a-9a1f-021789b102cf\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1ef8714c-a329-4432-84aa-8c69bcbfa1ac\",\"type\":\"CDSView\"}},\"id\":\"b368406a-ca03-4085-97ce-dd306ffab848\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"d3ac205d-2909-4c6d-b922-ea191453a587\",\"type\":\"PanTool\"},{\"id\":\"eec785a2-8119-4014-89b5-d3e66cd54076\",\"type\":\"WheelZoomTool\"},{\"id\":\"4c538435-d615-4e15-85ac-6b2f063bf2f2\",\"type\":\"BoxZoomTool\"},{\"id\":\"19ab4412-d7e1-4b10-931f-ada2f5a51a7d\",\"type\":\"SaveTool\"},{\"id\":\"19ff66c1-41d6-4e93-9cb7-e6b78482c86f\",\"type\":\"ResetTool\"},{\"id\":\"8554422a-5138-4445-bfe4-a2e6a47fa45d\",\"type\":\"HelpTool\"}]},\"id\":\"d9eaa0fd-42e0-4550-800f-6c653391f70b\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_dash\":[5],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4e66f861-6945-409a-9a1f-021789b102cf\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"19ff66c1-41d6-4e93-9cb7-e6b78482c86f\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null,\"end\":5.0,\"start\":-75.0},\"id\":\"c3fda1a5-7d7b-4d7e-8bc1-87d9e9ea7179\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"6a7d0792-dc99-4c3c-bfab-d70ac2d57cdf\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"0812c1e2-e165-46f1-8693-ebc6702d0014\",\"type\":\"ColumnDataSource\"}},\"id\":\"1ef8714c-a329-4432-84aa-8c69bcbfa1ac\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"157708a7-82e8-4b48-a45c-051326225e4c\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1b4a349c-b7fb-4779-9b50-b2b53748d3b6\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Normalized Frequency\",\"formatter\":{\"id\":\"8aa920ef-5200-4cf6-8594-9fefcea2ae56\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1b4a349c-b7fb-4779-9b50-b2b53748d3b6\",\"type\":\"BasicTicker\"}},\"id\":\"364ff600-fef2-423e-83cf-be76008f62a9\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1b4a349c-b7fb-4779-9b50-b2b53748d3b6\",\"type\":\"BasicTicker\"}},\"id\":\"071d5415-8e1c-417b-8ed8-966a8a418714\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"14c784af-6bae-4bd3-b569-9f54b5822c11\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Magnitude (db)\",\"formatter\":{\"id\":\"79a4a5ba-c7c4-4fc9-86cc-087cafb40a9c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"14c784af-6bae-4bd3-b569-9f54b5822c11\",\"type\":\"BasicTicker\"}},\"id\":\"d422a270-6c67-47ef-8967-e6fa2134138a\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"darkred\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"30d4d3e5-d2ea-4a37-9d37-4cbe9cc56af2\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"29e60842-a2b7-46d6-8788-63f3c9ac2ded\",\"type\":\"ColumnDataSource\"}},\"id\":\"4b6fe7a4-bd6c-4b4a-beb4-d58d3ddfe394\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"eec785a2-8119-4014-89b5-d3e66cd54076\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"29e60842-a2b7-46d6-8788-63f3c9ac2ded\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"30d4d3e5-d2ea-4a37-9d37-4cbe9cc56af2\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2be01e80-9ee6-4c9f-9b8b-445a244eda18\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"4b6fe7a4-bd6c-4b4a-beb4-d58d3ddfe394\",\"type\":\"CDSView\"}},\"id\":\"805d7292-fa3f-43b8-937c-a344408576b0\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"14c784af-6bae-4bd3-b569-9f54b5822c11\",\"type\":\"BasicTicker\"}},\"id\":\"78e2e4cb-d7e4-4bdf-adfc-a22705f658f5\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"8554422a-5138-4445-bfe4-a2e6a47fa45d\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[512]}}},\"id\":\"29e60842-a2b7-46d6-8788-63f3c9ac2ded\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"d3ac205d-2909-4c6d-b922-ea191453a587\",\"type\":\"PanTool\"}],\"root_ids\":[\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n", " var render_items = [{\"docid\":\"522ec75c-79cb-44a0-bcb8-5c5a530a5c4b\",\"elementid\":\"20f5a962-4f1f-494b-aa01-924afb3d3c8e\",\"modelid\":\"4eaeba12-cc8b-492a-8779-6fbaeb22da96\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "4eaeba12-cc8b-492a-8779-6fbaeb22da96" } }, "output_type": "display_data" } ], "source": [ "fig = bk.figure(title='Frequency Response', \n", " x_axis_label='Normalized Frequency', \n", " y_axis_label='Magnitude (db)',\n", " plot_width=700, plot_height=400,\n", " x_range=(xmn1, xmx1), y_range=(ymn1, ymx1))\n", "\n", "for i, filtername in enumerate(Filters):\n", " b, a = Filters[filtername]\n", " w,h = signal.freqz(b,a)\n", " h_dB = 20*np.log10(np.abs(h))\n", " fig.line(w/np.max(w),h_dB, color=plotcolors[i].lower(), legend=filtername)\n", "\n", "xmn1, xmx1, ymn1, ymx1 = 0.1, 0.3, -0.11, 0.01\n", "fig.line([Wp, Wp], [ymx1, ymn1], line_dash=[5])\n", "fig.line([Ws, Ws], [ymx1, ymn1], line_dash=[5])\n", "fig.line([xmn1, xmx1], [-As, -As], line_dash=[5])\n", "fig.legend.location = \"bottom_right\"\n", "bk.show(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4 Step and Impulse Response" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can have a look to the inpulse and step response for any filter (bessel in this example):" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"77698ccc-397f-404f-a827-602092819eb7\":{\"roots\":{\"references\":[{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"d1fb7e4c-d28e-4f88-bda9-bc89532abd0e\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"fac92874-c160-49b3-8e1d-c427a44e2e71\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5d1140b3-bcc2-4f8e-b92c-44f28bbb8db5\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"d1c6a6af-6bec-44a8-ab6c-b9584a69b888\",\"type\":\"HelpTool\"},{\"attributes\":{\"data_source\":{\"id\":\"74696295-5b70-45f1-8cf2-81137efb2533\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d425b13b-a5e7-4b5e-8ca5-3c9f755651d5\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"95bf1fed-161c-4eb4-a42c-cf7f4a21cc86\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"0f1abbf7-cc49-4877-9015-786020952ffc\",\"type\":\"CDSView\"}},\"id\":\"000139e5-3551-4c09-bc38-1dae79b65083\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_color\":{\"value\":\"orange\"},\"line_color\":{\"value\":\"SteelBlue\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d425b13b-a5e7-4b5e-8ca5-3c9f755651d5\",\"type\":\"Circle\"},{\"attributes\":{\"tools\":[{\"id\":\"19cf1cad-0360-4174-a730-676fd270caf4\",\"type\":\"PanTool\"},{\"id\":\"e3a37ad3-7864-4e6b-81e6-bcd072751844\",\"type\":\"WheelZoomTool\"},{\"id\":\"6434ba54-c667-4e1b-a1ee-e8ffdd36e6e1\",\"type\":\"BoxZoomTool\"},{\"id\":\"be9962c1-321c-4135-92cb-209012f0c535\",\"type\":\"SaveTool\"},{\"id\":\"5be8acb7-d09e-402a-8590-3511d38bc726\",\"type\":\"ResetTool\"},{\"id\":\"596152fc-22bc-4fb8-93b8-5b8ad04bdbc6\",\"type\":\"HelpTool\"},{\"id\":\"2600928e-1856-4558-b07b-af49dd100a55\",\"type\":\"PanTool\"},{\"id\":\"33afc0a8-a279-4295-8c15-23ced3efc902\",\"type\":\"WheelZoomTool\"},{\"id\":\"87c374ce-9228-4335-886d-42b1881ddc99\",\"type\":\"BoxZoomTool\"},{\"id\":\"fac92874-c160-49b3-8e1d-c427a44e2e71\",\"type\":\"SaveTool\"},{\"id\":\"5d1140b3-bcc2-4f8e-b92c-44f28bbb8db5\",\"type\":\"ResetTool\"},{\"id\":\"d1c6a6af-6bec-44a8-ab6c-b9584a69b888\",\"type\":\"HelpTool\"}]},\"id\":\"109bb054-784f-44f1-9134-907b9dad1239\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"children\":[{\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"42e4a569-f4c6-4822-a2f4-5653ba05e722\",\"type\":\"Row\"},{\"attributes\":{\"children\":[{\"id\":\"42e4a569-f4c6-4822-a2f4-5653ba05e722\",\"type\":\"Row\"}]},\"id\":\"913a6cd4-d340-40cf-bba6-62f1abcb99aa\",\"type\":\"Column\"},{\"attributes\":{\"source\":{\"id\":\"74696295-5b70-45f1-8cf2-81137efb2533\",\"type\":\"ColumnDataSource\"}},\"id\":\"0f1abbf7-cc49-4877-9015-786020952ffc\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"95bf1fed-161c-4eb4-a42c-cf7f4a21cc86\",\"type\":\"Circle\"},{\"attributes\":{\"toolbar\":{\"id\":\"109bb054-784f-44f1-9134-907b9dad1239\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"69b094f0-2771-4637-94cc-a74719a1c7a4\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"children\":[{\"id\":\"69b094f0-2771-4637-94cc-a74719a1c7a4\",\"type\":\"ToolbarBox\"},{\"id\":\"913a6cd4-d340-40cf-bba6-62f1abcb99aa\",\"type\":\"Column\"}]},\"id\":\"e26805e1-1f77-4af9-830c-2cb296739551\",\"type\":\"Column\"},{\"attributes\":{\"data_source\":{\"id\":\"dc8fa8f0-903c-4b82-bc4f-aa391853c92c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"b110a84f-488e-4e75-9b32-979c75e69c7d\",\"type\":\"Segment\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"e12111b8-628b-4c7c-b40f-4b7daa3950fe\",\"type\":\"Segment\"},\"selection_glyph\":null,\"view\":{\"id\":\"77451cd5-1226-4114-9fa9-362add166f68\",\"type\":\"CDSView\"}},\"id\":\"25f4546e-0b02-4397-a104-6cfd5f221650\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"e763d31b-358a-4e2d-9a24-14ae7a62b2d5\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"27fd4390-6751-4cd7-9ff6-e0f03269ac50\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":350,\"renderers\":[{\"id\":\"e763d31b-358a-4e2d-9a24-14ae7a62b2d5\",\"type\":\"LinearAxis\"},{\"id\":\"4f8d9410-7a0d-4569-89e5-f5e9beb1398f\",\"type\":\"Grid\"},{\"id\":\"27fd4390-6751-4cd7-9ff6-e0f03269ac50\",\"type\":\"LinearAxis\"},{\"id\":\"ae7913c1-a824-4943-9472-1bb8be673e4f\",\"type\":\"Grid\"},{\"id\":\"21e6514c-ca24-43e7-8f64-3781e11b25e9\",\"type\":\"BoxAnnotation\"},{\"id\":\"bcddaa0e-be98-4e73-84d0-723a20d84767\",\"type\":\"GlyphRenderer\"},{\"id\":\"8d95b981-1906-446e-98c9-8a59d504d039\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"a32ea78c-584c-433a-8d81-60b3da91edaa\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"22b1bed1-d4f7-49df-8609-562dc98eeb7d\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"465d1618-4e62-4fa8-986b-6f21e5ccf384\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"493e7526-e315-4ebf-9d48-1860fa028c2d\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"985045a8-1b93-413f-b3bb-55f1cc8b72e6\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"2a43a191-728c-4432-8768-ad87c66745d9\",\"type\":\"LinearScale\"}},\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"37dc7045-574b-4f03-b399-fb9af4dc15d8\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f0f5dd01-155b-418f-a65f-b912be2ca5dc\",\"type\":\"Segment\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"b772b0d2-3275-464a-b343-7ab1e06918f7\",\"type\":\"Segment\"},\"selection_glyph\":null,\"view\":{\"id\":\"076ad1f8-1b40-495b-8ca3-c453de27af77\",\"type\":\"CDSView\"}},\"id\":\"bcddaa0e-be98-4e73-84d0-723a20d84767\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x0\",\"x1\",\"y1\"],\"data\":{\"x0\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"x1\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"y1\":{\"__ndarray__\":\"agY0pJzAIj+5HruOkrpaPxhg+EUm84E/aLV01ZlLnj+RETb72RKyP2/W4hhZQMA/sO3hsdfhxj/qT4VpOMXJPyTjFwQkWMc/SHyVdn25wD/olj2OirexP5jjk1TtzZQ/ANFOmIgJd7+WqSm1t1qHv3g83vctcHu/YByAgb+oQ7+aolZx8p9jP+4A2wfl4GE/QGxVFd2JRT+gFddfo3lAv57wf0CrXEi/ULowR88OOb9gIWo84yQHPzQui4htQi4/aLPU/ChqJz+QDYgeeJIEPxh97xz5bw2/YmDEau0nEr+cghc4OhABv3DYdXnNsdo+qGkZ6Koh9z5OTC240AXxPkBLgBQQtMo+svQavY6L1r4ggDpEyZTavoh6IVWLHsi+YOKlVRoMpj6nOFrH3frAPsQoPrrgVbg+QBHgFkdVkT6BE9Yxn9igvizzbzlMLKO+cCVffMzIkL6wa+k+/hJyPkwWvLwu04g+lB3U5odJgT6gMHA16sJVPgZXmySFM2m+ItbALTeia74oG08cSEJXvg==\",\"dtype\":\"float64\",\"shape\":[50]}}},\"id\":\"37dc7045-574b-4f03-b399-fb9af4dc15d8\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":\"Impulse response\"},\"id\":\"a32ea78c-584c-433a-8d81-60b3da91edaa\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2a43a191-728c-4432-8768-ad87c66745d9\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"493e7526-e315-4ebf-9d48-1860fa028c2d\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6424939a-c8fd-4f62-be44-e4d4f3afabfe\",\"type\":\"BasicTicker\"}},\"id\":\"4f8d9410-7a0d-4569-89e5-f5e9beb1398f\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"19cf1cad-0360-4174-a730-676fd270caf4\",\"type\":\"PanTool\"},{\"id\":\"e3a37ad3-7864-4e6b-81e6-bcd072751844\",\"type\":\"WheelZoomTool\"},{\"id\":\"6434ba54-c667-4e1b-a1ee-e8ffdd36e6e1\",\"type\":\"BoxZoomTool\"},{\"id\":\"be9962c1-321c-4135-92cb-209012f0c535\",\"type\":\"SaveTool\"},{\"id\":\"5be8acb7-d09e-402a-8590-3511d38bc726\",\"type\":\"ResetTool\"},{\"id\":\"596152fc-22bc-4fb8-93b8-5b8ad04bdbc6\",\"type\":\"HelpTool\"}]},\"id\":\"22b1bed1-d4f7-49df-8609-562dc98eeb7d\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"value\":0},\"y1\":{\"field\":\"y1\"}},\"id\":\"b772b0d2-3275-464a-b343-7ab1e06918f7\",\"type\":\"Segment\"},{\"attributes\":{\"axis_label\":\"n (samples)\",\"formatter\":{\"id\":\"fd931112-7544-4abc-ab1f-6786f716bee9\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6424939a-c8fd-4f62-be44-e4d4f3afabfe\",\"type\":\"BasicTicker\"}},\"id\":\"e763d31b-358a-4e2d-9a24-14ae7a62b2d5\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6424939a-c8fd-4f62-be44-e4d4f3afabfe\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Amplitude\",\"formatter\":{\"id\":\"1feb803e-2819-42e2-b79a-f654431066f5\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5791e767-a4a5-4227-8d28-f9c572788649\",\"type\":\"BasicTicker\"}},\"id\":\"27fd4390-6751-4cd7-9ff6-e0f03269ac50\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5791e767-a4a5-4227-8d28-f9c572788649\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5d11bf86-4f2f-48e7-be8c-2bb432b026ba\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5791e767-a4a5-4227-8d28-f9c572788649\",\"type\":\"BasicTicker\"}},\"id\":\"ae7913c1-a824-4943-9472-1bb8be673e4f\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1feb803e-2819-42e2-b79a-f654431066f5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"green\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"value\":0},\"y1\":{\"field\":\"y1\"}},\"id\":\"f0f5dd01-155b-418f-a65f-b912be2ca5dc\",\"type\":\"Segment\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"y\":{\"__ndarray__\":\"agY0pJzAIj+5HruOkrpaPxhg+EUm84E/aLV01ZlLnj+RETb72RKyP2/W4hhZQMA/sO3hsdfhxj/qT4VpOMXJPyTjFwQkWMc/SHyVdn25wD/olj2OirexP5jjk1TtzZQ/ANFOmIgJd7+WqSm1t1qHv3g83vctcHu/YByAgb+oQ7+aolZx8p9jP+4A2wfl4GE/QGxVFd2JRT+gFddfo3lAv57wf0CrXEi/ULowR88OOb9gIWo84yQHPzQui4htQi4/aLPU/ChqJz+QDYgeeJIEPxh97xz5bw2/YmDEau0nEr+cghc4OhABv3DYdXnNsdo+qGkZ6Koh9z5OTC240AXxPkBLgBQQtMo+svQavY6L1r4ggDpEyZTavoh6IVWLHsi+YOKlVRoMpj6nOFrH3frAPsQoPrrgVbg+QBHgFkdVkT6BE9Yxn9igvizzbzlMLKO+cCVffMzIkL6wa+k+/hJyPkwWvLwu04g+lB3U5odJgT6gMHA16sJVPgZXmySFM2m+ItbALTeia74oG08cSEJXvg==\",\"dtype\":\"float64\",\"shape\":[50]}}},\"id\":\"3a2d5348-726c-4228-af47-e632db772069\",\"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\":\"21e6514c-ca24-43e7-8f64-3781e11b25e9\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"19cf1cad-0360-4174-a730-676fd270caf4\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"darkred\"},\"line_color\":{\"value\":\"green\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"17f8a997-53bc-489f-bcbd-ef4a6aad5065\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"e3a37ad3-7864-4e6b-81e6-bcd072751844\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"21e6514c-ca24-43e7-8f64-3781e11b25e9\",\"type\":\"BoxAnnotation\"}},\"id\":\"6434ba54-c667-4e1b-a1ee-e8ffdd36e6e1\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"be9962c1-321c-4135-92cb-209012f0c535\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5be8acb7-d09e-402a-8590-3511d38bc726\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null},\"id\":\"465d1618-4e62-4fa8-986b-6f21e5ccf384\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"596152fc-22bc-4fb8-93b8-5b8ad04bdbc6\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"37dc7045-574b-4f03-b399-fb9af4dc15d8\",\"type\":\"ColumnDataSource\"}},\"id\":\"076ad1f8-1b40-495b-8ca3-c453de27af77\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"ddda25ee-0233-4cca-bd4e-ba0785687276\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"3a2d5348-726c-4228-af47-e632db772069\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"17f8a997-53bc-489f-bcbd-ef4a6aad5065\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5257601c-3f22-4f47-9641-c58117107da1\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"528b8cd5-8ec8-4c13-92cc-77979ae5f946\",\"type\":\"CDSView\"}},\"id\":\"8d95b981-1906-446e-98c9-8a59d504d039\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"fd931112-7544-4abc-ab1f-6786f716bee9\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"Step response\"},\"id\":\"f847933e-c03a-47e4-b6f6-448cf2db80a0\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x0\",\"x1\",\"y1\"],\"data\":{\"x0\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"x1\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"y1\":{\"__ndarray__\":\"agY0pJzAIj+Gn0EjphJdPwmUYAp7lYU/tn9SrSuLpD9sUd/Rb1i8PyV/0gGRbM4/ajbaWTSn2j8wb05H6MTjP/lnVEjxmuk/C8f5pVDJ7T/0vOD7IADwP4IMM7FYU/A/sb2aKE888D9eajC5mQ3wP0MYcRZT5O8/PLiQ5mjf7z/fDgLZCPPvP/D0BN90AvA/np+nGiYF8D+7pDvmFgPwP72U01ALAPA/Y0O+x/T87z8MNUtbUf3vP7+9I4I1/+8/hcVZElYA8D+VAko3fwDwP7bIV1dEAPA/STtEb/f/7z/rWlsus//vP6YXQofA/+8/2eeXyu7/7z8arBxrCADwP6qunsELAPA/Y/+6HgYA8D+pXBHz/v/vP2GHbuv4/+8/uywwTPr/7z+SnueK/v/vP+3a0coAAPA/SfcmEAEA8D+6/WGJAADwP903/9///+8/+tO4Wf//7z940N59///vP2uLK+H//+8/g9UoEwAA8D8QkJkYAADwP37N/wsAAPA/zmNd/P//7z/AP7zw///vPw==\",\"dtype\":\"float64\",\"shape\":[50]}}},\"id\":\"dc8fa8f0-903c-4b82-bc4f-aa391853c92c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"8d4bbd37-ef12-4774-9a8b-93ae90731629\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"571a86e3-df53-489d-9a2d-eb231fb6b3a5\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"plot_width\":350,\"renderers\":[{\"id\":\"8d4bbd37-ef12-4774-9a8b-93ae90731629\",\"type\":\"LinearAxis\"},{\"id\":\"ab8e9aaa-ac51-4584-98fb-289fa3136936\",\"type\":\"Grid\"},{\"id\":\"571a86e3-df53-489d-9a2d-eb231fb6b3a5\",\"type\":\"LinearAxis\"},{\"id\":\"aef7f423-2820-4801-8719-b9b601621eea\",\"type\":\"Grid\"},{\"id\":\"d1fb7e4c-d28e-4f88-bda9-bc89532abd0e\",\"type\":\"BoxAnnotation\"},{\"id\":\"25f4546e-0b02-4397-a104-6cfd5f221650\",\"type\":\"GlyphRenderer\"},{\"id\":\"000139e5-3551-4c09-bc38-1dae79b65083\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"f847933e-c03a-47e4-b6f6-448cf2db80a0\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"88881f80-642d-46f0-af04-773cccc3a257\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"a41a593f-e5eb-4e5e-974f-821b148a4021\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1a8240c1-b272-4b5d-b168-3a434239a402\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"6828d6fc-4e40-48cb-a00a-1a79a8a79f6a\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"d1835d4b-6b14-49b3-95bd-8ddc9aaff07f\",\"type\":\"LinearScale\"}},\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"3a2d5348-726c-4228-af47-e632db772069\",\"type\":\"ColumnDataSource\"}},\"id\":\"528b8cd5-8ec8-4c13-92cc-77979ae5f946\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5257601c-3f22-4f47-9641-c58117107da1\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"985045a8-1b93-413f-b3bb-55f1cc8b72e6\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1a8240c1-b272-4b5d-b168-3a434239a402\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null},\"id\":\"a41a593f-e5eb-4e5e-974f-821b148a4021\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"6828d6fc-4e40-48cb-a00a-1a79a8a79f6a\",\"type\":\"DataRange1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2600928e-1856-4558-b07b-af49dd100a55\",\"type\":\"PanTool\"},{\"id\":\"33afc0a8-a279-4295-8c15-23ced3efc902\",\"type\":\"WheelZoomTool\"},{\"id\":\"87c374ce-9228-4335-886d-42b1881ddc99\",\"type\":\"BoxZoomTool\"},{\"id\":\"fac92874-c160-49b3-8e1d-c427a44e2e71\",\"type\":\"SaveTool\"},{\"id\":\"5d1140b3-bcc2-4f8e-b92c-44f28bbb8db5\",\"type\":\"ResetTool\"},{\"id\":\"d1c6a6af-6bec-44a8-ab6c-b9584a69b888\",\"type\":\"HelpTool\"}]},\"id\":\"88881f80-642d-46f0-af04-773cccc3a257\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"value\":0},\"y1\":{\"field\":\"y1\"}},\"id\":\"e12111b8-628b-4c7c-b40f-4b7daa3950fe\",\"type\":\"Segment\"},{\"attributes\":{},\"id\":\"d1835d4b-6b14-49b3-95bd-8ddc9aaff07f\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"98228309-f416-4d19-b6ec-8e811a64a9cd\",\"type\":\"BasicTicker\"}},\"id\":\"ab8e9aaa-ac51-4584-98fb-289fa3136936\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"n (samples)\",\"formatter\":{\"id\":\"1b456923-ac08-410f-8537-dcc277b9d37c\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"98228309-f416-4d19-b6ec-8e811a64a9cd\",\"type\":\"BasicTicker\"}},\"id\":\"8d4bbd37-ef12-4774-9a8b-93ae90731629\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"98228309-f416-4d19-b6ec-8e811a64a9cd\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Amplitude\",\"formatter\":{\"id\":\"ddda25ee-0233-4cca-bd4e-ba0785687276\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"63022e7a-bb3e-4422-bb4e-63299a154e91\",\"type\":\"BasicTicker\"}},\"id\":\"571a86e3-df53-489d-9a2d-eb231fb6b3a5\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"63022e7a-bb3e-4422-bb4e-63299a154e91\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"968aeb10-dca1-49eb-97ac-3ad83f15b837\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"63022e7a-bb3e-4422-bb4e-63299a154e91\",\"type\":\"BasicTicker\"}},\"id\":\"aef7f423-2820-4801-8719-b9b601621eea\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1b456923-ac08-410f-8537-dcc277b9d37c\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":{\"value\":\"SteelBlue\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"value\":0},\"y1\":{\"field\":\"y1\"}},\"id\":\"b110a84f-488e-4e75-9b32-979c75e69c7d\",\"type\":\"Segment\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x\",\"y\"],\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],\"y\":{\"__ndarray__\":\"agY0pJzAIj+Gn0EjphJdPwmUYAp7lYU/tn9SrSuLpD9sUd/Rb1i8PyV/0gGRbM4/ajbaWTSn2j8wb05H6MTjP/lnVEjxmuk/C8f5pVDJ7T/0vOD7IADwP4IMM7FYU/A/sb2aKE888D9eajC5mQ3wP0MYcRZT5O8/PLiQ5mjf7z/fDgLZCPPvP/D0BN90AvA/np+nGiYF8D+7pDvmFgPwP72U01ALAPA/Y0O+x/T87z8MNUtbUf3vP7+9I4I1/+8/hcVZElYA8D+VAko3fwDwP7bIV1dEAPA/STtEb/f/7z/rWlsus//vP6YXQofA/+8/2eeXyu7/7z8arBxrCADwP6qunsELAPA/Y/+6HgYA8D+pXBHz/v/vP2GHbuv4/+8/uywwTPr/7z+SnueK/v/vP+3a0coAAPA/SfcmEAEA8D+6/WGJAADwP903/9///+8/+tO4Wf//7z940N59///vP2uLK+H//+8/g9UoEwAA8D8QkJkYAADwP37N/wsAAPA/zmNd/P//7z/AP7zw///vPw==\",\"dtype\":\"float64\",\"shape\":[50]}}},\"id\":\"74696295-5b70-45f1-8cf2-81137efb2533\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"dc8fa8f0-903c-4b82-bc4f-aa391853c92c\",\"type\":\"ColumnDataSource\"}},\"id\":\"77451cd5-1226-4114-9fa9-362add166f68\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2600928e-1856-4558-b07b-af49dd100a55\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"d1fb7e4c-d28e-4f88-bda9-bc89532abd0e\",\"type\":\"BoxAnnotation\"}},\"id\":\"87c374ce-9228-4335-886d-42b1881ddc99\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"33afc0a8-a279-4295-8c15-23ced3efc902\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"e26805e1-1f77-4af9-830c-2cb296739551\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n", " var render_items = [{\"docid\":\"77698ccc-397f-404f-a827-602092819eb7\",\"elementid\":\"f8cb3792-5fa6-4a52-8115-b46e38d4f7c5\",\"modelid\":\"e26805e1-1f77-4af9-830c-2cb296739551\"}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "e26805e1-1f77-4af9-830c-2cb296739551" } }, "output_type": "display_data" } ], "source": [ "from bokeh.models.tickers import AdaptiveTicker\n", "b, a = Filters['bessel']\n", "impulse = np.zeros(50); impulse[0] = 1\n", "x = np.arange(0, 50)\n", "response = signal.lfilter(b, a, impulse)\n", "step = np.cumsum(response)\n", "d1 = bk.figure(title=\"Impulse response\", plot_width=350, plot_height=400)\n", "d1.xaxis.axis_label = 'n (samples)'\n", "d1.yaxis.axis_label = 'Amplitude'\n", "d1.segment(range(len(response)), 0, range(len(response)), response,\n", " line_width=2, line_color=\"green\")\n", "d1.circle(range(len(response)), response,\n", " size=5, fill_color=\"darkred\", line_color=\"green\", line_width=1)\n", "d2 = bk.figure(title=\"Step response\", plot_width=350, plot_height=400)\n", "d2.xaxis.axis_label = 'n (samples)'\n", "d2.yaxis.axis_label = 'Amplitude'\n", "d2.segment(range(len(step)), 0, range(len(step)), step, \n", " line_width=2, line_color=\"SteelBlue\")\n", "d2.circle(range(len(step)), step, \n", " size=5, fill_color=\"orange\", line_color=\"SteelBlue\", line_width=1)\n", "\n", "bk.show(bk.gridplot([[d1, d2]]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "Visit [www.add-for.com]() for more tutorials and updates.\n", "\n", "This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License." ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:addfor_tutorials]", "language": "python", "name": "conda-env-addfor_tutorials-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }