You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

5681 lines
2.8 MiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Import supporting package"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import xarray as xr\n",
"import numpy as np\n",
"import copy\n",
"\n",
"from uncertainties import ufloat\n",
"from uncertainties import unumpy as unp\n",
"from uncertainties import umath\n",
"import random\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['font.size'] = 12\n",
"\n",
"from DataContainer.ReadData import read_hdf5_file\n",
"from Analyser.ImagingAnalyser import ImageAnalyser\n",
"from Analyser.FitAnalyser import FitAnalyser\n",
"from Analyser.FitAnalyser import NewFitModel, DensityProfileBEC2dModel\n",
"from ToolFunction.ToolFunction import *\n",
"\n",
"from scipy.optimize import curve_fit\n",
"\n",
"from ToolFunction.HomeMadeXarrayFunction import errorbar, dataarray_plot_errorbar\n",
"xr.plot.dataarray_plot.errorbar = errorbar\n",
"xr.plot.accessor.DataArrayPlotAccessor.errorbar = dataarray_plot_errorbar\n",
"\n",
"imageAnalyser = ImageAnalyser()\n",
"\n",
"# %matplotlib notebook"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Start a client for parallel computing"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
" <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <h3 style=\"margin-bottom: 0px;\">Client</h3>\n",
" <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Client-a5e5cea6-2fbd-11ee-8430-80e82ce2fa8e</p>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
"\n",
" <tr>\n",
" \n",
" <td style=\"text-align: left;\"><strong>Connection method:</strong> Cluster object</td>\n",
" <td style=\"text-align: left;\"><strong>Cluster type:</strong> distributed.LocalCluster</td>\n",
" \n",
" </tr>\n",
"\n",
" \n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" \n",
"\n",
" </table>\n",
"\n",
" \n",
"\n",
" \n",
" <details>\n",
" <summary style=\"margin-bottom: 20px;\"><h3 style=\"display: inline;\">Cluster Info</h3></summary>\n",
" <div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\">\n",
" </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <h3 style=\"margin-bottom: 0px; margin-top: 0px;\">LocalCluster</h3>\n",
" <p style=\"color: #9D9D9D; margin-bottom: 0px;\">49266936</p>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Workers:</strong> 8\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads:</strong> 128\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total memory:</strong> 149.01 GiB\n",
" </td>\n",
" </tr>\n",
" \n",
" <tr>\n",
" <td style=\"text-align: left;\"><strong>Status:</strong> running</td>\n",
" <td style=\"text-align: left;\"><strong>Using processes:</strong> True</td>\n",
"</tr>\n",
"\n",
" \n",
" </table>\n",
"\n",
" <details>\n",
" <summary style=\"margin-bottom: 20px;\">\n",
" <h3 style=\"display: inline;\">Scheduler Info</h3>\n",
" </summary>\n",
"\n",
" <div style=\"\">\n",
" <div>\n",
" <div style=\"width: 24px; height: 24px; background-color: #FFF7E5; border: 3px solid #FF6132; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <h3 style=\"margin-bottom: 0px;\">Scheduler</h3>\n",
" <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Scheduler-6db1fb2d-d8be-4f76-9fcf-6a7cc9ed86ee</p>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm:</strong> tcp://127.0.0.1:63903\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Workers:</strong> 8\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads:</strong> 128\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Started:</strong> Just now\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total memory:</strong> 149.01 GiB\n",
" </td>\n",
" </tr>\n",
" </table>\n",
" </div>\n",
" </div>\n",
"\n",
" <details style=\"margin-left: 48px;\">\n",
" <summary style=\"margin-bottom: 20px;\">\n",
" <h3 style=\"display: inline;\">Workers</h3>\n",
" </summary>\n",
"\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 0</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63943\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63946/status\" target=\"_blank\">http://127.0.0.1:63946/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63906\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-sctehcfb\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 1</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63957\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63959/status\" target=\"_blank\">http://127.0.0.1:63959/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63907\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-b1kdawd2\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 2</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63948\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63951/status\" target=\"_blank\">http://127.0.0.1:63951/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63908\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-845evwbp\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 3</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63942\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63944/status\" target=\"_blank\">http://127.0.0.1:63944/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63909\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-xneexydx\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 4</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63949\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63953/status\" target=\"_blank\">http://127.0.0.1:63953/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63910\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-zb64b79v\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 5</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63950\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63954/status\" target=\"_blank\">http://127.0.0.1:63954/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63911\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-q6lyanmx\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 6</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63925\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63934/status\" target=\"_blank\">http://127.0.0.1:63934/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63912\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-1cvfk3q5\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
" <div style=\"margin-bottom: 20px;\">\n",
" <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
" <div style=\"margin-left: 48px;\">\n",
" <details>\n",
" <summary>\n",
" <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 7</h4>\n",
" </summary>\n",
" <table style=\"width: 100%; text-align: left;\">\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Comm: </strong> tcp://127.0.0.1:63958\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Total threads: </strong> 16\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:63961/status\" target=\"_blank\">http://127.0.0.1:63961/status</a>\n",
" </td>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Memory: </strong> 18.63 GiB\n",
" </td>\n",
" </tr>\n",
" <tr>\n",
" <td style=\"text-align: left;\">\n",
" <strong>Nanny: </strong> tcp://127.0.0.1:63913\n",
" </td>\n",
" <td style=\"text-align: left;\"></td>\n",
" </tr>\n",
" <tr>\n",
" <td colspan=\"2\" style=\"text-align: left;\">\n",
" <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-0agsu53e\n",
" </td>\n",
" </tr>\n",
"\n",
" \n",
"\n",
" \n",
"\n",
" </table>\n",
" </details>\n",
" </div>\n",
" </div>\n",
" \n",
"\n",
" </details>\n",
"</div>\n",
"\n",
" </details>\n",
" </div>\n",
"</div>\n",
" </details>\n",
" \n",
"\n",
" </div>\n",
"</div>"
],
"text/plain": [
"<Client: 'tcp://127.0.0.1:63903' processes=8 threads=128, memory=149.01 GiB>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from dask.distributed import Client\n",
"client = Client(n_workers=8, threads_per_worker=16, processes=True, memory_limit='20GB')\n",
"client"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Start a client for Mongo DB"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import pymongo\n",
"import xarray_mongodb\n",
"\n",
"from DataContainer.MongoDB import MongoDB\n",
"\n",
"mongoClient = pymongo.MongoClient('mongodb://control:DyLab2021@127.0.0.1:27017/?authMechanism=DEFAULT')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set global path for experiment"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"groupList = [\n",
" \"images/MOT_3D_Camera/in_situ_absorption\",\n",
" \"images/ODT_1_Axis_Camera/in_situ_absorption\",\n",
" \"images/ODT_2_Axis_Camera/in_situ_absorption\",\n",
"]\n",
"\n",
"dskey = {\n",
" \"images/MOT_3D_Camera/in_situ_absorption\": \"camera_0\",\n",
" \"images/ODT_1_Axis_Camera/in_situ_absorption\": \"camera_1\",\n",
" \"images/ODT_2_Axis_Camera/in_situ_absorption\": \"camera_2\",\n",
"}\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"img_dir = 'C:/Users/control/DyLab/Experiments/DyBEC/'\n",
"SequenceName = \"Repetition_scan\"\n",
"folderPath = img_dir + SequenceName + \"/\" + get_date()\n",
"\n",
"mongoDB = mongoClient[SequenceName]\n",
"\n",
"DB = MongoDB(mongoClient, mongoDB, date=get_date())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Repetition Scans"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## scan MOT freq"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'initial_horz_freq': array([102.75, 102.8 , 102.85, 102.9 , 102.95, 103. , 103.05]), 'initial_vert_freq': array([101.8 , 101.85, 101.9 , 101.95, 102. , 102.05, 102.1 , 102.15,\n",
" 102.2 , 102.25])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0014\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0,1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (310, 815)\n",
"imageAnalyser.span = (550, 1275)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.pcolormesh(ax=ax, vmin=0, cmap='jet', cbar_kwargs = dict(label='NCount'))\n",
"plt.xlabel('Vert AOM Frequency')\n",
"plt.ylabel('Horz AOM Frequency')\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: 'â–º';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: 'â–¼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;OD&#x27; (initial_horz_freq: 1, initial_vert_freq: 1)&gt;\n",
"array([[65351.30239154]])\n",
"Coordinates:\n",
" * initial_horz_freq (initial_horz_freq) float64 103.0\n",
" * initial_vert_freq (initial_vert_freq) float64 101.8</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'OD'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>initial_horz_freq</span>: 1</li><li><span class='xr-has-index'>initial_vert_freq</span>: 1</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-1a84307d-0552-4450-aa56-34b422ac9c57' class='xr-array-in' type='checkbox' checked><label for='section-1a84307d-0552-4450-aa56-34b422ac9c57' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>6.535e+04</span></div><div class='xr-array-data'><pre>array([[65351.30239154]])</pre></div></div></li><li class='xr-section-item'><input id='section-fc5fcc47-c424-4595-8493-b6fb33ab058a' class='xr-section-summary-in' type='checkbox' checked><label for='section-fc5fcc47-c424-4595-8493-b6fb33ab058a' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>initial_horz_freq</span></div><div class='xr-var-dims'>(initial_horz_freq)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>103.0</div><input id='attrs-2cb7430e-3fbe-4518-a5b0-c4ffa0684653' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-2cb7430e-3fbe-4518-a5b0-c4ffa0684653' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-601e3bd6-edb0-4887-b832-a015a068cfbd' class='xr-var-data-in' type='checkbox'><label for='data-601e3bd6-edb0-4887-b832-a015a068cfbd' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([103.05])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>initial_vert_freq</span></div><div class='xr-var-dims'>(initial_vert_freq)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>101.8</div><input id='attrs-ceb926a9-c49d-45f6-b305-c3026f758a01' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-ceb926a9-c49d-45f6-b305-c3026f758a01' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cdbc3fd8-77d8-4bda-8dc6-706f8c67e989' class='xr-var-data-in' type='checkbox'><label for='data-cdbc3fd8-77d8-4bda-8dc6-706f8c67e989' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([101.85])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-510b5835-0192-48da-a654-eee9ac81726a' class='xr-section-summary-in' type='checkbox' ><label for='section-510b5835-0192-48da-a654-eee9ac81726a' class='xr-section-summary' >Indexes: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>initial_horz_freq</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-7f10b146-9ec5-442b-9b19-2080607460c7' class='xr-index-data-in' type='checkbox'/><label for='index-7f10b146-9ec5-442b-9b19-2080607460c7' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([103.05], dtype=&#x27;float64&#x27;, name=&#x27;initial_horz_freq&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>initial_vert_freq</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-bd796bae-f9a5-43d3-9805-41d56c0daed1' class='xr-index-data-in' type='checkbox'/><label for='index-bd796bae-f9a5-43d3-9805-41d56c0daed1' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([101.85], dtype=&#x27;float64&#x27;, name=&#x27;initial_vert_freq&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-316a92ba-57fa-476c-8a3d-03a5d5c15ba6' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-316a92ba-57fa-476c-8a3d-03a5d5c15ba6' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'OD' (initial_horz_freq: 1, initial_vert_freq: 1)>\n",
"array([[65351.30239154]])\n",
"Coordinates:\n",
" * initial_horz_freq (initial_horz_freq) float64 103.0\n",
" * initial_vert_freq (initial_vert_freq) float64 101.8"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## scan MOT amp"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'initial_horz_amp': array([0.45, 0.49, 0.53, 0.57, 0.61, 0.65, 0.69, 0.73, 0.77, 0.81]), 'initial_vert_amp': array([0.35, 0.39, 0.43, 0.47, 0.51, 0.55, 0.59, 0.63, 0.67, 0.71])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0015\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0,1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (310, 815)\n",
"imageAnalyser.span = (550, 1275)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.pcolormesh(ax=ax, vmin=0, cmap='jet', cbar_kwargs = dict(label='NCount'))\n",
"plt.xlabel('Vert AOM Frequency')\n",
"plt.ylabel('Horz AOM Frequency')\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: 'â–º';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: 'â–¼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;OD&#x27; (initial_horz_amp: 1, initial_vert_amp: 1)&gt;\n",
"array([[70751.40524034]])\n",
"Coordinates:\n",
" * initial_horz_amp (initial_horz_amp) float64 0.81\n",
" * initial_vert_amp (initial_vert_amp) float64 0.59</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'OD'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>initial_horz_amp</span>: 1</li><li><span class='xr-has-index'>initial_vert_amp</span>: 1</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-177509d9-805b-470b-a14d-b81705fd4a60' class='xr-array-in' type='checkbox' checked><label for='section-177509d9-805b-470b-a14d-b81705fd4a60' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>7.075e+04</span></div><div class='xr-array-data'><pre>array([[70751.40524034]])</pre></div></div></li><li class='xr-section-item'><input id='section-76e14a22-fe3b-447b-b2dd-2bb3ba9aabbf' class='xr-section-summary-in' type='checkbox' checked><label for='section-76e14a22-fe3b-447b-b2dd-2bb3ba9aabbf' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>initial_horz_amp</span></div><div class='xr-var-dims'>(initial_horz_amp)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.81</div><input id='attrs-94907e0a-18ce-4351-bfaf-d564533bd62f' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-94907e0a-18ce-4351-bfaf-d564533bd62f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e22171f2-c0a0-45f8-84b3-b4e8ef1bb135' class='xr-var-data-in' type='checkbox'><label for='data-e22171f2-c0a0-45f8-84b3-b4e8ef1bb135' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0.81])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>initial_vert_amp</span></div><div class='xr-var-dims'>(initial_vert_amp)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.59</div><input id='attrs-8ec82677-4202-4a42-869f-e24cda492fcb' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-8ec82677-4202-4a42-869f-e24cda492fcb' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d4611850-9260-41d7-b5c7-4bf79a2b8bba' class='xr-var-data-in' type='checkbox'><label for='data-d4611850-9260-41d7-b5c7-4bf79a2b8bba' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0.59])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-4f941a64-d6be-490e-8286-4af1fee95797' class='xr-section-summary-in' type='checkbox' ><label for='section-4f941a64-d6be-490e-8286-4af1fee95797' class='xr-section-summary' >Indexes: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>initial_horz_amp</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-7335d05f-250d-4928-af8b-4bf9e657a1f1' class='xr-index-data-in' type='checkbox'/><label for='index-7335d05f-250d-4928-af8b-4bf9e657a1f1' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.81], dtype=&#x27;float64&#x27;, name=&#x27;initial_horz_amp&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>initial_vert_amp</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-a2197422-b511-436b-a0cf-e953f218a55d' class='xr-index-data-in' type='checkbox'/><label for='index-a2197422-b511-436b-a0cf-e953f218a55d' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.59], dtype=&#x27;float64&#x27;, name=&#x27;initial_vert_amp&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-57d22b47-c86e-46e6-801b-f9ca3622dd9b' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-57d22b47-c86e-46e6-801b-f9ca3622dd9b' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'OD' (initial_horz_amp: 1, initial_vert_amp: 1)>\n",
"array([[70751.40524034]])\n",
"Coordinates:\n",
" * initial_horz_amp (initial_horz_amp) float64 0.81\n",
" * initial_vert_amp (initial_vert_amp) float64 0.59"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scan final Z Comp Current"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'compZ_final_current': array([0.233, 0.234, 0.235, 0.236, 0.237, 0.238, 0.239, 0.24 , 0.241,\n",
" 0.242]), 'runs': array([0., 1., 2.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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gZctB+yp1a4xab5AAFSeU1JAyvK87V67cLwduGFhYGYLHniBly0H7KnVrjFpvkAAVJ5TUkDK8rztXrtwvB24YWFgZgseeIGXLQfsqdWuMWm+QABUnlNSQMryvO1eu3C8HbhhYWBmCx54gZctB+yp1a4xab5AAFSeU1JAyvK87V67cLwduGFhYGYLHniBly0H7KnVrjFpvkAAVJ5TUkDK8rztXrtwvB24YWFgZgseeIGXLQfsqdWuMWm+QABUnlNSQMryvO1eu3C8HbhhYWBmCx54gZctB+yp1a4xab5AAFSeU1JAyvK87V67cLwduGFhYGYLHniBly0H7KnVrjFpvkAAVJ5TUkDK8rztXrtwvB24YWFgZgseeIGXLQfsqdWuMWm+QABUnlNSQMryvO1eu3C8HbhhYWBmCx54gZctB+yp1a4xab5AAFSeU1JAyvK87V67cLwduGFhYGYLHniBly0H7KnVrjFpvkAAVJ5TUkDK8rztXrtwvB24YWFgZgseeIGXLQfsqdWuMWm+QABUnlNSQMryvO1eu3C8HbhhYWBmCx54gZctB+yp1a4xab5AAFSeU1JAyvK87V67cLwduGFhYGYLHniBly0H7KnVrjFpvvAuAD777LM0f/582rJlC5UpU4ZuvPFGGjVqFDVo0MDRZ0Mff/xxWrZsGX3xxRdUoUIFuu222+i5556jmjVr5syQli1b0htvvJFnxnTt2pXmzp2b82+HDx+m/v370+LFi92/tW/fniZOnEgVK1bMabNr1y7q168frV692unJzMykMWPGUKlSpRKajVJACV0kgo20CyeCloU+JDALHUEgAeAVyK7QG4NX6AgCC9BmJs0X3gXA22+/nbp160Y33HADnTp1ih577DH66KOP6NNPP6ULL7yQjh49SnfddRfdf//91KhRI+IQN2DAANf2vffeyxMA69evT0899VTOv3GA48AYO9q2bUvZ2dk0ZcoU9099+vShOnXq0JIlS9zfT58+TY0bN6aqVavS2LFj6eDBg9SjRw/q1KmTC4qJHFJAiVwjim20CyeKnoU9JjALm0Cw64NXML/Cbg1eYRMIfn1tZtJ84V0AzG/x119/TdWqVXOreS1atCiUwLvvvktNmjShnTt30mWXXeba8Aogh7fx48cXes7mzZupYcOGtH79emratKlrw39u3ry5W33kFcfly5dTu3btaPfu3Tmri7yC2LNnT9q/fz+VL18+7oyQAop7gYg20C6ciNoW6rDALFT7A18cvAJbFuoJ4BWq/UW6uDYzab7wPgBu376d6tWr51YBr7766kIh/PWvf6XWrVvTkSNHckIZB8BPPvmEzpw5Q9WrVyde7XvyySepXLlyro+pU6fSwIED3Tm5D779O27cOOrVqxcNGzaMFi1aRJs2bcppwiuOlSpVcreEMzIy4k4KKaC4F4hoA+3CiahtoQ4LzEK1P/DFwSuwZaGeAF6h2l+ki2szk+YLrwMgh7cOHTq427xvvvlmoQBOnDhBv/jFL+iqq66i2bNn57R5+eWXqW7dunTJJZfQxx9/TEOHDqUrr7ySVq1a5dqMHDmSpk+fTtu2bcvTL9825vDH7fmW8I4dO2jlypV52pQuXdqd27179wKaTp48Sfxf7GBA6enpdODAgYRWDIs0yyJ4EhcOs2rVqhWVLFkygiOM3pDAzBZT8AIvWw7YU6tdY5wvqlSp4h6NS+SOZH4HvQ6AvPnitddeo7feeotq1apVgD6be/fddxNv1Fi7du05Ddi4cSNdf/31xP+/7rrrXACcMWMGbd26NU+/vNrYu3dvGjJkiAuAfFt5xYoVedrwBpCZM2e6ZxXzH8OHD6cRI0YU+PesrCwqW7asvRkMxXAADsABOAAH4IB3Dhw/ftxtTI1cAHzwwQdp4cKFtG7dOreSl//g8NelSxe3E5hvx1auXPmccHg1kVfuZs2aRbwbWOsWMFYAk1Mj2r85JUclesntAJjZmg/gBV62HLCnVrvGIrcCyEGNw9+CBQvcqh6vyJ0t/H322We0Zs0at0s33sG3ga+55pqczSSxTSAbNmxwG0j44D83a9aswCYQ3ilco0YN12bevHluJzA2gcRzXPZ17WcnZOpwdmEOgJmteQFe4GXLAXtqtWsscs8A9u3bl/h2KW++iL37j7Hz61v4NS78upfOnTvT+++/T0uXLnUbPGIHb87g27Off/45vfLKK3THHXe4++P8CplBgwa583nHcIkSJdwpvDFk7969NHnyZPd3vuVbu3btAq+B4WuMHj2aDh065HYAd+zYEa+BUa5F7cJRlp+S3YOZLezgBV5hO3D6NBE/3r9vHxGvsdx8M9GPP57DlpaU62vXWOQCYFpaWqHGT5s2zYUv3pRR2C1hPolXA3n3L7+25Z577nGbP44dO+Y2Ydx5551uFzCHxNjBgS7/i6AnTZpU4EXQHErzvwiabycnckgBJXKNKLbRLpwoehb2mMAsbALBrg9ewfwKu3XUeM2fT/TQQ0TZ2f92lh/1nzCBqFOnsN1OzvW1mUnzhdebQJKDINxepIDCVR/e1bULJ7yRRffKYGaLLXiBV1gOcPi76y6iM2fyKohvD3DSAAAgAElEQVSt/7z6ajRCoHaNSfMFAqByBUgBKcvztnvtwvF24IaFgZkteOAFXmE4wLd969TJu/KXWweHQF4J/PJL+7eDtWtMmi8QAJUrQApIWZ633WsXjrcDNywMzGzBAy/wCsOBtWuJEvgMBVqzhj/RKwyFybumdo1J8wUCYPJYF9qTFJCyPG+71y4cbwduWBiY2YIHXuAVhgNz5hBlZsa/clYWUSGftRD/RI9aaNeYNF8gACpPFikgZXnedq9dON4O3LAwMLMFD7zAKwwHsAKYPNel+QIBMHkssAKYRC/xwymJZhZTV2BWTEYn6TLglSQji6mbqPCKPQO4Z0/BTSBsJZ4BTHxCIQAm7lUoLaWAQhHtwUWj8s3OAyuLTQKYFZvVSbkQeCXFxmLrJEq8YruA2bzcO4GxCzjYdJLmC6wABvM7cGspoMAXjMgJUfpmFxEkcYcBZnEt8qoBeHmFI66YqPEq7D2A6elE48dH4xUwDFSbmTRfIADGLTtZAykg2dXtnq1dOHad8VP5P/9JdNFFP2g7fPj/qGLFkn4KhaocB1BjtiZDFHnhk0Bkc1CaLxAAZf7HPVsKKO4FItogit/sIorKDeubb/jjGn8Y4ZIlp6ht2/Mj9ZFOUWSHGrNFFbxs8cIKoD1eSVeMAFg0S/HNrmi+hXEW38rp35+IH+qOHVH7SKcwfNW+JmpM2+Hk9g9eyfWzOHrTZibNF1gBVJ4FUkDK8rztXrtwvB24MWGp8pFOxrAkJBc1lpBN3jQCL29QJCxEm5k0XyAAJoyyaA2lgIp2VftnaReOfYfCH0EqfaRT+G4nXwFqLPmeavYIXpru6vStzUyaLxAAdbjn9CoFpCzP2+61C8fbgRsSlkovdDWEJWGpqLGErfKiIXh5gSGQCG1m0nyBABgIZ/DGUkDBrxiNM7QLJxouhTuKVPpIp3Cd1rk6akzHV61ewUvLWb1+tZlJ8wUCoB5717MUkLI8b7vXLhxvB25IGFYADcEqRCpqzBY/8LLFi9VqM5PmCwRA5TklBaQsz9vutQvH24EbEpZKH+lkCEvCUlFjCVvlRUPw8gJDIBHazKT5AgEwEM7gjaWAgl8xGmdoF040XAp/FKnykU7hO518Baix5Huq2SN4abqr07c2M2m+QADU4Z7TqxSQsjxvu9cuHG8HblBYYe8BjNpHOhnEElcyaiyuRV41AC+vcCQkRpuZNF8gACaEseiNpICKfmXbZ2oXjm13/FOPTwLxj0k8RaixeA759XXw8otHImq0mUnzBQJgIhQFbaSABJc2fap24Zg2x1PxYOYpmLPIAi/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNF94FwGeffZbmz59PW7ZsoTJlytCNN95Io0aNogYNGuTQP3PmDI0YMYKmTJlChw8fpqZNm9If//hH+ulPf5rT5uTJk/Twww/TnDlz6LvvvqNbb72VXnzxRapVq1ZOGz63f//+tHjxYvdv7du3p4kTJ1LFihVz2uzatYv69etHq1evdnoyMzNpzJgxVKpUqYRmoxRQQheJYCPtwomgZaEPCcxCRxBIAHgFsiv0xuAVOoLAArSZSfOFdwHw9ttvp27dutENN9xAp06doscee4w++ugj+vTTT+nCCy90ADgQPvPMMzR9+nSqX78+/eEPf6B169bR1q1bqVy5cq7NAw88QEuWLHFtKleuTIMGDaJDhw7Rxo0bqUSJEq5N27ZtKTs72wVJPvr06UN16tRx5/Fx+vRpaty4MVWtWpXGjh1LBw8epB49elCnTp1cUEzkkAJK5BpRbKNdOFH0LOwxgVnYBIJdH7yC+RV2a/AKm0Dw62szk+YL7wJgfou//vprqlatGr3xxhvUokUL4tW/mjVr0oABA+iRRx5xzXm1r3r16i4Y/vrXv6ajR4+60DZr1izq2rWra7N3715KT0+nZcuWUZs2bWjz5s3UsGFDWr9+vVtB5IP/3Lx5c7f6yCuOy5cvp3bt2tHu3bvdNfmYO3cu9ezZk/bv30/ly5ePOyOkgOJeIKINtAsnoraFOiwwC9X+wBcHr8CWhXoCeIVqf5Eurs1Mmi+8D4Dbt2+nevXquVXAq6++mr744gu64oor6P3336drr702B0qHDh3crdsZM2a427V8y5dX/C6++OKcNo0aNaKOHTu628dTp06lgQMH0pEjR/KA5T7GjRtHvXr1omHDhtGiRYto06ZNOW34tnGlSpXcNTIyMuJOCimguBeIaAPtwomobaEOC8xCtT/wxcErsGWhngBeodpfpItrM5PmC68DIK/2cbDj0PXmm286AO+88w7ddNNNtGfPnpxVOf53vn27c+dOWrFiBWVlZbkAxyuDuY/WrVtT3bp1afLkyTRy5Eh3e3jbtm152vAtZT536NChrs8dO3bQypUr87QpXbq0O7d79+4FJgVfM/d1GRCvPB44cCChFcMizbIInsSFs2rVKmrVqhWVLFkygiOM3pDAzBZT8AIvWw7YU6tdY5wvqlSp4u56JnJHMr+DXgdA3nzx2muv0VtvvZWzeSMWAPmWbo0aNXLGc//997tbtX/5y1/OGgA5TPDq4UsvveQCIK8W8nODuQ9ebezduzcNGTIkT6jM3YY3gMycOdM9q5j/GD58uFthzH9wKC1btqy9GQzFcAAOwAE4AAfggHcOHD9+3G1MjVwAfPDBB2nhwoVucwev2sUO328BYwUwOTWi/ZtTclSil9wOgJmt+QBe4GXLAXtqtWssciuAfNuXw9+CBQto7dq17vm/3EdsE8jvfvc7+v3vf+++9P3337uNIvk3gcyePZu6dOni2uzbt8+tIubfBLJhwwZq0qSJa8N/btasWYFNILxTOLbaOG/ePLcTGJtAdItR+9kJXfWp2TuY2eIOXuBlywF7arVrLHLPAPbt29fdwuXNF7nf/VehQgX3Hj4+OOjx+wKnTZvmAiLfzuWwmP81MEuXLnXP6vGmDX4nIL/GJf9rYPhWMj8TyAc/81e7du0Cr4HhHcajR492m0p4BzBvJMFrYHSLUbtwdNWnZu9gZos7eIGXLQfsqdWuscgFwLS0tEIpc9jj8MVH7EXQHNxyvwiadwnHjhMnTtDgwYNdmMz9ImjekBE7ONDlfxH0pEmTCrwImkNp/hdB80aQRA4poESuEcU22oUTRc/CHhOYhU0g2PXBK5hfYbcGr7AJBL++NjNpvvB6E0hwu/07QwrIvxEVjyLtwimeUaTWVcDMFm/wAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthS+89/El100Q+aDx/+P6pYsWTSByDNFwiASUeSt0MpIGV53naPH07eojmrMDCzxQy8wMuWA7bUIgDa4qWiFgGwaLbih1PRfAvzLDAL0/3g1wav4J6FeQZ4hel+8GsjAAb3LHJnIAAWDSm+2RXNtzDPArMw3Q9+bfAK7lmYZ4BXmO4HvzYCYHDPIncGAmDRkOKbXdF8C/MsMAvT/eDXBq/gnoV5BniF6X7wa6dUAFy3bh3deOONdP755+dx6tSpU/TOO+9QixYtgjsYgTMQAIsGEd/siuZbmGeBWZjuB782eAX3LMwzwCtM94NfO6UCYIkSJWjfvn1UrVq1PE4dPHjQ/dvp06eDOxiBMxAAiwYR3+yK5luYZ4FZmO4HvzZ4BfcszDPAK0z3g1/7m2+IKlT44bwlS05R27bnU4kSwfs51xnSfJG0XcDnnXceffXVV1S1atU8erdt20bXX389sdBUPKSAUtEzHjO+2dkjD2a2mIEXeNlywI7a+fOJ+vcn2rPn35pr1SKaMIGoU6fkjUOaL8QBsNOPo1m0aBHdfvvtVLp06ZzR8arf3//+d2rQoAH95S9/Sd6oDfUkBWRoqEmVih9OSbWzWDoDs2KxOWkXAa+kWVksHYFXsdgsvgiHv7vuIjpzJm9XaWk//P3VV5MXAqX5QhwAe/Xq5QY1Y8YM6tKlC5UpUyZn1KVKlaI6derQ/fffT1WqVBEba7EDKSCLY06GZnyzS4aLxdsHmBWv39KrgZfUweI9H7yK1++iXI2fdKtThyg7u/CzOQTySuCXX1JSbgdL84U4AMaGOWLECHr44YfpwgsvLIpvkT1HCiiyxsQZGL7Z2SMPZraYgRd42XLAf7Vr1xJlZMTXuWYNUcuW8dvFayHNF0kLgPGEpurXpYBS1Tf8cLJHHsxsMQMv8LLlgP9q58whysyMrzMri6h79/jt4rWQ5oukBUDeAMIrgK+//jrt37+fzuS7AY5dwEepfPny8Xji6z86gB9O9qYCmNliBl7gZcsB/9Wm7Apg27ZtadeuXfTb3/6WatSoQWmxJx5/ZNahQwf/6SkolCZ0BUkmusQPJxOY8ogEM1vMwAu8bDngv9rYM4C8+zf/JhBWH9lnAMuVK0dvvvkmNW7c2H9KxagQAbBoZuOHU9F8C/MsMAvT/eDXBq/gnoV5BniF6X7i147tAuYzcofASO4CjtnSsGFDeuWVV+jaa69N3KlCWvIniowePZo2btzoXiy9YMEC6tixY07L/CuLsS88//zzNHjwYPfXli1b0htvvJGn965du9LcuXNz/u3w4cPUv39/Wrx4sfu39u3b08SJE6lixYo5bXhFs1+/frR69Wq3uzkzM5PGjBlDvLs50QMBMFGn8rbDN7ui+RbmWWAWpvvBrw1ewT0L8wzwCtP9YNcu7D2A6elE48cn7xUwrEiaL5L2DODKlStp7NixNHnyZPfql6Iey5cvp7fffpuuu+466ty5c4EA+I9//CNP19y+d+/etH37drr88stzAmD9+vXpqaeeymnLAa5C7LXcRMS3rLOzs2nKlCmuTZ8+fZzuJUuWuL/zM4u8mskvtuZx8Sea9OjRg/i9hxwUEz2kgBK9TtTa4ZudPaJgZosZeIGXLQdsqU2pTwK5+OKL6fjx48Sf/Vu2bFkqWbJkHlqHDh0KTI9X+/KvAObvhFcHv/32W7f5JHbwCiCHt/Ectws5Nm/eTLxiuX79emratKlrwX9u3rw5bdmyxb24moNlu3btaPfu3VSzZk3XhlcQe/bs6Ta5JLqhAwEwMHZ3An44Fc23MM8CszDdD35t8AruWZhngFeY7ge/dkp9FjC/CPpcB6+eBT3iBUDeeVyrVi33Emq+PZs7AH7yySduJ3L16tXdat+TTz5J/JwiH1OnTqWBAwfSkSNH8kji27/jxo0jfrn1sGHDiD/dZNOmTTlt+LZxpUqV3C3hjERe9pOEJdqgnkWlPb7Z2SMJZraYgRd42XLAltqUCoAaaOIFQH7u77nnnqO9e/fSBRdckCPh5Zdfprp169Ill1xCH3/8MQ0dOpSuvPJKWrVqlWszcuRImj59OvHnFOc++LYxhz9uz7eEd+zYQXxrO/fBH3XH53Y/y0t8Tp48Sfxf7OAVwPT0dDpw4EDCq4YaXlrrk384Ma9WrVoVWE22NpZU0QtmtkiDF3jZcsCWWg6AF1/8w53Q/fuPU8WKee+KJmM0nC/4U9aOHi3aa+aS9gwgb5g413HZZZcFHm+8AHjVVVe5gBDvmTzeUHL99de7jSX8bCEHQF413Lp1ax5N9erVc88TDhkyxAXAnTt30ooVK/K04Q0gM2fOpG7duhU6nuHDhxN/Kkr+Iysry90axwEH4AAcgANwAA5E24ETJ0pQt27t3CDnzl1KF1xwOukD5sfu+O5n6AHwvPPOK/Duv9yjLcqLoM8VAPmVMy1atKAPP/yQGjVqdE5j+VYwr9zNmjWLeDew5i1grAAmZ45jdSI5PhZnL2BWnG7LrwVecg+LswfwKk635ddKqRXA3M/KsXU8WT/44AN64YUX6JlnnnG7Z4Me5wqAvBmDb+++9957cbvldtdcc417NQyHxtgmkA0bNlCTJk3c+fznZs2aFdgEwjuF+cXWfMybN8/tBMYmkLiWixvg+SSxhcXeAZgVu+WiC4KXyL5iPxm8it1y0QXxDCARvfbaa+69fmv5M1ISOI4dO+Ze6cIHv1OQAyRvuODNF7HbyHzfm0MZv57lN7/5TZ5eP//8c/c+wjvuuMPdG//0009p0KBB7j1+7777LpUoUcK1540h/Owgv7aGD77lW7t27QKvgeFNJKyfdzFz6ORdx/FuOecWhF3ACUAvpAm+2RXNtzDPArMw3Q9+bfAK7lmYZ4BXmO4X7drazKT5ImnPAJ7Nns8++8y9kuWfHIcTODgoFrbDllfeePMFH/zuvgEDBrgXRed+tx9/jV/bcs8997jVQQ6TvAHjzjvvdLuAOUTGDg50+V8EPWnSpAIvgu7bt2+BF0Hz7eREDymgRK8TtXbahRM1v3wYD5j5QCFxDeCVuFc+tAQvHygE06DNTJovkhYAWUjug5+744DGmyL43Xr8rF4qHlJAqegZj1m7cFLVV81xg5mmu8nvG7yS76lmj+Cl6a5O39rMpPkiaQGwsE0gHAJ5BY5foMwvWU7FQwooFT1DALRJXfubnU1X/FUNXv6yKUwZeNniVRw/x6T5ImkBMP9n73Ig5I9R4/fvnX/++fbIJUmxFFCSZJjrBt/szCHDqq0xZKgxW8DAyxavlAqA9tAUj2IEwKL5jG92RfMtzLPALEz3g18bvIJ7FuYZ4BWm+0W7tjYzab5I2gog28M7cPnzd/k1K/wKl5/85Cf00EMP0RVXXFE09yJwlhRQBCwo0hC0C6dIonDSOR0AM1sTBLzAy5YD9tRq15g0XyQtAPInZrRv397t+L3pppvc5/C+88477rN0lyxZ4j6xIxUPKaBU9Kw4ls5T1VfNcWt/s9PUnop9g5ct6uBli1dx/ByT5oukBUB+Z1+bNm3cZ/PmPvhj1fjzdN9//3179JKgWAooCRJMdoFvdvawgZktZuAFXrYcsKdWu8ak+SJpAfCCCy6gjz76iPjzdHMf27Zto5/97Gd04sQJe/SSoFgKKAkSTHahXTgmTfFcNJh5DiifPPACL1sO2FOrXWPSfJG0AMive+FP7bj77rvzUPrzn/9MDz/8MO3atcsevSQolgJKggSTXWgXjklTPBcNZp4DQgC0BQi8TPNi8drfE6X5ImkB8KmnnqJx48YR3/K98cYb3SaQt956i0aNGuU+iu3xxx83D7MoA5ACKso1o3COduFEwSPfxgBmvhE5tx7wAi9bDthTq11j0nyRtADImz54BzB/Pi9/xi4fNWvWpMGDB7uPXONAmIqHFFAqelYcvzmlqq+a49b+ZqepPRX7Bi9b1MHLFq/i+DkmzRdJC4C50Xz77bfur+XKlbNHLMmKpYCSLMdMd/hmZwZVjlAws8UMvMDLlgP21GrXmDRfiAPgd999R6tWraKMjIwCgY/FrV271u0OLl26tD16SVAsBZQECSa70C4ck6Z4LhrMPAeUTx54gZctB+yp1a4xab4QB8AJEybQ4sWL6fXXXy+Uzm233Ua//OUvqV+/fvboJUGxFFASJJjsQrtwTJriuWgw8xwQAqAtQOBlmheL1/6eKM0X4gDYpEkTeuKJJ+g//uM/CoW1dOlS4g0if/vb38zDLMoApICKcs0onKNdOFHwyLcxgJlvRM6tB7zAy5YD9tRq15g0X4gD4MUXX+w+7eOyyy4rlA6//qVRo0Z0+PBhe/SSoFgKKAkSTHahXTgmTfFcNJh5DggrSrYAgZdpXimxAsgbPfg5v5///OeFwtq4cSO1bNmSYhtDzBMNOAAEwICG/dgcYaJovoV5FpiF6X7wa4NXcM/CPAO8wnS/aNfWZibNF+IVwGbNmrln/B555JFCHeKPhlu4cCGtX7++aA4aP0sKyPjwiyxfu3CKLAwnntUBMLM1OcALvGw5YE+tdo1J84U4AE6ZMoUGDhxIc+fOpXbt2uUhtGTJEurevbv7hJA+ffrYo5cExVJASZBgsgvtwjFpiueiwcxzQPnkgRd42XLAnlrtGpPmC3EAZCT33HMPZWVl0VVXXUUNGjRwL33evHkz8ecAd+nShebMmWOPXJIUSwElSYa5brQLx5whBgSDmQFIuSSCF3jZcsCeWu0ak+aLpARAxsKf+fvKK6/Q9u3biT8VpH79+pSZmekCYCofUkCp6p124aSqr5rjBjNNd5PfN3gl31PNHsFL012dvrWZSfNF0gKgjn32e5UCsu9A0UagXThFUyU76/RpojffJNq3j6hGDaKbbyYqUULWp09nR5GZT/4mWwt4JdtR3f7AS9dfjd61mUnzhTgAnnfeeXE/55dvCZ86dUrDX+/7lALyfoBKArULR0n2WbudP5/ooYeIsrP/3aRWLaIJE4g6dSpuNTrXixozHZf86RW8/GGRiBLwSsQlv9poM5PmC3EAXLRo0Vkdf+edd2jixInuljB/ZFwqHlJAqegZj1m7cIrTVw5/d91FdOZM3qumpf3w91dfjUYIjBKz4pwfYV0LvMJyvmjXBa+i+RbmWdrMpPlCHAALM3fLli00dOhQ4l3Av/rVr+jpp58+64uiw4RTHNeWAioOjT5eQ7twimvMfNu3Tp28K3+5r80hkFcCv/zS/u3gqDArrrkR9nXAK2wCwa4PXsH88qG1NjNpvkhqANy7dy89+eSTNGPGDGrTpg2NHDmSrrnmGh84hKZBCig04SFfWLtwimt4a9cSZWTEv9qaNUQtW8Zv53OLqDDz2eNkagOvZLqp3xd46Xuc7CtoM5Pmi6QEwKNHj7qwx7d7GzduTKNGjaKb+Ql3HCQFlKoWahdOcfnKb0DKzIx/tawsou7d47fzuUVUmPnscTK1gVcy3dTvC7z0PU72FbSZSfOFOAA+//zzLvBdcsklLgR26NAh2R6a7k8KyPTgBeK1C0cgLdCpWAEMZBcaF6MDUamxYrQs1EuBV6j2F+ni2syk+UIcAHkXcJkyZei2226jEud4p8V8fhI+BQ8poBS0zA1Zu3CKy9fYM4B79hTcBMIa8AxgcZHAdfI7EJUaSxWy4GWPtDYzab4QB8CePXvGfQ0MY5s2bZo9eklQLAWUBAkmu9AunOI0JbYLmK+ZeycwdgEXJwVcCwHQ9hyI0vdE2yQSV6/NTJovxAEwcStSs6UUUGq6Fp0VwBi/wt4DmJ5ONH58NF4BE6VV21SpOe0fTqniY3GNE7yKy+nkXUebmTRfIAAmj3WhPUkBKcvztnvtwglj4PgkkDBcxzXP5kAUayzKtMHLHl1tZtJ8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgA7SaZYAACAASURBVJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nzhXQBct24djR49mjZu3Ej79u2jBQsWUMeOHXPI82tn+KPmch9Nmzal9evX5/zTyZMn6eGHH6Y5c+bQd999R7feeiu9+OKLVIs/dPXH4/Dhw9S/f39avHix+5f27du7TzKpWLFiTptdu3ZRv379aPXq1e5dh5mZmTRmzBgqVapUwjNRCijhC0WsoXbhRMwuL4YDZl5gSFgEeCVslRcNwcsLDIFEaDOT5gvvAuDy5cvp7bffpuuuu446d+5caAD86quv8rxXkANZpUqVcsA88MADtGTJEpo+fTpVrlyZBg0aRIcOHXKhMvay6rZt21J2djZNmTLFndenTx+qU6eOO4+P06dPu4+1q1q1Ko0dO5YOHjxIPXr0oE6dOrmgmOghBZTodaLWTrtwouaXD+MBMx8oJK4BvBL3yoeW4OUDhWAatJlJ84V3ATC3vWlpaYUGwCNHjtDChQsLJcGfS8yhbdasWdS1a1fXZu/evZSenk7Lli2jNm3a0ObNm6lhw4Zu1ZBXD/ngPzdv3py2bNlCDRo0IA6i7dq1o927d1PNmjVdm7lz5xKvQO7fv5/Kly+f0EyQAkroIhFspF04EbQs9CGBWegIAgkAr0B2hd4YvEJHEFiANjNpvjAZADn88aof36695ZZb6JlnnqFq1ao5OHy7lm/58orfxRdfnAOsUaNG7lbyiBEjaOrUqTRw4EDiIJn74P7GjRtHvXr1omHDhtGiRYto06ZNOU34tjGvNPI1MjIyCp0MfPuZ/4sdDIjD54EDBxIOjYFnWQRP4MJZtWoVtWrVikqWLBnBEUZvSGBmiyl4gZctB+yp1a4xzhdVqlQhXvhKdFEqt4vmAuC8efPooosuotq1a9OXX35JTzzxBJ06dcrd3i1dujRlZWW5AJc7hPGAW7duTXXr1qXJkyfTyJEj3e3hbdu25ZlR9evXd+cOHTrU3RLesWMHrVy5Mk8bvgaf271790Jn4/Dhw13IzH+wrrJly9qbwVAMB+AAHIADcAAOeOfA8ePH3d6ElAmA+QnwRhEOg3x7lp/PO1sA5JWkK664gl566SUXAHkjydatW/N0V69ePerduzcNGTLEBcCdO3fSihUr8rThlceZM2dSt27dsAKoWA7avzkpSk/ZrsHMFnrwAi9bDthTq11jKbcCWNgU4OB233330SOPPBL6LeD8+qT36O1N+eQo1n52Ijkq0UtuB8DM1nwAL/Cy5YA9tdo1Js0X5m4B558CvDv30ksvdbt57733XrcUyptAZs+eTV26dHHNeZWQXwGTfxPIhg0bqEmTJq4N/7lZs2YFNoHwTuEaNWq4Nnz7mXcCYxOIfiFqF47+CFLvCmBmizl4gZctB+yp1a6xyAXAY8eO0fbt2x3pa6+9ll544QW34YI3X/B//Iwdvx6GQxk/o/foo48Sv6+Pd/aWK1fOncevgVm6dKl7Vo/P4XcCclDM/xoY3h3MzwTywbd8+VZy/tfAVK9e3b2XkDeV8A5g3kiC18DoF6J24eiPIPWuAGa2mIMXeNlywJ5a7RqLXABcu3ZtoTtseeXtT3/6kwtgH3zwgdvByyGQw+HTTz/tdtrGjhMnTtDgwYPd84C5XwSduw0Huvwvgp40aVKBF0H37du3wIugeSNIoocUUKLXiVo77cKJml8+jAfMfKCQuAbwStwrH1qClw8UgmnQZibNF17fAg5mtZ+tpYD8HJW+Ku3C0R9B6l0BzGwxBy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRcIgMpzSgpIWZ633WsXjrcDNywMzGzBAy/wsuWAPbXaNSbNFwiAynNKCkhZnrfdaxeOtwM3LAzMbMEDL/Cy5YA9tdo1Js0XCIDKc0oKSFmet91rF463AzcsDMxswQMv8LLlgD212jUmzRfeBcB169bR6NGjaePGjbRv3z5asGABdezY0ZFnMx9//HFatmwZffHFF1ShQgW67bbb6LnnnqOaNWvmzI6WLVvSG2+8kWe2dO3alebOnZvzb4cPH6b+/fvT4sWL3b+1b9+eJk6cSBUrVsxps2vXLurXrx+tXr2aypQpQ5mZmTRmzBgqVapUwjNRCijhC0WsoXbhRMwuL4YDZl5gSFgEeCVslRcNwcsLDIFEaDOT5gvvAuDy5cvp7bffpuuuu446d+6cJwAePXqU7rrrLrr//vupUaNGxCFuwIABdOrUKXrvvffyBMD69evTU089lfNvHOA4MMaOtm3bUnZ2Nk2ZMsX9U58+fahOnTq0ZMkS9/fTp09T48aNqWrVqjR27Fg6ePAg9ejRgzp16uSCYqKHFFCi14laO+3CiZpfPowHzHygkLgG8ErcKx9agpcPFIJp0GYmzRfeBcDc9qalpeUJgIVZ/+6771KTJk1o586ddNlll7kmvALI4W38+PGF0tq8eTM1bNiQ1q9fT02bNnVt+M/NmzenLVu2UIMGDYiDaLt27Wj37t05q4u8gtizZ0/av38/lS9fPqGZIAWU0EUi2Ei7cCJoWehDArPQEQQSAF6B7Aq9MXiFjiCwAG1m0nxhPgD+9a9/pdatW9ORI0dyQhkHwE8++YTOnDlD1atXJ17te/LJJ6lcuXIO4NSpU2ngwIHunNwH3/4dN24c9erVi4YNG0aLFi2iTZs25TThFcdKlSq5W8IZGRmFToaTJ08S/xc7GFB6ejodOHAg4dAYeJZF8AQunFWrVlGrVq2oZMmSERxh9IYEZraYghd42XLAnlrtGuN8UaVKFeK7o4kuSuV20XQAPHHiBP3iF7+gq666imbPnp0zrpdffpnq1q1Ll1xyCX388cc0dOhQuvLKK12g4GPkyJE0ffp02rZtW54ZxbeNOfxxe74lvGPHDlq5cmWeNqVLl3bndu/evdDZOHz4cBoxYkSBr2VlZVHZsmXtzWAohgNwAA7AATgAB7xz4Pjx425vQsoFQE7Wd999N/FGjbVr154z/fKGkuuvv95tLOFnCzkAzpgxg7Zu3ZoHaL169ah37940ZMgQFwD5tvKKFSvytOENIDNnzqRu3bphBVCxHLR/c1KUnrJdg5kt9OAFXrYcsKdWu8ZScgWQTe3SpYvbCcy3YytXrnzOmcG3gnnlbtasWcS7gTVvAecXIr1Hb2/KJ0ex9rMTyVGJXnI7AGa25gN4gZctB+yp1a4xab4wdws4Fv4+++wzWrNmjdulG+/g28DXXHONezVMixYtKLYJZMOGDW4DCR/852bNmhXYBMI7hWvUqOHazJs3z+0ExiaQeI7Lv65dOHKF6CG/A2Bma06AF3jZcsCeWu0ai1wAPHbsGG3fvt2Rvvbaa+mFF15wGy548wW/649fDfP+++/T0qVL3QaP2MFf59uzn3/+Ob3yyit0xx13uIcjP/30Uxo0aJB7jx/vGC5RooQ7hTeG7N27lyZPnuz+zrd8a9euXeA1MHwNfi/hoUOH3A5gfichXgOjX4jahaM/gtS7ApjZYg5e4GXLAXtqtWsscgGQn+crbIctr7zxBgve3FHYwauBvPuXX9tyzz33uM0fHCZ5B+6dd97pdgFzSIwdHOjyvwh60qRJBV4E3bdv3wIvgubbyYkeUkCJXidq7bQLJ2p++TAeMPOBQuIawCtxr3xoCV4+UAimQZuZNF94fQs4mNV+tpYC8nNU+qq0C0d/BKl3BTCzxRy8wMuWA/bUateYNF8gACrPKSkgZXnedq9dON4O3LAwMLMFD7zAy5YD9tRq15g0XyAAKs8pKSBled52r1043g7csDAwswUPvMDLlgP21GrXmDRfIAAqzykpIGV53navXTjeDtywMDCzBQ+8wMuWA/bUateYNF8gACrPKSkgZXnedq9dON4O3LAwMLMFD7zAy5YD9tRq15g0XyAAKs8pKSBled52r1043g7csDAwswUPvMDLlgP21GrXmDRfIAAqzykpIGV5Xnb/zTdEFSr8IG3JklPUtu359OPrG73UC1E/OKD9zQ4+J9cB8Equn9q9gZe2w8nvX5uZNF8gACafeZ4epYCU5XnX/fz5RP37E+3Z829ptWoRTZhA1KmTd3IhKJcD2t/sYHZyHQCv5Pqp3Rt4aTuc/P61mUnzBQJg8pkjABbRUw5/d91FdOZM3g7S0n74+6uvIgQW0dpiOU37m12xDCKFLgJetmCDly1erFabGQKg53NCCsjz4SVN3unTRHXqEGVnF94lh0BeCfzyS8Lt4KS5ntyOtL/ZJVctegMvW3MAvGzxQgC0xyvpihEAE7N07VqijIz4bdesIWrZMn47tCh+B/ADqvg9l1wRvCTuFf+54FX8nkuvqM1Mmi9wC1hKOM75UkDK8rzpfs4coszM+HKysoi6d4/fDi2K3wHtb3bFP6JoXxG8bPEFL1u8sAJoj1fSFSMAJmYpVgAT88nnVvgB5TOdgtrAC7xsOWBPrXaNSfMFVgCV55QUkLI8b7qPPQPIu3/zbwJhkXgG0BtUZxWi/c3OfwdsKQQv8LLlgD212jUmzRcIgMpzSgpIWZ5X3cd2AbOo3CEQu4C9woQAaANHXJXaP5ziCkCDQA6AVyC7vGiszUyaLxAAlaeJFJCyPO+6L+w9gOnpROPH4xUw3sHKJ0j7m53v47emD7xsEQMvW7xYrTYzab5AAFSeU1JAyvK87J5vB69Zc4qWL/+Q2rZtTBkZ+CQQL0EhAFrAghVb05T+LV47TETEJq+Goc1Mmi8QAJWnixSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaLxAAleeUFJCyPG+71y4cbwduWBiY2YIHXuBlywF7arVrTJovEACV55QUkLI8b7vXLhxvB25YGJjZggde4GXLAXtqtWtMmi8QAJXnlBSQsjxvu9cuHG8HblgYmNmCB17gZcsBe2q1a0yaL7wLgOvWraPRo0fTxo0bad++fbRgwQLq2LFjDvkzZ87QiBEjaMqUKXT48GFq2rQp/fGPf6Sf/vSnOW1OnjxJDz/8MM2ZM4e+++47uvXWW+nFF1+kWrVq5bThc/v370+LFy92/9a+fXuaOHEiVaxYMafNrl27qF+/frR69WoqU6YMZWZm0pgxY6hUqVIJz0QpoIQvFLGG2oUTMbu8GA6YeYEhYRHglbBVXjQELy8wBBKhzUyaL7wLgMuXL6e3336brrvuOurcuXOBADhq1Ch65plnaPr06VS/fn36wx/+QBwat27dSuXKlXNwHnjgAVqyZIlrU7lyZRo0aBAdOnTIhcoSJUq4Nm3btqXs7GwXJPno06cP1alTx53Hx+nTp6lx48ZUtWpVGjt2LB08eJB69OhBnTp1ckEx0UMKKNHrRK2dduFEzS8fxgNmPlBIXAN4Je6VDy3BywcKwTRoM5PmC+8CYG5709LS8gRAXv2rWbMmDRgwgB555BHXlFf7qlevThwMf/3rX9PRo0ddaJs1axZ17drVtdm7dy+lp6fTsmXLqE2bNrR582Zq2LAhrV+/3q0g8sF/bt68OW3ZsoUaNGhAHETbtWtHu3fvdtfkY+7cudSzZ0/av38/lS9fPqGZIAWU0EUi2Ei7cCJoWehDArPQEQQSAF6B7Aq9MXiFjiCwAG1m0nxhKgB+8cUXdMUVV9D7779P1157bQ6MDh06uFu3M2bMcLdr+ZYvr/hdfPHFOW0aNWrkbiXz7eOpU6fSwIED6ciRI3mAch/jxo2jXr160bBhw2jRokW0adOmnDZ827hSpUruGhkZGYVOBg6k/F/sYEAcPg8cOJBwaAw8yyJ4AhfOqlWrqFWrVlSyZMkIjjB6QwIzW0zBC7xsOWBPrXaNcb6oUqWKW/hKdFEqt4umAuA777xDN910E+3ZsydnVY4Hw7dvd+7cSStWrKCsrCwX4HKHMG7TunVrqlu3Lk2ePJlGjhzpbg9v27Ytz4ziW8p87tChQ12fO3bsoJUrV+ZpU7p0aXdu9+7dC52Nw4cPdyEz/8G6ypYta28GQzEcgANwAA7AATjgnQPHjx93exNSKgDyLd0aNWrkwLj//vvdrdq//OUvZw2AvJLEq4cvvfSSC4C8WsjPDeY+6tWrR71796YhQ4bkCZW52/AGkJkzZ1K3bt2wAqhYDtq/OSlKT9muwcwWevACL1sO2FOrXWMptQJo4RZw/ikqvUdvb8onR7H2sxPJUYlecjsAZrbmA3iBly0H7KnVrjFpvjB1Czi2CeR3v/sd/f73v3ez4fvvv6dq1aoV2AQye/Zs6tKli2vDr5PhV8Dk3wSyYcMGatKkiWvDf27WrFmBTSC8Uzi22jhv3jy3ExibQPQLUbtw9EeQelcAM1vMwQu8bDlgT612jUUuAB47doy2b9/uSPNGjxdeeMFtuODNF5dddpkLes8++yxNmzaN+JYt385du3ZtgdfALF261D2rx+fxOwH5NS75XwPDt5L5mUA++Jm/2rVrF3gNDO8w5vcS8qYS3gHMG0nwGhj9QtQuHP0RpN4VwMwWc/ACL1sO2FOrXWORC4Ac5grbYcsrbxzoYi+C5uCW+0XQV199dc7sOHHiBA0ePNg9D5j7RdC8Gzd2cKDL/yLoSZMmFXgRdN++fQu8CJo3giR6SAElep2otdMunKj55cN4wMwHColrAK/EvfKhJXj5QCGYBm1m0nzh9S3gYFb72VoKyM9R6avSLhz9EaTeFcDMFnPwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDynpICU5XnbvXbheDtww8LAzBY88AIvWw7YU6tdY9J8gQCoPKekgJTledu9duF4O3DDwsDMFjzwAi9bDthTq11j0nyBAKg8p6SAlOV527124Xg7cMPCwMwWPPACL1sO2FOrXWPSfIEAqDyn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DQsDM1vwwAu8bDlgT612jUnzBQKg8pySAlKW52332oXj7cANCwMzW/DAC7xsOWBPrXaNSfMFAqDynJICUpbnbffahePtwA0LAzNb8MALvGw5YE+tdo1J8wUCoPKckgJSludt99qF4+3ADQsDM1vwwAu8bDlgT612jUnzBQKg8pySAlKW52332oXj7cANCwMzW/DAC7xsOWBPrXaNSfMFAqDynJICUpbnbffahePtwA0LAzNb8MALvGw5YE+tdo1J8wUCoPKckgJSludt99qF4+3ADQsDM1vwwAu8bDlgT612jUnzBQKg8pySAlKW52332oXj7cANCwMzW/DAC7xsOWBPrXaNSfMFAqDynJICUpbnbffahePtwA0LAzNb8MALvGw5YE+tdo1J8wUCoPKckgJSludt99qF4+3ADQsDM1vwwAu8bDlgT612jUnzBQKg8pySAlKW52332oXj7cANCwMzW/DAC7xsOWBPrXaNSfMFAqDynDp69ChVrFiRdu/eTeXLl1e+WnS658JZuXIltW7dmkqWLBmdgUV4JGBmCy54gZctB+yp1a4xDoDp6el05MgRqlChQmCDEAADWxbshOzsbAcIBxyAA3AADsABOAAHku0ALzDVqlUrcLcIgIEtC3bCv/71L9q7dy+VK1eO0tLSgp2cwq1jv9lg5dTOJAAzO6xYKXiBly0H7KnVrrEzZ87Qt99+SzVr1qTzzjsvsEEIgIEtwwnF4YD02Ybi0Ihr5HUAzGzNCPACL1sO2FPre40hANqbUymh2PfCSQkIAQcJZgENC7k5eIUMIODlwSugYR40950ZAqAHkwQSCjrge+GAGZhZnwOoMVsEwcsWL1brOzMEQHtzKiUUnzx5kp599lkaOnQolS5dOiXGbH2QYGaLIHiBly0H7Kn1vcYQAO3NKSiGA3AADsABOAAH4IDIAQRAkX04GQ7AATgAB+AAHIAD9hxAALTHDIrhAByAA3AADsABOCByAAFQZB9OhgNwAA7AATgAB+CAPQcQAO0xM6H4xRdfpNGjR9O+ffvopz/9KY0fP55uvvnmQrXPnz+f/vSnP9GHH35I/NAstx8+fDi1adMmpz23GTlyJG3fvp3443Xq1atHgwYNov/8z/8stE/eQPLoo4/SQw895K6N49wOhMVrz5499Mgjj9Dy5cvpu+++o/r169N///d/089//nMg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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0018\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0, 1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (325, 875)\n",
"imageAnalyser.span = (500, 500)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
"#plt.xlabel('')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: 'â–º';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: 'â–¼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;OD&#x27; (compZ_final_current: 1)&gt;\n",
"array([26642.0066982])\n",
"Coordinates:\n",
" * compZ_final_current (compZ_final_current) float64 0.238</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'OD'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>compZ_final_current</span>: 1</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-c81e0e81-6867-48a8-817b-0270bf8320f5' class='xr-array-in' type='checkbox' checked><label for='section-c81e0e81-6867-48a8-817b-0270bf8320f5' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>2.664e+04</span></div><div class='xr-array-data'><pre>array([26642.0066982])</pre></div></div></li><li class='xr-section-item'><input id='section-213a9602-e7c9-4a8d-872a-0a9a224c9c77' class='xr-section-summary-in' type='checkbox' checked><label for='section-213a9602-e7c9-4a8d-872a-0a9a224c9c77' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>compZ_final_current</span></div><div class='xr-var-dims'>(compZ_final_current)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.238</div><input id='attrs-97b5d183-12a2-43d2-bc55-2ce7784bfe38' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-97b5d183-12a2-43d2-bc55-2ce7784bfe38' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ac436865-f3d0-4ffc-8f65-960c2f4ccf32' class='xr-var-data-in' type='checkbox'><label for='data-ac436865-f3d0-4ffc-8f65-960c2f4ccf32' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0.238])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-084aa2db-fadf-4f9c-9080-822a3683ad63' class='xr-section-summary-in' type='checkbox' ><label for='section-084aa2db-fadf-4f9c-9080-822a3683ad63' class='xr-section-summary' >Indexes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>compZ_final_current</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-8f148761-2dbb-435d-b8e1-c7a944c677c6' class='xr-index-data-in' type='checkbox'/><label for='index-8f148761-2dbb-435d-b8e1-c7a944c677c6' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.238], dtype=&#x27;float64&#x27;, name=&#x27;compZ_final_current&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-e55ccffc-8a2c-4845-bb7e-8ecd0686637c' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-e55ccffc-8a2c-4845-bb7e-8ecd0686637c' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'OD' (compZ_final_current: 1)>\n",
"array([26642.0066982])\n",
"Coordinates:\n",
" * compZ_final_current (compZ_final_current) float64 0.238"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scan final horz amp"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'final_horz_amp': array([5.0e-05, 7.0e-05, 9.0e-05, 1.1e-04, 1.3e-04, 1.5e-04, 1.7e-04,\n",
" 1.9e-04, 2.1e-04, 2.3e-04, 2.5e-04]), 'runs': array([0., 1., 2.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7tfQvYVVW59YuIJnJV0EBQPIQWWkAXBE2Do4KYRw0NhToimZiaqFwENE3ySniBg5p4SkQNsAwFFBWPitewUvP4J0gmilwSL4CioMHhf95J+2t/Hx+svdeeY6659jvW8/AIfnPOd44x3nft8c255toNtmzZskV4kQEyQAbIABkgA2SADJhhoAENoBmtCZQMkAEyQAbIABkgA44BGkAmAhkgA2SADJABMkAGjDFAA2hMcMIlA2SADJABMkAGyAANIHOADJABMkAGyAAZIAPGGKABNCY44ZIBMkAGyAAZIANkgAaQOUAGyAAZIANkgAyQAWMM0AAaE5xwyQAZIANkgAyQATJAA8gcIANkgAyQATJABsiAMQZoAI0JTrhkgAyQATJABsgAGaABZA6QATJABsgAGSADZMAYAzSAxgQnXDJABsgAGSADZIAM0AAyB8gAGSADZIAMkAEyYIwBGkBjghMuGSADZIAMkAEyQAZoAJkDZIAMkAEyQAbIABkwxgANoDHBCZcMkAEyQAbIABkgA9EZwF/84heif958802nzkEHHSSXXXaZ9OvXz/17y5YtMm7cOLnttttkzZo1csghh8jNN9/s2hWuTz/9VEaOHCkzZsyQDRs2yJFHHim33HKLtGvXrqaN9h02bJjMmTPH/b/jjz9eJk+eLC1atKhps2zZMjn33HPl8ccfl912200GDRok1113neyyyy7MHDJABsgAGSADZIAM5JaB6Azg3LlzpWHDhvKFL3zBkTpt2jSZMGGCvPTSS87kjR8/Xq666iq544475IADDpArr7xSnnrqKXnttdekadOmrs/ZZ58tOo622XPPPWXEiBHywQcfyAsvvODG1ksN5fLly52R1Gvo0KHSoUMH10+vzZs3S9euXaV169Zy/fXXy/vvvy+DBw+W/v37O6NY6vV///d/snLlSje3Bg0alNqN7cgAGSADZIAMkAFjDOgi10cffSRt27aVnXbaCYo+OgNYH9o99tjDmcAf/OAHjpQLLrhARo8e7Zrqat/ee+/tjOFZZ50l69atc6btrrvuklNOOcW1UQPWvn17mTdvnvTt21cWLVoknTt3loULF7oVRL307z179pTFixfLgQceKA899JAc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s2Tx4sWy2267yaGHHirjx4+XAw88sGZKp59+ukybNq3WFA855BBZuHBhzf/79NNPZeTIkTJjxgzZsGGDHHnkkXLLLbdIu3btatqsWbNGhg0bJnPmzHH/7/jjj5fJkydLixYtatosW7ZMzj33XHn88cfdfAYNGiTXXXed7LLLLiVRRANYEk0lNeJNtSSactvIkr6WsFoz98Rb3Vve6NpFe4aoVwCPOeYYOfXUU+Ub3/iGbNq0SS655BJ55ZVX5NVXX5Xd//muCjWA77zzjkydOrUGixqyPfbYo+bfZ599tsydO1fuuOMO2XPPPWXEiBHywQcfyAsvvCANGzZ07fr16yfLly+X2267zf176NCh0qFDB9dPr82bN0vXrl2ldevWcv3118v7778vgwcPlv79+zujWMqFFhOdjKVgDNXGElZ+iPBDJFRdhYjD2g3BcnYxLOmLxor2DFEbwLop/O6778pee+0lTz75pBxxxBHux2oA165dK/fff3+9Gb9u3Tpn2u666y455ZRTXJuVK1dK+/btZd68edK3b19ZtGiRdO7c2a0a6uqhXvr3nj17utVHXXF86KGH5LjjjpO3335b2rZt69rMnDnTxV+9erU0a9YsseLQYqKTMRFgwAaWsNIA0gAGLC14KNYunOJMA1jSF40V7RlyZQBff/116dSpk1sFPPjgg2sMoJo/XfXT7dpvfetbctVVVzmjqJdu1+qWr674tWzZsgZvly5d5MQTT5Rx48bJ7bffLsOHD3dGsvjS8W688UYZMmSIXHbZZTJ79mx5+eWXa5rotrGuNGqM3r17b1N0uvWsfwqXiqnG87333ivJMJZbxZqMjz76qBx99NHSqFH1f2hawVowgMRbbkXko72lumUuV/d92Zq+6NpVz9CqVSvRhaxSFpkqueM12LKl+CvhKxnKf1+d2gknnCBqup5++umaAPfcc480adJE9ttvP1m6dKlceumlbrtYt3d33XVXmT59ujNwxUZMO/fp00f2339/mTJlilx99dVue3jJkiW1Jn7AAQe4vmPHjnVbwm+++abMnz+/VhuNoX0HDhy4DejLL7/cGcy6l86pcePG/kniiGSADJABMkAGyEBVMPDJJ5+4swbmDaAevnjwwQflmWeeqXV4o67Kq1atcmZQt2f1+bztGUBdJevYsaPceuutzgDqQZLXXnut1nC62njG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O5xRV9YGcPPmzdKgQYNtvqMahZfjkgEyYJMBGkCbuhM1GcgdA7rdOm3atJp577ffftKhQwfp2rVrzRaw/nvo0KHy+uuvy29/+1tp2bKl/OQnP3H/r3CNHj1a7rvvPlm+fLl8/vOfl+9973ty2WWXSaNGjVyTNAbwm9/8plx//fXy2WefyamnnurmUxhPt6rPP/98mTt3rnz66afyrW99S/7rv/5LOnXq5OLdcccdcsEFF8jdd98tF110kSxZskT++te/uhXOupdi1i+b39GlBlLxPv744/L3v/9d9t13XznnnHPcHApXYeu6e/fuMmnSJDevCy+8UC655BIZO3as/OpXv5LGjRvLz372M/nBD37guhW+5H7GjBlu/i+++KJ07NhRbr75ZunVq1fu8okTJgPWGaABtJ4BxE8GcsLAunXrnPG47bbb5I9//KM0bNhQvvvd725jAD/66CO54oorpE+fPu5ZQTU1f/nLX+SLX/yiQ3rllVfKv//7v0vbtm3llVdekTPPPFOGDx/uzFcaA6hmctCgQc5gqfE85ZRTnAHUcfXSLWs1dFOmTJFmzZqJGtC//e1v8uqrrzqTqAZQDds3vvENt7q55557Srt27URxFK6PP/5YjjnmGOnZs6fceeedO1TsH//4h8N43HHHSatWreS5555z40+dOlUGDBjg+qoBnDVrlpx22mly3nnnybPPPitnnHGG9O3bV4444gjH6z333OMMoM61ffv2NQZQ56b4OnfuLDfccINrt3TpUjdvXmSADOSHARrA/GjFmZIB8wyo8dA/hVUwXXmquwJ4+OGHy1133eW40kMjuso3btw4+dGPflQvf2q61MT86U9/SmUA9XlENUlqSPVSk6XPJs6cOdMZvwMOOMAZrEMPPdT9/P3333eGSlcz1WipARwyZIg7dNKlS5dt5qgYTjrpJFm2bJk8/fTT7pnHcq9zzz1X3nnnHWeICwZQ5/3GG2/UbDWrQd5rr73kqaeecm10JVEP2fzyl790q5qFFcBrr73WmVi9Nm3aJPvvv78zkQUDXe7c2J4MkIFsGKABzIZ3RiUDZCAFA6UYQDU7o0aNqhldTZUaKN3m1UtNkI6jq3Xr1693JkZX5lavXp3KAL777rvy4IMP1sTTlUBdWdQt2Dlz5rjYGzdurDGI2rBbt27yne98x81JDaCebNY2+uxf3Uu3ZLWNrnrq6lsp16233uqMmz4ruWHDBrc1rUb5D3/4Q40BrDtv3Zo++OCD3ZZu4dIt5xEjRsiwYcNqDOCTTz7pVgkLl+Jo0aKFW2HkRQbIQH4YoAHMj1acKRkwz0ApBlCfp9M/hUuNz4knnuie7Vu4cKHo83q6IqjbnbrCpSt1+vyevs5FrzTPABa/BkZj62qerrDNnj1bTj755G0MoM5JjeGll15a8wxgIX6xyPpc4A9/+EM3Vo8ePUrS/ze/+Y0MHjzYYdItYz0hrauczz//fM2rbep7fU3d1VQNps9UFvgsrADWZwD1Wcvbb7+9pPmxERkgA3EwQAMYhw6cBRkgAyUwUKkBVFN0yy23uC3bwqUGS1cFEQZwR1vA+iyfmsPCIZC6BvD3v/+99O7d2z07qIau1Eu3Y/X5wscee6ymy1FHHSXvvfeeFwM4fvz4mu1eXT3Vwyo//vGPuQVcqkBsRwYiYYAGMBIhOA0yQAaSGajUABZW5PQZQT10oVu3uhqoz7shDKAi0tXHwiEQXY0bM2aM234uPgSiq2zFBlBP7+oqoR780GfuCpc+Z9i6desdEqWnenVrWVcC9fk8xaqHZ/TvhZdbV7ICqKeKVYcvfelLcuONN8r06dPdIRA9cMKLDJCB/DBAA5gfrThTMmCegUoNoBKohxV0u1JfffLtb3/bba3qti/KABZeA6PPA+qzePr83OTJk7d5DUyxAdQtX139q3uV8hoYxaUHXvR0sj5TOHDgQLfVrS/R9mEA1fCpyXzppZfca2D03Yx6qpoXGSAD+WKABjBfenG2ZIAMkIFMGCg8A6jGT1cneZEBMpBvBmgA860fZ08GyAAZCMIADWAQmhmEDARjgAYwGNUMRAbIQN4YaNKkyXanrFuq+s7B0Jdu7+rp4Pqu73//+6KvgEFcNIAIVjkmGciOARrA7LhnZDJABiJnQA9rbO/aZ599Ur2UuVLI+r7CDz/8sN5h9H2G+jJnXmSADJCBJAZoAJMY4s/JABkgA2SADJABMlBlDNAAVpmghEMGyAAZIANkgAyQgSQGaACTGOLPyQAZIANkgAyQATJQZQzQAFaZoIRDBsgAGSADZIAMkIEkBmgAkxjiz8kAGSADZIAMkAEyUGUM0ABWmaCEQwbIABkgA2SADJCBJAZoAJMY4s/JABkgA2SADJABMlBlDNAAVpmghEMGyAAZIANkgAyQgSQGaACTGOLPyQAZIANkgAyQATJQZQzQAFaZoIRDBsgAGSADZIAMkIEkBmgAkxjiz8kAGSADZIAMkAEyUGUM0ABWmaCEQwbIABkgA2SADJCBJAZoAJMY4s/JABkgA2SADJABMlBlDNAAVpmghEMGyAAZIANkgAyQgSQG/j/BCfcrvY0/QQAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0019\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0, 1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (325, 875)\n",
"imageAnalyser.span = (500, 500)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
"#plt.xlabel('')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scan final horz freq"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'final_horz_freq': array([104.05 , 104.055, 104.06 , 104.065, 104.07 , 104.075, 104.08 ,\n",
" 104.085, 104.09 , 104.095, 104.1 ]), 'runs': array([0., 1., 2.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0020\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0, 1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (325, 875)\n",
"imageAnalyser.span = (500, 500)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
"#plt.xlabel('')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: 'â–º';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: 'â–¼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;OD&#x27; (final_horz_freq: 1)&gt;\n",
"array([28952.76637914])\n",
"Coordinates:\n",
" * final_horz_freq (final_horz_freq) float64 104.1</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'OD'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>final_horz_freq</span>: 1</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-ed0434fd-e803-4855-844d-70b0c3e842c8' class='xr-array-in' type='checkbox' checked><label for='section-ed0434fd-e803-4855-844d-70b0c3e842c8' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>2.895e+04</span></div><div class='xr-array-data'><pre>array([28952.76637914])</pre></div></div></li><li class='xr-section-item'><input id='section-d2a4729c-d36d-44fa-a8c1-4885a8e7593b' class='xr-section-summary-in' type='checkbox' checked><label for='section-d2a4729c-d36d-44fa-a8c1-4885a8e7593b' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>final_horz_freq</span></div><div class='xr-var-dims'>(final_horz_freq)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>104.1</div><input id='attrs-6f10bdef-1163-4796-8266-ab9332d89ea4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-6f10bdef-1163-4796-8266-ab9332d89ea4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-343afb05-ab34-4141-92a8-e56c8c309e66' class='xr-var-data-in' type='checkbox'><label for='data-343afb05-ab34-4141-92a8-e56c8c309e66' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([104.06])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-d4d0971f-b5b7-4977-91e5-3ef6807a4b2f' class='xr-section-summary-in' type='checkbox' ><label for='section-d4d0971f-b5b7-4977-91e5-3ef6807a4b2f' class='xr-section-summary' >Indexes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>final_horz_freq</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-81425834-189f-4154-bdb4-8c5e8e7207d1' class='xr-index-data-in' type='checkbox'/><label for='index-81425834-189f-4154-bdb4-8c5e8e7207d1' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([104.06], dtype=&#x27;float64&#x27;, name=&#x27;final_horz_freq&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-813756c4-49be-4230-a482-541103019f9c' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-813756c4-49be-4230-a482-541103019f9c' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'OD' (final_horz_freq: 1)>\n",
"array([28952.76637914])\n",
"Coordinates:\n",
" * final_horz_freq (final_horz_freq) float64 104.1"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scan final vert amp"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'final_vert_amp': array([0.035, 0.037, 0.039, 0.041, 0.043, 0.045, 0.047, 0.049, 0.051,\n",
" 0.053, 0.055, 0.057, 0.059, 0.061, 0.063]), 'runs': array([0., 1., 2.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3QuQVdWVPvCFBI0PQFQ0IK0YoyZoIubhc0igjBAyRg06Kp2ZqDHiqBPw/UpicHzFIAqjMeqkVNR044RBBYSIo7RiHJ0qNcYaQWOCjwZGoyJqBP1L+Nc+pJt+wXfXt+6mb9/+blWqIuuss8/9rb0vi3PuObfH2rVr15peEpCABCQgAQlIQALdRqCHGsBuU2u9UQlIQAISkIAEJFAIqAHURJCABCQgAQlIQALdTEANYDcruN6uBCQgAQlIQAISUAOoOSABCUhAAhKQgAS6mYAawG5WcL1dCUhAAhKQgAQkoAZQc0ACEpCABCQgAQl0MwE1gN2s4Hq7EpCABCQgAQlIQA2g5oAEJCABCUhAAhLoZgJqALtZwfV2JSABCUhAAhKQgBpAzQEJSEACEpCABCTQzQTUAHazguvtSkACEpCABCQgATWAmgMSkIAEJCABCUigmwmoAexmBdfblYAEJCABCUhAAmoAM8+Bv/71r7Zs2TLr3bu39ejRI/No2r0EJCABCUhAAt1BYO3atfbee+/ZwIEDbbPNNnO/ZTWAbjJfQmNjo9XU1PiStLUEJCABCUhAAhIoQeC1116zQYMGlbBl603UALrJfAkrV660bbfd1lKB+vTp40suYev/9//+n82fP99GjhxpvXr1KiFDm5QqINtSpfzbydZvVmqGbEuV8m8nW79ZqRmyLVVq/XbvvvtucYLpnXfesb59+7p3oAbQTeZLSAVKhUmNYK4GcO7cufbNb35TDaCvNHDr9IEkW8hEbSBbiq2kJNmWxERtJFuKraQk2ZbE1GqjaH+hBtBv7sqIFggNpkWDhPi4bHk7lClbJMTHZcvboUzZIiE+Llu/XbS/UAPoN3dlRAuEBtOiQUJ8XLa8HcqULRLi47Ll7VCmbJEQH5et3y7aX6gB9Ju7MqIFQoNp0SAhPi5b3g5lyhYJ8XHZ8nYoU7ZIiI/L1m8X7S/UAPrNXRnRAqHBtGiQEB+XLW+HMmWLhPi4bHk7lClbJMTHZeu3i/YXagD95q6MaIHQYFo0SIiPy5a3Q5myRUJ8XLa8HcqULRLi47L120X7CzWAfnNXRrRAaDAtGiTEx2XL26FM2SIhPi5b3g5lyhYJ8XHZ+u2i/YUaQL+5KyNaIDSYFg0S4uOy5e1QpmyREB+XLW+HMmWLhPi4bP120f5CDaDf3JURLRAaTIsGCfFx2fJ2KFO2SIiPy5a3Q5myRUJ8XLZ+u2h/oQbQb+7KiBYIDaZFg4T4uGx5O5QpWyTEx2XL26FM2SIhPi5bv120v6i4BvAXv/iFpf+9/PLLhcbee+9tl1xyiY0ePbr47/Tjx5deeqndcssttmLFCjvggAPs5z//ebFd0+vDDz+0c8891+rr623VqlV26KGH2o033tjqt/JS7vjx423WrFlF2hFHHGHXX3998bNtTa9XX33VzjjjDHv44Ydtyy23tNraWrvmmmts8803L7lS0QKhgbRokBAfly1vhzJli4T4uGx5O5QpWyTEx2Xrt4v2FxXXAM6ePdt69uxpn/nMZwqNadOm2aRJk+yZZ54pmryrr77arrjiCrv99tttzz33tMsvv9weffRRe+GFF6x3795FzmmnnWZpP2mb7bff3s455xx7++237amnnir2nV6poWxsbCwayfQaN26cDR48uMhLrzVr1tjQoUOtf//+NnnyZHvrrbfshBNOsDFjxhSNYqmvaIHQOFo0SIiPy5a3Q5myRUJ8XLa8HcqULRLi47L120X7i4prADsi2G677Yom8Hvf+54NHDjQzjzzTLvggguKTdPZvp122qloDE899dTiN3dT03bnnXfacccdV2yzbNmy4geT0++6jho1yhYtWmRDhgyxJ554ojiDmF7p/x900EG2ePFi22uvvWzevHl2+OGH22uvvVaMmV7Tp0+3E0880d54442Sf9c3WiA0JbRokBAfly1vhzJli4T4uGx5O5QpWyTEx2Xrt4v2FxXdAKazcL/+9a+LM2/pDOAnP/lJ23333e3pp5+2/fbbr1nryCOPLC7dprOF6XJtuuSbzvj169eveZt9993XjjrqqOLy8a233mpnn322vfPOO63E0z6uu+46O+mkk4rLzvfdd589++yzzduky8apGU1jjBgxoqRqRQuEBtGiQUJ8XLa8HcqULRLi47Ll7VCmbJEQH5et3y7aX1RkA/jcc88VZ+NWr15t22yzjdXV1dk3v/lNe/zxx+2QQw6xpUuXNp+VS2Tp8u0rr7xiDzzwQLFtauDSmcGWr5EjR9puu+1mN998s1155ZXF5eEXX3yx1TbpknLKveiii4p9pu8hzp8/v9U2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vW277bbN27z66qt2xhln2MMPP1wcT21trV1zzTW2+eabl1StaIHQIFo0SIiPy5a3Q5myRUJ8XLa8HcqULRLi47L120X7i4prAL/xjW/Y8ccfb1/5ylfs448/th/+8If23HPP2fPPP29bb711IZQawiuuuMJuv/1223PPPe3yyy+3Rx991F544QXr3bt3sc1pp51ms2fPLrbZfvvt7ZxzzrG3337bnnrqKevZs2exzejRo62xsbFoJNNr3LhxNnjw4CIvvdasWWNDhw61/v372+TJk+2tt96yE044wcaMGVM0iqW8ogVCY2jRICE+LlveDmXKFgnxcdnydihTtkiIj8vWbxftLyquAWxL8Oc//9l23HFHe+SRR+yrX/2qpbN/AwcOtDPPPNMuuOCCYvN0tm+nnXYqGsNTTz3VVq5cWTRtd955px133HHFNsuWLbOamhqbO3eujRo1yhYtWmRDhgyxJ554ojiDmF7p/x900EHF2cd0xnHevHl2+OGH22uvvVaMmV7Tp0+3E0880d544w3r06cPrFi0QGgALRokxMdly9uhTNkiIT4uW94OZcoWCfFx2frtov1FxTeAL730ku2xxx7FWcB99tnH/vSnP9nuu+9uTz/9tO23337NYkceeWRx6XbatGnF5dp0yTed8evXr1/zNvvuu68dddRRxeXjW2+91c4++2x75513WqmnfVx33XV20kkn2SWXXGL33XefPfvss83bpMvG2223XTHGiBEj2lUsNaPpf02vVKDUeL755pslNYzeKZAWzYMPPmiHHXaY9erVy5uu7TciINt800O2ss0nkG/PmreyzSfg33PqL3bYYYfipFcpJ6TajlDRDWA625cau9R0LVy4sDj2xx9/3A455BBbunRp81m59Ofp8u0rr7xiDzzwgNXV1RUNXMtGLG0zcuRI22233ezmm2+2K6+8srg8/OKLL7YySZeUU+5FF11U7PPll1+2+fPnt9pmiy22KHLHjh3brmITJ04sGsy2r3RMW221lb/CypCABCQgAQlIQAJtBD744IPivoRObwDTd/DSDRuf+MQnWh1i+h5fatrS5VvvK918cf/999tjjz3WfPNGUwOYLukOGDCgeZennHJKcan2N7/5zQYbwHSWLJ09vOmmm4oGMJ0tTN8bbPlKZxtPPvlku/DCC1s1lS23STeA3HHHHcV3Fdu+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u0rbojNtK82i1OOJ9hdqAEuVJreLFggNq0WDhPi4bHk7lClbJMTHZcvboczOtNUZQFSd7heP9hdqADPPmWiB0OF15gcSOrauHpdtvgrKVrb5BPLtuTPnbdN3AJcubX8TSHrH+g5gvrpX6p6j/YUawMyVjRYIHV5nfiChY+vqcdnmq6BsZZtPIN+eO3veNt0FnN5hyzuBdRdwvppX8p6j/YUawMzVjRYIHV5nfyCh4+vKcdnmq55sZZtPIN+eK2HedvQcwJoasylTuu4jYFLFKsE238zJs+dof6EGME9dmvcaLRA6PC0aJMTHZcvboUzZIiE+LlveDmVWiifrryAAACAASURBVK1+CQRVqnvEo/2FGsDM8yRaIHR4lfKBhI6zK8Zlm69qspVtPoF8e9a8lW0+Af+eo/1FxTWAjz76qE2aNMmeeuopW758ud1zzz121FFHNcuceOKJNm3atFZSBxxwgD3xxBPNf/bhhx/aueeea/X19bZq1So79NBD7cYbb7RB6SmZf3utWLHCxo8fb7NmzSr+5IgjjrDrr7/ett122+ZtXn31VTvjjDPs4Ycfti233NJqa2vtmmuusc0337zkSkULhAbSBxIS4uOy5e1QpmyREB+XLW+HMmWLhPi4bP120f6i4hrAefPm2W9/+1v74he/aEcffXSHDeDrr79ut912W7NWasi222675v8+7bTTbPbs2Xb77bfb9ttvb+ecc469/fbbRVPZ82+/mD169GhrbGy0W265pcgbN26cDR48uMhLrzVr1tjQoUOtf//+NnnyZHvrrbfshBNOsDFjxhSNYqmvaIHQOFo0SIiPy5a3Q5myRUJ8XLa8HcqULRLi47L120X7i4prAFsS9OjRo8MG8J133rF77723Q62VK1cWTdudd95pxx13XLHNsmXLrKamxubOnWujRo2yRYsW2ZAhQ4qzhunsYXql/3/QQQfZ4sWLba+99rLUiB5++OH22muv2cCBA4ttpk+fbukM5BtvvGF9+vQpqVrRAqFBtGiQEB+XLW+HMmWLhPi4bHk7lClbJMTHZeu3i/YXXbIBTM1fOuuXLtd+7WtfsyuuuMJ23HHHQi9drk2XfNMZv379+jWL7rvvvsWl5EsvvdRuvfVWO/vssy01ki1faX/XXXednXTSSXbJJZfYfffdZ88++2zzJumycTrTmMYYsYHf5EmX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hRpAv7krI1ogNJgWDRLi47Ll7VCmbJEQH5ctb4cyZYuE+Lhs/XbR/kINoN/clREtEBpMiwYJ8XHZ8nYoU7ZIiI/LlrdDmbJFQnxctn67aH+hBtBv7sqIFggNpkWDhPi4bHk7lClbJMTHZcvboUzZIiE+Llu/XbS/UAPoN3dlRAuEBtOiQUJ8XLa8HcqULRLi47Ll7VCmbJEQH5et3y7aX6gB9Ju7MqIFQoNp0SAhPi5b3g5lyhYJ8XHZ8nYoU7ZIiI/L1m8X7S/UAPrNXRnRAqHBtGiQEB+XLW+HMmWLhPi4bHk7lClbJMTHZeu3i/YXagD95q6MaIHQYFo0SIiPy5a3Q5myRUJ8XLa8HcqULRLi47L120X7i4prAB999FGbNGmSPfXUU7Z8+XK755577KijjmqWWbt2rV166aV2yy232IoVK+yAAw6wn//857b33ns3b/Phhx/aueeea/X19bZq1So79NBD7cYbb7RBgwY1b5Nyx48fb7NmzSr+7IgjjrDrr7/ett122+ZtXn31VTvjjDPs4Ycfti233NJqa2vtmmuusc0337zkSkULhAbSokFCfFy2vB3KlC0S4uOy5e1QpmyREB+Xrd8u2l9UXAM4b948++1vf2tf/OIX7eijj27XAF599dV2xRVX2O2332577rmnXX755ZaaxhdeeMF69+5dCJ522mk2e/bsYpvtt9/ezjnnHHv77beLprJnz57FNqNHj7bGxsaikUyvcePG2eDBg4u89FqzZo0NHTrU+vfvb5MnT7a33nrLTjjhBBszZkzRKJb6ihYIjaNFg4T4uGx5O5QpWyTEx2XL26FM2SIhPi5bv120v6i4BrAlQY8ePVo1gOns38CBA+3MM8+0Cy64oNg0ne3baaedLDWGp556qq1cubJo2u6880477rjjim2WLVtmNTU1NnfuXBs1apQtWrTIhgwZYk888URxBjG90v8/6KCDbPHixbbXXntZakQPP/xwe+2114ox02v69Ol24okn2htvvGF9+vQpqVrRAqFBtGiQEB+XLW+HMmWLhPi4bHk7lClbJMTHZeu3i/YXXaoB/NOf/mS77767Pf3007bffvs1ax155JHFpdtp06YVl2vTJd90xq9fv37N2+y7777FpeR0+fjWW2+1s88+2955551W4mkf1113nZ100kl2ySWX2H333WfPPvts8zbp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vfeeDRw40DbbbDP3DtQAuskqKyH6HYDKejeVdTSyzVcP2co2n0C+PWveyjafwKbfsxrATW9e1hH1gVRWzlY7k61s8wnk27PmrWzzCeTbs+ZtPtsN7VkN4KY3L+uIWjRl5VQDmI9TtrLdRAL5htHnrWzzCWz6PasB3PTmZR3xww8/tKuuusouuugi22KLLcq67+6+M9nmmwGylW0+gXx71ryVbT6BTb9nNYCb3lwjSkACEpCABCQggU4VUAPYqfwaXAISkIAEJCABCWx6ATWAm95cI0pAAhKQgAQkIIFOFVAD2Kn8GlwCEpCABCQgAQlsegE1gJvevNWIN954o02aNMmWL19ue++9t02ZMsWGDRu2waN65JFH7Oyzz7b//d//LR7+eP7559s///M/N28/c+ZMu/LKK+2ll16y9NM6e+yxh51zzjn2T//0T83bTJw40S699NJWY+y00072f//3f52sUd7hy23b8uimT59uY8eOtSOPPNLuvffeUE3L+643zd46w1bztuPaos+E22+/3U466aR2yatWrbJPfvKTzX/uremmmWnlHcX7Hsthq3nLzduUlX7i7Ic//KGlv9dWrFhhu+22m02ePNm++c1vdqt5W95VsH5vagBzyZaw37vvvrtozNKH0iGHHGI333yz/fKXv7Tnn3/edtlll3Z7WLJkie2zzz52yimn2Kmnnmq//e1v7fTTT7f6+no7+uiji+0bGhqKhfLZz37WNt98c5szZ07RAN5///02atSoYpv0gTRjxgz7r//6r+Yxevbsaf379y/hqLvGJjlsm975K6+8UtTr05/+tG233XatGkDvuF1Ds/VRet9jKfO2FFvNW+4zITWAEyZMsBdeeKFVIT/1qU81/7e3ppq36z5vS7HVvOXm7UcffVR8zu6444528cUXFz91ln7xKv2q1r777lv4d4d5m3OtqQHMqQv2fcABB9gXv/hF+8UvftG85ec+9zk76qijike7tH1dcMEFNmvWLFu0aFFzKJ39e/bZZ+2///u/NzhaGuPv//7v7bLLLmtuANNZq9/97ned+O7zDp3Lds2aNfa1r32tOKOycOHC4l+oLc8AesfNq5Bn7973WOq8RbbpL1LN29Y1LcU2NSlnnnlmMVc39PLWNM/MyrtX73ssl63mLfd32U033VRcHVu8eLH16tWrw8nhrWneGdb19q4G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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0021\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
" for i in [0, 1]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_1\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (325, 875)\n",
"imageAnalyser.span = (500, 500)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
"#plt.xlabel('')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()\n",
"\n",
"# DB.create_global(shotNum, dataSet)\n",
"# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: 'â–º';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: 'â–¼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;OD&#x27; (final_vert_amp: 1)&gt;\n",
"array([29676.45060443])\n",
"Coordinates:\n",
" * final_vert_amp (final_vert_amp) float64 0.045</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'OD'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>final_vert_amp</span>: 1</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-afcf31cf-2ab4-4ec0-bbe4-f6342cf64b8b' class='xr-array-in' type='checkbox' checked><label for='section-afcf31cf-2ab4-4ec0-bbe4-f6342cf64b8b' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>2.968e+04</span></div><div class='xr-array-data'><pre>array([29676.45060443])</pre></div></div></li><li class='xr-section-item'><input id='section-3064ec8b-148e-48c2-a58b-98b70a9fbf8e' class='xr-section-summary-in' type='checkbox' checked><label for='section-3064ec8b-148e-48c2-a58b-98b70a9fbf8e' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>final_vert_amp</span></div><div class='xr-var-dims'>(final_vert_amp)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.045</div><input id='attrs-6fa74f1c-255e-4f85-9eda-30c219bff7d4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-6fa74f1c-255e-4f85-9eda-30c219bff7d4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a737f7e3-553a-4474-9fc0-5c8fa128a3ec' class='xr-var-data-in' type='checkbox'><label for='data-a737f7e3-553a-4474-9fc0-5c8fa128a3ec' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0.045])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-4343ca55-551c-45a4-a744-a92bbc669a71' class='xr-section-summary-in' type='checkbox' ><label for='section-4343ca55-551c-45a4-a744-a92bbc669a71' class='xr-section-summary' >Indexes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>final_vert_amp</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-e63c7b75-53c2-4eec-8e4c-e6725f45889a' class='xr-index-data-in' type='checkbox'/><label for='index-e63c7b75-53c2-4eec-8e4c-e6725f45889a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.045], dtype=&#x27;float64&#x27;, name=&#x27;final_vert_amp&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-e98f96d0-b3a2-4063-9b37-a341ae427357' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-e98f96d0-b3a2-4063-9b37-a341ae427357' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'OD' (final_vert_amp: 1)>\n",
"array([29676.45060443])\n",
"Coordinates:\n",
" * final_vert_amp (final_vert_amp) float64 0.045"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ncount_mean.where(Ncount_mean==Ncount_mean.max(), drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaporative Cooling"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"img_dir = 'C:/Users/control/DyLab/Experiments/DyBEC/'\n",
"# img_dir = '//DyLabNAS/Data/'\n",
"SequenceName = \"Evaporative_Cooling\"\n",
"folderPath = img_dir + SequenceName + \"/\" + get_date()\n",
"\n",
"mongoDB = mongoClient[SequenceName]\n",
"\n",
"DB = MongoDB(mongoClient, mongoDB, date=get_date())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Measure trap frequency at various points of evap 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Horz TF due to arm 1: blink on modulation = 0, blink_off_modulation = 0.35 in 700 µs, hold of 1 s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.5"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005, 0.006, 0.007, 0.008, 0.009, 0.01 , 0.011, 0.012, 0.013,\n",
" 0.014, 0.015, 0.016, 0.017, 0.018, 0.019]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0004\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7sfQcYFcX1/aEpogIq2EFiiUGNxt6ikaAgqD9RTKSoSDSisSCKJeavYkGNWLBj7wbUBA2KUSyAYktQULHEghoFRYpEgijt/523LDwe772d3ZnZ2Z298318Im9md+6ZO3PP3pm5t8HSpUuXQoogIAgIAoKAICAICAKCQGEQaCAEsDBjLYIKAoKAICAICAKCgCBQQkAIoCiCICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACGDBBlzEFQQEAUFAEBAEBAFBQAig6IAgIAgIAoKAICAICAIFQ0AIYMEGXMQVBAQBQUAQEAQEAUFACKDogCAgCAgCgoAgIAgIAgVDQAhgwQZcxBUEBAFBQBAQBAQBQUAIoOiAICAICAKCgCAgCAgCBUNACKDGgC9ZsgTTpk3D2muvjQYNGmg8SZoKAoKAICAICAKCQFoILF26FN999x023nhjNGzYMK3XZuo9QgA1huOLL75AmzZtNJ4gTQUBQUAQEAQEAUHAFQL/+c9/sOmmm7p6vdP3CgHUgH/u3Llo2bIlqEDNmzfXeFL2mi5cuBDPPPMMOnXqhCZNmmSvg5Z7VHT5CW/RMRD5i70GyBzwew3473//W3LgfPvtt2jRooVli5LNxwsB1BgXKhAVh0TQRwI4evRodO3atbAEsMjyh8avyBiQAIr8xV0DZA4EBNDXOeCz/ValNUIAVZGqUs9nBfJ54qsMedHlF+Pnt/GTOaCCgOiAz+ugz/ZbTbsBIYCqSAkB1EAqf019XvhUR6PoGIj8/np/ZA6oIeDzHBACKARQbRbUqOWzAvk88VUGvejyiwdQvD8yB0QHfNYBn+23io1jHfEAqiIlHkANpPLX1OeFT3U0io6ByC8eQNEBf3VACKAQQFVbWLWezwokC5+/C5+q0osOFFsHij7+4gX32wPqs/1WXePFA6iKlHgANZDKX1Mxfn4v/ioaWXQdKLr8QgD9XgOEAIoHUMUO1KzjswIVffEvuvxi/Pw2fioLn8wB0QGfdcBn+60yv+UMoCpKcglEE6n8Nfd54VMdjaJjIPIXewtcPoL8JsBCAMUDqGoL5QygFlL5a1x04y/Gz2/jpzIjZQ6IDvisA0IAhQCqrIOyBVzQVHC+RsBXVXqfF38VDER+8QCKDvirA0IAhQCq2AEhgEIAtfQkr43F+Plr/FR0sujjL15wvz2gQgCFAKqsg0IAhQBq6UleGxedAIj8xSbAQgCFAOZ17Vbtt4SBUUWqSj2fvyDE+InxEx0otg4UffyFAAoB1KAHuWgqBFBjmIQAaoCX4ab/+x+w1lpBB+fMWYiWLZtkuLf2ulZ0AiDyF5sACwEUAmhvdc3Gk4UAaoyDEEAN8DLcVAhgMDhCgIpNgIo+/jIH/F4DfLbfquZVCKAqUrIFrIFUvpoKARQCKMbfb+OvuiIVnQT7LL8QQLkEoroOVK3nswL5PPGjBl0IoBBAIYBCAEUH/NYBn+13lI0LfxcPoCpS4gHUQCpfTYUACgEU4++38VddkYr8Iez7HBACKB5A1XVAPIBaSOWrsRBAIYC+Gz+VGVl08iM64PdHgBBAIYAq62DNOj4rUJEXfyGAQgDF+Ptt/FUX/iKvg77PAZ/tt6p+yxawKlKyBayBVL6aCgEUAui78VOZkUUnP6IDfn8ECAEUD6DKOigewIJlAhECKARQjL/fxl914S86CfZZfiGAQgBV1wE5A6iFVL4aCwEUAigEUAig6IDfOiAEUAigFjPxWYF8/vKLGnQhgEIAxfj7bfyj1oDw9yKvg77PAZ/tt6p+yxlAVaTkDKAGUvlqKgRQCKDvxk9lRhad/IgO+P0RIARQPIAq66CcAZQzgFp6ktfGRScAIn+xU+EJARQCmNe1W7Xf4gFURUo8gBpI5aupeADFAyjG32/jr7oiyUeAvx8B4gEUD6DqOlC1ns8KVOSFTwigEEAhgEIARQf81gGf7bcqsREPoCpS4gHUQCpfTYUACgEU4++38VddkYr8Iez7HBACKB5A1XVAPIBaSOWrsRBAIYC+Gz+VGVl08iM64PdHgBBAIYAq62DNOj4rUJEXfyGAQgDF+Ptt/FUX/iKvg77PAZ/tt6p+O98CHj9+PIYMGYKJEydi+vTpGDlyJLp167a8/8ceeyzuvffeleTZfffd8eqrry7/tx9++AEDBw7EX/7yF3z//ffo2LEjbr75Zmy66aZ1cWAdvpvv3XbbbTF06FDss88+qtjBZwUq8sInBFAIoO/GT2WRK/IaEOJTdAx8lt9n+60yv1nHOQF86qmnMGHCBOy0007o3r17VQL49ddf4+67714u02qrrYZ11113+f+fdNJJGDVqFO655x6st956OPPMMzF79uwSqWzUqFFVLEaMGIGjjz66RBT33ntv3Hrrrbjjjjvw7rvvom3btkr4+axAPk/8qMEVAigEUAigeABFB/zWAZ/td5SNC393TgDLO9qgQYOqBPDbb7/FY489VlWmuXPnonXr1rj//vtx5JFHlupMmzYNbdq0wejRo9G5c+eq7ehFJOm85ZZblv/evn37kvfx8ssvV8LPZwUSAhiowJw5C9GyZRMlffCtUpF1QIy/38Zfda7KHJAwMKq6ksd6uSCAJH/0+rVs2RK/+tWvMHjwYKy//volvJ9//vnSli89fuuss87yMdhhhx1KZO6iiy5aZVx+/PFHNGvWDI888ggOO+yw5b/3798fkyZNwrhx45TGUgigEky5qyQeQPEACgEUAig64LcO+Gy/VY1u5gkgt2rXWmstbLbZZpg6dSrOP/98LFq0qLS9u/rqq+Ohhx5C3759wXOA5aVTp074yU9+UtrarSz0EG6yySalree99tpr+c+XXXZZ6bzhBx98UBU/vqP8PVQgehpnzpyJ5s2bq2Kei3r88h0zZgwOOOAANClgJpB11gm8fjNmzC+0B7CoOhAaf5G/mGtAuEgXeR30fQ7Qfrdq1QrcRfTNfquSjMwTwEpBeGGDZHD48OE4/PDDaxJAEpctttgCw4YNq0kAX375Zey5557Lf6dnkVvJ77//flX8Bg0aVNWjSBJKj6IUPxBYsKARevQ4uCTM8OFPoGnTxX4IJlIIAoKAICAIlBCYP38+evXqJQQwK/pQ7Qxgtb5ttdVWOP7443HOOeekugUsHsCsaIrdfnALWDyAwfaPeMCK6wEr+vj77gFTWUV91gHxAGbgFnC5EqoQwFmzZpW2b2+77TYcc8wxJfbOSyAPPPAAfvvb35YeRy8hQ8BEXQLZeeedS7eAw7LNNtvg0EMPlUsg8PvsR9TCJ2cAA4TkALy/B+Cj5oCMv8wB33VAzgBmgADOmzcPH330UWm27bjjjrjmmmvQoUOHUpgX/uG2K8PDbLTRRvj0009x3nnn4fPPP8d7772Htddeu9SOYWCeeOKJUhgYtmFMQBLF8jAwvCjCCx+nnHJKqU0YBoZbxNwGJqG8/fbbMWXKlNIWs0rxWYGKbPyFAIrx8934qaxvRV4DQnyKjoHP8vtsv1XmN+s4PwM4duzYEuGrLH369CmFaOFN3jfffBMMBUMSyLqXXHJJ6fJFWBYsWICzzjqrdB6wPBB0eZ127dqBQaVJKMNC79+VV15Z8hhut912uPbaa7HvvvuqYieBoJWRyldFIYBCAIUAigdYdMBvHRACmAECmC9qsHJvfVYgn7/8onROCKAQQDH+fhv/qDVAPID+rwE+229V/XbuAVTtaBbr+axAQgADjZNA0KPRtWvXwoUCEgIoBFB0wG8d8Nl+q/IlIYCqSFWp57MCCQEUAlhkHRDj77fxV132ZQ74exHKZ/utqt9CAFWREgKogVS+msoWsP/bPyoaKcbfX+OvMv7yEeD3R4AQQDkDqLoOVK3nswIV2fgJARQCKMbfb+OvuvAXeR30fQ74bL9V9Vs8gKpIiQdQA6l8NRUCKATQd+OnMiOLTn5EB/z+CBACKB5AlXWwZh2fFajIi78QQCGAYvz9Nv6qC3+R10Hf54DP9ltVv8UDqIqUeAA1kMpXUyGAQgB9N34qM7Lo5Ed0wO+PACGA4gFUWQfFA9ikiRZOeWssBFAIoBh/v42/6ppUdBLss/xCAIUAqq4DVev5rEA+T/yoQRcCKARQCKAQQNEBv3XAZ/sdZePC32ULWBUp2QLWQCpfTYUACgEU4++38VddkYr8Iez7HBACKB5A1XVAPIBaSOWrsRBAIYC+Gz+VGVl08iM64PdHgBBAIYAq66CcAZQzgFp6ktfGRScAIr8EghYd8FcHhAAKAdSyzT4rUJEXPvEAigdQvD9+e39UF/4ir4O+zwGf7beqfssZQFWk5AygBlL5aioEUAig78ZPZUYWnfyIDvj9ESAEUDyAKuugbAHLFrCWnuS1cdEJgMjv7/af6pwUHfBXB4QACgFUXQfkEogWUvlqLB5A8QCK98dv74/qiiQEUAigqq7ksZ5sAWuMms9fEEVe+IQACgEUAigEUHTAbx3w2X6r0hohgKpIyRlADaTy1VQIoBBAMf5+G3/VFanIH8K+zwEhgLIFrLoOyBawFlL5aiwEUAig78ZPZUYWnfyIDvj9ESAEUAigyjpYs47PClTkxV8IoBBAMf5+G3/Vhb/I66Dvc8Bn+62q37IFrIqUbAFrIJWvpkIAhQD6bvxUZmTRyY/ogN8fAUIAxQOosg6KB1DCwGjpSV4bF50AiPz+3gBVnZOiA/7qgBBAIYCq64CcAdRCKl+NxQMoHkDx/vjt/VFdkYQACgFU1ZU81pMtYI1R8/kLosgLn2sCWP7+efOANdfUUFKNpkXWASGAQgBFB/zWAZ/tt+qyLwRQFakUzwBmgQAU2fgLARQPoBh/v42/6rJf5HXQ9zkgBFC2gFXXgVS3gIUAag2LdmMhgEIAfTd+KpOk6ORHdMDvjwAhgEIAVdbBmnVsKZAQQK1h0W4sBFAIoBh/v42/6iJRdBLss/y27LeqbmWhnmwBa4yCLQUSAqgxKAaaCgEUAigEUAig6IDfOmDLfhswQak9QgigBtS2FEgIoMagGGgqBFAIoBh/v42/6jLhswdMBQOf5bdlv1VwzUodIYAaI2FLgYQAagyKgaZCAIUACgEUAig64LcO2LLfBkxQao8QAqgBtS0FEgKoMSgGmgoBFAIoxt9v46+6TPjsAVPBwGf5bdlvFVyzUkcIoMZI2FIgIYAag2KgqRBAIYBCAIUAig74rQO27LcBE5TaI4QAakBtS4GEAGoMioGmQgCFAIrx99v4qy4TPnvAVDDwWX5b9lsF16zUEQKoMRK2FEgIoMagGGgqBFAIoBBAIYCiA37rgC37bcAEpfYIIYAaUNtSICGAGoNioKkQQCGAYvz9Nv6qy4TPHjAVDHyW35b9VsE1K3WEAGqMhC0FEgKoMSgGmgoBFAIoBFAIoOiA3zpgy34bMEGpPUIIoAbUthRICKDGoBhoKgRQCKAYf7+Nv+oy4bMHTAUDn+W3Zb9VcM1KHSGAGiNhS4GEAGoMioGmQgCFAAoBFAIoOuC3Dtiy3wZMUGqPEAKoAbUtBRICqDEoBpoKARQCKMbfb+Ovukz47AFTwcBn+W3ZbxVcs1JHCKDGSNhSICGAGoNioKkQQCGAQgCFAIoO+K0Dtuy3AROU2iOEAGpAbUuBhABqDIqBpkIAhQCK8Xdv/GUdNLCYaT5CPICaAGa8uRBAjQESAqgBXoabCgEUAigEUAig6IB7HbBpJmzZb5t9Nv1sIYAaiNpSIPny1RgUA02FAAoBFOPv3vjLOmhgMdN8hHgANQHMeHMhgBoDJARQA7wMNxUCKARQCKAQQNEB9zpg00zYst82+2z62UIANRC1pUDy5asxKAaaCgEUAijG373xl3XQwGKm+QjxAGoCmPHmQgA1BkgIoAZ4GW4qBFAIoBBAIYCiA+51wKaZsGW/bfbZ9LOFAGogakuB5MtXY1AMNBUCKARQjL974y/roIHFTPMR4gHUBDDjzYUAagyQEEAN8DLcVAigEEAhgEIARQfc64BNM2HLftvss+lnCwHUQNSWAsmXr8agGGgqBFAIoBh/98Zf1kEDi5nmI8QDqAlgxpsLAdQYICGAGuBluKkQQCGAQgCFAIoOuNcBm2bClv222WfTzxYCqIGoLQWSL1+NQTHQVAigEEAx/u6Nv6yDBhYzzUeIB1ATwIw3FwKoMUBCADXAy3BTIYBCAIUACgEUHXCvAzbNhC37bbPPpp8tBFADUVsKJF++GoNioKkQQCGAYvzdG39ZBw0sZpqPEA+gJoAZby4EUGOAhABqgJfhpkIAhQAKARQCKDrgXgdsmglb9ttmn00/WwigBqK2FOi//wVatAg6Nno00KkT0KiRRkcTNPX5yy8KDiGAQgDF+Ls3/uIBjFqp7P/usx2wZb/tj4q5NwgB1MDShgL97W/AaacBX365omObbgpcdx1w+OEanY3Z1OeJHwWFEEAhgEIAhQCKDrjXgai1Wud3G/Zbpz8u2goB1EDdtAKR/B1xBLB06cqdatAg+P9HH02PBBaZAJZ7YEeNWoQuXRqn6oHNgudDjJ/fxk9l2XO9BmRhHrjGQGWcbNbxWX7T9tvmONh6thBADWRNKtDixUC7dsAXX1TvEEkgPYFTp6azHezzxK835FnwwGbB8AkBFALoeg3IwjxwjYGGeTLS1Gf5TdpvI2A7eIgQQA3QTSrQ2LFAhw7RnXnhBWC//aLr6dbweeLXwiYrHtgsGD4hgEIAXa8BWZgHrjHQXcd12/ssv0n7rYuzq/ZCADWQN6lAf/kL0KtXdGceegjo2TO6nm4Nnyd+NWyy5IHNguETAigE0PUakIV54BoD3XVct73P8pu037o4u2ovBFADeZMKJB5AjYEw0DRL+GfB8AkBFALo2vhnYR64xsDA0qb1CJ/lN2m/tUB22FgIoAb4JhUo9EDx9m/lJRB2Uc4AagyUQtMseWCzYPiEAAoBdG38szAPXGOgsHRZreKz/Cbtt9VBsPhwIYAa4JpWoPAMGrtUTgLlFrDGICk2FQ/gqkC5XPzF+CsqrsVqLsefYokOWBxcxUe71gHFbiaqZtp+J+qE40ZCADUGwIYCVbuF2qYNMHRoeiFgiuj9ifLAEhOOQxq3sLNg+FzrQBYw8Nn4qSx7ruUXHVAZJbt1XOuATels2G+b/bXxbCGAGqjaUqDyOHRduwJ//3s6oV/KofB54tca8loe2LD+I48EcRptlywYPiGAsgXseg3IwjxwjYHttSbq+T7Lb8t+R2Gapd+FAGqMhi0FKl/49t0XGDdOo5MJm/o88etBUs0D27QpcOmlwJlnJgQzZrMsGD4hgEIAXa8BWZgHrjGIuXQYr+6z/Lbst/FBsPhAIYAa4NpSoJVTkQEtW2p0MmFTnyd+PUiWLAnC8YwYEdSSTCCj0bVrVzRp0iShJiVr5tr4u04HmAw1s61crwGudcD1R5DZ0Uz2NNc6kKzXaq1s2W+1t2ejlhBAjXGwpUCy8GkMimbTDz4AfvazFQ+ZM2chWrZcQX7efBP4yU/skvIsjL9r4+caAyGA7j2grnXA9RzQXMqMNBcCaATGzD5ECKDG0AgB1AAvo03p+evRozoBvPVW4JRTAg/hvffaEyALhs+18XONgRBAIYCu54C9FUb9yUIA1bHKY03nBHD8+PEYMmQIJk6ciOnTp2PkyJHo1q1bVSz79euH2267Dddeey1OP/305XU+/vhjDBw4EC+99BJ++OEHHHjggbjhhhuwwQYb1ByTQYMG4aKLLlrpd9b/6quvlMcxDQLYu3dw+5d/0iw+T/x6OJ57LvDnP1cngBMmADyTyW3ikSOBGmqqPUyuyU8ogEsdcI2BEEAhgEIA3euA9mJa5wG27LfNPpt+tnMC+NRTT2HChAnYaaed0L1795oE8LHHHgNJ2zfffIOzzjprOQH83//+h+233x477LDDckJ3/vnnY9q0aXj11VfRsGHDqpjxWY8++iieffbZ5b83atQIrVu3VsbYlgKVGx92hl6nG25Q7paRii6NvxEBEj6kc2fgmWeqE0D+a0gQqSbvvAOsv37CF9Vp5pr8CAFcOQZd5TEA8yOezSe6XgOyMA9cY+BaM3yW35b9dj1mcd7vnACWd7ZBgwZVCeCXX36J3XffHU8//TQOOuigEvkLPYDPPPMMunTpgjlz5qB58+alx/Hv6667LsaMGYP999+/JgEkqZw0aVIcvFaqa0uBKgngr38NPPdc4m4maujzxK8FCINv02n8zTe1CeAPPwC77gq8/XbgAeSt4TBQdyKgqzTKguFjt1zqgGsMxAPodvypf651wPUcMLWe6DzH5Rqg02+Vtrbst8q7s1In8wRwyZIlJRJ36KGHon///mjXrt1KBHDUqFE47LDDQE/g6quvXsL1+++/x1prrQV6Aunpq1b479x6btGiRakdCeZll12GzTffXHlsbClQJQHccENg+nTlbhmp6PPErwXQtGnAJpsAdBpzmzf4mFj5Egj/jd8Mu+1GAxmcBTzmGCOQL39IFgyfa+PnGgMhgEIAXc8Bs6tKsqf5bAds2e9kSLtplXkCePnll+OFF14oef/oIawkgNwS3nLLLdG3b98SgVu6dCnOOecc3HTTTTjhhBNwK0/uVyncep4/fz5++tOf4uuvv8all16K999/H1OmTMF6661XtQ3PF/JPWKhAbdq0wcyZM5d7H00MI43POuusHHbjq68WYt11TTxd7Rmc+PSgHnDAAamHAFHrofla48c3wIEHNsKWWwLvv9+g9IIZM+avdAs4fOsVVzTEBRc0QvPmS/HWW4uw8cbm+lM+/iSga65p7tlxnuRSB1xjUP7+WjoQB8s81nU5/sTLtQ6EBLBo62C5rrrWAZvzhva7VatWmDt3rlH7bbPPpp+daQLIiyHc8n3jjTew8TILW0kACQi3gU866SRMnTq1dOavZ8+eePfdd0tevZtvvlkJM3oQt9hiC5x99tk444wzqrapdnGEFR966CE0a9ZM6T0qlRYsaIQePQ4uVV1vve8xa9YauPzyF9G+/WyV5lJHA4Eff2yIr75qhtNO61h6yvDhT6Bp08WrPHHx4gYYNGhP7LbbVzjooE9KXkNTpXz8a73f1Luy+hzXGLh+f1bHJc1+yRikiXbx3kUHUK9evYQAZmXoK88ADh06tETGyi9yLF68uPT/9Lx9+umnK3WdnrjGjRujZcuW2HDDDXHmmWeWLoyoFnq76E285ZZbqjZx4QHs2HEJnnuuIW65ZRGOO26pqija9Xz+8osCR9X7wzODps//sW9Z8HywHy51wDUGqjoQpUt5/t3l+GdlHrjGwLX++Cy/eACBTHsAZ82aVQoNU146d+6Mo48+urTlu/XWW1edH88//3zp3OB7771Xs05lQ5I7egC5bXzBBRcozTtbZwjKzx+deipw440AjzIqdkup71GVfD77ESV7kvNfbDNnDrDpplFPj/7d9fm3sIcudcA1Bkl0IHpk81XD5fiHBHCttQLM5s2Dk6MQrjFwrTE+y2/Lfrseszjvd04A582bh48++qjU5x133BHXXHMNOnToULrF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lL+Xhp7HHpj1g9keDj00Wa9Mjn+yHrhtpaoDtnqpowPlfSK5pT349a+D279xSlwdCG/J09vP4zc6H0Wm5K8lbxbtd5yxMVE3MQE87LDD8MILL2DdddfFtttuiybcaygrDBGjUhg4esiQIZg4cWIptdzIkSPRjf74KqVfv3647bbbwPOFp/P07rLy8ccfY+DAgXjppZfwww8/4MADD8QNN9yADSJiodx8882ld/O9lGHo0KHYZ599VLpdqpNFBQq//E89FVgWs1tZnvKKcSd+opdYasQcswyNwnhzDJMSt+Rx4T/uuCChe//+AA//myimdIAHwzkV6Z2kdyDGFDMhRqJnqOoAMSf2PFzPG6U6xy7KO6pj/BjfjnHuuO3LzCtJjbCp8U80ABlopKoDtrqqowNhn778Mgh0zfPhY8cC9NDFKXF1YOHCwJPKj1F+8DFLUdJiQv56786i/U6KVdJ2iQlg3759677zbn4aK5SnnnoKEyZMwE477YTu3bvXJICPPfYYBg0ahG+++QZnnXXWcgL4v//9D9tvvz122GEHXLQssuz5558PpqR79dVXwZR11cqIESNw9NFHgyRw7733xq233oo77rgD7777LtpGnVBf9sAsKlCYaSHp9meIVdyJrzDUqVYJMxGusUay17qUP8nCx+8tXrLYaqsgPp2JYgqD118HGBee8eiYprDiW9FEV40/Q9X4k9zusktw2cJkJoQkOhCCwMDgzPBAo88PgqTF1PgnfX+a7RhInZle6C0loWdR1QFb/dTRgbBPHH86AvjRxY+vuCWJDtAMM/wWA9MT16TFhPz13p1F+50Uq6TtEhPApC+s1443iat5AL/88stSZpGnn366dOuY3r/QA/jMM8+gS5cumDNnDpovi3jKv9MzOWbMGOzPIFhVCp9H0nkLfePLSvv27Uvex8uZYFWhZFGBwhAVG20UfP0nLUkmftJ3ZbGdS/mTLHwM+EvvE7/ASQBJBHWLKQxCg0CC+uijur1Kp30c48+IV/zg4uF3hhOpl1tVtfdJdED12ar1TI2/6vtc1mM2EB4Z4U3ZyZODi2NxdMBG33V1gJlreBSAH13M1lHDFNbtehIdoPePPhQeRZgyJQizk6Toyh/1ziza76g+m/5diwAuWrSodBGEW7C9evXC2muvXfK8kYiV5whW7XQ1Asj4giRxhx56KPr3719K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RIAIEIH8QoAEML/mI2OjGT58uDzzzDOyefNmqVevngwbNkwaN25c7PMXLFgg99xzj6xYscLcjH7//ffLrbfeWqj9tGnT5JFHHpHvv/9eTjzxRHnyySelffv2hdps3LhRHnjgAZkzZ478888/cvLJJ8vLL78sDRs2zJhuNg+KQv89e/ZIv3795PXXX5ctW7ZIpUqV5Prrr5eHH344kpvmM40BbOPRRx+VZcuWyfr162Xo0KHSq1evItOR6ntt5jOdNqmOI9kasNEfJ+enT58uq1atkiOOOELOP/98GTx4sNSuXTsdFUL1iUL/2AEDi759+0rPnj2N/4lCosJAqx+0WQP55gejsDtX3kkC6MpMpTDOSZMmybXXXitwfhdccIGMHDlSxowZIytXrpTq1asXedK6devk1FNPlZtuukluueUWWbx4sdx+++0yceJE6dixo2n/ySefGAI5YMAAQ/reeustQwY+/vhjadSokWmzbds2qV+/vjRt2lRuu+02Oe644wxZrFmzpiGMuZKo9AchBikaN26cId1Lly6Vbt26yRNPPGGCYC4lGxh8/vnnMnnyZEPm7777bkP04wlgqu/NFiapjsNmDdjo36pVK7n66qvl7LPPFgTChx56SL7++muz9o488shsqVvkuVHpHwwEWF111VXmG2TgD6IggFFhoNkP2qyBfPKDOVtwjr6IBNDRiTvQsEHIGjRoICNGjChoVqdOHWnXrp252y9eEMjfeecd+fbbbwt+hezf8uXLDfGDdOrUyXwtEDJ7gSDYHX300YYoQvr06WPI46JFiyJFNSr9L7vsMjn++ONNxjMQEOhSpUrJhAkTcopJNjCIVQCkHuQvngCm+t5sgZLqOGzWgI3+8fps3brVfBBCdvGiiy7KlrpFnhul/jt27DD+Bx9A8eHnzDPPjIQARoWBZj9oswbyyQ/mbME5+iISQEcnrrhh79692xCOKVOmFCrPIgP11VdfmUAULwhMyNw999xzBb9Chg+f4Hfu3CklS5Y0mUNkffATCLJd+GSPciCkbt260rJlS9mwYYN5T5UqVUwmEZnFXEmU+j/11FPy0ksvydy5c03pGwS6RYsWBqPOnTvnCgLJFgbJnH86780GKOmMw2YNJNM/kS5r166Vk046yWQBkWXPhUStf9euXaV8+fImG37xxRdHQgCjxECzH7RZA/niB3Ox1lx/Bwmg6zMYN/5NmzYZ4oVMHPYfBTJw4EBTmly9enURjUFWsFcN+3UCWbJkiSkf43nYy3booYfK2LFjpUuXLgVt3njjDVPixDcmQA4//HDzJ/YSXnnllfLZZ5+ZDBFK0Nddd11OkI5S/3379hkMsefrkEMOkb1795p9kvg2lVxKtjBI5vzTeW82cElnHDZrIJn+8brAHtq2bWu2RuQyKx6l/m+++abJ+mH7A/xBVAQwSgw0+0GbNZAvfjAbvkXbM0kAlc1o4PhA4M4777wC7UBEUIbE5vR4QfADkYslKiCQF154oTlEUrFiRUMAQSBjM1k47NC9e3f5999/zSPR5qyzzhK8O5C77rpLsG8kKCVnG+4o9Ufw6927tzl8gz2AyLiCAA8ZMkSQFcmVZAuDZM4/nfdmA5N0xmGzBpLpH6/LHXfcIe+++67ZJ1u1atVsqJrwmVHp//PPP5v1jwz4GWecYcYWNQHMtB+0sQHNftBG/3zxgzlbcA6/iATQ4clLNPRslT5sSsA1atSQ5s2bmwMngWAfIjICOBWXC4lS/2rVqpl9kAj8gUD31157LSHxzhYe2cIgmfNP573ZwCCdcWS6BNyjRw+ZMWOGLFy4UE444YRsqFnsM6PSH/rigBiy34EgC37QQQeZU/CoFMT+LpugRIUBdNLsB5P5APw+X/xgNu1Ly7NJALXMZIwe2PyMk5rYhB0I9qWgHFXcIZCZM2eak4qB4BQvMlixh0C2b98us2fPLmjTunVrKVeuXMEhEJSHkQWILXdhz+Cnn35aKCuYbcij0r9ChQqG7AK7QID3q6++Kt9991221S70/GxgYOP8U31vtkBJdRw4BJJsDdjoj/IXyB/20M6fP9/s/4tCotAf/iHYDxzojMrCKaecYk6M52oPZPDuKDDAuzX7QZs1kE9+MIq159I7SQBdmi3LsQbXH+BAAsrAo0aNktGjR5s7/vDpFKVeZOTGjx9vnhhcgYErYHBgA6QPp4Bjr4FBKQVZEpSSQSTffvttc79d7DUwKPVi32H//v3NARLsAcTz8P5rrrnGcvThm0WlP/ZRfvjhh2bPI0rAX375pdx8881yww03mH2BuZRsYICsSvAhoU2bNmZO8VO6dGmpVauWUS/Ze3OFQbJxpLMGbPTHoSfsjcX6iL37r2zZsuZewFxJVPrH6xdVCdjGFrNlA5r9oM0ayCc/mKv15up7SABdnbkk40b27+mnnzZ7+PDJGyfygmsosEB//PFHk6EIBKd2ka0LLoLGJ/b4i6CnTp1qSN8PP/xQcBF0hw4dCo1k1qxZhmCuWbPGlL5wICSXp4CDwUShPzIguCgb2Z9ffvnFXKiNPZO4LxH7gnItmcYANpOonNmkSZNCtnSg9+YSgyj0R7kzkSALjHWXS4lC/3wigBhLVBho9YM2PiDf/GAu15xr7yIBdG3GOF4iQASIABEgAkSACIREgAQwJIDsTgSIABEgAkSACBAB1xAgAXRtxjheIkAEiAARIAJEgAiERIAEMCSA7E4EiAARIAJEgAgQAdcQIAF0bcY4XiJABIgAESACRIAIhESABDAkgOxOBIgAESACRIAIEAHXECABdG3GOF4iQASIABEgAkSACIREgAQwJIDsTgSIABEgAkSACBAB1xAgAXRtxjheIkAEiAARIAJEgAiERIAEMCSA7E4EiED6CKTyVWE1a9aUXr16mZ/iBN/EgW9iadeunfm2G3xzCb6S78wzz7QaZL9+/WTGjBnme7BdEXzDyB9//GHGTSECRIAI2CJAAmiLFNsRASKQcQSySQD37t0rW7dulWOOOUZKlChhNfZ8JoDFEdo///xT9u3bJ+XKlbPSkY2IABEgAkCABJB2QASIQGQIZJMApqOUiwQwHT3ZhwgQASJAAkgbIAJEoAgCIGannXaaHHLIITJu3Dg59NBDZcCAAXLNNdfInXfeKVOnTpXjjjtOXnjhBWndurXpv2DBAundu7csX75cypcvL127dpUnnniiIPv2999/y2233SbTp0+Xo446Su677z6ZOXOmKc8OGzYs6SygBNy9e3f59ttv5Z133pEyZcrIgw8+KD169Cjoe6AS8Pz586Vp06by4YcfygMPPCArV64073711Veldu3a5hnxBHDdunXSvHlz8/Piiy/KwQcffMBxTps2TR599FFZu3atVKpUyYzt3nvvLegDHW6++Wbz+ylTpsjRRx8tDz/8sPm/ZALdYqVJkyYCneJLwOnMHZ4LPDAnCxculCOPPFJatGghQ4cONRlUChEgAvoQIAHUN6fUiAiERgAk4osvvpD7779fOnXqJJMmTZLHHntMWrZsKe3btxf8HuRg8uTJ8tNPP8m2bdvk5JNPNmQEpGfVqlVy0003yR133GFIFeT22283hO+V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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 303.5930 ± 6.9704 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"#yvals = val_mean.sel(blink_on_time=slice(0.005, 0.025))\n",
"#yvals_std = std_mean.sel(blink_on_time=slice(0.005, 0.025))\n",
"#xvals = dataSet_cropOD[scanAxis[0]].sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = val_mean.to_numpy()\n",
"fitted_qtys_err_1 = std_mean.to_numpy()\n",
"scan_para = dataSet_cropOD[scanAxis[0]].to_numpy()\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 1, 148, 1e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.55"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005, 0.006, 0.007, 0.008, 0.009, 0.01 , 0.011, 0.012, 0.013,\n",
" 0.014, 0.015, 0.016, 0.017, 0.018, 0.019]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0005\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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iQRIgAR0CVAA6pJiPhIgAd8JBCkAjxw5gl27dqF69eooXbq0Vt1zWQAWJWj37NmDY8eOoUqVKlo+MhMJkAAJCAEKQLYDEiABawSCFIDZOBVFAZiNnyxDAiRAAhSAbAMkQAKFCIgwO+ecc1CqVCm88sorKFu2LB566CFcc801uOmmmzB79mzUqFEDTz/9NNq3b6/Kv/vuuxg+fDg++ugjVKtWDX369MHDDz+ct/r273//GzfeeCPmzJmDihUr4o477sCbb76ptmfHjx+fMQqyBdy/f398/vnnmD9/PipVqoS77roLN998c17Z4raAly9fjlatWmHp0qW488478dlnn6lnT5o0CQ0bNlQ2CgrAzZs3o3Xr1urPM888g5IlSxZbz9dffx333XcfNm7ciJo1a6q63X777XllxIeBAweqn8+aNQtVq1bFPffco/4tUxLfUtNll10G8angFnA2sRO7wkNismLFClSoUAFt2rTBuHHj1AoqEwmQgHsEKADdiyk9IgFjAiIi1q1bhxEjRuDqq6/Ga6+9hvvvvx9t27bFlVdeCfm5iIOZM2fi22+/xe7du9GgQQMlRkT0fPHFFxgwYACGDBmiRJWkwYMHK8H38ssv4+STT8aoUaOUgBFRpysAf/rpJ1XuqquuwjvvvINbb70VixYtUgJNko4AvOiii/DYY4/hxBNPxA033ADZKl61alUhAfjpp58qESRCdsyYMRmZrl27Fr///e+Vv8Js9erVyudnn31WcZEkAnDv3r1KTIttEdJ333031q9fjzPPPLPYZ7z//vvKvgjYs88+W4lyEdrpBKCX2JUvXx47duzAueeeq2LWu3dvHDhwQInkw4cP4+9//3tG35mBBEggegQoAKMXM9aYBAInIAJPhNHKlSvVs+TvlStXVsJrypQp6t927typVrnWrFmjhJ2sfsnqXHKlSoSPiAg5o7Z//36ccMIJqqyII0ki5mrXrq1Wv3QFYKNGjZTgS6YePXrgl19+wcKFC7UFoAioP/3pTyq/lOvYsaMSPOXKlctbAXzuuefQqVMntcIoq2I6SVZH5czh4sWL87KLgH7rrbeUwEsKwBYtWmDq1Knq/+XsnojhBx54QInR4lJRZwDTCUAvsbv44ovVquV7772nRHUybdu2DXXq1MGGDRuUuGciARJwiwAFoFvxpDck4AsBEYCyyiTbnsl06qmnqu1f2eZNihfZEn3jjTcwefJkJRBlOzWZZCtYtli3bNmiVgiTf69bt25enqZNm0K2MnUFYL9+/ZRYSaYnn3xSlZWtWkk6K4Dff/+9Wv2TJG8IN2vWTNVR6iWrd0899RQOHjyotq9lhVE3iZ3OnTurldJkEjbdunVTAlO202UFUFZFkwwl33nnnYeuXbvm8yvdM70IQC+xu+KKK5QIXrJkiVpVTE2ybS8iObnNr8uC+UiABHKfAAVg7seINSSB0Amkezkj3TUsScEl5wTlPJts7yaTXKUiAk+2iH/88Uf196TQSubxQwCKCNy0aZO2ABQxmnxjNllHEZDinwjA6dOno1atWmrVUkSRnDXUSeKLbI+nClS5mqV79+75BGDBq2xEGMu1Ncmt8qKe5UUAFjxXWVzs5Nki8GQrWLbGCyZZ5ZUzgUwkQAJuEaAAdCue9IYEfCHgVQDK+bR0W8AjR45Ud9SJmJLzaq+++qoSRJJEiMkWsJw7010BPOuss/K2e8VGz5491Razly3gTAJQRJucCezQoQMOHTqktnTlpZVMqagtYKmbnCeUlE6I6QrA7777Dqeccgo++OADnH/++XnVSbcF7FUAyjlEiZ/UU/fKnEw8+HMSIIHcJkABmNvxYe1IwAoBrwLwwgsvVOfE+vbtq7aJ5dzY9ddfn+8lEHkDWMSQrBKedNJJ6uUHecHAy0sgIt6knKxayerc0KFD1Rk7eTlFks4WsI4AlJXBffv2qZUxOaf39ttv4/jjjy82FvLihXBIvgQiZyPF54IvgWS7AigvZMhqpPgvbOXMomy7+yEARVyKaJTteNmeljd/5U3lGTNm4MUXX1Tb10wkQAJuEaAAdCue9IYEfCHgVQCKIMt0DYwIqtRrYOR6FBFvXq6BkTOA8kLFggUL1KqcvKQhIjCZ/BSAYlPqLOJSBJC8fJJpKzR5DcxXX32Vdw1M6kskJiuAUp+JEyfiwQcfxPbt2yEvkxR1DYzXFUCxLXWWl3aWLVumzkDKmc927dph7NixeS/2+NK4aIQESCAnCFAA5kQYWAkSIAESIAESIAESCI8ABWB4rPkkEiABEiABEiABEsgJAhSAOREGVoIE4k1A7hss7qoR2Yq1naR+yXsRC9ZFLqeWPybp0UcfhfxJl2S7N/X+Q5PnsCwJkAAJCAEKQLYDEiAB6wTknjw511ZUql+/vvU6Sv2knumSvOEsf0ySXIwtf9Kl4447Tr0BzEQCJEACfhGgAPSLJO2QAAmQAAmQAAmQQEQIUABGJFCsJgmQAAmQAAmQAAn4RYAC0C+StEMCJEACJEACJEACESFAARiRQLGaJEACJEACJEACJOAXAQpAv0jSDgmQAAmQAAmQAAlEhAAFYEQCxWqSAAmQAAmQAAmQgF8EKAD9Ikk7JEACJEACJEACJBARAhSAEQkUq0kCJEACJEACJEACfhH4f8YhVOFn+MZYAAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7sXQV4FccaPRCCRZDikOBuBYq7FytaJLhLcXcrVlyLFicBHu5SIFihUFxCcQ2eECxYyPtm0wtJuMnd3dndO5v7z/v6PVpG/jlz5t9zR/6JFRoaGgpKhAAhQAgQAoQAIUAIEAIOg0AsEoAOM9bUUUKAECAECAFCgBAgBCQESAASEQgBQoAQIAQIAUKAEHAwBEgAOtiAU3cJAUKAECAECAFCgBAgAUgcIAQIAUKAECAECAFCwMEQIAHoYANO3SUECAFCgBAgBAgBQoAEIHGAECAECAFCgBAgBAgBB0OABKCDDTh1lxAgBAgBQoAQIAQIARKAxAFCgBAgBAgBQoAQIAQcDAESgA424NRdQoAQIAQIAUKAECAESAASBwgBQoAQIAQIAUKAEHAwBEgAOtiAU3cJAUKAECAECAFCgBAgAUgcIAQIAUKAECAECAFCwMEQIAHoYANO3SUECAFCgBAgBAgBQoAEYBQc+Pz5M/z9/eHm5oZYsWIRUwgBQoAQIAQIAUKAEBAGgdDQULx69Qpp0qRB7NixFdtFAjAKyO7fvw8PDw/FgFIBQoAQIAQIAUKAECAEjELg3r17SJcuneLmSABGAVlQUBASJ04MBqy7u7tiYM1Y4OPHj9izZw+qVKkCZ2dnM3ZBV5sJn+jhJXwIH54JSPwh/hB/lCHw8uVLaaHqxYsXSJQokbLCAEgARgEZA5YByoSgIwnAHTt2oHr16iQArfCCfaAIn6h9DOFj+wNO/CH+KP5K/1eA5hfNr8gI8OoUEoAkAL8gQA6GHIzajxMrR/wh/hB/eBAg/vCg54j+hwQgD2OiKcsLrE5m6VqtI04gJYASPvSBUsKXyHmJP8Qf4g8PAsQfWgHUjz8RaiYBSGcA6QOubLKRwKEPlDLGRMxN/CH+EH+UIcCrU2gLOAq8eYFVNoxi5CYHTA6Yh4nEH+IP8YcHAeIPD3qO6H94dQoJQBKAXxBwxAmkxOEQPvSBUsIXWkFWhhbNL5pfyhhDK8gkAHkYE01ZXmB1MkvXaskBkwPmIRjxh/hD/OFBgPjDg54j+h9enUIrgLQCSCuAMr2OIzoYmdBI2Qgf+oAr4QutkCpDi+YXza/ICJAAVDaHZOfmBVZ2QwJlJAdDDoaHjsQf4g/xhwcB4g8Peo7of3h1Cq0A0gogrQDK9DqO6GBkQkMrgDKAIv6QwJFBkyizEH+IP7QCyDODFJTlVdYKmhImKzkYcjA8ZCT+EH+IPzwIEH940HNE/8OrU2gFkFYAaQVQptdxRAcjExpaAZQBFPGHBI4MmtAKoEqQHHF+kQBUSRZbxXiBtVW/iH/viBNIyTgQPvQBV8KXyHmJP8Qf4g8PAsSfyAjw6hRaAaQVQFoBlOmT6ANODlgmVaxmI/4Qf4g/PAgQf0gA6sefCDXzKmuDzNS0GfpAkYPhIRTxh/hD/OFBgPjDg54j+h9enUIrgLQCSCuAMr2OIzoYmdBI2Qgf+oAr4UvkvMQf4g/xRxkCJACV4SU7Ny+wshsSKCM5YBM54DdvAFfXMINfvwZcXOzOJOKPifhjd7Z8awDxh/jDQ0tH5A+vTqEVQFoBpBVAmV5HKAdDAlDmqImTTSj+iAML+R+ZY0H8IYEcGQESgDInj9JsvMAqbU+E/ORgTORgSACKMGUU2UDzy0TzS9HIGpOZ+EP8IQFozFwDCUBng5A2TzNCOWASgOYhzn+WCsUfAdEjfEjg8NDSEfnDq1NoC5i2gGkLRqbXEcrBkACUOWriZBOKP+LAQv5H5lgQf0gg0wqgzMnCm41XWfO2b4/y5GBM5GBIANpjinC1SfPLRPOLa6T1KUz8If6QANRnbn1TKwlA2gKOTAqhHDAJQIM8gXbNCMUf7bqlWU2EDwkcHjI5In94dQptAdMWMG3ByPQ6QjkYEoAyR02cbELxRxxYyP/IHAviDwlkWgGUOVl4s/Eqa9727VGeHIyJHAwJQHtMEa42aX6ZaH5xjbQ+hYk/xB8SgPrMLdoCppccbDJLKAdMAtDmeImWQSj+iAYO+R+bI0L8IQFIAtDmNNEmA60A0hnAyEwSygGTANRmohtYi1D8MbDfcpsifEjgyOWKtXyOyB9enUJnAKNgHC+wPES2V1lHnEBKsBYKHxKASoZOiLxC8UcIRCIaQfiQAOShpSPyh1enkAA0qQC8G3QXH0M+InPSzDxzJkJZR5xASsATCh8SgEqGToi8QvFHCERIACoZBuIPCWTaAlYyYzjy8iprjqajLXr/5X203dIWe27swdQqU9GreC/NmiIHYyIHQwJQM94bVRHNLxPNL6NIoaAd4g/xhwSgggnDk1VEAej/yh/F/ygOtvoXO1Zs7G2+FxUyVpC6+fL9S7g4u8AptpPqbpODMZGDIQGomuf2Kkjzy0Tzy14kiaZd4g/xhwSgQRNTNAEY8jkEJReXxN8P/ka277Jha5Ot0v+z9Pztc1ReURmN8zRG/5L9VSNEDsZEDoYEoGqe26sgzS8TzS97kYQEoGrkHXF+8eoUOgMYBd14gVXN4igKTj02FX329EGieIlwpuMZZEyS8UtOnws+8NrgBefYzjjX6RxyJs+pqnlHnEBKgBIKHxKASoZOiLxC8UcIRCIaQfiQQOahpSPyh1enkAA0gQAMCA5AxhkZpW3ehbUWol3BdhGsDg0NRS2fWth+bTtqZ6+NTY03qZpHjjiBlAAlFD4kAJUMnRB5heKPEIiQAFQyDMQfEsiRESABqGQGKcjLC6yCpmxmXXFuBVpsaoF8KfNJq3/s/F/kdOXZFeT+PTc+h37G8bbHUTRdUZv1Rs5ADsZEDoYEoGJ+27sAzS8TzS97k8VK+8Qf4g8JQIMmpkgCkHX55IOTeB/yHqU8S0WJQKtNrbDs3DI0zN0QaxqsUYwUORgTORgSgIr5be8CNL9MNL/sTRYSgIpHwBHnF69OoS3gKGjGC6xi9mpQ4Nyjc/h+/vdwiuWEmz1uwjORp6JaHXECKQFIKHxIACoZOiHyCsUfIRCJaAThQwKZh5aOyB9enUICUHABGPwxGAmcE8ieF+WXlYfvbV+MLjcaw8oOk12OZXTECaQEIKHwefkSSJQozPwdO4AqVQAn9SGAlOAQVV6h8NGiQxrXQfiQwOGhFPGH+BMZARKAPDMqmrK8wGphFjvXV2hBITTI1QBLay9FrFixbFa77+Y+PHr9CHVz1kVC54Q284fPQA7GJA5mwwage3fgwYOvBqdLB8yYAdSrp2jMtcxM/DEJf7QcdA3rIv4Qf3jo5Ij84dUptAIo8Arg8APD8euhX1Ejaw1s89rGMzdklXXECSQLmP8yCYEPE38NGgChoRFNt/w4WLfObiJQCHyUDKjBeQkfEjg8lCP+EH9oBZBnBikoy6usFTQVZdZss7LhWsA1rKq3Cl55vbSoMto6yMEI7mBCQoAMGYD7960bykQgWwm8dcsu28HEH8H5o7sH4WuA+EP84WGQI/KHV6fQCqCgK4DXnl9DttnZpODOz/s/h1s8N9lz49X7V5h1YhaO3D0irRxaCxtjrTJHnECyQRXhjKSvL1C+vG2TDxwAypWznU/jHMQf+oDzUIr4Q/wh/ihDgASgMrxk5+YFVnZDUWSccXwGeu7uiYoZK+LPFn8qqu79p/dIPik5Xn14hWNtj6FYumKyypMDFtwB+/gAXjJWgr29gSZNZI25lpmIP4LzR8vB1qEu4g/xh4dWjsgfXp1CK4CCrgBWWVEFe2/uxZQqU9C7eG/F86LxusZYc2kNhpcZjlHlR8kq74gTSBYw/2WyOz60AqhkuITLa3f+CIdIRIMIHxKAPBR1RP6QAORhTDRleYHlMev1h9f4buJ3+BDyAX6/+CFHshyKq1tyZgnabGkjrf6xVUA5yREnkBxcLHnsjo/lDCC7/Rv5Eggzks4AKhlOw/PanT+G91hZg4QPCUBljKEfELw6hVYABVwBfPHuBX4/+TvOPDqDtQ3Wygr/Erkb91/eh8c0D+n837N+z5AkQRKbc4scsAkcsOUWMDM1vAikW8A2+W3vDDS/TDC/7E2SaNon/hB/IiNAAlCnCcsLrE5mKaqWvQ18+ellrPt5Hernqm+zLDkYkzgYa3EAPTyA6dPtFgKGIUf8MQl/bHoC+2Qg/hB/eJjniPzh1Sm0AijgCiDPJAhftteuXpj+93R0KNgB82vNt1mtI04gm6CEyyAUPvQSiJKhEyKvUPwRApGIRhA+JAB5aOmI/CEByMOYaMryAqvWrKdvnuLw3cMo6VESKV1Tqq1GKrfz2k40Xt8YzfM1x+zqs23W5YgTyCYoogpAegtYydAJkZfmFwkcHiISf4g/kRHg1Sm0AijYCqD3BW803dAUhVIXwj8d/uHxF/j0+RNCQ0Ph7OQsqx5yMCZyMCQAZXFapEw0v0w0v0Qizn+2EH+IPyQADZqYvMparZldtnfB3H/momfRnpj24zS11agqRw7GRA6GBKAqjtuzEM0vE80vexIliraJP8QfEoAGTUx7CcB8c/PhwpMLsi9uyIXj5fuXcI/nHm12cjAmcjAkAOVSX5h8NL9MNL+EYc1XQ4g/xB8SgAZNTHsIwMDgQCn+XyhC8ajPI+4zgAyqC48voKZPTcSJHQc3ut8gAcjBH6EcMAlAjpG0T1Gh+GMfCMj/cOBO/CEBSAKQYwIpKWoPAbjj2g7U8K6BrEmz4mq3q0rMjTIvW/lLPCGxJCof9nmIVK6posxLDsZEDoYEoCbzw8hKaH6ZaH4ZSQyZbRF/iD8kAGVOFt5s9hCAg/cNxvgj49H6+9ZYXHsxbxe+lM8/Lz/OPz6P9Q3Xo17OeiQAVSIrlAMmAahyFO1XTCj+2A8G8j8qsSf+kAAkAahy8igtZg8BWGZJGSkEzB8//YE2BdooNTnK/J23dca8U/PQp3gfTK4ymRywSmSFcsAkAFWOov2KCcUf+8FA/kcl9sQfEoAkAFVOHqXF7CEAbwXewpG7R1AhYwWkdU+r1OQo8684twItNrWw+S4wORgTORgSgJrND6MqovllovllFCkUtEP8If6QAFQwYXiy2kMA8tgbXdmbgTeReWZmOMd2xstBLxE/Tnyr2cnBmMjBkADUa7roVi/NLxPNL91YoL5i4g/xhwSg+vmjqGRMEoAsGHTqKanx+M1jHGl9BCU9S5IAVMSGsMxCOWASgCpG0L5FhOKPfaEg/6MCf+IPCUASgComjpoiRgvApWeX4tnbZ6idvTayfpdVjcnRlmEXTNiN4I6FOiJvyrzkgFUgLJQDJgGoYgTtW0Qo/tgXCvI/KvAn/pAAJAGoYuKoKWK0ACz+R3Ecv38cq+qtgldeLzUmc5chB2MiB0MCkJvvRldA88tE88tocshoj/hD/CEBKGOiaJHFSAHI3ux1G++Gd5/e4covV5A9WXYtuqC4DnIwJnIwJAAV89veBWh+mWh+2ZssVton/hB/SAAaNDGNFIAsRh+L1ecW1w0vBr5A7Fixdenl249vce7ROXyf6nskcE7wTRvkYEzkYEgA6jJH9KyU5peJ5peeRFBZN/GH+EMCUOXkUVrMSAG45MwStNnSBmXTl4VvK1+lpsrOn2F6BtwJuoNDrQ6hdPrSJABlIxeW0d4O+MzDM1h3eR2YkC/1XQHUL9IyzLDXrwEXF4W90T67vfHRvkfa1kj40Aech1HEH+IPCUCeGaSgrJECsOuOrphzcg56F+uNKVWnKLBSWdbaq2tjy79bML3qdPQo1oMEoDL47C4Al51dhlabW0lWJ/wAvBn3XwdIACocSftkpw84fcB5mEf8If6QAOSZQQrKGikAjboAMvrgaIzwHYHm+Zpjed3lJAAV8EGEFUB2RrTbjm5SHMfNp71xd1iA1IMLN44hb6ZiCnujfXb6QNEHiodVxB/iD/FHGQK8OiVWKAsSR+kbBHiBlQvp59DPSDQhEV5/eA2/X/yQI1kOuUUV59t+dTtq+tRE7uS5cbHLRRKAChG0xweKrfo1zN3wmzObz57eQbIUGaQe5JmYAYe7nkaSBEkU9kjb7PbAR9se6Fsb4UMCh4dhxB/iD60A8swgBWWNEoDMpOCPwfB75of8KfPDKbaTAiuVZX346iHSTE0jXTJ5OfAlXOJGPDdGDkYsB7Pm4ho0Xt8YeVLkwakOpxDXKW4EAwOCA1BoQSHcfnEbI8uOxIhyI5QRQuPcxB+x+KPx8OpeHfGH+MNDMkfkD69OoRXAKBjHCywPkfUsm2ZKGjx8/RBH2xxFCY8SEZpyxAmkBGsj8Xnz4Q2yzc4G/1f+GF5mOEaVH2XVVBY78vTD01KAbz1/PMjByUh85NgjWh7ChwQODyeJP8QfWgHkmUEKysZUAVjTuya2X9uO2dVm45civ5AAVMAJIx3wmENjMOzAMGRInEE6GhDV+80KzNc9q5H46N4ZHRogfOgDzkMr4g/xJ8YLwEOHDmHSpEk4deoUHj58iI0bN6JOnTpf+t2qVSssW7YsAg5FixbF8ePHv/y39+/fo2/fvvDx8UFwcDAqVqyI33//HenSpZM9/4wSgMMPDMfj14/R6YdOKJC6gGz71Gbc4LcBd4PuomrmqsiZPCcJQAVAGuWA2XlQz2meCHwXCO963miSt4ksK99/ei+t7jLRaI9kFD726JsWbRI+9AHn4RHxh/gjnAAMCgqSRNrhw4dx+/ZtvH37FsmTJ0eBAgVQtWpVlCgRcZvR1gTYuXMnjh49ioIFC6J+/fpWBeDjx4+xZMmSL1XFjRsXSZMm/fLvnTt3xtatW7F06VJ899136NOnDwICAiRR6eQk74ydUQIw55ycuPLsCnY13YWqWaragke/vw8XWPhjYCCcEyfWry2T1myUA552bBp67+mNrEmzSqt/crZ22VZwo3WNkDFxRl1jSUY3dEbhY1L62D2MkOi4EX9I4PBw1BH5w6tTVJ8BZKtzw4cPx6pVq5AqVSoUKVIEadOmRYIECSSxdfHiRUlwpU+fHiNGjECjRo0Uj22sWLGsCsAXL15g06ZNVutjgpQJ0BUrVnxp09/fHx4eHtixY4ckSuUkXmDltMHCeriOc0VIaAge9H6ANG5p5BTTJw8JQJu4GuFg2K3wLDOz4NaLW5hfcz46FOpg0y6W4f7L+8g4IyPYs4KnO5w2ZDU5smFG4CMLDEEzET4kcHioSfwh/gizApgiRQq0aNECbEs2T548VkeGbb8yoTZ9+nT8/PPP0raskhSVAGR1slW/xIkTo2zZshg7diyYPSzt379f2vJlIjRJkq9hMfLnzy9tJY8aZf0wPds2Zv9YEhOATDQ+e/YM7u7uSsyWnffMozMourgoksRPgke9HoH114h08clFnH9yHlUyVUGyhMnCmnzzBs7/4fX2yRNaAbQyEMwB7927F5UrV4azs7MuQ/X87XO0294Ox+4fw82uN5HQOaHsdlpsboHVl1ajVf5WWFBjgexyWmU0Ah+tbLVHPYSP7Q+43vPLHuOuVZvEH+KPNQGYLFkysIUvNTpF9Qrg06dPpZU2uUlpflavNQG4Zs0auLq6SiuLt27dwrBhw/Dp0ydptTFevHjw9vZG69atI4g5VleVKlWQMWNGzJ8/36rJI0eOtCoOWX0JE8r/CMvFg+U7EHAAM+7OQG6X3BibdaySolx5e1zpgTvv7mBIxiEonKiwVJfTu3eo2bix9Odtq1cjJH58rjaoMB8CwSHBSOD07XvN0dV66fUlDLk+BPFjx8eS3EsUl+ezmEoTAoQAIUAIGIkAO3Ln5eVlvAA0opPWBGDkdtlWNBODq1evRr169aIUgGzVJnPmzJg3b55V0+2xAjhw/0BMPT4VnQt1xoyqM4yAVGrDslL0a7lfMaDEgLB2aQXQJv6i/wJnMd3zzM+DawHXMK/6PLT5vo3NPmmZQXR8tOyrmroIn+hRI3wIHzXzylLGEfnDdirtsgIYfqDYrVxmRI0aNaT/3L9/fyxYsAC5cuWSbuIygaYmyRGArN6sWbOiXbt2GDBggOot4Mj2GXEGsNqqath1fRfm1ZiHjj90VAORqjITjkzAoH2D0DhPY/jU9/kiAOHqKv2ZLoFYh1XvMzhnH51F0gRJ4ZnIU9W4skLjD4/H4P2DUTFjRfzZ4k/V9agpqDc+amwSqQzhY1vgsHPa1atX1+2IhUh8UGoL8Yf4o7VOUb0FHN6Q7NmzY+7cuahQoQKOHTsmncFj5/62bduGOHHiYMOGDUq5LuWXIwCfP38uXT5hgpOdSbRcAlm5ciUaNmwo1cNWCVkIGNEugVjeAD7S+ghKepZUhZGaQlafhKNLIDah1NsBV1xeEftv7ceKuivQLF8zm/ZYy3Aj4AayzMoivfbyqM8jJHeRf0xDVYPhCumND6999i5P+NAHnIeDxB/ij5ACkJ2Ru3LlCjw9PaVVOCa4li9fjkuXLqFcuXJg5//kptevX+P69etSdhZKZurUqShfvrwU5oX9w87qsfAwqVOnlsLODB48GHfv3oWfnx/c3NykciwMDBOfLAwMK8MunzChKGIYmKB3QdJBf2cnfS4VWMOdxQFMPz094sSOgzeD34Q9MUYC0CZF9XTAgcGBSD4puXQj/Hq368icNLNNe6LKMOnoJJROXxpF0haRhKBRSU98jOqDnu0QPvQB5+EX8Yf4I6QAZDdwd+/eLQk29k+vXr2k1bgbN26A3b5lok5u8vX1lQRf5NSyZUtplZHd5D1z5gxYKBgmAlneX3/9Vbqxa0nv3r1Dv379pPOA4QNBh89jyx4jtoBt2aDX37OzYkl+S4Kg90E41+kc8qXMRwJQBth6OmCfCz7w2uCF3Mlz42KXizKsES+LnviI11vlFhE+9AFXzpqvJYg/xB8hBWDTpk2lFUAm/tiZP7YixwIwb9myRVqhYzEBzZZisgBkY1FqcSkcvXcUK+uuRNN8TUkAyiCong64yfomWH1xNQaVGoRxFcfJsEa8LHriI15vlVtE+NAHXDlrSADKxcwR5xevTtHkDCBbjRs6dCju3bsnbb/++OOP0pixANAsXt+QIUPkjqEw+XiBFaYjURiy58YesKfDiqUrFnZOjLaAbQ6ZXg7mQ8gHafv35fuXONb2mDQmvOnYvWNYcnYJKmWqhIa5w87C6p30wkdvu42qn/AhAcjDNeIP8ScyArw6RRMByENqUcvyAitqv6K0iwSgzSHTywH/efNPVF5RGSldUsK/j78m5/ZGHxyNEb4jUDdHXWxopO4Slk1AImXQCx+ldoian/ChDzgPN4k/xB9hBOD58+dlczlfvnyy84qSkQQgvQUcmYt6OeDuO7tj1olZaFegHRb+tFCTKXDiwQkUXVQU7vHc8azfM0MuGemFjyaACFAJ4UMfcB4aEn+IP8IIwNixY0thWtiFAmvJ8nfs/0NCQnh4b5eyMV0AsjdjN13ZBL+nfhhYaiCc330AxQG0j4N59vYZfG/7InOSzJq94RvyOQQpJqdAQHAADrc+jFKepXSfR/SBsg9/dB9Ygxog/hB/eKjmiPzh1Smqt4Dv3Lkje6zUBoKW3YAOGXmB1cEkTatkwt19gjtef3iNy10uI2dCTxKANhA2m4NpvK4x1lxag6Glh+LXCr9qyh9rlZkNH90BidQA4UMCh4dzxB/ijzArgDxENkPZmC4A2RgUXlgY//j/g/UN16OeZ1USgDFMAC49uxStN7dG4TSFcaL9Cd2nHX2g6APFQzLiD/GH+KMMAV6donoFMLKZK1askN7ZvXXrlvQaCFv1Y6+BZMyYEbVr11bWKwFy8wIrQBdsmtBiYwusOL8CY8qPwZBCPUkA2kEATv5rMt59egevvF7IlCSTzTFTksH/lT/STk2LWIiFJ/2eIFnCZEqKK85LH3D6gCsmTbgCxJ9o0KNLejap5Yj84dUpmghAFqB5+PDh6NmzJ8aOHSvF/cuUKZP0Egd7J/jAgQM2B0+0DLzA2uxPuAkNFijbxcVmEa0zWN6NbZq3KVZWnU8C0GAByLbhM8zIAPYyy+5mu1ElcxWthxj55uZD8KdgrK6/GoXSFNK8/vAVOqIDVgIo4UMCWQlfIuQlAWgTOkecX7w6RRMBmCtXLowbN056pYM9x3bu3DlJADIhyJ6Ce/bsmc3BEy0DL7A2+yOAANzotxH11tZDwdQFcarpIRKABgvAm4E3kXlmZjjHdkbggEC4xNX+RwB7ajBR/EQ26ahFBkd0wEpwI3xIACrhCwlAZWg54vzi1SmaCMAECRJIL4Gwbd/wAvDatWtgIWDYc2xmS7zA2uyvAALwyrMryDknp/QW8avujxDbzV0y+2NgIJwTUxiYyGOotYNZdHoR2m9tj9KepXGo9SGblBE9g9b4iN5fpfYRPiQAlXLmS35aAbQJnSPOL16dookAZCuA48ePl876hReAM2fOlLaAT506ZXPwRMvAC6zN/gggAD+GfETCcQnBQsLcaXcZnulykQCMZuC0djBe673gc9EHw8sMx6jyo2xShicDCwsTEhqCuE5xeaqJtqzW+OhmqJ0qVooPOyKw8/pOzD4xW7qsNaT0EPQo1sNO1uvfrFJ89LdIoBZIANocDEfkD69O0UQALlmyBMOGDcOUKVPQtm1bLFq0CDdu3JBEIftz48aNbQ6eaBl4gbXZn5cvgUT/bc3t2AFUqQI4OdkspnWG3dd3wzORJ7LGT4M47mGrfrQCaB1lrR2MxzQP3H95H/ta7EOFjBW0Htov9fXY2QNLzy3FwloLdX0WTmt8dAPEThUrweftx7fS6rD3Be8v1s74cQa6F+0u/TsTh59DP8MptvE+Qy/4lOCjlw3C1ksC0ObQOCJ/eHWKJgKQjczChQsxZswY6T1gltKmTYuRI0dKgtCMiRfYaPu8YQPQvTvw4MHXbOnSATNmAPXq2QcucjA2cdfSwTDhxwSgUywnvBj4Aq5xXW22rzYDE4AzT8zEL4V/wezqs9VWY7OclvjYbMyEGeTiw97oruVTC3tv7pUROclKAAAgAElEQVT40bNYTzTK3QiZk2ZG0gRJpZ4P2z8Md1/exdLaS6WA/DEhycUnJvRVcR/IP9uEzBH5w6tTNBOAltFhFz4+f/6MFClS2BwwkTPwAhtl35j4a9CA/YSPmMXixNets48IJAdjk45aOhj28kdN75rI9l02nO542mbbPBnWX16PBv9rgLwp8uJ8Z/lPOCptU0t8lLZthvxy8Wm/pT0WnVkEF2cXbPPahnIZykXo3u0Xt5F1Vlbp6MbIsiMxotwIM3Tfpo1y8bFZUUzMQP7Z5qg6In94dYomApBt/7LVPqdIW5hBQUHo1KkTfHx8bA6eaBl4gbXaH/YkXoYMwP371rvLRCBbCbx1y7DtYPYxWX1xNRK8/4welYZIdtEWsPXh0drBsA/4kzdPkMYtja70Z22knJxSigf4rP+zL6tIWjeqNT5a22fv+uTgc+jOIZRdWlYaq51Nd6JqlqpWzV58ZjHabmkr5TvQ8gDKZihr7+5xty8HH+5GzFoBCUCbI+eI/OHVKZoIQHb7N3Xq1Fi1ahUyZ84sDZSvry9atGghbQWzwNBmS7zAWu2vry9QvrxtKFjcxHIRf/XbLqQux9G7R1FqSSnkiO8Bv4Fh2/ckAI0RgOpGTF0pdtub3fre0ngLamWvpa4SG6Uc0QErAVIuPuyNbvbDjG39RpfabG6DJWeXIEvSLLjQ+QLix4mvxBzh8srFRzjDjTCIBKBNlB2RP7w6RRMByFb6OnbsiO3bt2Pq1Km4evUqZsyYgYEDB2LEiBHfrAzaHEkBMvACa7ULbCXUy8t277y9gSZNbOfTIIdldcjlA/B6XFiFJABjngDssLUDFp5eiL7F+2JSlUkaMOfbKhzRASsBUmt8Xr5/iRyzc+Dh64cYXW40hpUdpsQc4fJqjY9wHeQxiASgTfQckT+8OkUTAWgZmSFDhkg3f+PEiYOdO3eiYsWKNgdN1Ay8wFrtl4ArgOw2YeLfEuPTq5d4QwIwWjpq5WD+uveX9EZvzaw1MaXqFEOmwLKzy9BqcyuU8iyFw60P69KmVvjoYpwAlUaHz6PXj6QVvMTxlcXf9LngA68NXtIlopvdbyK5S3IBeqrOBOJPNLiFixrxaetWxKlWzbBjQupG0/hSjsgfXp2imQCcNWsWBgwYgLp160px/9h5QG9vb+TPn994JmjQIi+wVk2wnAFkt38jXwJhBexwBpA1W3hhYVy+/Q8JQBu80crBsPd/++3th9rZa2NT400asNV2FdeeX0PXnV1RNn1ZDC492HYBFTm0wkdF06YoEh0+7OLHer/1WPTTItTLKT8SAAsFw+bvhccXsKbBGtTNWdcUWFgzkvgTxdCJGDVCQJY5In94dYomArBatWo4efIk5s2bhwYNGkgvf/Tu3Vt6C3jUqFHo37+/gHSJ3iReYKOs3XILmGUILwLteAuYBSTefNqHBKBBArD+2vrY4LcBEypOwIBSA0w3N6Iy2BEdsJLBiwqfp2+eSiGB3oe8x5HWR1DSs6SSanH20Vlp5TBD4gyKyomWmfhjZUREjRohGnnY0aWPH7Fjxw5Ur14dzs7OAlqovUm8OkUTAVi5cmXpxY80aSLeZmRnAtu1a4eHDx9q33Oda+QFNlrzrP2i8/AApk+3SwiYEQdGYPKfo0kAGiQAPad54t7Le/Bt6Rsjbm9aYHNEB6zEDUWFz+iDozHCdwQKpymMv9v9HWPi+inBhuUl/kRCTMCoEUrH1Mj8jsgfXp2iiQCMbpBZXMBkyZIZyQNN2uIF1qYRgrwEwuxcdX4VOqxpRgLQAAHIVntSTA6LkRk0MAju8cLeXzYqsUs//q/88X2q7zVv0hEdsBIQreHz7tM7pJ+eXgoH5FPfB43z8L2axG56s1vBcWLHUWKaEHmJP5GGQcAz40IQJQojHJE/vDpFdwEoMmGis40XWJv9FuAtYIuNAcEB8H94DXkyF5P+E90Ctj56WjiYXdd3odqqalIA6H+7/muTJlpm2HdzHyqtqITs32XHla5XtKw6jDcOuAWjBERr+Cw9u1S6EJTOPZ10icPZSf3WVfONzbHy/Eqs+3kd6ueqr8Q0IfISfyINg4BRI4QgCgnALwjw6hTVAjBp0qRSuBe2upckSZJoty0CAgJE5o1V23iBtdlhgQSgZCuFGbA5ZFp8oMYeGouhB4bCK68XVtVbZbNNLTM8e/sMySeF3RIN6B+AJAmSaFk9CUAbaFrjT5klZXD47mGMqzAOg0oP4hqPofuHYuzhsdLLISw4tNmSFvPLbH2O1l5aAVQ0nI7IH16doloAsjN/jRs3Rrx48aTzf9Glli1bKhpIETLzAmuzDyQAbUIkWgYtHMzsE7Mx/9R8tCvQDj2K9TC8i+wJsesB17Gr6a4oX5lQa5QW+Kht2wzlIuPDtuLTTk0rveZxt9ddaRWQJ90NuittJ7N0u8dtpE8c9mezJOJPpJESNGqEqHxyRP7w6hTVAlBUEmhlFy+wWtlhVD1r/16ChsXaSM3RFrB11GOCg2m2oRlWXViFUeVGYXjZ4ZrSKybgoykgkSqzhs+/z/7FkbtH0LZgW02aLr+sPNg702MrjNUt3I8mhlqphPhjBRQBo0boNf689Toif3h1imYCMCQkBBs3boSfn5+0HZwzZ07Url1bCgptxsQLrNn63H61FxY2CXuzmQRgzBWAM/+eiR67eqBmtprY2mSrpjR1RAesBEAj8FlyZgnabGmDHMly4HKXy6a6UWwEPkrGS5i8gkWNEAYXGT+wRLVVK7t4dYomAvDixYuS2Hv06BGyZ88u9Y2dD0yePDm2bNmCvHnzatVfw+rhBdYwQzVqaOLuEej/42gSgNHgyfuBevPhDeLFiWfXG5qWt5/TuKXBg94PNGJPWDW8+GhqjICVGYEPex4u1eRUCP4UjBPtTqBw2sICIhFzf2DpBja9BGITWiPml00jDM7Aq1M0EYDFihVDihQppLOA7EIIS4GBgWjVqhWePHmCY8eOGQwLf3O8wPJbYGwN608uR/0iYWc1aQVQnw/UmENjpEP6/Ur0w+jyYWLb6MREqNt4N4QiFA/7PEQq11SameCIDlgJeOHxGXFoBK4+v4r+JfujSNoiSqqxmZcFdve56INuRbphZrWZNvOLkoH4E81I0CU9mzR1RP7w6hRNBGCCBAnwzz//IHfu3BEGia0MFi5cWHoZxGyJF1iz9ffcjb+QP0vYCwQkAPURgHXX1MWmK5swpcoU9C7e224UYYGHPdw9pCfHEsVPpJkdjuiAlYBnwYe9nJRjbg7cenEL6xuuV/T0m5z2TvmfwrWAa6ietbrhcSbl2BdVHuIPCUDijzIEeHWKJgLw+++/x9SpU1GhQoUI1u/fvx89evTAhQsXlPVKgNy8wArQBUUmvA58DNekYatBT/xvIkXqjIrKO0Jm3g9UxhkZcfvFbSlEBwvVEdMSLz4xDY/I/bHg4/mDJwouKoh4TvHwrP8zuMZ1jeldl9U/4g8JQFlEiSKTI/KHV6doIgDZ+3vsvd+RI0eCbQezdPz4cYwePRoTJkxAqVKlvgyZu7uxLx+oJRQvsGrbtVu5cFsMxy//iWI5K9rNFFEb5nEwQe+CkPi3xFLX9IjBJwJmPPiIYL/eNljwOZfoHEYcHIEaWWtgm9c2vZs1Tf3EHxKAPGR1RP7w6hRNBGDs2LG/jBu7AcxSaGio9P/h/539md0WNkPiBdYMfYxgYzgBuPbYYjQs1tp0XdDbYB4Hw0J9lF5SWtp6ZTHf7Jk+hnzEiQcn4PfMD+0KttPMFB58NDNC4Ios+Ix5PAb/PPwHC2ouQPtC7XWx+MW7F5hzYg7OPDqD//38P1PcBib+hFHh9YfXWHhqITb/u1naMXCL54ZNNVchs2d+6e/piI71KeOI/OHVKZoIwIMHD8p2YmXLlpWd154ZeYG1p+2q2qZDxjZh43Ew7GPcdWdXIVZ92E3RRBPCzv496fsEyV3CXgfhTTz48LZthvIMn5WbV6LNpTZS8Gf/Pv6aXsIJj8Gr96+QbFIyfAj5gEtdLiFX8lzCQ0T8Afbe2IuWm1ri4euHX8YrtWtq3OtwBU7uYXOWBCAJQAsCvDpFEwEovGdRYSAvsCqatG8REoA28ef5QHXY2gELTy/E4FKDMbbiWJtt6Z0h++zs0i1ULV8E4cFH7/7avf5w88tlMJAvUzEca6tvdIQa3jWw49oOjCk/BkPKDLE7BLYMcHT+/HH6D7Tf2l66oZ85SWb0LNYThVIXgktcF+RzzQy4hp0VHbypO/pWGYGkCZLagtSh/t4R+cOrU1QLwLt378LT01M2wR48eIC0adPKzm/vjLzA2tt+xe2TALQJGY+DWXxmMbZd3SZtubLbmfZOllAhWr4YwYOPvfHQvf1w86vc7B9Q/fufpRAweqZFpxdJgqJwmsI40f6Enk1pUrcj8+fv+3+j2B9h5+fbfN8Gc2rMQfw48b/iGukHRK4MP+Bgq4NI6JxQE+xjQiWOyB9enaJaAKZMmRI//fQT2rdvjyJFrMexCgoKwtq1azFjxgx07NgR3bp1Mw3PeIE1TUcthoZzME2X1saqlptM1wW9DY5JDmbyX5PRb28/1M9ZH+sartMEupiEjyaAhK8k0g+sOIkS6X4uL/xbw0/6PUGyhMk075aWFToyf9iZ+WnHp4G95zyt6rRvuRGOP56/JsW9kAA0yt0IPvV9dOeRlmOsZ12OyB9enaJaAAYEBGDcuHFYvHgxnJ2d8cMPPyBNmjSIHz++FAT68uXLuHTpkvTfhw4dChb7ykyJF1gz9VWyNdIvzCcjXktbD5S+IhCTHAw7a1RlZRVk+y4b/u36rybDHJPw0QSQaASgc+KwG+F6p/zz8uP84/PwrueNJnmb6N0cV/3En2jgC+efD57fjsqb6uDj549YWGuhphe5uAbQzoUdkT+8OkW1ALSM9bt378DCwBw+fBi3b9+Wgj4nS5YMBQoUQNWqVZEnTx4700Jd87zAqmvVjqUiCcC/e1xAnhTmHDu9UFTrYB69fgR28zadezphfq0/fv0Yqaakki4jvB78WpOtJLX46DVeQtVrpyMW/ff2x6S/JqFF/hZYVmfZV0jC2YPXrwEX+//Yc0T+7L+1H0XTFpX1Yzs8PtNOTMOAPwfALa4brna7qttlIqHmkA1jHJE/vDqFWwCaiSBKbOUFVklbQuSNJAB9WmzGT9l/EsI0UYxQ62CG7R+GMYfHoMsPXaSzPaIk9mbs4zePNXszVi0+ouChqx3h5tfGv1egbpFmujZnqZwJDPYCTZM8TTCv5jwSgIagLq+RW4G3kHNOTukW/t/t/gZ7nzu6FH5+OcVxQrFFxXDS/+S34l5e8zEulyP6H16dQgIwimnAC6zpZlckATim5lT0Kt7LdN3Q02C1Dqb26trY8u8WzPhxBroX7a6niYrq3nxls3STsFCaQrQCqAg55ZmDnvsjUbKwS3A3bp9D5vT5lFeiokTI5xB8Dv0MZyfniKVpBVAFmtoWqb+2Pjb4bUCFjBXwZ/M/be4ORPY/Jx+cRNFFRaW5e737dYdfBVTrn7UdVWNr49UpJABJAIYhEEkAtinZFbOqzzKWzYK3ptbBZJqRSXr3NaY+AWcZNrX4CD7smpi39fRq1CoUdgZPiDhuJAA1GVe1lRy6cwhll5aFUywnnO10VtZxG2vziwWM/jHLj/BI5KHWlBhTzhH9DwlAnejLC6xOZulXbSQBWDZXNexoukO/9kxYsxoH8+bDG7iOD4vfpWXQZRHhU4OPiP3Qw6Ze6ztgWoOFdhWA7NxnSteU3/zgozOAeox49HVWXVkVe27sQcdCHSNuzUdTjOZX9Jg6Ij68OoVWAGkFMAyBly+BRGGR5n9sCrwqWxRH2x833jMK3KIaB3PK/xR+WPgDkidMDhaKQ6QU/DEYay6tgd9TP0yoNMHmFpQt29XgY6vOmPL3Rabnxolel+0iAJ++eYoii4qAhYV5MeAFEjgniLDiTwLQWJadfngahRYUklb/rnW7hoxJMsoywNb8uvz0MnImy8k9j2UZI2AmW/gIaDK3SSQAuSG0XgEvsDqZpU+1GzYA3bsDDx58rT9dOmDGDKBePX3aNGGtahzMinMr0GJTC5RNXxa+rXyF6vX7T++l1clPnz/hbs+73NtIavARChCdjHn+9jk8xybDm3FhDRi9BcxizKWblk4SgPta7JPOnIU/8kECUKeBj6LaRusaYe2ltWiatylW1lspu/Go5hcb35//9zPW+63/Or6ya405GR3R//DqFM1WAK9evQpfX188efIEnz9/jsCq4cOHm45lvMCapsNM/DVoAISGRjQ5Vqywf1+3jkTgf8iocTAD/xyI347+JtwNYMtg552bFxefXMS2JttQI1sNLtqqwYerQZMUZpdtmi2rg1cTwgz+tHUr4rC4qE5OhvWg2YZmWHVhFYaWHopfK/xKAtAw5CM2xC7lNFzXEBv9NuJcp3PImzKvbEuim1/ddnTD7JOzJXHPRL4jJkf0P7w6RRMBuHDhQnTu3FmK/5cqVaoIS9CxYsXC6dOnTcdHXmBN0eGQECBDBuD+fevmMhHIVgJv3TL0YyUqdmocDAvDsfv6bpRJX4ZbYOmBS9MNTeF9wRvjKozDoNKDuJpQgw9XgyYp/HzlQsTr3R+uT198tdjgFXb2zmy7re1Q0qMkjrQ5QgLQztxhL354JpL/lCozN7r5xepjl81CQkNwsfNF5E6R2849NL55R/Q/vDpFEwGYPn16dOnSBQMGDDB+1HVqkRdYnczStlpfX6B8edt1HjgAlCtnO18MzxETHczEoxOlgLLsWanVDVZzjWBMxIcLEFZYkBX2m4E3kXlmZjjHdkbggEC4fATgGnY5ibaAuUfZkApszS9LWJlfCv+C2dVnG2KTSI3YwkckW7WyhVenaCIA3d3dcfbsWWTKlEmrftm9Hl5g7d4BOQb4+ABeXrZzensDTcR+Rsp2J/hzxEQHs+v6LlRbVU06PH75l7BLCmpTTMRHLRZSOYFW2Nk5sQwzMkhvze5uthtVUpUkAcg1uMoLsyf5EsdPrHjlz9KSrfn1580/UXlFZel1EP8+/nCN+5/AV26qKUvYwsfQThkUZolXp2giANu2bYvChQujU6dOhmKsZ2O8wOppm2Z10wqgIiiVOpgnb57g0pNL0nZMCpcUitoyKjO7GJB2alrEjhUbbwa/Qfw48VU3rRQf1Q2ZpaBg86vVplZYdm4ZBpYciPHFh5IANJhH5ZeVB4v/x57ka5ZP+UswtuYXC/jNXha5+vwq5tWYh44/dDS4h/ZtzhY+hlrnSAJw/PjxmDp1KmrUqIG8efPC2Tli1Pnu7IapyZJDCEDLCgW7/Rv5EggAdpUntocHnQH8j7tKHczK8yvRfGNz6fzfwVYHhZwBbGUoxeQUePb2GU51OIWCqQuqtlMpPqobMktBwVbYt13dJp1HrZ+rPsolL0wC0EAeMVGWfXZ26YfWrR63VK0Cyplf049PR6/dvVDKsxQOtz5sYA/t35QcfAyz0pEEYMaMUccxYpdAbt68aRjuWjXkEAKQgWU5o8T+HE4EWu5xx16/nm4BqxSAg/cNxvgj49GpUCfMrTlXK2pqXs+JByfg4e4hPSXF5qvaJJQDVtsJLcsJtgIYoWsGfaCUwBmT+TN0/1CMPTwW1bNWx3av7Upg+ZJXDj6BwYFSgGn2jrsU79GBkhx8DIPDoPnFq1M02QI2DFQDG+IF1kBT+ZuyEgfwrjvQ80dgybIXSBQ/LEC0oyelDsbyBvCsarPQtUjXGA+fUnxiOiAfP7zD4+QJkOYlENtaZ+15y96gD5SSMY6p/GGr7FlnZcWNwBvwrueNJnnVnaeOqfgo4Uh0eYXCx6D5xatTNBeAjOws8awkaEUInnp4geVp2y5lw70EwuKUeVxug0fBT7m3Be3SF50aVepgmNO/HnDdYYKzKsVHp2ESplr2CszYXj9g3dowfxgr/DELO8XZZK+/nPQ/iXhv3qNo7iphWO3YAVSpYvdQTzGVPycfnJReYknonFB6DtIlrosqjirFJ6Z8i+WCpRQfufWqyudoAnD58uWYNGkSrl27JuGVLVs29OvXD82bN1eFn70LOZwADEdY9lJBmfXVcO35NSk0SKVMlew9HEK0r8TBsA+tyzgXhCIUj/o8+voGqxA9iWhEQHAAJv81GQ9ePZAOqKtNSvBR24aZys0+MRvddnbD6MDvMWzd04gv7bCztdOnG368gp0ROzStFxbsjYdkge+/wmlwXEJr4xhT+dN7d29MOz4NjfM0hk99H9UUVoIP4x77Z2a1maiS+T+hr7plcxRUgo/uPXIkAcgugAwbNgxdu3ZFyZIlwX55HD16FHPmzMGYMWPQq1cv3fHWugFHF4AhrvG5boRqPR4i1KfEwZx9dBYF5hdA0gRJ8azfM6FXxF+9fwX3Ce4SxAH9A5AkQRJVcCvBR1UDJitkCbI9qtwoDC/Q88tb2/Z4CcQC3fWFE5GpQ1i81gjb0nZakQw/pDGRP+G3fzc12oTaOWqrZrESfH7Z/gt+/+d36bbxirorVLdppoJK8NG9X44kANklkFGjRqFFixYRcF22bBlGjhyJW+wlCZMlRxeAzokTm2zE9DdXiYNZdX4Vmm1sZprbeOmnp5dixLGbg+wGoZqkBB819ZutTJaZWaRzX3ua7UHlVCW+3Lo1+i3gL7iFhCA0Q3qE3n8g3plEGy9dmG3sw9v78v1LsOcAG+ZuiHhx4qnuipL5dfz+cRT/ozhcnF3wpN8Tafs5picl+OiOhSMJwPjx4+PixYvIkiVLBFzZdjALC/Pu3Tvd8da6ARKAJAAjc0qJg7kVeAt7b+6VAr8yxy96qr6qOnZe38kVP0wJPqLjoYV9Qe+CwG5YF/coDtePsewvAEW+lRyDBaAWXGJ1KJlfbOUx44yMuBN0BxsabkDdnHW1MkPYepTgo3snHEkA5smTB15eXhg8eHAEXNn275o1a3DhwgXd8da6AUcXgLdCnqD7zu5S3KodTXdoDa8p6xPKwWiMYN89fTHl2BR0K9JNOjekJsVkfNTgEaFMpDO2dllhFywuIc8PLO7xMGEFSueXZU575fXCqnqrTNhjZSYrxUdZ7QpzO5IAXL9+PRo1aoRKlSpJZwDZjbcjR45g3759WLt2LerWNd+vD0cXgPdDA5FpZibEc4qHt0PeSkLQ0ZNQDkbjwVhyZgnabGmDChkrSLeW1aSYjI8aPIQTgLQCyD2MSipg54A7buuIJnmaoGexnkqKWs2rdH5ZtoHZ03BsG5jnlR9u4w2oQCk+uprkSAKQAXnq1ClMmzYNfn5+0iWQXLlyoU+fPihQoICuOOtVuaMLQLi5IP7Y+GDPC/n39kdqt9R6QW2aeuU6mI8hH7H83HJkT5YdJTxKmEI8s63KoouKIqVLSjzq+0jVmMjFR1XlJivUZ3cfadw7F+6MTEkyASKsAP738k/ogwcRQ9JYsLVnXEKFW5xmoMNI35EYdXAU6uaoiw2NNnCbrHR+Md/Nzvbef3kfWxpvQa3stbhtELkCpfjo2hdHE4C6gmmHyh1dALItqgzTM0hnSI62OSoJGUdPch3MlWdXpDc52QHsV4NeCX0D2DKmrz+8htt4N+mw+MM+D+EeL+xWsJIkFx8ldZoxL/vwJvktCdjh/3OdziFfynxiCEAG5n8v/7Af6RHefKFbwJpT7ft53+Pc43NYWnspWn7fkrt+NfNr+IHh0uWu7kW7cz3zyG28ARWowUc3s2K6AGQCyd097CPB/hxdsuTTDWwdKiYBmBjllpbDwTsHpfMj7ByJoye5Dobd+Kuzpg4KpCqA0x1PmwY29qFI555O9YqlXHxMA4hKQ/999i9yzMkhbbmxHwBxYscRRwBaRCB7n529AW5JdopLGB7imMSf2y9uS5cw2Crw476PkSxhMpVs+losJuHDDYaVCoTCJ6YLQCcnJzx8+BApUqRA7Nixra5ySL8yY8VCCNt6MFkiAZgYrTe3xtKzSzGm/BgMKTPEZCOovblyHczEoxMx4M8B3IFfte+BvjXKxUdfK+xfuyUEUPF0xfFX27/CDBJhCzg8NOFe/qGXQLTnzKy/Z6H7ru4ok74MDrY6qEkDNL+ih1EofGK6ADx48KB04SNOnDhgf44ulS1bVpMJYGQlJAATY5TvKIw8OBLtCrTDwp8WGgm/kG3JdTBtN7fF4rOLMbLsSIwoN0LIvuhhlFx89GhbpDp77eqF6X9Pj3ijWjAB+OlVEOK4h4V6ev/iOeIlSmp3CGMSfyxhlSZVnoS+Jfpqgq1afNhCzJlHZ/D87XNUzlxZE1tErEQtPrr0xaAfWLw6RZO3gO/evQsPD49vVgEZ8e7duwdPT09dMNazUl5g9bRNl7qtfKDYRYaeu3qiUe5GmFtzri7NmqlSuQ6m1OJSOHrvqPTsE3v+ySzp3KNzGHdkHNitwUU/LVJstlx8FFdssgKll5TGkbtHsLzOcjTP/99TmIIJwNDXrxHLzU1C9p+rvvghq/1/pMcU/rBnIL+b+B2CPwXjQucLyJMijyYMVovPBr8NqL+2PrJ/lx1Xul7RxBYRK1GLj+Z9YedsIx+x0OmpRV6dookADL8dHB7M58+fS1vEtAWsOcW0r9DKB4odZqfwL1+hlutgkk9Kjmdvn+F0h9MokNo8t+Atj9ancEkhnVtSmuTio7ReM+UP+RwiPav39uNbXO5yGTmT5/xivlD4hJvvcw9MQudy2qxS8YyVUPhwdMT/lb8UQ5VdBmMCkB2D0iKpxYcFJE82KRk+ff6Ea92uIUvSiA82aGGbCHWoxUdT2/+7ZIXQ0IjV6nTJSggByM4APn78GMmTJ4/Q6Tt37kjhYN4wZ2OyxAusybor3hklAQGU42ACggOkX/8svR70Gi5xXQTsiXWTLDeB2d8+7fdU8cF1OfiYBgyVhrKLNAXnF8T7kPd4McsukXwAACAASURBVOAFnGI7CS8A265qhD+8VqvssXbFYhp/LGfgtUKIB58KyyrgwO0DmF51OnoU66GVSULVw4OPJh35L8wS7t+3Xp0OYZZ4dQrXCmDv3r2ljs6YMQPt27dHwoRf3xtkq35///032Org0aNHNcHXyEp4gTXSVk3aEmyLSpM+aVyJHAfz/tN7afuPCYHWBVprbIH+1bGbi+wGo29LX5TNoGxbUA4++vfA/i2wD/+TN0+Q0jVlBGOEwifcfM8/KTPO9b1ud+CEwsfuaHxrAA8+U49NRZ89fVApUyXsbb5XwN7xm8SDD3/rAOwQaJ1Xp3AJwPLly0u4sUsgxYsXR9y4cb/gyP6cIUMG9O3bF1mzZtUEXyMr4QXWSFs1aSsKAdh+S3scuXcEf/z0h8PHArS7g9FkoKOvpKZ3TWy/th1zqs9Bl8JdFLXoCPgoAiRSZqHwCTffXQYD94Y+R9IE9r0IIhQ+Kgea7QCw4x9Zk2bVbOvXYgoPPlefX0X22dnhHNsZz/s/h1u8sPOfMSnx4KMJDnZ4apFXp3AJQAtorVu3llYBzRjvL6qB5wVWE0IZWUkUArDS8krYd2sfltVZhhb5WxhpkXBt2d3BGIDIgL0DMPGviejyQxfMqTFHUYuOgI8iQEwkADe03oWqWarydI+7bEzgz9yTc9FlRxddQkDx4pNtVjZcC7iG9Q3Xo17OetzjJVoFvPhw98fRVgAtgAUFBUkXPZImjfgLMiAgQAoTY0ZhSAIwLEQEWwFcdGaRw4U0seYM5DgYFgOOHbZm4RbSuKXh9ilGV7Ds7DK02twK5TKUw4GWBxQ1LwcfRRWaLDN7AjDX77mQN0VeLKm9BIniJ4rQA6HwibQCOLbWNE3eq+UZMqHwUdmRBmsbYL3fevxa/lcMLTNUZS3Wi/Hi03t3b0w7Pg0dCnbA/FrzNbVNhMp48eHuw5enFu8jVqQ7IFLdMe0MoAWwatWqoVatWujSJeKW0bx587Blyxbs2LGDG1ujKyABGCYAxx4ai6EHhqLV962kj5ojJzkOJvfvuXH56WXsamr/FRU1Y8XeBGZhTEp5lsK+FvsUVSEHH0UVmizz2UdnUWB+ASSKlwiBAwK/2QIUCp9wAvDp41tIniKD3dEWCh8VaLCoCSwCANsG/qvNXyjuUVxFLVEX4cWHvVDDbiizue3s5KypbSJUxouPJn3YsAGh9euD6b/Y4SuMybeA2cofu+iRM+fXkAes71euXJGCRbNwMGZLJADDBKD3BW803dAUZdOXhW8rX7MNo6b22nIwLARIwnEJ8SHkA271uIUMie3/UVUKAOtDKELDni9TmGzho7A602VfdHoR2m9tj4oZK+LPFn9+Y79Q+Bj0UoGSQRQKHyWG/5fX8gPANa4rAvoHaC6yzI6PCkgVFREBnwcvH6BHBw9M3xGKdK/Cma/TU4u8OkWTM4AuLi44fvw48ubNG2HALly4gKJFi+Lt27eKBlKEzLzAitAHRTZEcQbwr3t/oeTikkifKD1u97ytqMqYltmWg7kRcANZZmWR3oB9M/iNw8VQtIVPTOND5P502tYJ80/Nx4CSAzCh0gQSgAoH3Oz8sdy0rZ61OrZ7bVfYe9vZzY6P7R7y5RABnz039qDJ+iYo7Jodu345FtYhtgNapQrg9DUkFF9Pv5bm1SmaCMBy5cpJ4m/WrFkR+vXLL7/g/PnzOHz4sFb9NaweXmANM1SrhqIQgA9fPUSaqWkkMfNuyDvNf9VqZb4R9dhyMDuu7UAN7xrSGbDznc8bYZJQbdjCRyhjdTCmyMIiOOl/EmsarEHD3A1NIwAXH56J1be2omuRrvgp+086ICOvSrPzh8195gMmV56MPiX6yOu0glxa4HMz8CamHZsmxalcUGuBgtbFz6oFPlr0koUCe/z4JjzT5Qqr7vVrwEWfeLC8OkUTAci2fytVqoTChQujYsWKUp/37duHkydPYs+ePShdurQWuBpaBy+whhqrRWNRCEB2riXd1HRI5ZoKu5rtAnslwlGTLQfDHGvvPb3RIFcD/O/n/5kWJnYRZOaJmaidvTaGlx0uux+28JFdkQkzsos/buPd8O7TO1ztehVZv/s29JVQ+ISb773Xd8C0CwvQu1hvTKk6xW7oC4WPQhTYBaCkE5OCBVPX6wUgLfBhr5PknJMT8ZziSedUEzgnUNhTcbNrgY9mvTPoiAWvTtFEADLQzp49i4kTJ+LcuXNIkCAB8uXLh0GDBimOAXjo0CFMmjQJp06dwsOHD7Fx40bUqVPH6rh07NgRCxYswLRp09CzZ88veW7cuCHFHzxy5Ajev3+PH3/8UVqdTJkyYmDW6AabF1jNiGRURRQI2ibSthyMZQtwSOkhGFNhjM36RM0w58QcdN3ZVRKAmxpvkm2mLXxkV2TCjJeeXEKeuXnAzn8FDQyyuv0vKj4rzq1Ai00tUNKjJI60OWI39EXFRw4gTADuvL4Th+8cxm+Vf9Pl+IcW+LAg5Z7TPXH/5X3sbrYbVTJXkdM9U+TRAh+ejjJM07qlDbv85WgCkAe48GV37twpXSgpWLAg6tevH6UA3LRpE0aOHImnT5+iX79+XwQge3aOic/8+fNj1KhRUtXDhg2Dv7+/dE6RPVsnJ5EADLsEQukrArYcTPll5eF72xfL6yxH8/zNTQvdvpv7UGlFJWT7Lhv+7fqv7H7Ywkd2RSbMyG5Ps/df3eO5Y0/zPVZ7ICo+llWhhM4JJfGq5gKQFkMmKj5a9E2LOrTCp83mNlhydgn6Fu+LSVUmaWGaEHVohY+azrCdMo9pHojrFBc7m+5EjgQegKtrWFUxfQuY9ZGtui1ZsgQ3b97E9OnTkSJFCuzatQseHh7InTu3GkwlJW1tBfDBgwfS5ZLdu3ejRo0akvizrACyLWcWliYwMPBL/EH2Z3ZTee/evdJWtZxEApAEYGSe2HIw7Pk3v6d+yJcyH1K7pZZDMyHzsJts6aalg1MsJ7wd8lZyanKSLXzk1GH2PNG9/yoqPuzjlWhCImn78kLnC8iTIo9dhkFUfOwChpVGtcLH54IPvDZ4IX/K/Djb6awo3eO2Qyt81Bhy6M4hlF1aVgoB9bjvY8R7/8lxBCB7Co6JLhbyhW3h+vn5IVOmTNKW8IkTJ7Bu3To1mFoVgJ8/f5ZEXO3atdGjRw/pubnwAnDr1q2oW7cu2EpgvHjxpHaDg4Ph6uoqrQSyVUNriW0Vs38siQlAJl6fPXtmykDWigF/8wbOSZJIxd4+eQLnxF8F4Dq/dRh9aLS0RTS3+lzFVceUAszBsB8RlStXhrNzzIujZRknJmKSTUmGVx9e4Wz7s8iV/L/DzDYG0lHwUctnkfGpuKIiDt87jEU1F6FFPvu8+CMyPtGNOTv3OeHoBJRLXw5l0pfRZfuXta8VPk/fPEXaGWmlLt3rfu+bN6vV8tve5bTCR00/uu/qjnmn50lzh80htgVs+Z5+DAzU9RJIsmTJwB7jUPPghiZnANk7wD///DN69+4NNzc36RwgE4DsEgg7v8dW7NQkayuA48ePx4EDB6TVP/b3kQUg2xLOkiUL2PN048aNA/uYDRgwAHPmzEGHDh0wf771COhMGFq2jMPb6u3tjYQJE6ox31RlnN69Q83GjSWbt61ejZD48b/YfyTwCCbfmYycLjkxPut4U/WLjFWHQL+r/XDt7TUMyDAAxRNrG9BWnUXilmI+5mPoR8SNLW+lVMSeLH6wGFuebkGNZDXQPl17EU0U1qYLry5g2I1hSBInCRbnXqz5G8B6dLz3v71xM/gmenn2QtmkZfVowmHqDAkNQZtLbRD0KQjDMw1HQfeCiO57qiUwLMSel5eXfQUgW11jMf8yZswYQQDevn0bOXLkwLt371T1ObIAZBdD2Jbv6dOnkSZN2DNbkQUg+29sG7hz5864deuWdOavSZMmuHz5srRt/Pvvv1u1hVYAo14BZKEtSi4tKR1wvdXtlqqxjAmFovuF+Y//P9hxfQeKpi2Kqpnt+6aqFli33tIaqy6uwqiyozCo5CBZVdrzF7gsA3XKxA5/Z52TVdo6Pd76OJxiW4/3JTI+3he90WN3DzTP2xxTq0zVCanoqxUZn+gsH3lwJMYdHYcmuZtgWe1lumGnJT6D9g8C29kZWmooWuZvqZvNRlasJT5K7N53ax+q+VTDdwm+w93ud8NCpTnSCmC6dOmwdu1alChRIoIAZOf32G1cdj5QTYosANnZQrbKGP4iB3uDmP07265lgjN8Ytu37C3ixIkTI1WqVOjTp490YUROojOAX7eAn7x5gpSTUyIWYiF4SDDixQnbWne0FN0Zk0lHJ6H/n/3RJE8TeNf3Nj00rD/sDehOhTqhV/FesvpjzzM4sgzUKdO2q9tQy6eWJADZGbqoksj4sDA27MyndIPRTklkfKKDpNzScjh45yAW1FyA9oX0Wz3VEh/2WpFzbGe7jrfWNNMSHyW2td/SXvKV7Qu2/xpb0ZFuAffv3x/Hjh3D//73P2TLlk1aoXv8+DFatGgh/TNixAgleH7JG1kAsiflWGiY8Klq1apo3ry5tOWbPXt2q+3s379fOjfIziZGlSdyQRKAXwUg2+JyHe+Ktx/fSrdC2e1QR0zROZiOWztiwekFGFZmGEaXH+2I8EhnlNi739WrV4/RZyQjD+6vB3/FcN/haJ6vOZbXXW5KASgCYc3IHxb0N/FviaX4j36/+CFHshy6QWlGfHQDw0rF9sCHhf9JNSWV9P4zezu9QsYKYZY5kgBkwLdq1QqrV6+WztyxVTe2Msf2ppcuXQonBU+gvH79GtevX5cwLFCgAKZOnYry5ctLt3g9PT2/GXZrW8DsNjJ7lzh58uSSMGWXRZh9U6bID3JKAjDiLeDcv+fG5aeXY1zsKCUOKjoHU3F5Rey/tR/L6ixDi/z2OUSvpC965LWHA9ajH0rrrL+2Pjb4bcCUKlPQu3hv0wtAdiuYvfxjdDIjfyxPZSZPmFy6/annCqoe+LC3v4PeByFpgqRGD7fm7emBjy0j2VxhN4C3/LsFkypP+nr8w1EEIBN8d+/elcTWo0ePpNU/dlOXibesWb+Nhm8LUF9fX0nwRU4tW7aUxGTkZE0ADhw4UMobEBAgnRHs1KkTevXqpWhykgCMKABretfE9mvbMa/GPHT8oaOtYYyRfx+dg0k/PT1YGJijbY6ihEeJGNN/Nr/Z/+QIAns4YBGAzjwzM9gTWxFWAARZoVCCD3sBht32r5G1BmZWm6mkqCZ5zcif3478hoH7BqJujrrY0GiDJjhEVYnW+Ky5uAadtndC5UyVsfbntbrabkTlWuPDZbOjCEAm9uLHj49Lly6pEnxcIOtYmARgRAE46M9B2HVjF3oV60UrXJG2ONn2T8KxCSWhxFYBYspzeV7rvaS3TdmzdpUzV7Y524RywDat1SZD0LsgaQuQpef9n0e7kiI6PqvOr0Kzjc1QPF1x/NX2L20AUlCL6PhY60qDtQ2w3m+9dHFG7llZBZBEyKo1PkfuHkHpJaVhxOql2j4rKac1Pkra/iavowhA1nEW6PmPP/5AsWLFuDATqTAJQAoEHZmPUTkYFvw51++54BbXTXpJQc9tICPnSN01dbHpyibM/HEmuhXtZrNpoRywTWu1yWAJAOuZyBN3et6JtlLR8bG8CJIgTgK8HPTS8BdBRMfH2uCyLdQLTy4gpUtK3YO/a40PO7+Y5LckCP4UjIudLyJ3CnUPNmgzk/hr0RofWxadf3wei88slt5+L+VZKmJ2RxKA27dvx4QJEzB37lzkyWOfKPK2Bkvp35MAJAEoVwBu/Xcrflr9EwqkKoDTHU8rpZqw+QfvG4zxR8aj8w+d8XsN6+GTwhtvtAMWAbjTD09j6rGpUgiIGdVmmFoA2vtFEEfkjxIO64FP5RWV8efNPzGr2ix0LdJViTnC5dUDn+g6OXT/UIw9PBY/5/rZblvovDpFk0DQSZIkAQtI+OnTJ8SNGxcJEiSIgBs7i2e2xAus2fob/tYSi1we/iWQ8H2J7qkr0/VZocFRORh2E+z2i9vSU1oFUhdQWKu42ZefW46Wm1qifIby2N9yv01DjXbANg0SLIMZ8GHPWbFVzSW1l6DV960MRdAM+BgKSKTG9MBn3OFxGLJ/COrlrIf1Ddfbs3vcbeuBT3RG5Z2bFxefXMTKuivRNF9TbvvVVMCrUzQRgMuWRR/8kl3gMFviBdZs/bUlAN98eIMii4rgzos7eNrvKRI4RxT5puuvCoONdjAqTNS0yIkHJ1B0UVGkck2Fh30ihl+y1pCj4aMUbDPg03t3b0w7Pg1dC3fFrOqzlHaRK78Z8AnfwT67++B58HP0KNrDkB9+euBz7N4xlFhcQjq7yvy6nMteXIOsY2E98InKXHbpi13+YrEzGW5JEoQ9o2p04tUpmghAozttRHu8wBpho6ZthDuzYG0FkK38sQfj2fuwV365guzJrMdc1NQmwSoz0sGI0PWX719KY85S4IBAJI4f/bEAR8OHnf+6HnAdWZJmifL1j/DjaAZ8vC94o+mGpna5CGIGfCzjyfxhumnp4P/KH74tfVE2g/7PqemBD9u9YOcA33x8g3OdziFfynwiuB5VNuiBT1SGTDs2Db339Jbi/rHb//ZKvDpFtQBkDVseH2Z/ji6peaTYXoBa2uUF1t72K27fhgBk9eWbm0868Lyr6S5UzWL+586UYhSVg2ErAYniJ5LOyiV3Sa60WqHzp52aVvrIHW97HEXTFY3WViMdsAigXX1+FdlnZ5fO/7FVAFuXf8yAz7Xn19B4fWOU9iyN6T9ONxRmM+BjAcSyAsRe02AXv4zYEdELn/57+4Nd/GlbsC3YZSazJr3wsYaH5ajEjB9noHvR7naDjFenqBaALLgze5UjRYoU0lNs1pyf5bwYCwpttsQLrNn6a2sLmPXnJ5+fsPXqVoeNBWjNwbAnlRKMTQB2gP5B7wdI4xb2RnVMSS02tsCzt88wqtwoFE5bmARgOATWX16PBv9rgB/S/ICT7U/aHHIjP1A2jREwg5nwYTETW21uZehKqZnwsQe9jMKH+UP2NCrz+bd73Eb6xOnt0V2pTV6doloAHjx4ECVLlpRe/WB/ji6VLav/8rjWI8ALrNb26F6fjBXA7ju7Y9aJWRhYciDGVxqvu0miNWDNwbAVk2yzs0m/oN8MfmNzFUi0Pmlpj1EOWEubeeoa6TsSow6OQuvvW2Nx7cU2q3I0fGwCEimDmfDpsLUDFp5eiH4l+mFi5YlKu6oqv5nwUdVBzkJG4cPOTbIffix+4tlOZzmt5ivOq1NUC0A+s8UvzQus+D2MZKEMAcjCXfTZ0weN8zSGT30f03WR12BrDmbntZ2o7l0deVPkxfnO53mbMHV5oxywKCBZnoCTGwTYTPiwGHFP3z5FOvd0hsFtJnwsx2E2NtqIOjnqGIKRnviwt2wP3j4oXWbJkDiDIf3RuhE98YlsK9vdZBeAkiVMpnU3FNXHq1NUC8Dz5+V/7PLlM9/BUl5gFY2iCJllCED23in76BVLVwzH2h4TwWpDbbDmYGb9PQvdd3U35CkoQzsbqbEX717QJZBImGSblQ3XAq5hb/O9qJSpks3hMfIDZdOYaDJsv7odddbUkba2jZznZsGHXY5KPCGx9PKPf29/3QNAW4ZKT3xq+dTCtqvbMLnyZPQp0YeHPnYrqyc+duuUjYZ5dYpqAWg59ycnLhydARSVPuHskiEAWeRzdiasUOpC+KP2HybolLYmWnMwPXb2wMwTMw3dCtK2V9HXxs675JyTE4HBgXg75C3iOsWNsoAjOWAWFsltvJskAh71eYSUriltDotZ8Pn32b/IMSeHdKzByBdBzIIPezGFPQH39uNb3Oxx0+a4a5VBT3ym/DUFfff2ld6B3ua1TSuTDa1HT3wsHQn+GIx4ceIJEy7HbgLwzp2vzx6dOXMGffv2Rb9+/VC8eHEJq2PHjmHKlCmYOHEi6tQxZolcS7bxAqulLYbUJUMAGmKHwI1YczA1vGtI7+XOrzkfHQp1ENh6daaFD/9zqcsl5EqeiwQggJMPTkpxMdk5oCf9nsgC14gPlCxDbGSy14sgZsHHAh/bJmdiwKikJz6n/E/hh4U/SM9ZBgwIMPwZQC0w1BMfi30scDaLkzm41GDd336WgwmvTlG9AhjeuCJFimDkyJGoXr16BJt37NiBYcOG4dSpU3L6IlQeXmCF6owcY0gA2kTJmoPJMTsH/n3+rxQLisWEiompyMIiOOl/Eut+Xof6ueqTAASkl1+Wnl0KJpBHlR8la9iN+EDJMkRGpjJLyuDw3cNYVmcZWuRvIaMEfxYz4cPfW+U16IkPi2n53cTvEPQ+SLrRzrb/zZb0xMeChSX8y+/Vf0fnwp3tDhGvTtFEALKn306fPo2cOXNGAMTPzw8FCxZEcHCw3YFSagAvsErbs3t+BQKQffRCQkNM+SuRB2drDoatAjAxwA7Lu8R14ale2LJs23/F+RUYU34MhpQZQgJQ5UgZ8YFSado3xXrt6oXpf09H9yLdbb5xrFWbZsCH+b5Pnz/B2clZq27LrkdvfCznACdVnoS+JfrKtkuUjHrjw85+MpHMxv9G9xvIlCST3bvOq1M0EYBM5DHx98cffyB+/PgSKO/fv0ebNm3ARCATh2ZLvMCarb9y4gCyPv2y/RcsPbcU7OZjxx86mq6bPAbr7WB4bNOz7PjD4zF4/2A0zdsUK+utJAGoEmwz8WfFuRVosakFSnmWwuHWh1X2WFkxM+DDwj7lm5dPwmVPsz2Ghn3SGx/LOcCa2Wpia5OtygbP3rkVLGCoNXXTlU2ou6YusibNiqvdrqqtRtNyvDpFEwF44sQJ1KpVC58/f0b+/PmlDp47d06aHNu2bQPbIjZb4gXWbP2VKwAdORag3g5YVM5s9NuIemvrSZd//unwDwlAALuv70bO5Dnh4e4hWwSYiT+Xn15G7t9zw8XZRXrpwim2k+70NAM+y88tR8tNLVHCowSOtjmqOybhG9Abn3/8/0HhhYWRKF4iPO//3JAx1wxAAwRg522dMe/UPLu8kx0VTrw6RRMByIx7+/YtVq5ciStXrkjnYnLlygUvLy+4uJhzW4wXWM2IbVRFMieQI8cCjOyAN1/ZjE3/bkL1LNXxc+6fjRopw9vxe+qHXL/ngmtcV7wc+DJKwaP3B8rwjkfR4JM3T6SXAGIhFl4NeiV7699M+LAzYUzo5E+ZH12LdDX1U2da8qbL9i6Y+89c9C7WG1OqTtGyapt16c0ftrXJVn7LpC8jbW/aetrQpsFGZpD5/VJrEtM0mWZmko77sNVRtkoqQuLVKZoJQBHA0NIGXmC1tMWouuQ4GEsswKJpi+J4u+NGmSZEO5Hx6bunL6Ycm4JexXphatWpQtiohxHsubua3jWR/bvs0qsHUb17Koc/ethndJ37bu5DpRWVkDlJZlzvfl12846Cj2xAImU0Az4F5hfA2Udn8b+f/4cGuRqo7aqqcmbAR1XHtCikswC0vPvNwmCx1VH2Y1iExKtTSABGMYq8wIpADqU2yHEwpx+eRqEFhZDSJSUe9X2ktAlT54+MT53VdbD5382YU30OuhTuYuq+aWG8HP5o0Y6965h+fDp67e4lvQDBXoKQmxwFH7l4RM4nOj4s9qP7BHfpDdh7ve4Z+koKw0p0fNSOuybldBaA91/ex9yTc8EC4s+pMUcTk7WohFenkAAkAfgFATkOhj0ZxG5CsfR28FtDtoa0mCha1BEZnzy/58Glp5ewu9luVMlcRYsmTF2HHP6YuoP/Gd92c1ssPrsYw8oMw+jyo2V3yWz4MKFzI+AG7gbdRcVMFWX3U21G0fHxve2L8svKS8KPCUCjkxH4sEDHC04twAn/E1hRd4UwAY9tYq2zALTZvp0ykADUCXheYHUyS9dq5TiY8IGB/X7xQ45kOXS1SaTKw+PjFMcJLuNc8O7TO2FCAuiNVdC7IClOmGciT6tNyeGP3jYaUX/RRUVx4sEJrG2wVtHZT7Phw17+yT8vvxQc+MXAF7qLAdHxmXBkAgbtGyRt/bItYKOTEfiwc4BJf0uKVx9e4WzHs8ifKuxSp/CJBCDc3d0VDxOtAEYBGQnAqONc/fy/n/Ex5CMmVJrgsALwcfBjeEzzkGIhBg8JjvExEX0u+MBrgxcqZqyIP1v86bACkK2KuY93x5uPb6D0B5ARH3DFX4BoCjAxwJ67Yz9yrna9iqzfZdWy+m/qEh0fdv552bllqJWtFtoVbKcrFtYqNwqfaquqYdf1XZhedTp6FOtheD9VNaijAGSX4K4HXEf5jOWFOftnwYhXp2giAFu1aiXF/CtTpoyqsROxEC+wIvbJlk1GORhbdgj595EczNEXZ6XtIJFiQumJ29/3/0axP4ohrVta3O9932EFINsSzTIrC+I5xcPrwa8VCX8zzi/LaqdPfR80ztNYT4rRGTcb6BrFn9+O/IaB+waibo662NBog65jrlnlOgrAfnv6YfKxyWj1fSssqb1EM5O1qIhXp2giAOvXr4/t27fDw8MDrVu3RsuWLZE2bVot+me3OniBtZvhHA0b5WA4TLRf0UgOZu3d7Wi2sRmqZamGHU132M8ug1pmh5+T/JZEao2FgnGL52a6FRwtoGI4bLu6DU/fPFX8FqgZ55cl7Em/Ev2kG+B6JjPioycekes2Cp/j94+j+B/FkTRBUjzt91T3rX9NMNRRAOabmw8XnlyAdz1vNMnbRBNztaqEV6doIgBZZ54/fy7FAVy6dCkuXryISpUqoW3btqhduzacnY1/NocXYF5gedu3R3klDoadBXz78a3sGGj26I+mbVpxMGxrjD0PlMIlhaZNiVpZ6imp8ej1oyjfClXCH1H7qKddZsRn0elFaL+1vfTONXvvWs8kMj7sIgyL+8gugNgrPp5R+LDjPezHHjvmcL7TeeRNmVfPYdembp0EFNQKXQAAIABJREFUoP8rf6SdmlYa+yf9niBZwmTa2KtRLbw6RTMBGL4/Z86cweLFi7Fo0SK4urqiWbNm6NKlC7Jm1fcMiUaYhq1yvHyJRIkSISgoSNXhSi1tMaouuQ5m74290pM4eVLkcZxYgDo5GKPGVot22JY3uwm5vM5yNM/f/Jsq5fJHC1vMWIcZ8Tnz8AwKLiiIxPETI6B/gK7iR2R8LC8gDS41GGMrjrUL/YzEp+rKqthzYw9m/jgT3Yp2s0t/FTWqk39eenYpWm9ujcJpCuNE+xOKTDIiM69O0VwAPnz4EMuXL5cE4IMHD8C2h9l/O3DgACZOnIhevXoZgQt3G7zAchtghwrkOhjLR8GhYgHq5GDsMMyqm7Q8hRTVR1Auf1QbIEDBZWeXwSORh/QUWPw4Ye+ey01mxIcFAWcXQdj/3+h+Q3ohQq8kMj7siTT2VJoRZyGjwtdIfMYdHoeRviPBtv7tJXgV8Uwn/9x4XWOsubQGQ0sPxa8VflVkkhGZeXWKJgKQEXPLli1YsmQJ9uzZg3z58qFdu3Zo2rQp3NzCzgqtXr0anTt3RmBgoBG4cLfBCyy3AXaoQK6DCQwORNKJSSULHSYWYDgH8yEgADW3NZLegWXPQbHVEUdIM47PQM/dPVEvZz2sb7j+my7L5Y9ZsWJb/q7jXBESGoIHvR8gjVsaRV0xKz6zT/yfvasAryLn2m8pxYq0QHF3d3cWL2xxd3d39mdh+RZ3WCi2uLssxd0XtyLFtUBpkRYv/E+mXPa2tPfOTDIzmdvkefb5dr8mJydvTjLvPUnO+Usaa5VMVSK9+6kIBBuVecWHxMYjAaDJq+h7ve8hvVt6VkNWJEdPfMhdV5cYLua54qMBASTpEJNNSgYS+/ZI2yMok66MovnSozItT2FCAJMmTYqvX7+iadOm6NixIwoUKPDT2AnxK1SoEO7evasHLtR90AJLrYABAuRuMOT+n9t4N+n+m9JQGAYMi02XVhvMw4fXkO7vnNLlaBIChqQHig6FxL5beH4hyqYri+b5mkc7AmjxfJPL8QEDAxQfh8pdX9HBliIbI6/4HH1wFGUXlUWK+CnwpN8TxfPOaj55xYfV+KjkaEAAzz45iyLziyBR7EQIGBSg6MU/1VgUNKblKUwI4LJly9CwYUPEiaPsSETBOHWvSgus7goz6FDJBkMCxJJAsTua70D1LNUZ9M65CKsN5vBlH5Tf4ImMbhlxp/cdzhXXTz0l9qOfVux6WnpxKVpvbo3y6cvjYJuDigU7Oj6KAYnQgFd8Jh2fhIF7BhoeFsUofEjsS/Jjl+uiAQEkjg6/QD/4vfRDzWw1uRw+LU9hQgBJDMDp06f/OO61IBUSEoKePXtK9wHNVmiBNdt4ib5KNpjaq2tj642t8K7pjS5FuphxuMp0fvMGSJRIarNzRm/UDJiOSlmqYHfL3crkOHBtJfZjRhgs8cB6FO2BmZ4zFQ/BrPiQ+3/77uyTQmGQO2FavYLlFZ/6a+uDBIGeUHkCBpYeqHjeWTXQG5+9d/Zi8N7ByJYkm3T3keuiAQHkerzflaPlKUwIoLOzs/TQI1my8OEwAgICkCJFCnz58sUMWIbTkRZY0w1YIQHsvaM3Zvw7A4NLD5Yygjh02bgR6NULePz4xzAfJgR29KiGTqN3OvTQIw4u5FMIbr68KYW+SZ0wfKxPvT9QegNffXl17Lq9C3NrzUWnwp0Ud29WfMjdR/IQhNyBu9/nfpSpABUDEqEBj/gQLxAJA/I0+CkOtzmMsunL0g5TdXu98bEcfZO17t/fXzPirxoQ64aCAKqKVkJFAAlJIgvE3d0dfn5+8PDw+DEloaGh2LZtG4YMGYInT54wmWM9hQgCaDt244pLK7DWd610LEIipDtsIeSvQQPg27dwQ/wKwIn8s2EDUK+eww4/4sCabmiK1VdWR+oN0fsDpTfohAiQuGDH2x1HybQlFXdvZnwKzi2IC/4XsLHRRtTNWVfx2OU04BEfcvy57uo6nHh0AmMqjUE8l3hyhqJJHb3x+fjlo3TXm/wA8O3mi5weOTUZFxOhjAng9pvbsfDCQjTL0wz1c9VnoqIWQmh5ChUBjBEjhs1fBeSo4I8//sBvv/2mxdg1lUkLrKbKaSRc7w1Go2GwExsaCmTIADyKPPXZNyfAKU1agDxscnZm1y/HkkYdGoURB0egXYF2+Lv23+E0dWT7IS8Bk0xIIo03qkwo9qbNzPi039Je+iBqGQ7DzPjYm3sWfzcCn1+W/IID9w7wf9WHMQHsuLUjFpxfgN7Fe2Na9Wkspk8TGbQ8hYoAHjp0SPIA/vLLL9iwYQMSJw4LDUJKrFixkD59eqRKpSxUgiYoqRBKC6yKLg1vYsQGY/igbSlw8CBQsaJ9FQ8cACpUsF/PAWqsvboWjdc3luLgHWt3LNoQQJId4ezTs1JS+Bb5WqiaSTOvr9mnZ6O7T3dNUx+aGR9VBqGwkRH4WH7wNc7dGKsbrFaosY7VGRJAwmnST0uPh28ecv/IkZanUBFAy/Tev38f6dKl4/uOgEJbpAVWYXdcVFe6wZCFQjwjieIk4vKJPDWoq1YBzZrZF7NyJdCUrxyR9pVWV4O8/CYvwN3juOPloJfh1rxS+1GngXlbmRkfS35YLe+D8YgPyQSRwS0DSqQpoTjwN2tLNQKfQ/cOocKSCoaHwLGLJUMCeO3FNeSanQuxnWMjcHCgocf+9sZNy1NUE8BLly4hT548IMfA5N9tFRIY2myFFlizjZfoq3SDSTMlDR6/fey4sQCFB/AnMyZBcV3HuOIbvuHZgGfh8iArtR8zrhEanc2MD5l38hCEBMF+1PfRTw+AaHCxtOUNH3IHjgSAJq+gb/W8hcyJM7MYpmoZRuBD7v+5jXPDx9CPuN79OrInza5af00bMiSAU09MRb/d/aTA57xHeaDlKaoJICF+/v7+0stfy11A4hGKWMg9QPIgxGyFFlizjVcNAXT4WICWO4Dk9W8ktg0nJyBNmmh1B5DYSabpmXD31V0canMI5dKX+2HqRnyg9FpnU05MQfxY8aVHTx6u/z12U9K/2fHJ650XV55fwZYmW+CV3UvJ0GXV5QofK0KR4c+kuDvsueEnXEbhQx5+OcEJw8sN5/chCEMCaHntP7nqZPQr2U+W7RpViZanqCaA1se+5N9tFXIX0GyFFlizjVcNAYwWsQAtr4AJQFYkUHoAQt4Br18frV4BExg8V3hix60dP4VDMeoDpfVaIz9sE41LhLef3uJK1yvInSy3qi7Njs+R+0ek6x45k+aEi7PtKAFqAOIKHytC0XBhDaxr66NmSEzbcIUP05ExEMaIABJPN0lzSjyfNGudwYhkiaDlKaoJoLV27969Q7x4xj2Pl4WUwkq0wCrsjovqSjeYaBMLMJI4gG+SJUJC74XRjvwRQ11zZQ0evH6AGllrIE+yPA7vAbz36h4yTs8o5UYNGRaimvwoXV9cbAo6KsEVPlaEYtKukRhQdYSOSETeFVf4GI5GBAUYEcA7QXfQYmMLKdzT3d53Dff62oOZlqcwIYDx48dHnTp10LJlS1SpUkU6EjZ7oQXWjONXusFY7kpw/0KMxWRYZQKp3hzoNGQt6uVpyEKyw8hQaj9mGfi2G9vgtdoL+ZLnw8UuF1Wr7aj4qAYkQkOu8LEiFIeubEf53J6shqlajpH4kHiIvi98kTJ+SiSJFxYOiavCiABaxkTuf8aOGZurIUamDC1PYUIAN27ciFWrVmH79u1SNOrGjRujRYsWKFq0KPcARqUgLbBmHLjSDWbTtU2ot7YeiqcujpMdTppxyPJ1ttpgXIcBJ3pdlAiBKP8hoNR+zILdmCNj8Nv+39A8b3Msr7dctdqOgA8JB3P6yWmMrzw+3AMg1aBYNeQJnydP/ZAqVTZJu+BAf8R3T85iiFQyjMTHa5UXtt3chvm/zkeHQh2oxqFJY8YEUBMdNRBKy1OYEEDLuN6+fYv169dLZPDAgQPImDGjRAR///13DYaurUhaYLXVThvpSjeY80/Po9C8Qkjumhz+A/y1UYoXqREI4PMRwXCN5cqLdrrqQe7EEW/AtYBrqJWt1o/wGErtR1elKTqzZD8ZV2kcBpcZrFqSI+CTa1Yuad63N9sOz6xsvWI84bPl7ErULtI8bK6DgwFX49e6kfj8fuB3/O/w/6QYmMvqLlO9BjRryIAABn8KltIdusVx00xN1oJpeQpTAmg9OF9fXzRv3lwKESNeAbOedm3kKd1gXn14hVabWklxski09BhO5j/6jxJZqw0m8+jkuD3MwQmvDRMjBDDpxKRSDMgLnS8gf4r8Um2l9qONFbOXmmd2Hlx9cRX/NP0HNbPVVN2BI+BD7ketuLwCoyqMwvDyw1VjEVlDnvD59CYIsRJ9T2wgCCD23dmHyssqI03CNHjQ5wGc3r0D4sfnhyAzIIALzi1Al3+6oGOhjvCu5c3UtrUSxhUB/PDhA7Zu3YqVK1di586dUoiYpk2bYvz48VqNXzO5tMBqppiGgnnagDUcpjrRVhtMldklsafrcXVyHKRV6YWlcfzhcayuvxqN8zR2WAJIYsCRuIfEM3C/z32kS5RO9Qw6wvqy3Putk6MONjXepBoL3gkgrNa78AAC7z6/k+IBfv76Gbd73UamWMkdjgA2XNcQ633XY2T5kRhRwfhHP3IWFy1PYeIB3L17N1asWIHNmzfD2dkZDRo0kLx/5cuXlzMGLuvQAsvloOwo5QgfKM1wt/ogdFrZDPOartCsKzMItuSGtd4sHdV+XoS8kOLfVchQgepVoCPgY8kMkTZhWjzo+4CpqXKFjyCAP81tmYVlcOzhMfzt9TfaZWvsUASQ/MBLOiEpXn98jRPtT0iZX8xQaHkKEwJIQsDUrFlTIn3kf11c2MeI0nsyaIHVW18W/anZgC3p4EhmiKTxkrJQg08ZVh+EDy8DECcxhy/hdERu4rGJGLR3EJrkaYJV9Vc5rAeQJaRq1hfL/lnIevPxjRQTkZTnA56rDorNsweQkH3vg5Mwq/GSMDXFEbAEw//t/z+MPjIarfK3wpIqsx2KAJLTDHKqQVJcvhj4As4xnFksF81l0PIUJgSQKEFe/zpSoQXWjFio+UAN2D0Ak09MxqBSgzC+ivmO+mXPE4M7JrL7MkFFS2iUAikK4Hzn84IAypgzNetLhljdq2SbmQ1+gX7Y2XwnqmWpxqx/XvCZeWomhmzthZAx34cmCKAExJ7be1B1eVXpGsT9jr4ORQBHHBiBUYdHoVHuRljTYA0zm9ZaEC1PYUIArQf5/v176TK4dTEjOaQFVuuJ10K+mg3YcifIbAtHDX5q8FHTjxna+L30Q7a/siFuzLgIHhaMGO/e//ggfA4KgoubeV7S2cJ75MGR0v0nEvoiW5KwsCBqi6PYD3kVTYKB/+X5F7oV7aYWjp/a8YJPsw3NsOXcKkEAI8xQyKcQ/Hn4T+kqRNUUpeGUIEFYDR4IMuUP9BILSuDU41Nhx9sF2zGzaa0F0fIUJgQwJCQEgwcPxtq1a/Hy5cufxixeAWttBmzkq9mALbEAi6UuhlMdTrFRhEMpJEQAeQ2aKDQRjnU7hvhxv7+A41BXPVQid2bijY4nXQq/1/se0rskdUgCmG5qOjx88xBH2h5BmXRlqKBVs76oOtSoMcmSkCBWAiSI/Z0AMOqHF3xIrutnz+8KAmhrXnm7I0lBAF++ewmPiR4g15ge9n0ovXQ2S+GCAHbv3l2K+zdq1Ci0atUKs2bNwuPHjzF37lyMGzdOuhtotkILrNnGS/RVswFbYgEmc02GZwOemXHYsnS+6H8RBeYWQELnhAgYHOAQ91xlDdxGpTln5kjBgKtkqoIEX2I4HAEkYY7cx7tLCAQNDqKOD6ZmfdHOkZna84DPs+BnSDE5BVw/AcHiCDhq83EgAkjuta6+shpXn1/F9BrTzbRkQMtTmHgA06VLh6VLl6JChQrSXcBz584hS5YsWLZsmRQU2sfH+ETaSmeVFlil/fFQX80GHPQ+SEqeTQrJkxrPxbFyQlvmZYPvBjRY1wDZ42XH5T6XBQGMaLAUv8B5sP3IdDj64CjKLioLVi9e1awvXrHRQi8e8NlyfQvqrKmDooly4d++vmHD5OGIU+UPdNbzRFKk7bu7D1funMKg6qP4wccB9x85c0fLU5gQQJIL+OrVq0ifPj3SpEkDkhquWLFiuHv3LvLmzYtgsoBMVmiBNdlwJXXVbMDkFbDbeDeQX1G+3XyR0yOnGYduV+dxR8dh6L6hKO9eHnu67hEEMBoQQO/T3ujm003KeEEyX9AWNeuLtk+t2o89MhY+t3zwZ8U/UT4Dm3BfPOAzZO8QjD82Ht1ythavgCMxnrcf30pe8dgfQ/k6IhcEUNVDXCYEMF++fJg5c6YU969q1aog/z1p0iTMmDEDEyZMwKNHj7TahzSTKwig/FA++efkx6Vnl+DTzAc1stbQbE6MFNxhawf8ff5vNEnRBEvbLRUEEAA5IiVx4cj9yOaZ6zjcEXC37d3gfcab2Qt3HggOqzXUaF0jrPNdJ+UEHlR6EBOxPOBjyXRCwpy0Kv39gYvwAIabX/Jg4vLdU3wRwDdvgERh4Ym+bNuGmDVqAM72Q7ncfHkTu2/vln7kZXLPxMSO9RRCy1OYEMCpU6dKAaB79eol3QUksQDJw48vX75gypQp6N27t56YMOmLFlgmSugsRO0GPPrwaDwLeYb2Bdv/SAums+qad1dhcQUcun8IfdP1xfgW4wUBBHDmyRkUnV80LBd019sORwDJ8S85Bia5T0kOVNqidn3R9qtF+/FHx2PIviFMw2bwgk/AuwDE+vAZCZOkCoNOEMBwJjR4z2D8dXACPwRw40agVy/g8eP/9EyTBpg+HahXz6b5jzkyBr/t/w1e2b2wpckWLZaKpjJpeQoTAhhxhA8ePMCZM2eQOXNm5M8flifUbIUWWLONl+jLywbMI3ZppqTB47ePMSHrBPRp2EcQQADkOCjhuLD4n4HdH8LdI630744SBibDtAy4//o+LnW5hLzJ81KbpSOtL0tMuCyJs8Cvpx81NtztP7w9cuBof97htwMNFnvyQQAJ+WvQAPj2LbwNOjmF/ff69TZJoOVHnndNb3Qp0oWJHesphJanUBNAsqmRY1/y4jdbNro4WXoCZ68vWmDtyefx7470gWKJb+jXUJRfXB4k9t2kTJPQxKuJIIDfAbYQ41NN96NY9l8cigCS+60kBEyqBKkQM0ZMapNypPVFQmcknRiW+efV4FdIFCfs+I2mcIWPIIBRTiW57536f254O/o76TLKQxoaCmTIAER1xYyQQOIJvHs30uNgcoWFpH8L/RYaFsrKLT2N+RrSlpanUBNAMmoPDw8cP34cWbNmNQQELTqlBVYLnbSWqXYDJh/KoA9BeB7yHDmS5tBaTcPkq8XHMIV16Ljy0srSq8BlVeegRamwX9CO4gFkDZ+j2Y/FQ3qg9QEpODBtMRofcs/37qu7+L3c7yjvUYSvTBcceQDJPFeYVRQHe5wJm3KjCODBg0DFivbN7sABoMLP9rnu6jo0Wt8IOZPmhG/37y++7UvjqgYtT2FCAPv37y95REjMP0cptMCaEQe1G/AF/wsoOLegFBPOkWMBqsXHjLYgV+cePj0w6/Qs/FawD/6sPU0QQBvAOZr91F9bHxuvbcSkKpPQv1R/uSYTZT2j8bEE/d7faj8qJismCKCNGR21fTB+rzXBWAK4ahXQrJl9u1u5Emja9Kd67ba0w6ILi9CvRD9MrjbZvhwOa9DyFCYEsGfPnlIcQBL7r0iRInB1dQ0HFXkIYrZCC6zZxit5bj5/lmI2enp6KjritA6Y64ixAImH08nJSTU+ZrQFuTr/9e9f6LmjJxqm98TatmHxPh3BAzhw90DcDrqNfiX7UWcAsWCpdn3JnQu965HHX4T89y3RFwNLD6Tu3kh8Hr15hLRT0yKGUwy8HvIa8T87CQJoY0YfPbmBNKm/n/aY0ANI9vTUU1LjafBT7G6xG1UyV6G2XyME0PIUJgSwog03LPlw7t+/3whsqPqkBZaqc4Ma02zAbuPc8Prja4eMBdh9e3fsuLUDv5X5DUkfJVVMkA2aTl263XdnHyovq4y8rplwaeAdhyGAJO3f1RdXpfh/JEQEi0Kzvlj0z1oGSQfI4m4kDwTZchxYMEVBnOt8DhB3AG2bCw/4WO4Akte/ER+BEO1t3AG8HXgbOWflhIuzCwIHBSJ2zNisl4cu8mh5ChMCqMtIde6EFlid1WXSHc0HqsCcArj47KJDxgK03HNbUGuBIIARLI14f3fe2ikRwNyZijsEASTZDlzHuEqXw1nmBqVZX0wWOOdCjMSn365+mHpyKroV6YZZNWcJAmjPVngggERHyytg8u/WJFDGK2ASxYD8yCuRpoS90XL7d1qeIghgFFNLCyy3FmNDMZoNuM7qOthyYwtme85G16JdzTj8KHW2XHY/2PIgXl1+JTyAkSHlQJH4LXda3eK4Sd4BcorBotCsLxb9ayWDHKcRbyDxptAUI/EhwY1PPT6F5XWXo3m+5oBVYGGQVKZVq8oKLEwzfnttjcTnJ92s1nurZfWwtMUGe+pr9/fI4gCmTQtMm2Y3DqB2SukjmZanMCGAdevWjXSTJBtnnDhxpLuBzZo1Q/bs2fVBhUEvtMAyUEF3ETQbTJ+dfTD91HRmWRN0H3wUHRJvUNzRcfEN3/Cw10OcPXxWEEAHJ4DLLi5Dq82tUC59ORxqc4iZKdKsL2ZKMBY06fgkkH96Fe+FYWWHUUk3Cp8PXz4g4diE+Pz1M273uo1MBy6oDixMBYCdxkbhE6laVgTQfbgLHg9/ZWweeJWZQLScLz1k0/IUJgSwTZs22Lx5M9zc3FC4cGGQX4Tnz5/Hq1evpBiBFy9exL1797Bv3z6ULl1aD1yo+6AFlloBAwTQbDDTTk5D3119mWYGMACCn7q89uIacs3OhQSxEiCgfwB27NghCGAElK48v4L9V7ahV6UwAmD2RyDkAcikE5PQvWh3/OX5FzMzpFlfzJRgLGjKiSnov7s/k0wKRuHz+M1jdNzWUQoB45viTzg1bKg6sDBjeMOJMwofewTQdRiwse1OVMtSTcvh25at4ARi07VNGH1kNNoVbIduRb+n+zNOc6qeaXkKEwI4ZMgQEEX++usvxIgRQxrQ169fpRRwCRIkwOjRo9GlSxdcvXoVR48epRqwXo1pgdVLT5b90GwwJx+dxIpLK1AybUk0yyvjaT5LxTWUte3GNnit9gK5HH6q3SlVr6Q1VI8L0dNPTsewbX1+ZAYwOwGstryalB90bq256FS4EzOMadYXMyUYCzr24BjKLCojpQN82v8p1XG50fh8+/IFThkzqg4szBjan8QZjU84hawIFyGAXcoZHEpFAQFsu6UtFl9YLL1en1LNfBFKrOeBlqcwIYAkEPSxY8d+ygRy8+ZNlCpVCgEBAbh8+TLKli0reQXNUGiBNcMYI+rI1QbDCYAWD0ej3I2wvPZyQQAjmReSFqzegqp4+z0MqJJk7JxMczg1aq6sif1394MEOGZ5QdwR19f7z++ldIDkDiBtNgXD8aEMLKy1LRuOj/UAIxDAzGny4lLXS1pDELV8mQSQZHVKMTkFSL5nVgHMjRs0uar6BokSJcLr16+RMGFYWk4lhQkBdHd3x5IlS+Dl5RWu761bt6J169YICgqCn58fihUrJv27GQotsGYYoyCA9meJ/FKcc2YO6uSog/7F+wsCGAlkgSsW4F3Xjkjz1uqPMpOx258BY2qQDwUpzjGcmSnA1Qec2aiAwvMK49zTc1jTYI10BURtMQIfcl3pWcgzpIifAqAMLKx23HLbGYFPlLpZEa74w4CQWMCTfk+QMkFKucNhW08mATz64ChI/l/3OO5S0gLah0tsB6FcGi1PYUIAe/XqhVWrVmHYsGEoWrSodAzw77//YsyYMdLjj+nTp2PBggVYvHixOAJWPse6taDdYILeB+Heq3vI5J6JSW5Q3QYusyNafGR2Y65qGzfiW4MG0r3fsMsf34uMMAzmGii9to5qP922d4P3GW/qjApG4HMn6A4yz8iMbEmywTfXbDhXqmx/oqNILWa/IV0NI/CJUmOrRxe9emXFLDc/zK/zt3SvzpAikwAO2jMIE49PRPO8zbG83nJDVGXZKRcEMDQ0VEoDR+4APnv2TBpf8uTJQTKEDB48GM7Oznjw4IF0PzAN8QyYoNACa4Ih/qQi7QbjyLEACVi0+JjRJmzqTJmM3eHwsDMgR7WfJReWoM2WNiidtjSOtlN/x9sIfJZfWo6Wm1qieOriONn2GJAhA6AisLAetmwEPpGOK5KwK8/cXXDr954o3ceglGoyCWCOv3Lgxssb1N5qPeZbTh+0PIWJB9BaUaIQKWrOo+UMWK86tMDqpSfLfmg3GEeLBfj121eQo0DLMQEtPiznigtZnN+ZUoMR8WaRY6Lfy/+OBrkaqBERZRtHtZ+bL2+C5FWtkKEC/vzlT9WYGYEPyfIz+8zs/x4EUAQWVj1wmQ2NwOcn1Sz4RMy8YbTHXwYBvBFwAzlm5YBLDBcEDApAwtjK78zJnCrdqtHyFOYEULeRa9wRLbAaq6eJeNoNxtFiAZIQMPnm5EO+5PlwttNZ4QGMaHWc35lSs0iKzS+G009OY13DdYIAqgGQog3t/qOm63ze+XD5+eXw881pYGEj8AmHKc8efxkEkOzn/zv8P+nB0tqGa9WYC3dtaHmKIIBRTCktsNxZigyFaDcYSyxA4jkhH1CzF+sQMCQ/KC0+ZsfjJ/0dzANIvL0JxibA+y/vcaPHDeleGMsi7Mc2mnrjE/g+EEkmJJGU8u/vj+Txk/+noMgE8vNk8bzeZRBAlmuZF1m0PEUQQEEAfyBAuwFvvbEVtVfXRuGUhXGm0xle1ohqPSwhYBrmaij9YqTFR7UivDakSMbp7jpSAAAgAElEQVTO45D8Xvoh21/ZEDdmXLwd+pbpC2AyXke3H5Jb9fHbx8iRNIeq6dUbH8sPPEL0CeEPV3jJdWullN74/DSJMj3+31asgFMznWPBCgKo6tqdIICCADIjgFefX0Ue7zwgOVSDBpsj3I+tL5XldeOwMsMwutJoh/+Aq/pqc3xnSul4NvhuQIN1DVAkVRGc7nhaaXO79Q3/gNvVUH0FEjex8tLKEvnz7e6rSpDe+FhehHYo2AHzveYLAmhv1mR6AO9vWoz0dVrbk8b273YI4EX/i9IPutweuamClbNVml6a8ADSYxipBFpgNVJLU7G0G/C7z+/gOsZV0jFwUCDc47prqq/Wwqsuq4o9d/ZgoddCtC3YVhDAqADn9M6UUvsYcWAERh0ehbYF2mJh7YVKm9utT7u+7HZgYIXnIc+RfFJyOMEJgYMDpR+BSove+Oy9sxcbr22EZ1ZP1MpWSxBAexNmx+P/FcCjhMDabeMwoNxge9LY/t0OAay1sha2+23HpCqT0L9Uf7Z9GyiNlqcw8QDOmDEjUghIPMA4ceIgS5YsKFeunBQOxiyFFlizjNNaTxYb8OA9g5HMNRnaF2qv6iPAE24Zp2eU4hoeaXsEZdKVEQTQ1uRY3ZlaPLoR2gxeCZhovZOh1VtTD5uub8LUalPRp0Qf5qbIYn0xV4qhwGwzs8Ev0A8+zXxQI2sNxZK5wkccAUc+fzY8/iQWaP1GQGCN8jjY5qDi+adqYIMAvvrwCskmJsPnr59xtdtV5PLIRdUVT41peQoTApgxY0a8ePEC7969A8kKQgyBpHyLFy8e4sePj+fPnyNTpkw4cOAA0qZNaxO/w4cPY+LEiTh79iyePn2KTZs2oU6dOpG26dy5M+bNm4epU6eiT5//Nmx/f38MHDgQe/bswdu3b5E9e3YpSHWDBvLDOtACy5ORyNWFqw1YrtIa1fv45SPijYkHEgqG5DglmQIEPjbAttqAmy76FavabNVoZrQTO2D3APj4+WB2zdlSSBPWxdHth4SCWXRhESxXJpTixxU+ggBGPX1RePyf/TkUKe52g7OTM14MfKHvCZANAmiJU0mOf690u6LULLmuT8tTmBBAkgWEEDGS7SNz5swSYLdu3QIhaJ06dULp0qXRpEkTpEiRAuvXr7cJ6I4dO6S8woUKFUL9+vWjJICbN2/GyJEjJeJJyJ41AaxSpYqUG48Epk6aNClWrlyJESNG4MyZMyhYsKCsCaUFVlYnnFXiagM2GBvyQrCHTw88evMIh9ocku6NCHzkEcACE7PgwgA/g2eQv+4d3X7+Pvc3OmzrgHLpy0lrRmnREx8S65EcV5P7nrFjxv5ZVUEAbU9fFK+k88zOg6svrmJZ3WVoka+FUhNQX98GASS5vckPuz8q/CHF93SkQstTmBBAQvo2bNiAAgUKhMP2/PnzEom7c+cOjh8/Lv078erJLeSjG5kH8PHjxyhevDh27dqFmjVrSuTPmgASr6O3tzdatmz5o6skSZJgwoQJaN++vazuaYGV1QlnlVhswCGfQkACw37DNxRKWYizEdKpwwIfOg04bm21ASf4zQnPR4QgrktcjhXWXzVHtx9LoN04MePg9ZDXiOUcSxHIeuJTaWklkIcrc2rOQecinQUBVDRTAKIgyJZ7tF7ZvbClyRalUtXXj4IAkvSkySYlk2L/+XbzRU6PnOr74LAlLU9hQgDJUS85ui1SpEg4iE6fPo3y5ctLR8P37t1Dnjx5EBwcLBvGyAjg169fUblyZdSuXRu9e/dGhgwZfiKA1atXR8yYMbF06VK4ublh7dq16NChAy5evPjDQxlRiY8fP4L8YykEWHJcHRAQoOp5texBclSRbMDk2Jx4UF1cXFRptvzycrTb1g4V01fErua7VMngtRELfHgdG7VeISFwcQ979OM6DNjf+aSpfgC8+fgG8WPFRwyncBmNqWGxFuDo9kOu/qSelhoB7wNwpPURKb2akqIXPp9CP8FjsocU7/FCxwuR3wmzsufPQUGAa9jjNiOLXvjIGmMU+JAf/7tu70KdHHWQNqHt616y+pFbyUqfd8+fw8Ut7BHSkotL0HF7R+TxyINzHc/JlWaaeoSnkFNOcuKpJvsaEwJIvHDk3h05ArYcsRLvX8eOHaVj33/++Qfbtm2T7uFdvnxZNriREcCxY8dKdwmJ94/8PTICSMBo3LixVIcQQUJQydEzITZRFXKc/Mcff/z0Z3J8TNqLIg+Ba8HXMPTWUHi4eGB+7gihFeSJ4KJW8JdgxHWOK91nEcU+As4fPqBWkyY/CGD7zD1RKUkl+w05qTHzwUwce3UMbVO1RbWk1TjRynxqbH2+FTFjxETJRCXh7sJnFIAbITcw2G8wEjgnwNI8SyMNC2Jtz/+sXo3QOHHMNxkaaswbPlHpM+HuBBx/fRxNUzRF4xSNNUTEGNHEudasWTNjCSAhf+S4dd++fT88R1++fEGlSpWwbNkyJE+eXCJt5BdM1apVZSMVkQCShyGEbJ47dw6pUqWS5ERGAHv27Il///0XY8aMkdgxuS9IHoocOXIEefPmjbR/4QEMC1RL6wF8GvwU6Weklzwpbwa9UXwMJNs4NK7oucoTh+4fwtLaS1E/Z32pNxb4aKy2ceIjeAD7VByGkeVHGqePwp6L/V0MF55dwNr6a1Ene+SPzhSK/Km6sB/bCOqFz6QTkzDswDD8mu1XbGiwIXKlhAfQ9mTxhk8UHkDi7T1w7wByJs2JdInS0S5h7tpz4QG0oHL9+nXcvHlTegWcI0cO6fUtTYlIAKdNm4Z+/fohRoz/jmlCQ0Ol/ybHteSY+fbt21LYmStXriB37tw/uifHxuT/nzNnjiyVaM/WZXXCWSUWd3DI3JNYgOR4xa+nH7IkzsLZKOWpEzEEjIUA+vj4wNPTU/URubzeTVjL6g7O8yd3kCxlRtMMgnwkSAo48r93et1BRndtdGexvkwDqgpF9cLH8ijAZkw48QjELgFE/Phhdci1LqsjcnLfjry83XJjC1Y3WI14LjqcoIlMIMYdAatY67KaRCSAL1++/OkRSbVq1STvY9u2bSXCSY6Y8+XLB19fX+TM+d+FT1Ivffr00mtlOUUQQHV3AAm2lpdgO5vvRLUs5jtOiywEjCCAdlaNiTdgkiWgwNwCSBQ7kZTBhuw7WhS9CI4WuiuRee3FNRx5cAQ1stRA2kTy74Hpgc/n0M9IPCExgj8F41yncyiYMoqoEIIAqiaAxAmQaUYmKYbqmgZr0Ch3IyXmo65uJPsP0UOrtaxOSfataHkKkzuAxAu3ePFi6QiYxPwjDzWsy/79+2WPnDwSISFkSCH3CadMmYKKFSsiceLESJfuZxduxCNgsonkypULKVOmxKRJk0Be/5IjYBIqhtxFJN4bOYUWWDl98FaH1QbstcoL225uw2zP2ehatCtvw7Srz/WA68g5K6f0KODNkDc/NhFW+NhVwIwVTEwALXHCyqfXNoBtdLGf8ovL4/D9w1jw6wIpILzcogc+xx4cQ5lFZZAkbhI8H/g86kc/ggCqJoCk4W/7fsOYo2OkY/atTXWICRph/3mMVyB22CpfK4yqOMphiSAtT2FCAHv06CERQHI/jxCviKyb3L+TWw4ePCgRvoildevWUh8RS2R3AP38/DBkyBAcPXpUenVMjn4HDBgQLiyMPX1ogbUnn8e/s9qA++zsg+mnpmNAyQGYWHUij0O1qZMlSXyBFAVwvvP5H3VZ4WM6QOQobLUBT9k1CjufHcHwcsNRNn1ZOa0NrdN3Z19MOzUNvYv3xrTq0zTTJbrYz7B9wzD26Fi0KdAGi2ovko2nHviQ48mzT87i8dvHqJezXtS6CQJIRQB9X/gi9+zc0oMgEkg/abyksu1AVcUIBHDcxZn4/eDvqJSxEva22qtKpBka0fIUJgSQPLQgIVfketeiA7BmGGNEHVltwAfvHcSZJ2ek9Gkl0pQwHRRTT0xFv9390DBXQ6xtuFYQQDkzGCETyOr72zC56mT0K9lPTmtD61RYXEF68LO49mK0LqBdEntW68tQsGR0ToLuknt2WRNnxc2eN2W0CKvCFT6CAFIRQNK48LzCOPf0HGZ5zkK3ot1k24Gqilbz9SkwELmWFcXtoNtYWmcpWub/Lx6wKtkcN+KCAJIXucRzly1bNo6hUqYaLbDKeuOjNlcbsIGQdNveDd5nvDG0zFCMqTRGEEA5c2G1Af/5zxAMPzMOrfO3xuI6P3vt5YjTs86EYxNAMkOMqzxO0zyh0WV9kdyriccnloLBP+n3BCkTpJQ1nVzhIwggNQG0/JAmToAT7U/IsgHVlazm6/BlH5Tf4Cld4fHv7w/XWMbHcFQ9LjsNaXkKEw/g5MmTpWwfJPWao1y6pAVWqwnXUi5XG7CWA7Ujm9wJ87nlgxZ5W+DX7L8KAihnLqw24E2nlqHejpYomKIgznV2vOCrcuCIrE50Wl8W78/KeivRNG9TWZBpjQ8h+UsvLpWCFHtmtXMXXBBAagLoH+yP1FNSS/nUb/a4iaxJssqyA1WVrOar48qmWHBzleIrCKr6NbgRLU9hQgDr1q0rxfkjDzVI6JWIWSQ2kuTRJiu0wJpsuJK6LDfgS88u4XbgbVTJXEX6JeYIhSU+joBHuDFYbcA375xD9qWFENs5NoKHBUv3gERhu754x3PA7gGYfGIyOhTsgPle8gLCa72+Bu0ZhInHJ8ojBoIAUhNAIoBcBfjw5QOmVJ2C/Cnya2e2VvOV5PfYCIzxEcfbHUfJtCW165MDybQ8hQkBJCFYbJVFi+RfBOYAU0kFWmB5GYcSPVhuwGmnpsWjN49wqsMpFEtdTIka3NZliQ+3g1SrmNUG/DHwJZJ4p0PI5xDj8m/K/IDfCrwlxSlLGf/nx2tqoYiqXXSyHzX3ALXGx+KVXFZ3GVrka8GE4LC2EVvytMZH0Vhkri8SUit2zNiKRKuqbKUPSUWZLV0BKcyPo5xIRoUJLU9hQgBVTRjnjWiB5Xx4karHcoOxhIJQcgTEA2ZvP75F4PtAKX5ZxLywLPHhYaxMdYjwCq/chho4+egkVtdfjcZ5DEjBJPMDVXt1bWy9sRXeNb3RpUgXppBEFBad7IfE2Tt075D0Cjxh7ISycNUSH7Kmk05IKt1LfNzvMVIlCMskFWWRaT+yBsaokpb4KFaRN3ys9Omxpg2KZ//FoR9/WOaLlqcwJYAvXrzAjRs3JNZNHoR4eHgotiteGtACy8s4lOjBcoNpu6UtFl9YjD8r/onfyv2mRA1D6268thH119ZHqbSlcKzdsXC6sMTH0EFq0XkEAtjjyGCsv7Ye4yqNQ8fCHbXokckH3OKpPtzmsOYha4T92J4yLfHZ4LsBDdY1kFKC+Xb3tW+PvBEcxld07ANgp4ZCfMh9wF23dmn3yt7EcUhp5oKWpzAhgCEhISD5d0koGEsQaGdnZ7Rq1QozZ85EvHg6pIKhQTGStrTAMlZHF3EsN+A/D/+J4QeGo22BtlhYe6Eu+rPoZOyRsRi2fxia522O5fWWCwKoAFRr+wl1CpXuABp2BCPjA0U+Siknp4QTnPBm6BvN76qyXF8KpsU0VbXEx/Kyv0fRHpjpOdM+JjLsx74QtjW0xEexpgrwIa/CyTojdwGvdruqzUt7QQCNSwXXuXNn7N27V3oFXLp0acmWSBDmXr16oUqVKvD29lZsX0Y3EARQfSo4MnerLq9Cs43NpFiAR9oeMXo6ZfffZnMbLLm4BKMqjMLw8sMFAZSNHGePHGR8oLbf3I5aq2pJHyTyYdK6cPUB13qwAILeB0mPLq48v4ItTbbY/jGg4QecpATLMjML7gTdwebGm1E7R237o5dhP/aFsK3Blf0oxKfemnrYdH2TZg6BC7ePoUCWMhLgn4OC4OLmxhZ8TqXR8hQmHkASCHr9+vWoUKFCOJjIy+BGjRqBHA2brdACa7bxSgvn82f4+PhIAb0jvuRWOh4SCLro/KJI7poc/gP8lTY3rH7Jv0tKd9ciy2HJEh/DBqhhx1HhY0hOThkfqJEHR+KPQ3+gVf5WWFJniYbIhImObvbz/vN7uI93x8fQj/YfA2lIAMn9vzILy0iBgV8OeinP0yvDfjQ3mAgdcGU/CvE59egUSvxdQooIcKfXHUU5ouXg3GJZXSxvtVkQQDlgWdVhQgDJEe/Zs2eRM2fOcN1fvXoVxYoVAzkiNlsRBJDOA/j6w2u4jQ/7FfZ6yGvZF8GNtpMkE5JIj0AudL7wU9gCrjZgo4GKpP+I+PTe0Rubb2zG/F/no2rmqvpqLOMDVWtlLWz3246ZNWaiR7EemusXHe2n6rKq2HNnD6ZWm4o+JfpEjbGGBNDS6bPgZ0geP7nm86xVB1zZj4z1FRGHX5b8ggP3DqBP8T6YWl1+elh7eN4IuIHCU3Mg+HvMfuEBtIfYf39nQgArVaqEJEmSSHcA48SJI0l///49SP7ewMBA6XjYbEUQQDoCSOabRIJPlyidFHQ1rktc7k0g4F0APCaGPVwKHhr8UwR5rjZgDtGMiE+T9U2w5uoajPllDIaWHaqvxnY+UMQrmWJyCjwPeS5lKdAjZWF0tJ8pJ6ag/+7+qJa5Gna22GkoAdTXANn3xpX9qCCAu2/vRrXl1aSwS/f73GeWH7jFxhbYdHYFQgQBVGx0TAjglStXUL16dXz48AH58+eX7npcuHBBIoO7du2SgkObrQgCSE8AzTbnxx4cQ5lFZZA2YVo86PvgJ/W52oA5BDciPiTF2uC9g9EgVwOsa7hOX43tfKBCv4Zi1ZVVOP34tJQCTo8fKNHRfnxf+CL37NyIEzMOAgcFRo2zRh7AT6GfpEwUpH+zF67sRwUBJD+6iswvIuUHZuUFtFw1ivcJggAmlBduyXodMCGAFo/f8uXLcf36dZCJzpUrF5o3b464cfn3/ES2MQgCGP0IoN9LPyy6sEh6vTqiwghBABV+MSN+oPbd2YfKyyojo1tG3Ol9R6E0yuoqPlCUPdptztUH3K62bCqQb0H6aenx8M1D7Gi+A9WzVI9csEYEkMR4bLqhqZSXenbN2WwGZZAUruxH5frac3uP9PBqYKmB+POXP6mQJLZVcUlFHLp/CO2zNcGCZqsleeIIWD6szAig/C7NUVMQQHoCKB2vPTwBF2cX+7k3TWAWXG3AHOIVER9yl5LcqSSFeH/c47rrp7XKD5SWCkZX++m0rRPmn5uP3sV7Y1r1aboSwC7/dMHcs3PRvWh3/OX5l5bTq7lsruyHYn09ffsUKROkpMZr7529qLKsiuTdvdn2PNKmDnuDIAigfGhVE8CtW7fK7sXLy0t2XV4qCgJITwDXXV2HRusboWSakjje/jgvU6taD642YNWj0K5hZPhkmp4Jd1/dxd6We1EpUyXtOo8o2c4Har3veumFepFURXQ5/pU+TAxf2esHJH1PJLg6IYHtC7bH+CrjdSOA5Og3zZQ0eBr8FD7NfFAjaw36wRgogSv7oSCArCAk1zhImCESX3Bk0YFA/LCc84IAykdYNQGMESOGrF7IfcDQ0FBZdXmqJAggPQG84H8BBecWlC77vhjIfyggEv6F3P8jaaIiC2DM1QbM02L5rktk+DRY2wAbrm3AhMoTMLD0QP20tvGBIkdHxDMZ9CEIZzqeQeFUhXXRK7raz5evX6Rg284xnKPGWYMjYHL6UGphKSkCwfMBz/XJSauhJXFlPwwI4Pmn5zFgzwApXaSHK33WMK7w0dAOrEXT8hTVBFCn8RnWDS2whilO0THrBUTygSYYm0DSKGhwENzi8Buck3yk4o2Oh89fP+Nu77vI4JbhJyRZ40MxVVw2jQwf8hJ89dXV6Fy4M9oVbKef3jY+ULcDb0uBgWM5x8LboW+l/9WjCPuxgbIGBHDQnkGSh6hZ3mZYUW+FHlOsaR+OZD/kR1jheYVx3v88amevjU2NN8nOGkQebuVNnvenhz2OhI9cQ6LlKYIARoE0LbByJ5CnelosoFSTU0lHMP92+BdFUxflabjhdLkVeAtZZ2aVNpWQYSGI4fSzh1sLfLgFRIViXOFjgwCuubIGTTY0QdFURfFvx39VjFRdE67wUTcEqlbko3/j5Q3kSJrjZzmMCSDpi6xnEvyZvEAnL9HNXhzNfsgJUfEFxUFeassNFfXv439RYXEFZHTPiJ3Nd4YLKO1o+MixV1qewowAkmDPhw4dwoMHD/Dp06dwupOUcGYrtMCabbxEXy0WUPnF5XH4/mHpFzj5Jc5rsaQFy5ssLy51vRSpmlrgwyseavTiCh8bBHDA7gGYfGIyuhbpquvLUK7wUTPBFG1CPoVI4WAevH6AJ/2fIEX8FOGlMSaAl55dQv45+aUfdOT6SfxYYffDzFwc0X5mn56N7j7dpWmZXn06ehWPmisQ8kfiCJLcwjWz1pTSC1pfK3BEfOzZKy1PYUIAz58/L6UPe/funZT1I3HixAgICADJEJIsWTLcuaNzCAh7qMn4Oy2wMrrgrooWC6jj1o5YcH4BRpQfgZEVRnI3ZotCloC1tmLWaYEPt4CoUMwWPiQtGDlmTxA77EqA5sUGASQeBBI6YqHXQrQt2FZzVSwdRHf7Id4e8hGfW2suOhXupCkBJFk/ll1aJmX1GVPpe4Rg3WZam44c1X6G7h2KccfGSaB1KtQJE6pMQKI4iX6ASB7zzDkzRwooTh58lEpbSvL+RdxLHBUfW9ZEy1OYEECSAzhbtmzw9vaGm5sbLl68KOWSbdGiBXr37o169eppsyI0lEoLrIaqaSZaiwVkCQbM+z2czts6Y965efit7G9RxqfSAh/NJtMAwVHh03dnX8z8dyYmVpmIviX76qNZFASQkFC3cW4I+RyCy10vI0+yPProo5GHXTflGXQ09shYDNs/TIoFSGIChiuMPYAM1OVOhKPuP+S4fuzRsfi//f+Hb/gWLm3gtJPTQLyEfoF+0nzUylYLK+utjPSHpKPiwz0BJKTv1KlTyJ49u0QAT5w4IeUFJv8fSQdHgkObrQgCSP8KmMz59YDrIMcx+ZLni/zuDyeGQQKKHrx3EEvrLEXL/C0j1So6bjBKpicqfP48/CeGHxiO5nmbY3m95UpEqq8bBQG0vEwnL0PJw6TI7nqq79R2y+huP2QvyDkrJ1xiuOD5wOfhH4UJAmjX7BzdfkjgePJoZ3OTzT8eeLTf0h4LLyxEotiJ8L+K/0O3ot2ifE3u6PhEZiC0PIWJB9DDwwPHjh2TvICEBM6YMQPVqlWTiF+hQoWko2GzFVpgzTZeom90XECWebI8VjnV4RSKpS4mCKAKA47Kfnz8fFBzZU3pB8C17tdUSFbRJAoCSC6ck1RUj9480v1hQHReX5YZzOudF1eeX8G8WvPQsXDH/yaWIQGcf3a+FPKlXs56DnH3zwJSdLQfkp6TPOSRM5fRER9ansKEAFatWhVt2rRBs2bN0KVLF5A7geThx7JlyxAUFCR5As1WaIE123ijMwEkRxCLLyzG1RdXMbzc8HD3T6znMTpuMErsOCp8XoS8QLJJySRRuoUDYhCnTMnY5dQV9gOMPzoeQ/YNQdl0ZXG47WHmBJAc8aedmhb+wf7Y2mQrfs3+q5ypMUUdYT/Cwx4RAVqewoQAnjlzBm/fvkXFihXx4sUL6dj36NGjyJIlCxYtWoT8+fObYoFZK0kLrOkGrKEHcP/d/bjofxFe2b2QOXFmM0Ij6Sw2YPUbcJYZWaRf8rta7ELVzFW1twFBALXHWEUPxPOabmo66a5XuHibjDyAu27tQvUV1ZEkbhLptbFeMR5VQKG4idh/1O8/isE2SQNansKEAJoEK0Vq0gKrqDNOKmu1wVRaWgmEBC6uvRitC7TmZLTK1dAKH+Wa8NnCFj4tN7XE8kvLMbL8SIyoMEL7AURCAIknktxFLJ22dJT3PLVUTNhPGLqTjk+SYjCWTV/2vzuYjAhgi40tsOLyCofI/RvRFoX9CALIpQdQy03TKNmCALJ5BELmz5KQ3dYLW6PmmfRLUkaRDCD5k+eP8vhXeADtz5CtD9Ssf2ehx44ekb8AtS9aeY1ICOCW61tQZ00d5PLIhavdriqXSdlCfMBtAMiAABKCT45/P4Z+hK27vJTTaFhzYT+CAAoCqNPyEwSQHQGcfHyylPOxUe5GWNNgjU4zKL+bGitqYOetnZHHJ7MSIzZg9Rswufg/+shoVM5YGe0LtZc/OWprRkIAh+wdgvHHxqNDwQ6Y7zVfrWTV7YT92IDuzRsgUVjsty/btiFmjRqAs43cwZGIGnd0HIbuG4oiqYrgdMfTqueJ14bCftTvP7zOKa1etDxFHAFHMQO0wNJOrBHttdpg/rn5D35d9asUCuZil4tGDM1mn+mnpZcyFBxpewRl0pWJsq5W+HAHiEqFuMInEgJoyUrzt9ff+uYl/o4nV/ionGNWzR6+fiiRcRKPcVHorwDJFvX48X/i06QBpk8HZMaQJY8/Ms/ILK1js181iQpjYT+CAEZEgJanCAIoCOAPBLTaYG4H3kaWmVmk2E7BQ4OjjOPE6uOiRM7bj2+RcFxCqcnLQS+ROG5iQQCVAGhVVyv7UaVOBAL4MXZMuI13kzIJkFA0keajVdWR/EZc4SNfbU1qXn1+FXm886D+NSesWws4ffsWvh8np7D/Xr9eFgkkr37JPVMS5/Fh34c/4shporxBQoX9CALIHQEkRknCwMydO1eKA+gohZZZmxEHrTaY0K+hcB3jKt3NudPrjpTIm5dCUlORFFUkN+nT/k9tqqUVPrxgQauHPXxISqebL29K6blIOidNSwQCeCTgHMotLodkrsng398fThaCoakS4YXbw0dHVbjoquriSvi7936keQN8p3s/k0DiCbx7V/ZxcND7ILjHdedifKyVEPYjCCB3BJAoRAJBHz9+HFmzZmVt84bJEwSQ3R1AMon5vPPh8vPL2N5sOzyzeho2rxE7JvH/2m5pi18y/mXhqlMAACAASURBVIJ9rfYJAkgxM/Y+UJuvb0bdNXWRN1leXOp6iaInGU0jEMA/z06VXgDbyvUsQypVFXv4UAk3YePjS8egVOvf7Gt+4ABQoYL9eg5eQ9iPIIBcEsD+/ftLuX/HjQtL6OwIRRBAtgTwyP0jiOcST3qBGdclLjcmMmjPICn9UI+iPTDTc6YggBQzY+8DRY7pUk5OCSc4ScftmnpqIhDAdnt7YtGFRfirxl/oXqw7xSjVN7WHj3rJ5mz5dcUKxGjRwr7yK1cCTZtGWo8EcZ96ciqa5mmKlAlS2pdl4hrCfgQB5JIA9uzZE0uXLpUCPxcpUgSurq7h9JwyZYrplp0ggGwJIK8GUGtlLWz32w7vmt7oUqSLIIAUEyXnA5Xjrxy48fIGtjTZIgUG16xE8giEENDYzrG1JZ42BiQHH83w4FHwwYNAxYr2NbPhAdx9ezeqLa8G9zjueNTvkfQj01GLsB9BALkkgCQDSFSF3LXZv3+/6dakIIDRgwCSO4AkN2yljJWQNYntKwxiA6bfgDtv64x55+ahX4l+mFxtsnb7gsgEoh22rCSHhuJbhgz49ugRYkQmk9zTtHEHkNwtLragmLR++xTvg6nVp7LSjEs5Yv+h33+4nFgKpWh5ingFHAX4tMBSzKlhTbXcYII/BWPR+UW49+qeth9+DdHTEh8N1dZNtBx8Vl5eieYbm6NwysI40+mMdroJAqgdtiwlb9yIbw3qA98iPASR8Qp45qmZ6LWzFxLFToSbPW9KD3wcuchZX448fntji4740PIUpgTw1q1buH37NsqVK4e4ceOC3M8w4rWdPUOR83daYOX0wVsdLRdQyKcQxB8bXxryi4EvkDReUt6Gb1cfLfGx27kJKsjB5/Gbx0gzNY2UAixwUKDNzCtUQ7YigC2W1sFzhGD0L6NRNHVRKrE0jeXgQyPftG03bvw5DmDatMC0aVGGgLkRcAOF5hXCu8/vMNtzNroW7Wra4ctVXNiPbaSiIz60PIUJAXz58iUaNWqEAwcOSITPz88PmTJlQvv27eHm5obJkzU86pG7ehTWowVWYXdcVNd6AWWYlgH3X9+3G3BZLzDOPjmLS88uoXia4tLjFHtFa3zs9c/73+Xik2VGFtwOuq3ti3ArAph8pKtEAM93Po8CKQoYBqNcfAxT0MiOrTKBnJw7AiXaD48y9Mubj29QZmEZKaoAubqxu+Xu/3IKGzkGjfsW9iMIYEQEaHkKEwLYqlUrPH/+HAsWLEDOnDlx8eJFiQDu3r0bffv2xdWr+ufdpF2LtMDS9m9Ee603mOrLq2PX7V2YV2seOhbuaMQQw/VpSQ3WrUg3zKo5y64+WuNjVwHOK8jFZ+3VtdJl/fLpyyNB7ATajMqKALoOA1zdPOA/wN9QoiAXH20A4VxqhPka6TkBA0sPjFRpS8q35K7JcbbTWaROmJrzwbFRT9iPIIBcEsAUKVJg165dyJ8/PxIkSPCDAN69exd58+ZFcHAwmxWgoxRBANk/Aum7sy+mnZqm/QMAmXbitcoL225ukx0aRGzAJtqAIxCKuoWbY3m95TItQ5tqwn5s4Bphvt7FAtoXbI/xlccjSbwk4Rp+Dv0sZf3oV7IfiqUups1kcShV2I+J9h+d7IeWpzDxABLSd+7cOSkQtDUBPH36NKpXrw5yRGy2Qgus2cZL9NV6g5l7Zi66bO+C6lmqY0fzHYZDZDmK3N9qPypmtB+OQmt8DAeEUgGu8IlAKLwbLUGr/K0oR0jXnCt86IbCvrXVfE3cOQKDT47CN3yTwvYUTFkQJNfv7ha7DQvhw37AyiUK+xEEkEsPYM2aNVGoUCH873//kwjgpUuXkD59ejRp0gRfv37FepLP0WRFEED2HsBjD46hzKIySJswLR70fWCoRZDL4/HHxJc+MiQ1WPL4ye3qIzZgdhvw6censeHaBlTOVFn6h3mJQABvDXlieKBgYT/yPICfg4JwNOg8+u3uJ+X2tZSxlcZiSJkhzE3FLAKF/bDbf8wy5/b0pOUpTDyAvr6+qFChAgoXLizF/PPy8pLu/QUGBuLYsWPInDmzvXFw93daYLkbkAyFtN5gXn14BffxYXk6Xw95jYSxE8rQSpsqhICQGGIe8TzwbMAzWa/VtcZHm5HqJ1UJPpbrAOSYb4HXAvZKWhHAEtPy4GTvy+z7UChRCT4KRZu/utV8EQLo4uYmRZG4FnANvi98ESdmHOm419FDvdiaSGE/ggBGRICWpzAhgEQpf39/eHt74+zZs5LXj3gEu3fvjpQpzZmehxZYM+7IemwwJPBytiTZ4BbHzVCI/j73Nzps6yC9Itzbaq8sXfTAR5YinFZSgs+uW7tQfUV1pE6QGg/7PpRFwBUN24pQ/G/7YAz3ND5NpRJ8FI3VESpHQgAdYVgsxyDsRxBALgnggwcPkDZt2kg3cfK3dOnSsVwHusgSBJD9EbAuEyezk147emHmvzMVPUgRGzC7DfjDlw9IPD4x3n95j8tdLyNPsjwyZ05mNREIWiZQnFQTBNDuRIj9h93+Yxdsk1Sg5SlMPIDOzs54+vQpkiULH4mdPP4g/19oaKhJ4PxPTVpgTTdgHR6B8ITJi5AXOO9/HqkSpJJNPsQGzHYD9lzhiR23dmBilYkYUGoAW/MQBJAtnlpLEwTQLsJi/2G7/9gF3AQVaHkKEwIYI0YMPHv2DB4eHuEgu3//PnLlyoUQsrhNVmiBNdlwJXX12GD8Xvph1ulZiBkjJiZVnWQqmPTAx1SARFBWKT4zTs1A7529FR3Dy8Xn1I39KJ6jUlh1EobK1VVuU83qKcVHM0V4FCwIoN1ZEfYjCGBEBGh5ChUB7Nevn6TP9OnT0bFjR8SLF++HfsTrd+rUKRDvIHkIYrZCC6zZxqsXASSJ2wvPK4wkcZNIKeHMlCpQbMBsN+CbL28i+1/Z4RLDRXqI4x437IEQbSGPB/JNyozLg+4KAkgLpl7tBQG0i7TYf9juP3YBN0EFWp5CRQArVgyLnXbo0CGULFkSsWLF+gEZ+fcMGTJgwIABUnxAsxVaYM02Xr0I4PvP7+E6xlVR+BXWWJIXwJuub5IyUVTLUk22eLEBs9+A88zOg5fvX2JT400okaaE7LmwVfHys8soNS0f3lreffj4AFWrRplajEmnMoQI+7EBkiCAdi1I2A/7/ccu6JxXoOUpVATQgk3btm0lL2DChMaF9WA9T7TAstZHD3l6bTDZZmaDX6Af9rbci0qZvh/T6THA732MOTIGv+3/Dc3zKssOoRc+OkLBtCs1+Dx68wgp46eEcwxnZrqsGdUYpSetRZq3ViLTpCFHFUC9esz6USpIDT5K+zBtfUEA7U6dsB9BACMiQMtTmBBAu5Zrwgq0wJpwyLrcASS41F9bHxuvbcS0atPQu0Rv3aFqvL4xSD5akmZqUOlBsvsXG7AJNuCNG/G1fn1J0RjW6jo5hf0XCUpvEAkU9mPDfgQBtLsPCfsxwf5jdxbZVqDlKUwIIHnkMW7cOOzbtw/Pnz+X4gBalzt37rAdtQ7SaIHVQUXmXei1wYw4MAKjDo9Ch4IdMN9rPvNx2BOYc1ZOXA+4jp3Nd4ojYHtgKfg7jf2Efg1F0IcgJI2XVEGPEaqGhuJT2tSI+fRZePJnqUZIIPEE3r1ryHEwDT7qQTFJS0EA7U6UsB9BACMiQMtTmBDApk2bSvcAW7ZsKQV+jnixv3dv/b08dleTnQq0wNL2b0R7vTaY9b7r0XBdQxRJVQSnO57WdajkDmL8sfHx9dtXPOmnLD2YXvjoCgjDztTis8NvB9ptbYfCKQvjn2b/qNfo4EHg+71km0IOHAAqVFDfj8qWavFR2Z25mgkCaHe+hP0IAsglAXRzc8P27dtRunRpu0ZslgqCAGoXCPpW4C1knZkV6RKlw93edxHDKdxhnaYmcvLRSZT8u6SUUorkAFbyCllswNpswCTVV+7ZuaXQQI/6PpKVlzkyTb6tXAmn5s3t28/KlUDTpvbrMa4h7McGoIIA2rU2YT/a7D92gee4Ai1PYeIBzJgxI3x8fJAzZ06OoVKmGi2wynrjo7ZeGwzxvj0LfoaUCfRPEzjr31nosaMHPLN6Ynuz7YqA1wsfRUpxVJkGH0LKCTkf/ctoDCs7TN2ohAdQHW48tBIE0O4s0Kwvu8IdoEJ0xIeWpzAhgMuXL8eWLVuwZMmScLEAzWxTtMCacezRYQF1/acr5pydg+HlhmNUxVGKpik64KMIkAiVafBZenEpWm9uLXmF7/S6o+5VMMk4lCED8Pgx8O3bz0MRdwBpplfbtoIA2sWXZn3ZFe4AFaIjPrQ8hQkBLFiwIG7fvg0SgJXE/nNxCX98eO7cOdOZFy2wphuwTplAjMaF2OjdV3cR2zk2UidMrUid6LjBKAGIBh+SGzj1lNQIfB+IbU23oVa2Wkq6xrvP7xA3Zlw4bdoENGgQ1taaBIpXwIrw1L2yIIB2IadZX3aFO0CF6IgPLU9hQgD/+OMPm+YzYsQI05kXLbCmG7DOBPCC/wX83/7/g2ssV6xpsMYUcEXHDUbJxNDiM2D3AEw+MVnV8XxPn544dP8QplSbgsoX3gC9eoV5Ai0lbVpg2jTDQsAQNWjxUTIXpqsrCKDdKRP2Yxui6IgPLU9hQgDtWq4JK9ACa8Ih6/qBuvTsEvLPyY+EsRMiaHCQrg9B1M5NdNxglGBFiw95HESChJOHOeRxEDkOllP8g/2RaXomvP/y/r/g4m/eAIkShTUXmUDkwGh4HVr7MXwAGisg8BEEMCICtDyFGQF89eoV1q9fLx0FDxw4EIkTJwY5+k2ePDlSp1Z21KbxOpIlnhZYWZ1wVknPDeZz6GckGJsAH0M/4lbPW8icOLPmaKy8vFJKAdc4d2M0yPX9mFBBr3rio0AtbqqywGfqialSdph8yfPJHlfvHb0x498ZKJ66OE60PxH2stvKo4TgYMDVVbY8rSqywEcr3XiQK/ARBIfGDqOj/dDyFCYE8NKlS6hcuTISJUqEe/fu4caNG8iUKROGDx+O+/fvY+nSpTTzakhbWmANUZqyU70XUJF5RXD26Vmsa7hOFSFTOtx2W9ph0YVFqh6AkL70xkfp+IyubwQ+NwJuIK93Xnz++hl7Wu5B5UyVw2AQBNBoc1DcvxH2o1hJAxsIfARB5tIDSMhfoUKFMGHCBCRIkAAXL16UCODx48fRrFkziRSarQgCqF0cQIstdNzaEQvOL8CwMsMwutJozU2EHDmTo+fNjTejdo7aivsTG7C+G/Dpx6eRP0V+xHKOFWnHJJxQ1WVVse/uPtTIUkMK6/MjrqMggIrt2+gGYn3pu76Mnm/W/UdH+6HlKUw8gMTzR457M2fOHI4AEu9f9uzZ8eHDB9Zzrbk8WmA1V1CDDvReQLNPz0Z3n+6onqU6djTfocGI/hNJMoCQI+fQb6FSsGGlL4CFB9D+9LC0n8nHJ2PQ3kEYUHIAxlcZH2nnk45PwsA9AxEnZhxc7XYVmdwz/VdPEED7E8ZZDZb2w9nQmKgj8BEEmUsPILnnt3PnTpBwMNYewN27d6N9+/Z4+PAhkwWgpxBBALX3AJ55cgZF5xdF4riJETAwQFFWDqW2cOT+EZRbXA4p46fE436PVfUlNmD9NuCN1zai/tr6Uofzas1Dx8Idf+q887bOmHduHubUnIPORTqH/7sggEqXiOH1xfrSb30ZPtkaKBAd7YeWpzDxAHbq1AkvXrzA2rVrpccf5E6gs7Mz6tSpg3LlymEaCb9gskILrMmGK6mr9wL6FPoJKSenRJ5keaRjWfe47prBNuHYBAzeOxj1c9bH+kbrVfWjNz6qlDSwEWt8hu4dinHHxkkj6l60O/qU6IMkcZP8sBMS03Gd7zo0zNXwZ0IvCKCBlqCua9b2o04LflsJfARB5tIDSMiSp6cnrl69irdv3yJVqlTw9/dHyZIlpRRxrhy8wFO6rAUB1N4DSOaE3OPSIxdwndV1sOXGFkyuOhn9SvZTag6GEGRVShrYiPUHihC8ofuGYvyx/46A3eO442Hfh1L8SJtFEEADLUFd16ztR50W/LYS+AgCyCUBtCi1f/9+6S7g169fpUch5HGIWYsggPoQQL3sw2uVF3be2onDbQ+jRJoSqroVG7AxG/CuW7sw+shoKVfwN3zD8rrL0ThPY0EAVVkxv43E+jJmffFrEco0i472Q8tTmBwBK5smc9SmBdYcowyvpZELKORTiH2vDiWoJN1YzBgxpX/UFCPxUaOv3m20xufL1y/SkGTNn/AA6j391P1pbT/UChosQOAjCDJXHkDi8evRowdOnjyJhAkThtPt9evXKFWqFObMmYOyZcsavHSUdy8IoD4ewNcfXqPUwlLwe+mHV0NeIZ5LPOWTpVMLsQGbaAMWBFCnVcGuG7G+TLS+2E07M0nR0X5oeQqVB9DLywsVK1ZE3759I53EGTNm4MCBA9hEErSbrNACa7LhSuoasYDIPa80U9PgydsnONzmMMqmZ/9jIfRrKJxjOFNPiRH4UCutowCu8BEEUMeZZ9MVV/bDZkhMpQh8BEHmygOYPn16KfxLzpw5I52Z69evo2rVqnjw4AHThaCHMEEA9fEAkrmst6aelKJtYpWJGFBqAPPpLTS3kCRzYe2FKJCigGr5YgM20QYsCKBqOzeqoVhfJlpfRhmJjX6jo/3Q8hQqD2CcOHFw5coVZMmSJdJpuXXrFvLmzYv3799zaC62VaIF1nQDNsgDSHCyhGipl7MeNjTawBQ6csTsPt5dejzwpN8TpEyQUrX86LjBKAGLK3wEAVQydVzU5cp+uEAkvBICH0GQufIAkswfkyZNQt26dSOdmY0bN2LAgAG4c+cOh8tJEMCICBi1wRx7cAxlFpWBRzwP+A/wDwsLw+gDvu3GNnit9kJm98y41esWlR0ahQ+V0jo25gofRvbDEj6u8GE5MEayBD6C4NCYUnS0H1pHFZUHsGfPnjh48CBOnz4N4g20LsTrV6xYMemOILkLaLZCC6zZxkv0NWoBkYDQxEv37vM7XOpyCXmT52VGAPvs7IPpp6ajU6FOmPvrXKppMQofKqV1bMwVPoIA6jjzbLriyn7YDImpFIGPIMhceQCfPXsmxfsjWT/Ia2CS95ckY7927RpmzZqF0NBQKS4gSRVntiIIoH53AIltVF9eHbtu78K0atPQu0RvZgQwr3deXHl+BWsarEGj3I2ozFBswCbagAUBpLJ1IxqL9WWi9WWEgdjpMzraDy1PofIAkvm4f/8+unbtil27doG86CSFkMBq1aph9uzZyJAhA4emYl8lWmDt98BfDSMX0IJzC3D0wVG0yt8Kv2T8hQkBfBb8DCkmp5CAfj7gOTxcPahANxIfKsV1aswVPoIA6jTr7Lrhyn7YDYuZJIGPIMhceQCtlQkKCgJ59EFIYNasWeHurl1eV2YryoYgQQD19QD+NBUMPuCrLq9Cs43NpJe/5zufpzYbsQGbaANmYD/UBhNBgLAfE9kP68lnIE/Yj7AfbgkgA/uWRBw+fBgTJ07E2bNn8fTpUymGYJ06dSIV37lzZ8ybNw9Tp05Fnz59pDr37t1DxowZI62/du1aNGzYUJaqggCanwASj6L3GW/k9siNYWWHyZp3W5XEBmyiDVgQQGp711uAWF8mWl96G4eM/qKj/dDyFOojYBnzoqjKjh07cOzYMeluYf369aMkgJs3b8bIkSPx4sULDBw48AcBJPcOyf9nXQhJnDBhAvz9/RE/fnxZ+tACK6sTzioZvYC+fvuKi/4XQVJ+FXXLBVjmKjgYcHU1HC2j8TEcADsKcIWPIIC8m8tP+nFlPxyiJ/ARBNnhPYDWAyR3CSPzAD5+/BjFixeX7h3WrFlTIn8WD2BkJlKwYEGJUP7999+yl7UggPp7AGeemoleO3uhWuZq2Fl3gyCAsq2Vj4pcfaAEAeTDKBRowZX9KNBbr6oCH0EAoz0B/Pr1KypXrozatWujd+/e0iMTWwSQHCUXKVJE8iqS3MRRlY8fP4L8YymEAKZNmxYBAQE/5TnWa8Hr3Q/ZYPbs2YMqVarAxUV/Auj7whcF5hdALOdYeNrxFhKnSCdB8DkoSLEH8MSjE4gfKz7yeOSRHiWxKEbjw2IMWsrgCp+QELh8v4esxn60wIkrfLQYIKVMgY99gmPk/kw5vZo3j472Q3hK0qRJ8fr1a1U8hbsjYHsewLFjx0r5hYn3j3zY7RHAbt26SbEKfX19bRogOU7+448/fqqzcuVKxIsXT3PjFR1AekDU/Xp3PPn4BMNS9sboztMlWP5ZvRqhEeJM2sNr8M3BuPHuBnqm7YlKSSrZqy7+7mAIOH/4gFpNmqi2HweDQwxHICAQcEAE3r17h2bNmkUPAki8eeTIl8QWTJUqlTSdtgggCUadMmVKDB8+HP3797c5/cIDGBYI2uhfmEP3D8Xkk5PRKlN9LGkVlhZOqQfnydsnyDAzLPzQ3Z53kTpBaiZLnwd8mAxEIyFc4SM8gBrNsnZiubIf7YapWrLAxzZ00RGfaOUBnDZtGvr164cYMWL8sATy6IP8NzmuJS+ArcuyZcvQvn17kDuDHh7KYsCJO4D6HwGTuTvx8ARKLSyFFE4J8HTE27DpVPgIxPu0N7r5dEPx1MVxssNJ1RtuxIbiDo79DdjHxweenp6GXCEIp524A8jM7vUSJNaXidaXXkahoJ/oaD+0PMVUR8AvX76UQsNYFxJwumXLlmjbtq2UicS6VKhQQTofX79+vQIzCqtKC6ziDjlowMMCIi+BU01OhbdBzxAy5jsoCglg1WVVsefOHoyrNA6DywxmhiwP+DAbjAaCuMJHEEANZlhbkVzZj7ZDVSVd4CMIckQEaHkKdwQwODhYCihNCnm9O2XKFCmfcOLEiZEuXdijAOsS1REwkZEtWzYQj0T16tUVLzhaYBV3yEEDXjaYzts6Y/nJeaoIYND7ICSblEwKJXOjxw1kS5KNGbK84MNsQIwFcYWPIICMZ1d7cVzZj/bDVdyDwEcQQIcngOTBBiF8EUvr1q2xePFi2QRw2LBhIEfAJFWd9ZGx3FUnCKAxR8Bkfkju3pcvHqB8npph06XAA2g5/s2XPB8udrkod7pl1RMbsIk2YEEAZdk0T5XE+jLR+uLJcL7rEh3th5ancOcB5MWuaIHlZRxK9OBqAan8gHuu8MSOWzswpeoU9C3ZV8nw7dblCh+72upfgSt8VNqPlqhxhY+WA1UpW+AjCKBK05GaRUf7oeUpggBGYXG0wNIYslFtuVpAKj/gn0M/Y+etnSiRpgQ8XJU9/LGHO1f42FPWgL9zhY9K+9ESNq7w0XKgKmULfAQBVGk6ggA6YhxAGmOgbSsIoHFHwGTuvgUHwylBAmkabz+4iMxp89FOKXV78YEy0QdKEEBqe9dbgFhfJlpfehuHjP6io/3Q8hThARQewB8IcLWArD7gAzZ2waS63ja3gFcfXkkZROK5aBe0myt8ZGyIelfhCh9BAPWefur+uLIf6tGwFyDwEQQ5IgKCALJfZ5JEWmA1UktTsVxtMFYf8CS/x8al/reROmHUAZ17+vTE+mvrMdtzNurmrKsJTlzho8kI6YRyhY8ggHSTaUBrruzHgPHb61LgIwigIID2VgmjvwsCaOwRMKw+4K7DgOYlOmLer/Mind1bgbeQe3ZufAr9hH2t9uGXjL8wsoLwYsQGbKINWBBATdaAlkLF+jLR+tLSEFTKjo72Q8tTxBFwFMZGC6xKGza0GVcLKAIBfBcLONj6IMpnKB8OIxI4utLSSjh47yCqZa6GnS12aoYhV/hoNkr1grnCRxBA9RNpUEuu7McgDGx1K/ARBFl4AHVamIIA8uMB7LG2DWb5LpZy+pLUbmkSpvlhBcP2DcPYo2Olu39Xul5BRveMmlmI2IBNtAELAqjZOtBKsFhfJlpfWhkBhdzoaD+0PEV4AIUH8AcCXC0gqw/4m5dPUGJVJdx/fR9nO51FjqQ58PTtU4w8OBLzzoUdCy+pswSt8rei2D7sN+UKH/vq6l6DK3wEAdR9/mk75Mp+aAejQXuBjyDIwgOowcKKTCQts9ZJTabdcLXBvHkDJEoUNj4fH9wvlh1nnp1H/Vz1pf9r241t8FrtBSc4YXzl8RhYeiBTLCITxhU+mo9WeQdc4SMIoPIJNLgFV/ZjMBZi/1E+AdHRfmh5ivAACg8gfx7AjRuBXr2Ax4//m500aYDp04F69aT/L/RrKJpvbI72BdujSuYqyncLFS2i4wajBCau8BEEUMnUcVGXK/vhApHwSgh8hAdQeAB1Wpi0zFonNZl2w8UGQ8hfgwbAt2/hx+bkFPbf69f/IIFMBy9DGBf4yNDTqCpc4SMIoFFmoLpfruxH9Si0ayjwEQRQEEDt1lc4yYIAGvAIJDQUyJABePQo8lkmJJB4Au/eBZyddbKE/7oRG7CJNmBBAHVfH7QdivVlovVFO9katI+O9kPLU8QRcBSGSAusBvatuUjDF9DBg0DFivbHeeAAUKGC/XqMaxiOD+PxsBbHFT6CALKeXs3lcWU/mo9WeQcCH0GQhQdQ+bpR1UIQQAM8gKtWAc2a2Z+vlSuBpk3t12NcQ2zAJtqABQFkbP3aixPry0TrS3tzUNxDdLQfWp4iPIDCA/gDAcMXkPAAKt70eGpguP1YgyEIIE+mIUsXruxHlsb6VhL4CIIsPIA6rTlaZq2Tmky7MXyDsdwBJK9/Iz4CISMVdwCZzjdrYYbbjyCArKdUV3lc2Y+uI5fXmcBHEEBBAOWtFepaggAacARMZs3yCpj8uzUJFK+AqW1aawHiAyU+UDQ2JuxH2I+wH2UI0PIUcQQcBd60wCqbRj5qc7MBRxYHMG1aYNo0w0LAkBniBh8+zOUnLQQ+4gNOY5rCfoT9CPtRhgAtTxEEUBDAHwhwtQFHyASCqlUNCf1ibR5c4aNsn9CltsBHfMBpDE3YxWBBSAAAHl1JREFUj7AfYT/KEBAEUBlesmvTAiu7I44qcrUBi0v8HFmGPFW4sh95KutaS+AjCA6NwQn7EfYTEQFaniI8gMIDyKcHUBBAmm+FIW3FB0p8oGgMT9iPsB9hP8oQEARQGV6ya9MCK7sjjipytQELAsiRZchThSv7kaeyrrUEPoLg0BicsB9hP8IDSLOCFLQVBNCgV8CWORIEUIG18lFVfKDEB4rGEoX9CPsR9qMMAVqeIo6AxRGwOAKWuebEB0p8oGSaSqTVhP0I+xH2Q4OAsB/hAdTOfsJJpmXWOqnJtBuuPlDCA8h0bvUQxpX96DFghX0IfMQHXKHJhKsu7EfYjyCANCtIQVtBAMURcERzERuw2IAVbCE/VRX2I+xH2A8NAsJ+BAHUzn6EB/DzZ/j4+MDT0xMuLoIACgKobLEJgiM+UMosJnxtYT/CfoT9KEOA1lEl7gBGgTctsMqmkY/aXG3A4giYD6NQoAVX9qNAb72qCnwEwaGxNWE/wn6EB5BmBSloKwig8AAKD6CCBSNS5dkFS3zAxQfcrpHYqCDsR9iPIIA0K0hBW0EABQEUBFDBghEE0C5Y4gMuPuB2jUQQQNUQRcf1RctTxBGwOAL+gQBXC0gcAaveCI1qyJX9GAWC+ICrRl7YjyDIqo0nmv4AFQSQxmJstKUFViO1NBXL1QYsCKCmc62FcK7sR4sBUsoU+AiCQ2NCwn6E/YgjYJoVpKCtIIDiCFgcAStYMNH0F7gShMQHXHzAldiL2H+UoRUd1xctTxFHwOIIWBwBy9xnouMGIxMaqZrARxAcJfYiCI4ytMT6EutLeACVrRnVtWmZteqODWzI1QYjjoANtAR1XXNlP+qGoGkrgY/4gNMYmLAfYT+CANKsIAVtBQEUR8DCQ6FgwQgPoF2wxAdcfMDtGomNCsJ+hP0IAkizghS0FQRQEEBBABUsGEEA7YIlPuDiA27XSAQBVA1RdFxftDxF3AGMwtxogVVtxQY25GoBiSNgAy1BXddc2Y+6IWjaSuAjCCCNgQn7EfYjPIA0K0hBW0EAhQdQeAAVLBjhAbQLlviAiw+4XSMRHkDVEEXH9UXLU4QHUHgAfyDA1QISHkDVG6FRDbmyH6NAEB9w1cgL+xEEWbXxRNMfoIIA0liMjba0wGqklqZiudqABQHUdK61EM6V/WgxQEqZAh9BcGhMSNiPsB9xBEyzghS0FQTQ4CNgBXOlV1WxAYsNmMbWhP0I+xH2Q4OAsB9BALWzn3CSBQEUBDCiqYkPuNiAabYfYT/CfoT90CAg7EcQQO3sRxDAz5/h4+MDT09PuLgIAigIoLLFJgiO+EAps5jwtYX9CPsR9qMMAVpHlXgEEgXetMAqm0Y+aosNWGzANJYo7EfYj7AfGgSE/dCgFx33H1qeIgigIIA/EIiOC0jJhiPwER8oJfYiPMjK0BLrS6wvZRYjPMiCANJYjI22tMBqpJamYsUGLDZgGgMT9iPsR9gPDQLCfmjQi477Dy1PER5A4QEUHkCZu0503GBkQiNVE/iID7gSexEeUmVoifUl1ldEBAQBVLaGZNemBVZ2RxxVFBuM2GBozFHYj7AfYT80CAj7oUEvOu4/tDxFeACFB1B4AGXuOtFxg5EJjfAAygBK2I8gODLMJMoqwn6E/QgPIM0KUtCWllkr6IqbqmKDERsMjTEK+xH2I+yHBgFhPzToRcf9h5anCA+g8AAKD6DMXSc6bjAyoREeQBlACfsRBEeGmQgPoEqQouP6EgRQpbHYa0YLrD35PP49Oi4gJfMg8BEfcCX2ErGusB9hP8J+aBAQ9hMRAVqeIjyAwgMoPIAy9yTxARcbsExTibSasB9hP8J+aBAQ9iMIoHb2E04yLbPWSU2m3YgPlNhgaAxK2I+wH2E/NAgI+/n/9s4E2qbqj+MbmWUsQ+bIEGWIZE5lzAoJpRAyl6lShkTJWIYGsxAZCslYGk3JlCSJjBmbE5Ey/Ndn/9d5677r3vfufc959zz3+1vrrXLvOfvs/dm/s/f3/H57n5sYetE4/iRWpygCqAigIoAhjjrROMCEiMYeJj6awMPxF/9j5T/yH/lPeAQkAMPjFfLRiQUb8oU8dKAGYA3AiXFH+Y/8R/6TGALyn8TQi8bxJ7E6RRFARQAVAQxx1InGASZENIoAhgBK/iOBE4KbBD1E/iP/8ScgAZiYOyqOcxML1qVquVqsBhgNMIlxMPmP/Ef+kxgC8p/E0IvG8SexOkURwCAed/LkSZM1a1Zz+PBhkzlz5sT4ZbI5lxto1apVpk6dOiZ16tTJpt5JVVHxiX+Ckv8EZyT/kf8kZqyS/8h/AkUA8+fPb/7880+TJUuWsN1LAjAIsiNHjhjAykRABERABERABETAqwQIVOXLly/s6kkABkF28eJFc+zYMXPttdeaFClShA02OZ5AOBnRG01Rz3D6SXzipiU+4hPO/RQsmqHxJzBF3V+6v/wJXLp0yZw6dcrccMMNJmXKlGHffhKAYSO7ek9I7HqCq5fM/1smPvEPwKQhWD4RLcsmwvF5+Y/8Jxx/CSSQdX8FJ6j7K3zvkgAMn9lVe4ZuIE1QiXFu+Y/8R/6TGALyn8TQ0/gTPj0JwPCZXbVn6AbSAJwY55b/yH/kP4khIP9JDD2NP+HTkwAMn9lVe8a5c+fMsGHDTN++fU3atGmv2nYmtGHiEzc58RGfhN5bnCf/kf/IfxJDIPxzJQDDZ6YzREAEREAEREAERCBZE5AATNbdp8qLgAiIgAiIgAiIQPgEJADDZ6YzREAEREAEREAERCBZE5AATNbdp8qLgAiIgAiIgAiIQPgEJADDZ+bZM8aPH29GjRpljh8/bkqVKmXGjh1rqlevHrS+q1evNr179zY7d+60L5Ls06eP6dy5c6zjFy5caJ577jmzb98+U6RIEfPSSy+ZJk2axDrm6NGj5plnnjErV640Z8+eNcWKFTPTpk0zt912m6dYRYLP+fPnzaBBg8zbb79tTpw4YfLkyWMeffRRM2DAgAS9uNNNoFeaD341cOBAs3XrVnPo0CEzZswY07Nnz8uaEO513WQQV9nh1jO++ysUPmzKWrRokfn+++9N+vTpTZUqVcyIESNM8eLFI4Uh6HUjwce3MrDq16+f6dGjhx37vGaR4hOt43Mo91dyGp/d8GcJQDeoRqDM+fPnm1atWhkGmapVq5pJkyaZqVOnmu+++84UKFDgshodOHDAlC5d2nTo0MF06tTJrF+/3nTt2tXMnTvXNG3a1B6/YcMGKyBffPFFK/ree+89O6GvW7fOVKpUyR7zxx9/mHLlyplatWqZLl26mJw5c1qxWKhQISsYvWKR4oNgRvjMnDnTivItW7aYtm3bmiFDhtiJyivmBp/Nmzebd955xz4I9OrVyz4k+AvAcK8bKV7h1jOU+ysUPvXq1TMPPvigqVixomGy6t+/v9mxY4e9rzNmzBgpHJddN1J8nIrAsnnz5vYF5IxFXhOAkeITzeNzKPdXchmf3brRJQDdIpvE5SLIypcvbyZMmBBz5ZIlS5rGjRvbV7v4G5PxkiVLzK5du2K+Ivq3fft2K/ywFi1a2F+/ILLnGBNStmzZrFDEnn32WSse165dm8QtDu9ykeLTsGFDkytXLhsRdQyBnSFDBjNr1qzwGuHi0W7w8a0uDwSIP38BGO51XUQQZ9Hh1jOU+ysUPv6V+uWXX+xDFtHFGjVqRArHZdeNJJ/Tp0/bsY+HXx6sypYt6zkBGCk+0Tw+h3J/JZfx2a0bXQLQLbJJWO6///5rBcW7774bKz1LhOnrr7+2k4W/MXkQuRs3blzMV0T4eIo+c+aMSZ06tY0cErnhzzGiWTxdk9LDbr75ZlO3bl1z5MgRe528efPaSCKRRa9YJPkMHz7cTJw40axatcqmxhHYderUsQwfeughTyByi098A3BCrhsJYAmpZyj3V3x8ArV179695qabbrJRQCL4XrBI82nTpo3Jnj27jbTfeeednhOAkeQTzeNzKPdXchif3bzHJQDdpJtEZR87dswKLyJxrBFybOjQoTb1uHv37stqghhhLRprZhz74osvbPqY8lirliZNGjNjxgzTsmXLmGPmzJljU5i8tBVLly6d/S9rCZs1a2Y2bdpkozykoFu3bp1EBOK+TCT58GPdMGbdVqpUqcyFCxfsOkpetu0Vc4tPfANwQq4bCWYJqWco91d8fPzbii81atTILrvwUsQ9knzmzZtno34srWAs8qIAjCSfaB6fQ7m/ksP47OaYJwHoJt0kKtsZYBBwlStXjrkqQoM0IwvI/Y0JCiHnK0QQkNWqVbObSHLnzm0FIALSN1LFZob27dubf/75xxbJMRUqVDBc27Hu3bsb1l84qeQkwhD0MpHkwwT19NNP2805rAEkIotAHj16tCFy4QVzi098A3BCrhsJXgmpZyj3V3x8/NvarVs3s3z5crsGN1++fJFAEfCakeJz+PBhO/YQXS9Tpoytm5cF4JUen0Pxn2gen0PhkxzGZzdvdAlAN+kmUdlupRhCSQEXLFjQ1K5d2244cYx1iDyVs/vMCxZJPvnz57frJJm8HYPN7NmzAwrzSPByi098A3BCrhtNfHzb+sQTT5jFixebNWvWmMKFC0cCQ9BrJqQfr0SKHB5sTiOy7hgR9hQpUtgd9mQpfL+LFLRI8aG90Tw+xzf+8H1yGJ/d9FsJQDfpJmHZLDJmtyULoR1j/Qcpo2CbQJYuXWp3EzrGLl4iVL6bQE6dOmVWrFgRc0z9+vVN1qxZYzaBkB7mSdw3JcWawY0bN8aKCiYhioCXihSfHDlyWDEMW8foj+nTp5s9e/ZEGkvM9d3gE8oAHO51IwUs3HqyCSS++ysUPqSoEH+sz/3888/t+j8vWiT4MDY5a5EdJmQ1SpQoYXece2WNJHWLBB+uG83jcyj3V3IZn9265yUA3SKbxOU6rxlgwwFp4MmTJ5spU6bYd/zxFEiql4jcW2+9ZWvmvKaCV8CwYQPRxy5g39fAkLLgSZ1UMkLy/ffft++v830NDKle1h0OHjzYbiBhDSDlcf2HH344iSkEv1yk+LDO8uOPP7ZrIkkBb9u2zXTs2NG0a9fOrgv0irnBh8iH84DRoEED6w/8ZcqUyRQtWtQ2Pb7rRjsfNlSx7pZ7z/fdf1myZLHvBfSKxdePCRl/QvEf//Z7MQUcip+7xSeax+dQ/Ce5jM9u3ecSgG6RjUC5RP9Gjhxp1/Dx9MuuOOdVETj6wYMHbRTBMXbtEq1zXgTNU7P/i6AXLFhgRd/+/ftjXgR9//33x2rdsmXLrMD84YcfbHqKDSFe2gXsVDYSfIhS8CJtIjg///yzfeE2ayp5nyLrc7xkV5oP/hYoXVmzZs1YfhjXdaOdD+nMQEYEmXvaSxYp//Fl4FUBSB0jxSdax+dQxp/kND67ca9LALpBVWWKgAiIgAiIgAiIgIcJSAB6uHNUNREQAREQAREQARFwg4AEoBtUVaYIiIAIiIAIiIAIeJiABKCHO0dVEwEREAEREAEREAE3CEgAukFVZYqACIiACIiACIiAhwlIAHq4c1Q1ERABERABERABEXCDgASgG1RVpgiIgAiIgAiIgAh4mIAEoIc7R1UTAREQAREQAREQATcISAC6QVVlioAIiIAIiIAIiICHCUgAerhzVLWrk8CV+LWCQYMGmcWLF9vfbg5m/FLEn3/+aY8LxwoVKmR69uxp/7xmJ06cMK1atbK/M506dWrbvuRiCe0P3/ZdiTLc5DVjxgzrN8mpX8Lhwc+L8RvrM2fONFWrVo3z1HPnztnfbuZXgPiddpkIeI2ABKDXekT1ueoJeEUABpusf/nlF5MxY0aTIUMGz/UFP1e4fPlyO6nye7j81nCtWrXMH3/8YbJmzeq5+vpW6OTJk+bSpUsx9UyIH3hJAAZ6UHBLACaElRvO8Prrr1vf++STT0Iq/tVXXzVLliyxvwcuEwGvEZAA9FqPqD5XPYErMZldiQigW5O1mx34wAMPWHFKBAbjt62vhABEmF24cMFcc801blY/VtkJ8QMJwLFB+ycp+rB48eKGe4/f8w7FfvvtN/v730TqS5YsGcopOkYEkoyABGCSodaFROD/BJj4b731VpMuXTozdepUkyZNGtO5c2c7sTj2448/mieeeMJGGlKmTGnq1atnXnvtNZMrVy57iL8ARLw8/fTT5s033zSpUqUy7du3Nz/99JMh6hQoBewIJ98+ef755225/pGdFClSmIkTJ5qlS5eaTz/91BQsWNBe5/rrrzePPfaY2bx5s23P7NmzTZEiRWKK5HjK27lzp50E27RpY/r37x9UZFFOv379zLZt28x///1nypYta8aMGWPKly9vy6Rehw4diimf8hwh6HzIZwhbxMCoUaNsvY8fP26KFStmnnvuOYOA9BWOH3zwga3TN998Yz788EMrJn2NlF/v3r3NwoULbZQxd+7cplOnTqZv377mySefNHv27LFcsLFjx5pevXqZZcuWmXvvvdd+hmDgfM7xFW/8v3/dDxw4YNsIrz59+pi1a9fadsCBNsHWKaNatWrmlVdeMdTvwQcftNcmJR7MJkyYYF5++WVz+PBhU7hwYTNgwACbSneMPp4yZYqNrsIhb968tvz77rsvYJH48OrVq2N9R12dh4r58+fbVDDXo67Tp083efLkiTmef48cOdI4be7evbvp2rVrwGsFY3Xw4EHbX/59WKBAAcv8yy+/NH///bcVXsOGDTP33HNPTPlw5h7ZtWuXjdBlzpzZ9in3XDD76quvTMWKFa0fcDwWl3845VDH6tWrmxdeeCFo2fpCBCJBQAIwEtR1zagmwOSJyGGSatmypdmwYYOd2Jl4a9eubSd91gwR6WJiP3/+vJ0cr732WhvxwvwFIJPp0KFDzbRp0+waJSbvd955x9x1110BBSATF6Jg4MCBZvfu3bbMTJky2b9AAhBBMHr0aCtGSMMS0bjxxhutUGHCbdeunU1trly50pZFW5o3b25IgTH57du3z3Ts2NG2E6EZyBCXx44di1kvRRsQUz/88INtO6np1q1b28l33LhxJn369FYgN23a1LaBz/mM1DCibtGiRZYf67DWrFljRTb1qlmzZkzkEOGKMKIt1D9HjhyxqsZ3tOHtt9+27UTQ8EcECOGHiPr999+tSG/SpIlZt26dadu2rRU3rFdE9CAySpQoEUsAIszr169vSpcuHSMMENScQ53wEQQJbVq/fr2pUqWKFZPwIwWJ3/To0cPs3bvXtGjRwrazQ4cOAblyvHMMIgim9NtHH30UI3gRgPny5bP1RuTwsIHIR3Bnz579snJpc5kyZWyfOtdFHCMA+QzGiC64PPLII6ZcuXKWIYbQxAdIp/I59wJl4F8IeH8LxgqBjLjy78MjR45Y8QczHrIQ2vgSPkIfYvg4beCB4/7777d+gXjHf7kHAxmMJ02aZPvTsbj8wzmG+2XTpk3ms88+i+pxT433HgEJQO/1iWp0lRNgcidixwTm2O23327F2vDh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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 286.0152 ± 2.5433 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 145, 1e2, 0.1]))\n",
"freqdata = np.linspace(0.005,19e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.6"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
" 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
" 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0008\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7sXQf4FTX2PT+aqKCoqKuIYMFekV3EAqIiig3FtYAKKmJvWMCCjRU7oK4NV8GyCJYFFXGRP1WxUO0FURAVG4Koiyjt/50XRx6PVzJJZibz3s33+e3qL5PJObmZnJfk3lu1cuXKlZAiDAgDwoAwIAwIA8KAMFAxDFSJAKyYsRagwoAwIAwIA8KAMCAMZBgQASiGIAwIA8KAMCAMCAPCQIUxIAKwwgZc4AoDwoAwIAwIA8KAMCACUGxAGBAGhAFhQBgQBoSBCmNABGCFDbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMVxoAIwAobcIErDAgDwoAwIAwIA8KACECxAWFAGBAGhAFhQBgQBiqMARGAFTbgAlcYEAaEAWFAGBAGhAERgGIDwoAwIAwIA8KAMCAMVBgDIgArbMAFrjAgDAgDwoAwIAwIAyIAxQaEAWFAGBAGhAFhQBioMAZEAFbYgAtcYUAYEAaEAWFAGBAGRACKDQgDwoAwIAwIA8KAMFBhDIgArLABF7jCgDAgDAgDwoAwIAyIABQbEAaEAWFAGBAGhAFhoMIYEAFYYQMucIUBYUAYEAaEAWFAGBABKDYgDAgDwoAwIAwIA8JAhTEgArDCBlzgCgPCgDAgDAgDwoAwIAJQbEAYEAaEAWFAGBAGhIEKY0AEYIUNuMAVBoQBYUAYEAaEAWFABKDYgDAgDAgDwoAwIAwIAxXGgAjAChtwgSsMCAPCgDAgDAgDwoAIQLEBYUAYEAaEAWFAGBAGKowBEYAVNuACVxgQBoQBYUAYEAaEARGAYgPCgDAgDAgDwoAwIAxUGAMiACtswAWuMCAMCAPCgDAgDAgDIgDFBoQBYUAYEAaEAWFAGKgwBkQAVtiAC1xhQBgQBoQBYUAYEAZEAIoNCAPCgDAgDAgDwoAwUGEMiACssAEXuMKAMCAMCAPCgDAgDIgAFBsQBoQBYUAYEAaEAWGgwhgQAVhhAy5whQFhQBgQBoQBYUAYEAEoNiAMCAPCgDAgDAgDwkCFMSACsMIGXOAKA8KAMCAMCAPCgDAgAlBsQBgQBoQBYUAYEAaEgQpjQARghQ24wBUGhAFhQBgQBoQBYUAEoNiAMCAMCAPCgDAgDAgDFcaACMAKG3CBKwwIA8KAMCAMCAPCgAhAsQFhQBgQBoQBYUAYEAYqjAERgBU24AJXGBAGhAFhQBgQBoQBEYBiA8KAMCAMCAPCgDAgDFQYAyIAK2zABa4wIAwIA8KAMCAMCAMiAMUGhAFhQBgQBoQBYUAYqDAGRABW2IALXGFAGBAGhAFhQBgQBkQAig0IA8KAMCAMCAPCgDBQYQyIAKywARe4woAwIAwIA8KAMCAMiAAUGxAGhAFhQBgQBoQBYaDCGBABWGEDLnCFAWFAGBAGhAFhQBgQASg2IAwIA8KAMCAMCAPCQIUxIAKwwgZc4AoDwoAwIAwIA8KAMCACUGxAGBAGhAFhQBgQBoSBCmNABGCFDbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMVxoAIwAobcIErDAgDwoAwIAwIA8KACECxAWFAGBAGhAFhQBgQBiqMARGAFgO+YsUKzJs3D3Xr1kVVVZVFS/KoMCAMCAPCgDAgDMTFwMqVK/Hzzz9j8803R7Vq1eJ6rVfvEQFoMRxffvklGjZsaNGCPCoMCAPCgDAgDAgDSTHwxRdfYIsttkjq9Ym+VwSgBf2LFi1CvXr1QANab731LFry59GlS5fi5ZdfxiGHHIKaNWv607GIe1KJuAWz2HfE0yrR5sW+xb6LGeBPP/2U2cD58ccfsf766ydqq0m9XASgBfM0IBoOhWA5CcCRI0eiXbt2FScAKw03F0jBbPEBSNGjMtaVIYYqcZw5DU1wl+P6HfaTJAIwLGNZ9cvRgEwmkgWF3jxaibgFc2WIAtMF0pvJadgRsW+x71I7gOW2gRN2qogADMuYCEALxvx9VBaLylgsKnGcRQBWzmmG2Lf+WJfjBk7YFVYEYFjGRABaMObvo5X44RTMlSF6RQDqiwJ/v1B6PavEOW1q3yIAARGAevMqb61yNCD5gMhiYTElvH9U7Fvs23sjteig2Le+fZfj+h3WdEQAhmVMdgAtGPP30Ur8cApm2QH0d0ba90zsW+xb7gAWn0ciAC2+M+X4C6ISP5qmRwgWpuPFo5U41pWIWexbf1fIi4lp0Qmxb/2xLsf1O6zpiAAMy5jsAFow5u+jlfjhFMyyQ+LvjLTvmdi32LfsAMoOoP2XpEAL5fgLohI/mrJDov+rObLJFFPDYt8y1jGZWiKvEfvWt+9yXL/DGp3sAIZlTHYALRjz99FK/HAKZtkh8XdG2vdM7FvsW3YAZQfQ/ksiO4CRcehLw7JYVMZiUYnjLDvc+rtCvnyPTPsh9q0/1rIDKGFgTOdZ5rlyNCD5gOh/QKyMx4OHK3GsKxGzCECZ0x58biLtgsm8Lsf1OyzJqTwCnjhxIm6//XZMmzYNX3/9NYYNG4b27dv/ib1Lly549NFHV+OiefPmeOONN/78bwMGDMDgwYMxffp0/Pzzz1i4cCHq1asXir9yNCCTiRSKNE8rVyJuwVwZu54iAEUAevrZddYtk29ZOa7fYQlNpQB86aWXMGnSJDRt2hQdOnTIKwC//fZbDBw48E8+atWqhQ033PDPf+/fvz+WLFmS+fcrr7xSBOAfzJhMpLBG52P9SsQtmEUA+jgXXfVJ7Fvsu5gtiQAsgyPgqqqqvALwxx9/xPDhw0t+S8aPH4/WrVuLADQQgP/7H1Cnjnrwl1+AddctSbe3FWSxqIzFohLHWXYAZQfQ2w+vo46ZzGsRgGUsACn+uOvHY91WrVrhpptuwiabbLKGuYURgL/99hv4T1BoQA0bNsT8+fOx3nrrOTLlZJvhRBo9ejTatGmDmjWLiwIKwA02UHUWLlyaegGoizvZETJ/e+541aqlP9bmb/XryTD27VfP7XpTibgFc2X8qAt+4IT9fnP9rl+/PhYtWlQ263fYr0Qqj4CzQebbARw6dCjq1KmDRo0aYfbs2ejVqxeWLVuWuTO41lprrcZRGAF4/fXX44YbbliDY94lXGeddcJyn/r6S5ZUx4knHpHBMWTICNSuvTz1mMoZgIxXOY+uYBMGhIEwDCxevBgdO3YUARiGNN/q5hOAuX2kowjF4JAhQ3DssccaC0DZAVydWdkB9G02FO+P7AAClbgrZLpDki7rXrO3lTjWlYjZ1L5lB7BMj4DzfbiaNGmCrl27okePHsYCMLfdcrxDEOYuhdwBTNcSmTtePAIeOXIk2rWTO1LpGsnwvQ0zr8O37ucTgrmyjoDDfsvKcf0OOxPL8gg4l4QffvgBDRo0AEO/nHrqqSIAi1hJmI+mCMCw0y3Z+iIA1Q5g2IUi2VFz8/ZKxC2YRQAWmz0iAFO6A/jLL79g1qxZmbHdc8890bdv34wnL8O88B/e1WN4mM022wxz5szBVVddhblz5+LDDz9E3bp1M8998803mX+mTp2KM888E4wtyL9tueWWq4WLqTQDCvPRFAHoZnGOqxURgCIAZbc3rtmWzHvCfL+T6WE0bzXBLQIwpQIwcNzINaXOnTvj/vvvzwSFnjFjBhgKhiKQ4rB3794Zj92gFHLoYOxABpLWKeVoQGEmkghAHSvxp44IQBGAIgD9mY9R9CTM9zuK9yfVpgnucly/w/Kf+iPgsIBd1i9HAwozkUQAurSm6NsSASgCUARg9PMsyTeE+X4n2U/X7zbBXY7rd1heRQCGZSyrfjkaUJiJJALQwngSeFQEoAhAEYAJTLwYXxnm+x1jtyJ/lQnucly/wxItAjAsYyIA/2Tgp5+A9ddX/zpyJHDIIUD16haEJvioyQckwe4avVoEoAhAEYBGUyc1D1XCdyzfYJjgFgGY0juAvszGcjQg3Yn0n/8AF14IfPXVqtHYYgvgrruAnFCLvgxX0X7o4k4FmAKdFAEoAlAEYJpncOm+V8J3TARgaTvQrSE7gLpM5alXqQKQ4u+444CVK1cnpapK/fszz6RPBFbCh1MEoAhAEYAWH/wUPFoJ3zERgO4MUQSgBZeVKACXLwcaNwa+/DI/cRSB3AmcPTtdx8GV8OEUASgCUASgxQc/BY9WwndMBKA7QxQBaMFlJQrA8eOB1q1LkzZuHHDAAaXr+VKjEj6cIgBFAIoA9OWLE00/KuE7JgLQne2IALTgshIF4JNPAh07liZt8GDgpJNK1/OlRiV8OEUAigAUAejLFyeaflTCd0wEoDvbEQFowWUlCkDZAbQwmIQfFQEoAlAEYMKTMOLXiwDUz2tejut3WPMSARiWsaz65WhApT4gcgfQwmASfjQ3bE/r1ksxatRIiChIeGBieH2peR1DF2J/hWCWXMDFjK4c1++wk0wEYFjGKlwAEv4xxwDDh69JnHgBWxhTxI/mC9vToMFKnHzyFPTuvSdq1qyMxaISRQFNqxJxC+bKmNOm9i0CUOIAWi275WhApT6aQ4cCJ56oaNtgA2DhwlUUNmgA3H13+kLAmH5ArIwnxocLh+1ZmQnlM3Tochx/fI0Ye5Tcq0rZd3I9i/bNlYhbMIsAlB3A4t8V2QG0+O5WmgB8+22gRQvg11+BHj2Aq65alQmENM6YAeyxhwWhCT5arotFqSN7YGUmbM+cOVWpzeISxmzKdZxLcVCJuAWzCEARgCIAS30bjf9eSQLwhx+AZs0oFIC2bYEXXwSWLAHq1FlF3wsvAEccYUxnog+W62JRrk47psZSruNcio9KxC2YRQCKABQBWOrbaPz3ShKAkyYB7doBG28MTJmijn+zvUpJ4r33Aueea0xnog+W62JRrmF7TI2lXMe5FB+ViFswiwAUASgCsNS30fjvlSQASdLHHwPLlgE776woyxaAG20E9OoFXHSRMZ2JPliui4XsAK5uVuU6zqUmTyXiFswiAEUAigAs9W00/nslCMDffwdq1cpPUW5cuXXXNaYy8QfLdbEI7gB+9dWauZsV6XIHMHHji6ED5WrfxagTzCIARQCKAIzs81ruAvDdd2uifXtg0CDgwAPXpFEEYGSm5bRhegF36LBmk1VV4gXslGiPGxMxVBliqBLHmdPOBHc5rt9hP0HiBRyWsaz65WhAwURq1qwdWrSoiS++AI46CnjuORGAFqaS+KOHHgqMGrV6N7bYYiU6dZI4gIkPTgwdMFkgY+hWpK8QzJUhekUAmk8jEYDm3KFcBeDzz7+Eu+8+AhMnVkOTJsDkyUC9esUFIHcI580D3noLWGstC1ITerScFwvG+mvUCBkxH5T69fnvkgkkIXOL/bXlbN+FyBTMIgCLTbRyXL/DflhEAIZlrAJ2AI89di5GjNgGdesCb74J7LhjfpKyj4Br11ZhYWbNArbZxoLUhB4t58XinXeA3XcH1l5bxXAMynffLcVrr0kquIRMLtbXlrN9iwBcxUAljrPsAJp/SkQAmnNXljuADz+8DF27qqwQTPd29NGFCcoWgNwp/OQTYOxYoHVrC1ITerScP5wvvQR06wbsuivA/x+UceOWYdGiFyUXcEI2F+dry9m+RQCKADSxb9kBlFRwVt/gcjMgHt/uvfdK/PZbFa65Zjl6966uzc8hhwCjRwMDBwJdumg/5k1Fkw+IN53X6AiPgXlEz6wfQbn77uXYcssRIgA1+Et7lXK373zjI5jlCLjYvC239dvkGyU7gCas/fFMuRkQjwfPPHMFPvnkW0ycWB9rraX/ATnzTOBf/wJuuAG49loLUhN6tBIWi9zA3d26LUe7diIAEzK5WF9bCfadS6hg1v9+x2qMEbzMZKzLbf02oVUEoAlrZSoACev335fi+ef/i6OPPhQ1a+p/QHr3VsLv9NOBhx+2IDWhR00+IAl1NdRrmcKPDjzVq68euPuRR7jbuxQzZ8odwFCEprRyudp3seEQzPrf75Sa9Z/dNhlrEYByBGxl9+ViQCNGqDRv1aqZxVMiiY89BnTuDBx8sDoKTlsx+YCkAeMJJwBjxgD336/GOMjd/MsvDPC9FCNHigBMwzja9rFc7VsE4OoMVOI4kwET3OWyftt8G2QH0IK9NBlQoaDNPLbl8S2dPRgwePlyM1EwcaIKNtyyJfDssxakJvSoyQckoa5qv3bpUoDhXn76CXjjDWCXXUQAluM46xhEJeIWzLIDWGxupGn91pnjJnVEAJqw9sczaTKgfALw9deBAw7gsS/wj38AV19t9kvKgkJvHi3HxWLcOJXBZeONgW++USFggh1AemtPnbocNWq8gvPP3zfUcb83g2bQkXIcZx0aKhG3YBYBKAKw+NdBBKDO17NAnTQLwEWLgGbNgK+/Vjt3Tz8NVFWJAGzXrl3ZiKFLLwX69lVe2fTOzv4RcPzxwFNPAZ06fYCBA5uUDeZS07kSRYHpEVkpLn3/eyWOdSViNrXvNK3fUc01EYAWzKbJgHgMuP76CizTut1886pjQe4EBjtD8gEpHwG4/fbAzJnAM88okZ8tAOmtfd11wP77f4kxYzYVAWjxHUjDo5U4rwWz7ADKDqDsAEb2fU6LAOTdvgsvBL76anUq1lkHYJaI7MwdNh/N7t2BF18Ebr0VaN8+MtojadgGdyQdsmyUwo8CkI7c8+cD6623ugCkKDzuOGDLLX/CrFlriwC05Nv3x8vNvnX4FswiAEUAigDU+VYY1UmDAKT440LPQMD5Ch02jj121V9sPpodOwJPPgncfjtw2WVGlCb2kA3uxDpd5MX9+gEU5Nle2dk7gB99BOywA8PDrMCPPy5HnTqVsVikZZwLOW2Z2lpacJviy/ecYK6MOc2xNxnrNKzfLudDvrbkCNiCYd8NaPlyoHFj4Msv84PknT9mhpg9W8WJM51IQes9e6rdvwsuAO6+24LYBB41+YAk0E3tV773HjB0KLDzzsCJJ6rHskXFzz9z7Fdi0aIqTJmyFM2aVcZikZZxFgGobeoFK6ZlrO2RuvkB77IfcbdlMta+r99xcCgC0IJl3w1o/Hi9vLz0FqU3sK0AZKy5c88FjjpK3TNMUzH5gKQJX64AZBzAtm1XYNKkahg4cBm6dFH5n8u9pGWcRQDaW2JaxtoeqQhAk7H2ff12aReF2hIBaMGy7wbE41gey5YqgwcDJ51kLwBHjgQOPxzYYw9gxoxSb/Xr7yYfEL8QlO5Nrqi47LLleOCB6rj00uW44w79vM+l3+RvjbSMswhAextKy1jbIxUBaDLWvq/fLu1CBGAEbPpuQHHvAPLYcdddgQ02ABYsiIDwCJs0+YBE2B2rppnmbaON1P2/ddct3NS77y7FqFGv4cwz98H668sRsBXpjh8WAWhPaDnNaV02KhEzuTHB7fv6rTvmNvVkB9CCPd8NKLgDSO/ffE4gru8A8l4ZvU1ZGHambl0LcmN+1OQDEnMXtV7HMf/LX5Tnb/bRfr6HywWzFjF/VEoLZhGAYUY1f920jLU9UtkBNBlr39dvl3YhO4ARsJkGAyrkBUzxx8JwIK68gNnedtsp4Td8ONCwYQSkR9SkyQckoq5YNcuYjvvso2I+fv+9CgNTqJQL5jCEpQWzCMAwoyoCMGAgLfZtP7qrt2CCOw3rt2uectuTHUALhtNiQBSBp56qvECDQnHWv//q4o9/M5lIFhR682i54GY6vz59gBNOAIYMKU4vMffs+TZ++WVPnH12dey5pzfDEVlH0jLOIgDtTSAtY22PdFULlYjZdN1Ky/rt0j5EADpkM00GdMQRKkgzC501DjlkVeiXbErkA5LuTCC7766Cez/+OHDyyaUF4L77zseUKZvhnnuA8893ODk8bSot9i0C0N6A0jLW9khFAJqMdZrWb5c2kt2W7ABaMJsmA6Jn7ttvK7AMAVLIOcBkIllQ6M2j5YB77lygUSOgWjXg22+B+vVLC8COHWfjmWe2Q7duwIMPejMckXUkLeMsAtDeBNIy1vZIRQCajHWa1m+XNiIC0BGbaTIgeoUGnrlRCsCnnwauuYY5ZoF//csR0TE0Y/IBiaFboV4RxGHcd1/g1VdLP0rMV175Nu68sxlatABee630M2mvkZZxFgFob2lpGWt7pCIATcY6Teu3SxsRAeiIzbQY0IoVQI8eAHeIBgxQDgKFislEym6LAvD44wFdEeJoKKybscVt3QEHDXAX76GHgJtvBpiVpVQh5gcffAUXXHAg6tQBFi1Su4flXNIyziIA7a0wLWNtj1QEoMlYp2X9dmkfuW3JEbAFu+VoQCYTKZvCN98E9t5bpZj74gsLcmN+1BZ3zN0t+LpPPlGheDbdtHSPiPn5519Cx45H4vffq/DZZ8BWW5V+Ls010jLOIgDtrSwtY22PVASgyViX4/od1pZEAIZlLKt+ORqQyUTKpvCbb4DNNlM7SUuWFA9DYkG980dtcTvvUAwNBpivvfYovPNOVSZ9H9P4lXNJyziLALS3wrSMtT1SEYAmY12O63dYWxIBGJaxFApAxoNbulQFCC51xGcykbIp5HHz2msDv/8OzJ4NNG5sQXCMj9rijrGreV/FQN9BbEfdvgSYn376SPz739Vw551A9+66T6ezXlrGWQSgvX2lZaztkYoANBlrEYCACECL2ZcWA7ruOuDGG4GzzwboKFCsmEyk3PaaNAFmzQKYiq5VKwuCY3zUBe4Yu7vaqyj+dtwR2Gkn4J//BDbfXK8nAebdd2+H9dariQ031HsuzbXSMs7MpBPc1S0Wtkl3LNKCWxePTj3BXBnpHWkLJmOdlvVbx9ZN66RSAE6cOBG33347pk2bhq+//hrDhg1D+/bt/+SgS5cuePTRR1fjpHnz5njjjTf+/G+//fYbLrvsMjz55JP49ddfcdBBB+G+++7DFry8plnSYkCnnQYMGgTcdBNw1VXRC0DmoB0zBuAQMAB1GorJB8QXXDNmAE2bqtA+TAFXu7Zez9KMWQ/hmrXSgJmB2y+8EGAKx6Dws3TXXWsGbtflIQ24dbHo1hPMIgCL2Upa1m9dezepl0oB+NJLL2HSpElo2rQpOnTokFcAfvvttxg4cOCfnNSqVQsbZm1xnHPOOXjhhRcwaNAgbLTRRrj00kuxYMGCjKisXr26FpdpMaCDDgLGjtUPDjxy5Ei0a2ceEPmSS4CJE5XnMT2C01DSvFj07g1cey1w9NEqBZ9uSTNmXYy59XzHHDZ1oy4PvuPWxRGmnmAWASgCsPiMSaUAzIZUVVWVVwD++OOPGF5gNVy0aBE23nhjPP744ziBObMAzJs3Dw0bNgTFT9u2bbW+M2kRgMzPS+/QCROAli2LQ6vEjyYZSTPu5s2ByZNVCJiuXbVMN1MpG/PNN9fMxA7s1w/YeWf9NtJW0+dxXr5c3Zn98sv8rPKOJ3cCebdW8zfqnw35jDsqGxLMIgBFAFaoAKT4465fvXr10KpVK9x0003YZJNNMmyMHTs2c+TLHb8NNtjgT4Z23333zFHyDTfckJc1Hhvzn6BQAFI0zp8/H+sx9oaHhffD1luvBn77rQoff7y0ZJgPfjRHjx6NNm3aoGbNyvqApBE3M340bKjGac6cpdr3/wIBGGA+9NDaeOWVanjkkWU4+eSVHlqymy75bN8TJlShTZsaJYGOHr0MrVqFGyOfcZcEbFhBMMv3u5QArF+/Prgh5Ov6bWj62o+V5Q7g0KFDUadOHTRq1AizZ89Gr169sGzZsszx7lprrYXBgwfjtNNOW03MkbFDDjkEW221FR4skBPr+uuvzysO2d4666yjTXqcFX/8sRa6dDkMVVUr8dRTL6BmzXALh01fTTxTbd5Xic+OGbMl7rlnT2yzzY+4884JxhQMGLArRo7cGu3bf4IuXT4wbkceNGdg4sQG6Nu3WckGunefipYtsy4IlnxCKggDwkAuA4sXL0bHjh1FAKbZNPIdAefioaMIxeCQIUNw7LHHFhSA3PXaZptt8MADD+SlJI07gNOmVaFFixrYfPOVmDNnWcmhdvGrmbEADz64Bn74gUfry0KHJynZyQgquMAdQbdKNnn88dUxfHg1XHPNclx77YqS9bMrZGN+9NFaOPfcGjjkkBUYMWJ5qHbSVNnncZYdQLeW5PNYu0W6qrVKxEz0Jrh5gic7gCu5T5PeoiMAia5Jkybo2rUrevToYXwEnMtSGu4AfvopQD1bq5byAi5VXNyb4Sk5YwHSsr77Dth441JvTf7vLnAngYKeoU89pTxEm5XePFqti9mYp06tiX32USFksr1Pk8AU5Tt9HufgDiD5z/dVljuA4SzD57EOh0S/diViDgRgWOfFNKzf+iNvVrMsj4Bzqfjhhx/QoEEDDBgwAKeeempmy5dOIE888QSO/8NNlbuEDAFTjk4gYUzD1QeEQuLrr4EpU8ILkzD9dVXXFW5X/YmjnWzMS5bUzKSQY2EomY02iqMH8b/D93Eu5AVMpigAn3nGLBSM77ijsATBXFl3AEUAhp9FqRSAv/zyC2Yx0jCAPffcE3379kXr1q0zYV74D+/qMTzMZptthjlz5uCqq67C3Llz8eGHH6Ju3bqZ5xgGZsSIEZkwMHyGMQEpFMsxDEwYs3D10WzRAmDYRS5YHTqE6UEydV3hTqb3Zm/Nxbz11srDdNw44IADzNr0/ak0jDN37M85Z3Uma9QAhgwxn0tpwO3adgSzCMBiNiU7gCnNBDJ+/PiM4MstnTt3xv3335/x5J0xYwYYCoYikHV79+6d8dgNypIlS3D55Zdn7gNmB4LOrlPqg5QGA5o5UwUIZho4ndARrj6aJ54IDB0K9O0LMC6g78UV7rhw8ohw2DCA0yDLkT3U63MxM44gQ8EMGGAuNEJ1IIHKaRjnu+8GLrpoFTkM7M282hybffc1Iy0NuM2QFX5KMIsAFAFYfFalcgfQ9YfCtL00CMC//U0dw1IsZCVLKQjZ1UfziiuA229XC1n//qYMx/ecK9xx9fijj1T6Nzqr8mKJAAAgAElEQVSf09lGN/tHdv9yMS9erO5uhs0pHBdmF+9JwzgfeKDahQ3KKaeoIO6nnw48/LAZC2nAbYZMBGCxOe2aU1/bM7HvNKzfUfMtAtCC4TQY0GabAfTKnTZNpQsrVUwmUr42770XOP98JTopPn0vrnDHhfOOO4DLLwcYs/y//zV7a9owm6Fc/SnfMS9YADBcKR1CgjJ6NMBdQebybtfOjAXfcZuhKv6UYJYdwGIWkob1O4p5kd2mCEALhn03IHrjBjtD338P1K9fGqyrjyYXrZ49Ae5mcCfQ9+IKd1w4eUePmV3uuUcJbZOSNswmGHOf8R3zE08A3PHbaSfggz/CMf7yi7rGYVN8x22DrdCzglkEoAjA4jNLBKDFl8d3AcgQMNtuq471/vc/vaO9Svxo0gTShHvhQhVah7tEn32GktldwiyQzIzItHL/93/ANttYTA5PH/V9nP/+d+U4xd3d4IeTCEAzY/J9rM1Qya5nPgZMxtr39TsK+8htUwSgBcu+GxDvEXEHjrmAP/5YD6jJRNJr2e9aacJNb9CTTlI5e997z5zXfJh5TWDGDP07o+ZvT+ZJn8d56VK1S//TT2p3t1UrxVEgAOmhPWgQcPLJjGsajj+fcYdDol9bMMsOoOwAyg6g/hcjZE3fBeCjjwJdujArB8AjWZ3i+qNJb1X+U62aztuTq+Matw0S7tbWqbP64p/dXqdOwODB6oj95pvN35QPc+fOwGOPAUyHfe215m37+qRP45yPI97X5Z1Ohk4K4jIGAvCII4AXXzQbd99xR2EvglkEoAhAEYBRfFsybfouAP/xD6BXr3Degy4/mnQAefllgMFtDz00smFw0rBL3LYdKiYAeexLJwE6C9iEBWEf82EOnEuOOw54+mlbJP4979M4F2Mnnw08+yzAcWGQ9c8/BxgbULekBbcuHp16glkEoAhAEYA63wqjOr4LwLFjgZdeApo3VwuHTnH50TzySGDECODBB4Fu3XTenlwdl7htUZTaAWSqMO4ScXdXJ7Zjof7kwzxqlBLr228PMNRMuRWfxjmsAPz9d6BBA5WphTuBYTyC04Lbpb0JZhGAIgBFALr8pqzWlu8C0AS4y4/meecB990HXHWVXh5ik/66esYlbts+lRKAtu0Hz+fDzPR93GHikT2PHulAVE7Fp3HO5pWxOnmk37EjcMYZymkr3zUABlVnXE0eEdNZRLf4ilu3/yb1BLMIQBGAIgBNvh1az4gALE7TbbcBPXoAvLPG8BY+F58WiyQFIO9r0sOYwaWnTgX22svnUQvfN5/GObv3/JHE+5xMTc4MOoVs4N13gd12A2rWBLgTzLHSKb7i1um7aR3BLAJQBKAIQNPvR8nnfBaAXMjffBPYckuAwaB1szu4/GhyIWNKuP33ByZOLElnohVc4rYFUmjxpxcoc8TybiWDAtuWQph5dP/ddyqNn2nqMdu+RfW8T+OcjZEe3Yz79+9/q13AYj8CmjVTgd379QMuvliPKV9x6/XerFacmOP60VaKiTgxl+pLnH83we3z+h0XdxIGxoJpnw2ITgIbbaTABSm+dKCaTKRC7b7+OrDPPkqE8tK6z8UlbluchRYTBn2+8EKAQaCzU4WZvs8nzKYYwj7nI+ZZs1RYFzp1MGB7vXrFBSCvVfC4mP9w51Cn+Ihbp982deLELALQZqTsnzUZa5/Xb3tG9FoQAajHU95aPhvQ228De+yhjoi4m6NbTCZSobbnzVOX1umowGT2YbwWdfvrqp5L3LZ9KrSYMO0bvaoZIPiyy2zfkq7g1/ZoVQs+jXOA6c471XgedJAKwM1STFDwBx13+MNkB/ERt6sxLdROnJhFAEY9msXbNxlrn9fvuNgUAWjBtM8G9MILwFFHqTtcvMulW0wmUqG2V6wA9t5bicCBA9XOhq/FJW5bjPkWEzpkcEeXnqAffgjssIPtW0qLIaYSXGst+/f41IJP4xzwwisSDOnDfL8XXFBaAJrw6SNuExxhnokTswjAMCPjvq7JWPu8frtnKH+LIgAtmPbZgO69V+WIPeYYFYdPt5hMJN22fa7nE+58i8nw4WosmZ7tk0/073QW47wQZmakYEYQCk16Bes6Gvg8vkHffBpn9olHvn/5C8AfS3PmAI0a6QtA7gLSe3jXXUt7a/uGOw5biROzCMA4RrTwO0zG2uf1Oy42RQBaMO2zAdH7ll64F12kwkboFpOJpNu2z/V8wp1vMenaFXj44fDjaSIA+QxzSDOX9JgxKp1guRSfxpmcMkUjHTmY3/mNN8KxfPjhwMiRKisMUwOajnW4t6andpxjLQIwWbswGWuf1++42BQBaMG0zwbEBYE5Y3m/qHt3fZAmE6lU69yp4NGlz8eJUeAuxUuhv+cuJozFx2N0pgljSj+m9nNRimHmbiN3HfnjgT8iyqX4NM7ZnHIHMGy6xOuvVyn7dFI9+oo7SruKE7MIwChHsnTbJmPt8/pdGrGbGiIALXj02YD22w+YNEml89LNAkIqTCZSMQp5r4neiqecojKC+Fpc47bBmbuY0IGGgn76dICONbVq2bS+6tlimJkHuHfvcGkE3fQq2lZ8GmdbpDwy3mordR3gs8+Axo0Lt1hOuHV5ixOzCEDdUYmmnslY+7x+R8PSmq2KALRg2mcDevRR4L33VAo2hpjQLSYTqVjbjzyiMhswvRjT0vlaXOO2wVloMeEuqivxV0rsM8vE3/8O/PWvwOTJNmj8etancWZcRwZ03mILc464+8djeu4GXnedCMBsBuIc659+AtZfX72dx/KHHGKXptHUIuLEbNrHKJ4zwe3z+h0FR/naFAFowXQ5GpDJRCpGIRcnLlI77qgC3fpaXOO2wRnXbkIxzLybRk/jddYBuLjZ5By24cL1sz6NM38Y8QfSLbeojDkmhYGjTz5Z7f7xzmahY2SfcJvgNHkmLsx0smN8TmZmCQpF/V13Accea9Jz82fiwmzew2ieNMFdjut3WHZFAIZlLKt+ORqQyUQqRiE9VrfbTgkJhjLRzUhiMSxGj7rGbdSJPx7KFoA88uUdSubndV2KYV6+XOWi5fHzzJnhdpFd99Nle76MM/llhh56ATP2H2MAmpRff1XtLFpU3GHHF9wmGE2fiQMzxR+v2HCOZpfgO8ed9DhFYByYTccjyudMcJfj+h2WYxGAYRlLgQDkosLdAO4KMMREmGIykYq1TwFBJwYW9qt+/TC9ia+ua9w2Pc8WgP/8pwrnc9pparfIZSmFmfcOuaPEo0WK+HIopTDHhZFx/xj/j7ExGaidR8GmhekBH3hApQlklpB8xRfcphhNnosaM0U8v7Fffpm/dxSB3AnkUX9cO+hRYzYZhzieMcEtAhAQAWhhnb4aEMNCdOpkljLMZCKVopAi9NtvVf5SxpfzsUSB2xRntgA84ghgxAjlkHHNNaYtiigIGPBlnC+/HLjjDpX3l8e4NoXH9XQI4VWLQkLDF9w2OMM+GzXm8eOB1q1L94ppG5m+MY4SNeY4MJi8wwS3r+u3CX7TZ0QAmjIH3o36Ceuvvz4WLVqE9dZbz6Ilt4/yTtGVVwKnngrQGSRMMZlIpdpv3lw5EvC4hOFFfCxR4DbFmS0AeXTO1F8zZqjUfi6LT5hd4irWlg+YeVy4/fYqoPdTTylnm6iLD7ijxpjbftSYn3xSCfhSRSdOY742TO4CR425FNak/m6C29f1O04ORQBasO2rAZ13njoK4o4Rd47CFJOJVKp9hoEJAt62alWqdjJ/jwK3KZJsj0K2wft/PGZyfX9SBzOPuT7/HNh6a1M0fj2ngznqHjPDyk47KY/u+fOBunXdvZHjlW8XMMDdqlU7bLCBOm/mndww+YTd9TKelqIe66h3AEUA6tuJyVj7un7ro7avKQLQgkNfDejII9WxIePuMQxMmGIykcK072tdX3Dn8yjkIv3YY+4vk5fCzOwUFJ/MCUyxwN3ItJdSmOPAF+zQuw6NxB98zBbDYOG77LI6EhGAFpcsCxhFcAeQ3r+5TiB8xPYOoAhA/dloMq99Xb/1UdvXFAFowaGvBrT77sA776i4e1xkwhSTiRSmfV/r+oC7kEdhsJi49ijUwbzJJsp5h0f4jAmY9qKDOWqM9Njl3KRDlKusLuwzvU2HDVOZf5gBKLuIAHQvAMmvjhfwUUcxwH7pfM25dicCUH8mmsxrX9dvfdT2NUUAWnDoqwFtsAHw44/A+++ro6YwxWQi6bTPX8i5R5s6z8VVJyrcuv1PwqNQB3MQaJg7S6efrovG33o6mP3tffGecdefu/8bb6yuDGQHDRcBGI0ADERgbhzAhg1VGkWKcl6BGTUKePbZcFcpRADqz0STee3r+q2P2r6mCEALDn00oGyRxf8f9n6RyUQqReFHHwF77aXuGzHkhY8lCtxhcEZ9nyhfX3QwX3KJWsguvhjo1y8MIj/r6mD2s+ele7VsGUDhwZzRuQ5XIgCjE4AcmUKZQBYsUEHw+d1jyJ/HHwfo2a9TRADqsKTqmMxrH9dvfcRuaooAtODRRwPiXa2BA9UicNNN4cGZTKRSb+Fdsg03VLX4UfPxLlkUuEvxkv33qD0KTQVgkMqPgYoZsDjtJelxZvgX7tAzriMDOLsu3G269VYlMl54YVXrIgCjEYB06OE3l1lzgkAQuc413I2lp/cbb6jx4F1Npu4rFRtQBKD+7DCZ1z6u3/qI3dQUAWjBYzkakMlEKkUhj3+ZJ/PnnwHuBjIEhm8lCtxhMPq6AzhlCvC3vwG8C8hYjmkvSY4zhQHv/dGp5t1313TUcMFtkMKPAbwpPAKRKQIwGgF41lnAgAFqh5w75Sz5vKuZx/vSSwEGdmdp0wZgeJhigfFFAOrPCJN5XY7rtz5jqqYIwLCMZdUvRwMymUg6FNIrkXcSeReGidJ9K1Hh1sUZtUdhvn7oYGYMQqaEo4jnrvKmm+oi8rOeDuaoes47YEwbts02Kgag67A+Qb/33Rd47TW1E3jFFeq/igB0LwA5J5gJZO5cdeQepHwrFl6HQb8ZmYHzikfDdNarUSO/xYkA1J+JJvO6HNdvfcZEAIblao36PhoQdxb4AeIuW3DsGgaoyUTSaf/ww4GRI9Wv5TPP1Hki3jpR4Q6DIvAo5DPZYSWiyiuqi/ncc9UOYPC/YTD5VlcXcxT9ZmB23gHL56Xr8n1DhigBSKERhIMRAeheAAbxHNdaC/jiCzVHWErFV3zvPaBDB+CGG4ATTyw88iIA9WeFybz2cf3WR+ympuwAWvDoowGdcgrwxBMAY4316BEenMlE0nlLkK/UJDi1Tvu2daLCHbZfFIFcuH/4YdWT2R6FYdsrVt8XzC4xlWorKcx00ODuKZ0CJkwAWrYs1VO3fxcB6F4A0imKYp4nGpy33CnXEYCsw2sAFI5B+eADtZuYfT9aBKD+HDCZ1z6u3/qI3dQUAWjBo48GxJyTXGBM0w+ZTCQdCoPgtxSoDGrsW4kKtwlO3iWi9y0Ld025wJS6MG7yHp8wm/Tf5JmkMAd3PDfaSB2lFzr2M8Gk84wIQPcCsG1b4OWXgb591Y+2MAIwe8xoD8yRzvA9vCaw7bbqryIAdSxb1TGZ1z6u3/qI3dQUAWjBo48GxJRds2cDr74K8C5Q2GIykXTewbt/DzwA0Jv0/PN1noi3TlS4TVDwQvldd6knSx0nmbQfPKOLmcfRdChgSrj99rN5Y/LP6mJ23dMgnE7nzsCgQa5bX7M9jtkrr6gfW/xBsdZaSzFy5EhIKjg33PMOH6/YcCePu3dbbmkuAOloRa9thoqhsxzHjMGjC4WWKYYgKft2w6p5Kya4fVy/zRkwe1IEoBlvmad8MyA6Eqy9too6z4vJPDoMW0wmUth3+FjfJ9xBKj9fBCAdFrbbDqhdWwnSKHYj47KJpMaZR4UPPaTuALZvHz1aCkCO2axZKixUp04iAF2yzkwu7dop4Tdnjr1DD9PJHX+8urvJQocSho2ZN29Vr7fYQv0wDJxN8uFJyr5dcmvSlglu39ZvE9y2z4gAtGDQNwPix6JBA4AhIPjL1OSYyWQiWVDozaM+4d55Z7Wr4IsA5A8LBhT/9VeAYUYoLNJakhxnzkk69GRn6IiSxz59gKuvBvbfHxgzRgSgS675I5sCbf584Jhj3LTMNhknMtj9z21VxxksSft2w4JZKya4fVu/zZDbPSUC0II/3wyIH6QWLdTOH3cATYrJRNJ9D3cl+MFkwNTsC9C6z0dZL0rcYfq9YoU6SqLY8kUAsh+MBcijqqefVqFM0lp8Gec4+OOxfaNGAG3q/feX4pNP5Ag4Dt5t3sEfW/QmprNQvkIRyJ1AXvPJtxNfSfadzY8Jbt/Wbxu7MX1WBKApcx4eAXNx5jEC7/7xDqBJMZlIuu8JdrZM7yfqvsekXpS4w/SHi/WYMatiJfpwB5D9P+MMgFlBrr1Wha9Ia4linEtd1udivdVWyTDGY0oeV/bosRwtWoyQO4DJDIP2W20Dwkdh39qdT7CiCW4RgBII2spkfTMg3vf5739VqqlOncygmUwk3TcFHsoMhtqxo+5T8dSLEndYBKUERdj2CtUPgznwTOZxF0NepLWEwayLsdh4cReOO/IM+jtjRvw73888o9KQbb75Stxzz/M48MB22GAD5REb5Y8LXe6irBfFWLO/Q4cCEyeqb+w++7hFYJsSMirMblG6b80Et2/rt3tWSrcoO4ClOSpYoxwNyGQi6VJID0h6uN18M8CcpT6VKHGHxemjABw7VnlwM4sFf2iktUQxzsXG6777gPPOU0Jh0qT4WeO9Q94LZlzJXr1eR/fuzUQAWg7D0UcDzz8P8I7llVdaNpbzuOwAmvFpMq/Lcf0Oy54IwLCMZdUvRwMymUi6FPbqBfzjH8DZZwP336/7VDz1osQdBgGP6yiwLrxQPRXlLk0YzN9/r+4m8Q4Sczqvu24YVP7UDYNZt9fFBGAQKy47LZtuu67qMazQiBEr8fe/T0GPHnuKALQgljl9Gf6FYz59OrDnnhaN5XnUNiVkFPbtFmE0rZngLsf1Oyy7IgDDMuaxAGRQUjpY7Lbb6hHlw0A0mUi67f/rXyoN3GGHqQDHPpUocYfByeM6HtsFxRcByP5cd50KUss0VtkZC8LgS7puFONcSAAuWqSC+9K7M0nvafavZs2leOklcQKxtb9x44ADD1RZXRh1gREXXBeblJBR2LdrfFG0Z4JbBKDcAbSyRd8MiIsNvWzfegvYfXczaCYTSfdNo0cr5wY6gzAfpk8lStxhcHJHgePnowAMg8PXulGMcyEByLtizPW6ww4A88YmWQLcEgjabhSYXvO22wDmdX70Ubu2ij1NEchTAMYHDAp34HlyInEA12TOZF77tn5HZ02FW5YdQAvWfTIghg0JdmUYQoCOICbFZCLpvoe7IFwMGeaEUe6DuFa6z0dZL0rcuv1mmBzu4HLXTwSgLmvh6kUxzoUEIB2deKmfooGpEJMsxP3cc//FihWH4YQTamS6EuXucpJYg3dHMdZ77AG8/bZ5qs0wvGRnAuFzOvndo8Acps9J1TXB7dP6nRRvqRSAEydOxO23345p06bh66+/xrBhw9C+QHj9s846CwMGDEC/fv1wMS/D/FE+/fRTXHbZZXj11Vfx22+/4dBDD8U999yDTbm3r1l8MqCZM4Htt7cXVyYTSZOuTGy7k05Sscluvz2+gLg6/YsSt877Wefbb4G//EUJY4rBqBfpsJgpdCZPVg4FaY0FGBazztjlE4C8K8YdeS7izO7A+JxJlsWLl6Jhw2VYsGDtP7sRZZ7pJLFGJQCDQPucn0zbVr9+tCiz7YpvYnq4554r/s4o7DtalG5aN8Ht0/rthoXwraRSAL700kuYNGkSmjZtig4dOhQUgMOHD8f111+P77//HpdffvmfAvB///sfdtttN+y+++644Y+gZr169cK8efPwxhtvoJrmxQ6fDOj//g9o0wbYaScGfQ1vCFF9NM17Eu+TJh8Q1z2kUGAMR6aXCgJ5R7lLExbztGlAs2bARhsBdArxaQdXdyzCYtZpN58AXLZMhWTitYd+/aK5K6bTt+x5vfvui/Dhh6urFp30YmHe41Nd12P9+usqfBWPYt98M3qkuQKQ847Cs9jy5Bpz9CjdvMEEt0/rtxsWwreSSgGYDbOqqiqvAPzqq6/QvHlzjBo1CocffnhG/AU7gC+//DIOO+wwLFy4EOvxzA3I/P8NN9wQo0ePxsEHH6zFpE8GxCC9DNZ76KEq8KtpMZlIpu/y6TkfcDNEDkPlMF4iw0Gw+CQAuYPL43sGq+ZuyGab+TSCen2JYpzjCtujhzB/raeeWoYTTqgOoGq1CjrpxWzem+SzUYw1d+bp3FOvXvTIsu2KOd45/5gikjElC5UoMEeP1P4NJrh9Wr/tGTBroSwF4IoVKzIi7uijj8ZFF12Exo0bryYAX3jhBRxzzDHgTuBaf+Qk+/XXX1GnTh1wJ5C7hjrFJwPiRia73a0b8OCDOr3PX8dkIoV5Gz+gPELk//KIzJcSNW4dnMyy0bs3cPrpKuuGbwKQ/eE1A143GDVqVbYSHWy+1IlinH0XgAwt0qjRyj8cClYXgByXUunFfBm7sP2IYqzD9sGmfrZdXXWV8jymUxF3IEUArs6AyVj7tH7b2InNs2UpAG+++WaMGzcus/vHHcJcAcgj4W233RannXYa+vTpg5UrV6JHjx6499570a1bNzxYQEHxriD/CQoNqGHDhpg/f/6fO4k2g2HzbLdu1TFoUDXccMNyXHnlCuOmOJG4C9qmTRvUrKkyBrgsPXtWQ9++1XHJJctx663m/XTZJ7YVNW6d/vJY9cMPq1C79krst5/ifuHCpZHF3DPBfOKJ1fGf/1TDrbcuxyWX+DN+OvxGNc5cqIPsGhyvOXPoJFANxx67Envt9cdlTt0ORlBvwoQqtGmjHD+KldGjl6FVq+T7W6qfun83se9CbXMnvnZtoEZpGnW7V7Jerl3pxN50iblkBz2qYIKb63f9+vWxaNGixNfvpKgsOwFIxxAe+U6fPh2bb755htdcAcj/xmPgc845B7Nnz87c+TvppJPwwQcfZI6N72P4/jyFO4PBncHsPw8ePBjrJBwY7aOPNsCsWfWwww4LsO22i5Kyp5LvfeGFrfHww7tin32+whVXTC1ZvxIrLFlSHSeeeEQG+pAhI1C79nJvaBg6dDs8+eSOaN16Li66aIY3/UqyI7njNWzYthg6dAfsvfc89Ow5JcmuZd49cWID9O3brGQ/unefipYts+KOlHyicio8+eT2eOGFbXD88R+jfftPYwHu83cgFgIifsnixYvRsWNHEYAR8xxp87l3APv374/u3buv5sixfPnyzL9zt24Of55nFe7e1ahRA/Xq1cNf/vIXXHrppRmHkXzF5x1AVySb/JIK8+7hw6tw/PE10KzZCrz2mj/CJmrcYTgy+eUfpv2grgnmYPz22GMlJk9eZvLaRJ8xwVyqw7nj1bJlDbz7bhUefngZTjkl+R012QG0P83Yb7/qmDy5GgYMWIYuXeIZ01y74r3b116rwmGHrSx4DByFfZeyfx/+boJbdgDLIBB0rgD84YcfMqFhskvbtm1xyimnZI58t+clpjxl7NixmXuDH374YcE6uY+V4x0Ck7sUYT4ATJ+0117qPss334R5Mtq6UeMu1XteLGeO5CZN1B3AODxsTTB/+qnKBsKrszwWi/NIrBSHOn83wVyq3ey7WgxwvssuQPXqKqwPPTeTLnIHsJ3VdRbeWeZ9Zd5b/vJLlVs5jpJ7t7RlS5V+bsgQ4IQT8vcgCvuOA6vtO0xwl+P6HZbHVB4B//LLL5j1R0b6PffcE3379kXr1q0zXrxbMoZGTsl3BDxw4EDsuOOO2HjjjfH6669nnEW6dOmCO++8U5tDXwyICzFjejG+XvPm2t3PW9FkIoV5Iz+mQfwserXxXo0PJWrcpTBOmQL87W8Aby1kR/8v9ZzN300w0wP44YeVyGF/lyxRnsEsUXos2+DMftYEc6l3Zy/UzPnLwM+tWq3y5C71fBx/D7yAVYzJVY4g4gVcmn0KLsYv3XVX4J13Std3VSNXANIR5O67gfPPB+65RwSg7bz2Zf12ZS8m7aRSAI4fPz4j+HJL586dMWjQIC0B2LNnz0zdBQsWZO4Inn322bjkkksyTiO6xRcDCuKzMYhwzuanLpQ/60WxQGZ3gr+iKRgWL042P2ouMVHjLjUQzBjBGGP8lT9hQqnabv7uArPvHrBxjHM2Bxy/iROBvn2BSy5xM04uWuFY9+o1A48//lfMm7fqG9ewIdC/f/H0Yi7en0QbLuyb/e7SRaV9480gpoGLq+TOLYb3Yq5wpvnMThdpK4TiwhPle0zG2pf1O0peSrWdSgFYClRcf/fFgIYPB445Ru3I2AYoNZlIYflmsGrmRmWQXM2Qi2FfEbp+HLiLdYrhXxgGhse/3GGLo7jALAIQyOaAR788cuVR+dZbxzGKeu8Ixnq//dqhfn3lYU5bGzBAHVeXY3Fh39zx5q48j/PHjAEOPDA5pvjjnn3hHsXChcD666/ZFxeYk0No/mYT3L6s3+ao7Z8UAWjBoS8GxGOBiy5S6bmeftoC0B/hUEaOHIl27ezuzRTrxY03qliAZ56pjhJ9KCYfEJf9ZgBoBoK+6SaARz1xFFPMvIz+4ouqh9y1lCPgVRzwzh8DZL/7bhwjqP+OYKxbtWr3Z8iaDTcE5s+P576pfk/d1TS17+wecKdtzz2RCcXEb9YfYWPddTJkS7x/yx8X3A1k0P/c4gJzyC55Ud0Ety/rd5IEigC0YN8XA7rsMoBXF7t3V/9rU0wmks37fHk2adxMAcdUcEOHAscfHw8rppiZpYQ3MLbaSgkdEYCrOKAzD//h0apPJZ8AZP/SmtFFh1tT+85um04fDMrOKyu33KLz1mjrBMfRV18N/OMfIgADBkzG2lU0U5oAACAASURBVJf1O1qLKd66CEAL9n0xIAoG7vzxLg93Am2KyUSyeZ8vzyaNm17RzPPJ+5xNm8bDiinmbEceHksFKeEq1Qnkp59WHcfRGeuQQ/w7Vi0kAF9+WeUQL8diat8+c8HrIV27Fr4rXI6YdcbDBLcv67cOvqjqiAC0YNYXA9p7b3X37z//UXcBbYrJRAr7viAd3IIFwHbbhX06mvpx4C7U82wB8eOP+e/2RIHaBjPvIlH8jR276l5UJQpAzrkLL1zdc3uLLYC77vLLsaKQAAxODqKwr6TbtLHvpPte6P2cc4wYsM8+q6IpZNctR8w6Y2GC25f1WwdfVHVEAFow64sBBYvx1Kkqxp5NMZlIYd/36qvA/vurS/K8z+JDiQN3IZy8aM7QL7Nnq1/2cRUbzG3bMpuOCktBAcRSaQKQ4o/3bvmDJrv4GFqlkADkkeLAgXFZXLzvsbFv9pQx9z77TDmq1asXb99N32aL2fS9ST9ngtuX9TtJ7kQAWrDviwE9/zzw+efAqafa7x6ZTKSwFM6dq2IWMtUw48hVqxa2Bff148Dtvtd2LdpgZkiMO+4AzjoLCFJnV5IApKdv48YqMHC+QhHInUCKeh+8bAsJwGbN1I5SORYb+yYfZ5+tbLtY3D3feLPF7Bse3f6Y4PZl/dbFGEU9EYAWrJajAZlMpLAULlumAkBzEeXO1x8pm8M247R+HLiddthBYzaY6bFMz+X99gO4o8tSSQIwcIQpNQzjxgEHHFCqVvR/LyQA6d3KKwg+/AhzzYKNfXNXl05O/GE9YgRw+OGue2feHn9U0DGFheGjsosNZvMeJf+kCe5yXL/DjoQIwLCMZdUvRwMymUgmFHIHkDuB9Hxt0cKkBbfPxIU7X68feEBxwSCvDDkRV7HBPGOGclbZYAMVk6zSBGAQuLvUWA0erLJIJF3yCUCKU+4ABl7cSffR9ftt7Pujj4AddwRq1QJ4V5lC2ZfC+968982QQ3QcyxbvNph9wWfSDxPc5bh+h+VOBGBYxjwTgO+/D/AfxtNjgGXbYjKRTN7Ju26vvFI8r6VJu6bPxIU7X/+YNozZI/79bxVXL65ig/m334BJk9Q9Tu6UVJoALIcdwDTs2NrMBRv7ZkQFZnLh/T8GrPepLF2qrvowlSa//dnffRvMPmEM2xcT3CIAARGAYS3NMwHIwMHXXAOcdtqqYwELSDCZSCbvO/lkJXiYO/WKK0xacPtMXLjz9Zp3xXgUzl/2zOYSV3GBuVIzgQR3ADluuU4gHL803AEUAVh4pjHI8qhR6p7rpZfGNSP138OMJNzB5R3Fbt1WPediTuv3wp+aJrhFAIoAtLJgHwwouKh83XXA9ddbwck8bDKRTN7KQKZ9+gDnnQf8858mLbh9Ji7cub1mgNngeInx9ZidIa7iAnOlCkCOUdq9gF9/HXjiCWDjjQF+P8qtmNo3d9Y4D+mg9t57wM47+8cM00by/t8pp6gMQkExxewfwnA9MsHtw/odDqX72rIDaMGpDwbUrp1KC8QAocztaVtMJpLJOxlChOnEmFGifXuTFtw+Exfu3F5zgdl1V3WXjneN4iy2mJkFhCFE+vVTvU7DjpIt5tzxeeopNe8ohIPCLCA8Qjz22DhHs/i78t0BZA5xzj3edfvgA3/66qonpmMdHO9zZ553c4OwPq765aIdfj8ZionXLxiqRgTgUoRNYerD+u3CFmzaEAFowZ4PBsS7f7wH4iqiv+lH04JGLx5NCjcXYQbv/utfgcmT46XCFvNzz60u3itRAHLE0poJZOZMFYidYWooYJPOc+va+m3sm96/c+YAvJ/rY/n5ZxWbkDFEGYqoQQPVSxvMPuLU7ZMJbh/Wb118UdUTAWjBbNIGxLtH662ndl7otbb99hZg/njUZCLZvzX5FpLCzTtGjKlHT1F6jMZZbDEzHAWdQIJSqQIwDcfg+XYAKSK23FJ5cb/1FrD77nFaX/TvsrXv6Hto9wYG/efuH39EBkK13DEXYswEd9Lrt93ou3laBKAFj0kbENOG8eiQhYvQOutYgElAAM6fr+Js8Y4N4wImWUw+IC76e845AMPA0JEnN6aXi/aLtWGLmbsP9Eak8GOpRAHIXSLunAWxLH3lIJ8AZF8PO0x54z/+OEDHrHIqtvbtOxfffqvub0oYGLOdz6TXbx/sSwSgxSgkbUDvvKN+tdevD3z/vQWQrEfj/Giy33R8ePttYLfd3PTftJU4cWf3kd6kX3yhRMRmm5n23uw5F5ibN191dO2r+MlmxwXm7PYYCJvhcILiKweFBCA98O+7D+jRA7jlFjM78vUpk7F+9FHgmWeAM87w425yWG5NMId9h4/1TXAnvX77wKMIQItRSNqAFi0CJkxQu3+ugs2aTCRTCnmEwXybTGV35JGmrbh5Lk7cbnps34oLzMwly0WTZeRI4JBD/Eh9VogdF5iDtnkFg96i3IlPqwCkB+m55wJ0JqNTVjkVk7GmUwzvtv7jHwAjFaSl0BbprGKCOS0Yi/XTBHfS67cPvIsAtBiFcjQgk4lkSiGdH3h/hWFgGA4myRIn7iRxZr/bFjPDoNADlj9EgkLPybvu8ssD1iXm7LbmzVOX73kEx+NwlrTtADKjy/77q4wg5ZYTOKx9//67yq7BMZw6FeAPVN9Lz57A0KHA/fcDjF0YFrPv+HT7Z4K7HNdvXb6CeiIAwzKWVb8cDchkIplSePHFSizQCeK220xbcfNcnLiDHtOJgrsMDANz5ZVucIRpxQZzmmLgRSUAmSGCO55NmgCffJJOAVizpvJi5nWMcith7TsI/8J7dd98k478yMEOPL8j3LUMi7lcxtwEdzmu32HHUwRgWMY8EoA8suHx7777rgoDYAEn86jJRDJ9J+PHde8OHH+8+hWbZIkTd4CTSeZ59M17nPTCjLuYYg6yYDD8RL7iWxaMqARgkC7sqKPUNQaWtO0A+pTj1rX9h7Vv7qYxMxGdYegUk4bC+K9duwJMrcnrQGExpwGjTh9NcIsAlEwgOrZVsE7SBsSjm1dfVeKJIspFMZlIpu/lLlKHDiqxObMSJFnixB3gDAQEOeDF87iLKea05cGNSgBy4eUCTAcKCoc0CMB27dqhJrf9KqCEte899lAOacyO0qlTOgj6+GNghx1UFAXeRa1WLXxA5HQgLd7LsGPN1pJev33gXXYALUYhaQNq1EhFqqd4oohyUUwmkul7ec+GAZDp/cr7VEmWOHEHOM8/H7j33uQ8ME0xP/kk0LFj6dFiXENXzkml36ZXwxRzvtZbtADeeAMYNAjgUVxaBSB3onkPlx7dN9ygx2MaaoUZ6+A+J3evg/AqacBI549NNgEYUuu113iXUwSg7g+cpNdvH+wrVgE4fvx4HHDAAT7gdtKHJA1o2TL1q4/HcUxIH8QhswUW5qNp+y4GoGUOUqYz4n3AJFMuxYk74C1IOP/QQ+oYJ+5iill2ANVIcdzoOEEhHwRR9v0ION8OID2BO3dedYwYtx1G9b4w9s2UjBdcAPz2mxJSaSqBMx3vUV98sQhAEYD61hurAKxduzYaNGiA0047DZ07d0ZDJs1McUlSADJ2HKP416ihkpYznZOLEuaj6eJ9vrSRBG46D8yaBYwbByTxu8gUc3AHkD88uAORWyrlDmCAO02ZQPIJQHoCN22qQtpwJynJH2Iuvwcm9k3bdvUtdYmlWFt9+wKXXqruEz/7rAhAEYD6lherAFywYAGeeOIJDBo0CO+88w4OOuggnHHGGWjfvj1q1aql32tPaiYpABl8lkFoGzcG6E3qqph8NF29O8l24sa9dKnK3MKdXIp5hk+Ju9hgDryA2edsERiIB95pPPbYuBGVfp8N5kKtp10A8gcknUEYysblaULp0Yi2RhRjHW2PzVrnLvSZZwKHHw5cf70IQBGA+nYUqwDM7tZbb72FRx55BE8++SRWrFiBTp06ZcTg7ilKSJmkABwyRN2vCry/9Ie8eM24P5o8BqaAZRgK7mgmVeLGzRR4226rdnApILLTOcXFgS1misALL1SiISi8z8n7ZD6KP/bRFnOA88MP1XEhL+Bz16hOHfWXNB4Bs9/EQYeCUaNUaJtyKLpjHWRRYviXtBddzGnHmdt/E9xJrt++8J+YACQB8+bNw4ABA3DLLbegRo0aWLJkCVq0aIEHHngAOzNBrOclSQPifQ96H7oOWWAykWyGib9c//Uv/nJV9wGTKnHjJk7u/n39NZDUTQgXmBlDjvmAg/L008BxxyU1iqXf6wIz33Laacr5g3Z72WXpF4B//7vyRL/jDnWcWA5Fd6xvvFGNI+ORBt7cacWvizmt+Ar12wR3kuu3L/zHLgA5UM8991xm92/06NFo1qxZZufvpJNOAo+Ie/ToAe4OfvDBB75wVLAfSRoQvX95d4ceYPRGdFVMJpLNuxm8tFcvtaA+8ohNS3bPxo3brrdunnaBOfv4k72iiOdi6mtxgZnY/vY35QBCwXvYYekXgBRBHDt6Mw8c6OvoheuX7ljvs4+KpMAfoswBnNbCo/zPPluKTz4ZiUoK98Px0h3r7LFNcv32xcZiFYAXXHBB5siX5eSTT0bXrl2xyy67rMbF3Llz0bhx48yxsO+lHA3IZCLZjBMDrp56KnDQQcD//Z9NS3bPxo3brrdunnaBOVcAMpfqsGFu+hdFKy4w89O03nrq6J6/U3l1Ie1HwDzOp/jhTuCAAVEwH3+bOmO9YAHAo1+OaVJ3cV0w8+ab6jpQgwYr0a/f8yIANUgtx/VbA/ZqVWIVgHT6oOjr0KFDQaePZcuWYdKkSWjVqlVYLLHXL0cD0vlouiSa0evpAcv7cEE6LZft67YVN+4rrlCxDxn+hnlYkyguMGcLwLXWUrth5S4A58xRoYsYT5n4mUM27QKQ9xh5D7VcPIB1d4Weego44QSA+xDvvpvELHTzzp9/BurVU0L24YdH4ZRTDqyYgN+6Y53LdDmu32GtKTYByMWmW7du6NWrF7beeuuw/fSyfpIGdPfdwKabAkxDtfba7uhxIQrC9CZYTOkE/uuvyThDmH5AwuDMrbvTTgAdCZhP9uCDbVoyf9bFWGcLQGYiyL4PaN6z6J50gZkpGI84YpVoSLsXcHRsJ9uyzliffro68uY9zttvT7a/tm/fay9g+nRimYI+ffYQAViC0CTXb9uxdvV8bAKQHa5Xrx6mT58uAtBy9OhpWLeuamTRInUc5arofDRdvUsJLxXQmr9c6RDxl7+4bF2/rThxc7eFIWC4c0QPaIbySaK4wJwG8ZPNrQvMgQPWiScCf9xoSWL4Qr0zDG6G9SmHncB8mLPtlbtm222nvju8fsJrKGkuF10EcGOgXbvPMHx4QxGAIgBLmnOsApABoHfddVd07969ZMfSUCGpXxDcOeIOEndbuOvisoRZKFy9l16wX36p0moxHVUSJU7cdOBhGj8eIXLXM6nAsy4wV6IAZNYMZs/o3Ru45pokrDX8O3XG+p57gLvuUo4gacFVjIlSApDfG6bQ5I8x3gXkFYY0FzokMSf8Vlv9iI8/XlcEoAjAkuYcqwC86aabcMcdd2QCQO+1115Yl9FHs8qFDCqWopKUAGSsLqYR23VX4J133BKms1C4fSPQv7+Kpca7OEkERCaeOHGPHat2G7j7wNhrSRUXmLMFIEURw4jw+i53InwsLjC/+irAQOwcw6Tub4blVgf3nXeqo1A6gvBuXNpLKQHIH53c+WPuX97JTXvhTiZTglZVrcR33y1D/fo10w5Ju/869p3bWFLrtzaoGCrGKgC34s3pAqWqqgqfffZZDJDdvSIpA2IO0m7dVOR3JnJ3WUwmksv3J9VWnLjpZXnWWTyqAXifLKniAnO2AGRcPO4ecVeFYTV8LC4w+4irVJ90cAc/LBkUmqcMaS+lBKCvQbtteN9225X49NMqvPDCMhxxRA2bplL1rI59iwBcc0hjFYCpsiiNziYlABk3j/HzzjkHuO8+jY6GqGIykUI0723VOHFzt4EXzrnhzSO3pIoLzNkCcOpUtSPGjX0GiE4iu0kpLl1gLvUOH/+ug5te6Q0aqCsJFEe8m5vmUokCsH//5Xj77Q9x9dXbY9ttZQewmP0mtX77NKcSEYC///47Zs+ejW222SaTASStJSkDCu4g3Xwz0LOnW/Z0Fgq3b1ShNHgUytRaLoNah+lnnLgp3LmL268fcMEFYXrptq4LzLlewHTiYUBahvRhaB/fii3mjz4C3nsPaNoUSFMwAx3cdP7YaCOA6RkZZH6PPXwbvXD9KSUA+/RRKQu33z5cuz7X1hlnn/tv2jcT3Emt36YYo3guVgG4ePFiMBj0o48+msEyc+bMjEcw7/5tvvnm6OlazUTBWFabSRlQ69bA+PHAv/8NdOzoFqTJRLLtwciR6jibaaDfesu2NbPn48ZN72emgnMZwicscheYc51AGNORO4FMK9ahQ9geRV/fFjN/dF11FdCpE/DEE9H319UbdHHz/ubEicrJ5ZRTXL09mXbyYc5NXRjFKUoyaNVbdcc5yT5G8W4T3Emt31HgN20zVgF40UUXZYI89+/fH4ceeijeeeedjAB8/vnncd1112EGf3amqCRlQO+/D8yapY7beGTjsphMJNv3Ew8DsTKQKXcfkihJ4E4CZ/Y7XWDOFYA81mZKv2uvBW64IWmEa77fFjOF3+DBAHePrrzSP3yFeqSL+7zz1LUS5sVluJs0l1zMzHZC+/zqq1WouOPJO7ncCSyHQsyDBo1DzZoHYt99a6BJk3JAVRqDrn1nt5TU+l0aTXw1YhWAjRo1wtChQ7H33nujbt26ePvttzMCcNasWWjatCk4IGkq5WhAJhPJdswYjyuIZeg6rqFu35LArdu3qOq5wJwrAB9+GGA8sqOPBoYPj6rn5u3aYuax6NtvA889p4Kwp6Xo4qYjz733qpOFSy5JC7r8/czG/MILNXHccQCPubNLEO+QO9blIAKJuWXL7/HGG5vj1lvLw7tZxwp17VsEYI79r1yZOyV06Dars8466+C9997LiL5sAUgh2LJlSyzi6p+iIgLQ3WBtuKHa/WM6ppz00O5eUqQlkw+ISceYs5ML6377Jb/D4gJzrgBkJgJ6qDNMEe84+lZsMDNUER1ceFeVO/DbbOMbusL9scGdHpSr9zTA3LZtOzRpUjMTazRfoQhk+CkGZU8qJqcrjon5rLM+xsCBu+DII4Hnn3fVst/tmNh3Oa7fYUcp1h1A5vc97rjjMvcAKQB5BMzQMOeff35mF/C///1v2P4nWj8JA2LqNP5a3XFHdW/OdTGZSC76sOee6v4fw9pEgatUH+PCzePRM84ADjkEYNiNJIsLzJUUCHrmTOUwwHub9JL10cu5kD25GOskbdXk3QHmddc9HG3alHY2HDdO5SVPcyHm/v1fwxVXtAJ/VH//fbrs1JR7E/tOYv02xRfVc7EKwNdeey1z969Tp04YNGgQzjrrLLz//vt4/fXXMWHChExw6DSVJAyI4o+BWvfZRwWjdV1MJpKLPrRvr47VeP+IF7PjLnHhpgMBHQnOPVcdtSVZXGCuJAE4bJg6JqQH8LRpSY5c+HeHHWumKeSOZ5JOSuFRrv5EgPmnnw7HqaeWFoC823nSSbZvTfZ5Yn7++Zdw6qlHYvHiKvB+NbNGlXsJa9/kI4n127dxiFUAEvy7776byQYybdo0rFixInP3r0ePHpkUcWkrSRgQj9WYSS+qPKQmE8nFuAV5LHv0AG65xUWL4dqICzeznTDLQt++yd+xcoG5kABkbmf+LchZHW40oqttg5mxNxmDk96x9JJNUwmDmz9OGKaIqeHOPjtNKPMLwErbARw5ciTuuutIjBtXDQ8+qK5klHsJY98BF0ms376NQ+wC0DcCbPqThAHx/hhTpzGYMC/5ui4mE8lFH3j8wvtj++6rMknEXeLCzU1u4uTdHN7RSbK4wJxPAD7wgEopxt0UCgmfig3mL74AJk8GGOuQdpqmEgY3f4TRA9iHXWobjnPvANL7N9+N93K7A0gBOGXKEbjppuo4+WTg8cdtWEzHs2HsWwTgqjGNVQBWr14dX3/9NTbZZJPVrOqHH37I/LflPHNIUUlCADK2GsMZ8Nf5+ee7J8tkIrnvRfwtxoGbiw9D3dDZ/YMP1D3OJIsLzPkEIHc4udP5t78BdHrxqbjA7BMe3b6Ewc34htzlbNkSmDBB9w3+1cvGHHgBs5fZIrAcvYApAGvVOhzt2tVA48bKuSWNJcz1kjD2LQIwIQFYrVo1fPPNN2sIwHnz5mWygvz6669adjpx4kTcfvvtmWNkCsphw4ahPS+R5Sm8ZzhgwAD069cPF1988Z812I/LL78co0ePxs8//4ztt98eV111VcZJRbckIQD/+lcVaDeqMBQmE0mXL5/rxYGbF7L524eLzuLFyafaigozs7ownyzvjzHEj0+elVFh9tm22bcwuOmMRaesDTYAfvhB2WsaSy7mfHEAGzZUJyrlEAIme5xbtmyHsWNrZnaquWOdxiICMPpRi2UH8O67784gueSSS9C7d2/UqVPnT2Tc9aOgmzNnjnYg6JdeeikTUJr3Bzt06FBQAA4fPhzXX389vv/++4zYyxaAbdq0yYSd+ec//4n69etj8ODBmWDUU6dOxZ78+mmUJATgppsC330XXaqmMAuFBkXaVXhnjAvP558DRxwB1Iw5jWUcuLnrRw9nLqiffaZNTWQVo8LMjXze/ePvOaZO8ynVlilmhhDhzhgdQOjBnbYSBjdT+fETzXHksenmm6cNrepvLmbuvNPLN8g3wAxEHEuffqDYMh1mnG3fFfXzIgCjZhiIRQAy1AvL559/ji222AI8Cg5KrVq10LhxY9x4441o3rx5aMRVVVV5BeBXX32VaW/UqFE4/PDDM+IvWwBShN5///04JSvf0UYbbYTbbrsNZzBOh0aJWwByQV1nHdUx/jKnm7/rktQHhAKQ2Bhj7dNP48+zGiduLqw+LDpRYubx75QpyuGFXuu+FFPMgfc9d+B5DzBtJSxuXk+geGdkrrZt04Y2vwAcOxY46KBVWBjKh3Edy6mEHWefsYsAjH50YhGAAYzWrVvjP//5Dzbg2YKjkk8A0rv44IMPxtFHHw2mn6PAzBWADEdTo0YNPPbYY6hXrx6eeuopdO3aNZOdhMfR+cpvv/0G/hMUCsCGDRti/vz5WC9IZeEIV75mKBwYKPmLL6pwxBErIzma4QeEx+LcIa0Z8zbcTjvVwKxZVRg9ehlatcoJ2R8hr2w6SdwRQyvYfJSYzz67Oh55pBp69lyOG29ckRTENd5rirl372ro3bs6OndegYceStddZRP7Pumk6nj22Wq49dbluOQSf8YvjCHljvWtt1ZDr16rNh8WLlxalgIw+H4vXFgTDz1UDfPmMeRU+saQAnCDDdRRUKmxMpnXXL95+seTwDjW7zC2G1fdWAVgFKDyCcCbb74Z48aNy+z+8e/5BCAH/YQTTsjUoRBklpJnnnkmI3wKFR4n35AnwSmPj/m8FDsGrruuBd5+exNceOF0HHjgF3aNydOJMvDii1vhoYd2Q7Nm3+CaazzzBDFg5rbbmuG11xqgS5f30L79pwYtpOuRUaMa4b336qNlyy/x179+m67OF+htnz5/w+TJm/351yFDRqB27fSJed3BWLBgLZx++qGoqlqJxx8fiTp1luk+6kW9xYuro2PHIzJ96dXrdeyxx3dOT04WL16Mjh07igCMa7R5348BoMeMGYPvvvsuEwcwu4zlHn3IkisA6RjCI9/p06dj8z8ur+QTgMxGMnnyZPTp0yfzK4D3Beko8sorrxSMSZj0DmBIaoyqm/ySMnpRnofOOqs6Bg6shuuuW46rr473F2scuNu3r44ffwTuvHMF9tor3h3OfGMUJeapU6tw003VcMABK3HRRfGOZTF7NMW822418NFHVXjhhWVo2zb5sQs750xxh32PT/WzMdeoURONGtXAN9+s8mgptavkExbdvuSO84471sCnn1bh+eeX4dBD02O3w4ZV4ZJLqmPevFXj1aDBSvTtuxzHHLMmDhP7lh3AmO4ABsbLlG8UgBRom222WWZ3LrtQgIUtuQKwf//+6N69O+hxHBQKT/47j2vpbPLpp59i2223zeQl3nnnnf+sx2Nj/vcHGMhMo8R9B5D3cd57D2jVCuBdpChKkndIbrwRuO46lSrtX/+KAl3hNuPAXb++urv59tvAbrvFi6+QAGTIiHbt2sV+3J8UepNxZlYM3hVbtgyYOxeg52jaignutGHM7W825m++qYktt1R3b4NoY5VwB7BLF+DRRwFmILrppnSMKL21GYwjN2ZjsZA9JvYd9/rtI/uxHgFzp4137rjguCq5ApAxBRkaJru0bds24+xx2mmnZcK9MBvJbrvthg8++AA7ZgVjY71GjRplwsbolLgNqGtX4OGHAQolZiSIophMJFf94IeKH6wDDwSCzeC4PtJR4164cJXT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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 272.6675 ± 0.6739 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 145, 1e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.65"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
" 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
" 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0009\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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4tFHH90fffvf//6H2267DW+//TaOOuoo9OzZE++++661PTto0KC0VuAW8A033ICvv/4akyZNQokSJdC7d2906dJlf92CtoBnzZqFRo0a4YMPPsA999yDr776yur71VdfRdWqVa02kgng6tWr0bhxY+vPsGHDUKhQoQLH+a9//QsPPfQQVqxYgfLly1tj69Gjx/461OHmm2+2/v2tt95C6dKl8cADD1j/LZ1Qt0Rp2LAhqFPyFrAf27Fd4kGbzJkzB8WKFUOTJk3wzDPPWBFUEUFAEMg+BIQAZp9NRSNBIDACJBGLFi3C3XffjbZt2+KNN97Aww8/jKZNm+Kyyy4D/53k4M0338QPP/yAzZs349RTT7XICEnPN998g5tuugmdO3e2SBXl9ttvtwjfK6+8gr/85S+47777LAJDUueWAP7yyy9WvdatW2PatGno1q0bpk6dahE0ihsCWLduXTzxxBM45phjcOutt4JbxXPnzj2EAC5dutQiQSSy/fv3T4vpwoULUadOHUtfYjZv3jxL52effdbChUICuHXrVotMs20S6fvvvx9ffvklTjvttAL7mD9/vtU+CeyZZ55pkXIS7VQE0IvtjjzySKxfvx7Vq1e3bNahQwf8/vvvFknevXs3Pvzww7S6SwFBQBDIPASEAGaezWTEgoB2BEjwSIw++ugjqy/+vWTJkhbxGjlypPXfNmzYYEW5PvnkE4vYMfrF6JwTqSLxIYngGbXt27fj6KOPtuqSHFFI5ipWrGhFv9wSwNNPP90ifI60a9cOv/32G6ZMmeKaAJJA/f3vf7fKs17z5s0twnP44YfvjwA+99xzaNGihRVhZFTMjTA6yjOH06dP31+cBPq9996zCJ5DAOvXr49Ro0ZZ/59n90iG+/bta5HRgiS/M4CpCKAX29WrV8+KWn722WcWqXZkzZo1qFSpEpYtW2aRexFBQBDILgSEAGaXPUUbQUAJAiSAjDJx29ORE044wdr+5TavQ164JfrOO+9gxIgRFkHkdqoj3ArmFuv3339vRQidvx9//PH7y9SsWRPcynRLADt16mSRFUcGDx5s1eVWLcVNBPCnn36yon8U3hCuVauWNUaOi9G7IUOGYOfOndb2NSOMboXttGrVyoqUOkJsrrjiCotgcjudEUBGRR0MWa5GjRpo06bNQXql6tMLAfRiu0suucQiwTNmzLCiionCbXuSZGeb3y0WUk4QEATij4AQwPjbSEYoCISOQKrLGanSsDiEi+cEeZ6N27uOMJUKCR63iDdt2mT93SFaThkVBJAkcNWqVa4JIMmoc2PWGSMJJPUjARw7diwqVKhgRS1JinjW0I1QF26PJxJUpma58sorDyKAyalsSIyZtsbZKs+vLy8EMPlcZUG2Y98keNwK5tZ4sjDKyzOBIoKAIJBdCAgBzC57ijaCgBIEvBJAnk9LtQV87733WjnqSKZ4Xu3111+3CBGFRIxbwDx35jYCeMYZZ+zf7mUbV111lbXF7GULOB0BJGnjmcC8vDzs2rXL2tLlpZV0kt8WMMfG84SUVETMLQFct24djjvuOCxYsABnn332/uGk2gL2SgB5DpH24zjdpsxJh4f8uyAgCMQbASGA8baPjE4QiAQBrwSwdu3a1jmx66+/3tom5rmxG2+88aBLILwBTDLEKGG5cuWsyw+8YODlEgjJG+sxasXoXNeuXa0zdrycQnGzBeyGADIyuG3bNisyxnN677//PooXL16gLXjxgjg4l0B4NpI6J18C8RsB5IUMRiOpP7HlmUVuu6sggCSXJI3cjuf2NG/+8qbyuHHj8NJLL1nb1yKCgCCQXQgIAcwue4o2goASBLwSQBKydGlgSKgS08AwPQrJm5c0MDwDyAsVkydPtqJyvKRBEuiISgLINjlmkksSIF4+SbcV6qSBWb58+f40MImXSIJEADme4cOH45FHHsHatWvByyT5pYHxGgFk2xwzL+3MnDnTOgPJM5/NmjXDwIED91/sUeJc0oggIAjEAgEhgLEwgwxCEBAEBAFBQBAQBASB8BAQAhge1tKTICAICAKCgCAgCAgCsUBACGAszCCDEATMRoD5BgtKNcKt2KiF43PyIiaPhcmp+SeIPP744+CfVMLt3sT8h0H6kbqCgCAgCBABIYDiB4KAIBA5AsyTx3Nt+UmVKlUiHyPHx3GmEt5w5p8gwsTY/JNKjjjiCOsGsIggIAgIAqoQEAKoCklpRxAQBAQBQUAQEAQEgQxBQAhghhhKhikICAKCgCAgCAgCgoAqBIQAqkJS2hEEBAFBQBAQBAQBQSBDEBACmCGGkmEKAoKAICAICAKCgCCgCgEhgKqQlHYEAUFAEBAEBAFBQBDIEASEAGaIoWSYgoAgIAgIAoKAICAIqEJACKAqJKUdQUAQEAQEAUFAEBAEMgQBIYAZYigZpiAgCAgCgoAgIAgIAqoQ+H9QaH/C345jYwAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 253.6669 ± 0.5183 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 145, 1e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.7"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
" 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
" 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7tnQm4VlX1/xci4sTgLMpFHCn9mUPOiXKfQoNyQlOhfpZZ/LJBzFlzxiGzEn6apvZTSQU0wgHDAQsQNc1M+zuAlFF6ATUnci70/p918L3cezkv57xnrf2ec+77Oc/jI3D23med71rru79n7bPP2621tbVVOEAABEAABEAABEAABBoGgW4IwIbxNTcKAiAAAiAAAiAAAhECCEACAQRAAARAAARAAAQaDAEEYIM5nNsFARAAARAAARAAAQQgMQACIAACIAACIAACDYYAArDBHM7tggAIgAAIgAAIgAACkBgAARAAARAAARAAgQZDAAHYYA7ndkEABEAABEAABEAAAUgMgAAIgAAIgAAIgECDIYAAbDCHc7sgAAIgAAIgAAIggAAkBkAABEAABEAABECgwRBAADaYw7ldEAABEAABEAABEEAAEgMgAAIgAAIgAAIg0GAIIAAbzOHcLgiAAAiAAAiAAAggAA0x8NFHH8miRYukV69e0q1bN8NIdAUBEAABEAABEACBjgi0trbKW2+9JZtssomsssoqrvAgAA1wtrS0SFNTk2EEuoIACIAACIAACIDAyhF48cUXpX///q4wIQANcC5ZskT69u0r6pjevXsbRip21//85z9y3333yX777Sc9evQotrEBrQOH5eCCxTIswIGYiKMc4oL86BwXWWPiX//6V1RoevPNN6VPnz6uMxwC0ACnOkYdokKwqwvA6dOny/DhwxteAILDcmIHi2UCEByIibjJnrggP9rHRVauCKkzEIAIwEQEsgZu4sAlawAOHas9THBMcB4TXMloIJW5cAUPBV4PBQjAVClX/0YhHVP/u6l+RcgMMvMisyLFtYct5AYPBdWWgHlA4gHJ4wEppM6gAmiYBUI6xmCWe1cmOQQgAjA+rcgNBCACkOJBmkk3K1eE1BkIwDSeq9ImpGMMZrl3zRq47obkPCA4MNkjhJns09AQXMFDsxdXhNQZCMA02YwA5EX3j3d8sqwDsXss6xhop7BdET08IHmJnsIGucGwrPmBADSAHrJrSMeEtLvWsbMGbq3XKXp7cGCCY4KjApiGp+AKHhS9uCKkzqACmCabqQBSAaQC2CELmOCY4LwmOAMFF7Yr+UF+eOUH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mWeekdbWVtHlY632nXPOOdKrV6+ozXXXXScnnHCCvPnmmx1yV5d/L7vsMjn66KNjJ5UPPvhA9L/KoY5pamqSV199VXr37p3rRBTy4prEM2bMkKFDh0biu9px223d5Mgjl33wr7X1462/kfhbti148uQP5ZBDOm0RDmm489hpcXC+bCGHA4vlE1ya3CikE52NIiY6TvbExTIBCA42rlCdsf7668uSJUvcdUbhBODdd98t7777rugS7ssvvywXXHBBVJVTQafB1K9fP1lzzTWjf29ubpZ77rlHzjjjDJk5c6bsu+++EdLXXnttJAw33nhjefrppyOBuNVWW0WBqIcKyhtuuEHmz5/fgQL1mir+tH3cEfd+orabOHFiZBOHyO9/309+8Yvt5bXX1miDY/3135Vjjnla9txzMRCBAAiAAAiAAAikRED10KhRoxpDAHbG5J133pEtt9wyqvrp8u+mm24avfunoqty6AaOtdZaSybpToSY4/HHH5dddtlF9P8777xzJAAnTJggzz33XIfWW2+9dfRu4WmnnRY7DhXAlVcAK6DpcvCDD3aTxYtF+vUT2Xvv1tJ++qV9IPA0S4WjMzEQE8RE3GRBXCxDBRzs+dFQFcC4ZNKlR63gjR8/PhJ6upx75plntjXVHcG6JPzQQw/FCjddCtblZH1vUHcDZ10C7jx4yLX5lA8HdWnGexzLyWz69OkyfPjwlS6F18UpOV+EmCAm4sQw+UFcdH5oJiZsMRFSZxRuCbgzqWjVTSuAukv37LPPlr322iv6e/tNIIcccojoLt/2VcH24+gy8Pbbbx99GmafffaJdg3rJpBHH3002lGsh/55jz32YBNIjLBgsrclcM5aLcjliQliAgFYPbXID/LDKz8aSgCedNJJcsABB0Tf9HvllVeid/1UuD311FOy2WabyW233RZV8X72s5+1vQN4/PHHy6xZs2TvvfeOPhNz8803R1UafXHy2WeflRNPPDESiI899pjoJ2X00I0hixYtkquvvjr6uwpMHZ/PwKxIapAZZOZFZkHUaI6DkhvLwQcLsIAn/B8KGkoA6nt+DzzwQLSzVr/9p1W5sWPHRhW7yqFLuBdffHH0HT/9ZIt+OPqggw6KTr/44ovyla98Jdr88fbbb0e7dL/whS9Ey8brrrtu2xivv/76Ch+CvuKKK/gQNBXAqhnMBMcExwTn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MvMiM/fgzHlAcgMBiACkKpyGhrJyRUidgQBM47kqbUI6xmCWe9esgetuSM4DggOTPUKYyT4NDcEVPDR7cUVInYEATJPNCEB2AYsIpI4A9CJ1A+0Utiv5QX6QH/4PSA0lAM8991w577zzOqC40UYbyUsvvRT9m/728IQJEzqc33333eWRRx5p+7chQ4bI7NmzO7Q54ogjZPLkyW3/9sYbb8hxxx0nd955Z/RvBx54oFx++eXSt2/f1AQb0jGpjahDQ4idp1mIPT7RyA1ET1xkEBdwphdnhtQZhasAqgCcMmWK3H///W34de/eXTbYYIM2Afjyyy/L9ddf33Z+tdVWk3XXXbeDANxmm23k/PPPb/u3NdZYQ/r06dP292HDhklLS4tcc8010b+NHj1aBg4cKNOmTUstqUI6JrURdWgImUFmXmRWh3Ct6yXIDQQgArB6ypEf9vwIqTMKKQBvv/12efLJJ2OjSiuAb775pmibaodWAHfccUcZN25cbJO5c+fKtttuG1UNtXqoh/55zz33lHnz5smgQYNSTSIhHZPKgDo1IokRgAjA+GQjN+wTXJ1orK6XIS7gTC/ODKkzCikAL7300qha17Nnz0igXXTRRbLFFltEeKoAVPGnVT9drt13333lwgsvlA033LANbxWAzzzzjLS2toouH2u175xzzpFevXpFba677jo54YQTIiHZ/tDxLrvsMjn66KNTkUVIx6QyoE6NIDPIzIvM6hSydbsMuYEAjAs24gLO9OLMkDqjcALw7rvvlnfffVd0CVeXei+44IKoKqeCbr311pNbbrlF1l57bdlss81kwYIFctZZZ8nSpUvl8ccfjwSjHtdee61svvnmsvHGG8vTTz8tp59+umy11VYyY8aM6LwKyhtuuEHmz5/fwUd6TRV/2j7u+OCDD0T/qxzqmKamJnn11Veld+/edZt06n0hJTPFbujQoQ3/U3DgsJzYwWLZxiBwICbiJnvigvxoHxdZuUJ1xvrrry9Llixx1xmFE4CdE+mdd96RLbfcUk455ZSoatf5WLx4cSQGdYPHiBEjYrWRisNddtklEok777xzJAB1I8lzzz3Xof3WW28txxxzjJx22mmx48RtUNGGEydOlDXXXLPeuozrgQAIgAAIgAAIdGEEtCA2atSoxhSA6letPGkF76qrrop1swq3b3zjG3LqqafGntel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fvih/POf/5T1119fVl111VQYF1kAVhO0S5YskdbWVunbt2+qe6QRCIBA+RBAAJbPZ1gMAiCwEgRCCsAswJdRAGa5T/qAAAiUCwEEYLn8hbUgUFoEVJhtv/320r17d5kwYYKsttpqMnbsWPnyl78s3/3ud2XKlCmy4YYbyhVXXCHDhg2L7nP27Nly8skny5///GdZd9115atf/apccMEFbdW3d955R4499liZOnWq9OrVS0466SSZNm1atDw7bty4RKx0CfiYY46RuXPnyp133im9e/eW008/Xb73ve+19V3ZEvCsWbOkublZ7r//fjn11FPl2Wefja59/fXXy6BBg6IxOgvABQsWyNChQ6P/fvazn8kqq6yyUjt//etfy9lnny1//etfpV+/fpFtJ554YlsfvYfRo0dH53/1q1/JOuusI2eeeWb0b0mH3lv7Y9999xW9p85LwFl8p+MqHuqTBx54QNZaay3Zb7/95LLLLosqqBwgAAL5IoAAzBd/rg4CDYOAiog//elPcsopp8gRRxwht9xyi5xzzjmy//77yyGHHCJ6XsXBrbfeKi+88IK88cYbss0220RiREXPvHnz5Jvf/KZ85zvfiUSVHt/+9rcjwXfdddfJxhtvLGeccUYkYFTUpRWAr7/+etRvxIgRcu+998r3v/99ufvuuyOBpkcaAbj77rvLJZdcIhtssIF861vfEl0qfuihh1YQgE8//XQkglTIXnzxxYm+f/zxx2W33XaL7lcxe/jhh6N7vvLKKyNc9FAB+NZbb0ViWsdWIf2DH/xAnnnmGfnEJz6x0ms89thj0fgqYLfbbrtIlKvQjhOAtfhuzTXXlMWLF8unPvWpyGdHHXWUvPfee5FIXrp0qfzud79LvHcagAAIhEUAARgWX0YHARD4GAEVeCqM5syZE/2L/rlPnz6R8PrlL38Z/dtLL70UVbl+//vfR8JOq19anatUqlT4qIjQd9TeffddWW+99aK+Ko70UDHXv3//qPqVVgB+8pOfjARf5TjyyCPlX//6l0yfPj21AFQB9dnPfjZqr/2+8IUvRIJn9dVXb6sAXnXVVfLFL34xqjBqVSzNodVRfefwvvvua2uuAvo3v/lNJPAqAnDw4MFy4403Rn/Xd/dUDJ933nmRGF3ZUe0dwDgBWIvv9thjj6hq+eijj0aiunK0tLRIU1OTPPfcc5G45wABEMgPAQRgfthzZRBoKARUAGqVSZc9K8dmm20WLf/qMm9FvOiS6B133CE33HBDJBB1ObVy6FKwLrH+4x//iCqElT8PGDCgrc1OO+0kupSZVgB+/etfj8RK5Rg/fnzUV5dq9UhTAXzllVei6p8eukN45513jmxUu7R697//+7/ywQcfRMvXWmFMe+g4Bx10UFQprRyKzZe+9KVIYOpyulYAtSpawVDb7bDDDnLooYd2uK+4a9YiAGvx3YEHHhiJ4BkzZkRVxfaHLturSK4s86fFgnYgAAK+CCAAffFkNBAAgSoIxG3OiPsMS0Vw6XuC+j6bLu9WDv2Uigo8XSJ+7bXXoj9XhFaljYcAVBH4t7/9LbUAVDFa2TFbsVEFpN6fCsBJkybJJptsElUtVRTpu4ZpDr0XXR5vL1D10yyHH354BwHY+VM2Koz1szWVpfJq16pFAHZ+r3JlvtNrq8DTpWBdGu98aJVX3wnkAAEQyA8BBGB+2HNlEGgoBGoVgPp+WtwS8GmnnRZ9o07FlL6vdtNNN0WCSA8VYroErO+dpa0Abrvttm3LvTrGyJEjoyXmWpaAkwSgijZ9J3D48OHy73//O1rS1U0rSUe1JWC1Td8n1CNOiKUVgIsWLZJNN91U/vjHP8qnP/3pNnPiloBrFYD6HqL6T+1M+8mcJDw4DwIg4IcAAtAPS0YCARBYCQK1CsBdd901ek/s6KOPjpaJ9b2xb3zjGx02gegOYBVDWiXcaKONos0PusGglk0gKt60n1attDo3ZsyY6B073ZyiR5ol4DQCUCuDb7/9dlQZ0/f07rnnHll77bVXGjO68UJxqGwC0Xcj9Z47bwLJWgHUDRlajdT7V2z1nUVddvcQgCouVTTqcrwuT+vOX92pPHnyZLn22muj5WsOEACB/BBAAOaHPVcGgYZCoFYBqIIs6TMwKqjafwZGP4+i4q2Wz8DoO4C6oeKuu+6KqnK6SUNFYOXwFIA6ptqs4lIFkG4+SVoKrXwG5i9/+UvbZ2DabyKxVADVnl/84hdy/vnny8KFC0U3k1T7DEytFUAdW23WTTszZ86M3oHUdz4///nPy09/+tO2jT0NlQTcLAgUCAEEYIGcgSkgAAIgAAIgAAIgUA8EEID1QJlrgAAIgAAIgAAIgECBEEAAFsgZmAICIOCHgH5vcGWfGtGl2LwPta/yXcTOtujHqfU/y3HRRReJ/hd36HJv++8fWq5DXxAAgfIhgAAsn8+wGARAIAUC+p08fa+t2rHVVlulGCVsE7VP7Yw7dIez/mc59MPY+l/cscYaa0Q7gDlAAAQaEwEEYGP6nbsGARAAARAAARBoYAQQgA3sfG4dBEAABEAABECgMRFAADam37lrEAABEAABEACBBkYAAdjAzufWQQAEQAAEQAAEGhMBBGBj+p27BgEQAAEQAAEQaGAEEIAN7HxuHQRAAARAAARAoDERQAA2pt+5axAAARAAARAAgQZGAAHYwM7n1kEABEAABEAABBoTAQRgY/qduwYBEAABEAABEGhgBBCADex8bh0EQAAEQAAEQKAxEUAANqbfuWsQAAEQAAEQAIEGRgAB2MDO59ZBAARAAARAAAQaEwEEYGP6nbsGARAAARAAARBoYAQQgA3sfG4dBEAABEAABECgMRH4/5dZ4P9VsX93AAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0010\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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yURyTViJilkfQL7+zX8Ekm223XbKRzCIkDBR4faDO9M+BLOckJjqThzaiX6LfssJYOmZmkgDcOjQodhyyy3RsGFDzJo1C7169cLq1aszPoObbbbZJowsXLgwc518xhln4NZbby3K2MqVK8F/soUGYIMGDbBgwQJUq1YtDmui4xi5aI4dOxYtW7ZExYrhLiDDhpXhtNPK/20A/v30NzNiPgsuQ5Uq6zBixBocdljeM2FHVM4VosTtPLpgagjmcPU7GCm661VknQ5Zp1HO2RNu3X2L+zf9/5csWZKY/dvdarChViINwHwS+FCExuCQIUNwUl4wOSrBMcccg6222gqvvvpqSaOnd+/euOmmmzbheNCgQahSpYou91K/AAMffFAH/fr9A6tWbYj8XLPmn6hceTXmzauKChXWoHv3z3H44TmBAoVJYUAYEAaEAWFAg4Hly5ejU6dOYgBqcGZd1UI+gIUG2bhxY3Tr1g09e/Zc/+fff/8drVq1yhhvI0eOROXKlUvikxPAcMS/114V8L//qRPAESNW4+ij1+Gvv4CuXctj2LBymf9+221rcPXVa5GNEeh1ZGn85SyY03EqZHpC4nVORd1e9Fv0u5QOyglgAgJBuzEAecVbr149DBgwAGeeeWZGJyh8Gn+8Eh41apTRCZ74APq/xK9dC2yxBbBihep72TL17yz8W48eQL9+6t+vuw64/XZ/xiD+QunYLNIo56wByHWuTRt5EOHPimFnL6Lf7vU7ifu3rlbG8gp42bJlmD59egbrfvvth379+qFFixaZMC/8h1e1DA9Tp04dzJ49G9dffz3mzJmDadOmoWrVquDJH33ceATMGIJbZC0MALVr10Z5l68MkqhAUS8gfOTRoAHAh9h//qn+N788+CBw/fXA228DBxzgTuX/+APYcstNjcps66hxu0Phby3BnA6jVwxA90aBvzMs/N7SOKdN9TuJ+7euxsXSABw/fnzG4MsvXbp0wSOPPJIJ6vz555+DoWBoBLIugzzzwQZLsfb8Gx+NNGJKChcliQpkwwLy22/A3LnA3nsXFwIfa9euveHvfEVcym4XA3BTLm2QtYtp5muVNGI23SB9JT6CztIo6zRiNtXvJO7futMslgagLsig6idRgeK4gHz6KcCb/RdeAJo0KSxtMQDFADTdKIJaP8LsN47z2is/gllOuEvpUBL3b905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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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tIVZv379TPaVVbvxhAW2OCMlKMPwS7+SX3YROt4gEED0xy8sghg7/cIjXuInXp0VroQD80GDBqkPCVhZw2IdM0gAY40o6yMCRIAIEAEiQASIQMARIAEM+ASxe0SACBABIkAEiAARiDUCJICxRpT1EQEiQASIABEgAkQg4AiQAAZ8gtg9IkAEiAARIAJEgAjEGgESwFgjyvqIABEgAkSACBABIhBwBEgAAz5B7B4RIAJEgAgQASJABGKNAAlgrBFlfUSACBABIkAEiAARCDgCJIABnyB2jwgQASJABIgAESACsUaABDDWiLI+IkAEiAARIAJEgAgEHAESwIBPELuX8xCIxVcQ8Ob4+fPnq284R0v42sT+/ftVPjsJb6zv3bu3+he09Pvvv0v79u3V96bz5s2rxpddktP5CB1fLOrwEq+pU6cqu8lO82IHD3z2Dt9af+211zJ9zitSHcePH1fff8YXgvC9diYiEDQESACDNiPsT45HICgEMNpivXv3bilcuLAUKlQocHOBzxa+9957alHFN3XxbeIGDRrIvn37pHjx4oHrb2iHDhw4IKdOncropxM7CBIBjPSg4BUBdIKVF8bw4osvKtv78MMPLVX//PPPy4IFC9S3wpmIQNAQIAEM2oywPzkegVgsZrFQAL1arL2cwNtvv12RUygwSPjGdSwIIIhZWlqa5MmTx8vuZ6rbiR2QAI6JOj865rBixYrqu6341reVtGfPHvVtcCj1lStXtlKEeYiANgRIALVBzYaIwGkEsPBXq1ZNChQoIJMnT5Z8+fJJ165dM30Q/LfffpMHHnhAKQ25cuWSW265RV544QW54IILVB3hBBDkpW/fvvLKK69I7ty55b777pM//vhDoDpF2gI2iFPonBgfJQ9XdhISEmTixIny7rvvyrJly+Siiy5S7Zx//vny73//W7744gs1nunTp8ull16aUSXyo58//PCDWgQ7dOggAwYMiEqyUE///v1l3bp18vfff8tVV10lo0ePlpo1a6o6wz+mjvoMImg0ir+B2IIMjBo1SvV7586dUqFCBRk4cKCAQIYSxw8++ED16dtvv5XFixcrMhmasOXXp08fmTNnjlIZS5UqJV26dJF+/frJQw89JL/88ovCBWnMmDHy4IMPysKFC6VZs2bqbyAMKI8yoeQN/3943zdv3qzGCLweeeQRWblypRoH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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 238.8665 ± 0.3901 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 3e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.725"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
" 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
" 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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p85AAEZQpKdjIswy75o1cM0NyXlAcGCCq2WCyzlc63568oP8CM0PXfYdMKB95a9tXxWBWglcsKDrLAdnzQ9PnVE4AXjOOefIueee2y6ONtlkE3nllVdEATzjjDOSHanPP/+89O7dW/bbbz+58MILZbPNNmvt8/7778vJJ58s06ZNk3fffVc+//nPy+WXXy79NaI+PN566y05/vjj5dZbb03+5eCDD5ZLL71U+vTpE0ycno4JNqIODbMGbh1Mq+spwIEJLnSCq2tgFuRk5Af5EZofc+eKDBmSHrhz5ogMHpzergwtsuaHp84opACcPn263HXXXa0+7d69u2y00UaydOlSGTlypBx77LGy8847i4q4E044QZYvXy4PPvhga/vjjjtObrvtNrn22mtlww03lJNOOknefPNNeeihh0TH0mPYsGHS3NwsV155ZfL3sWPHyoABA5J+oYenY0JtqEe7rIFbD9vqeQ5wYIILneDqGZdFORf5QX6E5se0aSJjxqRH7tSpIqNHp7crQ4us+eGpMwopAG+++WZ55JFHgnz6wAMPyB577CEvvviibLHFFolIVLF4/fXXy1FHHZWMsWjRImlqakoqhwcccIA8+eSTMnDgQLnvvvtkzz33TNro/++9997y1FNPyQ477BB0bk/HBBlQp0ZZA7dO5pmeZnU70hoJhzRQwWIFQuCA6KmWK8TF6vODCmCPNIpt/d1TZxRSAF588cXJ8u7aa6+dCLQLLrhAtt5666qAaaVw//33lyVLlkivXr3k7rvvTpZ8teK3/vrrt/bRiuGhhx6aLC9fffXVcuKJJyZ92h66/HvJJZfI0UcfHeQcT8cEGVCnRo1CZmk70hoFh5CwAgsEYGi1JySeulob8mP1+VF5BnDhwlU3gWhPngFcmRGeOqNwAnDWrFmybNky2X777eXVV1+V888/P6nKPf7448lybtvjvffek3322Ud23HFHueGGG5Kfpk6dmgg4fQ6w7aEicauttpLJkycnglKXh5955pl2bfSc2nf8+PFV+UjHbDuuOkYri6+//noiPrvqoWQ2e/ZsGTp0qPToEX7nUiY8fvObbjJqVPcPd6R9uA0tIaIVW9RuuukD+eIX/9XlcQj1WSPERAgW4LASJbAAi2o3BZ3NHRXO1T4tLdU597DDOmwRDknKgrbJmh+qM/r27ZusblrrjMIJwI6+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OjExY4bIuHEizc0rr6l/f5FJk0RGjKgtAIkLbpqtbpo9dUbhKoDnnHOOnHvuue2w22STTeSVV15J/q2lpSX5/corr5S33npL9txzT/npT38qH//4x1v7DB48WObNm9dujKOOOkpuuumm1n/Tvscff7zceuutyb8dfPDBcumll0qfPn2CM93TMcFG1KEhZAaZWZFZHcK1rqcgN7qGAFTxN3Kkzi/tw6dbtxV/nz69NhFIXMCZVpzpqTMKKQCnT58ud911Vyt+3bt3l4022ij5+0UXXSQ/+MEP5Nprr5Xtt99ezj//fLnnnnvk6aeflvXWWy9powJQfzvvvPNax1h33XWld+/erX8fNmyYNDc3J0JSj7Fjx8qAAQPktttuC55APB0TbEQdGkJmkJkVmdUhXOt6CnKj/AJQl30HDGhf+WsbRCoCtRK4YIFI9+5h4UVcwJlWnOmpMwopAG+++WZ55JFHVsk0rf5tttlmcsIJJ8hpp52W/P7++++LVghVGH7jG99oFYC77LKLTJw4sWq2PvnkkzJw4EC57777kgqiHvr/e++9tzz11FOyww47BGW5p2OCDKhTI8gMMrMiszqFbN1OQ26UXwDOnSsyZEh6yMyZo8WF9HbagriAM60401NnFFIAXnzxxUm1bu21104E2gUXXCBbb721PP/887LNNtvIww8/LLvuumsrvoccckiydDtlypRWAfj4448ny8UqDrXad/bZZ7dWCK+++mo58cQTZcmSJe18pGNccsklcvTRRwdluadjggyoUyPIDDKzIrM6hWzdTkNulF8ATpsmMmZMeshMnSoyenR6OwRg+WMizMu1tcrKFZ46o3ACcNasWbJs2bJkCffVV19Nlni1KqeCTpd5P/vZz8rChQuTSmDl0OXbF198Ue64447kn6666irZaqutZNNNN5XHHntMxo8fL9tuu63Mnj07+V0FpS4hP/PMM+08qOdU8aftqx1abdQ/lUMd09TUJK+//rr06tWrtmgoUWsNXMVu6NCh0qNHjxJZbmsqOLQndmJiRaUHHFbeIJURi3nzusnQoWumksXs2cvlc5/r8JBgJ72Ii3LHRGowZGiQNSZUZ/Tt21eWLl1qrjMKJwA74vrOO+8kVb9TTz1V9tprr0QALlq0SPr169fa9Nhjj5WXX35Zfve731V1y0MPPSS777676H932223RABq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IgZuHvCBAxMcE1y5Jrg8eKLyaAA3BlQA28ZfEecPBGBeDFGi877//vvywx/+UMaPHy9rr712iSy3NRUcVuIJFiuwAAdiohrLEBfkR8e4KGJMIABtNQKjgQAIgAAIgAAIgEDhEUAAFt5FGAgCIAACIAACIAACtgggAG3xZDQQAAEQAAEQAAEQKDwCCMDCuwgDQQAEQAAEQAAEQMAWAQSgLZ6FHO3yyy+Xiy++WBYvXiwf//jHZeLEiTJo0KBObZ03b56ceOKJ8vjjjycvnzz11FPlm9/8Zrv2v/71r+XMM8+U5557TrbZZhv5wQ9+IIcddli7NgsXLpTTTjtNZs2aJe+++65sv/328r//+7/yqU99Khec8sBh+fLlcs4558iNN94or7zyivTr10++9rWvyRlnnGH+Us9aQLXGQmPlrLPOkoceekhefPFFueSSS+SEE05YxaRaz1vLNWVpW6s9abkRpz2pMgAAEThJREFUgoNuqJoxY4Y89dRTsu6668pnPvMZueiii2SHHXbIcglmffLAoq3xisv3v/99GTduXMJReR55YdHVOTMkPxqFM6+66iq57rrr5LHHHktCXefFCy64QPbYY492oV9rLNaSNwjAWtAqYdtf/OIX8h//8R+iQfTZz35WJk+eLD//+c/liSeekC222GKVK1qwYIF84hOfkGOPPVa+8Y1vyB//+Ef51re+JdOmTZPDDz88af+nP/0pEZATJkxIRN9vfvObZPL/wx/+IHvuuWfS5q233pJdd91VhgwZIscdd5xsvPHGiVgcMGBAIhjrfeSFgwpjFUNTpkxJxPeDDz4oRx99tJx//vnJRJfH4YHFAw88IL/85S8TEvve976XCP+OArDW83pjU6s9IbkRgsMXvvAFGTVqlHz6058Wnez+67/+Sx599NEkJz/ykY94X3bV8fPComKM4nbkkUcmLxVXzshTAOaFRSNwZkh+NApnfulLX0rmZL0BXGeddeRHP/pRcmOoInnzzTdPUqPWWKyVPBCAtSJWsvYqyHbbbTe54oorWi3/2Mc+JoceemjyapeOh07ct956qzz55JOtP2n1769//Wsi/PQ46qijkpdDa2Wvcuiktv766ydCUY/TTz89EY/z588vBGJ54fDFL35RNtlkk6TyWTlUSPfs2VOuv/76XLDxwKLthajIV/HXUQDWel5vcGq1JyQ3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lstfWAsCpUVAhdlOO+0k3bt3lylTpshaa60lEyZMkC996Uvyne98R6ZPny4bb7yxXHbZZTJs2LDkOufNmyennHKK/PWvf5UNNthAvvrVr8r555/fWn1755135LjjjpMZM2bIeuutJyeffLLcdtttyfLsxIkTU7HSJeBjjjlGnnzySbn11lulV69eMn78ePnud7/b2nd1S8Bz586VIUOGyF133SWnnXaaPPHEE8m5r7nmGtlhhx2SMToKwAULFsjQoUOTPz/96U9ljTXWWK2dv/71r+Wss86Sv/3tb9KvX7/EtpNOOqm1j17D2LFjk99/9atfyfrrry9nnHFG8m9ph15b2+Nzn/uc6DV1XALO4jsdV/FQn9xzzz3ykY98RPbff3+55JJLkgoqBwiAQL4IIADzxZ+zg0DDIKAi4uGHH5ZTTz1VjjrqKPnFL34hZ599thxwwAFy2GGHif6u4uCXv/ylvPTSS/LWW2/J9ttvn4gRFT1PPfWUHHvssfLtb387EVV6fOtb30oE39VXXy2bbrqpfP/7308EjIq6UAH45ptvJv1GjBghd9xxh3zve9+TWbNmJQJNjxABuOeee8pFF10kG220kXzzm98UXSr+4x//uIoAfOyxxxIRpEL2hz/8YarvH3roIdljjz2S61XM7r333uSaL7/88gQXPVQA/vOf/0zEtI6tQvq//uu/5PHHH5cdd9xxted44IEHkvFVwH784x9PRLkK7WoCsBbf9ezZUxYvXiyf/OQnE5995StfkXfffTcRycuXL5e777479dppAAIg4IsAAtAXX0YHARD4EAEVeCqM5s+fn/yL/n/v3r0T4XXdddcl//bKK68kVa4//elPibDT6pdW5yqVKhU+KiL0GbVly5bJhhtumPRVcaSHirn+/fsn1a9QAfixj30sEXyVY9SoUfKPf/xDZs6cGSwAVUB9/vOfT9prvwMPPDARPOuss05rBfCKK66QL37xi0mFUatiIYdWR/WZwzvvvLO1uQro3/72t4nAqwjAQYMGyfXXX5/8XZ/dUzF87rnnJmJ0dUdnzwBWE4C1+G6vvfZKqpb3339/IqorR3NzszQ1NcnTTz+diHsOEACB/BBAAOaHPWcGgYZCQAWgVpl02bNybLnllsnyry7zVsSLLonecsstcu211yYCUZdTK4cuBesS64svvphUCCv/v8UWW7S22XXXXUWXMkMF4Ne//vVErFSOSZMmJX11qVaPkArga6+9llT/9NAdwrvttltio9ql1bv/+Z//kffffz9ZvtYKY+ih4xxyyCFJpbRyKDZHHHFEIjB1OV0rgFoVrWCo7XbeeWc5/PDD211XtXPWIgBr8d3BBx+ciODZs2cnVcW2hy7bq0iuLPOHYkE7EAABWwQQgLZ4MhoIgEAnCFTbnFHtNSwVwaXPCerzbLq8Wzn0VSoq8HSJ+I033kj+vyK0Km0sBKCKwOeffz5YAKoYreyYrdioAlKvTwXgtGnTZLPNNkuqliqK9FnDkEOvRZfH2wpUfTXLkUce2U4AdnyVjQpjfW1NZam8s3PVIgA7Ple5Ot/puVXg6VKwLo13PLTKq88EcoAACOSHAAIwP+w5Mwg0FAK1CkB9Pq3aEvDpp5+evKNOxZQ+r3bDDTckgkgPFWK6BKzPnYVWAAcOHNi63KtjjB49OllirmUJOE0AqmjTZwKHDx8u//rXv5IlXd20knZ0tgSstunzhHpUE2KhAnDRokWy+eaby4MPPiif+tSnWs2ptgRcqwDU5xDVf2pn6Ctz0vDgdxAAATsEEIB2WDISCIDAahCoVQB++tOfTp4TO/roo5NlYn1u7D//8z/bbQLRHcAqhrRKuMkmmySbH3SDQS2bQFS8aT+tWml1bty4cckzdro5RY+QJeAQAaiVwbfffjupjOlzer/73e/kox/96GpjRjdeKA6VTSD6bKRec8dNIFkrgLohQ6uRev2KrT6zqMvuFgJQxaWKRl2O1+Vp3fmrO5Vvuukmueqqq5Llaw4QAIH8EEAA5oc9ZwaBhkKgVgGogiztNTAqqNq+BkZfj6LirZbXwOgzgLqh4vbbb0+qcrpJQ0Vg5bAUgDqm2qziUgWQbj5JWwqtvAbm2WefbX0NTNtNJDEVQLXn5z//uZx33nmycOFC0c0knb0GptYKoI6tNuumnTlz5iTPQOozn1/4whfkJz/5SevGnoZKAi4WBAqEAAKwQM7AFBAAARAAARAAARCoBwIIwHqgzDlAAARAAARAAARAoEAIIAAL5AxMAQEQsENA3ze4uleN6FJs3ofaV3kvYkdb9OXU+ifmuOCCC0T/VDt0ubft+w9jzkNfEACB8iGAACyfz7AYBEAgAAF9T54+19bZse222waM4ttE7VM7qx26w1n/xBz6Ymz9U+1Yd911kx3AHCAAAo2JAAKwMf3OVYMACIAACIAACDQwAgjABnY+lw4CIAACIAACINCYCCAAG9PvXDUIgAAIgAAIgEADI4AAbGDnc+kgAAIgAAIgAAKNiQACsDH9zlWDAAiAAAiAAAg0MAIIwAZ2PpcOAiAAAiAAAiDQmAggABvT71w1CIAACIAACIBAAyOAAGxg53PpIAACIAACIAACjYkAArAx/c5VgwAIgAAIgAAINDACCMAGdj6XDgIgAAIgAAIg0JgIIAAb0+9cNQiAAAiAAAiAQAMjgABsYOdz6SAAAiAAAiAAAo2JAAKwMf3OVYMACIAACIAACDQwAgjABnY+lw4CIAACIAACINCYCPx/AXUbHRmgNwUAAAAASUVORK5CYII=\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0011\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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7W9hb7O/GzihxaVLl+TVV1+VDz74QP744w+5/vrr5YknnpAhQ4YE9XLOUIkXai1gL0OHDlXf1N67d6+MHz9e+vfvn6W6gd43VO3NrpxA62Q0RsxogYNVixcvlv/85z9SsGBBueeee+SNN96QypUr29Fkv/dwQgvPykCXl156Sfr166d8lZPJKS3c6DvRD07oES3+85133pH3339ftm7dqkwe8+Trr78utWvX9hoCgfaBlfFDALSinguunT9/vnTu3FkN3HvvvVemTZsmM2bMkF9++UXi4+Oz1HD37t1StWpV6dGjh/Ts2VM2bNggTz31lMybN0/atm2r8n/99dcKIIcPH66g7+OPP1YT//r166VOnToqz4kTJ6RGjRrqu829e/eW0qVLK1jEt5kBjE4kp7QAHAOG3nvvPQXgmzdvlq5du8qIESPUJOdECocWmzZtko8++kg5rmeffVbBvy8ABnpfO7QJtE5mxogZLZo2bSodOnSQWrVqCSa5l19+WX7++Wc1NgsXLmxH07PcwykttIpAt3bt2qnvq8N3OAmATmnhRt+J/nFKj2jxn48//riao/EgWKBAARk9erR6QMTDZLly5dQQCbQPrDoRAqBVBR2+HkBWs2ZNefvttzNrcuutt0rr1q3Vq118EybtJUuWyK+//pr5J0T/fvzxRwV+SO3btxe8zwmRPS1hMitRooQCRaQXX3xRweOXX37psAJXb++UFi1btpTrrrtORT+1BJguVKiQzJkzxxF9wqGFZ0MA+oA/XwAM9L52iBNoncyMETNa+LbtyJEj6kEJ0cX777/fjqZnuYeTWqSlpSlfhYdVPBzdeeedjgKgU1q40XfCUJzSIxr9J/ROT09Xc+rkyZOlS5cuaqwG2gdWnQgB0KqCDl7/119/KchYsGCB1/Isok4//PCDmmh8EyYeRO4mTpyY+SdE+PBUfu7cOcmbN6+KHCLCg39aQoQLT+tY+kO67bbbpEmTJrJ//351HzzBIJKIyKITyUktRo0aJVOnTpVPP/1ULYMDphs3bqz06tixo+1yhEsLI+gJ5r7hFieYOpkZI0Za6LVr586dcvPNN6soIKLwdientUhMTJTY2FgVLa9fv76jAOikFm7znbBDJ/WIRv8JzfENXzwQYv4GBAfTB1Z9CAHQqoIOXn/gwAEFXojEIaysJewrwHLk9u3bs9QOgIL9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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 232.4375 ± 0.3994 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 3e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.75"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The detected scaning axes and values are: \n",
"\n",
"{'mod_blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
" 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
" 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197]), 'runs': array([0., 1., 2., 3.])}\n"
]
},
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n",
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0012\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAAXNSR0IArs4c6QAAIABJREFUeF7sXQm4jdX+fg/noDLToBKVJt1Kwz+Nt1whpElFKlSiWZM0iQYqShpuSpMi0aQikrpUNN0QiXvlRohkyJTEcc7/efdqd/bZ9jn7W+sb9vet77eep+d2O2utb73v+q213r2G3y+vuLi4GJKEAWFAGBAGhAFhQBgQBmLDQJ4IwNj0tQAVBoQBYUAYEAaEAWEgwYAIQDEEYUAYEAaEAWFAGBAGYsaACMCYdbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMxY0AEYMw6XOAKA8KAMCAMCAPCgDAgAlBsQBgQBoQBYUAYEAaEgZgxIAIwZh0ucIUBYUAYEAaEAWFAGBABKDYgDAgDwoAwIAwIA8JAzBgQARizDhe4woAwIAwIA8KAMCAMiAAUGxAGhAFhQBgQBoQBYSBmDIgAjFmHC1xhQBgQBoQBYUAYEAZEAIoNCAPCgDAgDAgDwoAwEDMGRADGrMMFrjAgDAgDwoAwIAwIAyIAxQaEAWFAGBAGhAFhQBiIGQMiAGPW4QJXGBAGhAFhQBgQBoQBEYBiA8KAMCAMCAPCgDAgDMSMARGAMetwgSsMCAPCgDAgDAgDwoAIQLEBYUAYEAaEAWFAGBAGYsaACMCYdbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMxY0AEYMw6XOAKA8KAMCAMCAPCgDAgAlBsQBgQBoQBYUAYEAaEgZgxIAIwZh0ucIUBYUAYEAaEAWFAGBABKDYgDAgDwoAwIAwIA8JAzBgQARizDhe4woAwIAwIA8KAMCAMiAAUGxAGhAFhQBgQBoQBYSBmDIgAjFmHC1xhQBgQBoQBYUAYEAZEAIoNCAPCgDAgDAgDwoAwEDMGRADGrMMFrjAgDAgDwoAwIAwIAyIAxQaEAWFAGBAGhAFhQBiIGQMiAGPW4QJXGBAGhAFhQBgQBoQBEYBiA8KAMCAMCAPCgDAgDMSMARGAMetwgSsMCAPCgDAgDAgDwoAIQLEBYUAYEAaEAWFAGBAGYsaACMCYdbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMxY0AEYMw6XOAKA8KAMCAMCAPCgDAgAlBsQBgQBoQBYUAYEAaEgZgxIAIwZh0ucIUBYUAYEAaEAWFAGBABKDYgDAgDwoAwIAwIA8JAzBgQARizDhe4woAwIAwIA8KAMCAMiAAUGxAGhAFhQBgQBoQBYSBmDIgAjFmHC1xhQBgQBoQBYUAYEAZEAIoNCAPCgDAgDAgDwoAwEDMGRADGrMMFrjAgDAgDwoAwIAwIAyIAxQaEAWFAGBAGhAFhQBiIGQMiAGPW4QJXGBAGhAFhQBgQBoQBEYBiA8KAMCAMCAPCgDAgDMSMARGAMetwgSsMCAPCgDAgDAgDwoAIQLEBYUAYEAaEAWFAGBAGYsaACMCYdbjAFQaEAWFAGBAGhAFhQASg2IAwIAwIA8KAMCAMCAMxY0AEYMw6XOAKA8KAMCAMCAPCgDAgAlBsQBgQBoQBYUAYEAaEgZgxIAIwZh0ucIUBYUAYEAaEAWFAGBABKDYgDAgDwoAwIAwIA8JAzBgQAeiiw4uKirB8+XJUq1YNeXl5LmqSosKAMCAMCAPCgDAQFAPFxcXYuHEj9txzT1SoUCGoz4bqOyIAXXTHsmXLUL9+fRc1SFFhQBgQBoQBYUAYyBUDS5cuxd57752rz+f0uyIAXdC/fv161KxZEzSg6tWru6gpPEW3bduGDz74AC1btkRBQUF4GuZzS+KIWzCLffs8rHJavdi32Hd5Brhhw4bEBs66detQo0aNnNpqrj4uAtAF8zQgGg6FoE0CcMKECWjTpk3sBGDccHOBFMwuJoAIFZW+jocYimM/cxia4LZx/dadkkQA6jKWkt9GAzIZSC4oDE3ROOIWzPEQBaYLZGgGp2FDxL7FvrPtANq2gaM7VEQA6jImAtAFY+EtKotFPBaLOPazCMD4nGaIfTvvaxs3cHRXWBGAuoyJAHTBWHiLxnHiFMzxEL0iAJ2LgvDOUM5aFscxbWrfIgABEYDOxlXGXDYakEwgsli4GBKhLyr2LfYdeiN10UCxb+f2beP6rWs6IgB1GZMdQBeMhbdoHCdOwSw7gOEdke5bJvYt9i13AMsfRyIAXcwzNv6CiOOkaXqE4MJ0QlE0jn0dR8xi3853hUIxMF00QuzbeV/buH7rmo4IQF3GZAfQBWPhLRrHiVMwyw5JeEek+5aJfYt9yw6g7AC6n0nKqMHGXxBxnDRlh8T5r2bfBlNAFYt9S18HZGo5+YzYt3P7tnH91jU62QHUZUx2AF0wFt6icZw4BbPskIR3RLpvmdi32LfsAMoOoPuZRHYAfeMwLBXLYhGPxSKO/Sw73M53hcIyH5m2Q+zbeV/LDqC4gTEdZ4lyNhqQTCDOJxBXxhOCwnHs6zhiFgEoYzoE042vTTAZ1zau37okyxGwLmNyBOyCsfAWNZlAwovGWcsEczx2PUUAigB0NiNEN5fJXCYCUHYAXVm8jQZkMpBckRiSwnHELZhFAIZk+PnSDLFvsW+5Ayh3AH2ZXOQI2Ddafan4t9+AqlVV1Zs2AbvsUvozsljEY7GIYz/LDqDsAPoyqYaoUpNxbeMGjm6XyBGwLmNyBOyCsdwVFQG4I/cmk2buetCbL8cRswhAEYDejJ7w1mIyrkUAyhGwK4u20YBMBpIrEgMqLAJQBGBchVBccds6l5U3ZcYRs6l927h+6y6nsgOoy5jsALpgLHdFRQCKADRdKHJntd59OY7CQDDH41qH6bgWASg7gK5mWBsNyNZJc8MGoEYN1d0TJgAtWwIVK5Z0v624ZbegNANx7GfTBdLV5BiCwnHs6zhiNrVvG9dv3WEnO4C6jMkOoAvGclP0rbeA668Hfvqp5Pt77w089hhw7rnqv8Vx4hTMskOSmxEZzFfFvsW+y7M0EYCyA+hqJrLRgGybNCn+zjsPKC4u3dV5eer/v/GGEoGmuLdvBz79FFixAqhXDzj55NI7i64MzOfCpph9bpav1ccRs/zAkUcgvg6qEFRuMq5tXL91u0J2AHUZkx1AF4wFW5TirGFDYNmyzN+lCORO4KJFQFHRNkyYMAFt2jhfLCgue/YsXX/6zmKwiPW+ZjJp6n0hfLnjiFkEoPMxHT6L1WuR2LfzvhYBKDuAeqMrLbeNBmTTBDJ1KtCsWfYuvvxyoEmT7fj11y9w223HoqBAHZ2sXw9UqwZUqLBjHU53FrN/PXc5bOprpyzGEbMIQOeiwKkdhTWf2LfzvrZx/da1S9kB1GVMdgBdMBZs0VdfBTp1cv7Npk1X4NNP6yYEII+MK1cGuItYsyZQuzZQq5b6Xz4mmTRJCcRMKXVnMfWhifOWBJMzjotFHDGLAHQuCoIZef59RezbeV+LAJQdQFcj0UYDsmkCcboD2Lo1UKlSEWrUmI/nnjswIQBT3caYGsmUKcCpp5qW9r+cTX3tlK04YhYB6FwUOLWjsOYT+3be1zau37p2KTuAuozJDqALxoItmrwDyNe/6Y9A2JJsdwC3bAF+/VX9s3at+of//uGHwMiR2bGMGgVceGH2fLnKEcfFIo6YRQA6FwW5GotefVfs23lfiwCUHUBX485GA7JtAkne1WNHp4pAN6+Ane4syg6gq+HlS2Hb7NspSXHELZjFDUx548PG9dvpfJDMJzuAuozJDqALxnJTlCKwRw9g9eqS79evDwwZYuYHUGdnUe4A5qbPy/qqH6IgCq6A/MAdrp7dsTWCWQSgCMDyR2kkBeAnn3yCQYMGYcaMGVixYgXGjh2Ls88++y+kXbt2xUsvvVQKedOmTfHFF18k/tvatWvRt29ffPDBB1i6dCnq1q2bKH/fffehRjJchIPZzcZfELZOmkOHAldfrTrVi0ggTncWHZhRzrLY2tflEeo1ZidOxnPWwSkf9hp3GDBla4NgFgEoAtBCAThx4kRMnz4dRx11FNq3b59RAK5cuRIvvvjiX+grVaqE2nzCCWDu3LkJAUih2LhxY/z444+48sorcfjhh+MNegZ2mEQAOiQqBNl69QIeflg1ZNMmYJddSjfKZLHI5AcwfWcxBNDLbIIJ5jDjcdI2LzFHyRWQl7id8ByGPIJZBKAIQAsFYCqkvLy8jAJw3bp1ePvttx3PQ6+//jouvvhi/Pbbb8jPz3dUTgSgI5pCkal9e4ALtpcCkHXx+O+DD4A2bVTdy5eriCBRSLJAmi+QOk7Gw3ANQPravK+jMJaTbYxjPxO7CW4b129dW43kEbATAUjxx12/mjVr4pRTTkH//v2x2267lcnPc889h9tvvx2rVq1yzKGNBmQykBwTlsOMTZoAs2d7LwCTkA4+GPjvf4H33wdatcohUI1P29rX5VHgFeaoPQTyCreGeeU8q2COh+gVAWg+1KwUgGPGjEHVqlXRoEEDLFq0CH369EFhYWHizmBlevdNS2vWrEkcJ19yySW4//77y2Tzjz/+AP9JJgrA+vXrY/Xq1ahevbp5L4SoJCfNyZMno0WLFn9FxAhR84yawte/devmY+PGPMyevQ2HHLJjNW5xjxqVl3Ar07x5Mcr5nWHUfr8KucXsV7v8rNcrzKNH56Fz5+wnBS+/XIiOHdMCUfsJsIy6vcKdg6Ybf1Iwx0sA6q5bXL95/3/9+vXWrN+6g8VKAZhOAh+KUAyOHj0a5557bqk/0whatmyJWrVq4d133y1X9PTr1w/33HPPDhyPGjUKO++8sy73kj8gBtatq4yuXU9HXl4xXnttPAoKigL6snzGVga+/bYO+vQ5KSu8++6bhsMOW5M1n2QQBoSBYBnYvHkzOnXqJAIwWNq9/VqmO4CZvnDAAQegW7du6N27919/3rhxI1q1apUQb+PHj0eVKlXKbZzsAHrbd0HV9vPPfABSAevW5eG557Zn/KzsFsRjt8CrfuYdwP33z0/c+QTydrAp/tjYay/g++8LEZY7gLo7JEGNT7++41Vf+9U+P+qNI2byaIJbdgAtcATtRADyiHevvfbCsGHD0Llz58S4Y+dT/PFIeMKECUY7eHIH0I8pLDd1enFfiI6fZ84ErrgCiMKNAC8w56a3zL/qJWbGmWa86fSU7mTcvLXelfQSt3et8rcmwRyPH3VJAch1vE0biQSiM6oieQS8adMmLFy4MIHzyCOPxODBg9GsWbOEmxf+w6NauoepV68eFi9ejDvuuANLlizB/PnzUa1aNXDnj3fcuAVMH4K7pPgE2XXXXVHR4U92EYA6phbuvF4sFg0bAj/+CIQ9AkiyJ7zAHO5e3bF1XmFeuhTgw5/NmwF6l2KYwGSqWRN4/vkSJ+Nh4Mgr3GHA4rQNglkEYHm2YuP67XRsJPNFUgBOnTo1IfjSU5cuXTB06NCEU+dZs2aBrmAoApmXTp75YIOprPL8Gx+NNORK7iDZaEA2Tprffw/UqgXUqaPi/2ZKXuA+5xyAnocGDwZuvNGBAeU4ixeYcwxB+/NeYWZUmdtuA/g7lLGhp00D3nwTePJJYJ99OI8AFSpoN8+3Al7h9q2BPlQsmEUAigAsf2BFUgD6MFcYVSkC0Ii2wAsddRQwaxYwbhxwxhn+CcD77gPuvhu4+GJgxIjAYWp/UBZI9wvk1q1ApUqK+t9/Vz4g169XorB5c+0u8a2A9LX7vvatczysOI79TPpMcNu4fuuakghAXcZS8ttoQCYDyQWFvhelCxjex2P0j3nzkNEFjOkEkt748eOBdu2AQw9ltBnfobn+gG197YQQt5hpT2XtIvP7V10FPP10+H4EuMXthNuw5RHM8RC9pvO3jeu37hgUAajLmAhAF4wFX3TlSmCPPdSizR2aDG4gE43yYrHgi1C+/OTR38aNQNg9A3mBOfgedfdFt5gfewyYPBkYMgRo1GjHtnz5JXDcccBOOwErVgAaocXdActS2i1uXxvnU+WCWQRgeaYlAtCCV8A+zR2OqrXRgGybNHk36+STgQYNgMWLy+5WL3Bzd4hHgBSdX3wBNG3qyIxylskLzDlrvOGH3WD+5RfgwAPVEe8zzwDdu+/YCNoAd4DnzweefRbo1s2woR4Xc4Pb46YEVp1gFgEoArD84SY7gC6mIxGALsgLqOjw4cCllwKnnaZ2bspKXi0WrVurcHBDhwJXXhkQSMPPeIXZ8PM5KeYG8+WXAy+8APBO6VdfoUz/fgMHAnQ3esIJwPTpOYG5w0fd4A4HAv1WCGYRgCIARQDqzxwOS4gAdEhUDrPdeScwYIC6m/XUU/4LQAoDpsMOU8eAYU6yQDpfINmvyR3dzz4Djj++7J7l0S/z0k9g//5lC8UgbUP62nlfB9kvXn8rjv1MDk1w27h+69qT7ADqMpaS30YDMhlILij0vWiHDsBrrwGPPALcdJP/AtB3QB5+wLa+dkKNCeaiInWv79//BuhH/qWXsn8p22OR7DV4m8MEt7ctCL42wRwP0SsC0HxsiQA05y4RTaRGjRpWxRK0bdKk+OMxHHdjyruTZxtuJ2YtmJ0tkDz25fFvtWrAggXqUVHUkvS1s76OWr+mtzeO/SwC0NxqRQCacycC0AV3YSvq5cQ5cqQSnXQGzUcDYU1eYg4rRrcLJHfyTjwR+Pzz7LvI6d8qLFT3TnffXd0bzGWSvhYBmEv78/vbJvZt4waOLs8iAHUZS8lvowGZDCQXFIamqJe4GaRm6lTgxReBrl1DA3GHhniJObwoS7fMBPOWLcBzzwE9egAFGjqCkUIeegjgNYTRo3PLkAnu3LbY/deDxLx9O/Dpp8r1Dz0B0POAw4ii7oGm1BAkZk8b7rIyE9w2rt+6NIoA1GVMBKALxoItSrcddP1ywAEqFFx5yWQCKas+3jV89FHg+usB+o0La/ISc1gxprcrSMwzZwJHH618T1IYZLNBPzkMErefOHTqDgrzW28BPXsCy5aVtG7vvdXYP/dcnRa7zxsUZvct9bYGE9wiAMUPoCsrtNGATAaSKxJ9LMwduMsuy+4Chk3wEjePgC+5BDjpJLUrENbkJeawYjQVgDz6ZWzfs88G8vPN0LGOI44Avv1WvUDnS/RcJelrja1bjU6i+DvvPIB9nZqS0WLeeCNYERjHfjadv21cvzVMN5FVdgB1GUvJb6MB2TSBOHUBYzqBlGU6330H/O1vQNWqymkwI4OEMdnU1075dYqZj4d4dMuHQ3T7YtqH3AnmjvCxxwKMEpKr5BR3rtrnx3f9xsxj34YNS+/8pYtA7gQuWhTccbDfmP3oJy/qNMFt4/qty6UIQF3GRAC6YCzYohdcALz+urPL+yYTSFloePmf8YcZeu6//w3vQxAvMQfbs+Zfc4L5t9+Agw9WC/s99wB3323+PV5DYHhA2gR/GDRubF6Xm5JOcLupP4xl/cbMe76875stTZkCnHpqtlze/N1vzN600vtaTHCLAJQdQFeWaKMBmQwkVyT6WJgvL2fNAt59F2jXrvwPeY2bfuO44/Pqq0DHjj6CdFG115hdNCWwok4wJ3eOubszb557h948Rn7nHaBXL4BRQnKRnODORbv8/KbfmDm26V4qWxo1Crjwwmy5vPm735i9aaX3tZjgtnH91mVWdgB1GUvJb6MBmQwkFxT6VpR3crgLt2mTWsQPOSRYAXj11Soc3H33AXfd5RtMVxXb0tc6JGTDvHChiuW7dSswdqy6A+g2vf02cM45QIsWwAcfuK3NrHw23Ga1hruU35hlBzA8/W/S1zau37o9IgJQlzERgC4YC67oypXKYS/vbm3erF5ilpdMJpDy6lu+XH2zTp3gMOt+yWvMut/PRf5smLlTPH480LKliumcvMzvpq3btgFz5ihfgF7UZ9KWbLhN6gx7Gb8xJ+8A/vTTjo9AktzwDiA9EQTlEsZvzGHtcxPcIgDlCNiVPdtoQCYDyRWJPhWeNk354uIxHi9hZ0u24M6GM/Xvgrn0y9D33gPOOEP5+uPL3YMO0mEz3Hmlr/19BczeT38JzP/GO8h8JRxUimM/k1sT3Dau37p2JjuAuoyl5LfRgEwGkgsKfSu6dKly48Ff3tddl/0ztuDOjrQkh2AuLQoo+nh0f/zx/t3V4wMTpl120ekp93mlr/0RgOyZTH4AefpAP4B8iBZkimM/iwA0tzARgObcSSg4F9yFragfE+cTT6gHKLfcArRqFTbEZr+aw4dCr0XZ+pm7ODyyrVRJr14nuQcMAB54AOjfXzkJDzJlwx1kW4L6VhCY+VKcd3zbtAF22y1zJBAeFfNH6BVXAEce6S/6IDD7i8CsdhPcNm7g6LInAlCXsZT8NhqQyUByQWFoivqBm06o6YyabkToTiRsyQ/MYcOY3p5MmCn6grib9+STSghQBDBKSJBJ+tqfHcBnngGuvBI44QQV/ztTevBB4PbbgWrV1GtwJ65jTG0jjv1Mrkxw27h+69qNCEBdxkQAumAsuKK8wL/rrsohc7YHIKYTSDY03AHkTg8fFnAnMGzJZNIMGwbd9mTCzKgt3L3p21e9HPcrrVkD7LmnemH8zTcqSkhQSfraHwF41llqbN9/P0D3QZkSncHzNTlfDXNnmW5h2rf3p+fj2M+m87cIQHkE4moU2mhANkwg3NGpUQPYuNGZCxjTCSSb8XBHgOHg6Ag4NU5otnJB/d2GvtbhivfvGJ2F6ddft6FmzYLEoswdGb4WnzEDaNJEp0b9vOefDzA82A03qHjRQaW49bVfYzq1v7ZsUa/86WWA/kbLsx3mvegidV+Qu810EdWjh/e9H8d+Nu1rG9dvXYuSHUBdxlLy22hANkwgSRcwnGg5OVepkr2T/cBNH4TcUaIgZZu4yxSm5AfmMOFLb0u6AKxatSDhmoWPPxinl/F6/U7Jl8Z16wJ0H+LHXcNMGOLW16aiQKf/6dORd3u5q8sfeNmuEfAuIB8ZDRumvnLvver+YLZyOm2KYz+b9rWN67eOrTCvCEBdxkQAumAsmKLJnbcGDZQPLifJr4mTIcUYDo5H0mF7COIXZid85yJPugAcMaIgcURfuzawYEEwPhsZEq5+feDnn71zNO2Ey7j1takocMJlMk/PnsDjjwPdugHPPuusJH8M8qoBHcTzhyl/fDRq5Kysk1xx7GfTvhYBKALQyZgqM4+NBmTDBDJ8OHDppUDz5sCHHzrrYr9wMwTU6NHq9edttzlrS1C5/MIcVPt1v7Nhg7oawDRyZCGuuSYfvJ/F4zhe5A8q3XorMGgQcOaZ6lFAEClufW0qCnT64oADAEaO4bEuI73oJN4P3mcfgHcIy0qpP1h4muDEdVAc+9m0r21cv3VskHllB1CXsZT8NhqQDRMIj1XoaoOLOhd3J8kv3FzoKf5454uvgcOU/MIcJozJtnCR5m4fj11T0777At9/H1ykBn6bO8JjxgCdOytH5UGkOPV1kk8/Ma9bpxzNsy/5uIcvfN0k1sOj5NR6RAA6Z9Skr21cv50zpnKKANRlTASgC8aCKdqhA/Daa8AjjwA33eTsmyYTiJOa+eKTkSW8vOfj5LtO8viF2cm3g8xD8cdoDJkiNbAddBh+7rlBtij4b8Wlr1OZDQLzqlXK24CbxEhFJ56oHotNmFBSnwhA56ya9LUIQBGAzi0sQ04bDchkILki0YfCvNjPV3k8XuMxm5NkA24nOINeIHXb5HX+ZLzWsl5hU5gzXisX4aDitXqN0Ul9Yt/+uIFxwn22PHx9zvvB3Ek88EBg0iS1MywCMBtzJX83sW8b12/njKmcsgOoy1hKfhsNyGQguaDQl6KcQL/7DuBOIH9VO0lB4A7K4bATvMwTBGanbfErX9LNS7b6p0wBTj01Wy5v/z5uHEBHwv36Accc423d6bXFoa+DwsxdfT7m2Xln7/rsP/9RInDJEnUUzEdjfMSWvLPKncGWLbP/SIljP5vOZTau37oWKQJQlzERgC4YC29RPyfOgQPVXUS+GuRdwLAkPzGHBeOrrwKdOmVvDZ3z8sFOkIntYvuuuQZglBA/Uxz6OigB+Pbbyla6dnV+x9hJ33KX+vTT1Y9Xikv+s3p1SUnuVDO+cHnXFeLYzyIAnVhX5jwiAM25k1jALrgLW1E/J076+6LrB0acePnl8CD3E3NYUIZ5BzDpR65WLWD5cmf+Kk15jUNfByUAGdP3uefUoyIKMi/T2rUqrBwfhaSn5D1iOhIvSwTGsZ9FAJpboAhAc+5EALrgzq+ic+aoyZNe+emmwWnyc+IcP16Fg2NYOvr9CkvyE3NYMCbvAPL1b6ZHILm8A5h6P5GPlhglxK8Uh74OQgDShrgTR8Huh29P2gSPftNfqyexZbPXOPazCEDzWUMEoDl3IgBdcOdXUcbjHDBAzwWM6QTiFAMncy4afGTA8HQ77eS0pL/54rJYlPUK2MmOir89oOLH0l5bt1YvQP1KcenrVP78wMwYzkceqY5n+WjDSZQhnT51u2PtB2ad9ucqrwluuQMoj0Bc2auNBmQykFyR6HFhExcwfgtA7hrsvjtAlxFffgkce6zHoA2ri3pf68CmCLz8coD+25KJETmGDMmtCxj6IOTLT8YiXrpUPQBgMnkBWh4fcerrJA9+YKZYp2jnjv677+pYoLO8bu+s+oHZWctzm8sEt43rt24vyA6gLmMp+W00IJOB5IJCz4uauIDxWwCyfl7u5uvkoKNOiCgoYYAPcJJ3tsaNK0Tr1vmhcP1y0kkAwxc++CDQu7cIQK8mBT/mMvrr++wz4OmngR49vGppST2yA2jGqUlf27h+67InAlCXMRGALhjztyh32ug2gces8+YBhxzi/HsmE4jz2oHbb1cLfPfuyvVHGJLfmMOAMbUN9AlJ1ytMv/66DTVrhsM33PPPA8OGAbfcUnIPUHYA3VuP1/bNI9/ddgOKipS7Fu4ge53c3ln1GrPX+PyqzwS3CEA5AnZljzYakMlAckWih4VXrgT22ENF3fj9d6ByZeeV+40K5rbKAAAgAElEQVSbriN4fNS+fckuj/PW+ZPTb8z+tNq81saNgfnzwycAM/mHFAFo3s/Jkl7b96+/Ai+8oGyIr4D9Ssk7q6w/9eGSkzurXmP2C6PX9ZrgtnH91uVVdgB1GUvJb6MBmQwkFxR6WpTHaDxO4yu6xYv1qo4ybj2kJbnjhjnpviNsO4CZ+k8EoKlV22HfmWJX16un/EWKH8AdbcNkLrNx/dYdNSIAdRkTAeiCMX+LDh8OXHopcNppwOTJet8ymUD0vhC+3II5HEfAScvgDtOYMUCXLuqYsWpV9ZdNm4BddnFnP9LX4eprJ725YUNJJBDmf+kloHPn8kvGsZ/JiAluEYByBOxkHJaZx0YDMhlIrkj0sPCKFcAXX6jFkmGTdFJQuLdsATZvBmrX1mmdP3mDwuxP681qDStmHvXxiJohwV55BTjrLBGAZj3szw4gj335gp/ueviiP4iUugvM7117LfDEEyIAMzFgMq5tXL917VJ2AHUZS8lvowGZDCQXFIamaBC4GRLujjtU6C+vIwiYEBkEZpN2+VFm/Xrls61ChW2YMGEC2rRpg4KCcO0KMSbwPfcALVoAY8eKAHRrB17a9113Af37AxdcoHZpg0jpApDuoyhCy0teYg4Co1ffMMFt4/qty6cIQF3GRAC6YCy8RU0mEF00I0aoIxzeU/z0U93S3ucPArP3rTarkXGYeX+qX7/tOPzw8aEUgIsWAfvtpx4xpb5ilyNgsz730r6T7qWcHMOatbbsUj/8APzf/6l5g4/Jko9BvNoJ87q9uajPpK9FAEb0CPiTTz7BoEGDMGPGDKxYsQJjx47F2Wef/Zfdde3aFS9xpKakpk2b4gueD/6Z/vjjD9xyyy149dVX8fvvv6N58+Z46qmnsDdDNjhMNhqQyUBySJev2XiE9sgjagFt21bvBTAbFgRuBnlnODje7eKOFJ3/5jIFgTmX+FK/zaM7hu4aOrQQ9eq9F0oByPY2awbQF1yfPsB99ykEIgDNrMgr+2bYt732UsKLngZ23dWsPaalki+ByxN+ybq9wmza1lyVM8Ft4/qty38kdwAnTpyI6dOn46ijjkL79u0zCsCVK1fixRdf/IuPSpUqoXbKxaurrroK48aNw/Dhw1GnTh3cfPPNWLt2bUJUVmTMLgfJRgMyGUgOqPI9ixsXMEEJwMJCoFo1gPcAGa+YESBymaLa1yac7b8/wJ2UDz8sxKZN4RWA/N3atav6IcP2igA06W1Vxiv7pssXviBv2lTdMQ5z8gpzmDFmapsJbhvXb91+i6QATAWZl5eXUQCuW7cOb3O/PENav349dt11V4wYMQIdGDsMDO69HPXr10/cD2rVqpUjHm00IJOB5IgsnzNNmwacfLKZCxgvF4tsMLmIfPUVMHo08KfpZSvi29+j2te6hGzdquIv82Xtjz9uw6xZ4bwDSFy890Vfltz1SybZAdTtcW8FIN2u8E4m72fefbdZW7wqRVtIvg73Sgh51bZc1mMyl9m4fuv2gbUCkOKPu341a9bEKaecgv79+2M3unEH8K9//Stx5Msdv1q1av3F2RFHHJE4Sr6HIz1D4rEx/0kmGhBF4+rVq1G9enVd7kOZnwNp8uTJaNGiReguyZdH2Msv56Fbt3w0b16EiRO3a3MbFO5rr62AYcMq4uabt+OBB4q02+llgaAwe9lmk7r4svbwwwtQtWoxfv75d3z4Ybjtu3v3iqA9FxXlJeAybN1ppxW7ClsXl75OtQ8vMHO6r1cvH5s25eGLL7aBdwFzkWbPphP5fFSqxPuhhWU2wQvMucDn9psmuLl+161bF9wQsmX91uXRSgE4ZswYVK1aFQ0aNMCiRYvQp08fFBYWJo53K1eujFGjRuHSSy8tJeZIXMuWLbHvvvvimTJidfXr1y+jOGR9O++8sy73kt9DBkaOPARvvHEgTj99Ea68co6HNXtb1aRJDTB0aBMcccQvuOeez72tXGrLyMBXX+2BAQOaYr/91mHw4I9DzxJt5NVXD8a6dVX+amudOr+jW7dvcfzxK0LffpsauGBBLfTufTJq1PgDL7wwKWf3djduLMAll7RJUDtixARUq7bNJppzgmXz5s3o1KmTCMCcsO/RRzMdAadXzYciFIOjR4/GueeeW6YA5K7X/vvvj6cZ6TtDkh1AjzrNh2o6daqIN96ogIEDt+OGG/R31kx+QZrAmDsXeOihijj55GJ0767fTpNvllUmKMxettmkrsGDK+C22yri/POLMHz4llDvcI8dm4eOHSv+GQJM7QAy5eUVJ/539OjtOOcc9e86KS59ncqJV5h/+QVYuDAPJ5ygz7tOH2XL27hxfqId3BFu1SpzW7zCnK0tYfu7CW7ZAYzoK+BU43MiAJn/gAMOQLdu3dC7d2/jI+B0o7fxDoHJXYowTAZJNw3vvgu0a6ffoqji1kdaUiIumN97T/lu4x3Rrl3D6wdw+3agYUNg2bLMvcpXoHRSQHcxDt+p/VVRXPo6XQCG1eejybi95BJg5Ei6MgL69s1cQxz7mUyY4LZx/da1KyuPgNNJWLNmDfbaay8MGzYMnTt3Tmz58hHIyJEjcQE9ewIJdzJ0ASOPQMK7QJZl3HSTwCuYvCCd6j9NZzCYTCA69Ycxr2AOlyNoun+hG5hsacoU4NRTs+Uq/Xfp63D1tV7vqdz0Y3nddUCbNgB/1GRKcexnEYAm1qTKRFIAbtq0CQsXLkwAOPLIIzF48GA0a9Ys4eaF//CuHt3D1KtXD4sXL8Ydd9yBJUuWYP78+ahGPxwA6AZm/PjxCTcwLEOfgBSK4gYmmgJwzhwe0wBnnKHvA9B0AjEddnyN+v33/NWq/ALmKsVxsQgz5ldfBTp1ym4No0YBF16YPV9qjjDj1kPiPLdbzLwJxJ3jq68Gzj/f+Xf9yknvAfQiUKcOsGpVZofQbjH71Xa/6zXBLTuAERWAU6dOTQi+9NSlSxcMHTo08ZJ31qxZoCsYikDmve+++xIvdpNpy5Yt6NWrV+I+YKoj6NQ82YzWRgMyGUjZeIrC34PEzXie11+vjqp5ZJ2rFCTmXGGkC5jFi4F99wUY+S3MmGUH0FsrcdvXp58OTJoEDBoE3HKLt20zqY0vknnSQZvmj136tkxPbjGbtCsMZUxw27h+6/ZFJHcAdUH6ld9GAzIZSH7xG2S9QeJmGLi//13d51q6NEiUpb8VJOZcoZw1CwnXHfStt2JFuAVg8g7gTz/hz0cgpVmTO4B6VuTGvumPkTttFF2M4NO4sd63/cp92WXKpyUFKX/UiABUDJj0tY3rt67diQDUZSwlv40GZDKQXFDoSdF33lFHqqedBjRpYlZlkLg3blS/5Jn4wjDo0FJJhoLEbNYr7kvxCK9jR+CEE4Dp080WCvetcF7DW28B552n8idDgPHfk2HA3ngDoGNi3RSHvvZSDI0bB5x5pnqUw4gsTsKw6faJH/nj2M8iAM0tSQSgOXcQAeiCPA+LMqLGa68BDz8M3HyzWcVBT5wMA0fRyiOmli3N2uy2VNCY3bbXpDzj6TJ6A8OrMTJkFDBTBPKKAHcCk4m7xY89Zib+TBdIE77DVMZNX191FcA7gLz/989/hglV+W1xgzk6KHdsqQluG9dv3T4UAajLWEp+Gw3IZCC5oNCTokcfDcycCXAnkL/aTVLQuLkrxd2pBx4AbrvNpMXuywSN2X2L9WtIus4YMAC4/fZoCECi3LABqFGjBC8fOR12mD7+ZIk49HU6O6aYufPaoIG6nsHXtnx1G6b0++8ArzYccwwSkUFSkynmMOEzaYsJbhvXb13uRADqMiYC0AVj3hflZM2Fkseqbu7qmEwgbtAMHAj07q1eF3L3MhcpaMy5wHjcccCXXwI8Om3fPjoCkHfQkjFfaSOMTnnIIeYMxqGvvRKAdNZOsV2lCrBmDRCmIE+c7+rVA1auVDHF/+//RACSARP7FgEY0VfA5tOgtyVtNCCTgeQtq3q18Q7d7rurOzqbN6tJ2yQFjXvyZHX026iROgrORQoac9AYuVjWrg2sWwcwlurhh5stFEG3m99LFYD0b7nLLu5aYXtfZ2LHFDN31/r0UY8tXn/dHe9+lG7dGnj/feUX8JprRACKADS3MtkBNOdO7gC64M6rorzYf9JJ6siG7j5Mk+liYfq9tWuBIUMAHl+fdZZpLe7KBY3ZXWv1S69eXfLAhoKKOzlRwSwCUL+/00u47Wv+gAjj4w9GAbn3XoDXG15+WQSgCEDzsSIC0Jw7EYAuuPOq6PDhwKWXAs2bAx9+aF6r28XC/Mu5K2k7Zh7fcZeEu8TJi/xRwZwqANevV7uY++xjbitRwW2OcMeStmKeMAFo2xbgQ7L//lcEoAhA81EjAtCcOxGALrjzquhddwH9+wNXXgkMHWpeq62LRXmMCObwhgdLFYC81kAfgbzikJ9vZuPS1876mg6W6TCcJwphTak72zxJqFWrpKVx7GcRgOaWKgLQnDsRgC6486ooH39w0uYdKf4iNk25mDh//RX47DOgsDA3x8C5wGzaP16ViwrmVAFI2+b//89/gIMOMmMiKrjN0GUuZYK5Sxd1rPrgg+qRVlgTo4DQP2G6GykTzGHFqNMuE9w23uHX4Yx5RQDqMpaS30YDMhlILigMTdFc4E46m2U84G+/DZ6KXGAOEuU33yiH29zNqVhRfTkqmFMFICOZ0M3Rm2+KH0Ad+9Hta8boZsQYxtn917+ADNFGdT7va17GjGbsaN4F5IOVZNLF7GsjA6zcBLeN67cu5SIAdRkTAeiCsfAWNZlA3KJZtgxgeGqKE+5k8tVhkCkXmIPEx6gwfP07fry6MxVVAcjFftQogE6teeXBJNne15k40cVMtypNmwLVqin3LzwKDmuaOFHtCNOTwKGHigDU7WsyJgJQdgBdjW8bDchkILki0UVhTtKM8sBjMUZOcJNygZuvDOnChjsO9FV37LFuEOiXzQVm/VaaleBuDhdy3ptbsAA44IDoCkDu8tDOL7xQCUGTZHNfl8WHLuZ+/ZS/RfqLpN/IKCZdzFHE6IXYFwGoWJQdQBcjQASgC/I8KOqVCxg2JVcTZ6tWwAcfqLBTPXp4QIpGFbnCrNFE46zJ3VU+mqAITO7mRAVz6hEwHYVfcAFwxBEAj7VNUlRwm2DzSgDSqfLXXwMvvKA8C0QxxbGfTedvG9dvXZsVAajLWEp+Gw0oShOIVy5gTCcQF6bzV1GGJ+OF8+7dgWee8aJG53VEqa+do1I5p0wB/vGPHV1lRAVzqgBkGDg6sa5cWT0GSd5n1OEkKrh1MGXLq4P5559VhA2mFSvUXcCwp0WLgGnTgMaNlT/RXM5jueZKp6+TbbVx/dbtBxGAuoyJAHTBmLdFvXIBk8uJk7s7HTqokE68gxRkMpk0g2yfm29RTNM1EO/+8Q5gMkURM13A8B4grzrwZapJVJAo4nbT/7pjOvljkkKKu4BRSNdeq/xb3ngjMHiwCMAJEyagTZs2KHB4eVMEoBwBuxrnNhpQlBYKCicKqEceAW66yVVX5uwImC5seD+Nuzt8COJw7nIH9s/SUeprXcA336wWxdTFUVcU6H4zzPlt7uuyeNfBTGfbDM/IKwNnnx3mnixp24gRQOfOwIknqp1AsW8RgLqWKzuAuoyl5BcB6II8D4ry1zrdY7zzDnDmme4q1Fks3H2pdGk+VnjlFeDII9VRToUKXtZefl25whwEwnbt1M4fnYNzJzCZbMZcHq9xxJ0Js9ch9oKw5bK+wcdN3BWmo/ANG9SPxzj2s6nwtXH91rVHEYC6jIkAdMGYd0X5grZGDbVrNm8ecMgh7uqO48RpM+Z33wX+/W/1eOKww6IvAGnvfNjCkHCpeJxavc19rbMDaJMA5I/HOnWUTcyYAdBfZBz7WQSg01lgx3wiAM25s9KPUFQmEMZ3pQsVBmvnK0/+CnaTooLbDcb0soI5xI7e0jqLu9w8muQiz8VeN0lfq77OJACfegpgeDXes2zUSJfZ3OZPehFI7nTHsZ9FAJrboAhAc+5EALrgzoui/OX744/KPYbblMuJky8Qx4wBNm0C7rzTLRLn5XOJ2Xkrvc0ZVczJ4z46C6ed6F4ViCpuN73v9AiYjpR5ijB6tHqQFaVE/5B0EN61K/Dii7IDKI9A9KxXBKAeX6Vy23iHII4LhekvSBemU6ro3LnqWK9qVYCX0XUXd9N22NrXixer+NC8FrDXXqXZiSpmxovm69+tW1UM2H331ev1qOLWQ5m9r9N3AOmEnVzStQ7/vVYtN18MvizvufK+K22dIjaO/Ww6f9u4futaoAhAXcZS8ttoQDKBOHcj4MJ0ShXl4s6oFVu2lI5a4VX9ZdVja18PGaJe/2aK6BBlzNzppk/A1NB2Tm0kyridYkzP52QH8KWXgGuuAU4+GfjkE9Mv5a4cT0HYbrqRoh/DOPazCEBz+xMBaM6dHAG74M5tUTpP/ukn4LLL1AtatynXEydjkNIPYJDHULnG7LbPyip/9dXq9S+dbA8YkH1XyK92eF0vQ8HRPgYOBHr10qvd1r4ujwUnApCPhCZMUM7Y6WMx6imO/SwC0NxqRQCacycC0AV3bovyMvysWd64gDGdQNxiSC1PVyV0XsxFiItREMnWxaJFC+DDD9WdKN6NSk1Rxsy7Xrzz1aULQMfFOinKuHVwZuvr1CNgHvnWr6923rmzavK62rRtfpWLYz+bzt82nuDp2pUIQF3GUvLbaEBRmEC8dgFjOoG4MJ0dig4bpmIBU7wwNnAQKQp9bcJDgwbAkiUAY0WfcII9AvDNN4HzzjOLGmNrX5dnH9l2AN96Czj3XCUC+ZiMHgWimHgn9OWX1d3h22/fBt2IGFHEnN5mE/u2cf3W7UsRgLqMiQB0wZg3RVeuVLE6OWH//ruKouE2mUwgbr+ZWp4+6449FqhbF6CLmyAWo1xj9pK/ZF20h513Vv+PPO66qz0CkCKFLkt45aFjRz32bOzrbAxkE4AMo8ZrAjxaf/rpbLWF9+/8oXPSScot1pIl2zBxol5EjPAic94yE/sWASih4JxbWIacNhqQyUByRaJB4eSEx50evvj0IuUaN4+h+AqYzl15tzEZmN4LbGXVkWvMfmD79lvg8MOBmjWBtWt3FNI2YnbCYxxxZxOAdKdTqZJyJl+7thMWw5mHP3qqVwf4mGzhwm2YO1cEoJOesnH9doI7NY/sAOoylpLfRgOKwkKRDNx+2mkqfqcXKQy4eaeRcYEpBINIYcDsNc7kMSl3U7/8csfabcTshMM44nYiAOlax4aUDIs5alQhdt75Pej4w7MBv4l927h+6/alCEBdxkQAumDMm6J0lszXnXw4wdeeXiSTCcSL7+ayDhsxL12qHoDwGDiTU9+oY+au5uzZyl9dkybOrSfquJ0jLcmZTQBy5y+oH1sm7dcpc9VV6hj7xhu345RTxosAdECeCEA5AnZgJmVnsdGAorBQ8GUn/Xc98ghw002uuvCvwlHA7Q3S8hdIr78Rtvqi3s/9+gH33KPcHz3/vHN2o47bOdLy7XvDBhVDnIn3iF95BfjHP0xqD1eZ5KnISScV4ZZbxokAdNA9Nq7fDmCXyiI7gLqMpeS30YCislCsWaO89/OulxcpDLj5aIGuPpYtA8aO9QJV+XWEAbP/KEt/IeqYX38doO+6444DPv/cOXtRx+0cadkCkK9+r79e3bFNJopAPgbha+Aop/nzgcaNufNdjBEjxqFdu9YoKIhOrGu33JvYt43rty6PIgB1GRMB6IKx8BY1mUC8RpO6O5HpBavX3wsDZq8x0fdfw4bAiSeqC/7pKeqYv/sO+Nvf1KV/RoFw+lo86rhN7CQV87hxBQkXOnQhlZqS/L3xRrRFIB+P8VpAUVExBg36CJdffooIwCxGIwJQjoBN5pW/ythoQHFcKNihYcF94IHA998DkyYBLVu6Ms+shcOCOWtDHWb49deS15wU0wyvZ5sAZCxg3m/cvh3gfce993ZGjm197QR1EnOrVm1wwAEFiZ31TIkikDwuWqROFaKa6CZo9923YdIkeQXspA9tXL+d4C71A6i4OP03kW4V8c1vowGFfaGYORPo0wc4/njgrru8s72w4ObDhddeAx54ALjtNu/wZaopLJi9QslQegypRxc6y5dnrtUGzIccAvznP3o/EmzArWsnScy77NIWLVrkZy0+ZQpw6qlZs4U6Qxz72fQHvI3rt65xyhGwLmMp+W00oLBPIHz8wUcgzZur155epbDgfughJfx4z2vMGK/Q2SuGUpHxQv/FFwOnnAJMnWov5vbtAd5ne/RR4IYbnNlIWOzbWWu9yZXEvGFDW3TunF0AjhqlnEJHOcWxn0UAmlusCEBz7iQWsAvuTIty169/fxU2zUvv/WGZOOnXkEe/jRqpo2A/U1gwe4Wxb1/g3nuBbt2AZ5+1VwByB/z++4ErrgAYQtBJsq2vdTDHZQeQ1wMuvbQIH3/8G+bMqYLateURSHl2YuMGjpNxkZpHBKAuY7ID6IIx90UZAos7Yw8/DNx8s/v6kjWEZYFcvbokfNn69eqyv18pLJi9wsfdm9GjgYEDgV697BWAM2YAvArB425GPXGSbOtrHczJO4B8/ZvpwpMtdwDJSYMGxViyJA8ffFDo6NjbCY9RyGNi3yIA5RGIK9u20YBMBpIrEjULJz3ev/MOcOaZmoXLyR4m3Pvsoy758yEIX3z6lcKE2QuMSdt4+23grLPsFYAmXNnW1044yPQKmOVSRaAtr4CTfJx3XhHefLMC7r9/O+68M8IvWpx0cEoeE/u2cf3WpA2yA6jLWEp+Gw3IZCC5oFCrKCduOnGlB3+6w6DfK69SmHATX6YXrF5hTdYTJsxusdE2uFvK+K7z5gF8KJEp2YRZh7M44k7HnMkPYP36wJAh0XYBk2oHAwduR+/eFXHmmUV4550KOiYS6bwm9m3j+q3biSIAdRkTAeiCMXdF6Rtv992V77PNm4EqVdzVl1raZALx7uula0r1BzhhgroT6Id7ijBhdssl/aBNmwYsWABccglQubLdApBxo7/+Gvj734GDDsrOnk19nR2typGOmXfkPvkEaNFC/d3PseW0jV7nmzKlEP/4Rz723LMYP/2U53X1oa3PxL5FAMoRsCuDttGATAaSKxI1CjMGKhc8Rv+gzysvU1hwZ9qloI+yxx7zfpciLJi97MdsddmC+eyzAV6DeOIJ4Nprs6EOj5/L7C31Lkd6X/PeJK8JJBN3i3fZxbvvhaGmdeu2oU6diigqqqDlJzIMbXfTBpNxbeP6rcuh7ADqMpaS30YDMhlILijULsqjvtQdMu0KyigQBtwUf0FGKwgDZq/6z2k9tmC+4w7lK/LKK4GhQ7OjtwV3dqQlOdIxM0oMYyjbLACJ+cADN2Px4hpgdBO6DIpDMrFvG9dv3b6OpAD85JNPMGjQIMyYMQMrVqzA2LFjcTZ/EmdIPXr0wLBhw/Doo4/ihhSnWT///DN69eqFyZMnY+PGjTjooINwxx134DyuwA6TjQZkMpAc0hXqbLnGzUcfDGEWZLSCXGP20iAmTlTOn7lDfMABZddsC+aRI9VRN/F+/HF2Jm3BnR1p2QKQ0z930m0XgGeeuQzLljVE3755iR+UcUgm9m3j+q3b15EUgBMnTsT06dNx1FFHoX379mUKwLfffhv9+vXDqlWrEmIvVQC2aNEC69evx5NPPom6deti1KhR6Nu3L77++msceeSRjni00YBMBpIjskKeKde46bi4WbPsJHkZrSDXmLOjdZ7jnHMAvv7NdiRqC2beATzqKKBuXWDVquw82YI7O9KyBSDHV6qDcBuPgNnP7703AW3btpFYwFmMxcb1W2d8MG8kBWAqyLy8vIwC8KeffkLTpk0xadIktG3bNiH+UgVg1apVMXToUFzCn9F/pjp16mDgwIG4/PLLHfFoowGFeaE4/3zgjz/U0dehhzrqIseZco371VeBTp2yN9fLaAW5xpwdrfMcdJfDl+HZYijbgpmPoKpWVS5N+Dhq113L58oW3M4tovS9x/z8AtSpAzBetO07gBMmSCxgJ3Zi4/rtBHcp/RT1WMCZBGBRURFOO+00nHXWWejZsycaNmy4gwA8/fTTkZ+fj5dffhk1a9bEa6+9hm7dumH27NnYf//9M/L4xx9/gP8kEw2ofv36WL16Nar76bFXt1dd5OdCwWNx7pAWFITHkzwXurp187FxYx6++Wabpy5gSFeucX/8cZ4jx62TJxfilFOKXfRw6R2SMPa1Ljgen9esmY8//sjDggXbEkfpZaVc97MutvLyH3xwPn74IQ9ObMIm3E45TMX8888F2H//AuTnF6OwUL2O/fXXbdY9AknFXFxckPAnutNOThmLbj4T++b6zdM/ngTasn7r9qCVO4APPPAApkyZktj9o0DMJADZ6R06dEjkoRDceeed8cYbbySET1mJx8n33HPPDn/m8THLS/KPgXXrKqFr19bIyyvGmDHjUalSkX8fy0HNnKi7d2+JNWvo2yaT+4Zi1K37O555ZrIvLmFyANmzT65cuRN69GiJ/PztCdvww2WOZ431sKL772+Kr7/eA927z0abNos9rNm+qv79793Rv/9xqF9/A5YuVeF1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MCAMCAPCgDAQBgMiAMNgUcoQBoQBYUAYEAaEAWEgQQyIAExQZ0lThQFhQBgQBoQBYUAYCIMBEYBhsChlCAPCgDAgDAgDwoAwkCAGRAAmqLO8NHX48OEYOHAgVq9ejeOOOw5DhgxBo0aNis361ltvoVu3bvjss8+siOh33nknbrzxxj2ef+WVV3D//ffjm2++wZFHHokHH3wQF1100R7PrFy5EnfddRdmzJiBLVu24JhjjsGzzz6Lk08+2UuzAz8TB+5t27ahT58+GDNmDNasWYNq1arh6quvxn333RdJZPmwMdMGevXqhYULF+Lbb7/F4MGD0bVr1736xm+9gTs3owC/dbvZtxfMPBX/6quv4ssvv8S+++6LM844A4888gjq1KkTJrS8ZcWBO7NB5OCee+5Bly5drDElihQX5jjHsjgwxz2O0ZbCxv3000/jxRdfxKeffmqZKuehhx56CKeddtoepuu33ijsPso6RABGybbmul566SV06NDBepnOPPNMPPXUU3jmmWfw+eefo1atWnvVvnTpUhx//PG4/vrr0blzZ8yfPx8333wzxo0bhzZt2ljPv/fee5aA7NevnyX6Jk2aZImEd955Bw0bNrSe+eGHH1C/fn00btwYN910Ew466CBLLNauXdsSjLpTXLgphCmSXnjhBUtsf/jhh+jUqRP69+9vTZQ6kw7MCxYswMsvv2wNlrfffrsl6LMFoN96w+TAb91e7NsL5gsuuADt2rXDqaeeCk6W9957L/79739b71X58uXDhJizrLhwO40hR5dddpl1gwjf8SgEYFyY4xzL4sIc5zhGG9OB+4orrrDmQH6slS1bFn/729+sjzh+8B166KGWafutV/uLHkMFIgBjIF1XlRRkDRo0wBNPPLGrimOPPRatW7e2YvtlJ07wU6ZMwRdffLHrJ3r/PvnkE0v4MbVt29a6JYOePSdxQqxcubIlFJnuvvtuSzy+/fbbuqDlLTcu3C1btsTBBx9seTqdROFcrlw5jBo1SisXOjBnNpjineIvWwD6rTdMEvzW7cW+vWDOxrB27VrrI4fexbPPPjtMiDnLihP3pk2brDGFH5X8sDnppJMiEYBxYY5zLIsLc5zjGA1eN27WsX37dmvOeuyxx3DVVVdZ75nferW/6DFUIAIwBtJ1VPnrr79awmPChAl7LM/SE/Xxxx9bk1V24uRF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4w5MnTrVWp4dMmSIay9wCfjaa6/FF198gSlTpqBChQro2bMnbr311l158y0Bz507F40bN8Ybb7yBu+66C59//rlV9/PPP486depYZWQLwKVLl6JJkybW3+OPP44SJUrkbecrr7yCXr16YfHixahWrZrVtu7du+/KQww33HCD9fuECRNQuXJl3Hfffdb/c0vElpnOOeccEFP2ErBK37Fc8sE+mTdvHsqXL4+mTZti8ODBlgdVkjAgDBQeAyIAC69PBZEwEJgBiohFixbhzjvvRNu2bfHSSy+hd+/eaNasGS666CLwd4qDl19+Gf/973/xww8/4JhjjrHECEXPl19+ieuvvx633HKLJaqYbr75ZkvwPffcczjkkENwzz33WAKGos6rAFy/fr2V7+KLL8bMmTNx++23Y8aMGZZAY/IiABs2bIhHHnkEBx54IG688UZwqXj+/Pl7CcBPP/3UEkEUsgMGDHDldOHChTjttNMsvOTs3XfftTAPHz7c4oWJAnDjxo2WmGbZFNL33nsvPvvsM/zhD3/IW8eCBQus8ilgjzvuOEuUU2jnEoB++q5cuXJYvXo16tWrZ/XZVVddhS1btlgiedu2bXjzzTddscsDwoAwkDwGRAAmr8+kxcKAdgYo8CiM3n77basu/nvFihUt4fXiiy9a/2/NmjWWl+u9996zhB29X/TOOZ4qCh+KCO5R27x5Mw444AArL8URE8VcjRo1LO+XVwF47LHHWoLPSe3atcNPP/2E6dOnexaAFFDnnXee9TzztWjRwhI8ZcuW3eUBfOKJJ9CyZUvLw0ivmJdE7yj3HM6aNWvX4xTQ//jHPyyB5wjARo0aYdSoUdZ/c+8exXDfvn0tMZovFbcHMJcA9NN3p59+uuW1fP/99y1R7aQVK1agZs2a+OqrryxxL0kYEAYKiwERgIXVn4JGGAiFAQpAepm47Omkww47zFr+5TKvI164JPraa69h5MiRlkDkcqqTuBTMJdZvv/3W8hA6/16rVq1dz9SvXx9cyvQqAK+55hpLrDhp6NChVl4u1TJ58QB+9913lvePiSeEGzRoYLWR7aL3btiwYdi6dau1fE0Po9fEclq1amV5Sp1Ebi699FJLYHI5nR5AekUdDvnciSeeiDZt2uyBK1edfgSgn777y1/+Yong2bNnW17FzMRle4pkZ5nfKxfynDAgDJjPgAhA8/tIWigMRM5ArsMZucKwOIKL+wS5n43Lu05iKBUKPC4Rr1u3zvp3R2g5z4QhACkClyxZ4lkAUow6J2adNlJAEh8F4Lhx41C9enXLa0lRxL2GXhKxcHk8U6AyNMtll122hwDMDmVDYcywNc5SeXF1+RGA2fsq8/Ud66bA41Iwl8azE7283BMoSRgQBgqLARGAhdWfgkYYCIUBvwKQ+9NyLQHffffdVow6iinuVxs9erQliJgoxLgEzH1nXj2AdevW3bXcyzIuv/xya4nZzxKwmwCkaOOewObNm+PXX3+1lnR5aMUtFbcEzLZxPyFTLiHmVQCuWrUKhx56KD788EOcfPLJu5qTawnYrwDkPkT2H9vpNWSOGx/yuzAgDJjNgAhAs/tHWicMxMKAXwF46qmnWvvEOnXqZC0Tc9/Yddddt8chEJ4Aphiil/Dggw+2Dj/wgIGfQyAUb8xHrxW9c126dLH22PFwCpOXJWAvApCewU2bNlmeMe7Te/3117Hffvvl7QsevCAPziEQ7o0k5uxDIKoeQB7IoDeS+Mkt9yxy2T0MAUhxSdHI5XguT/PkL08qjx8/Hk8//bS1fC1JGBAGCosBEYCF1Z+CRhgIhQG/ApCCzC0MDAVVZhgYhkehePMTBoZ7AHmgYtq0aZZXjoc0KAKdFKYAZJlsM8UlBRAPn7gthTphYL7++utdYWAyD5EE8QCyPc888wweeOABrFy5EjxMUlwYGL8eQJbNNvPQzpw5c6w9kNzzecEFF2DQoEG7DvaEYlxSiDAgDBjBgAhAI7pBGiEMCAPCgDAgDAgDwkB0DIgAjI5rqUkYEAaEAWFAGBAGhAEjGBABaEQ3SCOEgXQzwHiD+UKNcCk27sT2OXERs9vC4NT8C5Ieeugh8C9X4nJvZvzDIPVIXmFAGBAGyIAIQLEDYUAYiJ0Bxsnjvrbi0lFHHRV7G9k+tjNX4gln/gVJDIzNv1xp3333tU4ASxIGhAFhICwGRACGxaSUIwwIA8KAMCAMCAPCQEIYEAGYkI6SZgoDwoAwIAwIA8KAMBAWAyIAw2JSyhEGhAFhQBgQBoQBYSAhDIgATEhHSTOFAWFAGBAGhAFhQBgIiwERgGExKeUIA8KAMCAMCAPCgDCQEAZEACako6SZwoAwIAwIA8KAMCAMhMWACMCwmJRyhAFhQBgQBoQBYUAYSAgDIgAT0lHSTGFAGBAGhAFhQBgQBsJi4P8Dkuy3wqG3SCoAAAAASUVORK5CYII=\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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L+zEKU9hBJARQEYAGQFkBJARQNPrpRcLm2lhfK5ILBgB9JMMkwC65ACcAuuSWK40SyfGN3pGABkBNOtc6C/oL/wkPWb11O96XtiJU57CCCAjgIwAMgLICCAjgKbXSy8WNtPC+FyRWDAC6CcZJgF0yQHs379fihcvLtu3b5eiRYu61EswmoUT++CDD6RevXqSmpoaDKF8koJYZI9uUC9O4kG9oF7EipLTRqgbfukGCGCZMmXk999/l2LFilleNRkBjAFZRkaGApaFCBABIkAEiAARIAJBRQCBqvT0dMvikQDGgOz48eOyc+dOOfXUUyUlJcUysGF6QHuLSIZop9G8EIt/ESIWxELPXqgX1ItYfpS64a1unDhxQv78808566yzJE+ePEbLW46/kwBahizxHnC6jyCRECEW2R0Y0grYDpHo2yCMdJh6Qb2IRYZpI9SNsOoGCaCR50+Cv3NxowMLqwPzyjxpI7QR2oixtdFOwmUnJIDGOp3wNWi04TJarxSSekG9IOnJ3dpoI9nxIR7h8hkkgF6tpgHu5+jRozJkyBB56KGHJH/+/AGW1H3RiMW/GBMLYqFncdQL6kUsT0zdCJdukAC6zynYAxEgAkSACBABIkAEAoUACWCgpoPCEAEiQASIABEgAkTAfQRIAN3HmD0QASJABIgAESACRCBQCJAABmo6KAwRIAJEgAgQASJABNxHgATQfYxd72HkyJEydOhQ2bVrl1xyySUyYsQIqVWrVsx+ly9fLn379pXvvvtOXSA5YMAA6datW7b6M2fOlEceeUR++OEHKV++vDz99NNy2223ZauzY8cO+b//+z9ZuHChHD58WC644AIZP368XHHFFa6POVYHfmDx999/y+OPPy6TJ0+W3bt3y5lnnil33XWXPPzww7Yu54wXePHGAvry6KOPytq1a+XHH3+U4cOHS58+fXKIa7XfeI03t3asymRkI2awwMGqWbNmyf/+9z8pWLCg1KxZU5577jmpWLGiF0OO2YcfWEQKA1wGDhwovXv3Vr7Kz+IXFkH0nZgHP/BIFv85duxY+c9//iPr169XKo918plnnpFq1aplMwGrc+DEfkgAnaAXgGfffvttadeunTLca665RkaPHi3jxo2T//73v1K2bNkcEm7dulUuvfRS6dy5s3Tt2lU++eQTuffee2Xq1Kly++23q/qrVq1SBPLJ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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 224.9906 ± 0.4995 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 3e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 20e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.775"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"ename": "OSError",
"evalue": "[Errno group not found: images] 'images'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mOSError\u001b[0m Traceback (most recent call last)",
"Input \u001b[1;32mIn [128]\u001b[0m, in \u001b[0;36m<cell line: 5>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m shotNum \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m0013\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m filePath \u001b[38;5;241m=\u001b[39m folderPath \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m shotNum \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/*.h5\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 5\u001b[0m dataSetDict \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 6\u001b[0m dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msweep_start_freq\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msweep_stop_freq\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 8\u001b[0m }\n\u001b[0;32m 10\u001b[0m dataSet \u001b[38;5;241m=\u001b[39m dataSetDict[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcamera_0\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 12\u001b[0m print_scanAxis(dataSet)\n",
"Input \u001b[1;32mIn [128]\u001b[0m, in \u001b[0;36m<dictcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 2\u001b[0m shotNum \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m0013\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m filePath \u001b[38;5;241m=\u001b[39m folderPath \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m shotNum \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/*.h5\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 5\u001b[0m dataSetDict \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m----> 6\u001b[0m dskey[groupList[i]]: \u001b[43mread_hdf5_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilePath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgroupList\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexcludeAxis\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43msweep_start_freq\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43msweep_stop_freq\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 8\u001b[0m }\n\u001b[0;32m 10\u001b[0m dataSet \u001b[38;5;241m=\u001b[39m dataSetDict[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcamera_0\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 12\u001b[0m print_scanAxis(dataSet)\n",
"File \u001b[1;32mZ:\\Dy_Lab\\Data\\Analysis\\2023\\07\\31\\DataContainer\\ReadData.py:170\u001b[0m, in \u001b[0;36mread_hdf5_file\u001b[1;34m(filePath, group, datesetOfGlobal, preprocess, join, parallel, engine, phony_dims, excludeAxis, maxFileNum, **kwargs)\u001b[0m\n\u001b[0;32m 167\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 168\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mupdate({\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpreprocess\u001b[39m\u001b[38;5;124m'\u001b[39m:preprocess})\n\u001b[1;32m--> 170\u001b[0m ds \u001b[38;5;241m=\u001b[39m xr\u001b[38;5;241m.\u001b[39mopen_mfdataset(fullFilePath, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 172\u001b[0m newDimKey \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mappend([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mz\u001b[39m\u001b[38;5;124m'\u001b[39m], [ \u001b[38;5;28mchr\u001b[39m(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m97\u001b[39m, \u001b[38;5;241m97\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m23\u001b[39m)])\n\u001b[0;32m 174\u001b[0m oldDimKey \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39msort(\n\u001b[0;32m 175\u001b[0m [\n\u001b[0;32m 176\u001b[0m key \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 179\u001b[0m ]\n\u001b[0;32m 180\u001b[0m )\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\api.py:990\u001b[0m, in \u001b[0;36mopen_mfdataset\u001b[1;34m(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs)\u001b[0m\n\u001b[0;32m 985\u001b[0m datasets \u001b[38;5;241m=\u001b[39m [preprocess(ds) \u001b[38;5;28;01mfor\u001b[39;00m ds \u001b[38;5;129;01min\u001b[39;00m datasets]\n\u001b[0;32m 987\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m parallel:\n\u001b[0;32m 988\u001b[0m \u001b[38;5;66;03m# calling compute here will return the datasets/file_objs lists,\u001b[39;00m\n\u001b[0;32m 989\u001b[0m \u001b[38;5;66;03m# the underlying datasets will still be stored as dask arrays\u001b[39;00m\n\u001b[1;32m--> 990\u001b[0m datasets, closers \u001b[38;5;241m=\u001b[39m \u001b[43mdask\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdatasets\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mclosers\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 992\u001b[0m \u001b[38;5;66;03m# Combine all datasets, closing them in case of a ValueError\u001b[39;00m\n\u001b[0;32m 993\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\dask\\base.py:599\u001b[0m, in \u001b[0;36mcompute\u001b[1;34m(traverse, optimize_graph, scheduler, get, *args, **kwargs)\u001b[0m\n\u001b[0;32m 596\u001b[0m keys\u001b[38;5;241m.\u001b[39mappend(x\u001b[38;5;241m.\u001b[39m__dask_keys__())\n\u001b[0;32m 597\u001b[0m postcomputes\u001b[38;5;241m.\u001b[39mappend(x\u001b[38;5;241m.\u001b[39m__dask_postcompute__())\n\u001b[1;32m--> 599\u001b[0m results \u001b[38;5;241m=\u001b[39m schedule(dsk, keys, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 600\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m repack([f(r, \u001b[38;5;241m*\u001b[39ma) \u001b[38;5;28;01mfor\u001b[39;00m r, (f, a) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(results, postcomputes)])\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\client.py:3224\u001b[0m, in \u001b[0;36mClient.get\u001b[1;34m(self, dsk, keys, workers, allow_other_workers, resources, sync, asynchronous, direct, retries, priority, fifo_timeout, actors, **kwargs)\u001b[0m\n\u001b[0;32m 3222\u001b[0m should_rejoin \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 3223\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3224\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgather\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpacked\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43masynchronous\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43masynchronous\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdirect\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3225\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 3226\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m futures\u001b[38;5;241m.\u001b[39mvalues():\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\client.py:2359\u001b[0m, in \u001b[0;36mClient.gather\u001b[1;34m(self, futures, errors, direct, asynchronous)\u001b[0m\n\u001b[0;32m 2357\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2358\u001b[0m local_worker \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 2359\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msync\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 2360\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_gather\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2361\u001b[0m \u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2362\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2363\u001b[0m \u001b[43m \u001b[49m\u001b[43mdirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdirect\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2364\u001b[0m \u001b[43m \u001b[49m\u001b[43mlocal_worker\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlocal_worker\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2365\u001b[0m \u001b[43m \u001b[49m\u001b[43masynchronous\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43masynchronous\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2366\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\utils.py:351\u001b[0m, in \u001b[0;36mSyncMethodMixin.sync\u001b[1;34m(self, func, asynchronous, callback_timeout, *args, **kwargs)\u001b[0m\n\u001b[0;32m 349\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m future\n\u001b[0;32m 350\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m sync(\n\u001b[0;32m 352\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mloop, func, \u001b[38;5;241m*\u001b[39margs, callback_timeout\u001b[38;5;241m=\u001b[39mcallback_timeout, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs\n\u001b[0;32m 353\u001b[0m )\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\utils.py:418\u001b[0m, in \u001b[0;36msync\u001b[1;34m(loop, func, callback_timeout, *args, **kwargs)\u001b[0m\n\u001b[0;32m 416\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m error:\n\u001b[0;32m 417\u001b[0m typ, exc, tb \u001b[38;5;241m=\u001b[39m error\n\u001b[1;32m--> 418\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[0;32m 419\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 420\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\utils.py:391\u001b[0m, in \u001b[0;36msync.<locals>.f\u001b[1;34m()\u001b[0m\n\u001b[0;32m 389\u001b[0m future \u001b[38;5;241m=\u001b[39m wait_for(future, callback_timeout)\n\u001b[0;32m 390\u001b[0m future \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mensure_future(future)\n\u001b[1;32m--> 391\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01myield\u001b[39;00m future\n\u001b[0;32m 392\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 393\u001b[0m error \u001b[38;5;241m=\u001b[39m sys\u001b[38;5;241m.\u001b[39mexc_info()\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\tornado\\gen.py:762\u001b[0m, in \u001b[0;36mRunner.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 759\u001b[0m exc_info \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 761\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 762\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 763\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 764\u001b[0m exc_info \u001b[38;5;241m=\u001b[39m sys\u001b[38;5;241m.\u001b[39mexc_info()\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\distributed\\client.py:2222\u001b[0m, in \u001b[0;36mClient._gather\u001b[1;34m(self, futures, errors, direct, local_worker)\u001b[0m\n\u001b[0;32m 2220\u001b[0m exc \u001b[38;5;241m=\u001b[39m CancelledError(key)\n\u001b[0;32m 2221\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 2222\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exception\u001b[38;5;241m.\u001b[39mwith_traceback(traceback)\n\u001b[0;32m 2223\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[0;32m 2224\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m errors \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mskip\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\dask\\utils.py:73\u001b[0m, in \u001b[0;36mapply\u001b[1;34m()\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[38;5;124;03m\"\"\"Apply a function given its positional and keyword arguments.\u001b[39;00m\n\u001b[0;32m 43\u001b[0m \n\u001b[0;32m 44\u001b[0m \u001b[38;5;124;03mEquivalent to ``func(*args, **kwargs)``\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[38;5;124;03m>>> dsk = {'task-name': task} # adds the task to a low level Dask task graph\u001b[39;00m\n\u001b[0;32m 71\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs:\n\u001b[1;32m---> 73\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 74\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs)\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\api.py:525\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m()\u001b[0m\n\u001b[0;32m 513\u001b[0m decoders \u001b[38;5;241m=\u001b[39m _resolve_decoders_kwargs(\n\u001b[0;32m 514\u001b[0m decode_cf,\n\u001b[0;32m 515\u001b[0m open_backend_dataset_parameters\u001b[38;5;241m=\u001b[39mbackend\u001b[38;5;241m.\u001b[39mopen_dataset_parameters,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 521\u001b[0m decode_coords\u001b[38;5;241m=\u001b[39mdecode_coords,\n\u001b[0;32m 522\u001b[0m )\n\u001b[0;32m 524\u001b[0m overwrite_encoded_chunks \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moverwrite_encoded_chunks\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 525\u001b[0m backend_ds \u001b[38;5;241m=\u001b[39m backend\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 526\u001b[0m filename_or_obj,\n\u001b[0;32m 527\u001b[0m drop_variables\u001b[38;5;241m=\u001b[39mdrop_variables,\n\u001b[0;32m 528\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdecoders,\n\u001b[0;32m 529\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 530\u001b[0m )\n\u001b[0;32m 531\u001b[0m ds \u001b[38;5;241m=\u001b[39m _dataset_from_backend_dataset(\n\u001b[0;32m 532\u001b[0m backend_ds,\n\u001b[0;32m 533\u001b[0m filename_or_obj,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 541\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 542\u001b[0m )\n\u001b[0;32m 543\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\h5netcdf_.py:413\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m()\u001b[0m\n\u001b[0;32m 394\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mopen_dataset\u001b[39m( \u001b[38;5;66;03m# type: ignore[override] # allow LSP violation, not supporting **kwargs\u001b[39;00m\n\u001b[0;32m 395\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 396\u001b[0m filename_or_obj: \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m os\u001b[38;5;241m.\u001b[39mPathLike[Any] \u001b[38;5;241m|\u001b[39m BufferedIOBase \u001b[38;5;241m|\u001b[39m AbstractDataStore,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 410\u001b[0m decode_vlen_strings\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 411\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dataset:\n\u001b[0;32m 412\u001b[0m filename_or_obj \u001b[38;5;241m=\u001b[39m _normalize_path(filename_or_obj)\n\u001b[1;32m--> 413\u001b[0m store \u001b[38;5;241m=\u001b[39m H5NetCDFStore\u001b[38;5;241m.\u001b[39mopen(\n\u001b[0;32m 414\u001b[0m filename_or_obj,\n\u001b[0;32m 415\u001b[0m \u001b[38;5;28mformat\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mformat\u001b[39m,\n\u001b[0;32m 416\u001b[0m group\u001b[38;5;241m=\u001b[39mgroup,\n\u001b[0;32m 417\u001b[0m lock\u001b[38;5;241m=\u001b[39mlock,\n\u001b[0;32m 418\u001b[0m invalid_netcdf\u001b[38;5;241m=\u001b[39minvalid_netcdf,\n\u001b[0;32m 419\u001b[0m phony_dims\u001b[38;5;241m=\u001b[39mphony_dims,\n\u001b[0;32m 420\u001b[0m decode_vlen_strings\u001b[38;5;241m=\u001b[39mdecode_vlen_strings,\n\u001b[0;32m 421\u001b[0m )\n\u001b[0;32m 423\u001b[0m store_entrypoint \u001b[38;5;241m=\u001b[39m StoreBackendEntrypoint()\n\u001b[0;32m 425\u001b[0m ds \u001b[38;5;241m=\u001b[39m store_entrypoint\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 426\u001b[0m store,\n\u001b[0;32m 427\u001b[0m mask_and_scale\u001b[38;5;241m=\u001b[39mmask_and_scale,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 433\u001b[0m decode_timedelta\u001b[38;5;241m=\u001b[39mdecode_timedelta,\n\u001b[0;32m 434\u001b[0m )\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\h5netcdf_.py:176\u001b[0m, in \u001b[0;36mopen\u001b[1;34m()\u001b[0m\n\u001b[0;32m 173\u001b[0m lock \u001b[38;5;241m=\u001b[39m combine_locks([HDF5_LOCK, get_write_lock(filename)])\n\u001b[0;32m 175\u001b[0m manager \u001b[38;5;241m=\u001b[39m CachingFileManager(h5netcdf\u001b[38;5;241m.\u001b[39mFile, filename, mode\u001b[38;5;241m=\u001b[39mmode, kwargs\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[1;32m--> 176\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m(manager, group\u001b[38;5;241m=\u001b[39mgroup, mode\u001b[38;5;241m=\u001b[39mmode, lock\u001b[38;5;241m=\u001b[39mlock, autoclose\u001b[38;5;241m=\u001b[39mautoclose)\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\h5netcdf_.py:127\u001b[0m, in \u001b[0;36m__init__\u001b[1;34m()\u001b[0m\n\u001b[0;32m 124\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 125\u001b[0m \u001b[38;5;66;03m# todo: utilizing find_root_and_group seems a bit clunky\u001b[39;00m\n\u001b[0;32m 126\u001b[0m \u001b[38;5;66;03m# making filename available on h5netcdf.Group seems better\u001b[39;00m\n\u001b[1;32m--> 127\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_filename \u001b[38;5;241m=\u001b[39m find_root_and_group(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mds)[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mfilename\n\u001b[0;32m 128\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_remote \u001b[38;5;241m=\u001b[39m is_remote_uri(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_filename)\n\u001b[0;32m 129\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlock \u001b[38;5;241m=\u001b[39m ensure_lock(lock)\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\h5netcdf_.py:187\u001b[0m, in \u001b[0;36mds\u001b[1;34m()\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[0;32m 186\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mds\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m--> 187\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_acquire()\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\h5netcdf_.py:180\u001b[0m, in \u001b[0;36m_acquire\u001b[1;34m()\u001b[0m\n\u001b[0;32m 178\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_acquire\u001b[39m(\u001b[38;5;28mself\u001b[39m, needs_lock\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m 179\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_manager\u001b[38;5;241m.\u001b[39macquire_context(needs_lock) \u001b[38;5;28;01mas\u001b[39;00m root:\n\u001b[1;32m--> 180\u001b[0m ds \u001b[38;5;241m=\u001b[39m _nc4_require_group(\n\u001b[0;32m 181\u001b[0m root, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_group, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mode, create_group\u001b[38;5;241m=\u001b[39m_h5netcdf_create_group\n\u001b[0;32m 182\u001b[0m )\n\u001b[0;32m 183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n",
"File \u001b[1;32m~\\anaconda3\\envs\\py39\\lib\\site-packages\\xarray\\backends\\netCDF4_.py:191\u001b[0m, in \u001b[0;36m_nc4_require_group\u001b[1;34m()\u001b[0m\n\u001b[0;32m 188\u001b[0m ds \u001b[38;5;241m=\u001b[39m create_group(ds, key)\n\u001b[0;32m 189\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 190\u001b[0m \u001b[38;5;66;03m# wrap error to provide slightly more helpful message\u001b[39;00m\n\u001b[1;32m--> 191\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgroup not found: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, e)\n\u001b[0;32m 192\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n",
"\u001b[1;31mOSError\u001b[0m: [Errno group not found: images] 'images'"
]
}
],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0013\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.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\nmpl.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_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.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 rubberband_canvas.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.rubberband_canvas.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.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\nmpl.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\nmpl.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.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\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 img.type = 'image/png';\n }\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 img\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 https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.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 * https://stackoverflow.com/a/24161582/3208463\n */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.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\nmpl.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\nvar _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\nmpl.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\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar 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.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\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 var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.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\nmpl.figure.prototype._key_event_extra = function (event, _name) {\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\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.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.\nif (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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kFekRPaBE/54McFeRJBlJiIQVARIAIM6MmwXESACRIAIeIaA288d4uUES/045QzSmChB/cbLAl48mIhAkBEgAQzy6LBtRIAIEAEi4AkCbgkgKsceTajJUC3zSlBFoXJijyTVP0+GjYUYRIAE0CC4LJoIEAEiQASCgUB+CGAwesBWEAFvESAB9BZPlkYEiAARIAJEgAgQgcAjQAIY+CFiA4kAESACRIAIEAEi4C0CJIDe4snSiAARIAJEgAgQASIQeARIAAM/RGwgESACRIAIEAEiQAS8RYAE0Fs8WRoRIAJEgAgQASJABAKPAAlg4IeIDSQCRIAIEAEiQASIgLcIkAB6iydLIwJEgAgQASJABIhA4BEgAQz8ELGBRIAIEAEiQASIABHwFgESQG/xZGlEgAgQASJABIgAEQg8AiSAgR8iNpAIEAEiQASIABEgAt4iQALoLZ4sjQgQASJABIgAESACgUeABDDwQ8QGEgEiQASIABEgAkTAWwRIAL3Fk6URASJABIgAESACRCDwCJAABn6I2EAiQASIABEgAkSACHiLAAmgt3iyNCJABIgAESACRIAIBB6B/wf1nLux9qLwlAAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f = 224.9906 ± 0.4995 Hz\n"
]
}
],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 3e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 19e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.8"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0036\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 2e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 19e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.85"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0038\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 2e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 19e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Truncation: 0.9"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib notebook\n",
"shotNum = \"0040\"\n",
"filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
"\n",
"dataSetDict = {\n",
" dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
" for i in [0]\n",
"}\n",
"\n",
"dataSet = dataSetDict[\"camera_0\"]\n",
"\n",
"print_scanAxis(dataSet)\n",
"\n",
"scanAxis = get_scanAxis(dataSet)\n",
"\n",
"dataSet = auto_rechunk(dataSet)\n",
"\n",
"dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
"\n",
"imageAnalyser.center = (800, 900)\n",
"imageAnalyser.span = (300, 300)\n",
"imageAnalyser.fraction = (0.1, 0.1)\n",
"\n",
"dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
"dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
"\n",
"Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
"Ncount_mean = calculate_mean(Ncount)\n",
"Ncount_std = calculate_std(Ncount)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
"plt.ylabel('NCount')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dataSet_cropOD_chunk = dataSet_cropOD.chunk((1, 1, 300, 300))\n",
"fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
"params = fitAnalyser.guess(dataSet_cropOD_chunk, dask=\"parallelized\")\n",
"fitResult = fitAnalyser.fit(dataSet_cropOD_chunk, params, dask=\"parallelized\").load()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"val = fitAnalyser.get_fit_value(fitResult)\n",
"std = fitAnalyser.get_fit_std(fitResult)\n",
"\n",
"fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
"\n",
"# dataKey = 'sigmax'\n",
"# dataKey = 'centerx'\n",
"# dataKey = 'sigmay'\n",
"dataKey = 'centery'\n",
"\n",
"# val_mean = val[dataKey].mean(dim='runs')\n",
"# std_mean = val[dataKey].std(dim='runs')\n",
"\n",
"val_mean = calculate_mean(val[dataKey])\n",
"std_mean = calculate_std(val[dataKey])\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"\n",
"val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def damp_osci(t, t0, A, B, nu, gamma):\n",
" return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
"\n",
"yvals = val_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"yvals_std = std_mean#.sel(blink_on_time=slice(0.005, 0.025))\n",
"xvals = dataSet_cropOD[scanAxis[0]]#.sel(blink_on_time=slice(0.005, 0.025))\n",
"\n",
"fitted_qtys_1 = yvals.to_numpy()\n",
"scan_para = xvals.to_numpy()\n",
"fitted_qtys_err_1 = yvals_std.to_numpy()\n",
"\n",
"\n",
"plt.figure()\n",
"popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 3, 147, 2e2, 0.1]))\n",
"freqdata = np.linspace(0.005, 19e-3, 500)\n",
"plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
"plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
"plt.xlabel('hold time after switch on the trap (s)')\n",
"plt.ylabel('Center along gravity direction (pixels)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"#plt.ylim([0,750])\n",
"#plt.xlim([0.004, 0.025])\n",
"#plt.legend(prop={'size': 14})\n",
"plt.show()\n",
"\n",
"f_x = popt_x[3]\n",
"df_x = pcov_x[3][3]**0.5\n",
"\n",
"print('f = %.4f \\u00B1 %.4f Hz'% tuple([np.abs(f_x),df_x]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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0YwZMzRy5Ejl5eVJkpKSkmS325WVlaVx48Yp/tw1DQDUWlCQNHeu46lSw3ANcJUn6ufMcfQDAPhGrcNbRUWF1q1bp88//1ynTp1y2WYYhrKzsz0a5/zgJkktW7ZUfHy89u7d67Zt1KhRSk5O1h133FHleIWFhSorK9PQoUNd2ocOHarJkydr9erVhDfAh9LTpRUrpIwM1+VCYmIcwa2Kf2MBALxQq/BWUlKixMREffHFFzIMQ+b//XP73HviPA1vVTl+/Lg++eQTt7NuL774ov7+97/rs88+q/a9u3btkiR1797dpT0qKkqRkZHO7VUpLy9XeXm583VpaakkyW63y26313g/KlW+15sxQB19oa5qeNttUu/eUmSk457SNWvOqG9fU0FBUkP77eI49B419A3q6L1Aq6Gn86hVeJs8ebJCQ0P173//W506ddLHH3+s8PBwPf/883r77be1cePG2gzrNGbMGJ04cUKTJ092thUXF+uxxx7Tn//8Z3Xo0KHa95aUlMhms6lFixZu28LDw1VSUlLte2fNmqXc3Fy39g0bNqh58+Y13At3RUVFXo8B6ugLdVXD1asd/62okNavr5OPCBgch96jhr5BHb0XKDU8efKkR/1qFd7effddTZ061RmimjRpoi5duuipp55SWVmZHnvsMb366qu1GVrZ2dlavny55s2b5/K06R/+8Af98pe/1MiRIy86xoWeir3QtokTJ2r8+PHO16WlpYqNjVVKSorCwsI83AN3drtdRUVFSk5O5mlXL1BH71FD71FD71FD36CO3gu0GlZe8buYWoW3ffv2KS4uTkFBQWrSpIlOnDjh3Hbbbbfp3nvvrc2wys3N1YwZMzRz5kyNHTvW2b5ixQoVFhbq/fff1/Hjx13ec/r0aR07dkwtWrRQSEiIIiIiVFZWppMnT7qdLTty5Ei1y49Iks1mk81mc2sPCQnxyW+qr8Zp7Kij96ih96ih96ihb1BH7wVKDT2dQ62+HisyMtIZojp06OByH9mRI0d05syZGo+Zm5urnJwc5eTkaNKkSS7bdu3apTNnzighIUFt2rRx/kjSCy+8oDZt2uidd96R9PO9bjt37nQZ4+DBgzp8+LC6detW47kBAAAEilqdeevZs6f++c9/qn///kpLS9O0adMUFhampk2batKkSUpISKjReNOnT1dOTo6ysrI0depU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BALwi6+//lqS1LZtW5mmqUGDBmn27Nm6//779c4772j8+PFasmSJ+vTpo/LycklS3759VVpaqr///e/OcTZu3KhmzZqpqKjI2fbuu+/KNE317dtXknTy5En17t1bS5YsUUZGhtatW6fHH39c+fn5uv32290C0erVq7VgwQJNmTJF69evV2JiYrX78fDDD+vxxx9XcnKy3nrrLU2fPl2FhYX67W9/q8OHD0uSVq1apeHDh0tyXP786KOPNGLEiAvWZ9++fdqwYYMGDhyotm3b6sEHH9TXX3+t9957r8r+EydO1Hfffafnn39ea9ascZ7ds9vtSk9PV//+/fXmm2+qX79+mjhxoiZNmqQHH3xQw4YN06pVq3TllVdqyJAh2rFjxwXnBSAAmABQhxYvXmxKMrdt22ba7Xbzxx9/NN9++22zbdu2ZqtWrcyDBw+ahYWFpiTzz3/+s8t7X3/9dVOSuXDhQtM0TfPEiRNm06ZNzWnTppmmaZr79u0zJZmPP/642axZM7OsrMw0TdMcOXKk2aFDB+c4s2bNMps0aWJu377dZfwVK1aYksy1a9c62ySZl1xyiXnkyJGL7tvnn39uSjJHjx7t0v7xxx+bksxJkyY526ZOnWpKMg8dOuRJ2cxp06aZkszCwkLTNE3z22+/NQ3DMO+//36Xfps3bzYlmTfddJPbGA8++KApyVy5cqWzzW63m23btjUlmZ988omzvaSkxAwKCjLHjx/v0fwq9e/f3+zUqVON3gPAO5x5A1AvEhISFBISolatWmnAgAFq37691q1bp0svvVSbNm2SJA0ZMsTlPXfddZdatGihd999V5LUvHlzXX/99dq4caMkqaioSK1bt9af/vQnnT59Wu+//74kx9m4yrNukvT222+rW7du+tWvfqUzZ844f2699VYZhqEtW7a4fG6fPn3Upk2bi+7T5s2bq5x3r169dNVVVznnXVOmaTovlSYnJ0uSOnfurKSkJK1cuVKlpaVu77nzzjurHMswDKWlpTlfBwcH6/LLL1dUVJSuueYaZ3t4eLjatWvnvIwNIHAR3gDUi6VLl2r79u369NNPtX//fv3jH//QDTfcIMlxj1pwcLDatm3r8h7DMNS+fXuVlJQ42/r27att27bpxIkT2rhxo/r06aOIiAj17NlTGzdu1O7du7V7926X8Pb999/rH//4h0JCQlx+WrVqJdM0nZc3K0VFRXm0T5Xzqqp/hw4dXOZdE5s2bdLu3bt11113qbS0VMeOHdOxY8d099136+TJk3r11Vfd3lPdnJs3b67Q0FCXtqZNmyo8PNytb9OmTVVWVlarOQOoPzxtCqBeXHXVVc6nTc8XERGhM2fO6NChQy4BzjRNHTx4UNddd52z7ZZbblF2drbee+89vfvuu5o6daqzfcOGDercubPzdaXIyEg1a9ZMixYtqvLzIyMjXV4bhuHRPkVEREiSDhw4oJiYGJdt+/fvdxvXUy+99JIk6ZlnntEzzzxT5faHHnrIpc3TOQOwPs68AfC7yqBVuaZZpZUrV+rEiRMuQaxXr14KCwvTnDlzdPDgQedlxb59++rTTz/VG2+8ofj4eHXo0MH5ngEDBuibb75RRESErr32Wref2i4y26dPnyrnvX37dn3++ecu8/bU0aNHtWrVKt1www3avHmz28/vf/97bd++neU5gEaMM28A/C45OVm33nqrHn/8cZWWluqGG27QP/7xD02dOlXXXHON7r//fmffoKAg9e7dW2vWrFHnzp3VpUsXSdINN9wgm82md999VxkZGS7jjxs3TitXrtRNN92kRx55RD169NDZs2f13XffacOGDXr00Uf1m9/8psbzvvLKKzVq1CjNmzdPTZo0Ub9+/bRnzx5lZ2crNjZWjzzySI3HXL58ucrKypSRkaGkpCS37REREVq+fLleeukl/dd//VeNx/eFzz77TJ999pkk6eDBgzp58qRWrFghSYqPj1d8fLxf5gU0Fpx5A+B3hmFo9erVGj9+vBYvXqy0tDTnsiGbNm1y+zaCyvvZzr2vzWaz6cYbb3Rrl6QWLVpo69atGjJkiBYuXKj+/fvr7rvv1rPPPquYmBivvt5pwYIFeuKJJ7R27VoNGDBAkydPVkpKij788EPnZdWaeOmll9SuXTsNGjSoyu3du3dXQkKCli1bptOnT9d63t544403dNddd+muu+7Sjh07dOjQIefrN954wy9zAhoTwzTPW+AIAAAAAYszbwAAABZCeAMAALAQwhsAAICFEN4AAAAshPAGAABgIYQ3AAAACyG8AQAAWAjhDQAAwEIIbwAAABZCeAMAALAQwhsAAICF/H9VNfHfWP5qLAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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PuntXd6w4TwVFR2lXbveDGJVAIKN8AYArZDLla/i4hyVl2+pMe7xbNGXX16miIiPg1QZgGAjvAFAK2NMpUpKxkkyda2VJEVHz+USKhCiCG8A0Mq43avl8fzQwAyjsLCdKi39sMVqAtB6EN4AoJUpL98W0HkA2hbCGwC0MlFRyQGdB6BtIbwBQCsTFzdQDkd3SVY9MyxVVSUpNvbMliwLQCtBeAOAVsaywpWePqd66fC1kqT9+6+VZYW3aF0AWocmh7eqqirt27cvELUAAP7H6cxWRkaeoqJSaow7HN3Vq9dfdPDggCBVBiDYGh3eDhw4oPnz5+uSSy5RSkqKoqKi1LFjR7Vv316nnnqq/vjHP+qzzz5rjloBIKQ4ndnq3//f3uU+fd5WZuZGJSZeFMSqAASbz+Ft//79ys3NVUpKiq699lr9+9//1tlnn61x48Zp4sSJGj16tBITE/V///d/OuWUUzRw4EB9/HHjHyL5wgsvyLIsdejQoda6tWvXaujQoerQoYPi4uKUnZ2tb7/9ttF/AwDsIiIiVllZRllZRomJv+VSKQBF+Drx2GOPVUxMjCZPnqzLL79cXbp0qXOeMUYrV67UvHnzNHjwYD355JO67rrrfPobW7Zs0Z133qmUlBTt2bOnxrovv/xSWVlZOumkk/TGG2/owIEDmjp1qgYOHKj169fL6XT6+lEAAABsy+fwNn36dI0ePVrh4Q3/q8+yLA0ZMkRDhgxRbm6uNm3a5HMxN954o8466ywlJCQoLy+vxrqpU6fK4XBo6dKlio2NlST169dPxx57rB599FE9/PDDPv8dAAAAu/L5suk111xzxOB2uGOOOUZZWVk+zV2wYIFWrVqlp59+uta6gwcPaunSpbr44ou9wU2SevToocGDB+vNN3lJMwAACA0+n3n7tQ8++EBpaWk66qijaq3bu3ev1q1bp7POOsvn/e3YsUPjx4/XjBkz1L1791rrv/nmG+3fv199+/atta5v374qKCjQgQMH1K5duzr37/F45PF4vMulpaWSpIqKClVUVPhcZ6io7gm98R098w998w998w99azx65p/6+haoPvoV3rKystSxY0ctWrRI55xzTo11//73vzV48GBVVvr+wuSbb75Zxx13nG666aY61+/atUuSlJCQUGtdQkKCjDHavXu3kpPrftr4Qw89pNzc3Frjy5cvV/v27X2uM9QUFBQEuwTboWf+oW/+oW/+oW+NR8/8c3jfAvVoNb/CmyQdddRROv/88/Xcc89pzJgxfhewePFiLVmyROvWrZNl1fc08UMaWt/QunvuuUe33367d7m0tFSpqak655xzalyGxSEVFRUqKCjQsGHDFBkZGexybIGe+Ye++Ye++Ye+NR498099fau+8tdUfoe35557TgsXLtS1116rTZs2aerUqY3ex88//6xbbrlFt912m1JSUuR2uyVJ5eXlkiS3263IyEglJiZK+uUM3K/99NNPsixLcXFx9f4dh8Mhh8NRazwyMpKDsQH0p/HomX/om3/om3/oW+PRM/8c3rdA9dDv8BYWFqYnnnhC3bp107333qvNmzfrueeea9Q+du7cqe3bt2vmzJmaOXNmrfXx8fG64IILlJeXp+joaG3YsKHWnA0bNig9Pb3e77sBAAC0JX6Ht2oTJ05U9+7dde2112rr1q264447fN62a9euWrlyZa3xGTNmaNWqVXrnnXeUlJSkiIgInX/++crPz9cjjzyijh07SpI2bdqklStXasKECU39GAAAALbQ5PAmSVdccYW6dOminJwcrV271uft2rVrV+ejRObPn6/w8PAa63Jzc3Xaaadp5MiRmjhxovchvUlJSY0KjAAAAHbm14vpe/ToUes7ZMOGDdOqVauOeNOBv3r16qXCwkJFRkYqJydHY8aMUXp6uj744APergAAAEKGX2feNm7cWOf4SSedpK+++ko//fRTk4qaP3++5s+fX2u8X79+WrFiRZP2DQAAYGcBuWz6ax07dvR+Jw0AAACB1ah3m/rKsixNmTLFr4IAAABQP5/D27Rp02qNWZYlY0yd44Q3AACAwPM5vLlcrhrLBw8eVHJyst5777063zkKAACAwPM5vFW/5aBa9btLO3XqVGsdAAAAmodfjwoBAABAcBDeAAAAbITwBgAAYCNNDm/N9UYFAAAA1ObzDQv13VF66aWXql27djXGLMvSZ5991rTKAAAAUIvP4S0hIaHWWbZBgwYFvCAAAADUz+fwVlhY2IxlAAAAwBfcsAAAAGAjPoe3zZs3+/UHtmzZ4td2AAAAqM3n8Hbsscdq3LhxKikpOeLciooKLVq0SCeddJJefPHFJhUIAACAX/j8nbeCggJNmDBBTz75pE477TQNHjxYp5xyijp37qx27drpp59+0jfffKOioiK9++67Kisr07hx4zRhwoTmrB8AACCk+BzeBg4cqH/9619655139Oyzz+rxxx/X/v37vXegGmMkScccc4xuueUW3XjjjUpOTm6eqgEAAEKUz+Gt2m9/+1v99re/VUVFhdavX6+tW7dq//79SkpK0vHHH69u3bo1R50AAACQH+GtWmRkpE477bRA1gIAAIAj4FEhAAAANkJ4AwAAsBHCGwAAgI0Q3gC0apWVZSostFRYaKmysizY5QBA0BHeAAAAbMTn8LZv377mrAMAAAA+8Dm8dezYUZ988ol32RijqVOn6scff2yWwgAAAFCbz+Gt+g0K1aqqqvTAAw9o69atAS8KAAAAdWvSd94OD3QAAABoXtywAKBVM6bS+7vb/UGNZQAIRY0Kb9UvoT/SGAAEgsuVr08+6e1d3rDhPBUVHSWXKz+IVQFAcDXq3aZ33HGH4uLiJP1yyXT8+PHq1KlTjXmWZemtt94KTIUAQpLLla/i4hxJNb+e4fFsUXFxjjIy8uR0ZgenOAAIIp/DW1pamjZv3qzNmzd7x3r06KFNmzbVmsvZOABNYUylSkrG6fDg9r+1kiyVlIxXUtIFsqzwFq4OAILL5/D23XffNWMZAPALt3u1PJ4fGphh5PFsltu9WvHxWS1UFQC0Dj5/52369Ok8FgRAiygv3xbQeQDQlvgc3nJzc/XDDw39SxgAAiMqKjmg8wCgLfH7Ib0A0Fzi4gbK4eguqb7vz1pyOFIVFzewJcsCgFaB57wBaHUsK1zp6XOqlw5fK0lKT5/NzQoAQlKjHhXy1VdfKSLCt01OOeUUvwoC0DpVVpZp9eoOkqSBA39WeHhMs/49pzNbGRl5+vrrsSov3+Iddzi6Kz19No8JARCyGhXexowZc8Q5xhhZlqXKSp6CDqBpnM5sxccP1YcfHnqWZJ8+bysh4RzOuAEIaY0Kb/fee6969uzZXLUAQC2/DmpxcWcR3ACEvEaFt5EjR6p///7NVQsAAACOgBsWAAAAbITwBsAnxvzyPVa3+4MaywCAluNzeBs0aJBiY2ObsxYArZTLla9PPuntXd6w4TwVFR0llys/iFUBQGjyObytXLlSvXr1as5aALRCLle+iotzajyuQ5I8ni0qLs4hwAFAC2vUDQsAQosxlSopGSeprjesGEmWSkrGKynpgma7CzQ8PEZZWbzhBQCq8Z03APVyu1fL42noncZGHs9mud2rW6wmAAh1hDcA9Sov3xbQeQCApiO8AahXVFRyQOcBAJou6OFt/fr1GjFihNLS0hQdHa2EhAQNGDBACxYsqDFvzJgxsiyr1g83UQDNJy5uoByO7qr9cvhqlhyOVMXFDWzJsgAgpPl8w8LLL7/cqB1fddVVPs1zu91KTU3V73//e3Xr1k1lZWVauHChrrzySn333XeaPHmyd250dLTef//9GttHR0c3qi4AvrOscKWnz1FxcY4OBbhf3zhwKNClp8/mlVUA0IJ8Dm++vJS+mmVZPoe3rKwsZWVl1RgbOXKkNm7cqOeff75GeAsLC1NmZqbPdQBoOqczWxkZefr667E1HhficHRXevpsOZ3ZQawOAEKPz+Ft48aNzVlHLUlJSdqxY0eL/k0AdXM6sxUfP1QffthJktSnz9tKSDiHM24AEAQ+h7cePXo0Zx2qqqpSVVWVdu/erUWLFmnZsmV68skna8zZv3+/unbtKpfLpeTkZF144YWaPn26EhISGty3x+ORx+PxLpeWlkqSKioqVFFREfgPY3PVPaE3vguFnlVWVnl/j4kZoIMHqyRV1b+BD0Khb82BvvmHvjUePfNPfX0LVB8tY0yrePrljTfeqOeee06SFBUVpdmzZ+umm27yrn/sscckSSeccIIkadWqVXrssceUlpamNWvWqEOHDvXue9q0acrNza01/uqrr6p9+/aB/BhAG3ZAnTpdJknas+cvktoFtxwAsJl9+/Zp1KhR2rNnT5NeOep3ePv666/13HPP6T//+Y/2799fc6eWpffee69R+9u0aZN27NihHTt2aMmSJXr++ef18MMP684776x3m8WLFysnJ0ezZs3ShAkT6p1X15m31NRU7dy5k/e11qGiokIFBQUaNmyYIiMjg12OLYRCzyory1RUFC9JyszcrfDwmCbvMxT61hzom3/oW+PRM//U17fS0lIlJSU1Obz59XqsL774QpmZmerWrZtKSkrUt29f7dy5U1u2bFFqaqp69uzZ6H2mpaUpLS1NknTeeedJku655x6NHj1aTqezzm0uuugixcTEqKioqMF9OxwOORyOWuORkZEcjA2gP43XlnsWGRnXbK+past9a070zT/0rfHomX8O71ugeujXc94mTZqkc889V8XFxTLGaO7cudq8ebOWLFmiAwcO6P77729yYf3799fBgwf17bffNjjPGKOwsKA/rg5oUcZUavfuQm3f/pp27y6UMZXBLgkA0EL8OvO2du1aPf30097QVFV16EvLI0aM0J133ql77rlHq1atalJhK1euVFhYmI455ph65+Tl5Wnfvn08PgQhxeXKr+exHXN4bAcAhAC/wtvu3buVkJCgsLAwRUZGavfu3d51p556qqZPn+7zvm644QbFxsaqf//+6tKli3bu3KlFixbp9ddf11133SWn06nvv/9eo0aN0mWXXab09HRZlqVVq1Zp9uzZysjI0HXXXefPxwBsx+XK/98Dc2tevvR4tqi4OEcZGXkEOABo4/wKb926ddPOnTslSenp6frggw80bNgwSdLnn3/e4J2fhxswYIDmzZunl156SW63Wx06dNCJJ56oV155RVdccYUkKTY2Vl26dNGsWbO0fft2VVZWqkePHho7dqwmTZqkmJimf3EaaO2MqVRJyTgdHtz+t1aSpZKS8UpKuoDnrwFAG+ZXeDvzzDP10Ucf6cILL9Tll1+u++67T9u2bVNUVJTmz5/vDV2+uPrqq3X11Vc3OCc+Pl75+fn+lAq0GW73ank8PzQww8jj2Sy3e7Xi47NaqCoAQEvzK7zde++92rp1qyTp7rvv1o8//qiFCxfKsiz97ne/06OPPhrQIgFI5eXbAjoPAGBPfoW3nj17eh8HEh4erscff1yPP/54QAsDUFNUVHJA5wEA7IlnbAA2ERc3UA5Hd0lWPTMsORypiosb2JJlAQBamM9n3l5++WWNGDFCiYmJevnll484/6qrrmpSYQBqsqxwpafP+d/dppZq3rhwKNClp8/mZgUAaON8Dm9jxoxRUVGREhMTNWbMmAbnWpZFeAOagdOZrYyMPJWUjKtx88Kh57zN5jEhABACfA5vGzduVHJysvd3AMHhdGYrKekCud2rVV6+TVFRyYqLG8gZNwAIET6Htx49etT5O4CWZ1nhPA4EAEKUXzcsFBcXN7j+b3/7m1/FAAAAoGF+hbfTTz9d8+fPrzV+8OBBTZgwQRdddFFT6wIAAEAd/ApvOTk5uuaaazRmzBjt379fkvTdd9/pjDPO0NNPP61HHnkkoEUCAADgEL8e0jt//nwNGjRIt912m/71r3/pxhtv1JQpU9SpUyd98MEHOv300wNdJwAAANSEh/ReffXV+vDDD/Xt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0zRt2jRNmjTJp2041vzrW31C5VirS//+/XXw4EF9++239c7heKvJl57VJxSOtZ07d2r79u2aOXOm4uPjvT+vvfaaysrKFB8fr8svv7ze7QN5vLXtTiMgLrroIn355Zf65z//6R07ePCgFixYoNNPP10pKSlBrM5eNm7cqH/84x/KzMwMdinN6k9/+pOmTZumyZMn67777vN5u1A/1vztW11C5Virz8qVKxUWFqZjjjmm3jmhfrwdzpee1SVUjrWuXbtq5cqVtX7OPfdctWvXTitXrtT9999f7/YBPd4a91QT2Nnbb79tFi1aZF588UUjyVxyySVm0aJFZtGiRaasrMwYY8w111xjwsPDzXfffefd7sCBAyYjI8OkpqaahQsXmoKCAnPRRReZiIgIU1hYGKyP02L87dvZZ59tcnNzzZtvvmnee+89M3v2bJOSkmI6duxoNmzYEKyP0+weffRRI8kMHz7cfPzxx7V+qnGs1dSUvoXqsWaMMddff7254447zOuvv24KCwtNXl6eufTSS40kc9ddd3nncbz9oik9C+VjrT51PeetuY83wlsI6dGjh5FU58/GjRuNMYcOwl8vV/vxxx/NVVddZRISEky7du1MZmamKSgoaPkPEQT+9m38+PGmd+/epmPHjiYiIsKkpKSYK664wnz11VfB+SAtZNCgQfX269f/XuRYq6kpfQvVY80YY1588UUzcOBAk5SUZCIiIkxcXJwZNGiQeeWVV2rM43j7RVN6FsrHWn3qCm/NfbxZxhjj+3k6AAAABBPfeQMAALARwhsAAICNEN4AAABshPAGAABgI4Q3AAAAGyG8AQAA2AjhDQAAwEYIbwAAADZCeAPgl/nz58uyLO9PRESEunfvrquvvlpbtmwJdnktavLkyUpLS1NERITi4uJ82ub222+XZVkaOXJk8xbno23btmny5MkaMGCAkpKSFBsbq379+un5559XZWVlsMsD8CuENwBNMm/ePH388ccqKCjQ9ddfr9dee00DBw5UWVlZsEtrEW+99ZYeeOABXXXVVVq1apVWrFhxxG0qKiq0YMECSdK7777bKsLup59+qpdffllnn322Xn75ZS1evFiDBg3STTfdpOuvvz7Y5QH4lYhgFwDA3k444QSdeuqpkqTBgwersrJSf/rTn/TXv/5Vl19+eZCrq58xRgcOHFB0dHST9vPFF19IksaOHavOnTv7tM1bb70ll8ulESNG6O9//7teeuklTZo06YjbVVRUeM9yBtoZZ5yhb775RpGRkd6xYcOGqby8XE899ZRyc3OVmpoa8L8LoPE48wYgoDIzMyVJ33//vSTpwIEDuueee3T00UcrKipK3bp10y233CK32+3d5q677lKnTp1qXJ677bbbZFmW/vznP3vHdu3apbCwMD3xxBPesdLSUt1555019j9+/PhaZ/4sy9Ktt96qZ599Vscff7wcDodeeumlej9HVVWVHnnkEfXq1UsOh0OdO3fWVVddpR9++ME756ijjtLkyZMlSV26dJFlWZo2bdoRezR37lxFRUVp3rx5Sk1N1bx583T4a6YLCwtlWZZeeeUV3XHHHerWrZscDodKSko0ZswYdejQQV9++aXOPfdcxcTEKDk5WTNmzJAkFRUV6cwzz1RMTIx+85vfNPg5q8XHx9cIbtX69+8vSTU+N4Aga/Sr7AHAGDNv3jwjyaxZs6bG+Jw5c4wk8/zzz5uqqipz7rnnmoiICDNlyhSzfPly8+ijj5qYmBhz8sknmwMHDhhjjHn33XeNJPPRRx9599OrVy8THR1thg0b5h17/fXXjSTz73//2xhjTFlZmTnppJNMUlKSmTVrllmxYoWZM2eO6dSpkxkyZIipqqrybivJdOvWzfTt29e8+uqr5v333zdffPFFvZ/vhhtuMJLMrbfeat59913z7LPPGqfTaVJTU43L5TLGGLN27Vpz7bXXGknm3XffNR9//LHZvHlzg33bvHmzCQsLM5dccokxxpjJkycbSaawsLDGvJUrV3przsnJMX/729/M0qVLza5du8zo0aNNVFSUOf74482cOXNMQUGBufrqq40kc88995jf/OY3Zu7cuWbZsmVm5MiRRpL517/+1WBd9Rk9erSJiIgwO3fu9Gt7AIFHeAPgl+rwVlRUZCoqKszevXvN0qVLjdPpNB07djQ//vijN5Q98sgjNbatDmHPP/+8MeZQCIuKijLTp083xhjzww8/GEnm7rvvNtHR0d6Qd/3115uUlBTvfh566CETFhZWK0Dm5eUZSebtt9/2jkkynTp1Mj/99NMRP9t//vMfI8ncfPPNNcb/+c9/Gklm0qRJ3rH77rvPSPIGuiOZPn26N+wZY8y3335rLMsyV155ZY151eHtrLPOqrWP0aNHG0lm8eLF3rGKigrjdDqNJLN27Vrv+K5du0x4eLi5/fbbfarv15YtW2bCwsLMhAkTGr0tgObDZVMATZKZmanIyEh17NhRI0eOVNeuXfXOO++oS5cuev/99yVJY8aMqbHNJZdcopiYGL333nuSpPbt22vAgAHeL/sXFBQoLi5Od911l8rLy/Xhhx9KklasWKGhQ4d697N06VKdcMIJOumkk3Tw4EHvz7nnnivLslRYWFjj7w4ZMkTx8fFH/EwrV66ss+7+/fvr+OOP99bdWMYY76XSYcOGSZKOPvpoZWVlafHixSotLa21zcUXX1znvizL0nnnneddjoiIUHp6upKTk3XyySd7xxMSEtS5c2fvZWxfrV27Vr/73e+UmZmphx56qFHbAmhehDcATfLyyy9rzZo1WrdunbZu3arPP/9cZ5xxhqRD31GLiIiQ0+mssY1lWeratat27drlHRs6dKiKiopUVlamFStWaMiQIUpMTFS/fv20YsUKbdy4URs3bqwR3rZv367PP/9ckZGRNX46duwoY4x27txZ4+8mJyf79Jmq66prfkpKSo26G+P999/Xxo0bdckll6i0tFRut1tut1u/+93vtG/fPr322mu1tqmv5vbt26tdu3Y1xqKiopSQkFBrblRUlA4cOOBznevWrdOwYcN07LHH6u2335bD4fB5WwDNj7tNATTJ8ccf773b9HCJiYk6ePCgXC5XjQBnjNGPP/6o0047zTt29tlna8qUKfrggw/03nvv6b777vOOL1++XEcffbR3uVpSUpKio6P14osv1vn3k5KSaixbluXTZ0pMTJR06Nln3bt3r7Fu69attfbrq7lz50qSZs2apVmzZtW5/g9/+EONMV9rDpR169Zp6NCh6tGjh5YvX65OnTq16N8HcGSceQPQbKqDVvUzzaotXrxYZWVlNYJY//79FRsbq9mzZ+vHH3/0XlYcOnSo1q1bpzfeeEO9e/dWSkqKd5uRI0fqm2++UWJiok499dRaP0cddZRfdQ8ZMqTOutesWaP//Oc/Ner21e7du/Xmm2/qjDPO0MqVK2v9XH755VqzZo330SPBsH79eg0dOlTdu3dXQUGBT5eYAbQ8zrwBaDbDhg3Tueeeq7vvvlulpaU644wz9Pnnn+u+++7TySefrCuvvNI7Nzw8XIMGDdKSJUt09NFHq2fPnpIOPX/M4XDovffe09ixY2vsf/z48Vq8eLHOOussTZgwQX379lVVVZU2bdqk5cuX64477tDpp5/e6LqPO+443XDDDXriiScUFham3/72t/ruu+80ZcoUpaamasKECY3e58KFC3XgwAGNHTtWWVlZtdYnJiZq4cKFmjt3rh577LFG77+pvvrqK+8l6QceeEBff/21vv76a+/6nj171rr8DSA4CG8Amo1lWfrrX/+qadOmad68eXrggQeUlJSkK6+8Ug8++GCt71INHTpUS5YsqfG9NofDoTPPPFMFBQU1xiUpJiZGq1ev1owZM/T8889r48aNio6OVlpamoYOHer3mTdJeuaZZ9SzZ0/NnTtXTz31lDp16qThw4froYce8l5WbYy5c+eqc+fOuvDCC+tc36dPH2VmZmrBggV6+OGH/a7bXx9//LH3u3znn39+rfXz5s2rdQMHgOCwjDnsyZAAAABotfjOGwAAgI0Q3gAAAGyE8AYAAGAjhDcAAAAbIbwBAADYCOENAADARghvAAAANkJ4AwAAsBHCGwAAgI0Q3gAAAGyE8AYAAGAj/x97w0I1urVWMQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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8DbhMmZdfFmv3W73czXwF868AQAAmAjhDQAAwEQIbwAAACZCeAMAADARv4e3rVu3avTo0UpMTFR4eLhiY2OVmZmpTz75xGmeYRj605/+pN69eysyMlLR0dG677779N577zW63YULFyoxMVFWq1XdunVTQUEBN3cCAADT83t4W7x4sQ4cOKDs7Gxt3LhRCxYs0DfffKOUlBRt3brVMW/WrFkaN26c+vTpo7Vr16qoqEhWq1VDhw5VcXGx0zbnzp2r7Oxs2Ww2bdq0SePHj1dhYaEmTJjg690DAADwKr+/KmTRokXq1KmT01hGRoZuv/12FRYWqn///pKkpUuXql+/flq8eLFjXnp6ujp37qzly5fLZrv4dumKigrNmTNHY8eOVWFhoSQpLS1NdrtdeXl5ysnJUXJyso/2DgAAwLv8fubt8uAmSe3bt1dycrIOHTrkGAsNDdUNN9zgNC8sLMzxp0FJSYlqamo0atQop7mjRo2SYRhav369d3cAAADAh/x+5q0xZ86c0a5duxxn3SQpOztbkydP1quvviqbzaaamhr97ne/05kzZ5SVleWYt2fPHklSz549nbYZExOjjh07OpY3pra2VrW1tY7PlZWVki6+CNGT++Ua1uWeO8/QR8/RQ8/RQ8/RQ++gj54LtB66W4fFMAyjhWu5ZiNGjNCbb76p8vJy9e7d2zH+P//zP8rOznYErKioKL355psaMGCAY864ceO0YsUK1dTUuGy3e/fuSkhI0KZNmxr93vz8fBUUFLiMv/7662rXrp2nuwUAANCk6upqPf744zpz5owiIyObnBdwZ95mzJihVatWaeHChU7BbdmyZcrOztbEiRP14IMP6vz581qxYoUyMzNVXFysQYMGOeZaLJYmt3+lZdOmTdOkSZMcnysrKxUfH6+BAwdesYlXY7fbVVpaqvT0dIWGhjZ7O9c7+ug5eug5eug5eugd9NFzgdbDhit+VxNQ4a2goEBz5szR3LlzNXHiRMf4qVOnNGHCBI0ZM0bz5s1zjD/44INKS0vT008/rf3790uSoqOjVVNTo+rqapezZSdPnnQKhJezWq2yWq0u46GhoV75S/XWdq539NFz9NBz9NBz9NA76KPnAqWH7tbg9wcWGhQUFCg/P1/5+fmaPn2607LPP/9c586d01133eWy3p133qkDBw7oP//5j6Rv73XbvXu3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TITwBgAAYCKENwAAABMhvAEAAJgI4Q1AiyoqKpLFYnH8CQkJUVxcnEaNGqUjR474uzyfysvLU9euXRUSEqIOHTq4tc6kSZNksVg0dOjQli3uGqxYsUI//elP1b17dwUFBSkhIcHfJQHXlRB/FwDg+rBs2TIlJibq3Llz+vDDD/Xcc8/p//7f/6vdu3crPDzc3+W1uLfffltz585Vbm6uHnzwQVmt1quuY7fbtXLlSklSSUmJjhw5otjY2JYu9apee+01HTt2TH369FF9fb3sdru/SwKuK4Q3AD7Ro0cP3XnnnZKk+++/X3V1dZo9e7bWr1+vn//8536urmmGYaimpkZt27b1aDt79uyRJGVlZalTp05urfP222/r+PHjGjJkiN577z0tX75c06dPv+p6drvdcZazJWzatElBQRcv3AwdOtSxbwB8g8umAPwiJSVFkvTVV19JkmpqajRt2jR169ZNbdq0UWxsrCZMmKDTp0871vnVr36lG264QXV1dY6x//7v/5bFYtHvfvc7x1hFRYWCgoK0cOFCx1hlZaUmT57stP2cnBydPXvWqS6LxaKJEyfq5ZdfVlJSkqxWq5YvX97kftTX1+uFF15QYmKirFarOnXqpF/84hc6fPiwY05CQoLy8vIkSTfffLMsFovy8/Ov2qNXX31Vbdq00bJlyxQfH69ly5bp8p+j3r59uywWi1577TU9++yzio2NldVq1b/+9S89+eSTat++vT777DMNGjRI4eHhiomJ0W9/+1tJUnl5ufr166fw8HB997vfveJ+XqohuAHwD/4FAvCLf/3rX5Kkm266SYZhaNiwYZo3b56eeOIJvffee5o0aZKWL1+u/v37q7a2VpI0YMAAVVZW6n//938d29myZYvatm2r0tJSx9gHH3wgwzA0YMAASVJ1dbXuu+8+LV++XFlZWXr//fc1ZcoUFRUV6cc//rFLIFq/fr0WL16smTNnatOmTUpNTW1yP375y19qypQpSk9P1zvvvKPZs2erpKREd999t06cOCFJWrdunZ566ilJFy9/fvzxxxozZswV+3P48GFt3rxZmZmZuummmzRy5Ej961//0ocfftjo/GnTpungwYN6+eWXtWHDBsfZPbvdLpvNpiFDhujtt9/Wgw8+qGnTpmn69OkaOXKkRo8erXXr1ql79+568skn9cknn1yxLgABwACAFrRs2TJDklFeXm7Y7XajqqrKePfdd42bbrrJiIiIMI4dO2aUlJQYkowXXnjBad0333zTkGQsWbLEMAzDOHv2rNGmTRvjN7/5jWEYhnH48GFDkjFlyhSjbdu2Rk1NjWEYhjF27FijS5cuju0899xzRlBQkLFz506n7a9Zs8aQZGzcuNExJsm44YYbjJMnT1513/bu3WtIMsaPH+80/te//tWQZEyfPt0xNmvWLEOScfz4cXfaZvzmN78xJBklJSWGYRjGvn37DIvFYjzxxBNO87Zt22ZIMu69916XbYwcOdKQZKxdu9YxZrfbjZtuusmQZOzatcsxXlFRYQQHBxuTJk1yq74GQ4YMMW655ZZrWgeAZzjzBsAnUlJSFBoaqoiICA0dOlSdO3fW+++/r5tvvllbt26VJD355JNO6zz66KMKDw/XBx98IElq166d+vbtqy1btkiSSktL1aFDB/3qV7/S+fPn9dFHH0m6eDau4aybJL377rvq0aOHvv/97+vChQuOP4MGDZLFYtH27dudvrd///668cYbr7pP27Zta7TuPn36KCkpyVH3tTIMw3GpND09XZLUrVs3paWlae3ataqsrHRZ55FHHml0WxaLRYMHD3Z8DgkJ0e23366YmBj94Ac/cIxHRUWpU6dOjsvYAAIX4Q2AT6xYsUI7d+7U3/72N3399df6xz/+oXvuuUfSxXvUQkJCdNNNNzmtY7FY1LlzZ1VUVDjGBgwYoPLycp09e1ZbtmxR//79FR0drd69e2vLli3av3+/9u/f7xTe/v3vf+sf//iHQkNDnf5ERETIMAzH5c0GMTExbu1TQ12Nze/SpYtT3ddi69at2r9/vx599FFVVlbq9OnTOn36tB577DFVV1frz3/+s8s6TdXcrl07hYWFOY21adNGUVFRLnPbtGmjmpqaZtUMwHd42hSATyQlJTmeNr1cdHS0Lly4oOPHjzsFOMMwdOzYMd11112OsQceeEAzZszQhx9+qA8++ECzZs1yjG/evFndunVzfG7QsWNHtW3bVkuXLm30+zt27Oj02WKxuLVP0dHRkqSjR48qLi7OadnXX3/tsl13vfrqq5Kkl156SS+99FKjy//rv/7LaczdmgGYH2feAPhdQ9BqeKdZg7Vr1+rs2bNOQaxPnz6KjIzU/PnzdezYMcdlxQEDBuhvf/ubVq9ereTkZHXp0sWxztChQ/Xll18qOjpad955p8uf5r5ktn///o3WvXPnTu3du9epbnedOnVK69at0z333KNt27a5/Pn5z3+unTt38noO4DrGmTcAfpeenq5BgwZpypQpqqys1D333KN//OMfmjVrln7wgx/oiSeecMwNDg7Wfffdpw0bNqhbt2667bbbJEn33HOPrFarPvjgA2VlZTltPycnR2vXrtW9996rZ555Rr169VJ9fb0OHjyozZs369lnn9WPfvSja667e/fuGjdunBYuXKigoCA9+OCDOnDggGbMmKH4+Hg988wz17zNVatWqaamRllZWUpLS3NZHh0drVWrVunVV1/V//k//+eat+8Nn376qT799FNJ0rFjx1RdXa01a9ZIkpKTk5WcnOyXuoDrBWfeAPidxWLR+vXrNWnSJC1btkyDBw92vDZk69atLr9G0HA/26X3tVmtVvXr189lXJLCw8NVVlamJ598UkuWLNGQIUP02GOP6fe//73i4uI8+nmnxYsX67e//a02btyooUOHKjc3VwMHDtRf/vIXx2XVa/Hqq6+qU6dOGjZsWKPLe/bsqZSUFK1cuVLnz59vdt2eWL16tR599FE9+uij+uSTT3T8+HHH59WrV/ulJuB6YjGMy15wBAAAgIDFmTcAAAATIbwBAACYCOENAADARAhvAAAAJkJ4AwAAMBHCGwAAgIkQ3gAAAEyE8AYAAGAihDcAAAATIbwBAACYCOENAADARP4/JWQrKclnrv0AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tf_z = [299.3777, 288.1736, 272.4744, 259.5129, 241.8841, 233.8030, 229.2665, 219.5115, 211.4388, 199.3276, 184.9726]\n",
"dtf_z = [3.7588, 3.5503,1.2193, 0.7946, 1.7848, 1.4811, 0.7289, 1.0038, 0.7646, 1.0321, 1.0431]\n",
"trunc = [0.5, 0.55, 0.6, 0.65, 0.7, 0.725, 0.75, 0.775, 0.8, 0.85, 0.9]\n",
"p_1 = [0.507, 0.449, 0.398, 0.354, 0.315, 0.298, 0.282, 0.266, 0.252, 0.226, 0.204]\n",
"p_2 = [3.88, 3.38, 2.911, 2.474, 2.066, 1.873, 1.687, 1.507, 1.33, 1.003, 0.696]\n",
" \n",
"plt.figure()\n",
"plt.errorbar(p_1, tf_z, yerr = dtf_z, fmt = 'ob')\n",
"plt.xlabel('Power of Arm 1')\n",
"plt.ylabel('Vertical TF (Hz)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"\n",
"tf_y = [49.3970, 47.4535, 43.9127, 40.8258, 36.6638, 35.6111, 34.3650, 32.0196, 29.9294, 26.5413, 22.4257]\n",
"dtf_y = [1.5574, 0.5536, 0.3721, 0.4734, 0.9428, 0.7725, 0.3264, 0.2862, 0.1988, 0.2477, 0.3690]\n",
"trunc = [0.5, 0.55, 0.6, 0.65, 0.7, 0.725, 0.75, 0.775, 0.8, 0.85, 0.9]\n",
" \n",
"plt.figure()\n",
"plt.errorbar(p_2, tf_y, yerr = dtf_y, fmt = 'oy')\n",
"plt.xlabel('Power of Arm 2')\n",
"plt.ylabel('Axial TF (Hz)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"\n",
"tf_x = [303.5930, 286.0152, 272.6675, 253.6669, 238.8665, 232.4375, 224.9906, 218.7975, 210.9468, 196.7401, 180.0950]\n",
"dtf_x = [6.9704, 2.5433, 0.6739, 0.5183, 0.3901, 0.3994, 0.4995, 0.3777, 0.3864, 0.3636, 0.4790]\n",
"trunc = [0.5, 0.55, 0.6, 0.65, 0.7, 0.725, 0.75, 0.775, 0.8, 0.85, 0.9]\n",
" \n",
"plt.figure()\n",
"plt.errorbar(p_1, tf_x, yerr = dtf_x, fmt = 'og')\n",
"plt.xlabel('Power of Arm 1')\n",
"plt.ylabel('Horz TF (Hz)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"v_x = 27451.697 Hz\n"
]
}
],
"source": [
"import numpy as np\n",
"from astropy import units as u, constants as ac\n",
"\n",
"DY_POLARIZABILITY = 184.4 # in a.u, most precise measured value of Dy polarizability\n",
"DY_MASS = 164*u.u\n",
"\n",
"def horz_tf(x, w_x, w_z):\n",
" w_x = w_x*u.um\n",
" w_z = w_z*u.um\n",
" x = x * u.W\n",
" alpha = DY_POLARIZABILITY\n",
" m = DY_MASS\n",
" TrapDepth = 2*x/(np.pi*w_x*w_z) * (1 / (2 * ac.eps0 * ac.c)) * alpha * (4 * np.pi * ac.eps0 * ac.a0**3)\n",
" ret = ((1/(2 * np.pi)) * np.sqrt(4 * TrapDepth / (m*w_x**2))).decompose()\n",
" return ret.value\n",
" \n",
"def vert_tf(x, w_x, w_z):\n",
" w_x = w_x*u.um\n",
" w_z = w_z*u.um\n",
" x = x * u.W\n",
" alpha = DY_POLARIZABILITY\n",
" m = DY_MASS\n",
" TrapDepth = 2*x/(np.pi*w_x*w_z) * (1 / (2 * ac.eps0 * ac.c)) * alpha * (4 * np.pi * ac.eps0 * ac.a0**3)\n",
" ret = ((1/(2 * np.pi)) * np.sqrt(4 * TrapDepth / (m*w_z**2))).decompose()\n",
" return ret.value\n",
"\n",
"\n",
"v = horz_tf(30, 30, 0.2)\n",
"print('v_x = %.3f Hz' %(v))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<h2> Model</h2> Model(horz_tf) <h2>Fit Statistics</h2><table><tr><td>fitting method</td><td>leastsq</td><td></td></tr><tr><td># function evals</td><td>26</td><td></td></tr><tr><td># data points</td><td>9</td><td></td></tr><tr><td># variables</td><td>2</td><td></td></tr><tr><td>chi-square</td><td> 79.9011718</td><td></td></tr><tr><td>reduced chi-square</td><td> 11.4144531</td><td></td></tr><tr><td>Akaike info crit.</td><td> 23.6520935</td><td></td></tr><tr><td>Bayesian info crit.</td><td> 24.0465426</td><td></td></tr></table><h2>Variables</h2><table><tr><th> name </th><th> value </th><th> standard error </th><th> relative error </th><th> initial value </th><th> min </th><th> max </th><th> vary </th></tr><tr><td> w_x </td><td> 24.1519450 </td><td> 292150.064 </td><td> (1209633.69%) </td><td> 25 </td><td> 0.00000000 </td><td> 100.000000 </td><td> True </td></tr><tr><td> w_z </td><td> 52.4613985 </td><td> 1903772.36 </td><td> (3628901.28%) </td><td> 35 </td><td> 0.00000000 </td><td> 100.000000 </td><td> True </td></tr></table><h2>Correlations (unreported correlations are < 0.100)</h2><table><tr><td>w_x</td><td>w_z</td><td>-1.0000</td></tr></table>"
],
"text/plain": [
"<lmfit.model.ModelResult at 0x1b68d072d60>"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAm8AAAHPCAYAAAAFwj37AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABjnklEQVR4nO3dfXzO9f///9uxmWNONmzIbISUbU56i0RRzs1J0ZLSmSakyJbIyYZNM50gcxIpjUrFm1GkOfdpnay3Nyl+VAphJszJFjbHttfvD1/H29GGbce2Y8d2v14uu1w6nq/n63k8Xg+v6eH5er2eL5NhGAYiIiIi4hRcHB2AiIiIiOSfijcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiVRwdAClWU5ODsePH8fDwwOTyeTocERERKQMMwyD9PR06tati4vL9efXVLzdwPHjx6lXr56jwxAREZFy5OjRo/j5+V13u4q3G/Dw8ACuJNHT07PQ41gsFjZu3Ej37t1xc3MrqvDKHeXRfsqh/ZRD+ymHRUN5tF9py2FaWhr16tWz1h/Xo+LtBq5eKvX09LS7eKtcuTKenp6l4uRwVsqj/ZRD+ymH9lMOi4byaL/SmsOb3aqlBxZEREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERG5gQuXL2CKMmGKMnHh8gVHh6PiTURERMSZqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERuYGs7Cz4FciCr//8muycbIfGo+JNRERE5DoiP4ikVpNa8CmwC3p90osGsQ2I3x/vsJhUvImIiIj8w3/+8x9atGtB1HNRWI5awA3IurItOS2Z/iv6O6yAU/EmIiIi8v/s27eP4OBg7rnnHvYk7QFX4B4gFLj3Sh8DA4CwhDCHXEJV8SYiIiLy/4wdO5bVq1fj4uIC/wJeAnoCVW37GRgcTTtK4pHEEo+x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IlI2qXgTp/bXX3/x7LPPWu+XfPDBB1m8eDG1atVycGQiIiLFQ8WbOK3//ve/9OrVi1OnTuHu7s6sWbMYPnz4Dd+iISIi4uxUvInTaty4MZUrV6ZFixZ88sknNG3a1NEhiYiIFDsVb+K0qlevzsaNG6lfvz7u7u6ODkdERKREqHgTp3bHHXc4OgQREZESVSpejyUiIiIi+aPiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESeip03F6WTnZPPt4W/1/lERESmXVLyJU/n+3PeMmD+C5PRka5ufpx+xQbEEBwQ7MDIREZGSocum4jRW/7KaNw6/YVO4ASSnJdN/RX/i98c7KDIREZGSo+JNnEJ2TjajN43Oc5uBAUBYQhjZOdklGZaIiEiJU/EmTiHxSGKuGbdrGRgcTTtK4pHEEoxKRESk5Kl4E6eQkp5SpP1ERESclYo3cQo+Hj5F2k9ERMRZqXgTp9Chfgd8PXyvu92EiXqe9ehQv0MJRiUiIlLyVLyJU3B1cWVWt1nAlULtWlc/zw6arfXeRESkzFPxJk7jYf+HGddgHHU96tq0+3n6sXLASq3zJiIi5YIW6RWn0q56OyIfjyQpJUlvWBARkXJJxZs4HVcXVzo26OjoMERERBxCl01FREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ+Lw4m3r1q0MHjwYf39/qlSpgq+vL3379mXnzp25+u7atYuuXbtStWpVqlevTnBwMAcPHsxz3Llz5+Lv74/ZbKZhw4ZERUVhsViK+3BEREREipXDi7cFCxZw+PBhQkNDWb9+PbGxsZw8eZK2bduydetWa79ffvmFjh07cvnyZVasWMEHH3zAb7/9RocOHTh16pTNmNOmTSM0NJTg4GA2bNjAiy++SExMDCNGjCjpwxMREREpUhUcHcD8+fOpXbu2TVtQUBCNGzcmJiaGzp07AzB58mTMZjPr1q3D09MTgFatWnH77bczY8YM3njjDQBSU1OJjo5m6NChxMTEANCxY0csFgsRERGEhYURGBhYgkcoIiIiUnQcPvP2z8INoGrVqgQGBnL06FEAsrKyWLduHY888oi1cAO49dZb6dSpE6tXr7a2JSQkkJGRQUhIiM2YISEhGIbBmjVriudAREREREqAw2fe8nL+/Hl27dplnXX7448/uHTpEi1atMjVt0WLFmzatImMjAzc3d3Zu3cvAM2bN7fp5+PjQ82aNa3b85KZmUlmZqb1c1paGgAWi8Wu++Wu7qt77uyjPNpPObSfcmg/5bBoKI/2K205zG8cpbJ4GzFiBBcuXCA8PBy4cikUwMvLK1dfLy8vDMPg7Nmz+Pj4kJqaitlspkqVKnn2vTpWXqZPn05UVFSu9o0bN1K5cuXCHo7Vpk2b7B5DlMeioBzaTzm0n3JYNJRH+5WWHF68eDFf/Upd8TZp0iSWLVvG3LlzadWqlc02k8l03f2u3Zbffv80YcIERo8ebf2clpZGvXr16N69u83l2oKyWCxs2rSJbt264ebmVuhxyjvl0X7Kof2UQ/sph0VDebRfacvh1St+N1OqireoqCiio6OZNm0aI0eOtLZ7e3sD5DlrdubMGUwmE9WrV7f2zcjI4OLFi7lmy86cOZOrILyW2WzGbDbnandzcyuSP9SiGqe8Ux7tpxzaTzm0n3JYNJRH+5WWHOY3Boc/sHBVVFQUkZGRREZGMnHiRJttt912G5UqVWLPnj259tuzZw+NGzfG3d0d+N+9bv/se+LECU6fPk2zZs2K6QhEREREil+pKN5ee+01IiMjiYiIYMqUKbm2V6hQgQcffJD4+HjS09Ot7UeOHGHbtm0EBwdb24KCgnB3d2fJkiU2YyxZsgSTyUS/fv2K6zCcXnZONtsPb+fTPZ+y/fB2snOyHR2SiIiI/IPDL5vOnDmTyZMnExQURO/evUlKSrLZ3rZtW+DKzNzdd99Nnz59GD9+PBkZGUyePJmaNWvyyiuvWPt7eXkRERHBpEmT8PLyonv37uzYsYPIyEiGDBmiNd6uI35/PKEJoRxLO2Zt8/P0IzYoluCA4BvsKSIiIiXJ4cXb2rVrgSvrsyUkJOTabhgGAP7+/mzfvp1x48bRv39/KlSoQOfOnZkxYwa1atWy2Sc8PBwPDw/mz5/PjBkzqFOnDuPHj7c+vSq24vfH039FfwwMm/bktGT6r+jPygErVcCJiIiUEg4v3rZv357vvq1atWLz5s356jtq1ChGjRpVyKjKj+ycbEITQnMVbgAGBiZMhCWE0bdJX1xdXB0QoYiIiFyrVNzzJo6TeCTR5lLpPxkYHE07SuKRxBKMSkRERK5HxVs5l5KeUqT9REREpHipeCvnfDx8irSfiIiIFC8Vb+Vch/od8PP0w0Teb54wYaKeZz061O9QwpGJiIhIXlS8lXOuLq7EBsUC5Crgrn6eHTRbDyuIiIiUEirehOCAYFYOWImvp69Nu5+nn5YJERERKWUcvlSIlA7BAcH0bdKXxCOJpKSn4OPhQ4f6HTTjJiIiUsqoeBMrVxdXOjbo6OgwRERE5AZ02VRERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIireRERERJyIijcRERERJ6LiTURERMSJqHgTERERcSIVHB1AeZadk03ikURS0lPw8fChQ/0OuLq4OjosERERKcUcPvOWnp7Oq6++Svfu3alVqxYmk4nIyMhc/QzD4L333qNVq1Z4enri7e3NAw88wJdffpnnuHPnzsXf3x+z2UzDhg2JiorCYrEU89HkX/z+eBrENqDT0k48Ef8EnZZ2okFsA+L3xzs6NBERESnFHF68paamsmjRIjIzM+nXr991+02ZMoVhw4bRpk0bVq1axZIlSzCbzfTp04f4eNuCZ9q0aYSGhhIcHMyGDRt48cUXiYmJYcSIEcV8NPkTvz+e/iv6cyztmE17cloy/Vf0VwEnIiIi1+Xwy6a33norZ8+exWQycfr0ad5///08+33wwQe0b9+eBQsWWNu6detGnTp1WLp0KcHBwcCVYjA6OpqhQ4cSExMDQMeOHbFYLERERBAWFkZgYGDxH9h1ZOdkE5oQioGRa5uBgQkTYQlh9G3SV5dQRUREJBeHz7yZTCZMJtNN+7m5uVGtWjWbNnd3d+vPVQkJCWRkZBASEmLTNyQkBMMwWLNmTZHEXViJRxJzzbhdy8DgaNpREo8klmBUIiIi4iwcPvOWX6GhoYwZM4bFixcTHBxMRkYGb731FufPn2fUqFHWfnv37gWgefPmNvv7+PhQs2ZN6/a8ZGZmkpmZaf2clpYGgMViset+uav7WiwWjp47mq99jp47Wqru0SsNrs2jFI5yaD/l0H7KYdFQHu1X2nKY3zicpngLCwujUqVKjBgxgiFDhgDg5eXF2rVrue+++6z9UlNTMZvNVKlSJdcYXl5epKamXvc7pk+fTlRUVK72jRs3UrlyZbuPYdOmTfyZ/me++v6590/W/7ne7u8sizZt2uToEJyecmg/5dB+ymHRUB7tV1pyePHixXz1c5riLS4ujtDQUEaOHEnPnj25fPkyH374IX379iU+Pp4ePXpY+97oMuyNtk2YMIHRo0dbP6elpVGvXj26d++Op6dnoWO3WCxs2rSJbt260cO1BwvnL+R4+vE873szYcLX05cxj47RPW//cG0e3dzcHB2OU1IO7acc2k85LBrKo/1KWw6vXvG7Gaco3s6ePWudcZsxY4a1vWfPnnTs2JHhw4dz6NAhALy9vcnIyODixYu5ZsvOnDlDq1atrvs9ZrMZs9mcq93Nza1I/lCvjjOn5xz6r+iPCZNNAWfiSmEZGxSLu9n9esOUe0X151GeKYf2Uw7tpxwWDeXRfqUlh/mNweEPLOTHr7/+yqVLl7j77rtzbWvdujWHDx/m77//Bv53r9uePXts+p04cYLTp0/TrFmz4g/4JoIDglk5YCW+nr427X6efqwcsJLggGAHRSYiIiKlnVPMvNWtWxeApKQkBg0aZG03DIOkpCRq1KhhvcctKCgId3d3lixZwj333GPtu2TJEkwm0w3XkitJwQHB9G3SV29YEBERkQIpFcXbV199xYULF0hPTwdg3759rFy5EoBevXpRv359goODWbRoEWazmV69epGZmcnSpUv59ttvee2116z3snl5eREREcGkSZPw8vKie/fu7Nixg8jISIYMGeLQNd7+ydXFlY4NOjo6DBEREXEipaJ4e+GFF/jzz/89hfnvf/+bf//73wAcOnSIBg0asGzZMubNm8dHH33EBx98gJubG3fccQcff/wxTzzxhM144eHheHh4MH/+fGbMmEGdOnUYP3484eHhJXpcIiIiIkWtVBRvhw8fvmkfd3d3xowZw5gxY/I15qhR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APfddx9ms5ktW7YwatQom/HDwsJYtWoV999/Py+//DItWrQgJyeHI0eOsHHjRl555RXuueeeAsfdpEkThg0bxty5c3FxcaFnz54cPnyYSZMmUa9ePV5++eUCj7ls2TIyMjIYNWoUHTt2zLXd29ubZcuWsXjxYt5+++0Cj18U9u3bx759+wA4ceIEFy9eZOXKlQAEBgYSGBjokLhEygvNvImIw5lMJtasWcPo0aOJi4ujV69e1mVDtm7dmuttBFfvZ7v2vjaz2Uz79u1ztQNUqVKFxMREnn32WRYtWkTv3r0ZMGAAc+bMwc/Pz67XOy1YsIDXX3+d9evX06dPH8LDw+nevTvfffed9bJqQSxevJjatWvTr1+/PLc3b96ctm3b8vHHH3P58uVCx22PFStW8Oijj/Loo4+yc+dOTp06Zf28YsUKh8QkUp6YDOMfCxyJiIiISKmlmTcRERERJ6LiTURERMSJqHgTERERcSIq3kRERESciIo3ERERESei4k1ERETEiah4ExEREXEiKt5EREREnIiKNxEREREnouJNRERExImoeBMRERFxIv8/jRSoYwp8xmcAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from lmfit import Model\n",
"\n",
"fitModel = Model(horz_tf, independent_vars=['x'], param_names=['w_x', 'w_z'], nan_policy='raise')\n",
"params = fitModel.make_params()\n",
"params['w_x'].set(value=25, min=0, max=100)\n",
"params['w_z'].set(value=35, min=0, max=100)\n",
"fitResult = fitModel.fit(data=np.array(tf_z[:-2]), params=params, x=np.array(p_1[:-2]))\n",
"\n",
"plt.figure()\n",
"plt.errorbar(p_1, tf_x, yerr = dtf_x, fmt = 'og')\n",
"plt.errorbar(p_1[:-2], fitResult.best_fit, fmt = 'k--')\n",
"plt.xlabel('Power of Arm 1')\n",
"plt.ylabel('Horz TF (Hz)')\n",
"plt.tight_layout()\n",
"plt.grid(visible=1)\n",
"\n",
"fitResult"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.005, 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099, 0.0106, 0.0113, 0.012, 0.0127, 0.0134, 0.0141, 0.0148, 0.0155, 0.0162, 0.0169, 0.0176, 0.0183, 0.019, 0.0197]\n",
"22\n"
]
},
{
"data": {
"text/plain": [
"0.01235"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l = list(np.arange(0.005, 0.02, 7e-4))\n",
"# l = np.logspace(np.log10(250e-6), np.log10(500e-3), num=15)\n",
"\n",
"l = [round(item, 7) for item in l]\n",
"#random.shuffle(l)\n",
"\n",
"print(l)\n",
"print(len(l))\n",
"np.mean(l)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pixel = 5.86e-6\n",
"M = 0.6827\n",
"F = (1/(0.3725*8.4743e-14)) * (pixel / M)**2\n",
"NCount = 85000\n",
"AtomNumber = NCount * F / 1e8\n",
"print(AtomNumber)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"muB = 9.274e-24\n",
"hbar = 6.626e-34 / (2 * np.pi)\n",
"gJ = 1.24\n",
"\n",
"f = ufloat(10108.46982, 0.26282) \n",
"Delta = 2 * np.pi * f * 1e3\n",
"\n",
"Bz = (Delta*hbar) / (muB*gJ)\n",
"print(Bz * 1e4)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"muB = 9.274e-24\n",
"hbar = 6.626e-34 / (2 * np.pi)\n",
"gJ = 1.24\n",
"Bz = 5.8854 * 1e-4\n",
"(Bz*muB*gJ/hbar) / (2 * np.pi * 1e6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ODT 1 Calibration"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"v_high = 2.7\n",
"\"\"\"High Power\"\"\"\n",
"P_arm1_high = 5.776 * v_high - 0.683\n",
"\n",
"v_mid = 0.2076\n",
"\"\"\"Intermediate Power\"\"\"\n",
"P_arm1_mid = 5.815 * v_mid - 0.03651\n",
"\n",
"v_low = 0.062\n",
"\"\"\"Low Power\"\"\"\n",
"P_arm1_low = 5271 * v_low - 27.5\n",
"\n",
"print(round(P_arm1_high, 3))\n",
"print(round(P_arm1_mid, 3))\n",
"print(round(P_arm1_low, 3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ODT 2 Power Calibration"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"v = 0.842\n",
"P_arm2 = 2.302 * v - 0.06452\n",
"print(round(P_arm2, 3))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
},
"vscode": {
"interpreter": {
"hash": "c05913ad4f24fdc6b2418069394dc5835b1981849b107c9ba6df693aafd66650"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}