{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1bba0128",
   "metadata": {},
   "source": [
    "# Supervised learning with PyTorch\n",
    "\n",
    "This is an example of how to build and optimize neural networks with PyTorch. PyTorch and Tensorflow offer a handy mechanism to provide automatic differentiation, using the chain rule in Calculus to calculate the derivative of a function very fast and with GPU support.\n",
    "\n",
    "Our dataset will consist of images of handwritten digits and the task shall be to classify those handwritten digits in the classes {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.\n",
    "\n",
    "If this was a regression problem, we would often try to minimise the mean-squared-error between the output of the neural network and the correct prediction. As we saw in the presentation, this assumes that the underlying probability distribution of the prediction is a Gaussian, which is certainly not true for the distribution of digit classes: for one, the digit classes are discrete and Gaussians are only defined for continuous outputs. The most general probability distribution for a choice of 10 classes is a Categorical distribution (https://en.wikipedia.org/wiki/Categorical_distribution), which is simply a discrete distribution with a given probability value for each class. How can we then sculpt a function that maps the input image to a given class?\n",
    "\n",
    "Suppose the neural network provides an output $f_k(x)$ in the form of a list of probabilities, informing us of the probability that a given image belongs to a certain class $k$. If we know that a given input image x belongs to class C, then the true probability t for this image x to belong to each class is zero for classes that differ from C and 1 for the class C. The network's objective will be to output such probabilities, so that only the i-th component of the output is 1 if the input belongs to class i. The presentation shows how the Bayes' rule leads us naturally to minimize the cross entropy between the target probabilities and the predicted probabilities: $- \\sum_k t_k \\log f_k(x)$. One can gain intuition on this by reading more on the Information Theory concept of cross-entropy and how it relates to Mutual Information: minimizing the mutual information between the labels distribution and the predicted one moves them closer together:  https://en.wikipedia.org/wiki/Cross_entropy\n",
    "\n",
    "The neural network will therefore model a parametrized function that maps the input image pixels into a vector with 10 components, which refer to the probability that the image correspond to that digit.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d0681795",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: torchvision in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (0.11.2)\n",
      "Requirement already satisfied: torch in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (1.10.1)\n",
      "Requirement already satisfied: pandas in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (1.1.5)\n",
      "Requirement already satisfied: numpy in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (1.19.2)\n",
      "Requirement already satisfied: matplotlib in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (3.3.4)\n",
      "Requirement already satisfied: pillow!=8.3.0,>=5.3.0 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from torchvision) (8.3.1)\n",
      "Requirement already satisfied: typing_extensions in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from torch) (3.10.0.2)\n",
      "Requirement already satisfied: dataclasses in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from torch) (0.8)\n",
      "Requirement already satisfied: python-dateutil>=2.7.3 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from pandas) (2.8.2)\n",
      "Requirement already satisfied: pytz>=2017.2 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from pandas) (2021.3)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (1.3.1)\n",
      "Requirement already satisfied: cycler>=0.10 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (0.11.0)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (3.0.4)\n",
      "Requirement already satisfied: six>=1.5 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from python-dateutil>=2.7.3->pandas) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install torchvision torch pandas numpy matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "23feddde",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "# import standard PyTorch modules\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "# import torchvision module to handle image manipulation\n",
    "import torchvision\n",
    "import torchvision.transforms as transforms\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48433f6f",
   "metadata": {},
   "source": [
    "PyTorch allows you to create a class that outputs a single data entry and use that to feed input to your neural network. An example of how you would write such a class is given below, but for this exercise we shall use something ready-made which loads the standard MNIST handwritten digits dataset, just to simplify things.\n",
    "\n",
    "If you want to load a different dataset (for example your own data!), feel free to copy and modify the example Dataset class below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "30205402",
   "metadata": {},
   "outputs": [],
   "source": [
    "class MyDataset(object):\n",
    "    def __init__(self):\n",
    "        pass\n",
    "    def __len__(self):\n",
    "        return 10 # these are how many samples I have\n",
    "    def __getitem__(self, idx):\n",
    "        # give me item with index idx\n",
    "        # read this from some file, but for the purposes of this example, generate a random image and label\n",
    "        my_image = np.random.randn(10,10, 1)\n",
    "        my_label = np.array(np.random.randint(10))\n",
    "        my_image = torch.from_numpy(my_image)\n",
    "        my_label = torch.from_numpy(my_label)\n",
    "        return {\"data\": my_image, \"label\": my_label}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "cc0b0774",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10\n"
     ]
    }
   ],
   "source": [
    "my_dataset = MyDataset()\n",
    "print(len(my_dataset))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6dccfac6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'data': tensor([[[-2.2541e-01],\n",
      "         [-8.7492e-01],\n",
      "         [ 2.2757e-01],\n",
      "         [ 3.6083e-01],\n",
      "         [-1.0728e+00],\n",
      "         [-1.9445e+00],\n",
      "         [ 1.2723e+00],\n",
      "         [-4.6512e-01],\n",
      "         [ 7.8006e-01],\n",
      "         [-2.8025e+00]],\n",
      "\n",
      "        [[ 2.5337e-01],\n",
      "         [-3.9780e-01],\n",
      "         [-1.5573e+00],\n",
      "         [-6.1211e-01],\n",
      "         [-1.7922e+00],\n",
      "         [ 1.4484e+00],\n",
      "         [-3.1899e-01],\n",
      "         [ 1.4920e-03],\n",
      "         [-1.3394e+00],\n",
      "         [ 2.9670e-01]],\n",
      "\n",
      "        [[-1.1016e-01],\n",
      "         [ 1.6733e+00],\n",
      "         [ 2.7996e-01],\n",
      "         [-3.7264e-01],\n",
      "         [-1.4377e+00],\n",
      "         [ 1.7887e+00],\n",
      "         [ 1.6038e-01],\n",
      "         [ 7.4539e-01],\n",
      "         [ 1.9320e+00],\n",
      "         [ 5.8520e-01]],\n",
      "\n",
      "        [[ 1.8378e-03],\n",
      "         [ 7.1617e-01],\n",
      "         [ 1.9320e-01],\n",
      "         [-9.8246e-01],\n",
      "         [ 1.0930e+00],\n",
      "         [ 1.4183e+00],\n",
      "         [ 1.9863e-01],\n",
      "         [-1.1845e-01],\n",
      "         [ 1.3640e+00],\n",
      "         [ 8.7122e-01]],\n",
      "\n",
      "        [[ 1.6613e+00],\n",
      "         [ 1.2155e-01],\n",
      "         [ 3.4827e-01],\n",
      "         [ 9.9064e-01],\n",
      "         [-9.4938e-01],\n",
      "         [ 4.7694e-01],\n",
      "         [ 5.2231e-01],\n",
      "         [ 5.8428e-01],\n",
      "         [ 4.5853e-02],\n",
      "         [-2.5305e+00]],\n",
      "\n",
      "        [[-8.4262e-01],\n",
      "         [ 9.2893e-01],\n",
      "         [ 1.0124e+00],\n",
      "         [-1.6017e+00],\n",
      "         [-1.4961e-01],\n",
      "         [ 2.2560e+00],\n",
      "         [ 2.0985e-01],\n",
      "         [ 7.7839e-01],\n",
      "         [ 1.5581e+00],\n",
      "         [-2.3309e+00]],\n",
      "\n",
      "        [[ 1.5367e+00],\n",
      "         [-3.7147e-01],\n",
      "         [-2.3096e-01],\n",
      "         [ 1.1904e+00],\n",
      "         [ 1.9962e+00],\n",
      "         [-1.0334e-01],\n",
      "         [-6.0397e-01],\n",
      "         [ 1.0851e+00],\n",
      "         [-2.3377e-01],\n",
      "         [-7.0282e-01]],\n",
      "\n",
      "        [[ 1.7610e+00],\n",
      "         [-1.3054e+00],\n",
      "         [ 1.6490e+00],\n",
      "         [-3.9569e-01],\n",
      "         [-1.5368e+00],\n",
      "         [-1.0189e+00],\n",
      "         [-1.9441e-02],\n",
      "         [ 9.1458e-01],\n",
      "         [ 1.2236e+00],\n",
      "         [ 8.6759e-01]],\n",
      "\n",
      "        [[ 4.9696e-01],\n",
      "         [-1.0176e+00],\n",
      "         [ 2.7300e+00],\n",
      "         [-1.1193e+00],\n",
      "         [ 1.5149e+00],\n",
      "         [ 2.2174e+00],\n",
      "         [ 4.5604e-01],\n",
      "         [-1.0018e+00],\n",
      "         [ 6.1021e-01],\n",
      "         [-5.1552e-01]],\n",
      "\n",
      "        [[ 2.3127e+00],\n",
      "         [-5.9054e-01],\n",
      "         [-1.1682e+00],\n",
      "         [-2.8864e-02],\n",
      "         [-1.8656e+00],\n",
      "         [-1.4874e+00],\n",
      "         [-1.7110e+00],\n",
      "         [ 8.5748e-01],\n",
      "         [-1.2645e+00],\n",
      "         [-3.9108e-01]]], dtype=torch.float64), 'label': tensor(3)}\n"
     ]
    }
   ],
   "source": [
    "print(my_dataset[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f1c9da9",
   "metadata": {},
   "source": [
    "But let's keep things simple and just focus on the actual neural network, using a standard class to load a standard dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e97239d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use standard MNIST dataset\n",
    "my_dataset = torchvision.datasets.MNIST(\n",
    "    root = './data/MNIST',\n",
    "    train = True,\n",
    "    download = True,\n",
    "    transform = transforms.Compose([\n",
    "        transforms.ToTensor()                                 \n",
    "    ])\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "527089bd",
   "metadata": {},
   "source": [
    "Plot some of the data with their labels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "067b8105",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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TZs2absW3YS9tdtvv10aNGggq1atSttjmrw1EXH9+JaxY8dyIxsiU6ZMkZycHPn0009T+v2mb82Pu+66SxzHkRUrVoR9KRkj7K21b99eBg8e7Pq177//XvLy8uT4449P6TFN3xrnmv6tbd68WRo2bCgXX3yx69cXLVokjuPIggULUnpc07cW4/HHH5cWLVrIwoULCXQQEQIdMozfgR+L5rVr10pxcbE0a9ZM8vPz5dZbbxWRH/91aNCgQdKsWTMpKiqSP//5zym//XQHetCXzK9fv15EfvzS02nTpsndd98t3bt3l0aNGsndd98tlZWV4jiOVFZWuh5v/fr14jiOPPjgg65fX716tRx33HHSqlUrady4sfTp00ceffTRlK87dui//vrrKT+G6YS9tY4dO8rw4cPr/Txi2La1bL+R1bk1Lzt27JDmzZunvD/bthZjyZIl4jiOvPzyyyk/humEvbWOHTvK2LFjlV8/+OCD5eSTT0768WzbGueanq09/vjj4jiOPP/8865f37FjhziOIyUlJUk/pi1b++abb+Tggw+W+fPn171tAh0IdMgoQQd+bm6u9OjRQ+bPny8vvviinHnmmeI4jsycOVO6du0q999/vyxbtkzGjRsnjuPImjVrUnr7kydPlgYNGsjBBx8sDRo0kPbt28u0adPkm2++Senx1q1bJxMnThTHcVxfXhp7URDHcaR9+/bSu3dvWbRokaxcuVI++OCDpA78lStXSm5urgwZMkQeffRReeGFF2TKlCm+HxiSeT/st99+8p///Cel328DYW5t06ZN4jiOXHzxxTJz5kxp27atNGzYUA477LCUb1hs2xo3svrONS8LFiwQx3Hk4YcfTun327S13bt3y3//+1959dVXpXv37jJ48OBIv75G2Fu7/fbbpWHDhvKnP/1Jtm3bJlu2bJHLLrtMmjRpIq+++mrSj2fT1kQ413RtLfYv5StXrnT9+vfffy85OTlSUFCQ9GPasrXTTz9dBgwYILW1tQQ61EGgQ0YJOvC937+2e/duadOmjTiOI2+99Vbdr3/zzTfSsGFDmT59ekpvv6KiQioqKmT58uWyfPlyueaaa6RZs2bSvXt3+fbbb1N6zHhfMuU4juTl5SkvapLMgd+9e3c5/PDDZffu3a7/dty4cVJQUOD68rtEWLZsmTRo0EAuu+yypH6fbYS5tVWrVonjOHXfE/vYY4/JsmXL6m4OMvHleaZtjRtZfeealyOPPFIOOOAA+f7771N+DBu2Fvt7FnPMmDGyY8eOxJ6gpZiwtXvuuUcaN25c935v3bq1vPjiiyk/ng1bi8G5pmdr77zzjjiOIzfffLPr11esWCGO40hubm4Kz8j8rT377LPSqFEjef/9911vm0AHAh0yStCBn5OTo9xMDhw40PezpAUFBTJhwoS0XVPsS6kqKipS+v37OvDHjx+v/HqiB/6nn34qjuNIWVmZ7N6922Xs+y0/+uijhK/1zTfflLy8PDnqqKMi/6M/wtzaa6+9VncTsWHDhrpf37t3r/Tt21cOOeSQpB9TxK6tcSMbzrn2wQcf1H2pZn2wYWv//e9/ZfXq1fLyyy/L/PnzpaCgQI488kj5v//7v6Sfry2EvbUHHnhAGjduLJdffrn8z//8jzz33HNy6qmnSrNmzeSFF15I6TFt2FoMzjV9Wxs6dKjsv//+8thjj8n27dvltddek6KiImnYsKE0adIkpcc0eWvV1dXSvn17ufbaa5W3TaADgQ4ZJd73NHkZNmyY9OzZU/n1wsJC3++BS5Xa2lpp3rx5St8/J7LvA//CCy9Ufj3RA//VV191/QuRn6+88kpC1/nWW29J69at5YgjjpDq6uqknqONhLm1jz/+WBzHkd69eyv/28yZM8VxHPnyyy+TflxbtibCjWxY59pll10mjuPI22+/Xa/HsWlrMd544416fbLVBsLc2rZt26Rp06a+n/wZNmyYdOzYMenHFLFra5xr+s61L7/8Uo499ti6P6fc3FyZMWOG9OvXTw499NCUHtPkrU2bNk06duwoX3zxhWzfvl22b98uzzzzjDiOIwsXLpTt27fL3r17U3reYD8EOmSUsA98P2pra6VZs2Zy6qmnpvT793Xg+93MxL400/svDqtXr3Yd+LHQmzlzpqxevdrXRL6kMxbnhx9+eL1+hqhNhLm13bt3S7NmzXwD/aqrrhLHcVL6ec02bC0GN7L6z7Vdu3bJQQcdJP369avX44jYtbUYe/bskQYNGsj555+f9O+1hTC3Fvvz9Xsdjcsvv1wcx0npW8Vs2hrnmv5z7csvv5R3331XqqurZdeuXdKyZcuUf0ysyVsbNmzYPgN/+/btKT1vsB8CHTKKKQf+T3n00UfFcRy54447Uvr906dPF8dxfH8cR9CBv3XrVnEcR+bOnev69djPmP3p9zQVFRXJmDFjUro2EZG3335bWrduLb179470i8J5CXtrp512mjRq1KjuFWJFfvwS9z59+qT82X/Tt/ZTuJHVf67FXsX8rrvuqtfjiNi1tRix708tKytL6+OaRJhb27hxoziOo3wCZO/evTJo0CBp1apVSv/CZ9PWONfCvV+bP3++NGjQQN58882Ufr/JW3v77belsrLS5e233y6O48gNN9wglZWVyve2Q/ZAoENGycSBv2HDBmnYsKGcddZZcd/2hg0b5KijjpLf//738txzz8nzzz8vV111lTRp0kR69uwp//3vf5W3H/SZVr/nVFpaKm+88YasXr1adu3aJSLBB76IyMiRI6VVq1Zy3333yfLly2XGjBlSVFSkHPgrV66Uxo0bS3FxsSxatEhefvllefLJJ2X27NkyceLEuNf28ccfy4EHHiitW7eWZ555xvXKpatWrZKvvvpqn8/PVsLcmsiPrxh7wAEHSLdu3WTx4sWydOlSGT9+vOTk5CjfTxaFrYmIfPjhh7JkyRJZsmSJ9OvXT9q0aVP3/3/44Yf7/P22EvbWYowePVqaNm0a91tYorC1Z555Ro4//nj505/+JC+++KI899xzctNNN0nr1q2lS5cukf4WnrC39qtf/UoaNGggl1xyiSxbtkyefvppmTBhgjiO+oJeUdiaCOdaWFtbsGCBLFiwQFasWCFPPPGETJ06VXJycup+pJv37Udha174HnSIQaBDRsnEgR/7PqDJkyfHfdvbtm2T8ePHS8eOHaVp06aSm5srRUVFcuWVV/re0PXr10/y8/P3+Zx27dolU6dOlTZt2khOTo44jvpzNf3YunWrTJw4UVq3bi15eXkyadIkWbNmjXLgi4i8++67cvLJJ0vbtm2lUaNGkp+fLyNGjJB77rkn7rXF3t9Bet9OlAhzazHef/99GTt2rLRs2VKaNGkiAwYMkGeeeUb576KwNRGR0tLSwK2Vlpbu8/fbiglb27RpkzRo0EDOOOOMuP9dFLa2du1amThxohQWFkqTJk2kSZMm0r17d/nd736X8o/MtIWwt/b999/LvHnzpHfv3tKyZUtp3bq1DBgwQB5++GHlX8+jsDURzrWwtnbvvfdKjx49pFmzZtKiRQsZMmSIPPXUU77/bVS25oVAhxgEOoCI7NixQ/bbbz+5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rbJ8+XIZN26ceJ4n06ZNk8LCQrnvvvtk2bJlMmrUKPE8T/72t781eS17G/jXXnuteJ4X+F659u3by3nnndfo49XU1EhOTo6cdtppDS/nrf9LfP3j0rlzZ5k4caI899xzsnjxYtmxY0ejBv6ECROkVatWcvXVV8vSpUvl4Ycflt69e8uhhx4q//znP5Na586dO2X79u3y6aefyoIFC6Rly5Zy9913N/p8TeNK1hJJRUG3PWv1Bf2QQw6RFi1ayH777SclJSXy0ksvNem8TeFq1uoZMmSIdOjQQXbs2NHo49metXqYa2aytmvXLtm+fbvU1dXJc889J3l5eZF+f4rYn7VTTjlFDjroIFm6dKn06dNHWrRoIR06dJBJkyY5edVul7K2a9cuOfnkk+Xss88OXXtjsD1re0JBz1wo6JAywga+53ny+OOPN3xt+/bt0qFDB/E8T15//fWGr//rX/+SFi1ayFVXXdXktext4E+YMEFat24deLvCwkIpKSmJdMywl0zVPy5jx45V/l+yA7+mpkY8z5Oqqirf99XW1kpOTo5MmTIlqTVOmjSp4RnjrKwsufPOO5O6nW24krVE0v0Sdxuy9vrrr8sVV1whS5YskRdffFHuv/9+Ofzww6VFixaydOnS5E7QIlzNmojIvffeK57nya233hr5mDZnrR7m2m50Z+2RRx7x/RVy3Lhxsn379sjHtDlrRUVFkp2dLfvtt5/Mnj274do1OTk5cuKJJ1rx1o7G4FLWbr/9djnwwAMbim0qXp5vc9b2hIKeuVDQIWWEDfxmzZrJN9984/veE044QTp27KjcR8eOHeWss85q8lr2VdCzs7MDb1dYWCilpaWRjrmvgf/kk08q/y/ZgX/99ddLs2bN5JNPPpHt27f7HDBggBx//PFJrfHDDz+UVatWyTPPPCOXXHKJNG/eXCorK5M+R1twJWuJ6CroNmRtT7744gs57LDD5Oijj270bU3jataeffZZycrKktGjRzepPLiQNebaf9GZtX//+9+yatUqWbFihVRUVMj+++8vP/jBD3zvL24MNmetV69e4nlew8u967nlllvE8zxZvnx5cidpCa5kbcOGDdK2bVv59a9/vde1Nxabs7YnFPTMhYIOKWNv72lKZPDgwXLkkUcqXy8oKJCRI0c2eS3JvMT9P//5j/L/or7EXWTfA//VV19V/l+y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bOnTp4889thj8vzzz0t5ebm0aNFCfvCDH5heXqNxJWvbtm2TXr16Sfv27WXBggWycuVKufvuu+XQQw+Vzp07y5dffhnp+DZnTURk4cKF0rx5czn33HPlqaeekhUrVsi9994rM2fONL20RuNK1rZs2SLdu3eXww47TB544AFZunRpwx8cqqqqIh/f5qy9+uqr0rp1aznppJNkyZIl8sQTT8iAAQOkdevW8sorr5heHmiCgg4pw/TA3/OzHisrK/dZ0C+99NKUHr8xA3/r1q2ya9eulB6/sbzwwgvieZ5Mnz7d6Dqi4ErWdu3aJX379pW+ffum9H1pNmftk08+Ub721VdfyaGHHiqnnnqqtnWkCleyFsTXX38tbdu2lUGDBkU+vs1Zu/7668XzPHn//fd9X584caJ4nif//ve/ta0lFbiSteXLl4vnecpfMR9++GHxPE+eeOKJSMe3OWubNm2S3NxcmTx5srZjphNXsjZnzhzxPE95BVZJSYnk5ubKF198Een4NmettLRUDj30UN+rgL788ktp3769DBw4UNs6wCwUdEgZQQO/rKxMcnNzZe3atVJSUiJt2rSRvLy8hpdb1tTUyIknniht2rSRXr16yYMPPpiStegu6EEvKR08eLCI/PdxWbZsmYwbN07at28vnufJN998I2VlZVJQUKDcX3l5uXie/5/nrl27ZMGCBdKnTx/Jzs6WAw44QM466yxZt25dpDVfeOGF0qxZM/nggw8i3d4krmSt/kmQVB1LxM2siYgMHTpUCgsLI9/eFK5kLYj77ruvSfmzPWszZswQz/Pks88+8319ypQp0rx5c/n6668jnbcpXMla/VxbtGiR7+vPPvuseJ4nzz77bKOP50rWNmzY0OhzsxFXsjZq1Cg59NBDla/fdttt4nmePPLII40+nu1Za9u2rYwZM0b5+o9+9CPxPE82b97c6HMG96CgQ8oIG/hZWVly+OGHy6233irLly+XcePGied5Mm3aNCksLJT77rtPli1bJqNGjQp8pjQKyRT0Aw88ULKzsyUrK0v69esn999/f+Tj1dTUSE5Ojpx22mkNLy1ds2aNiPz3cencubNMnDhRnnvuOVm8eLHs2LGjUQN/woQJ0qpVK7n66qtl6dKl8vDDD0vv3r3l0EMPlX/+85+NWu+WLVskJydHhg0bFvmcTeJK1m688UbxPE8e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\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(nrows=5, ncols=5, figsize=(10,10))\n",
    "for i in range(5):\n",
    "    for j in range(5):\n",
    "        idx = i*5+j\n",
    "        img = my_dataset[idx][0]\n",
    "        label = my_dataset[idx][1]\n",
    "        ax[i, j].imshow(img[0,...].detach().cpu().numpy())\n",
    "        ax[i, j].set(title=f\"Im. {idx}, true {label}\")\n",
    "        ax[i, j].set_xticklabels([])\n",
    "        ax[i, j].set_yticklabels([])\n",
    "plt.subplots_adjust(hspace=0.2,wspace=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e517975c",
   "metadata": {},
   "source": [
    "And now let us define the neural network. In PyTorch, neural networks always extend `nn.Module`. They define their sub-parts in their constructor, which are convolutional layers and fully connected linear layers in this case, and the method `forward` is expected to receive an input image and output the network target.\n",
    "\n",
    "The network parameters are the weights of the `Conv2d` and `Linear` layers, which are conveniently hidden here, but can be accessed if you try to access their `weights` elements.\n",
    "\n",
    "We will not directly output the label probabilities, since we do not actually need it to optimize the neural network: we need only the logits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d908ef86",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Network(nn.Module):\n",
    "    \"\"\"\n",
    "        This is our parametrized function.\n",
    "        It stores all the parametrized weights theta inside the conv1, conv2, fc1 and fc2 objects.\n",
    "        The forward function receives an image and outputs a vector.\n",
    "        \n",
    "        The intuition is that the i-th component of the vector represents the probability that\n",
    "        the probability that the image belongs to the i-th class however\n",
    "        we do not normalize the output to be in the range [0,1] and to sum to 1. The reason is\n",
    "        that this normalization is done later, in the training step, where the numerical error in it can be\n",
    "        minimized by calculating directly log(probability) instead of calculating first the probability\n",
    "        and then the log of it. Keep in mind therefore, that to get probabilities\n",
    "        from this object one should do F.softmax(my_network(x), dim=1).\n",
    "        \n",
    "        The code has been written like this, as this is a common optimization done in classification problems.\n",
    "    \"\"\"\n",
    "    def __init__(self):\n",
    "        \"\"\"\n",
    "        Constructor. Here we initialize the weights.\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "\n",
    "        # define parameters\n",
    "        \n",
    "        # all these steps are purely linear (affine if one considers the bias)\n",
    "        # the forward function adds a non-linearity through the ReLU to allow this to do more than\n",
    "        # simple linear filters\n",
    "        \n",
    "        self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)\n",
    "\n",
    "        self.fc1 = nn.Linear(in_features=12*4*4, out_features=120)\n",
    "        self.fc2 = nn.Linear(in_features=120, out_features=60)\n",
    "        self.out = nn.Linear(in_features=60, out_features=10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        \"\"\"\n",
    "        This function is called when one does my_network(x) and it represents the action\n",
    "        of our parametrized function in the image, outputting the probabilities for that image as\n",
    "        a column vector. The input x has shape (B, C, H, W) (ie: batch dimension, channels, height and width).\n",
    "        The output has shape (B, K), where K is the number of classes.\n",
    "        Each row of the output has the probability for each class as a column vector.\n",
    "        Each column of the output has the probability for a single class for all images B given as an input.\n",
    "        \"\"\"\n",
    "\n",
    "        # first convolution\n",
    "        t = self.conv1(x)\n",
    "        # non-linearity\n",
    "        t = F.relu(t)\n",
    "        # reduce size of the image in width and height by taking the maximum\n",
    "        # pixel value in each 2x2 pixel matrix (kernel_size) and skipping one pixel (stride)\n",
    "        # the convolution receives one channel and outputs more\n",
    "        # the goal of the max_pool layer is to reduce the image size, so we\n",
    "        # can get more images in several channels which are smaller in size\n",
    "        # this is a trade off between memory and compute\n",
    "        t = F.max_pool2d(t, kernel_size=2, stride=2)\n",
    "\n",
    "        # second convolution\n",
    "        t = self.conv2(t)\n",
    "        # non-linearity\n",
    "        t = F.relu(t)\n",
    "        # reduce the size of the image in width and height again\n",
    "        t = F.max_pool2d(t, kernel_size=2, stride=2)\n",
    "\n",
    "        # transform images into a single vector using reshape\n",
    "        # this puts all pixel values in a single vector\n",
    "        t = t.reshape(-1, 12*4*4)\n",
    "        \n",
    "        # apply a linear transformation\n",
    "        t = self.fc1(t)\n",
    "        # add a non-linearity\n",
    "        t = F.relu(t)\n",
    "\n",
    "        # another linear transformation\n",
    "        t = self.fc2(t)\n",
    "        # another non-linearity\n",
    "        t = F.relu(t)\n",
    "\n",
    "        # final linear transformation\n",
    "        # the output of this has been set to 10 features, so the output will have the size\n",
    "        # (B, 10)\n",
    "        t = self.out(t)\n",
    "\n",
    "        # note: while we want the function to output a probability,\n",
    "        # we do not actually do any effort to normalize these numbers so that they are in [0, 1]\n",
    "        # and so that their sum is 1\n",
    "        # this would often be done by applying a transformation called Softmax(t) = exp(t)/sum(exp(t))\n",
    "        # however, this will be done internally by PyTorch in the function F.cross_entropy\n",
    "        # which we will call later on when training\n",
    "\n",
    "        return t"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c5620dc",
   "metadata": {},
   "source": [
    "Let us create one instance of this network. We also create an instance of PyTorch's `DataLoader`, which has the task of taking a given number of data elements and outputing it in a single object. This \"mini-batch\" of data is used during training, so that we do not need to load the entire data in memory during the optimization procedure.\n",
    "\n",
    "We also create an instance of the Adam optimizer, which is used to tune the parameters of the network."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "988e1979",
   "metadata": {},
   "outputs": [],
   "source": [
    "network = Network()\n",
    "B = 64\n",
    "loader = torch.utils.data.DataLoader(my_dataset, batch_size=B)\n",
    "optimizer = torch.optim.Adam(network.parameters(), lr=1e-3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ee54520",
   "metadata": {},
   "source": [
    "Now we actually repeatedly try to optimize the network parameters. Each time we go through all the data we have, we go through one \"epoch\". For each epoch, we take several \"mini-batches\" of data (given by the `DataLoader` in `loader`) and use it to make one training step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d15d655d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 0/10: average loss 0.35421\n",
      "Epoch 1/10: average loss 0.10931\n",
      "Epoch 2/10: average loss 0.07470\n",
      "Epoch 3/10: average loss 0.05767\n",
      "Epoch 4/10: average loss 0.04682\n",
      "Epoch 5/10: average loss 0.03882\n",
      "Epoch 6/10: average loss 0.03285\n",
      "Epoch 7/10: average loss 0.02714\n",
      "Epoch 8/10: average loss 0.02437\n",
      "Epoch 9/10: average loss 0.02176\n"
     ]
    }
   ],
   "source": [
    "epochs = 10\n",
    "# for each epoch\n",
    "for epoch in range(epochs):\n",
    "    losses = list()\n",
    "    # for each mini-batch given by the loader:\n",
    "    for batch in loader:\n",
    "        # get the images in the mini-batch\n",
    "        # this has size (B, C, H, W)\n",
    "        # where B is the mini-batch size\n",
    "        # C is the number of channels in the image (1 for grayscale)\n",
    "        # H is the height of the image\n",
    "        # W is the width of the image\n",
    "        images = batch[0]\n",
    "        # get the labels in the mini-batch (there shall be B of them)\n",
    "        labels = batch[1]\n",
    "        # get the output of the neural network:\n",
    "        logits = network(images)\n",
    "        \n",
    "        # note: the network does not output probabilities directly: it outputs logits\n",
    "        # to get probabilities from it we would need to do F.softmax(logits, dim=1)\n",
    "        # however, this is done inside F.cross_entropy below and we therefore should\n",
    "        # not do it twice here\n",
    "        # the reason it is done internally, in F.cross_entropy, is that what we really\n",
    "        # need is log(probability) and we can reduce the numerical error\n",
    "        # in its calculation by calculating log(softmax(.)) in one go\n",
    "        # (remember softmax(x) = exp(x)/sum(exp(x)), so log(softmax(x)) = x - log(sum(exp(x))))\n",
    "        \n",
    "        # calculate the loss function being minimized\n",
    "        # in this case, it is the cross-entropy between the logits and the true labels\n",
    "        loss = F.cross_entropy(logits, labels)\n",
    "\n",
    "        # clean the optimizer temporary gradient storage\n",
    "        optimizer.zero_grad()\n",
    "        # calculate the gradient of the loss function as a function of the gradients\n",
    "        loss.backward()\n",
    "        # ask the Adam optimizer to change the parameters in the direction of - gradient\n",
    "        # Adam scales the gradient by a constant which is adaptively tuned\n",
    "        # take a look at the Adam paper for more details: https://arxiv.org/abs/1412.6980\n",
    "        optimizer.step()\n",
    "        losses.append(loss.detach().cpu().item())\n",
    "    avg_loss = np.mean(np.array(losses))\n",
    "    print(f\"Epoch {epoch}/{epochs}: average loss {avg_loss:.5f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4980bf4",
   "metadata": {},
   "source": [
    "Let us check what the network says about some new data it has never seen before (note that we set `train` to `False`, to take a statistically independent part of the dataset)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "09646d29",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_dataset = torchvision.datasets.MNIST(\n",
    "    root = './data/MNIST',\n",
    "    train = False,\n",
    "    download = True,\n",
    "    transform = transforms.Compose([\n",
    "        transforms.ToTensor()                                 \n",
    "    ])\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e315b5dc",
   "metadata": {},
   "source": [
    "And now we can plot again the new images, now showing what the network tells us about it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7a06a4c0",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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//zzO/9ih6gOtxYRcd5558WkSZPimGOOiRkzZhjoz5syZUpMnz49TjzxxBg3blzWA70ut3bffffFS17ykjjggAPi61//enzlK1+JadOmxY477hiPPvpoT1/bUAz11i688MIYNmxYnHPOObFkyZK47LLLYsSIEXHyySd39oV2QF1ubX1XXXVV7LDDDgb6ep555pnYZ599YscddzTQG8BApyPmzJkTW2+99Ua/3u9///sEr+bFnXDCCTFs2LD4r//6r+R/72effbYjY62TPyIbEfG73/0uRo8eHfvvv39Hvr1uyvHWnnnmmfj1r39d+vJFixZFURTxd3/3d8ley4Acbu2xxx6LZ599tvTlRx55ZGy11Vbx1FNPDfn1dVOOtxYRsWbNmrX/73nz5vV8oOdwaxEbfr9MmzYt64H+Qrne2nHHHRfbbrvtBuPtgQceiC222CLOPPPMpK8lIo9b+/Wvfx0jR46MU045ZYMvv+iii2LYsGGxdOnSIb++bsr11gYsW7YsRo8eHV/96ld7OtBzuLX1zZs3L8aPHx9XXHGFgd4ABjodUfWBf9BBB8W0adPiW9/6VrzhDW+IUaNGxVvf+taIeO6nXM2dO7f07UyaNCnmzJmzwZetWLEiTjnllBg/fnxsscUWa38q2Z/+9Ke2X+cTTzwRW2+9dcyYMaPtv3bAwHu999574+CDD46tttoqtt122zjttNNK/0Ib+JfLddddF1OnTo0tttgirrvuuoiIuP/+++Ptb397jBs3LkaMGBFTp06Nq6++uvT3u++++2L27NkxatSoeNnLXhannnpq3HzzzR0d6J///OejKIr4P//n/3Tk2+umutxaRMSDDz4YRVHExRdfPKi/vh9vLSLi/PPPj6Io4pFHHunYt9kNdbi1Tg30fru1fhjovb61P/3pTzFq1Kg49dRTS//brFmz4pWvfGV7b/J5db+1v//7v4+iKOKuu+7a4MsfeeSRKIoiLrroora/zZRyvLX1zZw5M4499ti1f++hDPS639qA+++/P0aNGhU33XTT2l+maKD3NwOdjmj1gb/NNtvEhAkT4qqrroolS5bEt771rYjY9A/8FStWxIQJE2LSpElx/fXXx2233RYXXHBBbLnllnHCCSe0/TpvuOGGKIoi/v7v/77tv3bAnDlzYsSIETFx4sS1P3X3vPPOi+HDh8dRRx21wdctiiLGjx8fr3nNa+KLX/xi3HHHHXHvvffG0qVLY8yYMfHqV786brzxxrj11lvjwx/+cGy22WZx3nnnrf3rf/nLX8Z2220X48ePj4ULF8bixYvj+OOPj4kTJ3Z0NO23337x0pe+NIuf4bAxdbm1iHW/3v+mm24a1F/fj7cWETFjxowYN25cPPPMMx37NruhDrfWyYHeT7fWLwO9l7f205/+NIqiiGuuuab0v33kIx+JYcOGxZNPPjmo91rnWzv77LOjKIr43e9+V/rftt1223j729/e9reZUo63NuCzn/1sjBkzJh5++OG1f++hDvQ631rEc/8l/8ADD4zjjjsuIsJAbwgDnY5o9YFfFEXcfvvtpa+/qR/4p556aowePToefPDBDb7e5ZdfHkVRtP1TyfbZZ5/4sz/7s0E9VAwY+DW0V1xxxQZfftFFF0VRFPHv//7va7+sKIoYM2ZMrFy5coOvO3v27Nhpp51Kv+br9NNPj5EjR679+meddVYMGzYs7rnnng2+3sCvF+/Eg+x9990XRVFU/leSHNXl1h566KF4+ctfHq973es2+Km37ei3W4t47gGs6j3lqA631smB3k+31i8DvZe39u1vfzuKoogvfelLpf/t4osvHvTPgqn7rZ188smx5ZZbVv5vu+22W8yaNavtbzOlHG8t4rl/Z44ZMyauv/76Df7eQx3odb61iOd+Pf7YsWPjl7/8ZUQY6E1hoNMRrT7wx44dW/n1N/UDf/z48fEXf/EX8ac//WmDli5dGkVRxLXXXrvJr/Hee+/tyK9nGvjAf+GvOV62bFkURREXXHDB2i8rimLtT9Ua8OSTT8bw4cPj/e9/f+l9LV68OIqiiMWLF0dExN577x177LFH6TUMfEB34kH2Ix/5SK0+7Otwa7/5zW/iNa95TWy33XZD+t2O++3WFi9eHCNGjIg3v/nNlb82PTd1uLVOD/R+ubV+Gei9vLWBgf4P//APpf9tYKCvWLFi097geup+ayeffHKMHDmy8n/bbbfdYvbs2W1/mynleGsREUcddVQceOCBG/y7oVMDva639sADD8To0aPjc5/7XOnbq8szG4NjoNMRrT7wd99998qvv6kf+MOHD4+iaP3Hgnzyk5/c5Nf4wQ9+MIqiiB/+8Ieb/NdUmTNnTgwfPrz05U8++WQURRFnnHHG2i8riiL+6q/+aoOv99BDD73oeyqKIm688caIiNh1113j0EMPLf29brnllo48yP7xj3+M7bbbLvbcc88hfTsp5X5rK1eujOnTp8fLXvay+NGPfrTJ76tKP93aN77xjRg5cmQceeSR8fTTTw/p20ol91uL6OxA75dbi+ifgd7LW+vmT3Gv860N/BT3ql8SVuef4t7LW1u0aFEMHz48vvOd78Tjjz++tqIo4uSTT47HH398UH+EXd1v7cgjj4x99913g++Ta665Zu23t2rVqra/TerBQKcjXuw3Hamy5ZZbVv4xZ6NHj97gA3/77bePWbNmxd13313ZwK9T2pinn346tt1229hrr702/U210O6PyL7wR39///vfx+abbx4nnHBCy/c18G13+780DfwuqVddddWQvp2Ucr61gXE+duzY+MEPftDeG6vQL7c2MM5nz56d/e/cvr6cb21Ar/4Leq63NqBfBnovb23gN4l773vfW/rfZs+ePaTfJK7Ot/aFL3whiqKI73znOxt8+YoVK6Io6v2bxFVJcWtz587d6BD+2te+Nqj3WudbmzRp0ot+n4wZM6btb5N6MNDpiHY/8KdMmRJHHHHEBl92++23R1EUG3zgv+c974kdd9yx9GuC2jXwx12181NHW9nYr2m68847135Z1Qd+RMShhx4ae+6550b/S2K3f63mkUceucGvoaqDXG9tYJz/2Z/9Wcd+6lk/3Nq//uu/xsiRI+PQQw8d0u/90Au53tr6Uv0a9Drc2vr6faCnurW3vOUtsd1228UTTzyx9ssefPDBGDFiRJx11lmD+jbrfmu/+c1vYuTIkaUfuLjkkktq+8es9frWli1bFkuWLClVFEUcc8wxsWTJknjsscfa/nbrfmt33XVX6fvkrLPOiqIo4m/+5m82eP30FwOdjmj3A//CCy+MYcOGxcc//vG47bbb4sorr4zddtstxowZs8EH/iOPPBKTJk2KqVOnxrXXXhu33357fP3rX49rrrkmjjzyyFi+fPkmvb7DDjssRo0a9aI/HWjgN0nZlPfa6ncFPfzwwzf4uq0+8JcuXRpjx46NvffeOxYuXBhLliyJm2++ORYsWBBvetOb1n69FStWxLhx40q/K+iECRNKH/jnn39+bL755vHNb35zE75HIh5++OHYfPPN4x3veMcmff1c5Hhrf/jDH+L1r399DBs2LK644oq46667NujnP/95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55133hknnXRSTJ8+PUaMGBFFUcSyZct6+po6YcmSJUP6/v30pz8dxx57bEyePDmKooiDDjqoo6+vk+pya+t79tln44ADDoiiKOK0007r9csZkqHe2vqWLl269v8O77777qG/uA6ry609++yzccUVV8SUKVNixIgRsf3228d73/veWLlyZU9f11AN9dYeeeSRmDNnTowbNy623HLLePWrXx2f+9znOvsiO6QutzZnzpzK1zVlypSevq6hGuqttfrndckll3T2hXZAXW7N51q1On2u0TkGOoNy1113bdARRxwRo0aNKn356tWre/o6zzvvvJg0aVIcc8wxMWPGDAP9eVOmTInp06fHiSeeGOPGjct6oNfl1tZ31VVXxQ477GCgr+eZZ56JffbZJ3bcccdsB3pdbu1DH/pQbLbZZnHmmWfGrbfeGp/5zGfipS99aey1117xxz/+saevbSiGcmurVq2KXXbZJXbaaadYuHBhfOMb31g7LufPn9/5FztEdbm1OXPmVL6ue+65p6eva6g6MdDf/OY3l75fHn744c6+0A6oy635XCur2+canWOg0xFz5syJrbfeeqNf7/e//32CV7POmjVr1v6/582b1/OB/uyzz8Yf/vCHIX87Q324WP/7Zdq0aVkP9BfK9dYGLFu2LEaPHh1f/epXezrQc7m1AfPmzYvx48fHFVdcke1Af6Ecb+2hhx6KzTffPN7//vdv8OVf/OIXoyiKuOGGG5K9lgE53Noll1wSRVHE9773vQ2+fNasWbH11lvH448/PuTX10053lrEpr+uVHK4tYio9Q++5nhrPteq1f1zjcEz0OmIqg/8gw46KKZNmxbf+ta34g1veEOMGjUq3vrWt0bEc/9ymzt3bunbmTRpUsyZM2eDL1uxYkWccsopMX78+Nhiiy1i8uTJcd5558Wf/vSntl5jpwb6wHu999574+CDD46tttoqtt122zjttNNK/0Ib+Jf4ddddF1OnTo0tttgirrvuuoiIuP/+++Ptb397jBs3LkaMGBFTp06Nq6++uvT3u++++2L27NkxatSoeNnLXhannnpq3HzzzR37KWn9MNBzurWZM2fGscceu/bvPZSHuH65tfvvvz9GjRoVN910UyxcuLDWA73Xt/blL385iqKIW265ZYMvf+KJJ6Ioipg9e3b7bzTqf2tHHXVUvPzlLy99+ZVXXhlFUcSXvvSltr/NlHK8tVava6jqfmvrv646yvHWfK5Vq/vnGoNnoNMRrT7wt9lmm5gwYUJcddVVsWTJkvjWt74VEZv+gb9ixYqYMGFCTJo0Ka6//vq47bbb4oILLogtt9wyTjjhhLZeYycH+ogRI2LixIlx0UUXxa233hrnnXdeDB8+PI466qgNvm5RFDF+/Ph4zWteE1/84hfjjjvuiHvvvTeWLl0aY8aMiVe/+tVx4403xq233hof/vCHY7PNNovzzjtv7V//y1/+MrbbbrsYP358LFy4MBYvXhzHH398TJw40UBfTy639tnPfjbGjBmz9qc5dmKg1/3Wnn322TjwwAPjuOOOi4joi4Hey1sb+C9Kd9xxxwZf/uSTT8awYcNihx12GPR7rfOtzZo1KyZOnFj68uuvvz6Koohzzjmn7W8zpRxvbeB1bbbZZvHyl788Nttssxg/fnycdtpp8Zvf/GZI77XOtzbwusaOHRsjR46MESNGxPTp0+Nv//ZvB/19klKOt+ZzrVrdP9cYPAOdjmj1gV8URdx+++2lr7+pH/innnpqjB49Oh588MENvt7ll18eRVHE0qVLN/k1dnKgF0URV1xxxQZfftFFF0VRFPHv//7va7+sKIoYM2ZM6Tc5mT17duy0006lX/N1+umnx8iRI9d+/bPOOiuGDRtW+vV+M2fONNDXk8OtPfTQQzFmzJi4/vrrN/h7D3Wg1/3Wrrrqqhg7dmz88pe/jIj+GOi9vLV77rkniqKICy64YIMvv/3226MoihgxYsQmvLOyut/aGWecEZtttlnp+/Sd73xnFEURp5xyStvfZko53lpExIIFC2LBggVx6623xq233hrnnntubLXVVjF16tT47W9/u+lvcD11v7WIiHe84x3xhS98If7t3/4tvvzlL8fhhx8eRVHExz72sUF9eynleGs+16rV/XONwTPQ6YhWH/hjx46t/Pqb+oE/fvz4+Iu/+Iv405/+tEFLly6Noiji2muv3eTX2OmB/utf/3qDL1+2bFnpXzBFUaz96c4DnnzyyRg+fHi8//3vL72vxYsXR1EUsXjx4oiI2HvvvWOPPfYovYaBkWOgPyeHWzvqqKPiwAMPjGeffXaDv3cnBnpdb+2BBx6I0aNHb/A7zvbDQO/1rR144IHx0pe+NP7pn/4pHn/88fj2t78dr3zlK2PzzTePkSNHtv0+I+p/az/5yU9iyy23jP333z/uvffe+PWvfx1XX3312j814L3vfW/b32ZKud5alYGfjrxgwYK2/9qI+t9aK0cddVQMHz48Hn300Y59m92Q6635XCur++cag2eg0xGtPvB33333yq+/qR/4w4cPj6Jo/ceCfPKTn9zk19jJgT58+PDSlz/55JNRFEWcccYZa7+sKIr4q7/6qw2+3kMPPfSi76koirjxxhsjImLXXXeNQw89tPT3uuWWWwz09fT61hYtWhTDhw+P73znO/H444+vrSiKOPnkk+Pxxx8f1O9CW/dbO/LII2Pffffd4PvkmmuuWfvtrVq1qu1vM6Ucby0i4le/+tXa/2I38F+XzjrrrNhrr71i1113bft9RtT/1iIiFi9eHBMmTFj79xv46bpV/2UuN7neWpU1a9bE1ltvHW95y1va/msj+uPWqvzDP/zDBoMtV7nems+1anX+XGPwDHQ6otUH/rRp0yq//pZbbhlnn3126ctHjx69wQf+9ttvH7NmzYq77767snb+SJNe/Rf0F/4X1N///vex+eabxwknnNDyfQ182/4LelmOtzZ37tyN/kv8a1/72qDea51vbdKkSS/6fTJmzJi2v82Ucry19f3qV7+KH/3oR7Fq1ap4+umn4yUveUm8+93v3vQ3uJ6639qAZ599Nu6///74yU9+Es8888zaX9s68Otpc5X7ra1vzZo1sdVWW8Xb3va2tv/aiP65tRf60pe+FEVRxDe+8Y2OfZvdkPut+Vwrq+vnGoNnoNMR7X7gT5kyJY444ogNvmzg1xqt/4H/nve8J3bcccfSrwkajFS/Bv3OO+9c+2VVH/gREYceemjsueee8fTTT7/o38uvQS/L8daWLVsWS5YsKVUURRxzzDGxZMmSeOyxx9r+dut+a3fddVfp++Sss86Koijib/7mbzZ4/TnK8dZaueKKK2KzzTaL73//+4P66+t+a1Wefvrp2GeffeK1r31tR769bqrTrf3jP/5jFEURn/nMZwb11/fjrUVEHHHEEbHFFlsM6rM+pTrdms+1sjp9rjF4Bjod0e4H/oUXXhjDhg2Lj3/843HbbbfFlVdeGbvttluMGTNmgw/8Rx55JCZNmhRTp06Na6+9Nm6//fb4+te/Htdcc00ceeSRsXz58hd9XY8++mgsWrQoFi1aFO9617uiKJ77dVCLFi2Kb37zm6XXWxQb/z+JOS/yu4IefvjhG3zdVh/4S5cujbFjx8bee+8dCxcujCVLlsTNN98cCxYsiDe96U1rv96KFSti3Lhxpd8VdOCnO63/gX/++efH5ptvXnpfVe6+++613y8TJkyI3Xfffe3//4EHHtjoX99Lud5alVb//Jt0ay/UD78Gvde3dsMNN8QNN9wQt99+e3zlK1+J97znPTFs2LC45JJLSl+3Sbd2+umnx5e//OVYsmRJfP7zn48999wzXvayl8W999670b+213K8tQceeCD222+/uPLKK2Px4sVxyy23xNlnnx0jkIj48gAAIABJREFUR46MadOmxe9+97vS623CrV122WVxwgknxN/93d/FkiVL4h//8R9j1qxZURTFBr+rd65yvLUIn2ut1PlzjcEz0OmIdj/wn3766TjzzDNjwoQJMWrUqDjooIPinnvuqfxzNR977LH4wAc+EDvvvHNsscUWsc0228Ree+0V5557bukB4YUG/itmVS/8r8Z77bVXbL/99pv8Xn/84x/HjBkzYtSoUbHNNtvE+973vtLrafWBH/Hcf3U98cQT1/55oePGjYv99tsvLrzwwg2+3k9+8pOYOXNmjBw5MrbZZps46aST4qabbip94A/8NOtN+VHagR9VrmrhwoUb/et7Kddbq9Lqn3+Tbu2F+nmgp7q166+/Pl71qlfFVlttFaNHj44DDjgg/vmf/7ny6zbp1o4++ujYYYcdYosttojtt98+TjjhhOx/wHFAjre2cuXKOPbYY2Py5MkxatSoGDFiRLzyla+MM888s/L3j2jKrd18882x//77x7hx42L48OHxkpe8JA444IDa/JnUOd5ahM+1Vur8ucbgGegQEU888UQMHz48rr766o1+3ap/ucGmcmuk4tZIxa2RilujCQx0iIh/+Zd/iUmTJm301xhF+MBnaNwaqbg1UnFrpOLWaAIDHdrkA59U3BqpuDVScWuk4taoKwMdAAAAMmCgAwAAQAYMdAAAAMiAgQ4AAAAZMNAbZs2aNbF8+fJYtWpVrF69WupaK1eujO9+97uxcuXKnr8W9XduTalya0qVW1OqVq1aFcuXL481a9b0eqbwPAO9YZYvXx5FUUiSJElSFEURy5cv7/VM4XkGesOsWrUqiqKI/YsjYkZxtNS19ikOdWtKkltTqtyaUuXWlKr9iyOi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QAcAAAAAAABQAIEOAAAAAAAAoAACHQAAAAAAAEABBDoAAAAAAACAAgh0AAAAAAAAAAUQ6AAAAAAAAAAKINABAAAAAAAAFECgAwAAAAAAACiAQAcAAAAAAABQAIEOAAAAAAAAoAACHQAAAAAAAEABBDoAAAAAAACAAgh0aBCe59XLsrKyWI9z0qRJxuPq3bt3rMeVKWVlZRndv0Ffr/nz50d7oBGQlK3t27dPFi9eLL1795acnBzJy8uTyy+/XHbs2BHrcWVKplvbtm2bTJo0STp06CDNmzeXY489Vn7+859He5ARkZStHerYkvzYlsnWli5desj7RdtjW1K2tnjxYjnppJPk8MMPl5ycHOnataucc845sm7duliPK1My2drHH38s55xzjvTq1Utat24tLVu2lH79+smcOXPk448/jv5gMyQpWzuQffv2ydChQ8XzPJk6dWrch5MRmT6HHsj69eslJydHPM+TV155JfODA7UQ6NAg1q5dW8uxY8dKbm6u7+OVlZWxHuekSZOMx/X666/HelyZEkWgn3XWWb775d133432QCMgKVv7wQ9+II0bN5bp06fLqlWr5NZbb5U2bdrI4MGD5dNPP4312DIhk61VVFTI0UcfLV26dJGlS5fKs88+W/NNs5KSkugPNkOSsrWDj2ft2rVy6623iud5cu2118Z6bJmQydbef/994/0yatQo8TxP/v73v0d/wBmQlK395Cc/kVmzZsmTTz4pzz//vPziF7+QXr16SatWrdTdp2HIZGs7d+6Us88+W+655x753e9+J7///e/lhhtukGbNmskZZ5wR/cFmSFK2diC33367dOzYkUA/gM8//1xOOukk6dSpE4HuAAQ6RMKkSZOkVatWdX7eJ598YuFo9lPf47LFvn375L///W/GtxNFoCf1SU/j1t555x1p0qSJXHXVVbU+/tBDD4nneXLvvfdaO5ZqNGxt/vz54nmevPrqq7U+XlhYKK1atZKdO3dmfHzZROPWgpg8ebI0atRI/vGPf1j/uzVszcTHH38srVu3llNPPTWS28smSdrahg0bxPM8ueGGG6z/3Vq3JiIyffp08TxP3nrrrchuMxto39rmzZuldevW8sQTT8R6raJtawsXLpTOnTvL4sWLCXQHINAhEkwP+Keddpr0799fXnjhBTnllFMkNzdXzjnnHBGpCsTi4mLf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e++99+Svf/2rVFRUyJ49e+Swww6TCy+8sP4neABp2dq+fftk06ZNsmHDBvn8889rfme/+ncctaJ9a3v27JEjjjhCBg8eXP+TCiAtWxORmld/vv322zO6HZto39rBDBs2TPr06dOgP5umrR3IP//5T/E8T26++ebIbjMbaNxacXFxnSH85JNPNuhck7y1goKCQ94nbdu2DX2bkAwIdIiEsA/4vXv3lrFjx9b6WPXv6x74gH/JJZdIp06dfL8TlAm//vWvxfM8ufXWWxv05+v6naYXX3yx5mOmB3wRkZEjR8rAgQNlz549h/y7bPyuZjVjx46VZs2ayQcffBDZbWaDJG1t8eLF0rhxY3nttdca9OfTuLU9e/bISSedJIMGDYrk9rKJ9q099thj4nkN+1Wfg0nT1saNG1frd0OTgPatHcgHH3wg7dq1873IVn1J09YOpPpdA5YtWxbZbWYDjVvbvHmzlJWV+fQ8T84880wpKytr0LVJ0re2du1a330yY8YM8TxP7rnnnlrHD+mCQIdICPuAP3fuXGnUqJHccMMN8txzz8ltt90mvXr1krZt29Z6wN+2bZsUFBRInz595K677pLVq1fLM888I3feeaeMGzdOysvLA49py5YtMmTIELnttttkxYoVsnLlSrn22mulRYsW0r9/f/n44499x+t5df8nMekQrwo6ZsyYWp8b9IC/fv16adeunZx44omydOlSKSsrk+XLtYv9IAAAIABJREFUl0tpaamcfvrpNZ+3fft26dChg+9VQat/ZPjAB/zZs2dLkyZN5Pnnnz/k8S9YsEAmT54sv/rVr6SsrEx+/etfS2FhoXieV+sVSbWicWsiVa+kfe+998rq1avl8ccfl0suuUQaNWok8+fP932uK1sTqXohnWXLlklZWZncd999MnDgQDn88MMb/PurNtG6tWpGjx4tubm5h/wxR5e2JiLy7rvvSpMmTeRb3/pWvT5fCxq3VlFRISeccIL89Kc/laefflpWr15d8xZULVu29P0OrCtbu+eee+T888+X//mf/5E1a9bIb3/7W5k+fbrk5ubKkCFD1L9QnMatBRH09Xdlayb4HXQ3INAhEsI+4O/Zs0emT58uXbt2ldzcXDnttNPk9ddfN76v5gcffCBXX321dO/eXZo1aybt27eXwYMHy3XXXeeL7APZsWOHTJw4Ubp16ya5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5rZo0aLKnzNv3rx04oknrvZrjz76aHrzm9+cttpqq7TBBhukbbfdNl144YXpl7/85Rqv6TOf+Uzq9Xrp5ptvXu3X//3f/z31er00Pj4++I2mVfd61113pSOPPDJtvPHG6fnPf34644wzKt/QVnxz+cAHPpB22WWXtMEGG6QPfOADKaWU7rvvvnT88cenLbbYIs2aNSvtsssu6X3ve1/l77v33nvT+Ph42mijjdLznve8dNppp6UvfOELa/2E/4pXvCL91m/9VuXXr7vuutTr9dKNN9448J9ZkohbSymlbbfdNh1++OFrfV85mr61v//7v0+9Xi995CMfWav7rxtbs7VSRN3aKAK96Vv7zetqIlG3toKxsbF03HHHrfy7Z/I4t2FrK/7+jTbaKH3+859PN9xwg0DvAAIdQ6HfE/7mm2+ettlmm/Te9743LVmyJH39619PKU3/Cf/RRx9N22yzTZo3b166/vrr01e/+tV0ySWXpGc961nppJNOWuM1rfg35V/72tdW+/Wf/exnaZ111klz5sxZ63udNWtWmjt3brrsssvSLbfcki688MK0/vrrp1e84hWr/d5er5e22mqrtOeee6aPf/zj6Wtf+1q666670t13350222yz9MIXvjB99KMfTbfcckt6xzvekdZdd9104YUXrvz//+u//mt6wQtekLbaaqt0ww03pJtuuimdcMIJae7cuWv9hL9w4cI0d+7cyq9ff/31qdfrpfPPP3/gP7MkEbf20EMPpV6vl84666x0/vnnpxe84AVpvfXWS7vtttuMgqHpW7v44otTr9dLn/3sZ9PLX/7y9KxnPSttsskm6Zhjjkn33nvvWj8upbA1WytFxK2tuK511103/dZv/VZad91101ZbbZXOOOOM9H//7/+d0b02eWsrruu5z31u2nDDDdOsWbPSPvvsk/7yL/9yrR+TkkTdWkop/cVf/EXabLPNVv6owDACvelbe/LJJ9Ohhx6aXv3qV6eUkkDvCAIdQ6HfE36v10u33npr5fdP9wn/tNNOS5tuuml68MEHV/t9ixcvTr1eL9199919r+m73/1u6vV66ZJLLlnt12+99dbU6/XSrFmzpnFnVVb8vPa111672q9fdtllqdfrpf/+3//7yl/r9Xpps802q7wp3fj4eNp6660rP/N15plnpg033HDl7z/33HPTOuusU/l5v7GxsbV+wj/77LPTuuuuW3lM/+AP/iD1er305je/eeA/syQRt3b77benXq+XnvOc56TddtstfepTn0pf+cpX0qte9aoZ/ThF07d22mmnrXxc3vSmN6WvfvWr6a//+q/TvHnz0vOf//z0yCOPDPxnlsTWbK0UEbeWUkqTk5NpcnIy3XLLLemWW25J73znO9PGG2+cdtlll/Qf//Ef07/B36DpW0sppde97nXpYx/7WPrGN76RPvOZz6SXv/zlqdfrpXe9611r9eeVJOrWHn744bTZZpul66+/frW/e6aB3vStvfe9703Pfe5z07/+67+mlAR6VxDoGAr9nvCf+9znZn//dJ/wt9pqq/TKV74y/fKXv1zNu+++O/V6vfRnf/Zna7yuQw89ND3nOc9Jn/rUp9JPfvKTdNttt6Udd9wxrbfeemnDDTcc+D5TWvWE/+Mf/3i1X7///vsrLwj0er2V/6nWCn72s5+l9ddfP5111lmV+7rppptSr9dLN910U0oppf333z/tsccelWtY8QS9Nk/499xzT3rWs56VDj744HTXXXelH//4x+l973vfyncGfctb3jLwn1mSiFu77bbbVr7o88ADD6z89SeffDLts88+aeuttx7sJp+i6Vs79dRTsz9O8p3vfCf1er30zne+c+A/syS2ZmuliLi1fqz48bHJycmB/78pNX9r/XjFK16R1l9//fR//s//GdqfOQqibu0Vr3hFOvTQQ9OTTz652t89jEBv6tYeeOCBtOmmm672KTsCvRsIdAyFfk/4u+22W/b3T/cJf/3110+9Xv+PBbn44ovXeF2PPfbYyle2Vxxqzz333LTvvvum7bfffuD7TOnX97r++utXfv1nP/tZ6vV66eyzz17tPt/61reu9vsefvjhNd5Tr9dLH/3oR1NKKW2//fZpwYIFlb/r5ptvntHh4qabbkrbbLPNyr9vxX/WlvsvDqIRcWvf//73U6/XS3vuuWflfzv//PNTr9dLjz322PRu8Ddo+tbOO++8vgf5OXPmpJe//OUD/5klsTVbK0XErfXjiSeeSJtsskn6/d///YH/vyk1f2v9+MQnPrFasEUl4tY+/elPp/XXXz/94z/+Y/rJT36y0l6vl0499dT0k5/8ZK0+eafpWzvmmGPSgQceuNpj8v73v3/ln7d06dKB/0w0A4GOodDvCX/33XfP/v5nPetZ6bzzzqv8+qabbrraE/7s2bPTwoUL07e+9a2s0/1Ik8ceeyz9r//1v9LSpUvTz3/+8/TsZz97rT96Z9BXZJ/+6u9//ud/pvXWWy+ddNJJfe9rxZ89ylf/n3zyyXTfffele+65J/3qV79a+TP7K37uLCoRt/bLX/4ybbzxxtloWhEO//Zv/zbNO1xF07e2YlO5aJo9e3Y65phjBv4zS2JrtlaKiFvrxxNPPJE23njj9NrXvnbg/29Kzd9aP2688cbU6/XSl7/85aH9maMg4tYWLVr0jCH8uc99bq3utclbmzdv3hofk80222zgPxPNQKBjKAz6hL/zzjuno48+erVfW/Gz4b/5hH/KKaekLbfcsvIzQTPh2muvTeuuu26688471+r//0w/0/QP//APK38t94SfUkoLFixIe+21V/r5z3++xr9rVD/T9HR+/vOfpwMOOCDtvffeQ/nzRknUrR1//PFpgw02SPfff//KX1vx0U8z+a81mry1n/zkJ2njjTdOY2Njq/36nXfeWTkcRcTWbK0UUbeW45Of/GTq9XrpPe95z1r9/5u+tX4cffTRaYMNNlirF8hKEnFr999/f1qyZEnFXq+Xfud3fictWbJkRi88NnVrt99+e+UxOffcc1Ov10t//ud/vtr1o10IdAyFQZ/wL7300rTOOuukd7/73emrX/1quu6669JOO+2UNttss9We8B955JE0b968tMsuu6Q/+7M/S7feemv60pe+lN7//venY445Jk1NTa3xuj74wQ+mD37wg+nWW29Nn/3sZ9Mpp5yS1llnnXTFFVdUfu+KN0mZzr32e1fQp/9nlP2e8O++++703Oc+N+2///7phhtuSEuWLElf+MIX0uTkZDriiCNW/r5HH300bbHFFpV3BV3xn6f/5hP+RRddlNZbb73093//9894D2eeeWb6zGc+k5YsWZI+/OEPp7322is973nPS3fdddcz/n/rJurWfvCDH6T/8l/+S9p5553TjTfemL70pS+l4447Lq2zzjrp05/+dOV6u7K1FW8QdOKJJ6Yvf/nL6SMf+UjaZptt0ty5c2f0TtAlsDVbK0XErT3wwAPpJS95SbruuuvSTTfdlG6++eZ03nnnpQ033DDtvvvu6f/9v/9Xud4ubO3qq69OJ510Uvrrv/7rtGTJkvTJT34yLVy4MPV6vdXe1TsqEbfWj35f/65sLYefQe8GAh1DYdAn/J///OfpnHPOSdtss03aaKON0mGHHZa++93vZj9X89/+7d/S2972tjR//vy0wQYbpM033zztu+++6Z3vfGflgPB0rr/++rTrrrumjTfeOG266abpkEMOSX/7t3+b/b377rtvmj179rTv9Xvf+146/PDD00YbbZQ233zzdPrpp1eup98Tfkq/fsX45JNPXvl5oVtssUV6yUteki699NLVft8999yTxsbG0oYbbpg233zz9KY3vSl9/vOfrzzhr/hPxKbzKu2xxx6b5syZkzbYYIM0e/bsdNJJJ632hlORibq1lFL6p3/6p3TMMcekZz/72WnDDTdMBx54YPq7v/u7yu/r0tZS+vVH5+yxxx5p1qxZ6XnPe1464YQT1uqwVhpbs7VSRNza448/no477ri07bbbpo022ijNmjUr7bjjjumcc87J/uxrV7b2hS98IR188MFpiy22SOuvv3569rOfnQ455JB04403PuO9RyDi1vrR7+vfla3lEOjdQKADKaV///d/T+uvv3563/ve94y/N/fNDZgutoZS2BpKYWsoha2hCwh0IKX0xS9+Mc2bN+8Zf8YoJU/4mBm2hlLYGkphayiFraELCHRgQDzhoxS2hlLYGkphayiFraGpCHQAAAAAAAIg0AEAAAAACIBABwAAAAAgAAIdAAAAAIAACPSO8cQTT6Spqam0dOnStGzZMnJkPv744+mOO+5Ijz/+eO3XwnZrayylrbGUtsZSLl26NE1NTaUnnnii7kzBUwj0jjE1NZV6vR5JkiRJpl6vl6ampurOFDyFQO8YS5cuTb1eLx3cOzod3juWHJkH9BbYGotoayylrbGUtsZSHtw7OvV6vbR06dK6MwVPIdBbzvLly1f7z1hW/Bv0w3vHpgXrvIocmkf2jlvtCf/A3pitcSTaGktpayylrbEuD+8dm3q9Xlq2bFnd2YKnEOgtZ9GiRdn/jMUTPoft/N6utsYi2hpLaWsspa2xLgV6PAR6y/Fv0FlKr/6zlLbGUtoaS2lrrEuBHg+B3jGWLVvmCZ9FXPEzTbbGUWtrLKWtsZS2xlIK9HgI9I4h0FlKhwuW0tZYSltjKW2NpRTo8RDoHUOgs5QOFyylrbGUtsZS2hpLKdDjIdA7hkBnKR0uWEpbYyltjaW0NZZSoMdDoHcMgc5SOlywlLbG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gQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAAAAQAAEOgAAAAAAARDoAAAAAAAEQKADAAAAABAAgQ4AAID/334dCwAAAAAM8reexo6yCIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAIABQQcAAICBAOz4PiBoH55lAAAAAElFTkSuQmCC\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(nrows=5, ncols=5, figsize=(10,15))\n",
    "for i in range(5):\n",
    "    for j in range(5):\n",
    "        idx = i*5+j\n",
    "        img = test_dataset[idx][0]\n",
    "        label = test_dataset[idx][1]\n",
    "        logits = network(img[None, ...]) # output\n",
    "        probs = F.softmax(logits, dim=1) # apply softmax to normalize them\n",
    "        predicted = torch.argmax(probs[0, ...]) # index of the highest probability\n",
    "        ax[i, j].imshow(img[0,...].detach().cpu().numpy())\n",
    "        ax[i, j].set(title=f\"True {label}, pred. {predicted}\")\n",
    "        ax[i, j].set_xticklabels([])\n",
    "        ax[i, j].set_yticklabels([])\n",
    "plt.subplots_adjust(hspace=0.2,wspace=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73e79a6d",
   "metadata": {},
   "source": [
    "We can also examine the probability that the network gives for all images in the expected class. That is: what is the predicted probability of the network for all images in the true class 4?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b447df87",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_loader = torch.utils.data.DataLoader(test_dataset, shuffle=False, batch_size=32)\n",
    "logits = list()\n",
    "label = list()\n",
    "for batch in test_loader:\n",
    "    logits += [network(batch[0])]\n",
    "    label += [batch[1]]\n",
    "logits = torch.cat(logits, dim=0)\n",
    "label = torch.cat(label, dim=0)\n",
    "probs = F.softmax(logits, dim=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d6df7b33",
   "metadata": {},
   "outputs": [],
   "source": [
    "probs_4 = probs.detach().cpu().numpy()[label.detach().cpu().numpy() == 4]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c850c24a",
   "metadata": {},
   "source": [
    "We can histogram it and see that it did mostly a good job, but sometimes it failed. We can go forward and make a cut in the probability and look at those images to identify which images were incorrectly classified."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "93a5fe94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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jBECAFBRdpQLdFoI9GKMEACAirKjXKDTQqAXY4QAAFSUHeUCnRYCfTt55ZVX4vLLL4/99tsvhoaGYv/994+rrroqXn311ZHXbNq0KRYsWBB77bVXDA0NxezZs+Pxxx8f9XU2bNgQ8+fPj2nTpsXEiRPjlFNOieHh4eZ7GCEAABVlR7lAp4VA304+85nPxLRp0+Kb3/xmrFy5Mr72ta/FpEmT4vrrrx95zcKFC2Py5Mlxxx13xNKlS+OMM86IvfbaK9avXz/ymgsvvDBmzJgR9957byxZsiTmzJkThx9+eGzcuLHpHkYIAEBF2VEu0Gkh0LeTk046KT760Y+Oevbbv/3bcdZZZ0XEL396Pn369Fi4cOHIxzds2BBTpkyJG2+8MSIi1q5dG+PGjYvbbrtt5DWrVq2KgYGBuPvuu5vuYYQAAFSUHeUCnRYCfTu59tprY999942nn346IiIeeeSR2GOPPeJv/uZvIiJixYoV0dfXF0uWLBn1eaeeemqcffbZERFx//33R19fX6xZs2bUaw477LC44oortvh9N2zYEOvWrRs5w8PDRggAQDnZUS7QaSHQt5NNmzbF7/3e70V/f3/svPPO0d/fH9dcc83Ixx988MHo6+uLVatWjfq88847L971rndFRMQtt9wS48eP3+xrn3DCCXH++edv8fsuWLAg+vr6NjtGCABAJdlRLtBpIdC3k1tvvTVmzpwZt956azz22GPxla98JaZOnRo33XRTRPx3oK9evXrU55177rlx4oknRsTrB/rcuXPjggsu2OL39RN0AAAQ6Fsi0LtHoG8nM2fOjC984Qujnn3605+OX//1X4+I/7tfcX8tIwQAoKLsKBfotBDo28nUqVPji1/84qhn11xzTRx44IER8d9vErdo0aKRj7/88stbfJO422+/feQ1q1ev9iZxAADwBrKjXKDTQqBvJx/5yEdixowZI39m7c4774w3velN8YlPfGLkNQsXLowpU6bEnXfeGUuXLo0zzzxzi39mbebMmXHffffFkiVL4vjjj/dn1gAA4A1kR7lAp4VA307Wr18fF198ceyzzz4xNDQUBxxwQFx++eXx8ssvj7xm06ZNsWDBgpg+fXoMDg7GcccdF0uXLh31dV566aWYP39+TJ06NSZMmBAnn3xyPPfcc833MEIAACrKjnKBTguBXowRAgBQUXaUC3Ra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npq38fqXTQl0tprm39l+ww03xKJFi2L69OnRp0+fePPNN6t+/euvvx69e/eO6dOnx6JFi+KGG26IhoaGuOuuu7p45BSl3jkzffr0uPzyy+OZZ56JJUuWxD//8z9HQ0NDzJs3r4tHTlHqnTPNVq5cGbvvvnsceuihAj0znZkzEydOjC996Uvx0EMPxdKlS+Ppp5+OJ598sgtHTZHqnTOPP/54dOvWLa655pp4/fXX4/HHH4+//Mu/jKOPPrqLR04R7r///rjgggti9uzZSYHu9S9tCXS2mrFjx8aUKVNa7dtrr71ixowZVb/+u9/9buy1116t9p166qlx4IEHbrUxUi71zplq9t5777jooou29NAoqc7OmW9+85vxL//yLzFz5kyBnpl658wDDzwQ/fv3jxUrVnTF8CiheufMlVdeGbvvvnurfddee20MHz58q42RckoJdK9/aUugs1V8/PHH0b1797j77rtb7T/zzDPjoIMOqnqbr371q3HmmWe22nf33XdHjx494pNPPtlqY6UcOjNn2lq/fn3ssssu8eMf/3hrDJGS6eyc+bd/+7fYf//94//+7/8EemY6M2emTp0aBx98cJx//vkxbNiwGDVqVJx77rnx4YcfdsWQKVhn5syTTz4ZjY2Ncd9998WGDRvif/7nf+Kggw6KU089tSuGTImkBLrXv7Ql0Nkq3n777ahUKpu9BfCSSy6JPfbYo+ptRo0aFZdcckmrfU8++WRUKpV45513ttpYKYfOzJm2rrjiihg4cGD88Y9/3BpDpGQ6M2eWLFkSO+64Y7z88ssREQI9M52ZM4cddlg0NTXFEUccEU8//XTcd999MWLEiPj2t7/dFUOmYJ393nTnnXfG9ttvHz169IhKpRITJ04UWxlKCXSvf2lLoLNVNH9De+qpp1rtv/jii2PPPfeseptRo0bFpZde2mrfE088EZVKJZYvX77Vxko5dGbObOq2226L3r17x0MPPbS1hkjJ1DtnPv3009h///1bffiOQM9LZ64zhxxySPTs2TNWrlzZsm/27Nmx3Xbb+Sl6BjozZ1588cUYOnRoXHHFFfH888/Hgw8+GPvss0985zvf6YohUyKpge71L5sS6GwV3uJOvf6ct7jfcccd0atXr/jP//zPrTlESqbeOfPBBx9EpVKJ7t27t2zbbbddy75HHnmkq4ZOQTpznTnppJPic5/7XKt9ixYtikqlEkuWLNlqY6UcOjNnTjjhhDj22GNb7Xv88cf9RDRD3uJOZwh0tpqxY8fG1KlTW+0bPXp0hx8SN3r06Fb7pkyZ4kMyMlLvnInY+JPznj17Jv0aEz576pkz69evjwULFrTapk6dGnvuuWcsWLAg1q5d21XDpkD1Xmd+9rOfRa9evWLNmjUt++69997o1q2bn6Bnot45c8wxx8Rxxx3Xat9TTz0VlUol3n777a02Tson9UPivP5lUwKdrab515LceOONsWjRojjrrLOiT58+8cYbb0RExIwZM+LEE09s+frmXzNx9tlnx6JFi+LGG2/0ayYyU++cue2226JHjx4xa9asWL58ecu26VtR+Wyrd8605S3u+al3zqxZsyaGDx8exx57bLz44osxd+7cGDVqVEyePLmoU6CL1TtnbrrppujRo0dcf/318dprr8UTTzwR+++/f4wdO7aoU6ALrVmzJubPnx/z58+PSqUSV111VcyfP7/l1/J5/UstAp2tatasWTFixIhobGyMMWPGxNy5c1v+36RJk2LcuHGtvn7OnDnxxS9+MRobG2O33XZr9W9FyUM9c2bcuHFRqVQ22yZNmtT1A6cw9V5nNiXQ81TvnHnppZdi/Pjx0atXrxg+fHicc845fnqemXrnzLXXXht777139OrVK4YOHRp///d/H3/4wx+6eNQU4dFHH+3wtYnXv9Qi0AEAAKAEBDoAAACUgEAHAACAEhDoAAAAUAICHQAAAEpAoAMAAEAJCHQAAAAoAYEOAAAAJSDQAQAAoAQEOgAAAJSAQIdMjRs3LqZPn77Vj9H2a2r9eWvqyvvKTVfNp5x4PLaeIq9DW9Nn5Ty2tM48Lu+9914MHjw4li5d2iW368ijjz4aI0aMqPl1XfX8f+Mb34gf/vCHyfuB+gh0KLlJkyZFpVKJSqUSPXr0iJEjR8a5554ba9eu/bOO21VBtWLFili9enW7t6n1/7fk2LbmsbeEsr24vvTSS6NSqSSNKadA76pxluXxqGcebCtqXYe66n639HHKMmeqKXJsnbnvc889N77zne/UfV/t3W758uVx+umnx8iRI6OxsTGGDx8eEyZMiIcffrjmMbdWoHf2OXn++edj4MCBsWrVqqT9QH0EOpTcpEmT4vDDD4/ly5fHW2+9Fbfeemv06tUrpkyZUvXrP/7446TjFhVUtW4j0GsfN/U5/nM888wzsdtuu8W+++4r0NvIKdDrnQdl0tE6KeqxFehdO7bmOVDvfX/44YfxF3/xF/HUU0/VdX/t3W7p0qUxbNiw2HvvvePOO++Ml19+ORYuXBg//OEPY88996x53LIFekTEmDFj4vrrr0/eD6QT6FBykyZNiqOOOqrVvsmTJ8eQIUMiYuM32GnTpsXZZ58dgwYNioMOOigiItatWxdnnHFGDB48OJqamuLLX/5yPPPMMy3HaL7dtGnTon///jFw4MC44IILYsOGDS1f88ADD8SXv/zllv9/xBFHxKuvvlrXMep5i/um7xZo3i666KIYOHBgrFu3rtVjcMwxx8SJJ57Y7mPW9jhLly6NcePGxRlnnBHnnXdeDBgwIHbaaaeYOXNmq9vWOuf2jl1NrWOljHnTx7ntczxixIj40Y9+1Oo4++23X8s5bdiwIS6//PIYOXJk9OzZM/bdd9+48847q97/ptasWROjRo2Khx56KPkFXK25kDKWtveVModrPZ+rV6+Ob33rW9G7d+8YMmRIXHXVVZvdz5133hmf//zno2fPnjFw4MA4+OCD232HSnvPU62xVrN+/fq47LLL4nOf+1w0NjbGLrvsEhdffHHVxyNlLnV0HvWcY7N650HKGDs651qPR+o1re06Wbt2bZx44onRp0+fGDJkSPzgBz9Iui5tibm1qS01d2pdKzoad2euCSmPRa3jVhvztddeG/3794/169dHRMT8+fOjUqnEP/3TP7Xc7pRTTom/+7u/i4jaz3/zWKvNgbbPywMPPBD9+vWLW265peo5z549O3bYYYeqj0VH17n2bve1r30tdt5556pr7oMPPqg6hk1VC/SUed3RmuxoHqWs5QsvvDC++tWvbjbW9vYD6QQ6lFy1QD/jjDNi0KBBEbHxBcP2228f5513XixevDheeumliIg488wzY9iwYXH//ffHiy++GJMmTYoBAwbEihUrWt1u+vTpsXjx4vjlL38ZvXv3jp///Oct93PXXXfF7NmzY8mSJTF//vw48sgjY5999ml5QZVyjHoCfeXKlfFXf/VXcfLJJ8fy5ctj+fLlsXbt2ujfv3/8+te/brnNu+++G42NjfHb3/626mNW7TiffvppjBs3Lvr16xcXXnhhLFmyJG655ZbYbrvt4je/+U3yObd37GpqHStlzB09x7UC/Xvf+17stdde8eCDD8Zrr70WN910UzQ1NcWcOXOqjrfZSSedFGedddZmz09Has2FlLG0va+UOVzr+Zw8eXKMGDEiHn744ViwYEF8/etfj759+7bczzvvvBM9evSIq666KpYuXRovvPBCzJo1K9asWVP1PNt7nmqNtZrvfve7MWDAgLj55pvj1VdfjccffzxuuOGGqo9HrbnU0XnUe47N6p0HKfO9o3Ou9XikXtParpOpU6fG8OHD4ze/+U288MILMWHChJa5Wu2xbv7znzu32tpSc6fWtaKjcXfmmpDyWNQ6brUxr1y5Mrp16xb//d//HRERV199deywww5xwAEHtBx3jz32iJ/85CdJz39Hc2DT5/f222+Pvn37xr333tvuOU+fPj0OP/zwqo9FR9e5ardbsWJFbLfddnHppZe2e3+1VAv0lHnd0ZrsaB6lrOX7778/mpqaNvvL8/b2A+kEOpRc20B/+umnY9CgQXHcccdFxMYXDF/4whda3Wbt2rXR0NAQt956a8u+Tz75JIYNGxZXXHFFy+1Gjx7d6qfd559/fowePbrdsfzpT3+KSqUSCxYsSD5GPYFe7c8RG1+IfO1rX2v589VXXx277757q/ttq9pxxo0bF1/5ylda7TvggAPi/PPPTz7n9o6dotqxao25eX/b5zii40Bfu3Zt9OzZc7O3Wv7jP/5jHH/88e2O8fbbb4/Pf/7z8dFHH3U4pmpjbG8upI5l0/tKncMdPZ+rV6+OhoaGVj/JW7lyZfTu3bvlfp599tmoVCrxxhtv1DzHauNMHWtbq1evjqamplYBWut+NtV2LnV0Hp05x87Og47G2NE513o8UudD23WyZs2aaGxsjDvuuKNl34oVK6JXr141r0N/7tyqZkvMnWrHSRl3Z68JtR6LzqzvZmPGjIkf/OAHERFx9NFHxyWXXBKNjY2xevXqWL58eVQqlXjppZeSH6f2rpXN9z1r1qzo379/u3+52+yoo46q+u/Ia33Pq3a7p59+OiqVStx9990d3mez//3f/41dd901zj333JZ9bQM9dV63Ve17eMq6rva96/nnn696XWlvP5BOoEPJTZo0Kbp37x59+vSJpqam6NatW3z961+PP/7xjxGx8Rvs5MmTW92mvW+QRx99dHz7299uuV3zfze79957o0ePHi1/i/7qq6/G8ccfHyNHjoy+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\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(10, 10))\n",
    "plt.hist(probs_4[:, 4], bins=20)\n",
    "ax.set(xlabel=r\"Probability that a true 4 belongs to class 4 according to the network (p(C$_4$|data))\",\n",
    "       ylabel=\"Number of occurences\",\n",
    "       title=\"\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bff1f8db",
   "metadata": {},
   "source": [
    "### Contact us at the EuXFEL Data Analysis group at any time if you need help analysing your data!\n",
    "\n",
    "#### Data Analysis group: da@xfel.eu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0879d703",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.6.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}