{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# HyperSpy Fitting tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This tutorial shows the basics of model (currently only 1D) fitting in HyperSpy from the grounds up.\n",
"\n",
"__Minimum required version:__ HyperSpy 1.6"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Authors:\n",
"\n",
"- 13/04/2015 Tomas Ostasevicius - Developed for HyperSpy workshop at University of Cambridge\n",
"- 01/06/2016 Tomas Ostasevicius - updated and expanded for HyperSpy workshop at Scandem conference 2016\n",
"- 22/07/2016 Tomas Ostasevicius - updated for HyperSpy version 1.0\n",
"- 19/04/2021 Francisco de la Peña - new synthetic dataset. Add standard deviation discussion.\n",
"- 20/04/2021 Francisco de la Peña - Tweak dataset to always fail with `iterpath=\"flyback\"`. Add bounds, fixing parameters and standard deviation check."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Terminology and relationships\n",
"[back to top] \n",
"\n",
"In order to use fitting in HyperSpy more effectively, it is useful to understand our structure for curve fitting.\n",
"\n",
"There are three main things, related to fitting:\n",
"\n",
"__1. Model__\n",
"can be thought of as a simple box (cooking pot), where we have to put our ingredients. Without anything inside, it is not of much use in this case. Once we add some things to it and mix it a bit (do the actual fitting), however, we have our complete dish!\n",
"\n",
"__2. Component__ is the main building block (ingredient) of our model. Here we mix and match what components we need (or want) for the particular case of signal. \n",
"\n",
"Examples: \n",
"- Lorentzian (Cauchy)\n",
"- Gaussian\n",
"- Voigt (a combination of Lorentzian and Gaussian)\n",
"- Offset (i.e. constant background)\n",
"- Exponential function\n",
"- ...\n",
"- [create your own or use the very specialised ones!]\n",
"\n",
"Each of the components is ultimately just a function that has variables that change the (shape of the) output. Such a variable in HyperSpy is called a __parameter__. The model is built by combining *linearly* the components.\n",
"\n",
"\n",
"__3. Parameter__ is the knob that the fitting routine adjusts for a good fit. Each component must include at least one parameter in order to be able to change when fitting. A parameter is also the object that we may limit or have to adjust when the result of the fit is not satisfactory. \n",
"\n",
"Ultimately, a parameter is the only important thing, as far as the fitting is concerned - components are just smart and convenient boxes to combine parameters into functions, and a model is just a box for a collection of components.\n",
"\n",
"For now, let's just keep the rough structure in our heads and look at other things!\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Importing and exploring the relevant docstrings\n",
"\n",
"HyperSpy, like all other Python libraries, first has to be imported in your Python setup in order to be used.\n",
"Once it is, all the relevant commands can be looped up using the autocompletion feature of the IPython. \n",
"\n",
"Lets import the HyperSpy and set up plotting."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:hyperspy_gui_traitsui:The module://ipympl.backend_nbagg matplotlib backend is not compatible with the traitsui GUI elements. For more information, read http://hyperspy.readthedocs.io/en/stable/user_guide/getting_started.html#possible-warnings-when-importing-hyperspy.\n",
"WARNING:hyperspy_gui_traitsui:The traitsui GUI elements are not available.\n"
]
}
],
"source": [
"%matplotlib widget\n",
"import hyperspy.api as hs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once imported, all the HyperSpy commands are available via the \n",
"> `hs.`\n",
"\n",
"interface. You can also look for the help with any Python object like this\n",
"> `help()`"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on module hyperspy.api in hyperspy:\n",
"\n",
"NAME\n",
" hyperspy.api - All public packages, functions and classes are available in this module.\n",
"\n",
"DESCRIPTION\n",
" When starting HyperSpy using the ``hyperspy`` script (e.g. by executing\n",
" ``hyperspy`` in a console, using the context menu entries or using the links in\n",
" the ``Start Menu``, the :mod:`~hyperspy.api` package is imported in the user\n",
" namespace as ``hs``, i.e. by executing the following:\n",
" \n",
" >>> import hyperspy.api as hs\n",
" \n",
" \n",
" (Note that code snippets are indicated by three greater-than signs)\n",
" \n",
" We recommend to import the HyperSpy API as above also when doing it manually.\n",
" The docstring examples assume that `hyperspy` has been imported as `hs`,\n",
" numpy as ``np`` and ``matplotlib.pyplot`` as ``plt``. \n",
" \n",
" Functions:\n",
" \n",
" create_model\n",
" Create a model for curve fitting.\n",
" \n",
" get_configuration_directory_path\n",
" Return the configuration directory path.\n",
" \n",
" load\n",
" Load data into BaseSignal instances from supported files.\n",
" \n",
" preferences\n",
" Preferences class instance to configure the default value of different\n",
" parameters. It has a CLI and a GUI that can be started by execting its\n",
" `gui` method i.e. `preferences.gui()`.\n",
" \n",
" stack\n",
" Stack several signals.\n",
" \n",
" interactive\n",
" Define operations that are automatically recomputed on event changes.\n",
" \n",
" set_log_level\n",
" Convenience function to set HyperSpy's the log level.\n",
" \n",
" \n",
" The :mod:`~hyperspy.api` package contains the following submodules/packages:\n",
" \n",
" :mod:`~hyperspy.api.signals`\n",
" `Signal` classes which are the core of HyperSpy. Use this modules to\n",
" create `Signal` instances manually from numpy arrays. Note that to\n",
" load data from supported file formats is more convenient to use the\n",
" `load` function.\n",
" :mod:`~hyperspy.api.model`\n",
" Contains the :mod:`~hyperspy.api.model.components` module with\n",
" components that can be used to create a model for curve fitting.\n",
" :mod:`~hyperspy.api.eds`\n",
" Functions for energy dispersive X-rays data analysis.\n",
" :mod:`~hyperspy.api.material`\n",
" Useful functions for materials properties and elements database that\n",
" includes physical properties and X-rays and EELS energies.\n",
" :mod:`~hyperspy.api.plot`\n",
" Plotting functions that operate on multiple signals.\n",
" :mod:`~hyperspy.api.datasets`\n",
" Example datasets.\n",
" :mod:`~hyperspy.api.roi`\n",
" Region of interests (ROIs) that operate on `BaseSignal` instances and\n",
" include widgets for interactive operation.\n",
" :mod:`~hyperspy.api.samfire`\n",
" SAMFire utilities (strategies, Pool, fit convergence tests)\n",
" \n",
" \n",
" For more details see their doctrings.\n",
"\n",
"DATA\n",
" preferences = \n",
"\n",
"FILE\n",
" /home/francisco/Git/hyperspy/hyperspy/api.py\n",
"\n",
"\n"
]
}
],
"source": [
"help(hs)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on module hyperspy.components1d in hyperspy:\n",
"\n",
"NAME\n",
" hyperspy.components1d - Components that can be used to define a 1D model for e.g. curve fitting.\n",
"\n",
"DESCRIPTION\n",
" There are some components that are only useful for one particular kind of signal\n",
" and therefore their name are preceded by the signal name: eg. eels_cl_edge.\n",
" \n",
" Writing a new template is easy: see the user guide documentation on creating\n",
" components.\n",
" \n",
" For more details see each component docstring.\n",
" ====================================================================\n",
" Arctan This is the legacy Arctan component dedicat..\n",
" Bleasdale Bleasdale function component...\n",
" Doniach Doniach Sunjic lineshape..\n",
" DoublePowerLaw Double power law component for EELS spectra..\n",
" EELSArctan Arctan function component for EELS (with mi..\n",
" EELSCLEdge EELS core loss ionisation edge from hydroge..\n",
" Erf Error function component...\n",
" Exponential Exponential function component...\n",
" Expression Create a component from a string expression..\n",
" Gaussian Normalized Gaussian function component...\n",
" GaussianHF Normalized gaussian function component, wit..\n",
" HeavisideStep The Heaviside step function...\n",
" Logistic Logistic function (sigmoid or s-shaped curv..\n",
" Lorentzian Cauchy-Lorentz distribution (a.k.a. Lorentz..\n",
" Offset Component to add a constant value in the y-..\n",
" PESCoreLineShape ..\n",
" PESVoigt Voigt component for photoemission spectros..\n",
" Polynomial n-order polynomial component. (DEPRECATED)..\n",
" PowerLaw Power law component...\n",
" RC ..\n",
" SEE Secondary electron emission component for P..\n",
" ScalableFixedPattern Fixed pattern component with interpolation ..\n",
" SkewNormal Skew normal distribution component...\n",
" SplitVoigt Split pseudo-Voigt..\n",
" Vignetting ..\n",
" Voigt This is the legacy Voigt profile component ..\n",
" VolumePlasmonDrude Drude volume plasmon energy loss function c..\n",
"\n",
"FILE\n",
" /home/francisco/Git/hyperspy/hyperspy/components1d.py\n",
"\n",
"\n"
]
}
],
"source": [
"help(hs.model.components1D)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Loading the data and creating the model\n",
"[back to top] \n",
"\n",
"First you should have a spectrum (a particular kind of the `Signal` subclass!) you want to fit. Let's load a synthetic dataset with some curves named \n",
"> `\"two_peaks.hspy\"`\n",
"\n",
"and have a look at it.\n",
"\n",
"If you can't load the dataset, it means you most likely have not generated it yet. Please run the two cells at the end of the notebook to do so."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"s = hs.load(\"two_peaks.hspy\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e9622c84c2a64421811f3efa211af3e5",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "017da53efe8e4e339c795a5c40a93164",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"s.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exploring the dataset we notice that it consists of two peaks that at different points change position and height. In oder to measure the position, height and width of the two peaks at all position we will create a ``Model`` that consists of 2 gaussian functions."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"[back to top] \n",
"\n",
"Creating a model now is simple - just pass the spectrum to the function \n",
"> `model_reference = signal_reference.create_model()`\n",
"\n",
"Let's reference the model by \"`m`\"."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"m = s.create_model()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look what's inside:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" # | Attribute Name | Component Name | Component Type\n",
"---- | ------------------- | ------------------- | -------------------"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, the model is still empty. That will not always be the case - for some types of signals, an automatic background component is added when creating a model, hence it's always good to check.\n",
"\n",
"We can plot the model in exactly the same way as the signal:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The only difference from the model plot is that each data point is displayed individually. \n",
"\n",
"\n",
"[back to top] \n",
"\n",
"To do anything with the model, we should __create__ some __components__ and add them. Let's create two gaussians, referenced as \"g1\" and \"g2\":\n",
"\n",
"-----------------\n",
"P.S.: keep in mind that creating a component is a function - hence there should be brackets at the end! Such as \n",
"> `our_component_reference = hs.model.components1D.example_component()`"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"g1 = hs.model.components1D.GaussianHF()\n",
"g2 = hs.model.components1D.GaussianHF()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"[back to top] \n",
"\n",
"... and __add the components to__ our __model__. For that there are generally two ways:\n",
"\n",
"Individually\n",
"> `our_model_reference.append(our_component_reference)`\n",
"\n",
"or in lists (i.e. grouped by square brackets)\n",
"> `our_model_reference.extend([first_component_reference, second_component_reference])`"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"m.extend([g1, g2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check how the model looks now:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" # | Attribute Name | Component Name | Component Type\n",
"---- | ------------------- | ------------------- | -------------------\n",
" 0 | GaussianHF | GaussianHF | GaussianHF\n",
" 1 | GaussianHF_0 | GaussianHF_0 | GaussianHF"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"[back to top] \n",
"\n",
"For our convenience we can __rename__ the __components__ as we choose, for example \"wide\" and \"narrow\" (note that the \"g1\" and \"g2\" are only references we created for them, not names of the components)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"g1.name = \"wide\"\n",
"g2.name = \"narrow\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can look at the model again to see the result"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" # | Attribute Name | Component Name | Component Type\n",
"---- | ------------------- | ------------------- | -------------------\n",
" 0 | wide | wide | GaussianHF\n",
" 1 | narrow | narrow | GaussianHF"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"[back to top]\n",
"\n",
"To finally see the full structure (the one we looked at here), we can __print all of the parameter values__ of all components of the model."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Model1D: Two gaussians
current_component_values: wide Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
1
\n",
"
0
height
True
1
\n",
"
0
current_component_values: narrow Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
1
\n",
"
0
height
True
1
\n",
"
0
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 1.0 | None | 0.0 | None\n",
" height | True | 1.0 | None | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 1.0 | None | 0.0 | None\n",
" height | True | 1.0 | None | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To access the values, we have to look inside the components for the parameters. It can simply be done by following the pattern:\n",
"> `some_component_reference.parameter_name.value`\n",
"\n",
"In this case the component references are the __g1__ and __g2__, while parameter names are __centre__, __A__ and __sigma__."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At this point it is good practice to store the model so that, if something goes wrong, we can go back to this stage:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"m.store(name=\"new\")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"├── ground_truth\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:47:51\n",
"│ └── dimensions = (32, 32|1024)\n",
"└── new\n",
" ├── components\n",
" │ ├── narrow\n",
" │ └── wide\n",
" ├── date = 2021-04-20 12:48:53\n",
" └── dimensions = (32, 32|1024)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.signal.models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that there is another model stored in the signal, `ground truth`. We'll put it to use at end of this tutorial."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g1.fwhm.value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that we can access the component more conveniently using its name as follows:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components.wide.fwhm.value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"[back to top]\n",
"\n",
"We can __set parameter values__ in exactly the same way. Let set `g1` `sigma` value to 30:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"m.components.wide.fwhm.value = 30"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Model1D: Two gaussians
current_component_values: wide Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
30
\n",
"
0
height
True
1
\n",
"
0
current_component_values: narrow Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
1
\n",
"
0
height
True
1
\n",
"
0
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 30.0 | None | 0.0 | None\n",
" height | True | 1.0 | None | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 1.0 | None | 0.0 | None\n",
" height | True | 1.0 | None | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For convenience, we can also __set values \"in bulk\"__ for all components in the model. The required command is\n",
"> `m.set_parameters_value`\n",
"\n",
"Set the area (\"A\" parameter) of both peaks to 500"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"m.set_parameters_value('height', 100)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Model1D: Two gaussians
current_component_values: wide Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
30
\n",
"
0
height
True
100
\n",
"
0
current_component_values: narrow Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
0
\n",
"
fwhm
True
1
\n",
"
0
height
True
100
\n",
"
0
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 30.0 | None | 0.0 | None\n",
" height | True | 100.0 | None | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 0.0 | None | None | None\n",
" fwhm | True | 1.0 | None | 0.0 | None\n",
" height | True | 100.0 | None | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Indexing the model and fitting a single spectrum"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will start by analyzing the data at one single pixel. For that we can using the same indexing syntax that we use for signals."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"m00 = m.inav[0, 0]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cbe76fe1a4d3439caa8f761a550027be",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m00.plot(plot_components=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to increase the chances of obtaining a good fit to the data, we must provide better starting parameters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We could do that interactively, using ``m.gui()`` or manually as follows:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"m00.components.narrow.centre.value = 60\n",
"m00.components.wide.centre.value = 50"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are now ready to fit"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" covar: array([[ 1.76830147e-04, -5.11658338e-05, 1.93802041e-04,\n",
" -8.01526059e-06, -8.68573149e-05, -3.93832136e-04],\n",
" [-5.11658338e-05, 1.08993808e-03, -1.49141316e-03,\n",
" -3.06548331e-05, 1.62328408e-04, 7.76505163e-04],\n",
" [ 1.93802041e-04, -1.49141316e-03, 5.07437902e-03,\n",
" 5.16094662e-05, -7.30358575e-04, -3.23763439e-03],\n",
" [-8.01526059e-06, -3.06548331e-05, 5.16094662e-05,\n",
" 1.21034752e-04, -2.78305323e-06, -1.31480558e-05],\n",
" [-8.68573149e-05, 1.62328408e-04, -7.30358575e-04,\n",
" -2.78305323e-06, 7.92559428e-04, -2.15838794e-03],\n",
" [-3.93832136e-04, 7.76505163e-04, -3.23763439e-03,\n",
" -1.31480558e-05, -2.15838794e-03, 3.62907692e-02]])\n",
" fun: array([-0.28860998, -1.12330872, 1.04291008, ..., -4.09065073,\n",
" -2.22072033, -2.34996863])\n",
" message: 'Both actual and predicted relative reductions in the sum of squares\\n are at most 0.000000'\n",
" nfev: 64\n",
" status: 1\n",
" success: True\n",
" x: array([ 49.08134201, 59.87208342, 139.92132633, 60.00915957,\n",
" 5.90457142, 48.64318731])"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m00.fit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The fit (notice that the model got updated in the figure) looks good!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that the value of the parameters have changed to their optimal value. Also notice that the standard deviation has been estimated too."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Model1D: Two gaussians
current_component_values: wide Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
49.0813
\n",
"
0.125441
fwhm
True
59.8721
\n",
"
0.311431
0
height
True
139.921
\n",
"
0.671974
0
current_component_values: narrow Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
60.0092
\n",
"
0.103781
fwhm
True
5.90457
\n",
"
0.265569
0
height
True
48.6432
\n",
"
1.79704
0
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 49.0813420 | 0.12544082 | None | None\n",
" fwhm | True | 59.8720834 | 0.31143087 | 0.0 | None\n",
" height | True | 139.921326 | 0.67197358 | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 60.0091595 | 0.10378050 | None | None\n",
" fwhm | True | 5.90457141 | 0.26556856 | 0.0 | None\n",
" height | True | 48.6431873 | 1.79704452 | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m00.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But how to know how good is the fit? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Once the fit was performed, chi-squared ($\\chi^2$), degrees of freedom and reduced chi-squared ($\\chi^2_\\nu$) of the fit are automatically calculated.\n",
"\n",
"They are accessible with, respectively:\n",
"> `m2.chisq`\n",
"\n",
"> `m2.dof`\n",
"\n",
"> `m2.red_chisq`\n",
"\n",
"Let's have a look at reduced $\\chi^2$ by plotting it"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([89.07346101])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m00.red_chisq.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's far too big! (A good fit should have $a\\chi^2_\\nu$ of around 1.)\n",
"\n",
"The issue is that we haven't defined the variance of the noise:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 49.0080535 | 0.10429646 | None | None\n",
" fwhm | True | 59.4604547 | 0.24092372 | 0.0 | None\n",
" height | True | 138.947710 | 0.76124160 | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 60.0114050 | 0.13715077 | None | None\n",
" fwhm | True | 5.95488830 | 0.33873575 | 0.0 | None\n",
" height | True | 48.5826584 | 2.45660792 | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m00.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that the value of the parameters and their standard deviation has changed. The previous values were biased because we haven't defined the noise variance. These values should be more accurate."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can obtain an even more accurate result by using the current model to better estimate the noise variance:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Model1D: Two gaussians
current_component_values: wide Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
49.06
\n",
"
0.104386
fwhm
True
59.9619
\n",
"
0.243351
0
height
True
139.74
\n",
"
0.764604
0
current_component_values: narrow Active: True
Parameter Name
Free
\n",
"
Value
Std
Min
Max
centre
True
59.9998
\n",
"
0.139023
fwhm
True
5.98386
\n",
"
0.341362
0
height
True
48.501
\n",
"
2.45872
0
"
],
"text/plain": [
"Model1D: Two gaussians\n",
"current_component_values: wide\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 49.0600457 | 0.10438558 | None | None\n",
" fwhm | True | 59.9618538 | 0.24335118 | 0.0 | None\n",
" height | True | 139.740317 | 0.76460426 | 0.0 | None\n",
"\n",
"current_component_values: narrow\n",
"Active: True\n",
"Parameter Name | Free | Value | Std | Min | Max\n",
"============== | ===== | ========== | ========== | ========== | ==========\n",
" centre | True | 59.9998497 | 0.13902337 | None | None\n",
" fwhm | True | 5.98386161 | 0.34136212 | 0.0 | None\n",
" height | True | 48.5009772 | 2.45872209 | 0.0 | None\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m00.signal.estimate_poissonian_noise_variance(expected_value=m00.as_signal())\n",
"m00.fit()\n",
"m00.print_current_values()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1.04536884])"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m00.red_chisq.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fitting the first line"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now analyze the first line before attempting to fit the whole dataset"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"ml = m.inav[:, 0]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c669b649ad554be8a270b3f1b04d00e8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b7ae2a41d57041acb21bd6327a9cff12",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that the parameters of the first pixels that we have estimated are already set.\n",
"\n",
"Like before, we must estimate the noise variance"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"ml.signal.estimate_poissonian_noise_variance()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to fit the whole line we must use the ``multifit()`` method"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/francisco/Git/hyperspy/hyperspy/model.py:1567: VisibleDeprecationWarning: The 'iterpath' default will change from 'flyback' to 'serpentine' in HyperSpy version 2.0. Change 'iterpath' to other than None to suppress this warning.\n",
" warnings.warn(\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5825b0ee35bd447d9743f0ae73a4e65e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/32 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.multifit()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2829f567c9bd4ba2b0a43cd61d05545c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.red_chisq.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That looks pretty good!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look at the parameters"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cf2d6cb0bfda4a798695d4bed41ebd33",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.components.narrow.height.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Interesting, the height seems to vary between 30 and 120."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2093fe4714d74633924f5012effb7115",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.components.narrow.centre.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And the position varies sinusoidally between 40 and 60"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3f8b00ff4f29485fba63e7901367931c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ml.components.narrow.fwhm.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There doesn't seem to be any pattern in the variation of the FWHM, it seems to vary randomly around 6. Let's check if its standard variation to value ratio:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.059434453086137186"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ml.components.narrow.fwhm.as_signal().data.std() / ml.components.narrow.fwhm.as_signal().data.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's around 5%, which, given the noisiness of the data, is consistent with this parameter not varying at all,"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.005805821949466616"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ml.components.wide.fwhm.as_signal().data.std() / ml.components.wide.fwhm.as_signal().data.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The wide peaks std to value ratio is just .6%, therefore it is reasonable to think that this parameter is fixed too.\n",
"\n",
"More on this later."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fitting the whole model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before fitting, it is a good idea storing the current state of the model. In this way, if we do something wrong, we can always return to this state"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"├── ground_truth\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:47:51\n",
"│ └── dimensions = (32, 32|1024)\n",
"└── new\n",
" ├── components\n",
" │ ├── narrow\n",
" │ └── wide\n",
" ├── date = 2021-04-20 12:48:53\n",
" └── dimensions = (32, 32|1024)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.models"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"m.store(\"first line fitted\")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"├── first_line_fitted\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:49:48\n",
"│ └── dimensions = (32, 32|1024)\n",
"├── ground_truth\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:47:51\n",
"│ └── dimensions = (32, 32|1024)\n",
"└── new\n",
" ├── components\n",
" │ ├── narrow\n",
" │ └── wide\n",
" ├── date = 2021-04-20 12:48:53\n",
" └── dimensions = (32, 32|1024)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.signal.models"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"m.signal.estimate_poissonian_noise_variance()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/francisco/Git/hyperspy/hyperspy/model.py:1567: VisibleDeprecationWarning: The 'iterpath' default will change from 'flyback' to 'serpentine' in HyperSpy version 2.0. Change 'iterpath' to other than None to suppress this warning.\n",
" warnings.warn(\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6e275573f27444deba6f31ddcc63aa98",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n",
"WARNING:hyperspy.model:Covariance of the parameters could not be estimated. Estimated parameter standard deviations will be np.nan.\n"
]
}
],
"source": [
"m.multifit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All of those warnings suggest that something has indeed gone wrong."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f1614c75740e45fc924db357e8965137",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.get_histogram().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The large number of pixels with a high $\\chi_{\\nu}^2$ indicates that something is wrong with the fit"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3679230e9b004ce38f8085557b943e98",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It looks like something went wrong when jumping from the first line to the second, probably because the starting parameters copied from the last pixel of the first row do are not suitable for the first pixel of the second row. Let's restore the model and try fitting with a differing starting parameters strategy:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"m = m.signal.models.restore(\"first line fitted\")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ae19a53c23584aaabb6ec8cdab6b8309",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.multifit(iterpath=\"serpentine\")"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a2d50dd39cd74c2fab5d0519dd98befd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.get_histogram().plot()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "73b5609aaf604da08d73cbfd478fa49f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The fact that there is no contrast shows that this time the fit is good at all pixels in the dataset! This is because with `iterpath=\"serpentine\"` the fitting routine advances one row at the end of each row without retourning to the beginning of the line."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's visualize the results:"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "be045c966f104a33ac8b3a2605b2e029",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "66e3d46f9b0449e495f9f7a120f850d3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "adc1d05a12fd4d77854e8554ef800feb",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "33cb0ea3d0fe4348ae1f59719a9eee57",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "117c3a060f284c44aaf7e842da8a6991",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f47d7c525ca142bd9435235de5a15ec7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.plot_results()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bounds and fixed components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice the the FWHM of the narrow component sometimes gets negative. It doesn't actually matter, but it makes plotting and analysis more challenging. To fix this issue we can constrain the FWHM of the gaussian:"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"m = m.signal.models.restore(\"first line fitted\")\n",
"m.components.narrow.fwhm.bmin = 5.5\n",
"m.components.narrow.fwhm.bmax = 6.5"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "dd15c1688a2149b793384973ce7c3fb9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.multifit(bounded=True, iterpath=\"serpentine\")"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fa637c54b3df435aa3bf4cce973cc5ad",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.plot()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e277509cfc5b43929d9ba8d33f2940d0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f686015dbb07446e84005ae09b379f4e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9a1969a85a464e2c94b08f3657950dd4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "11d44297191c426a87bc065622e54bdc",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cecda5ff399a4ffc904f1f53089c6229",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "288f2ed1a9f84c99a573bb43f21bd395",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.plot_results()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It worked: there is no sign reversal in the narrow FWHM plot anymore."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look at the histogram of the FWHM parameter of both peaks:"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7664edef4abb443ba66012f1503b9eca",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.components.narrow.fwhm.as_signal().get_histogram().plot()"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1ec8227572ee4d01b79d12926daef006",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.components.wide.fwhm.as_signal().get_histogram().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The peaky shape of the histogram suggests that the parameter variation is only due to noise. The asymmetry is typical of the bias induced by approximating the Poisson noise with a gaussian (i.e. using weighted least-squares instead of an unbiased estimator such as maximum likelihood).\n",
"\n",
"Let's fit again using maximum likelihood:"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/francisco/Git/hyperspy/hyperspy/model.py:1567: VisibleDeprecationWarning: The 'iterpath' default will change from 'flyback' to 'serpentine' in HyperSpy version 2.0. Change 'iterpath' to other than None to suppress this warning.\n",
" warnings.warn(\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "61b314b791364135bc5db21e447ab422",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.multifit(optimizer=\"Nelder-Mead\", loss_function=\"ML-poisson\")"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4775f53656a34899bd849410a5421b25",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.components.narrow.fwhm.as_signal().get_histogram().plot()"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5d511d187dd8477e9b2065cd19268a0c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.components.wide.fwhm.as_signal().get_histogram().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the peaks are more symmetric, confirming that the biased loss function was the issue. Let's check their mean:"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"59.99490496867593"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components.wide.fwhm.as_signal().data.mean()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6.003292092160273"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.components.narrow.fwhm.as_signal().data.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is very close to the actual values that in this case are 60 and 6. With this insight we can refit the model setting the "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This suggests that it would have been better to fix the FWHM of the peaks, let's try:"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"m.store(\"fitted with ML-poisson\")"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"m = m.signal.models.restore(\"new\")"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"m.components.narrow.fwhm.value = 6\n",
"m.components.narrow.fwhm.free = False\n",
"m.components.wide.fwhm.value = 60\n",
"m.components.wide.fwhm.free = False"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ddef71becfe5453abbf908fbd98741b6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3174c876bb924ef384053830ac7601b6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.plot()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"m.signal.axes_manager.indices = (0, 0)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
"m.components.narrow.centre.value = 60\n",
"m.components.wide.centre.value = 50\n",
"m.set_parameters_value(\"height\", 100)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" covar: array([[ 1.02640456e-02, 2.63088576e-03, -6.91533414e-04,\n",
" -3.52215309e-02],\n",
" [ 2.63088576e-03, 2.63399627e-01, 6.00803510e-04,\n",
" -3.59532800e-01],\n",
" [-6.91533414e-04, 6.00803510e-04, 1.74966402e-02,\n",
" -5.05536492e-03],\n",
" [-3.52215309e-02, -3.59532800e-01, -5.05536492e-03,\n",
" 4.24491308e+00]])\n",
" fun: array([-0.05770752, -0.23067977, 0.23108691, ..., -0.96631802,\n",
" -0.57732898, -0.60728395])\n",
" message: 'Both actual and predicted relative reductions in the sum of squares\\n are at most 0.000000'\n",
" nfev: 21\n",
" status: 1\n",
" success: True\n",
" x: array([ 48.97472644, 137.8158598 , 59.99396502, 49.66752157])"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.fit()"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a33233dfc67f425e89e6bdc528fc89e1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.multifit(iterpath=\"serpentine\")"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "07147d81febb4a8ca64d60a6f59b8ff9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.red_chisq.get_histogram().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Standard deviation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also insptect the standard deviation maps:"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [],
"source": [
"narrow_centre_value = m.components.narrow.centre.as_signal()\n",
"narrow_centre_std = m.components.narrow.centre.as_signal(field=\"std\")"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a14babde0e074df1acbb2162652a60ad",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[,\n",
" ]"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hs.plot.plot_images([narrow_centre_value, narrow_centre_std], label=[\"centre\", \"centre std\"], axes_decor=\"off\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how the standard deviation image has a contrast? Is that expected? If yes, what should it be correlated with?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now verify that the standard deviation estimation is correct. We know that, if correct, 66% percent of the residuals must fall between a 1 standard deviation interval. Let's use this property to verify the result:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The ground truth is actually stored in the signal:\n"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"├── first_line_fitted\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:49:48\n",
"│ └── dimensions = (32, 32|1024)\n",
"├── fitted_with_MLpoisson\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 13:00:09\n",
"│ └── dimensions = (32, 32|1024)\n",
"├── ground_truth\n",
"│ ├── components\n",
"│ │ ├── narrow\n",
"│ │ └── wide\n",
"│ ├── date = 2021-04-20 12:47:51\n",
"│ └── dimensions = (32, 32|1024)\n",
"└── new\n",
" ├── components\n",
" │ ├── narrow\n",
" │ └── wide\n",
" ├── date = 2021-04-20 12:48:53\n",
" └── dimensions = (32, 32|1024)"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.signal.models"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [],
"source": [
"narrow_centre_gt = m.signal.models.restore(\"ground truth\").components.narrow.centre.as_signal()"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [],
"source": [
"residuals = (narrow_centre_gt - narrow_centre_value).data"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [],
"source": [
"residuals_in_1sigma = len(residuals[(residuals > -narrow_centre_std.data) & (residuals < narrow_centre_std.data)])"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"68.9453125"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"100 * residuals_in_1sigma / np.prod(residuals.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That is very close to 66% percent, so it works!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Appendix I: User define components interesting components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets say we have a slightly stranger signal that we want to fit, like this one:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"s = hs.load('wobbly_peak.hspy')"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\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('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\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 = $('');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(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 (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n this.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 = $(\n '');\n var titletext = $(\n '');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\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 // put a spacer in here.\n continue;\n }\n var button = $('');\n button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n 'ui-button-icon-only');\n button.attr('role', 'button');\n button.attr('aria-disabled', 'false');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n\n var icon_img = $('');\n icon_img.addClass('ui-button-icon-primary ui-icon');\n icon_img.addClass(image);\n icon_img.addClass('ui-corner-all');\n\n var tooltip_span = $('');\n tooltip_span.addClass('ui-button-text');\n tooltip_span.html(tooltip);\n\n button.append(icon_img);\n button.append(tooltip_span);\n\n nav_element.append(button);\n }\n\n var fmt_picker_span = $('');\n\n var fmt_picker = $('');\n fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n fmt_picker_span.append(fmt_picker);\n nav_element.append(fmt_picker_span);\n this.format_dropdown = fmt_picker[0];\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = $(\n '', {selected: fmt === mpl.default_extension}).html(fmt);\n fmt_picker.append(option)\n }\n\n // Add hover states to the ui-buttons\n $( \".ui-button\" ).hover(\n function() { $(this).addClass(\"ui-state-hover\");},\n function() { $(this).removeClass(\"ui-state-hover\");}\n );\n\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\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\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\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]);\n fig.send_message(\"refresh\", {});\n };\n}\n\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'] / mpl.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n var x1 = msg['x1'] / mpl.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / mpl.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, 0, fig.canvas.width, fig.canvas.height);\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 var cursor = msg['cursor'];\n switch(cursor)\n {\n case 0:\n cursor = 'pointer';\n break;\n case 1:\n cursor = 'default';\n break;\n case 2:\n cursor = 'crosshair';\n break;\n case 3:\n cursor = 'move';\n break;\n }\n fig.rubberband_canvas.style.cursor = cursor;\n}\n\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.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 /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n evt.data.type = \"image/png\";\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src);\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n evt.data);\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n }\n }\n };\n}\n\n// from http://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 if (e.target)\n targ = e.target;\n else if (e.srcElement)\n targ = e.srcElement;\n if (targ.nodeType == 3) // defeat Safari bug\n targ = targ.parentNode;\n\n // jQuery normalizes the pageX and pageY\n // pageX,Y are the mouse positions relative to the document\n // offset() returns the position of the element relative to the document\n var x = e.pageX - $(targ).offset().left;\n var y = e.pageY - $(targ).offset().top;\n\n return {\"x\": x, \"y\": y};\n};\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * http://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys (original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object')\n obj[key] = original[key]\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 {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n var x = canvas_pos.x * mpl.ratio;\n var y = canvas_pos.y * mpl.ratio;\n\n this.send_message(name, {x: x, y: y, button: event.button,\n step: event.step,\n guiEvent: simpleKeys(event)});\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\n // Prevent repeat events\n if (name == 'key_press')\n {\n if (event.which === this._key)\n return;\n else\n this._key = event.which;\n }\n if (name == 'key_release')\n this._key = null;\n\n var value = '';\n if (event.ctrlKey && event.which != 17)\n value += \"ctrl+\";\n if (event.altKey && event.which != 18)\n value += \"alt+\";\n if (event.shiftKey && event.which != 16)\n value += \"shift+\";\n\n value += 'k';\n value += event.which.toString();\n\n this._key_event_extra(event, name);\n\n this.send_message(name, {key: value,\n 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};\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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overriden (by mpl) onmessage function.\n ws.onmessage(msg['content']['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 = $(\"#\" + id);\n var ws_proxy = comm_websocket_adapter(comm)\n\n function ondownload(figure, format) {\n window.open(figure.imageObj.src);\n }\n\n var fig = new mpl.figure(id, ws_proxy,\n ondownload,\n element.get(0));\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.get(0);\n fig.cell_info = mpl.find_output_cell(\"\");\n if (!fig.cell_info) {\n console.error(\"Failed to find cell for figure\", id, fig);\n return;\n }\n\n var output_index = fig.cell_info[2]\n var cell = fig.cell_info[0];\n\n};\n\nmpl.figure.prototype.handle_close = function(fig, msg) {\n var width = fig.canvas.width/mpl.ratio\n fig.root.unbind('remove')\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).html('');\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/mpl.ratio\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '';\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 () { fig.push_to_output() }, 1000);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\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) { continue; };\n\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('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 }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // 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\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= 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('matplotlib', mpl.mpl_figure_comm);\n}\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"s.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's (as the name implies) composed of a sinus + gaussian + 2nd degree polynomial. However we don't have a `sin` component in the in-build library, so we'll just write our own:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"sin = hs.model.components1D.Expression('A*sin(b*x + c)',\n",
" name='sin',)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then just create and add all the additional components we might need: a gaussian and a polynomial"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"m = s.create_model()\n",
"gaus = hs.model.components1D.Gaussian()\n",
"poly = hs.model.components1D.Polynomial(2)\n",
"m.extend([sin, gaus, poly])"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Components\tParameter\tValue\n",
"sin\n",
"\t\tA\t0\n",
"\t\tb\t0\n",
"\t\tc\t0\n",
"Gaussian\n",
"\t\tA\t1\n",
"\t\tcentre\t0\n",
"\t\tsigma\t1\n",
"Polynomial\n",
"\t\tcoefficients[0]\t0\n",
"\t\tcoefficients[1]\t0\n",
"\t\tcoefficients[2]\t0\n"
]
}
],
"source": [
"m.print_current_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The initial values do not seem to be very useful, so let's just plot the model, turn on the widgets, and we'll play until things seem close enough:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\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('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\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 = $('');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(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 (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n this.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 = $(\n '');\n var titletext = $(\n '');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\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 // put a spacer in here.\n continue;\n }\n var button = $('');\n button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n 'ui-button-icon-only');\n button.attr('role', 'button');\n button.attr('aria-disabled', 'false');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n\n var icon_img = $('');\n icon_img.addClass('ui-button-icon-primary ui-icon');\n icon_img.addClass(image);\n icon_img.addClass('ui-corner-all');\n\n var tooltip_span = $('');\n tooltip_span.addClass('ui-button-text');\n tooltip_span.html(tooltip);\n\n button.append(icon_img);\n button.append(tooltip_span);\n\n nav_element.append(button);\n }\n\n var fmt_picker_span = $('');\n\n var fmt_picker = $('');\n fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n fmt_picker_span.append(fmt_picker);\n nav_element.append(fmt_picker_span);\n this.format_dropdown = fmt_picker[0];\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = $(\n '', {selected: fmt === mpl.default_extension}).html(fmt);\n fmt_picker.append(option)\n }\n\n // Add hover states to the ui-buttons\n $( \".ui-button\" ).hover(\n function() { $(this).addClass(\"ui-state-hover\");},\n function() { $(this).removeClass(\"ui-state-hover\");}\n );\n\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\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\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\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]);\n fig.send_message(\"refresh\", {});\n };\n}\n\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'] / mpl.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n var x1 = msg['x1'] / mpl.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / mpl.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, 0, fig.canvas.width, fig.canvas.height);\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 var cursor = msg['cursor'];\n switch(cursor)\n {\n case 0:\n cursor = 'pointer';\n break;\n case 1:\n cursor = 'default';\n break;\n case 2:\n cursor = 'crosshair';\n break;\n case 3:\n cursor = 'move';\n break;\n }\n fig.rubberband_canvas.style.cursor = cursor;\n}\n\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.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 /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n evt.data.type = \"image/png\";\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src);\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n evt.data);\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n }\n }\n };\n}\n\n// from http://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 if (e.target)\n targ = e.target;\n else if (e.srcElement)\n targ = e.srcElement;\n if (targ.nodeType == 3) // defeat Safari bug\n targ = targ.parentNode;\n\n // jQuery normalizes the pageX and pageY\n // pageX,Y are the mouse positions relative to the document\n // offset() returns the position of the element relative to the document\n var x = e.pageX - $(targ).offset().left;\n var y = e.pageY - $(targ).offset().top;\n\n return {\"x\": x, \"y\": y};\n};\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * http://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys (original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object')\n obj[key] = original[key]\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 {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n var x = canvas_pos.x * mpl.ratio;\n var y = canvas_pos.y * mpl.ratio;\n\n this.send_message(name, {x: x, y: y, button: event.button,\n step: event.step,\n guiEvent: simpleKeys(event)});\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\n // Prevent repeat events\n if (name == 'key_press')\n {\n if (event.which === this._key)\n return;\n else\n this._key = event.which;\n }\n if (name == 'key_release')\n this._key = null;\n\n var value = '';\n if (event.ctrlKey && event.which != 17)\n value += \"ctrl+\";\n if (event.altKey && event.which != 18)\n value += \"alt+\";\n if (event.shiftKey && event.which != 16)\n value += \"shift+\";\n\n value += 'k';\n value += event.which.toString();\n\n this._key_event_extra(event, name);\n\n this.send_message(name, {key: value,\n 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};\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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overriden (by mpl) onmessage function.\n ws.onmessage(msg['content']['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 = $(\"#\" + id);\n var ws_proxy = comm_websocket_adapter(comm)\n\n function ondownload(figure, format) {\n window.open(figure.imageObj.src);\n }\n\n var fig = new mpl.figure(id, ws_proxy,\n ondownload,\n element.get(0));\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.get(0);\n fig.cell_info = mpl.find_output_cell(\"\");\n if (!fig.cell_info) {\n console.error(\"Failed to find cell for figure\", id, fig);\n return;\n }\n\n var output_index = fig.cell_info[2]\n var cell = fig.cell_info[0];\n\n};\n\nmpl.figure.prototype.handle_close = function(fig, msg) {\n var width = fig.canvas.width/mpl.ratio\n fig.root.unbind('remove')\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).html('');\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/mpl.ratio\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '';\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 () { fig.push_to_output() }, 1000);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\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) { continue; };\n\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('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 }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // 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\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= 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('matplotlib', mpl.mpl_figure_comm);\n}\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d0291b66f2c641f785c19780c2a54a8b"
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m.plot()\n",
"\n",
"m.gui()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And then fit it and look at the results!"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"m.fit()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Components\tParameter\tValue\n",
"sin\n",
"\t\tA\t-3\n",
"\t\tb\t0.100033\n",
"\t\tc\t-0.707963\n",
"Gaussian\n",
"\t\tA\t2999\n",
"\t\tcentre\t149.95\n",
"\t\tsigma\t49.9833\n",
"Polynomial\n",
"\t\tcoefficients[0]\t-2.19049e-11\n",
"\t\tcoefficients[1]\t0.06002\n",
"\t\tcoefficients[2]\t3\n"
]
}
],
"source": [
"m.print_current_values()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Appendix II: Generating the synthetic data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Two peaks\n",
"[back to top] \n"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "91f271db634c41ca856f14780852ea3c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1024 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:hyperspy.signal:Changing data type from int64 to the original float64\n"
]
}
],
"source": [
"import numpy as np\n",
"import hyperspy.api as hs\n",
"\n",
"domain = 32 #size of the square domain\n",
"hfactor = 600\n",
"cent = (domain//2, domain//2)\n",
"y,x = np.ogrid[-cent[0]:domain-cent[0], -cent[1]:domain-cent[1]]\n",
"\n",
"def gaussian2d(x, y, A=1, x0=0, y0=0, sigmax=20, sigmay=10):\n",
" return A * np.exp(-((x-x0)**2 / 2 / sigmax ** 2 + (y-y0)**2 / 2 / sigmay ** 2))\n",
"\n",
"center_narrow = 50 + 10 * np.sin(3 * np.pi * x / domain) * np.cos(4 * np.pi * y / domain)\n",
"center_wide = 50 + 10 * (-0.1 * np.sin(3 * np.pi * x / domain) * np.cos(4 * np.pi * y / domain))\n",
"\n",
"r = np.sqrt(x**2 + y**2)\n",
"h_narrow = .5 * (.5 + np.sin(r)**2) * gaussian2d(x, y) * hfactor\n",
"h_wide = (.5 + np.cos(r)**2) * gaussian2d(x, y) * hfactor\n",
"\n",
"s = hs.signals.Signal1D(np.ones((domain,domain, 1024)))\n",
"s.metadata.General.title = 'Two gaussians'\n",
"s.axes_manager[0].name = \"x\"\n",
"s.axes_manager[0].units = \"nm\"\n",
"s.axes_manager[1].name = \"y\"\n",
"s.axes_manager[1].units = \"nm\"\n",
"\n",
"s.axes_manager[2].name = \"Energy\"\n",
"s.axes_manager[2].name = \"eV\"\n",
"s.axes_manager[2].scale = 0.1\n",
"m0 = s.create_model()\n",
"\n",
"gs01 = hs.model.components1D.GaussianHF()\n",
"gs01.name = \"wide\"\n",
"m0.append(gs01)\n",
"gs01.fwhm.value = 60\n",
"gs01.centre.map['values'][:] = center_wide\n",
"gs01.centre.map['is_set'][:] = True\n",
"gs01.height.map['values'][:] = h_wide\n",
"gs01.height.map['is_set'][:] = True\n",
"\n",
"gs02 = hs.model.components1D.GaussianHF()\n",
"gs02.name = \"narrow\"\n",
"m0.append(gs02)\n",
"gs02.fwhm.value = 6\n",
"gs02.centre.map['values'][:] = center_narrow\n",
"gs02.centre.map['is_set'][:] = True\n",
"gs02.height.map['values'][:] = h_narrow\n",
"gs02.height.map['is_set'][:] = True\n",
"s.data = m0.as_signal().data\n",
"s.add_poissonian_noise(random_state=0)\n",
"m0.store(\"ground truth\")\n",
"s.save(\"two_peaks.hspy\", overwrite=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Wobbly peak\n",
"[back to top] \n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import hyperspy.api as hs\n",
"\n",
"k = 1\n",
"alpha = 15\n",
"amp = 3\n",
"\n",
"gaus_position = 15\n",
"gaus_width = 5\n",
"gaus_A = 300\n",
"\n",
"gradient = 0.6\n",
"offset= 3\n",
"\n",
"sin_component = hs.model.components1D.Expression('A * sin(k*x + alpha)', name='sin', k=k,\n",
" alpha=alpha, A=amp)\n",
"gaus = hs.model.components1D.Gaussian(A=gaus_A, sigma=gaus_width, centre=gaus_position)\n",
"\n",
"poly = hs.model.components1D.Polynomial(1)\n",
"\n",
"poly.coefficients.value = (gradient, offset)\n",
"\n",
"axis = np.linspace(0, 30, 3000, dtype='double')\n",
"\n",
"result = sin_component.function(axis)+ gaus.function(axis) + poly.function(axis)\n",
"s = hs.signals.Signal1D(result)\n",
"s.axes_manager[0].name = 'x'\n",
"s.axes_manager[0].scale = 0.1\n",
"s.axes_manager[0].offset = 0\n",
"\n",
"s.metadata.General.author = 'Tomas Ostasevicius'\n",
"s.metadata.General.title = 'Sin + poly(2) + Gaussian'\n",
"s.save('wobbly_peak', overwrite=True)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
},
"toc-autonumbering": false,
"toc-showtags": false,
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {
"0001f1cc435d42e682ac6ff3db61c73f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_4ee8ccf2f8c14cc581659a33647a01ce",
"IPY_MODEL_2154a814ea224e87a21ce1d2ab24ca01",
"IPY_MODEL_801f7145905e48aca77f43a82b2c53e2"
],
"layout": "IPY_MODEL_9b4519d5bc984d88a44aef11103810c4"
}
},
"00aa61845cf1413ebf431bd37a545c97": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"01521e38ec1e4d3abcda16f2fd3de0f2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"display": "flex",
"flex_flow": "row",
"justify_content": "space-between"
}
},
"01f5d795fb2a478d8ebca30530f776c1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"0322a73a91b84b24be169c26672b3b8a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"04cb3e13f9644a7c9df6b47cf7518d13": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_e65978b142e9431185829bb8c0d38d4c",
"max": 20,
"style": "IPY_MODEL_7eac6d537a6749988f9b6ff2fcbeeaa8",
"value": 20
}
},
"055afbcabf18441db0fd5bc754806e19": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"05d766f00d834dd5a1954429f54de932": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_01f5d795fb2a478d8ebca30530f776c1",
"max": 20,
"style": "IPY_MODEL_a3dfeb11274a447d8202516e2bd81ff4",
"value": 20
}
},
"06b19e3b6060433cbbbd07f28516589d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"084d4d49c86641b0adc3d13fd4186ed9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_f260d48cda6440ea8da9f20c314d49a8",
"value": "100% 20/20 [00:00<00:00, 108.36it/s]"
}
},
"0a1231cf61b149fb9de30736245ae931": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"0a6f93b547f846b98b9954c941885049": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_5810626ed24e469f8e9cf75be6fdd1e5",
"IPY_MODEL_9be467ff5b584f7ebd9c6d88cf869c4b"
],
"layout": "IPY_MODEL_c992884bfd7a4ef9a4a4f33885e7d48b"
}
},
"0d11ef8759da410c9cae2dc013675953": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_b262f9ae421241d8bdaab5b402f03667",
"value": -10
}
},
"0f7a9a5e506540f5b6ab2b0c532e1580": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_cf6b74b335ce4c0d8f006b8f5096e386",
"IPY_MODEL_c2794a9685c741b290991db56fe18abb",
"IPY_MODEL_aa469cc4b5714806bb3c3eed14c3700f",
"IPY_MODEL_1f17ebe48b4c49fe9613344ce09610b2"
],
"layout": "IPY_MODEL_c8027d58387a468cbecab34b5ad23e1e"
}
},
"100a3b526faa44b588b9fe368784867f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_bbc2dcbd5b21488f9c3617696e2a5649",
"max": 20,
"style": "IPY_MODEL_657b642ead674063beb35fa2b3b3a959",
"value": 20
}
},
"1177bd1a8e374a63a84a30e3e9e550ba": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"1188e9d965ef4bc0bb5d750a8f95d039": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"1220dcbd6ecc4bff95278522234abc18": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"146ece6d3ced40698dbd97edc387cf07": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"160ef82670f74c75bb170c7bdf3d1525": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"167b54d2821441c086c82a35968a6f7d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"16831bdb3d714a7fab26bea79fe6eaff": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "sigma",
"layout": "IPY_MODEL_c3aadf3d8d9f4ef1afc9803278eed5af",
"max": 11,
"min": -9,
"step": 0.02,
"value": 11
}
},
"17011c4d56ac4236931482f8576ff585": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_a342b4d4644549a39a8ec74f92900fa9",
"max": 20,
"style": "IPY_MODEL_77bf76077009430097b15d6cadf7aef8",
"value": 20
}
},
"18769963bda943639c78922600b094b8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"18ac3257f294442baff8bb1f4ece1423": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"18b98bea7db94d83bf2ee8441b3103c2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_1977847f812f45fc884e73f765bae1dc",
"IPY_MODEL_c4d98f9ed5674385a5ac96bbaa8d76da"
],
"layout": "IPY_MODEL_82bbaec193054547914a5a8a77a368fd"
}
},
"1977847f812f45fc884e73f765bae1dc": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_167b54d2821441c086c82a35968a6f7d",
"max": 20,
"style": "IPY_MODEL_a95bbad39e534cc5851d028b96194a1c",
"value": 20
}
},
"19913c8b4da4410a99c281ecf3b368e3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"19e12ad94d2e4755ac404f067e1c672c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ButtonModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "Update",
"layout": "IPY_MODEL_eca38a06625749529469df81564d59b3",
"style": "IPY_MODEL_91add381e33f4161aa8a2684abe3b10a",
"tooltip": "Unlike most other widgets, the multivalue parameter widgets do not update automatically when the value of the changes by other means. Use this button to update the valuesmanually"
}
},
"1b529e6b30944703a9e06f8cd44ec428": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"1b6a6f0898f94863aaf89a28d4db92ee": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"1bc0bfcc086d466cb5c278f43d0decdf": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_7006c0e1342e4ad09bc90b377fe2a3a4",
"IPY_MODEL_16831bdb3d714a7fab26bea79fe6eaff",
"IPY_MODEL_ae7c0cd0fd5f4c20bde54e21c80f3605"
],
"layout": "IPY_MODEL_d07b91a108414bae96ebc1fb3f3c9ab3"
}
},
"1e42c9de022c47b796a01f9dfbab9607": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_afdc67afbf0c4b668c57a0206503df35",
"value": true
}
},
"1f17ebe48b4c49fe9613344ce09610b2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_b21039632b3546c8bf61a2f9d2ea3a62",
"IPY_MODEL_31f92d82ca3548c8b134e32445c3e6d1",
"IPY_MODEL_4bdf33e2558d40f986e70aad42fbb8ae"
],
"layout": "IPY_MODEL_5b4a4d4b3b7d46d5a913d79c2c4b278b"
}
},
"201cc0e31c6143c795ba239377f6ab95": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"213bc4ed6338485cb76f1b02837411ce": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_7574431bd94f4dc78cc2f4613e6274b8",
"IPY_MODEL_fc2ca37a21be4e70aaa1cee13f3f182d",
"IPY_MODEL_e775aafb1e764266a5be997155b89b84"
],
"layout": "IPY_MODEL_60e98bfe061b477c82799401e394827c"
}
},
"2154a814ea224e87a21ce1d2ab24ca01": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "sigma",
"layout": "IPY_MODEL_660f0e95be2149618cbe95320f8cd987",
"max": 13.21025838470534,
"min": -6.789741615294661,
"step": 0.02,
"value": 2.9251487948880377
}
},
"21e6fe97fa504afd8238951295a0f5a0": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_b20b3c2cc1ac498d9103baa03639419b",
"max": 29828.621997079612,
"step": 29.828621997079612,
"value": 29828.621997079612
}
},
"233f2541a6ac43499cc777385e89952e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_5dbad9e9d6674d7ba9b1c40c0c1108f9",
"value": "100% 20/20 [00:00<00:00, 103.23it/s]"
}
},
"23f66b812fd74cf0948167ef911b6690": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"24d1804905844050bd4c9553ae10c53b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_ef349aefc4ac48a9963e5b13c057b262",
"IPY_MODEL_dc974ccbad064b33bdcf7cb4fcb73782"
],
"layout": "IPY_MODEL_23f66b812fd74cf0948167ef911b6690"
}
},
"252989a2ad8a40a4bdaa01870596c981": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_cc2f644cb0884da9b951b600227a51cf"
}
},
"2549910dff714b719d2b6f60f2129529": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"2564b8c3130b4ba0a83785688ec312ed": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_4366eedce97044d5a07d93dde2822213",
"IPY_MODEL_9f2e095a2f4b444ba9da8df39fd4be70",
"IPY_MODEL_c18dfa5187384304884a5938439fad73"
],
"layout": "IPY_MODEL_18ac3257f294442baff8bb1f4ece1423"
}
},
"25b56b5cf0824974ad25ca11bc902c3d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"2660aa61ffa44ef1b0b50cf1908ba8b3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_cc0030d9297a402ba8448ce47aa1347b",
"max": 20,
"style": "IPY_MODEL_eb01392e8f6f45cfb56f3ab200305a97",
"value": 20
}
},
"26d56513a0034b4dbb79870630945a59": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"281d4e892f204960bd1aa6e3e2d6820b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"2904096c0fbf467597ad116f17e98c3a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"29241957cc744721b4bfb1a6766a6316": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_8351808a49454037b82255397ae84182",
"IPY_MODEL_462559adc0f546a381619cda62da7f84",
"IPY_MODEL_6c95b00342254ec595bc539f119b2a91"
],
"layout": "IPY_MODEL_9dccc99dc3b94dad962ffeee0ce81de2"
}
},
"293187ceb05546cc859e47885506c30a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_97cc879c0de54e96983be0dd55ec9483",
"value": 100
}
},
"2978e6da8b0b4a0ca5eccd6a278ce501": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"29a25e11e5234b10a39ff934e4061cf7": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"29f572505fac4493a66569e55f1885e0": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_db0e4f6e25c244f8bc978eea928e679b",
"value": 10
}
},
"2bee667f0260445583c2d935b848fb4b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "centre",
"layout": "IPY_MODEL_1b529e6b30944703a9e06f8cd44ec428",
"max": 102.30000000000001,
"step": 0.1,
"value": 52.37483902438423
}
},
"2cd7fdf4e05442a5bb74a145a90d0429": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_942858ec718048eab4829c00c1a67980",
"IPY_MODEL_84b77167fdbe40a486b414aec229118c"
],
"layout": "IPY_MODEL_19913c8b4da4410a99c281ecf3b368e3"
}
},
"2deb604304a84c09a2e65d713546039b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"2f316b0a69994af6b77a57c531ad4f56": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"2f3a77eb9ce24b41a220019a657eb6c2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"2fd94f2348e5422fb3e8bbc2f9baa33a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"307a7aaf03114cb28f2c9e7f58f7b952": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_ad7708107287436c8fee8c3c77631e2c",
"value": "100% 20/20 [00:00<00:00, 98.38it/s]"
}
},
"3131c8e494c94c4fa7d83be0d85ece49": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_05d766f00d834dd5a1954429f54de932",
"IPY_MODEL_89d04d1d1f42416eb51e46948bae5252"
],
"layout": "IPY_MODEL_2f3a77eb9ce24b41a220019a657eb6c2"
}
},
"31f92d82ca3548c8b134e32445c3e6d1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "centre",
"layout": "IPY_MODEL_9aa898f0c993470c96f88992c6156d4b",
"max": 102.30000000000001,
"step": 0.1,
"value": 52.37483902438423
}
},
"324bc3cabe2e4f358cc9e995ce786704": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_658e0ed9b3b1449b93d3f704dd328e24",
"value": 10
}
},
"340f3046f5304ed2ada20c13cc530191": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_04cb3e13f9644a7c9df6b47cf7518d13",
"IPY_MODEL_d855befacd294f8a8acb5f1ac4fb36a4"
],
"layout": "IPY_MODEL_9be27b56687242978bb5389485dba897"
}
},
"345858497a6346e6931fe4bf06c37720": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_e3ea6bbc441348619ecc575011f34bd1"
}
},
"3892d4da5a84447ca7bff56448ebb700": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"3be22d964726488a824b711b2dbfd7f3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"3c76eb27d201428ba2efe6c1e48d54da": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_5f4ae9ae2df2493abfdd1d6b5bd8259f",
"IPY_MODEL_7a4abb277a37407ab2f172e5a0c15684",
"IPY_MODEL_1bc0bfcc086d466cb5c278f43d0decdf",
"IPY_MODEL_5c0262c333c34cffaf33d3ccab7308a9"
],
"layout": "IPY_MODEL_8327adccf48c43d6adadb42d8fe53986"
}
},
"3cffd1eb9779495281acdd4b46c44536": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_7e792aad29a54d23a6f4e3b64ccfb354",
"value": "100% 20/20 [00:00<00:00, 112.69it/s]"
}
},
"3dd2be683113412b93c04ed5176224af": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_e3135c54c61d4087849fcfc69848c9b9",
"IPY_MODEL_8d16b51a8c9449eab1246a120f0d85c4"
],
"layout": "IPY_MODEL_fd879050c1d94552b35b04244847185e"
}
},
"3dda4dac31d94e1495a1f1b1d6b8c2ac": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_2660aa61ffa44ef1b0b50cf1908ba8b3",
"IPY_MODEL_e1357e76735a4691b7507c66056f732c"
],
"layout": "IPY_MODEL_b4655af0a11c4c0abf919ba70997a977"
}
},
"3fffdb2411de468da90ac88cf5344060": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_d77844638da044ae84ace765a2d4e3e1",
"value": "100% 20/20 [00:00<00:00, 170.78it/s]"
}
},
"400553852e5f474ba1f6270cc1d6719d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_29a25e11e5234b10a39ff934e4061cf7"
}
},
"40282a56c99a44c58e250bacf41fad69": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"409f7f985f844188b0864c911d57dbf3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_100a3b526faa44b588b9fe368784867f",
"IPY_MODEL_084d4d49c86641b0adc3d13fd4186ed9"
],
"layout": "IPY_MODEL_c8883e59482f4c999db68bbf9661760a"
}
},
"4143e3751ee44db79bfca14521cd2c2a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"4230e9ed5d334888bcc2c4be53431915": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"42ddf188191f4fe3923e83994187085b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"432e319676c24c0f93a28fc75b781363": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_e4f628e665224a2590651e73114b99b5",
"IPY_MODEL_72979400d97d442f9a70f14bc51afa6e"
],
"layout": "IPY_MODEL_e516fcdfcca74d41ad9eb740fca7c59c"
}
},
"4366eedce97044d5a07d93dde2822213": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_802d57ca59514d668884bda467c2156e",
"value": 20
}
},
"440aace8e21947a0980a82048b50440c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_a148d47df79c4d2bb78d1548b5f0b3b5",
"value": 10
}
},
"462559adc0f546a381619cda62da7f84": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "2",
"layout": "IPY_MODEL_b4ede3cf3b874bbda91094e0e6f02aa4",
"max": 10,
"min": -10,
"step": 0.02
}
},
"465536b6f4a04be09f46d271be90138d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"466fd08259eb4f5eb8ed55108ac10f7b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"display": "flex",
"flex_flow": "row",
"justify_content": "space-between"
}
},
"482f35464bd546b2b183309a3beafc7e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_252989a2ad8a40a4bdaa01870596c981",
"IPY_MODEL_6b9de89f1af742b7b29188da412c2ac1",
"IPY_MODEL_dc49b41fd7d34663a270a0c754a3f2fd"
],
"layout": "IPY_MODEL_5d344beebb6d47828d8e4f941a9ccf16"
}
},
"48be48a7db65421ba179c0abb5753f36": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"48d9bc0c026448ee9ae10969f47fe55b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"49301ed0bc95473c96944a7d39811174": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_0322a73a91b84b24be169c26672b3b8a",
"value": "100% 20/20 [00:00<00:00, 122.71it/s]"
}
},
"4bdf33e2558d40f986e70aad42fbb8ae": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_9292c92de9a044ae9acbc3c505f6067e",
"value": 102.30000000000001
}
},
"4cbf8e50267b4966b1ec86e2b01deaa5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"4d010e85e3344f769d5dce3b7ee8a6c2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_9bdbeeeec9f045cfb8aa78f6628533b7",
"IPY_MODEL_2bee667f0260445583c2d935b848fb4b",
"IPY_MODEL_52f7fb0ae1e046c08118a2e9c0101fab"
],
"layout": "IPY_MODEL_1220dcbd6ecc4bff95278522234abc18"
}
},
"4ee8ccf2f8c14cc581659a33647a01ce": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_9c25298fd91342ccab95471a13990302",
"value": -6.789741615294661
}
},
"50f6c43b4b3a47978f450f5fe3732f20": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"51849207c0854212b193d8485d8e59de": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_915041b7b3ae49d2b2c136d40c4ef360",
"max": 20,
"style": "IPY_MODEL_917ce5b080d344d8a243fb76a92d26fe",
"value": 20
}
},
"51a368c24d7f45558ac5fd162a06717b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_51849207c0854212b193d8485d8e59de",
"IPY_MODEL_233f2541a6ac43499cc777385e89952e"
],
"layout": "IPY_MODEL_ef8d0ff171fd4fc7a8fc603854847c2a"
}
},
"52928f4731f042eb9cc45073428495d1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_cacee7d1199d4d6297c07b767d21cf83",
"IPY_MODEL_bb1956b0ea2c4cff8943d1522be4eb2f",
"IPY_MODEL_d3e8ea51239d4a5c8240c5cdc88974fc"
],
"layout": "IPY_MODEL_e8e9098c6e6f47c4a05a8f9070cb9ce4"
}
},
"52f7fb0ae1e046c08118a2e9c0101fab": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_c1458ab26bd54919bddb7e0480834362",
"value": 102.30000000000001
}
},
"54efe1b2ec9c45a284950716eff0d205": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_8e397ac8275d47f1ab1ad6ccf0bdc233",
"max": 545.5584819635573,
"step": 0.5455584819635573,
"value": 545.5584819635573
}
},
"5571e75e328e468e83e16733c71168be": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "0",
"layout": "IPY_MODEL_6492a5c2a322439f979cde5c40ee5a93",
"max": 10,
"min": -10,
"step": 0.02
}
},
"56640dcea8dd455883cb4d9c0593bccd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_b5c65ff4b766488ba3042abc27559c1e",
"IPY_MODEL_bf360c54a2374052b2e03e565bb40bb0"
],
"layout": "IPY_MODEL_2978e6da8b0b4a0ca5eccd6a278ce501"
}
},
"57506e0f387d45f4a30063fa2273d30f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"57f50811685b4980887bf07c543c5fdb": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"5810626ed24e469f8e9cf75be6fdd1e5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_2fd94f2348e5422fb3e8bbc2f9baa33a",
"value": true
}
},
"58157aceb67741ee939afda2e91a4b7f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"582dcd19bc3841efbfac8d41672cb2d7": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5907e7736eb24518978b66b8cbea5c87": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_19e12ad94d2e4755ac404f067e1c672c",
"IPY_MODEL_c10234a3ed2240cfa456637ba6f13d43",
"IPY_MODEL_6712d96de231411a93ee5cfc30777ba4",
"IPY_MODEL_29241957cc744721b4bfb1a6766a6316"
],
"layout": "IPY_MODEL_81bb3e4fe41841cb93bb2e9cd69f5a76"
}
},
"5a96933f056e47b38df210372e418dca": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5b4a4d4b3b7d46d5a913d79c2c4b278b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5b556f3f39ab4642b2d7f8a256b25189": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5c0262c333c34cffaf33d3ccab7308a9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_d92b5e42f8aa413484e64a7b85274f5d",
"IPY_MODEL_99cca42389684c48a548dcc19f8b361f",
"IPY_MODEL_fa78681cae9d437b8b0ac5d2fe02cb2b"
],
"layout": "IPY_MODEL_58157aceb67741ee939afda2e91a4b7f"
}
},
"5c6c2a36f69540afa6fa453fab36430a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5d21a75cd9cc408f89a3831afdad3c6f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5d344beebb6d47828d8e4f941a9ccf16": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5dbad9e9d6674d7ba9b1c40c0c1108f9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5e4b15fbd06444e089af5e72309cd875": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"5f4ae9ae2df2493abfdd1d6b5bd8259f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_a6168f41110f434d967c33873e52d186",
"value": true
}
},
"5f78cb1d13be40fa84d4aed846ebc227": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_c63ef44d74a34ba6ab9a01aedfbec86b",
"IPY_MODEL_7a63ee4a912a4f229e86303b501f804f"
],
"layout": "IPY_MODEL_e5c633475c1a4d8586d54f32c5ae6490"
}
},
"5fc9ab6e663544498bdb60481ec34c7c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"60e98bfe061b477c82799401e394827c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"637248a5833a4eca91f619394d0ceaa2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"63e1e1d596c94cf7b64131a72587d306": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"646302eae7a8497ba9f45712a9f16c45": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_2904096c0fbf467597ad116f17e98c3a",
"value": 10
}
},
"6492a5c2a322439f979cde5c40ee5a93": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"6557bfe58b714bd3881c2b256a813f7f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"657b642ead674063beb35fa2b3b3a959": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"658e0ed9b3b1449b93d3f704dd328e24": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"660f0e95be2149618cbe95320f8cd987": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"6712d96de231411a93ee5cfc30777ba4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_8b72f7bef19945c8b46837ce74f29d5f",
"IPY_MODEL_9bd80e51d06e4dbfbf2c1b76de2ee558",
"IPY_MODEL_29f572505fac4493a66569e55f1885e0"
],
"layout": "IPY_MODEL_5d21a75cd9cc408f89a3831afdad3c6f"
}
},
"67b257a9dcd7484cb75dd2b631a695bb": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"67c24aa16e824c43a95f5f39b7367f16": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"6b25c6cda39d4cfdbf97e840cf4c49c2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"6b296823160a46f09b6b239379bdc3fe": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_b7a62eb9fb854ca9b1fa18bfae5ef9df",
"value": 10
}
},
"6b9de89f1af742b7b29188da412c2ac1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "centre",
"layout": "IPY_MODEL_9cb0ff85f51b418c990e8560f18cdaf5",
"max": 102.30000000000001,
"step": 0.1,
"value": 88.5037849806452
}
},
"6c1a8db16d534946933a5e2d5f5171ae": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_0a1231cf61b149fb9de30736245ae931",
"value": 102.30000000000001
}
},
"6c95b00342254ec595bc539f119b2a91": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_845eb050c3c848ce9c40125724ac0821",
"value": 10
}
},
"6cb724d96a764b11a48512748f9341ee": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_b9198829d11d4934b8998ed0128aadbd",
"value": "100% 20/20 [00:00<00:00, 111.94it/s]"
}
},
"6e4421b7c99a4bdb94520fc172731a06": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"6ed223da95c6441a971993e9e7164380": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7006c0e1342e4ad09bc90b377fe2a3a4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_e0904cc318134d22b089d27197e4b6df",
"value": -9
}
},
"71015ec5b9564554b74fe3d7e66d1735": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_1e42c9de022c47b796a01f9dfbab9607",
"IPY_MODEL_84ef39dddfe44a20b6daccbc25e19a8b",
"IPY_MODEL_0001f1cc435d42e682ac6ff3db61c73f",
"IPY_MODEL_c8ea534c595b4b8c91b5c45a58a09511"
],
"layout": "IPY_MODEL_ac9715e20c774af286361415c72c85b6"
}
},
"714fc4d7929d46cca49db2bac8ef0b16": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"72979400d97d442f9a70f14bc51afa6e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_50f6c43b4b3a47978f450f5fe3732f20",
"value": "100% 20/20 [00:00<00:00, 131.06it/s]"
}
},
"7538505862fc4657a1c6738cbec141d5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "AccordionModel",
"state": {
"_model_module_version": "~2.1.4",
"_titles": {
"0": "large",
"1": "small"
},
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_0f7a9a5e506540f5b6ab2b0c532e1580",
"IPY_MODEL_71015ec5b9564554b74fe3d7e66d1735"
],
"layout": "IPY_MODEL_201cc0e31c6143c795ba239377f6ab95",
"selected_index": 1
}
},
"7574431bd94f4dc78cc2f4613e6274b8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_1b6a6f0898f94863aaf89a28d4db92ee"
}
},
"770159025e6342119d30e99dad84130a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"77a1858a6a354ac688efe70de9501baf": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"77bf76077009430097b15d6cadf7aef8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7918008241c141709d2a4e7f7bfd9ae2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"79cd089a120a4d3bb8dd0974a12aaa73": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"79e3599d530e4a75b44ff41c426b5e71": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7a4abb277a37407ab2f172e5a0c15684": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_da7215196fd54d46a0def4b127b283b4",
"IPY_MODEL_b7feb132e8fc4f839223e91ae65ac3fa",
"IPY_MODEL_293187ceb05546cc859e47885506c30a"
],
"layout": "IPY_MODEL_e533c4680d614cdc81619881513a3c0e"
}
},
"7a63ee4a912a4f229e86303b501f804f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_96a0676d63134a46866f0c6162929a31",
"value": "100% 20/20 [00:00<00:00, 118.77it/s]"
}
},
"7b39f3471efc47acafdec7f9c8fe7022": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"7b5790abbc9847c3a18f586ae0c466c9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "centre",
"layout": "IPY_MODEL_ac60169e30dd44d1990cf728b1b7d327",
"max": 102.30000000000001,
"step": 0.1,
"value": 88.5037849806452
}
},
"7b854a7d1ac84300b73a2935d0989674": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7e333774ccaf462c8adbc8fe61a50895": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7e792aad29a54d23a6f4e3b64ccfb354": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7eac6d537a6749988f9b6ff2fcbeeaa8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"7f73b3b2a6f24a0d890322314ed0483f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_a32628a430ee4592ac49bf3d148cfd9e",
"value": -10
}
},
"801f7145905e48aca77f43a82b2c53e2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_d48e07273fd94343bf80e670b48d071b",
"value": 13.21025838470534
}
},
"802d57ca59514d668884bda467c2156e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"80c0bbce2ab34ca0aa81fa5cb3fb7bed": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"81bb3e4fe41841cb93bb2e9cd69f5a76": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"820f5b87988d47b699bb99322079f96e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_e686537e04d94395b8988e6580194e1e"
}
},
"825132f996eb45558506da3d1c523903": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_055afbcabf18441db0fd5bc754806e19",
"max": 510,
"step": 0.51,
"value": 510
}
},
"82650e25bae448b0adc0c3195aeaff07": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"82bbaec193054547914a5a8a77a368fd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"82d37664801f4a189d3751f038fc707e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_da58602f80f0453d8920879372074b2c",
"IPY_MODEL_dfe334e8385a4bce8855d8d428238f07",
"IPY_MODEL_e510befc0859413a888a3fc1b0d8ac5e",
"IPY_MODEL_9cfd4a3c97d74ff6ba8cf19ba3b44315"
],
"layout": "IPY_MODEL_77a1858a6a354ac688efe70de9501baf"
}
},
"831d2a2f91c74e9b93399e9f66734baf": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_893ff6ad08054f05b5e1bb7852e61976",
"IPY_MODEL_b3bdd5e33ed3464e9cc62bb9ea8704c7"
],
"layout": "IPY_MODEL_855a375b8247450181fd3853dc363a76"
}
},
"8327adccf48c43d6adadb42d8fe53986": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"8351808a49454037b82255397ae84182": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_eacbf0edb3064d95b0b5e0ea720a6c5d",
"value": -10
}
},
"83c26e2ceae04f51a01b276bf0c8496f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_5b556f3f39ab4642b2d7f8a256b25189",
"value": "100% 20/20 [00:00<00:00, 117.22it/s]"
}
},
"845eb050c3c848ce9c40125724ac0821": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"84b77167fdbe40a486b414aec229118c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_7b854a7d1ac84300b73a2935d0989674",
"value": "100% 20/20 [00:00<00:00, 148.03it/s]"
}
},
"84ef39dddfe44a20b6daccbc25e19a8b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_345858497a6346e6931fe4bf06c37720",
"IPY_MODEL_54efe1b2ec9c45a284950716eff0d205",
"IPY_MODEL_9c1a440035f74cd8818867987c52469a"
],
"layout": "IPY_MODEL_b73fdbdd52634b9daa64091fd30a0f5c"
}
},
"850711d1789c4391ba748cfe002d5a28": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"855a375b8247450181fd3853dc363a76": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"857c3172897d4da7af58995e67172422": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"867306ed01d74c98949740fe207a89c7": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_18769963bda943639c78922600b094b8",
"max": 20,
"style": "IPY_MODEL_1188e9d965ef4bc0bb5d750a8f95d039",
"value": 20
}
},
"8678c08e0a5040558dc7dae302d80857": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"87397a6f9af34717a3e3c79a6c90f8dd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"87ac5a703a8649c58fd7d091dcf0b98e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "c",
"layout": "IPY_MODEL_94c8145251d5413ba1d2219ae8f133a5",
"max": 10,
"min": -10,
"step": 0.02,
"value": -0.7079632787410637
}
},
"88aea199c8514c29821cf7b86a9d86a3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_d91313a2738e4cdda812e0ef7aa99e76",
"IPY_MODEL_49301ed0bc95473c96944a7d39811174"
],
"layout": "IPY_MODEL_9f5cdc54cad649548a1489dbae2b5213"
}
},
"893ff6ad08054f05b5e1bb7852e61976": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_714fc4d7929d46cca49db2bac8ef0b16",
"max": 20,
"style": "IPY_MODEL_850711d1789c4391ba748cfe002d5a28",
"value": 20
}
},
"89d04d1d1f42416eb51e46948bae5252": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_6b25c6cda39d4cfdbf97e840cf4c49c2",
"value": "100% 20/20 [00:00<00:00, 101.50it/s]"
}
},
"8b72f7bef19945c8b46837ce74f29d5f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_40282a56c99a44c58e250bacf41fad69",
"value": -10
}
},
"8d16b51a8c9449eab1246a120f0d85c4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_5c6c2a36f69540afa6fa453fab36430a",
"value": "100% 20/20 [00:00<00:00, 116.48it/s]"
}
},
"8d6eef56ce634cd0b14ed80df23fb4e6": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"display": "flex",
"flex_flow": "row",
"justify_content": "space-between"
}
},
"8df1a04c7f074402b8dc5e5f639c96a9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"8e397ac8275d47f1ab1ad6ccf0bdc233": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"8ec15df5fcf4437dbe4b8b2faa3b8f45": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "sigma",
"layout": "IPY_MODEL_2f316b0a69994af6b77a57c531ad4f56",
"max": 39.952469314589244,
"min": 19.952469314589244,
"step": 0.02,
"value": 29.918931899749882
}
},
"8f09019025d64aafa45cf8a516aaea6c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"8f98f1f79a154a43bae99460e9f67679": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_4230e9ed5d334888bcc2c4be53431915"
}
},
"90905eb9cdd14678b1568cb6c48cca70": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_cfd468b026ef4d0aac698a2be5497f61",
"IPY_MODEL_83c26e2ceae04f51a01b276bf0c8496f"
],
"layout": "IPY_MODEL_8f09019025d64aafa45cf8a516aaea6c"
}
},
"90ca3f893aa54a6187fe68d31117d680": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_fb69962a51d7418cbe7607520fb470bb",
"value": 29828.621997079612
}
},
"915041b7b3ae49d2b2c136d40c4ef360": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"917ce5b080d344d8a243fb76a92d26fe": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"91add381e33f4161aa8a2684abe3b10a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ButtonStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"9292c92de9a044ae9acbc3c505f6067e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"942858ec718048eab4829c00c1a67980": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_79e3599d530e4a75b44ff41c426b5e71",
"max": 20,
"style": "IPY_MODEL_67b257a9dcd7484cb75dd2b631a695bb",
"value": 20
}
},
"94c8145251d5413ba1d2219ae8f133a5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"96a0676d63134a46866f0c6162929a31": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"970b4876abec43678e7789ffb56e459b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"97cc879c0de54e96983be0dd55ec9483": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"982b93d5a1814e83bffb05bed39ac4da": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"99cca42389684c48a548dcc19f8b361f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "centre",
"layout": "IPY_MODEL_3be22d964726488a824b711b2dbfd7f3",
"max": 299.90000000000003,
"step": 0.1,
"value": 149.95000000166183
}
},
"99fd87f6d4fc4d5d974d64652704683e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"9aa898f0c993470c96f88992c6156d4b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"9b4519d5bc984d88a44aef11103810c4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"9bd80e51d06e4dbfbf2c1b76de2ee558": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "1",
"layout": "IPY_MODEL_bd4e537ca89e4361a6c31c315ad9a6d3",
"max": 10,
"min": -10,
"step": 0.02
}
},
"9bdbeeeec9f045cfb8aa78f6628533b7": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_a0fe448bb1d44e81a35a0794427f8153"
}
},
"9be27b56687242978bb5389485dba897": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"9be467ff5b584f7ebd9c6d88cf869c4b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "AccordionModel",
"state": {
"_model_module_version": "~2.1.4",
"_titles": {
"0": "coefficients"
},
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_5907e7736eb24518978b66b8cbea5c87"
],
"layout": "IPY_MODEL_99fd87f6d4fc4d5d974d64652704683e"
}
},
"9c1a440035f74cd8818867987c52469a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_00aa61845cf1413ebf431bd37a545c97",
"value": 545.5584819635573
}
},
"9c25298fd91342ccab95471a13990302": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"9c5c03c6538f49449e3f0dffab08dd8c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_80c0bbce2ab34ca0aa81fa5cb3fb7bed",
"value": true
}
},
"9c7848cbc8d642c7957234d6850aba76": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"9cb0ff85f51b418c990e8560f18cdaf5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"9cfd4a3c97d74ff6ba8cf19ba3b44315": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_e570c5a9a6894ec6b9fa1bb84e2c5e68",
"IPY_MODEL_87ac5a703a8649c58fd7d091dcf0b98e",
"IPY_MODEL_440aace8e21947a0980a82048b50440c"
],
"layout": "IPY_MODEL_fc26fa25bd8847d6b105548ac0dd055a"
}
},
"9dccc99dc3b94dad962ffeee0ce81de2": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"9f2e095a2f4b444ba9da8df39fd4be70": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "sigma",
"layout": "IPY_MODEL_5fc9ab6e663544498bdb60481ec34c7c",
"max": 40,
"min": 20,
"step": 0.02,
"value": 29.918931899749882
}
},
"9f5cdc54cad649548a1489dbae2b5213": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a0fe448bb1d44e81a35a0794427f8153": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"a148d47df79c4d2bb78d1548b5f0b3b5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"a298d02456f64475ac363422c090e065": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a32628a430ee4592ac49bf3d148cfd9e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"a342b4d4644549a39a8ec74f92900fa9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a3dfeb11274a447d8202516e2bd81ff4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a4f67beaa573441ead4f375587aae072": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"display": "flex",
"flex_flow": "row",
"justify_content": "space-between"
}
},
"a58d98721e404119b6047e7dc680a5c8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_bd2a4ad79f3845f69b4d1f0b12707b4b",
"value": 19.952469314589244
}
},
"a6168f41110f434d967c33873e52d186": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a85fcb27b0f14816be2d36c3eeea59bd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a8d8f984f97e403aac6bcbc386a5a11f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_b5ca01eda67f49d89332e13cce5a2ccd",
"IPY_MODEL_eb978d4278ff4ac09e3008bb105610cd",
"IPY_MODEL_52928f4731f042eb9cc45073428495d1",
"IPY_MODEL_482f35464bd546b2b183309a3beafc7e"
],
"layout": "IPY_MODEL_a298d02456f64475ac363422c090e065"
}
},
"a90fab514e4c42b09d894d0f6051ad18": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"a95bbad39e534cc5851d028b96194a1c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"aa16e47c899d4a3da4a8c7f7d57c897e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "b",
"layout": "IPY_MODEL_f5732b803a964d449684ac1d9fc47618",
"max": 10,
"min": -10,
"step": 0.02,
"value": 0.10003334452108
}
},
"aa469cc4b5714806bb3c3eed14c3700f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_a58d98721e404119b6047e7dc680a5c8",
"IPY_MODEL_8ec15df5fcf4437dbe4b8b2faa3b8f45",
"IPY_MODEL_b14f6e4befad4948966ae071e951cc50"
],
"layout": "IPY_MODEL_970b4876abec43678e7789ffb56e459b"
}
},
"ac60169e30dd44d1990cf728b1b7d327": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"ac9715e20c774af286361415c72c85b6": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"ad7708107287436c8fee8c3c77631e2c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"ae7c0cd0fd5f4c20bde54e21c80f3605": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_57506e0f387d45f4a30063fa2273d30f",
"value": 11
}
},
"aedc7890c1b1451bb8a4eae2710240e4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_7918008241c141709d2a4e7f7bfd9ae2",
"max": 20,
"style": "IPY_MODEL_1177bd1a8e374a63a84a30e3e9e550ba",
"value": 20
}
},
"afdc67afbf0c4b668c57a0206503df35": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"b14f6e4befad4948966ae071e951cc50": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_f73d12dd0f3540489bd768a606103919",
"value": 39.952469314589244
}
},
"b20b3c2cc1ac498d9103baa03639419b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"b21039632b3546c8bf61a2f9d2ea3a62": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_7b39f3471efc47acafdec7f9c8fe7022"
}
},
"b262f9ae421241d8bdaab5b402f03667": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"b2d11b328ea7484e8f4249e5d7c4bc78": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"b3bdd5e33ed3464e9cc62bb9ea8704c7": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_146ece6d3ced40698dbd97edc387cf07",
"value": "100% 20/20 [00:00<00:00, 79.70it/s]"
}
},
"b4655af0a11c4c0abf919ba70997a977": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"b4ede3cf3b874bbda91094e0e6f02aa4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"b5c65ff4b766488ba3042abc27559c1e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_fad9ab964c68402699f91ff337812e1b",
"max": 20,
"style": "IPY_MODEL_26d56513a0034b4dbb79870630945a59",
"value": 20
}
},
"b5ca01eda67f49d89332e13cce5a2ccd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_e7f89c64ad32458a8092a4a268fa4a95",
"value": true
}
},
"b73fdbdd52634b9daa64091fd30a0f5c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"b7a62eb9fb854ca9b1fa18bfae5ef9df": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"b7feb132e8fc4f839223e91ae65ac3fa": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_57f50811685b4980887bf07c543c5fdb",
"step": 0.1,
"value": 100
}
},
"b9198829d11d4934b8998ed0128aadbd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"bb1956b0ea2c4cff8943d1522be4eb2f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "sigma",
"layout": "IPY_MODEL_25b56b5cf0824974ad25ca11bc902c3d",
"max": 11,
"min": -9,
"step": 0.02,
"value": 2.9251487948880377
}
},
"bb52e2e377a142ce85fccfebcf73d8b5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"bbc2dcbd5b21488f9c3617696e2a5649": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"bd226476c35047afb3adb480a1bb6cdb": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"bd2a4ad79f3845f69b4d1f0b12707b4b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"bd4e537ca89e4361a6c31c315ad9a6d3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"bf360c54a2374052b2e03e565bb40bb0": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_582dcd19bc3841efbfac8d41672cb2d7",
"value": "100% 20/20 [00:00<00:00, 93.85it/s]"
}
},
"c086f4773b4e4a77a5abf88e07740803": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"c10234a3ed2240cfa456637ba6f13d43": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_dfd3b6e694514aef8e1b0e717245b4f9",
"IPY_MODEL_5571e75e328e468e83e16733c71168be",
"IPY_MODEL_6b296823160a46f09b6b239379bdc3fe"
],
"layout": "IPY_MODEL_3892d4da5a84447ca7bff56448ebb700"
}
},
"c1458ab26bd54919bddb7e0480834362": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"c18dfa5187384304884a5938439fad73": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_63e1e1d596c94cf7b64131a72587d306",
"value": 40
}
},
"c2794a9685c741b290991db56fe18abb": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_8f98f1f79a154a43bae99460e9f67679",
"IPY_MODEL_21e6fe97fa504afd8238951295a0f5a0",
"IPY_MODEL_90ca3f893aa54a6187fe68d31117d680"
],
"layout": "IPY_MODEL_cee01459586f4830ace93923eaf277a4"
}
},
"c33cf460a93a4ed382f16f8c29c2ef67": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_67c24aa16e824c43a95f5f39b7367f16",
"max": 10,
"min": -10,
"step": 0.02,
"value": -2.9999999983521404
}
},
"c3aadf3d8d9f4ef1afc9803278eed5af": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"c4d98f9ed5674385a5ac96bbaa8d76da": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_a90fab514e4c42b09d894d0f6051ad18",
"value": "100% 20/20 [00:00<00:00, 144.91it/s]"
}
},
"c57e21a1b4ec405f874eddc997b6d701": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_17011c4d56ac4236931482f8576ff585",
"IPY_MODEL_307a7aaf03114cb28f2c9e7f58f7b952"
],
"layout": "IPY_MODEL_48be48a7db65421ba179c0abb5753f36"
}
},
"c60214d6874640e2bc2a8ea402c67cc9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_867306ed01d74c98949740fe207a89c7",
"IPY_MODEL_c6d12a92874f4384ab7db8a44b6ea9a9"
],
"layout": "IPY_MODEL_eaf22fa126b4497686859a55cc0469c0"
}
},
"c63ef44d74a34ba6ab9a01aedfbec86b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_fda0aedb791a4529a96b3827cc92a14e",
"max": 20,
"style": "IPY_MODEL_42ddf188191f4fe3923e83994187085b",
"value": 20
}
},
"c68248294afe4446b260925746b36968": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"c6d12a92874f4384ab7db8a44b6ea9a9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_6ed223da95c6441a971993e9e7164380",
"value": "100% 20/20 [00:00<00:00, 170.26it/s]"
}
},
"c8027d58387a468cbecab34b5ad23e1e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"c804a514c1a64c13aa7a2faffd85ffd3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"c806e10a8702424fa182dd090b47ed4b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_87397a6f9af34717a3e3c79a6c90f8dd",
"value": 510
}
},
"c8883e59482f4c999db68bbf9661760a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"c8ea534c595b4b8c91b5c45a58a09511": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_820f5b87988d47b699bb99322079f96e",
"IPY_MODEL_7b5790abbc9847c3a18f586ae0c466c9",
"IPY_MODEL_6c1a8db16d534946933a5e2d5f5171ae"
],
"layout": "IPY_MODEL_f5785ae2d67a4ccfbab24c8d317dbb87"
}
},
"c992884bfd7a4ef9a4a4f33885e7d48b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"cacee7d1199d4d6297c07b767d21cf83": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_f65c443d6dd242e580f3dbdfe06f2237",
"value": -9
}
},
"cbe7a089a6324d82b801406e1282ac14": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_aedc7890c1b1451bb8a4eae2710240e4",
"IPY_MODEL_3fffdb2411de468da90ac88cf5344060"
],
"layout": "IPY_MODEL_857c3172897d4da7af58995e67172422"
}
},
"cc0030d9297a402ba8448ce47aa1347b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"cc2f644cb0884da9b951b600227a51cf": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"cee01459586f4830ace93923eaf277a4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"cf6b74b335ce4c0d8f006b8f5096e386": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_06b19e3b6060433cbbbd07f28516589d",
"value": true
}
},
"cfd468b026ef4d0aac698a2be5497f61": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_bd226476c35047afb3adb480a1bb6cdb",
"max": 20,
"style": "IPY_MODEL_c68248294afe4446b260925746b36968",
"value": 20
}
},
"d0291b66f2c641f785c19780c2a54a8b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "AccordionModel",
"state": {
"_model_module_version": "~2.1.4",
"_titles": {
"0": "sin",
"1": "Gaussian",
"2": "Polynomial"
},
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_82d37664801f4a189d3751f038fc707e",
"IPY_MODEL_3c76eb27d201428ba2efe6c1e48d54da",
"IPY_MODEL_0a6f93b547f846b98b9954c941885049"
],
"layout": "IPY_MODEL_982b93d5a1814e83bffb05bed39ac4da",
"selected_index": 2
}
},
"d07b91a108414bae96ebc1fb3f3c9ab3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"d343a8ae529746b38819561f0e42e4b5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "VBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_9c5c03c6538f49449e3f0dffab08dd8c",
"IPY_MODEL_213bc4ed6338485cb76f1b02837411ce",
"IPY_MODEL_2564b8c3130b4ba0a83785688ec312ed",
"IPY_MODEL_4d010e85e3344f769d5dce3b7ee8a6c2"
],
"layout": "IPY_MODEL_d4eae8f86a3b4fee97c4c1fac50e218d"
}
},
"d3de36c409d5477982f0670516639040": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_770159025e6342119d30e99dad84130a",
"max": 20,
"style": "IPY_MODEL_4143e3751ee44db79bfca14521cd2c2a",
"value": 20
}
},
"d3e8ea51239d4a5c8240c5cdc88974fc": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_160ef82670f74c75bb170c7bdf3d1525",
"value": 11
}
},
"d40b9d6f08444fbfb6027a8cffdb9708": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"d48e07273fd94343bf80e670b48d071b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"d4eae8f86a3b4fee97c4c1fac50e218d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"d77844638da044ae84ace765a2d4e3e1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"d855befacd294f8a8acb5f1ac4fb36a4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_b2d11b328ea7484e8f4249e5d7c4bc78",
"value": "100% 20/20 [00:00<00:00, 155.92it/s]"
}
},
"d91313a2738e4cdda812e0ef7aa99e76": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_79cd089a120a4d3bb8dd0974a12aaa73",
"max": 20,
"style": "IPY_MODEL_d97ad647e30c43399b75b3375eaa8373",
"value": 20
}
},
"d92b5e42f8aa413484e64a7b85274f5d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_2549910dff714b719d2b6f60f2129529"
}
},
"d97ad647e30c43399b75b3375eaa8373": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"d986bf3512fd4a86ad0711f4d2bf0e72": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_f24e54b5597e49f4836b55be8bfb83b5",
"IPY_MODEL_6cb724d96a764b11a48512748f9341ee"
],
"layout": "IPY_MODEL_d40b9d6f08444fbfb6027a8cffdb9708"
}
},
"da58602f80f0453d8920879372074b2c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "CheckboxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "active",
"disabled": false,
"layout": "IPY_MODEL_f535b9b05a7b4c6b87ba2d0b6b3c735f",
"value": true
}
},
"da7215196fd54d46a0def4b127b283b4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_c804a514c1a64c13aa7a2faffd85ffd3"
}
},
"db0e4f6e25c244f8bc978eea928e679b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"dc49b41fd7d34663a270a0c754a3f2fd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_8678c08e0a5040558dc7dae302d80857",
"value": 102.30000000000001
}
},
"dc974ccbad064b33bdcf7cb4fcb73782": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_c086f4773b4e4a77a5abf88e07740803",
"value": "100% 20/20 [00:00<00:00, 154.61it/s]"
}
},
"dfd3b6e694514aef8e1b0e717245b4f9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_efa89a258aa841d5b8ec8d471747af7b",
"value": -10
}
},
"dfe334e8385a4bce8855d8d428238f07": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_7f73b3b2a6f24a0d890322314ed0483f",
"IPY_MODEL_c33cf460a93a4ed382f16f8c29c2ef67",
"IPY_MODEL_646302eae7a8497ba9f45712a9f16c45"
],
"layout": "IPY_MODEL_5e4b15fbd06444e089af5e72309cd875"
}
},
"e0904cc318134d22b089d27197e4b6df": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"e1357e76735a4691b7507c66056f732c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HTMLModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"layout": "IPY_MODEL_bb52e2e377a142ce85fccfebcf73d8b5",
"value": "100% 20/20 [00:00<00:00, 134.61it/s]"
}
},
"e13d1c1c7c26426ba78053f9c803f0d1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e3135c54c61d4087849fcfc69848c9b9": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_5a96933f056e47b38df210372e418dca",
"max": 20,
"style": "IPY_MODEL_637248a5833a4eca91f619394d0ceaa2",
"value": 20
}
},
"e3ea6bbc441348619ecc575011f34bd1": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"e4f628e665224a2590651e73114b99b5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_7e333774ccaf462c8adbc8fe61a50895",
"max": 20,
"style": "IPY_MODEL_82650e25bae448b0adc0c3195aeaff07",
"value": 20
}
},
"e510befc0859413a888a3fc1b0d8ac5e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_0d11ef8759da410c9cae2dc013675953",
"IPY_MODEL_aa16e47c899d4a3da4a8c7f7d57c897e",
"IPY_MODEL_324bc3cabe2e4f358cc9e995ce786704"
],
"layout": "IPY_MODEL_6557bfe58b714bd3881c2b256a813f7f"
}
},
"e516fcdfcca74d41ad9eb740fca7c59c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e533c4680d614cdc81619881513a3c0e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e570c5a9a6894ec6b9fa1bb84e2c5e68": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "min",
"layout": "IPY_MODEL_281d4e892f204960bd1aa6e3e2d6820b",
"value": -10
}
},
"e5c633475c1a4d8586d54f32c5ae6490": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e65978b142e9431185829bb8c0d38d4c": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e686537e04d94395b8988e6580194e1e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"e775aafb1e764266a5be997155b89b84": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_9c7848cbc8d642c7957234d6850aba76",
"value": 10000
}
},
"e7f89c64ad32458a8092a4a268fa4a95": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"e8e9098c6e6f47c4a05a8f9070cb9ce4": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"eacbf0edb3064d95b0b5e0ea720a6c5d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"eaf22fa126b4497686859a55cc0469c0": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"eb01392e8f6f45cfb56f3ab200305a97": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressStyleModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"eb978d4278ff4ac09e3008bb105610cd": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_400553852e5f474ba1f6270cc1d6719d",
"IPY_MODEL_825132f996eb45558506da3d1c523903",
"IPY_MODEL_c806e10a8702424fa182dd090b47ed4b"
],
"layout": "IPY_MODEL_e13d1c1c7c26426ba78053f9c803f0d1"
}
},
"eca38a06625749529469df81564d59b3": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"edc7e1710b114c96a94b358e731d0bc8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "AccordionModel",
"state": {
"_model_module_version": "~2.1.4",
"_titles": {
"0": "large",
"1": "small"
},
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_d343a8ae529746b38819561f0e42e4b5",
"IPY_MODEL_a8d8f984f97e403aac6bcbc386a5a11f"
],
"layout": "IPY_MODEL_2deb604304a84c09a2e65d713546039b"
}
},
"ef349aefc4ac48a9963e5b13c057b262": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_a85fcb27b0f14816be2d36c3eeea59bd",
"max": 20,
"style": "IPY_MODEL_465536b6f4a04be09f46d271be90138d",
"value": 20
}
},
"ef8d0ff171fd4fc7a8fc603854847c2a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"efa89a258aa841d5b8ec8d471747af7b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"eff04752bc864350a88c941f2af8f73a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"display": "flex",
"flex_flow": "row",
"justify_content": "space-between"
}
},
"f24e54b5597e49f4836b55be8bfb83b5": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "ProgressModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"bar_style": "success",
"layout": "IPY_MODEL_fcd066c904fd40818bdfe6975b918eaa",
"max": 20,
"style": "IPY_MODEL_6e4421b7c99a4bdb94520fc172731a06",
"value": 20
}
},
"f260d48cda6440ea8da9f20c314d49a8": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"f4f083f1572543569aebb50fb1e67572": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "HBoxModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"children": [
"IPY_MODEL_d3de36c409d5477982f0670516639040",
"IPY_MODEL_3cffd1eb9779495281acdd4b46c44536"
],
"layout": "IPY_MODEL_48d9bc0c026448ee9ae10969f47fe55b"
}
},
"f535b9b05a7b4c6b87ba2d0b6b3c735f": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"f5732b803a964d449684ac1d9fc47618": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "1 1 auto",
"width": "auto"
}
},
"f5785ae2d67a4ccfbab24c8d317dbb87": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"f65c443d6dd242e580f3dbdfe06f2237": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"f73d12dd0f3540489bd768a606103919": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"fa78681cae9d437b8b0ac5d2fe02cb2b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatTextModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "max",
"layout": "IPY_MODEL_8df1a04c7f074402b8dc5e5f639c96a9",
"value": 299.90000000000003
}
},
"fad9ab964c68402699f91ff337812e1b": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"fb69962a51d7418cbe7607520fb470bb": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"flex": "0 1 auto",
"width": "auto"
}
},
"fc26fa25bd8847d6b105548ac0dd055a": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"fc2ca37a21be4e70aaa1cee13f3f182d": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "FloatSliderModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4",
"description": "A",
"layout": "IPY_MODEL_4cbf8e50267b4966b1ec86e2b01deaa5",
"max": 10000,
"step": 10,
"value": 10000
}
},
"fcd066c904fd40818bdfe6975b918eaa": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"fd879050c1d94552b35b04244847185e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
},
"fda0aedb791a4529a96b3827cc92a14e": {
"model_module": "jupyter-js-widgets",
"model_module_version": "~2.1.4",
"model_name": "LayoutModel",
"state": {
"_model_module_version": "~2.1.4",
"_view_module_version": "~2.1.4"
}
}
},
"version_major": 1,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}