{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "emotional-civilian",
   "metadata": {},
   "source": [
    "# Wilson plots generated from sparse datasets\n",
    "\n",
    "The input data comes from the sparsification of the zenodo dataset available at:\n",
    "https://zenodo.org/record/3834335"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "wireless-psychiatry",
   "metadata": {},
   "outputs": [],
   "source": [
    "filename=\"/mnt/data/jungfrau/sparse_512_3_0_2_fit_q2.h5\"\n",
    "import os, time\n",
    "os.chdir(os.path.dirname(filename))\n",
    "start_time = time.perf_counter()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "stopped-illinois",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib nbagg\n",
    "import json, pyFAI\n",
    "import hdf5plugin\n",
    "import h5py\n",
    "import numpy\n",
    "from ipywidgets import interact, interactive, fixed, interact_manual\n",
    "import ipywidgets as widgets\n",
    "from matplotlib.pyplot import subplots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "laughing-reservoir",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'background_avg': <HDF5 dataset \"background_avg\": shape (68, 512), type \"<f4\">,\n",
       " 'background_std': <HDF5 dataset \"background_std\": shape (68, 512), type \"<f4\">,\n",
       " 'dummy': <HDF5 dataset \"dummy\": shape (), type \"<f8\">,\n",
       " 'errors': <HDF5 dataset \"errors\": shape (68, 512), type \"<f4\">,\n",
       " 'frame_ptr': <HDF5 dataset \"frame_ptr\": shape (69,), type \"<u4\">,\n",
       " 'index': <HDF5 dataset \"index\": shape (19718956,), type \"<u4\">,\n",
       " 'intensity': <HDF5 dataset \"intensity\": shape (19718956,), type \"<f4\">,\n",
       " 'mask': <HDF5 dataset \"mask\": shape (16448, 1030), type \"<f4\">,\n",
       " 'radius': <HDF5 dataset \"radius\": shape (512,), type \"<f4\">,\n",
       " 'script': <HDF5 dataset \"script\": shape (), type \"|O\">}"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "root = h5py.File(filename, \"r\")\n",
    "de = root.attrs[\"default\"]\n",
    "entry = root[de]\n",
    "nx_data = entry[entry.attrs[\"default\"]]\n",
    "dict(nx_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "medical-elder",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([30.712418, 20.798264, 16.75206 , 14.411246], dtype=float32),\n",
       " array([1.2530575, 1.251828 , 1.2506021, 1.24938  ], dtype=float32))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "radius = nx_data[\"radius\"]\n",
    "I_bg = nx_data[\"background_avg\"]\n",
    "resolution = 10/numpy.sqrt(radius)\n",
    "resolution[:4],resolution[-4:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "designing-vertical",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nOzdd3wUdf4/8AlVvojtTk/vft7QEQUVUQ45FevhiRXBcnrqKaJ4yonKDYQSlSZF9KQqSO9dmBQSkpBACCRAOiEECCSEkJCQXja7O6/fH5sdWBIgYXZ2tryej8f8kcnuZ98hb/i8mPIZAURERETkUwSjCyAiIiIi12IAJCIiIvIxDIBEREREPoYBkIiIiMjHMAASERER+RgGQCIiIiIfwwBIRERE5GMYAImIiIh8DAMgERERkY9hACQiIiLyMQyARERERD6GAZCIiIjIxzAAEhEREfkYBkAiIiIiH8MASERERORjGACJiIiIfAwDIBEREZGPYQAkIiIi8jEMgEREREQ+hgGQiIiIyMcwABIRERH5GAZAIiIiIh/DAEhERETkYxgAiYiIiHwMAyARERGRj2EAJCIiIvIxDIBEREREPoYBkIiIiMjHMAASERER+RgGQCIiIiIfwwBIRERE5GMYAImIiIh8DAMgERERkY9hACQiIiLyMQyARERERD6GAZCIiIjIxzAAEmm0YcMGCIKAtWvX1vvevffeC0EQEBISUu97HTt2RK9evQAAkZGREAQBkZGR6vcDAgIgCO77V7SxNYuiiIEDB7q4uoZp+TNdtWoVfvjhBydXpF1RURFef/113HrrrRAEAS+99JLRJenm5ptvxoIFCwAAhw4dgiAIyMrKqve62tpafP311xBFEa1atUK3bt3w008/ubhaIvfmvrMLkYc4d+4c/Pz88NFHHznsLyoqgp+fH9q2bQtJkhy+l5OTA0EQ8MUXXwAASktLERsbi9LSUvU1nhgAc3JyEBsb6/A6bwmAAwcOhCiKzi3ICT7//HO0atUKK1euRGxsLDIyMowuSReZmZkQBAEJCQkAgHnz5uHWW29t8LVDhw5F69atMX36dERGRmL06NHw8/PD5MmTXVkykVtz39mFyIP07NkT3bp1c9i3efNmtGzZEiNGjECfPn0cvrd8+XIIgoDt27dfdkxPDIANYQDU19NPP43u3btf9XUWiwU1NTUuqEgfq1evxv/93//BbDYDAN55550G+yo1NRV+fn6YMmWKw/4PP/wQbdq0QVFRkUvqJXJ37ju7EHmQESNGQBAEnDlzxmFfv379EBISgubNm6OsrEz93vvvv4/m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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = subplots()\n",
    "ax.plot(radius, numpy.log(I_bg[0]))\n",
    "ax.set_ylabel(\"$log(\\overline{I_{bg}})$\")\n",
    "ax.set_xlabel(\"$d^*² (nm^{-2})$\")\n",
    "ax.set_title(\"Wilson-like plot on frame #0\")\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fancy-orleans",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Frame index with largest number of pixel recorded: 1\n"
     ]
    }
   ],
   "source": [
    "frame_ptr = nx_data[\"frame_ptr\"]\n",
    "npix = frame_ptr[1:]-frame_ptr[:-1]\n",
    "fig,ax = subplots()\n",
    "ax.plot(npix)\n",
    "ax.set_xlabel(\"Frame number\")\n",
    "ax.set_ylabel(\"Number of recorded pixels\")\n",
    "ax.set_title(\"Number of peaks per frame\")\n",
    "frame = numpy.argmax(npix)\n",
    "print(f\"Frame index with largest number of pixel recorded: {frame}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "weird-newport",
   "metadata": {},
   "outputs": [],
   "source": [
    "mask = nx_data[\"mask\"]\n",
    "shape = mask.shape\n",
    "size = numpy.prod(shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "weird-dominican",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nOzdd3wUdf4/8AlNOMR2p6fezxuQoiigiHKIBcvd4dlQFMuh4lc9TlA5EbmhR6RJETkFROldOsKkkJAEQiAkgVRCGiQkIQnpve/O6/fHJgNrAiTMzs6W1/PxmMfJZvez75D35fNidubzEUBEREREbkUwugAiIiIisi8GQCIiIiI3wwBIRERE5GYYAImIiIjcDAMgERERkZthACQiIiJyMwyARERERG6GAZCIiIjIzTAAEhEREbkZBkAiIiIiN8MASERERORmGACJiIiI3AwDIBEREZGbYQAkIiIicjMMgERERERuhgGQiIiIyM0wABIRERG5GQZAIiIiIjfDAEhERETkZhgAiYiIiNwMAyARERGRm2EAJCIiInIzDIBEREREboYBkIiIiMjNMAASERERuRkGQCIiIiI3wwBIRERE5GYYAImIiIjcDAMgERERkZthACQiIiJyMwyARERERG6GAZCIiIjIzTAAEhEREbkZBkAiIiIiN8MASERERORmGACJiIiI3AwDIJFGO3bsgCAI+OWXX5p8rV+/fhAEAb6+vk2+dvfdd6N///4AgKCgIAiCgKCgIPXrnp6eEATH/b9oS2sWRREvvPCCnatrnpa/082bN+O7776zcUXaFRYW4s0338Stt94KQRAwbNgwo0vSzc0334wVK1YAACIjIyEIAtLS0po8b+rUqXjhhRdw5513QhAEjBo1yr6FEjkBx51diJxEfn4+PDw88O9//9vq8cLCQnh4eKBz586QJMnqa5mZmRAEAV988QUAoLS0FKGhoSgtLVWf44wBMDMzE6GhoVbPc5UA+MILL0AURdsWZAOff/45OnTogE2bNiE0NBRJSUlGl6SLlJQUCIKAqKgoAMDy5ctx6623Nvvc3/3udxg0aBA+/vhjdOjQgQGQqBmOO7sQOZG+ffvinnvusXps9+7daN++PcaNG4eBAwdafW3Dhg0QBAH79++/7JjOGACbwwCor7/+9a/o3bv3VZ9nMplQU1Njh4r0sWXLFvzud79DfX09AOC99967bF+ZzWb1vzt37swASNQMx51diJzIuHHjIAgCsrOzrR4bPHgwfH190bZtW5SVlalf++CDD9C2bVuUlJQAaPnHqQEBARgyZAhuueUWdOzYEXfd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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nticks = 7\n",
    "fig, ax = subplots()\n",
    "ax.plot(radius, numpy.log(I_bg[frame]), label=\"Background\")\n",
    "tick_value = numpy.linspace(radius[0], radius[-1], nticks)\n",
    "ax.set_xticks(tick_value)\n",
    "tick_label = [f\"{10/numpy.sqrt(i) if i>0 else numpy.NaN:6.4f}\" for i in tick_value]\n",
    "ax.set_xticklabels(tick_label)\n",
    "ax.set_xlabel(\"Resolution ($\\mathrm{\\AA}$)\")\n",
    "ax.set_ylabel(\"$log(\\overline{I_{bg}})$\")\n",
    "ax.set_title(f\"Wilson-like plot on frame #{frame}\")\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "specialized-pattern",
   "metadata": {},
   "outputs": [],
   "source": [
    "indexes = nx_data[\"index\"][frame_ptr[frame]:frame_ptr[frame+1]]\n",
    "intensities= nx_data[\"intensity\"][frame_ptr[frame]:frame_ptr[frame+1]]\n",
    "signal = numpy.zeros(size)\n",
    "norm = numpy.zeros(size)\n",
    "signal[indexes] = intensities\n",
    "norm[indexes] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "confused-cleaners",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 8.96 s, sys: 759 ms, total: 9.72 s\n",
      "Wall time: 4.74 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "sparsify = nx_data.parent[\"sparsify\"]\n",
    "config = json.loads(sparsify[\"configuration/data\"][()])\n",
    "ai = pyFAI.load(config[\"geometry\"])\n",
    "engine = ai.setup_sparse_integrator(shape=ai.detector.shape,\n",
    "                      npt=resolution.size, \n",
    "                      mask=numpy.logical_not(numpy.isfinite(mask)), \n",
    "                      unit=\"d*2_nm^-2\",\n",
    "                      split='no',\n",
    "                      algo='CSR',\n",
    "                      scale=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "popular-munich",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<512x16941440 sparse matrix of type '<class 'numpy.float32'>'\n",
       "\twith 15779791 stored elements in Compressed Sparse Row format>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy.sparse import csr as csr_module\n",
    "csr = csr_module.csr_matrix(engine.lut, shape=(resolution.size, size))\n",
    "csr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "severe-outreach",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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bx+SkpKQnJyc7bNQTNmTkpOTkZSUhH379mH37t2Wzp75/Q5jAXjjxg00a9YMJUqUQJ48eVCyZEm0aNHCJ6/gHECEEBIcpKSkYOfOnbh69Wp2d4UECVevXsXOnTuRkpLico3f7zAWgK1atUKBAgUwY8YMHDp0CAkJCbj77rvRtWtXr9vgACKEkOBACkCrjz0JTzyNCX6/w1gAVq9eHZ9++qkpr1atWvjggw+8boMDiBBCggMKQOIMBaBnwlYAtm3bFnFxcdizZw8AYPPmzShUqBBGjx7tdRscQIQQEhxQAHomLi4OXbp0ye5uZClDhgxBbGys2+sUgJ4JWwGYkZGBpk2bIiIiAjlz5kRERATatGnjsc61a9csYwmG8wAihJBgIJQFYP369WEYhiPlz58fr776KrZs2ZJl96AANEMBGMYCcMyYMShWrBjGjBmDrVu3Yvjw4cifPz+GDh3qto7dbjf9RypTOA8gQggJBkJdAFarVg2nTp3CqVOnsGnTJlSvXh3FixfPsnvcDgHozsVKoKAA9I+wFYDFihVDz549TXktW7bEo48+6rYOZwAJISQ4CXUBWKNGDVPeX3/9BcMwcObMGQDATz/9hIcffhjR0dEoWbIkfvvtN1y/ft1UZ+rUqahYsSJy586NAgUK4K233nJccxaAgwcPhs1mw7x58wAAly5dwvvvv4+77roLhQsXRufOnREfH49vv/3W1EbLli1Rv3592Gw2fPTRRwCACRMm4LHHHkOuXLkQFxeHjh07mvplGAYmT55syouNjcWQIUMAAIcOHYJhGJg4cSJeeuklREdHo1y5cli5cqWpzpAhQ1C8eHFER0ejZs2a6NixIwWgH4StAMyfPz969+5tymvTpg0efvhhr9vgACKEkODA+WOfkZGBq6k3siV5ikBhhbMAvHz5Mj777DM89NBDDtdkLVu2xIoVK3Do0CFMmzYN9913H9q1a+eoM2PGDERGRuJ///sfdu7cic2bN6N169aO67oA7NChA/Lnz49Vq1Y5rjds2BBxcXFYsGABtm3bhrfeegt58+Z1EYA2mw0dOnTAvn37sG/fPqxfvx45cuTAH3/8gT179mDIkCGIjo52iDvAewFYunRpzJgxA3v27ME777yDuLg43LhxAwCwevVqREREoG3bttizZw+6deuGfPnyUQD6QdgKwPr166No0aIONzCT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vab6JY6AgAA89thjaNOmDXr27GnUAxEQBoIW/6+GDRtW6/Azjv4yre33w9Sxys/Px2233YZ169aZLbe2YyWO89mqVSt07doVb731ltl7WkWN7VgtXLgQvXr1gouLC+666y489dRTRp23zA22bjiu4u7du9GzZ0+0bt0anTt3xoQJE2Qn+tLSUrz44ovo1KkTWrVqhQceeABubm5ITU215+GoUV2P1W+//YZBgwbh9ttvh6urK4YOHYrVq1cbDeBcW72qPrBxz549MW3atBr/mHd0vQLqfrzMTYJg7qqQWEb17/ja6pYpDeF4NQQMgEREREROhgGQiIiIyMkwABIRERE5GQZAIiIiIifDAEhERETkZBgAiYiIiJwMAyARERGRk2EAJCIiInIyDIBEREREToYBkIiIiMjJMAASETUya9asQbdu3fDcc8/h6tWrjt4dImqEGACJiBqRwsJCdOnSBQEBAZg4cSJ+/PFHR+8SETVCDIBE1OSNGjUKkydPbnBl1SQnJwedOnVCUlKSbL1Go8GAAQNw/fp1LFy4EAsWLJA9//bbb2PJkiV23z8iatwYAInIrtzc3KBQKKBQKNCiRQvcf//9+Oqrr3Djxo1624dbCW3mXpObm4vCwkJb7ZpZP/zwAz799FOTzy1atAjNmzfH3XffjfLyctlz4eHh6NChAwoKCuy+j0TUeDEAEpFdubm54aWXXkJWVhbS0tJw7NgxdOvWxpH/GQAABdpJREFUDf/617/qbR9sGQDrQ2lpKe68804EBASYfP7NN9/E5MmTcdtttyE8PNzo+WHDhmH16tX23k0iasQYAInIrtzc3DB27FjZuu+//x4dOnSQHut0OixcuBA9evSAi4sLHnroIezZs0f2mj179mDw4MFwcXFBhw4dMHr0aBQXFwMAysvLMXHiRHTq1Alt2rTBk08+icDAQOm11cOcUqnEsmXLZOUPGTIEHh4e0j6LrZbiIl6KNSyrtvcVt584cSL+97//4a677sK9994rvY85+/btQ8eOHU0+l52djVatWiEmJgbvvfcevv32W6Ntfv75Zzz99NM1vgcROTcGQCKyq+oBMCEhAQMHDsS9994rrZs6dSr69++Po0ePIiEhAZs3b0abNm3g5+cHAMjMzETLli2xdOlSJCUlISIiAqtWrUJRUREAYNKkSejatSu8vLxw6dIluLm54a677kJubi6AugfA/Px8PPHEExg3bhyysrKQlZUFrVZrVFZt7ytu7+rqip9//hlxcXHYunUrmjVrBm9vb7PHbPLkyXjppZdMPrd06VI88sgjAIDDhw+jU6dOqKiokG3j5eWFNm3aGF0eJiISMQASkV25ubmhRYsWaNu2LVxcXKQWtaVLlwIAiouL4eLiYnS587PPPsP7778PALh48SIUCgWSk5ONyi8uLkarVq2wfft2aV1FRQW6du2KRYsWAah7ADT1murrLXlfcfunnnpKVsajjz4KlUpl+oABGDt2rNn7/x588EEsX74cAFBZWYmOHTti//79sm3Cw8PNHi8iIoABkIjszM3NDc8//zzi4+MRHh6OiRMnYsyYMaisrAQABAYGQqFQoG3btrKlVatWGDFiBABAq9Vi9OjRaNeuHd555x2sW7dO6kRiLuy8+eab+M9//gPAPgHQkvcVtx8/frxsmzfeeEO2TXUvvvii0WsAIDg4GC1atJCN/TdhwgS8/vrrsu3i4uKgUChw+fJls+9BRM6NAZCI7MrUPYDPPPMMpk+fDgA4f/48FAoF/Pz8EB8fL1tSU1Ol1+h0Opw5cwYzZszAgw8+iE6dOiExMRFhYWFQKBRISUmRvYdhK1r1MNejRw+pBVI0cODAOgVAS97XXDljx46Fm5ubuUOGDz74QGr9NDRhwgSpN7W4NG/eHC1btkRWVpa0nXhMr1+/bvY9iMi5MQASkV2ZCoC+vr5wcXFBRkYGCgsL0aZNG2zbts3iMrVaLbp164YlS5aguLgYrVu3NroU261bNyxevBiAcQgbMWIE/ve//0mPCwoKcNttt8kC4AsvvIBvvvnG6L0NLwHX9r6m3huoPQAuXrwYQ4YMka0rLy9Hhw4dsGTJEkRGRsqWvn37yt5zw4YNuO+++8yWT0TEAEhEdmUqAALA8OHDMWHCBADAtGnTcPfdd2PLli24cuUKQkJCsHLlSmzZsgWA0KI1d+5cBAUFISUlBX/99Rdat24NLy8vAEKnia5du+LIkSOyzhjiZeLqIczd3R2dO3eGv78/IiMj8eabb+KOO+6QBcBx48bh0UcfRVJSEq5fv46qqiqjsmp7X1PvDdQeACMiItCyZUtZObt370br1q2Rn59vtP3UqVMxcOBA2TE3dw8hERHAAEhEdmYuAG7fvh2tW7dGamoqdDodfv31V/Tr1w+tWrVCp06dMGbMGJw6dQoAcPnyZYwZM0YabqVv375YsWKFVFZZWRkmTpyIjh07WjQMTEFBAd599124urri/vvvx5YtW4zuAYyNjcXjjz+O2267zewwMLW9r6n3BmoPgADw+OOPY82aNdLjl156Ca+88orJbcVOMufPn0dZWRlcXV1x7ty5GssnIufGAEhE1AB5enpiwIABUsujpVauXIkXXnjBTntFRE0FAyARUQO1fPlyWUcYS6xduxYxMTF22iMiaioYAImIiIicDAMgERERkZNhACQiIiJyMgyARERERE6GAZCIiIjIyTAAEhERETkZBkAiIiIiJ/P/gCtYuryI+FQAAAAASUVORK5CYII=\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nticks = 7\n",
    "fig, ax = subplots()\n",
    "ax.plot(radius, numpy.log(I_bg[frame]), label=\"Background\")\n",
    "tick_value = numpy.linspace(radius[0], radius[-1], nticks)\n",
    "ax.set_xticks(tick_value)\n",
    "tick_label = [f\"{10/numpy.sqrt(i) if i>0 else numpy.NaN:6.4f}\" for i in tick_value]\n",
    "ax.set_xticklabels(tick_label)\n",
    "ax.set_xlabel(\"Resolution ($\\mathrm{\\AA}$)\")\n",
    "#ax.plot(radius, numpy.log(csr.dot(signal)/csr.dot(norm)-I_bg[frame]), label=\"Peaks-Background\")\n",
    "ax.plot(radius, numpy.log(csr.dot(signal)/csr.dot(norm)), label=\"Peaks\")\n",
    "ax.set_ylabel(\"$log(\\overline{I})$\")\n",
    "ax.legend()\n",
    "ax.set_title(f\"Wilson-like plot for frame #{frame}\")\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "ecological-press",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Widget Javascript not detected.  It may not be installed or enabled properly. Reconnecting the current kernel may help.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5fcd9667f98649f19c135ffaa27c071c"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def update_plot(frame):\n",
    "    ax.set_title(f\"Wilson-like plot for frame #{frame}\")\n",
    "    ax.lines[0].set_data(radius, numpy.log(I_bg[frame]))\n",
    "    signal = numpy.zeros(size)\n",
    "    norm = numpy.zeros(size)\n",
    "    indexes = nx_data[\"index\"][frame_ptr[frame]:frame_ptr[frame+1]]\n",
    "    intensities= nx_data[\"intensity\"][frame_ptr[frame]:frame_ptr[frame+1]]\n",
    "    signal[indexes] = intensities\n",
    "    norm[indexes] = 1\n",
    "    #ax.lines[0].set_data(radius, numpy.log(csr.dot(signal)/csr.dot(norm)-I_bg[frame]))\n",
    "    ax.lines[1].set_data(radius, numpy.log(csr.dot(signal)/csr.dot(norm)))\n",
    "    return frame\n",
    "interact(update_plot, frame=widgets.IntSlider(min=0, max=len(npix)-1, step=1, value=1));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "related-rider",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total execution time: 55.292 s\n"
     ]
    }
   ],
   "source": [
    "root.close()\n",
    "print(f\"Total execution time: {time.perf_counter()-start_time:6.3f} s\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.1+"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}