{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## reference:\n",
    "\n",
    "If you use this code for a publication, please reference as: \n",
    "arXiv:2008.04626: https://arxiv.org/abs/2008.04626"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "import sys\n",
    "import os \n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy as scp\n",
    "from scipy import *\n",
    "from scipy import fftpack\n",
    "import scipy.optimize as optimize\n",
    "import scipy.signal.windows as fft_windows\n",
    "from pylab import *\n",
    "import time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def XRR(data, crit_ang):\n",
    "    \"\"\"\n",
    "    Returns equally spaced data for the Fourier analysis of a typical XRR dataset.\n",
    "    Data must be an array with 2 Theta angle in the first column and the intensity in the second column\n",
    "    \"\"\"\n",
    "\n",
    "    # rescale x-axis to get at the end nm from the FFT (introduce diffraction vector: s_cor)\n",
    "    s_cor = 2*np.sqrt((np.cos(np.pi*crit_ang/2/180))**2 -\n",
    "                      (np.cos(np.pi*data[:, 0]/2/180))**2)/0.152\n",
    "\n",
    "    # mask all entrys which are 'nan' due to values below the critical angle\n",
    "    mask = np.logical_not(np.isnan(s_cor))\n",
    "    s_cor = s_cor[mask]\n",
    "\n",
    "    # subtract a background of 'theta^4 * intensity'\n",
    "    intensity = s_cor**4*data[mask, 1]\n",
    "\n",
    "    # create new x wave with even spacing going from the lowest\n",
    "    # to the highest diffraction vector\n",
    "    x = np.linspace(s_cor.min(), s_cor.max(), 1000)\n",
    "    f = scp.interpolate.interp1d(s_cor, intensity, kind='cubic')\n",
    "    return x, f(x)\n",
    "\n",
    "def FFT(x, y, d=None, window=2, n=None):\n",
    "    \"\"\"\n",
    "    Performs a (real) FFT using no window (0), a hanning (1), a hamming (2) or flattop (otherwise) window.\n",
    "    d is data spacing; if no d is given, the spacing of the first two data values in x is taken\n",
    "    x data have to be equaly spaced!\n",
    "    n = number of values taken into account, if n<len(y): data are cropped; if n>len(y): data are zero-padded\n",
    "    returns only one half of the full FFT (1st quadrant)\n",
    "    \"\"\"\n",
    "    if d is None:\n",
    "        d = (x[1]-x[0])\n",
    "    N = len(y)\n",
    "    # declaration of window functions\n",
    "    if 0 == window:\n",
    "        window = np.ones(N)\n",
    "    elif 1 == window:\n",
    "        window = fft_windows.hann(N)\n",
    "    elif 2 == window:\n",
    "        window = fft_windows.hamming(N)\n",
    "    else:\n",
    "        window = fft_windows.flattop(N)\n",
    "    if n is None:\n",
    "        n = N\n",
    "    # calculate fft with all correction factors:\n",
    "    # 2/N: up front to renormalize the FFT\n",
    "    # mean(window): window correction factor\n",
    "    yf = 2/N*np.abs(scp.fftpack.fft(window*y/np.mean(window), n=n))\n",
    "    # Calculate the frequency axis\n",
    "    xf = scp.fftpack.fftfreq(n, d=d)\n",
    "    return xf[:n//2], yf[:n//2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "y40 = genfromtxt('ml20191202b_2.xy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-9-a03690a7bae2>:8: RuntimeWarning: invalid value encountered in sqrt\n",
      "  s_cor = 2*np.sqrt((np.cos(np.pi*crit_ang/2/180))**2 -\n"
     ]
    },
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "    if (this.ratio !== 1) {\n",
       "        fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n",
       "    }\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",
       "    var resizeObserver = new 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 (width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    resizeObserver.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",
       "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.one(\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",
       "\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",
       "    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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7snQd4lMX69u/0EEhC7yH0jtJ7F2miNFHxSFMQ5NgVpSjCQdADf49goVsAPxFQqnQU6ShI7zWEFEICSUhvm+99JmwMISEbtu/ec125kuzOzDvzmyeZe5+ZecYlU0tgIgESIAESIAESIAEScBoCLhSATjPW7CgJkAAJkAAJkAAJKAIUgDQEEiABEiABEiABEnAyAhSATjbg7C4JkAAJkAAJkAAJUADSBkiABEiABEiABEjAyQhQADrZgLO7JEACJEACJEACJEABSBsgARIgARIgARIgAScjQAHoZAPO7pIACZAACZAACZAABSBtgARIgARIgARIgAScjAAFoJMNOLtLAiRAAiRAAiRAAhSAtAESIAESIAESIAEScDICFIBONuDsLgmQAAmQAAmQAAlQANIGSIAESIAESIAESMDJCFAAOtmAs7skQAIkQAIkQAIkQAFIGyABEiABEiABEiABJyNAAehkA87ukgAJkAAJkAAJkAAFIG2ABEiABEiABEiABJyMAAWgkw04u0sCJEACJEACJEACFIC0ARIgARIgARIgARJwMgIUgE424OwuCZAACZAACZAACVAA0gZIgARIgARIgARIwMkIUAA62YCzuyRAAiRAAiRAAiRAAUgbIAESIAESIAESIAEnI0AB6GQDzu6SAAmQAAmQAAmQAAUgbYAESIAESIAESIAEnIwABaCTDTi7SwIkQAIkQAIkQAIUgLQBEiABEiABEiABEnAyAhSATjbg7C4JkAAJkAAJkAAJUADSBkiABEiABEiABEjAyQhQADrZgLO7JEACJEACJEACJEABSBsgARIgARIgARIgAScjQAHoZAPO7pIACZAACZAACZAABSBtgARIgARIgARIgAScjAAFoJMNOLtLAiRAAiRAAiRAAhSAtAESIAESIAESIAEScDICFIBONuDsLgmQAAmQAAmQAAlQANIGSIAESIAESIAESMDJCFAAOtmAs7skQAIkQAIkQAIkQAFIGyABEiABEiABEiABJyNAAehkA87ukgAJkAAJkAAJkAAFIG2ABEiABEiABEiABJyMAAWgkw04u0sCJEACJEACJEACFIC0ARIgARIgARIgARJwMgIUgE424OwuCZAA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SgzltQfQUAEo4k/2ykkqUqSI2g+n98jltwScs60HDx5E+/bt1f49EW8ipH766Se19Krfryinhm/duqXErD79+9//Vnv6xLMnSfqwf/9+bNu2Te0nFA/on3/+qZarJYkY3bJlCzZs2KCWmSUci3hGcwvA3r17q1PO0h4R1V5eXmjTpg0mTZqULVjzOqxRvHhxNR7iraQAtN5/GwpAI9jbkgA8uv4VFIvfgihdA7R54VcjesWiJEACJFCwALQXRuJBK6wAFM/cE088ofbHycEISSJqJExLfgLw5ZdfhuyvE9GkT4YsAUt99evXV8/J6xBITgEoQm/u3Lm4fPly9jNGjhypDrLoBaAcEpEDKFKXPrVr104d6NALwJxjJ147EW+yj1C+cicRdLJ374svvrhPAMpSrrRHYvZJun79utorKHsq9R5LcwlA2RsoonngwIH5miKXgB/8V0oBaMR/MVsSgMm3T+L6lqeQkemO2s8cg6tH1j8tJhIgARIwBQF7PgVcWAEoe+FEyMjBDvEEipiS5WI58JCfABRxuGDBAuVVk3104p0LDQ0t8BCIjI149mTJtWHDhpgwYQLq1aunPIW7d+/GO++8g08//VS1Q7x6sly7bNkyJcrkZK1430TE6QWgnLSV08yyjC3i7YcfflDeNtlfKAJQPH2//fabWvqVgxTy+wsvvKDiF0r4mYULF6plcDlkcv78eQwePFgdPHnllVfuE4BSpxy+mDNnjjoAI4xkL6KwMLcArF27tlqiliVo8Tzql7Bz2joFIAWgKf735VmHLQlA+ad0db222TkhGGVb/w/+1fubrd+smARIwPkIOJMAlNEVQSSCRsKtiNAQUSRevvwEoCyFSkgWOUgie/MMDQOjt6QLFy4o4STiTJZkxSMosf+kTlnW1QeSltO+copWAjKLl1K/NJszZI2cchYxKmMmZUVMylKuCMCzZ8/irbfeUkvPMoeJ90/EpeyJlH18cvpXRKEsI8vev2HDhqlT07JHMvcSsCwVCxOpWwSztF+/X9HcAlA8reKxFC+rLKUzDEzh/yfRA1h4ZtklbEkASqNunfgct099AZfirVGz93IjesaiJEACJHAvAXsVgBxH5yVADyA9gGazflsTgKmxl3FtYzdo59lQY+BhuHllnepiIgESIAFjCVAAGkuQ5S1NgAKQAtBsNmdrAlA6emJ5OxTJ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oACkD5AACZAACZAACZCAzQhQANrshrO5JEACJEACJEACJEABSB8gARL4SwhYO4Bg55PSpUu7vSa2Zlq7dq18++23eaqT6z7LeTroby60detWwdZmhw4dEj8/P6/VBlswYoswbC8YHBzstevwxCRAAoWTAAVg4bxvrDUJFGgC7dq1k8aNG8usWbMy6pkXAYg9XZOSkiQ0NDRP7SuMAvCOO+6QYcOGyeOPP56nNv4nhXr06CFNmjSRV1555T85DY8lARLwQQIUgD54U9kkEvi7CeRXAHpa78ImAHfv3m1G5c6dOyeBgYGeNtfj8uvXr5dnnnlGjh8/LkWLFvX4eB5AAiTguwQoAH333rJlJPC3EOjXr5+8//77Wa7966+/ym+//Sbt27eXLVu2mM3qEQLFKOHixYulbt26pry7EPC7774rb7zxhhw5ckTKli0rPXv2lNmzZ5vyrgJwwoQJMmfOHNm8ebM5d7Vq1WTQoEHm2JiYGClTpowZDcNvlp06dUpGjhwpn332mQnJtm7dWt566y1zLAwjl6NGjZIff/xRihUrJg0aNJBly5ZJ1apV5bvvvpPhw4fLvn37TF1q164t8+fPF4zyubPnn39ezpw5Y+pimdXmF154QcaOHSsIkUMkLly4UEqUKGGKQVDfdtttRsSBrb+/v0ycOFEee+wxee6552TVqlUSFhZmuOBYy5KTk6VkyZLy6aefyl133fW3+AMvSgIkUDAJUAAWzPvCWpFAoSVw+fJlI0IaNmwoEGSw8uXLy65du4wAbN68uUybNs38htGptLQ0+eqrr0w5VwE4d+5cI86mTp1qzolzoyxEF8wSgF27djW/IX8QAhNCDAYRFxcXZ8TS3XffbYTSmDFjjJirV6+eJCQkGKHYpk0bc/wtt9wikyZNkv3798v3339vBGG5cuXkqaeeMnWFoNq7d69pR5UqVUwbo6KizDkhzpC7WKdOHWnUqJHb+4drPfLII0YAZxaAELio3/jx440A7NWrlwwYMEAmT56cIQAPHDhghGjv3r3lo48+kldffVXuuece6d69uxGIM2fOlJUrV5rRvqCgoIzzg3fnzp1NeRoJkAAJWAQoAOkLJEACfzqBnELAEGgdOnQw18TI1P333y+JiYkmJOoqAMPDw6V///5GlLkzCECMpq1bt86Mwn3++ecSERGRURQCEOJu6dKl5jeHwyEVK1Y0QguCDqOL0dHRcvjwYSMmYRB5mKQCMYmRPOQjYhSwbdu2N1UBo2vvvPOO9O3bN08McV6Uz5z/hzZPnz5dzp49mzHiB6G3c+dO2bNnT4YAhFCGiIbh76VKlRLk+C1ZssT8huMrVaokX3/9tbRo0SKjPiiDshhppZEACZAABSB9gARIwGsEchKAsbGxZvQPdvDgQTNJ4dixY2ZELbMARLkKFSoIZs1ixC07AQjBFxAQYMQSRusyGwTgkCFD5KWXXsr4GaNzCCOPGzfO/BtCtq75eBgZRCh58ODBRoAuX75cOnXqJB07djSjcxBaMNQXo3QQh/i3hx9+WGrWrJktV9Tzgw8+MOUswzkgYjEqaRlG8yAUjx49an4CT4SeUSfLEIJG+NdqG8QtRiwhhh988MGMcggTp6ammlFDGgmQAAlQANIHSIAEvEYgr5NAEDJFCBU5ghBrmQUgQrcYYctNAFoCbdGiRSYnzlUAIrRrhYzxbwjDduvWzVwLAg+h1Q8//PAmFhCpGDmDQahu2rRJMKkCy6tgpNEaZfvll19kw4YNsnHjRtmxY4esWLHChGXdGUY0EYrNnIPoLu8Rs6fxB3mTlgB0nVUNXq5tczcpBqFziFIrb9JrN50nJgESKFQEGAIuVLeLlSWBwkEA+WyY2IFRLMvcLQOTkwDEcdWrVzeiLqcQ8Jo1a0xo99FHHzVhzj59+mRc051IyiwAMdEC+XgQWhCbebGWLVtKs2bN5O23376pOPL74uPj5ZNPPnF7qi5dukitWrWyLI/jbQEYGRlpxO7AgQPz0jyWIQESsAkBCkCb3Gg2kwT+SgIY4YK4w6SEkJAQM3sXOW0I5WZeCDo3AYgZr8jVw6QRjGRhVBCTQIYOHWqak3nECxM8kFuHfL+HHnrI/HtuAtCaBIKROUxYQTgZkyhWr15tQqspKSmyYMECE1KtXLmyWVQZIg+CFLOdUQbXglA9efKkyQVEeBn1dWcQxGgT8hUt86YAhLCtUaOGGWFFyJhGAiRAAhYBCkD6AgmQwJ9OAGFRiCEsk4IJHpmXgfFEAKJiyNFDThzy4ZDjB8Fljb65hjwhOHFdhHQx+SE3AYjzY/IERgExIQUCE2IQk1RmzJhh6g4B+s0338iFCxdM7h/OjzAu8urwdwhSrOuHuuGamNCR3Rp/aDvOj5ByTkvf/Fkh4Ndff92EpRG+ppEACZBAZgIUgPQHEiABEvgLCWCGL5azgbD1pmFHFSyHgwksrVq18ualeG4SIIFCSIACsBDeNFaZBEig8BKA+MNsXow6enN3DozCbtu2TZ5++unCC4s1JwES8BoBCkCvoeWJSYAESIAESIAESKBgEqAALJj3hbUiARIgARIgARIgAa8RoAD0GlqemARIgARIgARIgAQKJgEKwIJ5X1grEiABEiABEiABEvAaAQpAr6HliUmABEiABEiABEigYBKgACyY94W1IgESIAESIAESIAGvEaAA9BpanpgESIAESIAESIAECiYBCsCCeV9YKxIgARIgARIgARLwGgEKQK+h5YlJgARIgARIgARIoGASoAAsmPeFtSIBEiABEiABEiABrxH4fzezqDxhIL+XAAAAAElFTkSuQmCC\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Gaussian full\n",
      "- a1: 0.12, p1:3.65nm, w1:3.80nm\n",
      "- a2: 0.09, p2:7.30nm, w2:1.58nm\n",
      "- a3: 0.27, p3:10.96nm, w3:3.60nm\n",
      "- Noise\n",
      "- amp: 0.96, exp: 1.44\n",
      "- z0: 0.00\n"
     ]
    }
   ],
   "source": [
    "# define data set\n",
    "dat = y40\n",
    "\n",
    "crit = 0.6 # manually determined\n",
    "\n",
    "################## FFT ##############################################################################\n",
    "\n",
    "# to compare the padded data to the \"normal\" data: normalize y-axes to first value\n",
    "# for normalization of padded data\n",
    "FFTpadx = FFT(*XRR(dat,crit), window=2, n=10000)[0]\n",
    "FFTpady = FFT(*XRR(dat,crit), window=2, n=10000)[1]\n",
    "\n",
    "# padded data: normalize y-axis to first value\n",
    "FFTpady_n = FFTpady/FFTpady[0]\n",
    "\n",
    "################## mask the spectrum to fit separate regions #########################################\n",
    "\n",
    "# mask for only fitting the 1/f background; remove any peaks\n",
    "mask5 = logical_or(logical_and(FFTpadx > 1, FFTpadx < 5), logical_and(FFTpadx > 26, FFTpadx < 80))\n",
    "xmask5 = FFTpadx[mask5]\n",
    "ymask5= FFTpady_n[mask5]\n",
    "\n",
    "# mask for full spectrum fit; remove initial points to avoid always getting a peak in the initial 1/f background\n",
    "mask6 = logical_and(FFTpadx > 1.1, FFTpadx < 80) \n",
    "xmask6 = FFTpadx[mask6]\n",
    "ymask6 = FFTpady_n[mask6]\n",
    "\n",
    "####################################################################################################\n",
    "\n",
    "# fitting \n",
    "\n",
    "####################################################################################################\n",
    "# 1/f fitting\n",
    "def funcNoise(x, amp, ex):\n",
    "    return amp/pow(x, ex) # y-offset = white noise \n",
    "\n",
    "poptfNoise, pcovfNoise = optimize.curve_fit(funcNoise, xmask5, ymask5)\n",
    "#print('poptfNoise:{}'.format(poptfNoise))\n",
    "\n",
    "################################################################################################\n",
    "# gaussian fitting\n",
    "def funcGauss(p, a, pmax, w):\n",
    "    return a*exp(-log(2)*((pmax-p)/(w/2))**2)\n",
    "\n",
    "def funcGauss2(p, a1, a2, pmax1, pmax2, w1, w2):\n",
    "    return funcGauss(p, a1, pmax1, w1) + funcGauss(p, a2, pmax2, w2)\n",
    "\n",
    "def funcGauss3(p, a1, w1, a2, pmax2, w2, a3, pmax3, w3, amp, ex, z0):\n",
    "    pmax1=pmax3-pmax2\n",
    "    return funcGauss2(p, a1, a2, pmax1, pmax2, w1, w2) + funcGauss(p, a3, pmax3, w3) + funcNoise(p, amp, ex) +z0\n",
    "\n",
    "\n",
    "poptGauss3, pcovGauss3 = optimize.curve_fit(funcGauss3, xmask6, ymask6, \n",
    "                                            p0=[0.2, 0.3, 0.2, 7, 0.3, 0.2, 13, 0.3, 1, 2, 2e-3], bounds=(0,inf))\n",
    "                                         \n",
    "#print(pcovGauss3)\n",
    "######################################################################################################\n",
    "\n",
    "# plotting\n",
    "\n",
    "######################################################################################################\n",
    "\n",
    "# Gaussian\n",
    "\n",
    "f, ax = subplots(2,1, sharex=True, sharey=True)\n",
    "\n",
    "# plot data (FFT + zero padding)\n",
    "ax[0].plot(FFTpadx, FFTpady_n, 'o-', markersize=1, linewidth=0.7, color = 'dimgrey', label='data')\n",
    "ax[1].plot(FFTpadx, FFTpady_n, 'o-', markersize=1, linewidth=0.7, color = 'dimgrey', label='data')\n",
    "\n",
    "# plot fit\n",
    "ax[0].plot(xmask6, funcGauss3(xmask6, *poptGauss3), '-', color = 'goldenrod', label='multi-Gaussian fit')\n",
    "\n",
    "\n",
    "# plot single graphs with parameters from combined fit\n",
    "ax[1].plot(xmask6, funcGauss(xmask6, *poptGauss3[2:5]),'--', color = 'darkblue', label='Gaussian 1')\n",
    "ax[1].plot(xmask6, funcGauss(xmask6, poptGauss3[0], poptGauss3[6]-poptGauss3[3], poptGauss3[1]),\n",
    "        '--', color = 'purple', label='Gaussian 2')\n",
    "ax[1].plot(xmask6, funcGauss(xmask6, *poptGauss3[5:8]),'--', color = 'teal', label=r'Gaussian 3')\n",
    "ax[1].plot(xmask6, funcNoise(xmask6, *poptGauss3[8:10]),'--', color = 'chocolate', label=r'1/f$^\\alpha$')\n",
    " \n",
    "\n",
    "ax[0].set_ylabel(r\"normalized FFT amplitude\", y=0)\n",
    "ax[1].set_xlabel(r\"thickness (nm)\")\n",
    "\n",
    "\n",
    "ax[0].set_xlim(0,35)\n",
    "ax[0].set_ylim(0,0.45)\n",
    "\n",
    "ax[0].legend()#loc='lower right')\n",
    "ax[1].legend()#loc='lower right')\n",
    "#ax[2].legend()\n",
    "\n",
    "f.subplots_adjust(hspace=0)\n",
    "\n",
    "print('Gaussian full')\n",
    "print('- a1: {:.2f}, p1:{:.2f}nm, w1:{:.2f}nm'\n",
    "      .format(poptGauss3[0], poptGauss3[6]-poptGauss3[3],poptGauss3[1]))\n",
    "print('- a2: {:.2f}, p2:{:.2f}nm, w2:{:.2f}nm'\n",
    "      .format(*poptGauss3[2:5]))\n",
    "print('- a3: {:.2f}, p3:{:.2f}nm, w3:{:.2f}nm'\n",
    "      .format(*poptGauss3[5:8]))\n",
    "print('- Noise')\n",
    "print('- amp: {:.2f}, exp: {:.2f}'.format(poptGauss3[8], poptGauss3[9]))\n",
    "print('- z0: {:.2f}'.format(poptGauss3[10]))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "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.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
