{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "intensive-failure",
   "metadata": {},
   "source": [
    "# Error model validator\n",
    "\n",
    "Build a set of data with a known statistical distribution and validate the error propagation by ensuring the integrated data follow the 𝜒² distribution.\n",
    "\n",
    "This requires plenty of memory and is pretty compute intensive."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "broadband-priority",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/usr/bin/python3 3.9.1+ (default, Feb  5 2021, 13:46:56) \n",
      "[GCC 10.2.1 20210110]\n"
     ]
    }
   ],
   "source": [
    "%matplotlib nbagg\n",
    "import time\n",
    "start_time = time.perf_counter()\n",
    "import sys\n",
    "print(sys.executable, sys.version)\n",
    "import numpy\n",
    "from scipy.stats import chi2 as chi2_dist\n",
    "from matplotlib.pyplot import subplots\n",
    "from pyFAI.method_registry import IntegrationMethod"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "broken-archive",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min, sys: 1.65 s, total: 1min 2s\n",
      "Wall time: 1min 1s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "108"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyFAI.detectors import Detector\n",
    "from pyFAI.azimuthalIntegrator import AzimuthalIntegrator\n",
    "from pyFAI.units import to_unit\n",
    "\n",
    "class Validator:\n",
    "    def __init__(self, nimg = 100, npt=700, shape = (1024, 1024), pix = 100e-6, I0=1e4):\n",
    "        self.pix = pix\n",
    "        self.shape = shape\n",
    "        self.npt = npt\n",
    "        self.nimg = nimg\n",
    "        self.I0 = I0\n",
    "        self.unit = to_unit(\"r_mm\")\n",
    "        self._ai = None\n",
    "        self._img = None\n",
    "        self._dataset = None\n",
    "    \n",
    "    @property\n",
    "    def ai(self):\n",
    "        if self._ai is None:\n",
    "            detector = Detector(self.pix, self.pix)\n",
    "            detector.shape=detector.max_shape=self.shape\n",
    "            self._ai = AzimuthalIntegrator(dist=1.0, detector=detector)\n",
    "        return self._ai\n",
    "    \n",
    "    def build_image(self):\n",
    "        \"Reconstruction of diffusion image\"\n",
    "        r_max = self.ai.detector.get_pixel_corners().max(axis=(0,1,2))\n",
    "        r = numpy.linspace(0, 50*numpy.dot(r_max,r_max)**0.5, self.npt)\n",
    "        I = self.I0/(1.0+r*r) #Lorentzian shape\n",
    "                                                         \n",
    "        img = self.ai.calcfrom1d(r, I, dim1_unit=self.unit, \n",
    "                            correctSolidAngle=False, \n",
    "                            polarization_factor=None)\n",
    "        return img\n",
    "    \n",
    "    @property\n",
    "    def img(self):\n",
    "        if self._img is None:\n",
    "            self._img = self.build_image()\n",
    "        return self._img\n",
    "    \n",
    "    def build_dataset(self):\n",
    "        return numpy.random.poisson(self.img, (self.nimg,) + self.shape)\n",
    "    \n",
    "    @property\n",
    "    def dataset(self):\n",
    "        if self._dataset is None:\n",
    "            self._dataset = self.build_dataset()\n",
    "        return self._dataset\n",
    "    \n",
    "    @staticmethod\n",
    "    def chi2(res1, res2):\n",
    "        \"\"\"Calculate the 𝜒² value for a pair of 1d integrated data\"\"\"\n",
    "        I = res1.intensity\n",
    "        J = res2.intensity\n",
    "        l = len(I)\n",
    "        assert len(J) == l\n",
    "        sigma_I = res1.sigma\n",
    "        sigma_J = res2.sigma\n",
    "        return ((I-J)**2/(sigma_I**2+sigma_J**2)).sum()/(l-1)\n",
    "    \n",
    "    \n",
    "    def plot_distribution(self, kwargs, nbins=100, integrate=None, ax=None, label=\"Integrated curves\" ):\n",
    "        ai = self.ai\n",
    "        dataset = self.dataset\n",
    "        ai.reset()\n",
    "        results = []\n",
    "        c2 = []\n",
    "        kwargs = kwargs.copy()\n",
    "        if integrate is None:\n",
    "            integrate = ai.integrate1d_ng\n",
    "        t0 = time.perf_counter()\n",
    "        if \"npt\" in kwargs:\n",
    "            npt = kwargs[\"npt\"]\n",
    "        else:\n",
    "            npt = kwargs[\"npt\"] = self.npt\n",
    "            \n",
    "        if \"unit\" not in kwargs:\n",
    "            kwargs[\"unit\"] = self.unit\n",
    "        for i in range(self.nimg):\n",
    "            data = dataset[i, :, :]\n",
    "            r = integrate(data, **kwargs)\n",
    "            results.append(r)    \n",
    "            for j in results[:i]:\n",
    "                c2.append(self.chi2(r, j))\n",
    "        print(f\"Integration speed: {self.nimg/(time.perf_counter()-t0):6.3f} fps\")\n",
    "        c2 = numpy.array(c2)\n",
    "        if ax is None:\n",
    "            fig, ax = subplots()\n",
    "        h,b,_ = ax.hist(c2, nbins, label=\"Measured distibution\")\n",
    "        y_sim = chi2_dist.pdf(b*(npt-1), npt)\n",
    "        y_sim *= h.sum()/y_sim.sum()\n",
    "        ax.plot(b, y_sim, label=r\"Chi^2 distribution\")\n",
    "        ax.set_title(label)\n",
    "        ax.legend()\n",
    "        return ax\n",
    "\n",
    "# kwarg = {\"npt\":npt, \n",
    "#          \"correctSolidAngle\":False, \n",
    "#          \"polarization_factor\":None,\n",
    "#          \"safe\":False}\n",
    "validator = Validator(nimg = 1000)\n",
    "%time validator.dataset.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "tight-maintenance",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, no split, CSR, python)\n"
     ]
    },
    {
     "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,iVBORw0KGgoAAAANSUhEUgAAA+gAAAGQCAYAAAA9TUphAAAgAElEQVR4nOzdeVxU9f4/8IMFKMJBUSyVxMqtRK3rLbO68XM3JbW9e7XIylLDlm8L+5ys0DbN6mqrW4trpuUSaoncDFzBLcQlAYfFDQRR2QZevz+OjI7MwMw4h3OY83o+Hp9HD2cOM8Pn9HkvzFkEEBEREREREZHqBLU/ABERERERERGxQSciIiIiIiLSBDboRERERERERBrABp2IiIiIiIhIA9igExEREREREWkAG3QiIiIiIiIiDWCDTkRERERERKQBbNCJiIiIiIiINIANOhEREREREZEGsEEnIiIiIiIi0gA26EREREREREQawAadiIiIiIiISAPYoBMRERERERFpABt0IiIiIiIiIg1gg05ERERERESkAWzQiYiIiIiIiDSADToRERERERGRBrBBJyIiIiIiItIANuhEREREREREGsAGnYiIiIiIiEgD2KATERERERERaQAbdCIiIiIiIiINYINOREREREREpAFs0ImIiIiIiIg0gA06ERERERERkQawQSciIiIiIiLSADboRERERERERBrABp2INCE8PBzBwcFqfwwiInJjSUlJEAQBSUlJqrz/7NmzMX/+/DqP136u5cuXu+y95s+fD0EQkJWV5bLXJCLlsUEnIk04cuQI0tLS1P4YRETkxkpKSpCamoqSkhJV3r9nz54IDQ2t8zgbdCKqxQadiIiIiKgRsEEnooawQScip0iSBEEQkJaWhgcffBB+fn4QRRFjx47FyZMnzdtVV1fj/fffR/fu3eHl5YXAwEA8+eSTMBqNFq9n7RD3ZcuW4c4774QoimjRogVuvPFGjB8/3uK133nnHXTr1g3NmzeHv78/evXqhVmzZlm8zh9//IGBAwfC19cXLVq0QP/+/bFmzRqLbWoLmU2bNmHixIlo06YNAgIC8OCDDyIvL89Fs0ZERI46fPgwnn76aXTp0gUtWrRAhw4dEBYWhr1791psFxoaCkEQrI7aw8qtHeIeHh6Oli1b4sCBAxg6dCh8fHxw/fXXY/r06QCA1NRU3HPPPfDx8UHXrl2xYMECi/etzYdXurJBDg4OrvO5avNe7edatGgRYmJi0L59e/j5+WHQoEHIzMy0eN0NGzZg1KhR6NixI7y9vXHzzTfj+eefx6lTp+p9fyJqGtigE5FTaguS4OBgvPHGG1i/fj1mzpyJli1b4vbbb0dlZSUA4Pnnn4cgCIiIiEBiYiK++OILBAYG4oYbbrAoJq5s0FNSUuDh4YEnnngC69atw6ZNmzB//nw8+eST5m2mT5+Oa665BpIk4ffff0diYiJmzZqFt956y7zN5s2b4enpib59+2Lp0qVYtWoVhg4dCg8PDyxZssS8XW0hc9NNN2HKlClYv349vvnmG7Ru3RoDBgxQcCaJiKg+ycnJeO211/Djjz8iOTkZK1euxJgxY9CiRQuL5vWvv/5CamqqxRg8eDCuueYapKSkALDdoHt5eeGWW27BJ598go0bN2L8+PEQBAHR0dHo1q0b5s6di/Xr1yMsLAyCIGDnzp3mn7e3QU9LS8NNN92E22+/3fz5ak/tqv1cnTt3xtixY7F27VosXrwYnTp1QteuXWEymcyv+/nnn2P69On45ZdfkJycjIULF6JPnz7o3r27Ofdae38iahrYoBORU2oLkldffdXi8R9++AGCIOD777/HgQMHIAgCJk+ebLHNtm3bIAgCYmJizI9d2aB/9NFHEAQBxcXFNj9DWFgYbrvttno/51133YV27dqhtLTU/JjJZEJISAiCgoJQU1MD4FIhc+Vn/eCDDyAIAgoKCup9HyIiahwmkwmVlZXo2rVrnRx0uQ8//BCCIOCrr74yP2arQRcEAStWrDA/VlVVhcDAQPORYrUKCwtxzTXX4P/+7//Mj9nboAMNH+I+YsQIi8eXLVsGQRCQmppq9XesqalBVVUVcnJyIAgCfv7553rfn4i0jw06ETmltiC5/FsEQC5qrr32Wjz77LOYM2cOBEHA9u3b6/z8Lbfcgn79+pn/fWWDnpycDEEQMHToUCxduhS5ubl1XuPtt9+Gh4cHJk2ahMTExDoX/Tl37hw8PDzqNN0A8P7770MQBBw4cADApUImMTHRYrvExEQIgoCtW7c2PClERORyVVVVSEhIwC233AJPT0+LQ8SHDx9u9WcWLVoEDw8PxMXFWTxuq0H38PBAWVmZxbb9+/dH+/bt67x2+/bt8fDDD5v/7coG/YsvvrB4PDMzE4IgWBzxdeLECbzwwgsICgpCs2bNLObjvffeq/f9iUj72KATkVNqCxJrjfN1112HMWPG4J133oEgCHXONweAQYMGoUuXLuZ/WzsHfdWqVRg4cCC8vb0hCAJ69uyJRYsWmZ+vqqrCjBkzcPvtt8PDwwPXXnstBg4ciB07dgAAjEYjBEHAO++8U+f9v/vuOwiCgC1btgC4VMjU/mwttW/JQ0Skd1OmTEGzZs0QHR2NxMREbNu2DTt27ECfPn2sNrubNm2Cl5cXwsPD6zxX3znoVwoNDUXPnj3rPB4cHIyRI0ea/+3KBv3Ki8RlZWVZnENfXV2NPn36IDAwEJ9++imSkpKwfft2bN26FYIgQJKket+fiLSPDToROcUV36Dfdddd5n/Xdx/08vJybN68GcOGDYMgCOZzCS935swZLF++HF27dkVAQADOnz+Pc+fOoVmzZvV+g157/iIbdCIibWrdujWefvrpOo937NixTrO7Z88eiKKIIUOGWJyPXUuJBn369OkQBAHl5eUW29UeYu/KBn3Pnj0QBKHOheoOHz7MBp3ITbBBJyKnNHQO+nfffWc+NO+ll16y2Gb79u0QBAGxsbHmx+pr0Gvt3r0bgiBg9uzZNreZNWsWBEHAX3/9BUA+RPH666/HhQsXzNtUV1ejV69eVs9BZ4NORKQtAQEBeOGFFyweW7NmDQRBsGh2c3Jy0KFDB9x22204e/as1ddSokFfvHix1T9G33fffXUa5H/84x+48847bX6uhhr0vXv3QhAELF682GK7119/nQ06kZtgg05ETrnyKu4bNmzAxx9/DF9fX/Tp0wcVFRUA5Ku4e3h44JVXXsH69evx5Zdfol27drjhhhtw+vRp8+td2aDHx8dj/Pjx+P7777F582asWrUKAwYMgKenJ/bv3w9AvkhcVFSU+cq+3377LTp37ozg4GDzNye1V3Hv168fli9fjp9//hnDhg2zeRV3NuhERNry1FNPwdvbGx9//DF+//13fPDBBwgMDERQUJBFg37rrbfCx8cHP/30U52rudfe/lOJBr2kpAQBAQHo1asXVq5cidWrV+Phhx/GjTfeWKdBDg8Ph7e3N5YsWYLt27ebbxVnb4NeWVmJm2++GcHBwVi0aBESExPx4osvolu3bmzQidwEG3Qickptg75r1y488MAD8PX1hZ+fH/7973/jxIkT5u1q74PerVs3eHp6om3bthg3blyD90Ffs2YN7r//fnTs2BFeXl5o164dRowYgT/++MO8zYwZM3D33Xejbdu28PLyQqdOnfDss88iOzvb4rVr74PesmVLtGjRAnfd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e/aE6vDhw7L+F8gh2MPYwwD2MID9qwT7F1mJB3SKmgkTJqB+/fqoXLkyWrdujTVr1oT+rHfv3mjfvn2px48fPx7NmjVD1apVUbt2bfTs2RO7d++O8rOOLDNjkJWVhauvvhpVq1aFpmno3r07Nm/eLOFZR86qVavgcrnKVO/evQGUPw9Wr16Na665BpUrV0aDBg0wadKk6D/xCKvIOJT3+Pr160f9uUeS2XFo3779Hz6eyErsYexh7GHsXyXYv8hKPKATERERERERKYAHdCIiIiIiIiIF8IBOREREREREpAAe0ImIiIiIiIgUwAM6ERERERERkQJ4QCciIiIiIiJSAA/oRERERERERArgAZ2IiIiIiIhIATygExERERERESmAB3QiIiIiIiIiBfCATkRERERERKQAHtCJiIiIiIiIFMADOhEREREREZECeEAnIiIiIiIiUgAP6EREREREREQK4AGdiIiIiIiISAE8oBMREREREREpgAd0IiIiIiIiIgXwgE5ERERERESkAB7QiYiIiIiIiBTAAzoRERERERGRAnhAJyIiIiIiIlIAD+hERERERERECvh/82gwnxvp/yIAAAAASUVORK5CYII=\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n",
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 37.185 fps\n",
      "Integration speed: 30.600 fps\n"
     ]
    }
   ],
   "source": [
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"no\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"python\")[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "lyric-glory",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, bbox split, CSR, python)\n"
     ]
    },
    {
     "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,iVBORw0KGgoAAAANSUhEUgAAA+gAAAGQCAYAAAA9TUphAAAgAElEQVR4nOzdeVxU9f4/8IMFCMKQIC5IYiVYiVi3xax+8UVELVGz9ZYUbZYLttwWVJQxvbiVS7fU0twqBTWz1AzDRFoANQcVQxQTEYFc2ATZBF6/P44cHWaGGdZzmPN6Ph6fx70OR+Yzn+nz/nxezplzBBARERERERGR7AS5O0BEREREREREDOhEREREREREisCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhERERERERECsCATkRERERERKQADOhEpAihoaHw8vKSuxtERGTF4uPjIQgC4uPjZXn+pUuXYs2aNQaP1/Vr8+bNLfZca9asgSAIyMzMbLHfSUStjwGdiBTh5MmT0Ol0cneDiIisWHFxMZKSklBcXCzL8/fr1w/+/v4GjzOgE1EdBnQiIiIiojbAgE5E5jCgE1GTaLVaCIIAnU6HMWPGwNnZGRqNBmPHjsX58+el42pqajB//nz07dsXdnZ2cHd3xwsvvIDs7Gy932fsFPdNmzbh/vvvh0ajgYODA2655Ra8/PLLer979uzZ8PHxQceOHeHi4oL+/ftjyZIler/nt99+w+DBg+Hk5AQHBwcMGjQIO3bs0DumbiOzZ88ejB8/Hm5ubnB1dcWYMWOQk5PTQqNGRESNlZGRgZdeegl9+vSBg4MDPDw8EBwcjCNHjugd5+/vD0EQjLa608qNneIeGhqKTp064dixYxg6dCgcHR3RvXt3zJ07FwCQlJSEhx56CI6OjvD29sbatWv1nrduPayvfkD28vIy6FfdulfXrw0bNmDatGno0aMHnJ2dERgYiPT0dL3f+/PPP2PUqFHo2bMn7O3tcdttt+H111/HhQsXGnx+ImofGNCJqEnq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\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 33.306 fps\n",
      "Integration speed: 31.374 fps\n"
     ]
    }
   ],
   "source": [
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"bbox\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"python\")[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "resident-intranet",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, no split, CSR, cython)\n"
     ]
    },
    {
     "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,iVBORw0KGgoAAAANSUhEUgAAA+gAAAGQCAYAAAA9TUphAAAgAElEQVR4nOzdeVxU9f4/8IMFKMIhUSyVRMutRK3rLbO68XPNlLS9e9OiTVPDlm+3hv1ohbaa3dJWNSv3zHILtVxawCXBLcQlAdncUBBlHXj9/jgyMjADM+M5nMOc1/Px+Dzuo+E4M3zO/bwX5sznCCAiIiIiIiIizQlavwEiIiIiIiIiYoNOREREREREpAts0ImIiIiIiIh0gA06ERERERERkQ6wQSciIiIiIiLSATboRERERERERDrABp2IiIiIiIhIB9igExEREREREekAG3QiIiIiIiIiHWCDTkRERERERKQDbNCJiIiIiIiIdIANOhEREREREZEOsEEnIiIiIiIi0gE26EREREREREQ6wAadiIiIiIiISAfYoBMRERERERHpABt0IiIiIiIiIh1gg05ERERERESkA2zQiYiIiIiIiHSADToRERERERGRDrBBJyIiIiIiItIBNuhEREREREREOsAGnYiIiIiIiEgH2KATERERERER6QAbdCIiIiIiIiIdYINOREREREREpANs0ImIiIiIiIh0gA06EelCeHg4goODtX4bRETkxjZv3gxBELB582ZNXn/27NmYP39+vcdr3tfy5csVe6358+dDEARkZGQo9pxEpD426ESkC0eOHEFKSorWb4OIiNxYUVERkpOTUVRUpMnr9+7dG6GhofUeZ4NORDXYoBMRERERNQE26ETUGDboROQSSZIgCAJSUlJw//33w8/PD6IoYuzYsTh58qTluKqqKrz99tvo2bMnvLy8EBgYiMcffxzZ2dlWz2frEvdly5bh1ltvhSiKaNWqFbp27YqnnnrK6rnfeOMN9OjRAy1btoS/vz/69OmDWbNmWT3Pb7/9hsGDB8PX1xetWrXCwIEDsWbNGqtjagqZTZs2YeLEiWjbti0CAgJw//33Izc3V6FZIyIiZx0+fBhPPvkkunXrhlatWqFjx44ICwvD3r17rY4LDQ2FIAg2R81l5bYucQ8PD0fr1q1x4MABDB8+HD4+PrjmmmswY8YMAEBycjLuuOMO+Pj4oHv37vjqq6+sXrcmH9ZVt0EODg6u975q8l7N+1q0aBGio6PRoUMH+Pn5YciQIUhPT7d63g0bNmD06NHo1KkTvL29cf3112PChAk4depUg69PRM0DG3QicklNQRIcHIxXX30V69evx8yZM9G6dWvcfPPNqKioAABMmDABgiAgIiICiYmJ+PTTTxEYGIhrr73Wqpio26AnJSXBw8MD//73v7Fu3Tps2rQJ8+fPx+OPP245ZsaMGbjiiisgSRJ++eUXJCYmYtasWZg6darlmC1btsDT0xP9+/fH0qVL8cMPP2D48OHw8PDAkiVLLMfVFDLXXXcdpkyZgvXr1+PLL79EmzZtMGjQIBVnkoiIGrJ161a88sor+O6777B161asXLkS9913H1q1amXVvP71119ITk62GkOHDsUVV1yBpKQkAPYbdC8vL9xwww348MMPsXHjRjz11FMQBAFRUVHo0aMH5s6di/Xr1yMsLAyCIODPP/+0/HtHG/SUlBRcd911uPnmmy3vr+arXTXvq0uXLhg7dizWrl2LxYsXo3PnzujevTvMZrPleT/55BPMmDEDq1atwtatW7FgwQL069cPPXv2tOReW69PRM0DG3QicklNQfLyyy9bPb5w4UIIgoBvv/0WBw4cgCAImDx5stUx27dvhyAIiI6OtjxWt0F/7733IAgCCgsL7b6HsLAw3HTTTQ2+z9tuuw3t27dHcXGx5TGz2YyQkBAEBQWhuroawKVCpu57feeddyAIAvLz8xt8HSIiahpmsxkVFRXo3r17vRxU27vvvgtBEPD5559bHrPXoAuCgBUrVlgeq6ysRGBgoOVKsRoFBQW44oor8H//93+Wxxxt0IHGL3EfOXKk1ePLli2DIAhITk62+TtWV1ejsrISWVlZEAQBP/74Y4OvT0T6xwadiFxSU5DU/hQBkIuaK6+8Es888wzmzJkDQRCwY8eOev/+hhtuwIABAyz/XbdB37p1KwRBwPDhw7F06VLk5OTUe47XX38dHh4emDRpEhITE+tt+nP+/Hl4eHjUa7oB4O2334YgCDhw4ACAS4VMYmKi1XGJiYkQBAHbtm1rfFKIiEhxlZWVSEhIwA033ABPT0+rS8RHjBhh898sWrQIHh4eiI2NtXrcXoPu4eGB0tJSq2MHDhyIDh061HvuDh064MEHH7T8t5IN+qeffmr1eHp6OgRBsLri68SJE3juuecQFBSEFi1aWM3HW2+91eDrE5H+sUEnIpfUFCS2Guerr74a9913H9544w0IglDv++YAMGTIEHTr1s3y37a+g/7DDz9g8ODB8Pb2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5cn6XyCHYA9jDwPYwwD2r1LsX2QlHtApZiZOnIh69eqhcuXKaN26NVavXh3+sz59+qB9+/ZlHj9hwgRcffXVqFq1KmrXro1evXph7969MX7W0WVmDDIyMtCqVStUrVoVmqahR48e2Lp1q4RnHT0rV66Ey+U6o/r06QOg/HmwatUqXHPNNahcuTLq16+PSZMmxf6JR1lFxqG8x9erVy/mzz2azI5D+/bt//DxRFZiD2MPYw9j/yrF/kVW4gGdiIiIiIiISAE8oBMREREREREpgAd0IiIiIiIiIgXwgE5ERERERESkAB7QiYiIiIiIiBTAAzoRERERERGRAnhAJyIiIiIiIlIAD+hERERERERECuABnYiIiIiIiEgBPKATERERERERKYAHdCIiIiIiIiIF8IBOREREREREpAAe0ImIiIiIiIgUwAM6ERERERERkQJ4QCciIiIiIiJSAA/oRERERERERArgAZ2IiIiIiIhIATygExERERERESmAB3QiIiIiIiIiBfCATkRERERERKQAHtCJiIiIiIiIFMADOhEREREREZECeEAnIiIiIiIiUsD/Bw0NL3bSeYyQAAAAAElFTkSuQmCC\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n",
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 48.976 fps\n",
      "Integration speed: 51.878 fps\n"
     ]
    }
   ],
   "source": [
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"no\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"cython\")[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "technical-confidence",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, bbox split, CSR, cython)\n"
     ]
    },
    {
     "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=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 53.601 fps\n",
      "Integration speed: 51.972 fps\n"
     ]
    }
   ],
   "source": [
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"bbox\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"cython\")[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "sorted-habitat",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, no split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti)\n"
     ]
    },
    {
     "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,iVBORw0KGgoAAAANSUhEUgAAA+gAAAGQCAYAAAA9TUphAAAgAElEQVR4nOzdeVxU9f4/8IMFKMIhUTSVxEqxErW9rL7xc82M1G7b7WrRcjU1bL+xz8m8aJtL96Z1K7fKLTMtzSjNpQVQc3ALcUlANjcURNkceP3+ODIyMgMz4zmcw5zX8/H4/OHMYWb4HD/vhTmLACIiIiIiIiLSnKD1ByAiIiIiIiIiNuhEREREREREusAGnYiIiIiIiEgH2KATERERERER6QAbdCIiIiIiIiIdYINOREREREREpANs0ImIiIiIiIh0gA06ERERERERkQ6wQSciIiIiIiLSATboRERERERERDrABp2IiIiIiIhIB9igExEREREREekAG3QiIiIiIiIiHWCDTkRERERERKQDbNCJiIiIiIiIdIANOhEREREREZEOsEEnIiIiIiIi0gE26EREREREREQ6wAadiIiIiIiISAfYoBMRERERERHpABt0IiIiIiIiIh1gg05ERERERESkA2zQiYiIiIiIiHSADToRERERERGRDrBBJyIiIiIiItIBNuhEREREREREOsAGnYiIiIiIiEgH2KATkS5ERUUhNDRU649BREQebOPGjRAEARs3btTk/WfPno358+c3eLzucy1fvlyx95o/fz4EQUB2drZir0lE6mODTkS6cPDgQZjNZq0/BhERebDS0lKkpaWhtLRUk/fv3bs3IiIiGjzOBp2I6rBBJyIiIiJqBmzQiagpbNCJyC2SJEEQBJjNZjz00EMICAiAKIoYPXo0jh07Zt2upqYG77zzDnr16gUfHx8EBwfjySefRF5ens3r2TvE/auvvsLtt98OURTRpk0bXH311XjmmWdsXnvKlCkICwtD69atERgYiD59+mDWrFk2r/Prr79i4MCB8Pf3R5s2bdC/f3+sWbPGZpu6QmbDhg0YP3482rdvj6CgIDz00EMoKChQaNaIiMhVBw4cwNNPP40ePXqgTZs26NKlCyIjI7Fr1y6b7SIiIiAIgt1Rd1i5vUPco6Ki0LZtW+zduxdDhw6Fn58frrzySkybNg0AkJaWhrvvvht+fn7o2bMnFixYYPO+dfnwYhc3yKGhoQ0+V13eq/tcixcvRnx8PDp37oyAgAAMGjQIWVlZNq/7008/YcSIEejatSt8fX1x7bXXYty4cTh+/Hij709ELQMb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n37Crl27EBkZCX9//0aLoGXLlsHHxweffvopsrKykJCQgICAAIdFUGFhIS6//HLMmDED2dnZ2LVrF2bPno2ysjKUlZXhsccew7Bhw1BUVISioiJUVVU5LIKuv/56m8/avXt3VFdXA2i6CHL2vfLz8+Hn54eJEydi7969WLlyJTp06GBT5D6ZcvIAACAASURBVEREREAURbz55pvYv38/Fi5cCC8vL/z0009254xFkHs4N6Q03TfotbXAkT1yk15uew0V5ibmJuYmY2ODbjBchKQGm8B//vD20/l7m78IOnHQpc9dl8CPHz8OX19fZGdnIycnB61bt8bx48dtiqAzZ86gdevWSE1NtXmN5557Dk888YTD95g4cSIefvhhAPK3kYIgWIsmR5+nPntF0I033mizTVJSUoMraddddGvfvn0oKyuDj4+P9eJfdZ+lTZs2jRZB/fv3x/jx420eu+OOOxwWQdu3b4cgCNZvXZz5/RwVQfY+a10x2VQR5Ox7xcfHo1evXqitd5Gm2bNnw9/fHzXnv9GKiIjAPffcY/M6t912G2JiYuz+jiyC3MO5IaXpvkEHgNICuUG/KHcxNzE3MTcZGxt0g+EiJDXYBP7j+89fvT23+Yugwh0NDhVsTP1E+be//Q1vvvkmJEmyFi31i6CtW7dCEAS0bdvWZnh7e+P222+3vuZHH32EW265BR06dLA+f9ttt1mff/rpp+Hr64vIyEjMmjXL5uJazhZB//znP222GT58OLy9vRt8NkEQsHbtWuzYsQOCINicnwwAN954Y6NF0BVXXIGFCxfaPPbyyy87LIIsFgsGDRqEgIAAPPLII/jkk09w8uRJu9vWcVQE2fusb775JgDliqCHHnoITz/9tM02F89VREQEJk6caLPNiBEj8Mwzz1w8XQBYBLmLc0NKaxENerV8xBkKzICl2vowcxNzE3OTsbFBNxguQlKDNfCfPQMUZAAFZmTlHWv+IqjADFQ4/3+7fqJcs2YNunfvju7du+P7778HYFsE1V29etOmTThw4IDNOHz4MAD5sLvWrVtj9uzZMJvNOHDgAMaNG9cgYZvNZkydOhX9+/eHv78/0tLSAADPPPMMRowYYbPtxIkTGxRBFxcuw4YNw9/+9rcGn+vAgQM4c+aM9UJiahdBgHwu5G+//QaTyYQ+ffogODgYhw4dsrst4FoRNHny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BXII9jD2MIA9DGD/Ksf+RVbiAZ1iZtKkSWjUqBGqV6+Odu3aYc2aNeE/69evHzp16lTh8RMnTsQVV1yBmjVron79+ujTpw927doV42cdXWbGIDs7G23btkXNmjWhaRp69eqFzZs3S3jW0bNq1Sq4XK5Tql+/fgAqnwerV6/GlVdeierVq6Nx48Z45ZVXYv/Eo6wq41DZ4xs1ahTz5x5NZsehU6dOv/t4Iiuxh7GHsYexf5Vj/yIr8YBOREREREREpAAe0ImIiIiIiIgUwAM6ERERERERkQJ4QCciIiIiIiJSAA/oRERERERERArgAZ2IiIiIiIhIATygExERERERESmAB3QiIiIiIiIiBfCATkRERERERKQAHtCJiIiIiIiIFMADOhEREREREZECeEAnIiIiIiIiUgAP6EREREREREQK4AGdiIiIiIiISAE8oBMREREREREpgAd0IiIiIiIiIgXwgE5ERERERESkAB7QiYiIiIiIiBTAAzoRERERERGRAnhAJyIiIiIiIlIAD+hERERERERECuABnYiIiIiIiEgBPKATERERERERKeD/Aaz5MAJF4+2oAAAAAElFTkSuQmCC\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 102.766 fps\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.ext.splitBBoxCSR:Pixel splitting desactivated !\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 102.586 fps\n"
     ]
    }
   ],
   "source": [
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"no\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"opencl\",\n",
    "                                                   target=(1,1))[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "front-memorial",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IntegrationMethod(1d int, bbox split, CSR, OpenCL, NVIDIA CUDA / GeForce GTX 750 Ti)\n"
     ]
    },
    {
     "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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4HK50L59e8yfPz9IozKX5uTdRx55BHfddRfsdjs6deqEmJgYTJ48GSdOnAjFkKXSnPm7UEJCAgYPHhyM4UnP6vueQODeKXCsvu8yMzbo1GxlZWVQFKXexwSzsrIQGxvr9/fefvtt/PznP8ell14KRVEwcuRIQyaJ5jz/tLQ0dOjQAV9++SU8Hg+++OILXH311VAUBeXl5aEYdtA0plDExMQgKyvL57GtW7da5vmfjw068PzzzyMqKgo//PBDkEYVWk2Zg86dOyM8PBytWrXCs88+G+SRmUdz8u7QoUPRunVrDB8+HNu2bcP777+Prl274qGHHgrFkKXS3Lp9Vnl5OS655BIsX748WEOUmtX3PYHAvVPgWH3fZWZs0KnZzibZ/Px8n8enTp2K66+/vsHf2blzJzp27Ijnn38e//rXv7B+/Xr07NkTf/rTn0Ix5IBqzvM/ceIEHnroIVx66aW45JJL0KlTJzz99NNQFMXwTUpjC8W0adN8Hvvss8+gKAoOHjwYzOEFHRv0pj3/pUuXok2bNsjLywviqEKrKXOwd+9ebN++Ha+//jqioqKwdOnSII/OHJqTdwcPHozLLrsMlZWV3sdWrlyJn/3sZ5Z7F70583e+adOmoW3btqipqQnWEKVm9X1PIHDvFDhW33eZGRt0arbmfEwpMTER999/v89jW7ZsMeS/5LXko4KnTp1CaWkpamtrvRc/qaurC+Zwg87qH7Vig97455+bm4uIiAi89957QR5VaDX3O+jPPfdco969pObl3bFjx+K6667zeaykpASKomD37t1BG6uMWlK3PB4PunfvjkmTJgVziFKz+r4nELh3Chyr77vMjA06tchtt92GRx55xOexG2+80e+FPu677z787//+r89j+fn5UBQFZWVlQRtnsDT1+TekX79+GD16dKCHFnKNvVjJjTfe6PNYcnKyKS5Wwga9cc9/6dKluOyyy5rVyMquuQ36s88+i65duwZ+QCbV1Lz72muvISIiAtXV1d7H3nnnHbRq1cpy76ADza9bmzZtgqIoKC4uDubwpGf1fU8gcO8UGFbfd5kZG3RqkbO3ysjJyUFJSQkmTZqEyy+/3Ht119TUVPzxj3/0Hr9w4UJceumlmDNnDvbs2YPPPvsMt956K2677TZRT6FFmvr8v/nmGyxevBi7d+/Gtm3bMGrUKERFRWHfvn2CnkHLVFdXo6ioCEVFRVAUBTNnzkRRUZH3VikXPv+zt/t48sknUVJSgpycHEPf7qOpzx+A9/hf/vKX+MMf/oCioiLs3LlTxPBbrKnPf+nSpbj00ksxe/Zsn9s2nf/RY6Np6hy8+uqrWLNmDXbv3o3du3djwYIFUFUVGRkZop6C4TQ171ZXVyM6Ohr3338/du7cic2bNyMmJgbjxo0T9RSEaur8nZWYmIjbb7891MOVjtX3PYFg9b1TS1h932UVbNCpxWbPno2uXbsiPDwcvXv3xubNm70/S0pKQv/+/X2OnzVrFm666SZERESgY8eOGDNmDP7zn/+EeNSB05TnX1JSgptvvhkRERFQVRV33303du3aJWDUgXH2HZULIykpCUDDr/8nn3yCW265BeHh4ejWrRvmzp0b+oEHSHOef0PHG/Xd06Y+//79+//X442oqXMwa9Ys9OjRA23atIGqqrjlllswZ84cS39MszmaWne+/vprDBo0CBEREYiOjsaf//xnS757flZT56+yshIRERF4/fXXQzxSOVl93xMIVt47tYTV911WwQadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAJs0ImIiIiIiIgkwAadiIiIiIiISAL/H9aJbPrfjHYEAAAAAElFTkSuQmCC\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Integration speed: 100.151 fps\n",
      "Integration speed: 100.996 fps\n"
     ]
    }
   ],
   "source": [
    "\n",
    "kwargs = {\"error_model\": \"poisson\",\n",
    "          \"correctSolidAngle\":False, \n",
    "          \"polarization_factor\":None,\n",
    "          \"safe\":False}\n",
    "kwargs[\"method\"] = IntegrationMethod.select_method(dim=1, \n",
    "                                                   split=\"bbox\", \n",
    "                                                   algo=\"csr\", \n",
    "                                                   impl=\"opencl\",\n",
    "                                                   target=(1,1))[0]\n",
    "print(kwargs[\"method\"])\n",
    "fig,ax = subplots(1, 2, figsize=(10,4))\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[0])\n",
    "\n",
    "kwargs[\"error_model\"]= \"azimuthal\"\n",
    "validator.plot_distribution(kwargs, label=kwargs[\"error_model\"], ax=ax[1])\n",
    "pass"
   ]
  }
 ],
 "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
}
