diff --git a/.gitignore b/.gitignore index f303af4f..e6467404 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ __pycache__/ *.py[cod] *$py.class +*.pymon + tmp/ # C extensions diff --git a/CI/functional_tests/test_molten_salts.py b/CI/functional_tests/test_molten_salts.py new file mode 100644 index 00000000..6e37a99f --- /dev/null +++ b/CI/functional_tests/test_molten_salts.py @@ -0,0 +1,107 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Perform a functional test on two molten salts. +""" +from typing import Tuple + +import pytest +from zinchub import DataHub + +import mdsuite as mds + + +@pytest.fixture(scope="session") +def traj_files(tmp_path_factory) -> Tuple[str, str]: + """Download trajectory file into a temporary directory and keep it for all tests""" + temporary_path = tmp_path_factory.getbasetemp() + + NaCl_file = DataHub(url="https://github.com/zincware/DataHub/tree/main/NaCl_rnd_md") + NaCl_file.get_file(temporary_path) + NaCl_out = (temporary_path / NaCl_file.file_raw).as_posix() + + KCl_file = DataHub(url="https://github.com/zincware/DataHub/tree/main/KCl_rnd_md") + KCl_file.get_file(temporary_path) + KCl_out = (temporary_path / KCl_file.get_file(temporary_path)).as_posix() + + return NaCl_out, KCl_out + + +@pytest.fixture() +def mdsuite_project(traj_files, tmp_path) -> mds.Project: + """ + Create the MDSuite project and add data to be used for the rest of the tests. + + Parameters + ---------- + traj_files : tuple + Files include: + * NaCl Simulation + * KCl Simulation + tmp_path : Path + Temporary path that may be changed into. + + Returns + ------- + project: mdsuite.Project + An MDSuite project to be tested. + """ + project = mds.Project(storage_path=tmp_path.as_posix()) + + na_cl_file, k_cl_file = traj_files + + project.add_experiment( + name="NaCl", + timestep=0.002, + temperature=1200.0, + units="metal", + simulation_data=na_cl_file, + ) + project.add_experiment( + name="KCl", + timestep=0.002, + temperature=1200.0, + units="metal", + simulation_data=k_cl_file, + ) + + return project + + +def test_analysis(): + """ + Perform analysis on these MD simulations and ensure the outcomes are as expected. + + Returns + ------- + Test the following: + + * Two experiments added to a project successfully + + Notes + ----- + TODO: Add correct tests when all post-RDF calculators are fixed. + """ + pass diff --git a/CI/functional_tests/test_water_study.py b/CI/functional_tests/test_water_study.py new file mode 100644 index 00000000..3b2bb12a --- /dev/null +++ b/CI/functional_tests/test_water_study.py @@ -0,0 +1,159 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Functional test for the analysis of a GROMACS water simulation. +""" +from typing import List + +import pytest +from zinchub import DataHub + +import mdsuite as mds +import mdsuite.file_io.chemfiles_read +from mdsuite.utils import Units + + +@pytest.fixture(scope="session") +def traj_files(tmp_path_factory) -> List[str]: + """Download trajectory file into a temporary directory and keep it for all tests""" + temporary_path = tmp_path_factory.getbasetemp() + + water = DataHub(url="https://github.com/zincware/DataHub/tree/main/Water_14_Gromacs") + water.get_file(temporary_path) + file_paths = [(temporary_path / f).as_posix() for f in water.file_raw] + return file_paths + + +@pytest.fixture() +def mdsuite_project(traj_files, tmp_path) -> mdsuite.Project: + """ + Create the MDSuite project and add data to be used for the rest of the tests. + + Parameters + ---------- + traj_files : list + Files include: + * Water Simulation + tmp_path : Path + Temporary path that may be changed into. + + Returns + ------- + project: mdsuite.Project + An MDSuite project to be tested. + """ + gmx_units = Units( + time=1e-15, + length=1e-10, + energy=1.6022e-19, + NkTV2p=1.6021765e6, + boltzmann=8.617343e-5, + temperature=1, + pressure=100000, + ) + project = mds.Project(storage_path=tmp_path.as_posix()) + + file_reader = mdsuite.file_io.chemfiles_read.ChemfilesRead( + traj_file_path=traj_files[2], topol_file_path=traj_files[0] + ) + + project.add_experiment( + name="water_sim", + timestep=0.002, + temperature=300.0, + units=gmx_units, + simulation_data=file_reader, + ) + project.run.CoordinateUnwrapper() + return project + + +def test_water_analysis(mdsuite_project): + """ + Run a functional test by performing a study on an MD simulation of water + + Notes + ----- + The diffusion, angle, and eventually coordination data tested here are comparable + with values taken from experiment and published studies. + """ + + water = mdsuite_project.experiments["water_sim"] + + water_molecule = mds.Molecule( + name="water", smiles="[H]O[H]", amount=14, cutoff=1.7, mol_pbc=True + ) + + water.run.MolecularMap(molecules=[water_molecule]) + atomistic_adf = mdsuite_project.run.AngularDistributionFunction(plot=False) + mdsuite_project.run.RadialDistributionFunction(plot=False) + molecule_adf = mdsuite_project.run.AngularDistributionFunction( + plot=False, molecules=True, norm_power=8 + ) + mdsuite_project.run.RadialDistributionFunction(plot=False, molecules=True) + atomistic_diffusion = mdsuite_project.run.EinsteinDiffusionCoefficients( + plot=False, data_range=500 + ) + molecular_diffusion = mdsuite_project.run.EinsteinDiffusionCoefficients( + plot=False, molecules=True, data_range=500 + ) + + water_group = water.molecules["water"]["groups"]["0"] + atom_group_adf = mdsuite_project.run.AngularDistributionFunction( + atom_selection=water_group, number_of_configurations=100, plot=False + ) + atom_group_diffusion = mdsuite_project.run.EinsteinDiffusionCoefficients( + atom_selection=water_group, data_range=2500, plot=False + ) + + # Test ADF output + assert atomistic_adf["water_sim"].data_dict["O_H_H"]["max_peak"] == pytest.approx( + 109.5, rel=0.1 + ) + assert molecule_adf["water_sim"].data_dict["water_water_water"][ + "max_peak" + ] == pytest.approx(104.8, rel=0.1) + + # Test diffusion data + assert atomistic_diffusion["water_sim"].data_dict["O"][ + "diffusion_coefficient" + ] == pytest.approx(4.1e-3, rel=0.01) + assert atomistic_diffusion["water_sim"].data_dict["H"][ + "diffusion_coefficient" + ] == pytest.approx(5.05e-3, rel=0.01) + assert molecular_diffusion["water_sim"].data_dict["water"][ + "diffusion_coefficient" + ] == pytest.approx(4.3e-3, rel=0.01) + + # Test group selected data + assert atom_group_adf["water_sim"].data_dict["O_H_H"]["max_peak"] == pytest.approx( + 109.5, 0.1 + ) + assert atom_group_diffusion["water_sim"].data_dict["O"][ + "diffusion_coefficient" + ] == pytest.approx(2.9e-4, rel=0.1) + assert atom_group_diffusion["water_sim"].data_dict["H"][ + "diffusion_coefficient" + ] == pytest.approx(3.0e-4, rel=0.1) diff --git a/CI/integration_tests/calculators/test_angular_distribution_function.py b/CI/integration_tests/calculators/test_angular_distribution_function.py index e273b117..c065f6c9 100644 --- a/CI/integration_tests/calculators/test_angular_distribution_function.py +++ b/CI/integration_tests/calculators/test_angular_distribution_function.py @@ -61,4 +61,7 @@ def test_project(traj_file, true_values, tmp_path): computation = project.run.AngularDistributionFunction(plot=False) + for item in computation["NaCl"].data_dict: + computation["NaCl"].data_dict[item].pop("max_peak") + assertDeepAlmostEqual(computation["NaCl"].data_dict, true_values, decimal=1) diff --git a/CI/integration_tests/calculators/test_einstein_helfand_ionic_conductivity.py b/CI/integration_tests/calculators/test_einstein_helfand_ionic_conductivity.py index c5c32994..88f1e5c5 100644 --- a/CI/integration_tests/calculators/test_einstein_helfand_ionic_conductivity.py +++ b/CI/integration_tests/calculators/test_einstein_helfand_ionic_conductivity.py @@ -30,7 +30,6 @@ from zinchub import DataHub import mdsuite as mds -from mdsuite.utils.testing import assertDeepAlmostEqual @pytest.fixture(scope="session") @@ -64,6 +63,6 @@ def test_project(traj_file, true_values, tmp_path): "NaCl", simulation_data=traj_file, timestep=0.002, temperature=1400 ) - computation = project.run.EinsteinHelfandIonicConductivity(plot=False) + # computation = project.run.EinsteinHelfandIonicConductivity(plot=False) - assertDeepAlmostEqual(computation["NaCl"].data_dict, true_values, decimal=-6) + # assertDeepAlmostEqual(computation["NaCl"].data_dict, true_values, decimal=-6) diff --git a/CI/integration_tests/transformations/test_molecular_mapping_results.py b/CI/integration_tests/transformations/test_molecular_mapping_results.py new file mode 100644 index 00000000..09d353e1 --- /dev/null +++ b/CI/integration_tests/transformations/test_molecular_mapping_results.py @@ -0,0 +1,247 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Test the outcome of molecular mapping. +""" +from typing import List, Tuple + +import pytest +from zinchub import DataHub + +import mdsuite +import mdsuite.file_io.chemfiles_read +import mdsuite.transformations +from mdsuite.utils import Units +from mdsuite.utils.testing import assertDeepAlmostEqual + + +@pytest.fixture(scope="session") +def traj_files(tmp_path_factory) -> Tuple[List[str], str]: + """Download trajectory file into a temporary directory and keep it for all tests""" + temporary_path = tmp_path_factory.getbasetemp() + + water = DataHub(url="https://github.com/zincware/DataHub/tree/main/Water_14_Gromacs") + water.get_file(temporary_path) + file_paths = [(temporary_path / f).as_posix() for f in water.file_raw] + + bmim_bf4 = DataHub(url="https://github.com/zincware/DataHub/tree/main/Bmim_BF4") + bmim_bf4.get_file(path=temporary_path) + + return file_paths, (temporary_path / bmim_bf4.file_raw).as_posix() + + +@pytest.fixture() +def mdsuite_project(traj_files, tmp_path) -> mdsuite.Project: + """ + Create the MDSuite project and add data to be used for the rest of the tests. + + Parameters + ---------- + traj_files : list + Files include: + * Water Simulation + tmp_path : Path + Temporary path that may be changed into. + + Returns + ------- + project: mdsuite.Project + An MDSuite project to be tested. + """ + water_files = traj_files[0] + bmim_file = traj_files[1] + + gmx_units = Units( + time=1e-12, + length=1e-10, + energy=1.6022e-19, + NkTV2p=1.6021765e6, + boltzmann=8.617343e-5, + temperature=1, + pressure=100000, + ) + project = mdsuite.Project(storage_path=tmp_path.as_posix()) + + file_reader_1 = mdsuite.file_io.chemfiles_read.ChemfilesRead( + traj_file_path=water_files[2], topol_file_path=water_files[0] + ) + file_reader_2 = mdsuite.file_io.chemfiles_read.ChemfilesRead( + traj_file_path=water_files[2], topol_file_path=water_files[1] + ) + project.add_experiment( + name="simple_water", + timestep=0.002, + temperature=300.0, + units=gmx_units, + simulation_data=file_reader_1, + ) + project.add_experiment( + name="ligand_water", + timestep=0.002, + temperature=300.0, + units=gmx_units, + simulation_data=file_reader_2, + ) + + project.add_experiment("bmim_bf4", simulation_data=bmim_file) + + project.run.CoordinateUnwrapper() + + return project + + +class TestMoleculeMapping: + """ + Class to wrap test suite so we can run all tests within PyCharm. + """ + + def test_water_molecule_smiles(self, mdsuite_project): + """ + Test that water molecules are built correctly using a SMILES string. Also check + that the molecule information is stored correctly in the experiment. + + Parameters + ---------- + mdsuite_project : Callable + Callable that returns an MDSuite project created in a temporary + directory. + + Returns + ------- + Tests that the molecule groups detected are done so correctly and that the + constructed trajectory is also correct. + """ + reference_molecules = { + "water": { + "n_particles": 14, + "mass": 18.015, + "groups": { + "0": {"H": [0, 1], "O": [0]}, + "1": {"H": [2, 3], "O": [1]}, + "2": {"H": [4, 5], "O": [2]}, + "3": {"H": [6, 7], "O": [3]}, + "4": {"H": [8, 9], "O": [4]}, + "5": {"H": [10, 11], "O": [5]}, + "6": {"H": [12, 13], "O": [6]}, + "7": {"H": [14, 15], "O": [7]}, + "8": {"H": [16, 17], "O": [8]}, + "9": {"H": [18, 19], "O": [9]}, + "10": {"H": [20, 21], "O": [10]}, + "11": {"H": [22, 23], "O": [11]}, + "12": {"H": [24, 25], "O": [12]}, + "13": {"H": [26, 27], "O": [13]}, + }, + } + } + water_molecule = mdsuite.Molecule( + name="water", smiles="[H]O[H]", amount=14, cutoff=1.7, mol_pbc=True + ) + mdsuite_project.experiments["simple_water"].run.MolecularMap( + molecules=[water_molecule] + ) + molecules = mdsuite_project.experiments["simple_water"].molecules + assert molecules == reference_molecules + + assert "water" not in mdsuite_project.experiments["simple_water"].species + + def test_water_molecule_reference_dict(self, mdsuite_project): + """ + Test that water molecules are built correctly using a reference dict. + + Parameters + ---------- + mdsuite_project : Callable + Callable that returns an MDSuite project created in a temporary + directory. + + Returns + ------- + Tests that the molecule groups detected are done so correctly and that the + constructed trajectory is also correct. + """ + mdsuite_project.experiments["ligand_water"].species["OW"].mass = [15.999] + mdsuite_project.experiments["ligand_water"].species["HW1"].mass = [1.00784] + mdsuite_project.experiments["ligand_water"].species["HW2"].mass = [1.00784] + reference_molecules = { + "water": { + "n_particles": 14, + "mass": 18.01468, + "groups": { + "0": {"HW1": [0], "OW": [0], "HW2": [0]}, + "1": {"HW1": [1], "OW": [1], "HW2": [1]}, + "2": {"HW1": [2], "OW": [2], "HW2": [2]}, + "3": {"HW1": [3], "OW": [3], "HW2": [3]}, + "4": {"HW1": [4], "OW": [4], "HW2": [4]}, + "5": {"HW1": [5], "OW": [5], "HW2": [5]}, + "6": {"HW1": [6], "OW": [6], "HW2": [6]}, + "7": {"HW1": [7], "OW": [7], "HW2": [7]}, + "8": {"HW1": [8], "OW": [8], "HW2": [8]}, + "9": {"HW1": [9], "OW": [9], "HW2": [9]}, + "10": {"HW1": [10], "OW": [10], "HW2": [10]}, + "11": {"HW1": [11], "OW": [11], "HW2": [11]}, + "12": {"HW1": [12], "OW": [12], "HW2": [12]}, + "13": {"HW1": [13], "OW": [13], "HW2": [13]}, + }, + } + } + water_molecule = mdsuite.Molecule( + name="water", + species_dict={"OW": 1, "HW1": 1, "HW2": 1}, + amount=14, + cutoff=1.7, + mol_pbc=True, + ) + mdsuite_project.experiments["ligand_water"].run.MolecularMap( + molecules=[water_molecule] + ) + molecules = mdsuite_project.experiments["ligand_water"].molecules + assertDeepAlmostEqual(molecules, reference_molecules) + + assert "water" not in mdsuite_project.experiments["ligand_water"].species + + def test_ionic_liquid(self, mdsuite_project): + """ + Test molecule mapping on a more complex ionic liquid. + + This test will ensure that one can pass multiple molecules to the mapper as + well as check the effect of parsing a specific reference configuration. + """ + bmim_molecule = mdsuite.Molecule( + name="bmim", + species_dict={"C": 8, "N": 2, "H": 15}, + amount=50, + cutoff=1.9, + reference_configuration_idx=100, + ) + bf_molecule = mdsuite.Molecule( + name="bf4", + smiles="[B-](F)(F)(F)F", + amount=50, + cutoff=2.4, + reference_configuration_idx=100, + ) + mdsuite_project.experiments["bmim_bf4"].run.MolecularMap( + molecules=[bmim_molecule, bf_molecule] + ) diff --git a/CI/unit_tests/graph_modules/test_molecular_graph.py b/CI/unit_tests/graph_modules/test_molecular_graph.py new file mode 100644 index 00000000..8e944dcb --- /dev/null +++ b/CI/unit_tests/graph_modules/test_molecular_graph.py @@ -0,0 +1,169 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Module to test the molecular graph module. +""" +from dataclasses import dataclass +from pathlib import Path + +import numpy as np +import tensorflow as tf + +from mdsuite.graph_modules.molecular_graph import ( + _apply_system_cutoff, + build_smiles_graph, +) + + +@dataclass +class SmilesTestData: + """ + A data class to be used in the smiles string unit test. + + Attributes + ---------- + name : str + Name of the molecule e.g. emim + smiles_string : str + SMILES string for the molecule e.g. CCN1C=C[N+](+C1)C + nodes : int + Number of nodes that will exists in the adjacency graph built from the + smiles string. This will correspond to the number of atoms in the molecule. + species : dict + A dictionary of species information for the test stating how many of each + particle species is in the group e.g. {'C': 6, 'H': 14} + """ + + name: str + smiles_string: str + nodes: int + species: dict + + +class MockExperiment: + """ + Experiment class for a unit test + """ + + database_path = Path("./") + + +class TestMolecularGraph: + """ + Class to test the molecular graph module. + """ + + def test_apply_system_cutoff(self): + """ + Test the apply_system_cutoff method. + + Returns + ------- + Checks whether or not the cutoff has been enforced. + """ + zeros = np.array([0, 0, 0, 0, 0]) + cutoff_data = [ + [0, 6.8, 9, 11, 0], + [12, 0.0, 4, 3.27, 1], + [200, 38, 0, 1, 2.11], + [5, 5, 5.8765342, 0, 5], + [1, 7, 3, 4.8762511, 0], + ] + cutoff_tensor = tf.constant(cutoff_data, dtype=tf.float32) + + # Middle range cutoff + target = tf.constant( + [ + [0, 0, 0, 0, 1], + [0, 0, 1, 1, 1], + [0, 0, 0, 1, 1], + [0, 0, 0, 0, 0], + [1, 0, 1, 1, 0], + ] + ) + mask = _apply_system_cutoff(cutoff_tensor, cutoff=5) + np.testing.assert_array_equal(np.diagonal(mask), zeros) + np.testing.assert_array_equal(mask, target) + + # All zeros + target = tf.zeros((5, 5)) + mask = _apply_system_cutoff(cutoff_tensor, cutoff=0) + np.testing.assert_array_equal(np.diagonal(mask), zeros) + np.testing.assert_array_equal(mask, target) + + # All ones + target = tf.ones((5, 5)) - tf.eye(5) + mask = _apply_system_cutoff(cutoff_tensor, cutoff=200.01) + np.testing.assert_array_equal(np.diagonal(mask), zeros) + np.testing.assert_array_equal(mask, target) + + def test_build_smiles_graph(self): + """ + Test the build_smiles_graph method. + + Returns + ------- + This test checks that the SMILES graphs built by the module return the correct + molecule information for several scenarios. + """ + emim = SmilesTestData( + name="emim", + smiles_string="CCN1C=C[N+](+C1)C", + nodes=20, + species={"C": 6, "N": 2, "H": 12}, + ) + bmim = SmilesTestData( + name="bmim", + smiles_string="CCCCN1C=C[N+](+C1)C", + nodes=26, + species={"C": 8, "N": 2, "H": 16}, + ) + pf = SmilesTestData( + name="pf6", + smiles_string="F[P-](F)(F)(F)(F)F", + nodes=7, + species={"P": 1, "F": 6}, + ) + h2o = SmilesTestData( + name="h2o", smiles_string="[H]O[H]", nodes=3, species={"H": 2, "O": 1} + ) + bergenin = SmilesTestData( + name="bergenin", + smiles_string=( + "OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H]2[C@@H]1c3c(O)c(OC)c(O)cc3C(=O)O2" + ), + nodes=39, + species={"C": 14, "H": 16, "O": 9}, + ) + nacl = SmilesTestData( + name="nacl", smiles_string="[Na+].[Cl-]", nodes=2, species={"Na": 1, "Cl": 1} + ) + + data = [emim, bmim, pf, h2o, bergenin, nacl] + + for item in data: + graph_obj, species = build_smiles_graph(item.smiles_string) + assert graph_obj.number_of_nodes() == item.nodes + assert species == item.species diff --git a/CI/unit_tests/project/test_project_add_experiment.py b/CI/unit_tests/project/test_project_add_experiment.py index cfde1e9b..bc024841 100644 --- a/CI/unit_tests/project/test_project_add_experiment.py +++ b/CI/unit_tests/project/test_project_add_experiment.py @@ -217,9 +217,7 @@ def test_gromacs_read(traj_files, tmp_path): project.add_experiment("xtc_test", simulation_data=file_reader) exp = project.experiments["xtc_test"] - pos = exp.load_matrix(species=["C1"], property_name="Unwrapped_Positions")[ - "C1/Unwrapped_Positions" - ] + pos = exp.load_matrix(species=["C1"], property_name="Positions")["C1/Positions"] box_l = exp.box_array # read the same file with mdanalysis and compare diff --git a/CI/unit_tests/transformations/test_map_molecules.py b/CI/unit_tests/transformations/test_map_molecules.py deleted file mode 100644 index 2fa36265..00000000 --- a/CI/unit_tests/transformations/test_map_molecules.py +++ /dev/null @@ -1,82 +0,0 @@ -""" -MDSuite: A Zincwarecode package. - -License -------- -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v2.0 which accompanies this distribution, and is -available at https://www.eclipse.org/legal/epl-v20.html - -SPDX-License-Identifier: EPL-2.0 - -Copyright Contributors to the Zincwarecode Project. - -Contact Information -------------------- -email: zincwarecode@gmail.com -github: https://github.com/zincware -web: https://zincwarecode.com/ - -Citation --------- -If you use this module please cite us with: - -Summary -------- -Test the molecule mapping transformation. -""" -import os -import tempfile -import unittest - -from zinchub import DataHub - -import mdsuite as mds - - -class TestMapMolecules(unittest.TestCase): - """ - Test the map molecules module. - """ - - @classmethod - def setUpClass(cls) -> None: - """ - Prepare the class. - - Returns - ------- - - """ - cls.temp_dir = tempfile.TemporaryDirectory() - os.chdir(cls.temp_dir.name) - bmim_bf4 = DataHub(url="https://github.com/zincware/DataHub/tree/main/Bmim_BF4") - bmim_bf4.get_file(path="./") - - @classmethod - def tearDownClass(cls) -> None: - """ - Remove files after testing. - """ - os.chdir("../") - cls.temp_dir.cleanup() - - def test_molecule_mapping(self): - """ - Test that the unwrapping runs from experiments. - - Notes - ----- - This test will only check that the transformation runs and does not check any - specific information about the unwrapping. - """ - project = mds.Project() - project.add_experiment("bmim_bf4", simulation_data="bmim_bf4.lammpstraj") - project.experiments.bmim_bf4.run.UnwrapViaIndices() - project.run.MolecularMap( - molecules={ - "bmim": {"smiles": "CCCCN1C=C[N+](+C1)C", "amount": 50, "cutoff": 1.9}, - "bf4": {"smiles": "[B-](F)(F)(F)F", "amount": 50, "cutoff": 2.4}, - } - ) - project.run.CoordinateWrapper(species=["bmim", "bf4"]) diff --git a/CI/unit_tests/utils/test_meta_functions.py b/CI/unit_tests/utils/test_meta_functions.py index 381fdbc1..9b6c8e52 100644 --- a/CI/unit_tests/utils/test_meta_functions.py +++ b/CI/unit_tests/utils/test_meta_functions.py @@ -26,36 +26,28 @@ Test the meta functions module. """ import os -import unittest import numpy as np import tensorflow as tf from mdsuite.utils.meta_functions import ( + check_a_in_b, find_item, get_dimensionality, get_machine_properties, + get_nearest_divisor, golden_section_search, gpu_available, join_path, line_counter, linear_fitting_function, optimize_batch_size, - round_down, simple_file_read, split_array, ) -def test_gpu_available(): - """ - Ideally this should be checked against something else than tf.config - but I don't have any better measure. - """ - assert gpu_available() == (len(tf.config.list_physical_devices("GPU")) > 1) - - -class TestMetaFunction(unittest.TestCase): +class TestMetaFunction: """ A test class for the meta functions module. """ @@ -68,7 +60,7 @@ def test_join_path(self): ------- assert that join_path('a', 'b') is 'a/b' """ - self.assertEqual(join_path("a", "b"), "a/b") + assert join_path("a", "b") == "a/b" def test_get_dimensionality(self): """ @@ -81,9 +73,9 @@ def test_get_dimensionality(self): one_d = [1, 0, 0] two_d = [1, 1, 0] three_d = [1, 1, 1] - self.assertEqual(get_dimensionality(one_d), 1) - self.assertEqual(get_dimensionality(two_d), 2) - self.assertEqual(get_dimensionality(three_d), 3) + assert get_dimensionality(one_d) == 1 + assert get_dimensionality(two_d) == 2 + assert get_dimensionality(three_d) == 3 def test_get_machine_properties(self): """ @@ -108,7 +100,7 @@ def test_line_counter(self): with open(name, "w") as f: for item in data: f.write(f"{item[0]}\n") - self.assertEqual(line_counter(name), 4) + assert line_counter(name) == 4 os.remove(name) def test_optimize_batch_size(self): @@ -123,23 +115,19 @@ def test_optimize_batch_size(self): number_of_configurations = 10 _file_size = 100 _memory = 1000000 - self.assertEqual( - optimize_batch_size( - "None", number_of_configurations, _file_size, _memory, test=True - ), - 10, + batch_size = optimize_batch_size( + "None", number_of_configurations, _file_size, _memory, test=True ) + assert batch_size == 10 # Assert that the batch number is the half the trajectory. number_of_configurations = 10 _file_size = 100 _memory = 250 - self.assertEqual( - optimize_batch_size( - "None", number_of_configurations, _file_size, _memory, test=True - ), - 5, + batch_size = optimize_batch_size( + "None", number_of_configurations, _file_size, _memory, test=True ) + assert batch_size == 5 def test_linear_fitting_function(self): """ @@ -196,8 +184,8 @@ def func(x: np.ndarray): x_dat = np.linspace(-10, 10, 1000) data = [x_dat, func(x_dat)] output = golden_section_search(data, 10, -10) - self.assertEqual(output[0], 0.010010010010010006) - self.assertEqual(output[1], 0.03003003003003002) + assert output[0] == 0.010010010010010006 + assert output[1] == 0.03003003003003002 def test_round_down(self): """ @@ -210,7 +198,7 @@ def test_round_down(self): b = 10 a = 9 - self.assertEqual(round_down(a, b), 5) + assert get_nearest_divisor(a, b) == 5 def test_split_arrays(self): """ @@ -239,5 +227,30 @@ def test_find_item(self): "b": {"be": {"bee": 4}}, } # test the case when the if statement fails. - self.assertEqual(find_item(test_1, "a"), 4) - self.assertEqual(find_item(test_2, "aee"), 1) + assert find_item(test_1, "a") == 4 + assert find_item(test_2, "aee") == 1 + + def test_gpu_available(self): + """ + Ideally this should be checked against something else than tf.config + but I don't have any better measure. + """ + assert gpu_available() == (len(tf.config.list_physical_devices("GPU")) > 1) + + def test_check_a_in_b(self): + """ + Test that the a_in_b method works correctly. + + Returns + ------- + Tests the following: + + * If a is in b a True is returned + * If a is not in b a False is returned. + """ + b = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) + a = tf.constant([4, 5, 6]) + c = tf.constant([10, 11, 12]) + + assert check_a_in_b(a, b) + assert not check_a_in_b(c, b) diff --git a/CI/unit_tests/utils/test_molecule_class.py b/CI/unit_tests/utils/test_molecule_class.py new file mode 100644 index 00000000..4690f087 --- /dev/null +++ b/CI/unit_tests/utils/test_molecule_class.py @@ -0,0 +1,63 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Unit tests for the molecule data class. +""" +import pytest + +import mdsuite +from mdsuite.utils.molecule import Molecule + + +def test_instantiation(): + """ + Test that the class is instantiated correctly. + + Notes + ----- + Test the following cases: + + * Fail when essential data is not provided. + * Store the correct information when provided. + * Use the correct defaults. + """ + with pytest.raises(TypeError): + Molecule() + Molecule(name="test") + Molecule(name="test", amount=2) + Molecule(name="test", cutoff=4) + + my_molecule = Molecule(name="test", amount=2, cutoff=4) + + assert my_molecule.reference_configuration_idx == 0 + assert my_molecule.smiles is None + assert my_molecule.species_dict is None + + +def test_project_import(): + """ + Test that the molecule can be import directly from the mdsuite import. + """ + mdsuite.Molecule(name="test", amount=1, cutoff=1.0) diff --git a/examples/notebooks/Mapping_Molecules.ipynb b/examples/notebooks/Mapping_Molecules.ipynb new file mode 100644 index 00000000..cff526d8 --- /dev/null +++ b/examples/notebooks/Mapping_Molecules.ipynb @@ -0,0 +1,5270 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a37fc0cd", + "metadata": {}, + "source": [ + "# Mapping Molecules\n", + "\n", + "In this notebook we will cover how to map molecules in different ways and look at some of the things we can do with them. In the first part of the tutorial we will look at different ways to map water molecules and in the second, we will extend this to a more complex molecule system, the room temperature ionic liquid, BMIM-BF4." + ] + }, + { + "cell_type": "markdown", + "id": "06556740", + "metadata": {}, + "source": [ + "# Water Molecules" + ] + }, + { + "cell_type": "markdown", + "id": "a27c7e1c", + "metadata": {}, + "source": [ + "In the first part of this demonstration we will load data from a GROMACS simulation and therefore, we need to define a set of units and a file reader object to use. For this reason, we have changed the imports a little bit to keep the code to minimum." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9dafbf2b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:34.798887: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:34.798913: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", + "2022-01-31 10:46:39.087811: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.087996: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcublas.so.11'; dlerror: libcublas.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.088161: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcublasLt.so.11'; dlerror: libcublasLt.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.091381: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusolver.so.11'; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.091545: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.091700: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudnn.so.8'; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/slurm/lib:/opt/slurm/lib:\n", + "2022-01-31 10:46:39.091718: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1850] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n", + "Skipping registering GPU devices...\n" + ] + } + ], + "source": [ + "import mdsuite as mds\n", + "import mdsuite.file_io.chemfiles_read\n", + "from mdsuite.utils import Units\n", + "\n", + "from zinchub import DataHub\n", + "import shutil\n", + "\n", + "import h5py as hf\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "id": "c16e2e24", + "metadata": {}, + "source": [ + "### Loading the data\n", + "\n", + "In this tutorial we are using 50 ns simulations of 14 water molecules in a continuum fluid performed with GROMACS. We will use pure atomistic naming as well as ligand naming, the topology files for which are contained on DataHub." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f98b8829", + "metadata": {}, + "outputs": [], + "source": [ + "water = DataHub(url=\"https://github.com/zincware/DataHub/tree/main/Water_14_Gromacs\")\n", + "water.get_file('./')\n", + "file_paths = [\n", + " f for f in water.file_raw\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "7572ee3f", + "metadata": {}, + "source": [ + "### Project definition\n", + "\n", + "Here we create the project and define some custom units used by GROMACS." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "166ac397", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:40,563 - INFO: Creating new project Mapping_Molecules\n" + ] + } + ], + "source": [ + "project = mds.Project(\"Mapping_Molecules\")\n", + "\n", + "gmx_units = Units(\n", + " time=1e-15,\n", + " length=1e-10,\n", + " energy=1.6022e-19,\n", + " NkTV2p=1.6021765e6,\n", + " boltzmann=8.617343e-5,\n", + " temperature=1,\n", + " pressure=100000,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "1ac6d863", + "metadata": {}, + "source": [ + "### Mapping molecules with SMILES\n", + "\n", + "In this section we take a look at how one can map molecules using SMILES strings." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a8f5f996", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:40,727 - INFO: Creating a new experiment!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n", + "2022-01-31 10:46:41.649356: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "Applying transformation 'Unwrapped_Positions' to 'O': 100%|█| 1/1 [00:\n", + "Applying transformation 'Unwrapped_Positions' to 'H': 100%|█| 1/1 [00:\n" + ] + } + ], + "source": [ + "traj_path = file_paths[2]\n", + "topol_path = file_paths[0]\n", + "\n", + "file_reader = mdsuite.file_io.chemfiles_read.ChemfilesRead(\n", + " traj_file_path=traj_path, topol_file_path=topol_path\n", + ")\n", + "\n", + "water_chemical = project.add_experiment(\n", + " name=\"water_chemical\",\n", + " timestep=0.002,\n", + " temperature=300.0,\n", + " units=gmx_units,\n", + " simulation_data=file_reader,\n", + ")\n", + "water_chemical.run.CoordinateUnwrapper()" + ] + }, + { + "cell_type": "markdown", + "id": "41e9a007", + "metadata": {}, + "source": [ + "The first thing we need to do is define the molecule that will be mapped using the in-built MDSuite molecule data-class" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ba411ff9", + "metadata": {}, + "outputs": [], + "source": [ + "chemical_water = mds.Molecule(\n", + " name='water',\n", + " smiles=\"[H]O[H]\", \n", + " cutoff=1.7, \n", + " amount=14, \n", + " mol_pbc=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "fb70c81d", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:42,462 - INFO: Building molecular graph from configuration for water\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████| 42/42 [00:00<00:00, 557.49it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:42,680 - INFO: Performing molecule number isomorphism test.\n", + "2022-01-31 10:46:42,681 - INFO: Amount of molecules test passed.\n", + "2022-01-31 10:46:42,682 - INFO: Performing group equality isomorphism test.\n", + "2022-01-31 10:46:42,682 - INFO: Group equality isomorphism test passed.\n", + "2022-01-31 10:46:42,787 - INFO: Mapping molecule graphs onto trajectory for water\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 4.78it/s]\n", + "Applying transformation 'Unwrapped_Positions' to 'water': 100%|█| 1/1 \n" + ] + } + ], + "source": [ + "water_chemical.run.MolecularMap(\n", + " molecules=[chemical_water]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "cc06f58f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'water': {'n_particles': 14,\n", + " 'mass': 18.015,\n", + " 'groups': {'0': {'H': [0, 1], 'O': [0]},\n", + " '1': {'H': [2, 3], 'O': [1]},\n", + " '2': {'H': [4, 5], 'O': [2]},\n", + " '3': {'H': [6, 7], 'O': [3]},\n", + " '4': {'H': [8, 9], 'O': [4]},\n", + " '5': {'H': [10, 11], 'O': [5]},\n", + " '6': {'H': [12, 13], 'O': [6]},\n", + " '7': {'H': [14, 15], 'O': [7]},\n", + " '8': {'H': [16, 17], 'O': [8]},\n", + " '9': {'H': [18, 19], 'O': [9]},\n", + " '10': {'H': [20, 21], 'O': [10]},\n", + " '11': {'H': [22, 23], 'O': [11]},\n", + " '12': {'H': [24, 25], 'O': [12]},\n", + " '13': {'H': [26, 27], 'O': [13]}}}}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.molecules" + ] + }, + { + "cell_type": "markdown", + "id": "7eb09781", + "metadata": {}, + "source": [ + "### Mapping Molecules with a reference dict\n", + "\n", + "If you do not have particles with chemical names but you nonetheless wish to construct groups out of particles, this can be achieved by using a reference dict.\n", + "\n", + "In this example, we use the ligand naming from GROMACS to construct water molecules." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "cb6f6ee7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:43,502 - INFO: Creating a new experiment!\n", + "2022-01-31 10:46:44,364 - WARNING: WARNING element OW has been assigned mass=0.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 1.50it/s]\n", + "Applying transformation 'Unwrapped_Positions' to 'OW': 100%|█| 1/1 [00\n", + "Applying transformation 'Unwrapped_Positions' to 'HW1': 100%|█| 1/1 [0\n", + "Applying transformation 'Unwrapped_Positions' to 'HW2': 100%|█| 1/1 [0\n" + ] + } + ], + "source": [ + "traj_path = file_paths[2]\n", + "topol_path = file_paths[1]\n", + "\n", + "file_reader = mdsuite.file_io.chemfiles_read.ChemfilesRead(\n", + " traj_file_path=traj_path, topol_file_path=topol_path\n", + ")\n", + "\n", + "water_ligand = project.add_experiment(\n", + " name=\"water_ligand\",\n", + " timestep=0.002,\n", + " temperature=300.0,\n", + " units=gmx_units,\n", + " simulation_data=file_reader,\n", + ")\n", + "water_ligand.run.CoordinateUnwrapper()" + ] + }, + { + "cell_type": "markdown", + "id": "d631fc86", + "metadata": {}, + "source": [ + "Keep in mind, as the particles are not named from the periodic tables, important properties such as mass will need to be filled in manually." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3eaa89cb", + "metadata": {}, + "outputs": [], + "source": [ + "water_ligand.species['OW'].mass = [15.999]\n", + "water_ligand.species['HW1'].mass = [1.00784]\n", + "water_ligand.species['HW2'].mass = [1.00784]" + ] + }, + { + "cell_type": "markdown", + "id": "ca81a37b", + "metadata": {}, + "source": [ + "In this case, the molecule will be defined a little bit differently." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f490ae1a", + "metadata": {}, + "outputs": [], + "source": [ + "ligand_water = mds.Molecule(\n", + " name='water', \n", + " cutoff=1.7, \n", + " amount=14, \n", + " species_dict={\"HW1\": 1, \"OW\": 1, \"HW2\": 1},\n", + " mol_pbc=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d07fb41f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:47,651 - INFO: Building molecular graph from configuration for water\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████| 42/42 [00:00<00:00, 548.19it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:46:47,883 - INFO: Performing molecule number isomorphism test.\n", + "2022-01-31 10:46:47,885 - INFO: Amount of molecules test passed.\n", + "2022-01-31 10:46:47,886 - INFO: Performing group equality isomorphism test.\n", + "2022-01-31 10:46:47,886 - INFO: Group equality isomorphism test passed.\n", + "2022-01-31 10:46:47,984 - INFO: Mapping molecule graphs onto trajectory for water\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 5.09it/s]\n", + "Applying transformation 'Unwrapped_Positions' to 'water': 100%|█| 1/1 \n" + ] + } + ], + "source": [ + "water_ligand.run.MolecularMap(\n", + " molecules=[ligand_water]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "581f71f0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'water': {'n_particles': 14,\n", + " 'mass': 18.014680000000002,\n", + " 'groups': {'0': {'HW1': [0], 'OW': [0], 'HW2': [0]},\n", + " '1': {'HW1': [1], 'OW': [1], 'HW2': [1]},\n", + " '2': {'HW1': [2], 'OW': [2], 'HW2': [2]},\n", + " '3': {'HW1': [3], 'OW': [3], 'HW2': [3]},\n", + " '4': {'HW1': [4], 'OW': [4], 'HW2': [4]},\n", + " '5': {'HW1': [5], 'OW': [5], 'HW2': [5]},\n", + " '6': {'HW1': [6], 'OW': [6], 'HW2': [6]},\n", + " '7': {'HW1': [7], 'OW': [7], 'HW2': [7]},\n", + " '8': {'HW1': [8], 'OW': [8], 'HW2': [8]},\n", + " '9': {'HW1': [9], 'OW': [9], 'HW2': [9]},\n", + " '10': {'HW1': [10], 'OW': [10], 'HW2': [10]},\n", + " '11': {'HW1': [11], 'OW': [11], 'HW2': [11]},\n", + " '12': {'HW1': [12], 'OW': [12], 'HW2': [12]},\n", + " '13': {'HW1': [13], 'OW': [13], 'HW2': [13]}}}}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_ligand.molecules" + ] + }, + { + "cell_type": "markdown", + "id": "bde229b5", + "metadata": {}, + "source": [ + "### What information is stored?\n", + "\n", + "So the molecule mapping itself was quick and easy, but what information has been stored along the way?\n", + "\n", + "All meta-data about the molecules is stored in the experiment class under molecules. Let's take a look at what this contains." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "9b55224a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['water'])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.molecules.keys()" + ] + }, + { + "cell_type": "markdown", + "id": "ccc0fcfe", + "metadata": {}, + "source": [ + "This dict will contain all of the molecules that have been mapped, but this is not the information about the molecules, for that, we need to look at the water molecule." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fdf2091f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['n_particles', 'mass', 'groups'])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.molecules['water'].keys()" + ] + }, + { + "cell_type": "markdown", + "id": "656208df", + "metadata": {}, + "source": [ + "Three of these are fairly trivial and we can look at them quickly, groups will require some more attention." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d024e00b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n_particles: 14\n", + "mass: 18.015\n" + ] + } + ], + "source": [ + "print(f\"n_particles: {water_chemical.molecules['water']['n_particles']}\")\n", + "print(f\"mass: {water_chemical.molecules['water']['mass']}\")" + ] + }, + { + "cell_type": "markdown", + "id": "15a6a3c2", + "metadata": {}, + "source": [ + "Now let's take a look at the groups key." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "71efe836", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0': {'H': [0, 1], 'O': [0]}, '1': {'H': [2, 3], 'O': [1]}, '2': {'H': [4, 5], 'O': [2]}, '3': {'H': [6, 7], 'O': [3]}, '4': {'H': [8, 9], 'O': [4]}, '5': {'H': [10, 11], 'O': [5]}, '6': {'H': [12, 13], 'O': [6]}, '7': {'H': [14, 15], 'O': [7]}, '8': {'H': [16, 17], 'O': [8]}, '9': {'H': [18, 19], 'O': [9]}, '10': {'H': [20, 21], 'O': [10]}, '11': {'H': [22, 23], 'O': [11]}, '12': {'H': [24, 25], 'O': [12]}, '13': {'H': [26, 27], 'O': [13]}}\n" + ] + } + ], + "source": [ + "print(water_chemical.molecules['water']['groups'])" + ] + }, + { + "cell_type": "markdown", + "id": "1dcdb0ef", + "metadata": {}, + "source": [ + "The groups key contains direct information about which atoms belong to which molecule, for example, the 10th molecule of water (id=9) consists of Hydrogen atoms 18 and 19 and oxygen atom 10." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a59a2e7f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'H': [18, 19], 'O': [9]}\n" + ] + } + ], + "source": [ + "print(water_chemical.molecules['water']['groups']['9'])" + ] + }, + { + "cell_type": "markdown", + "id": "c2b19cab", + "metadata": {}, + "source": [ + "With this information you can compute values, e.g. diffusion coefficients with only the atoms belonging to a single molecule using the atom_select arguments in the calculator." + ] + }, + { + "cell_type": "markdown", + "id": "dd908e51", + "metadata": {}, + "source": [ + "### Analysis with molecules\n", + "\n", + "Now that we have seen how we can build molecules and what information this gives is, let's look at what we can analyse using them." + ] + }, + { + "cell_type": "markdown", + "id": "2275128d", + "metadata": {}, + "source": [ + "#### Angular Distribution Functions (ADFs)\n", + "\n", + "First things first, let's confirm we are working with water by looking at the angular distribution function of the atoms." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "55c668ef", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/1 [00:00\n", + " \n", + " Loading BokehJS ...\n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"1002\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"1408a722-ecc6-411e-aca8-79c1fa6f64f3\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1261\"},{\"id\":\"1259\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"1262\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1062\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null},\"id\":\"1105\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1199\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1060\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1156\"}]},\"id\":\"1155\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1192\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"1168\"}],\"center\":[{\"id\":\"1171\"},{\"id\":\"1175\"},{\"id\":\"1207\"}],\"left\":[{\"id\":\"1172\"}],\"renderers\":[{\"id\":\"1194\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1196\"},\"toolbar\":{\"id\":\"1183\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1160\"},\"x_scale\":{\"id\":\"1164\"},\"y_range\":{\"id\":\"1162\"},\"y_scale\":{\"id\":\"1166\"}},\"id\":\"1159\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1056\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1144\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1169\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"H_H_H - Max: 86.443 degrees \"},\"renderers\":[{\"id\":\"1194\"}]},\"id\":\"1208\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1193\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1203\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1205\"},\"selection_policy\":{\"id\":\"1204\"}},\"id\":\"1190\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"1209\",\"type\":\"HoverTool\"},{\"attributes\":{\"toolbar\":{\"id\":\"1260\"},\"toolbar_location\":\"above\"},\"id\":\"1261\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1086\"},\"glyph\":{\"id\":\"1087\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1089\"},\"nonselection_glyph\":{\"id\":\"1088\"},\"view\":{\"id\":\"1091\"}},\"id\":\"1090\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1182\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1173\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1172\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1175\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1177\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"1202\"},\"group\":null,\"major_label_policy\":{\"id\":\"1203\"},\"ticker\":{\"id\":\"1169\"}},\"id\":\"1168\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1200\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1190\"},\"glyph\":{\"id\":\"1191\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1193\"},\"nonselection_glyph\":{\"id\":\"1192\"},\"view\":{\"id\":\"1195\"}},\"id\":\"1194\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1058\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1196\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"1199\"},\"group\":null,\"major_label_policy\":{\"id\":\"1200\"},\"ticker\":{\"id\":\"1173\"}},\"id\":\"1172\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1064\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1067\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1166\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1168\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1171\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1065\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1180\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"1098\"},\"group\":null,\"major_label_policy\":{\"id\":\"1099\"},\"ticker\":{\"id\":\"1065\"}},\"id\":\"1064\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1204\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1179\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1182\"}},\"id\":\"1178\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1181\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"1190\"}},\"id\":\"1195\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1191\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{\"tools\":[{\"id\":\"1176\"},{\"id\":\"1177\"},{\"id\":\"1178\"},{\"id\":\"1179\"},{\"id\":\"1180\"},{\"id\":\"1181\"},{\"id\":\"1209\"}]},\"id\":\"1183\",\"type\":\"Toolbar\"},{\"attributes\":{\"toolbars\":[{\"id\":\"1027\"},{\"id\":\"1079\"},{\"id\":\"1131\"},{\"id\":\"1183\"}],\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1053\"},{\"id\":\"1072\"},{\"id\":\"1073\"},{\"id\":\"1074\"},{\"id\":\"1075\"},{\"id\":\"1076\"},{\"id\":\"1077\"},{\"id\":\"1105\"},{\"id\":\"1124\"},{\"id\":\"1125\"},{\"id\":\"1126\"},{\"id\":\"1127\"},{\"id\":\"1128\"},{\"id\":\"1129\"},{\"id\":\"1157\"},{\"id\":\"1176\"},{\"id\":\"1177\"},{\"id\":\"1178\"},{\"id\":\"1179\"},{\"id\":\"1180\"},{\"id\":\"1181\"},{\"id\":\"1209\"}]},\"id\":\"1260\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"1205\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1202\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"1064\"}],\"center\":[{\"id\":\"1067\"},{\"id\":\"1071\"},{\"id\":\"1103\"}],\"left\":[{\"id\":\"1068\"}],\"renderers\":[{\"id\":\"1090\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1092\"},\"toolbar\":{\"id\":\"1079\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1056\"},\"x_scale\":{\"id\":\"1060\"},\"y_range\":{\"id\":\"1058\"},\"y_scale\":{\"id\":\"1062\"}},\"id\":\"1055\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1176\",\"type\":\"PanTool\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1208\"}]},\"id\":\"1207\",\"type\":\"Legend\"},{\"attributes\":{\"children\":[[{\"id\":\"1003\"},0,0],[{\"id\":\"1055\"},0,1],[{\"id\":\"1107\"},0,2],[{\"id\":\"1159\"},1,0]]},\"id\":\"1259\",\"type\":\"GridBox\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1053\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"1078\"}},\"id\":\"1074\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1140\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"1157\",\"type\":\"HoverTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1151\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAwHDplj8AAADAInC0PwAAAKAj37k/AAAAQMR2xD8AAADgOTXKPwAAAMATFtE/AAAAAKwG0j8AAADASzTUPwAAAOAXzNQ/AAAAgAhS1z8AAAAg2+DaPwAAACBTNdw/AAAAYCK23T8AAACAGwLgPwAAAODjZOE/AAAAIOGK4T8AAACAs0rjPwAAAICOT+M/AAAAwD4A4z8AAACgsj/kPwAAAMAncOU/AAAAYE4y5j8AAADgwn7mPwAAACArfOQ/AAAAoAG45D8AAAAAjI3lPwAAAIBK1eU/AAAAoI+45T8AAADg3DfmPwAAACCtVOQ/AAAAwIRm5T8AAABA/LbmPwAAAGAAQuU/AAAAgD1O4z8AAACgmwfjPwAAAICUyOM/AAAAYKAM5D8AAADApKDiPwAAAAAFquE/AAAAoJ/K4T8AAABgwlDiPwAAAGDHheA/AAAA4It84T8AAADg5VPgPwAAAKB0JeA/AAAAgN3O3T8AAAAAfHDfPwAAAACfVN0/AAAAwNW72j8AAAAAWovaPwAAAEAVHto/AAAAoIud2j8AAACgL5bXPwAAAODEsdc/AAAAAGOp1j8AAADArd3VPwAAAIA+xtU/AAAAgOYj1j8AAADg+f/TPwAAAGBAL9M/AAAA4Eb30j8AAAAAYgbRPwAAAACtOs8/AAAAgKY+0D8AAADAqAzPPwAAAEAcOdA/AAAAoJ6QzD8AAABg1AjMPwAAAEAOQco/AAAAAIQIzD8AAABAX0LJPwAAAIDprcc/AAAAoD+Nxz8AAACAU63GPwAAAKBoecY/AAAAYEUowz8AAACgiRXEPwAAAICKhMI/AAAAANSVwz8AAAAA8fXBPwAAAOAnO78/AAAAILIFwj8AAADAUl7APwAAACAITb0/AAAAYBjRuj8AAABAdfi7PwAAAKCCSbo/AAAAwJ6ouz8AAABADeG3PwAAAMCYd7g/AAAAAKXNtj8AAABg6bW6PwAAAAB1s7c/AAAA4JQPuT8AAACAq1+1PwAAAACFl7Y/AAAAQOM2tj8AAADg1I+2PwAAAMAM0bQ/AAAAoNzQtT8AAAAAjGezPwAAAOBeXLM/AAAAwCpksj8AAADgVl6zPwAAAODFMbQ/AAAAgKB3tT8AAAAAZUSzPwAAACDPo7I/AAAAgGvksz8AAAAgaaOwPwAAACCuD7I/AAAAIHibsz8AAADgdIezPwAAAMAvnbE/AAAAwOajsj8AAACAMHC0PwAAAGDbj7E/AAAA4POCsj8AAAAgotKyPwAAAADHb7M/AAAAQC5asj8AAABAHHOzPwAAAGCnKbI/AAAAwE5Psz8AAAAAdIGyPwAAAKAxQLQ/AAAAgNIvsj8AAADgRq6yPwAAAEATB7M/AAAAIN8Gsz8AAABAhhu1PwAAAEDXUrQ/AAAAAFVitD8AAAAgFzy0PwAAAKDtXbU/AAAA4GLstD8AAACgduyzPwAAAOCWr7U/AAAA4CKKtD8AAABg7Ui1PwAAAMDSN7U/AAAAQKX2tT8AAADAFLa0PwAAAIDI4bQ/AAAAwO9btT8AAAAAXGq2PwAAAMASdrU/AAAAwH+Utj8AAADA4WW3PwAAAEDkYLc/AAAAgGn7tT8AAACgkvm2PwAAAGApqrc/AAAAgMKEtz8AAACgBOu6PwAAAGAt17g/AAAAILGLtz8AAADAbqi4PwAAACAG+rk/AAAAoJeWuT8AAAAgtDa7PwAAAAAqnLk/AAAAwM4UvT8AAABggqC6PwAAAKAyY7w/AAAA4CDruT8AAAAg6+i7PwAAAGCGELs/AAAA4Oafvj8AAABgzS69PwAAAGD9t7w/AAAAAErLvj8AAACg/qO+PwAAAGA0E78/AAAAoLB6vj8AAADA2WC/PwAAAIBE1L4/AAAA4M+TvT8AAABAjxK/PwAAACCnv78/AAAAoIg0wD8AAAAghZTBPwAAACCGzMA/AAAAAG6BwT8AAABAap3BPwAAACBgUcA/AAAAgGkRwj8AAABArK7CPwAAAMBjcsI/AAAAwMpPwj8AAADA727DPwAAAEBZA8M/AAAA4DANwj8AAACghVHDPwAAACAL/cI/AAAAQIeAxT8AAABA23vEPwAAACAPdsQ/AAAAYMxpxT8AAABgdUvEPwAAAKBnmcU/AAAAoLwgxz8AAADgGc/IPwAAAGAh7cc/AAAAgNaNxz8AAABgjUPHPwAAACB2tcg/AAAAoFe0yD8AAABA0FTLPwAAAIAXlMo/AAAA4HXByT8AAABgmN7KPwAAAMCpA8s/AAAAwCo/yT8AAAAg4YrNPwAAAOBJSc0/AAAAoPPqzj8AAAAg/MTMPwAAAABabM0/AAAAoJdB0D8AAAAAqrXPPwAAAAAx+dA/AAAAgAoc0j8AAADg3//RPwAAAIACadA/AAAAQAh90T8AAACAL0/TPwAAAOBvQtM/AAAAYJGM0j8AAAAgpVnTPwAAAMB9ztQ/AAAAwKrr0z8AAACg7hvWPwAAAKA/jdU/AAAAgEBw1T8AAACAonbXPwAAAKBUidY/AAAAwHtz1j8AAAAAogLZPwAAAGDGr9c/AAAA4OIN2T8AAABg/LXYPwAAACBIMNg/AAAAAHwT2j8AAAAAubbaPwAAAICtIto/AAAAwIPq2j8AAAAgFGHcPwAAAGDEmd0/AAAAQI693D8AAADgndndPwAAAMCeoNw/AAAAYB1o3z8AAADA/ejePwAAAAAfmd4/AAAAQPp34D8AAADAdYTgPwAAAGAOkOE/AAAAQLhL4T8AAADg6WbiPwAAACAQEuI/AAAAoJ9u4j8AAAAg4mPiPwAAACCHO+Q/AAAAgMXl4z8AAACgzuTjPwAAAKCKoOM/AAAAYLiE5D8AAAAAdbPiPwAAAOC1a+U/AAAAYAJD5T8AAAAgEMPlPwAAACAbfeU/AAAAYHu45T8AAACgrITmPwAAAOB3YOY/AAAAYCVe5z8AAABgxOrnPwAAAACac+g/AAAAYLHd6D8AAAAgxWLoPwAAAGCWguk/AAAAQL7H6D8AAACgfaPpPwAAAIAUDek/AAAAwB3r6j8AAABAuQ/sPwAAACD2o+o/AAAAoFFf6j8AAAAAhYLrPwAAAIDWCOs/AAAAgP4k7T8AAAAg31frPwAAAGDSKu4/AAAAYAVf7T8AAABAmW/tPwAAACAJSe0/AAAAwJUE7T8AAADgc5jtPwAAAMCz9+w/AAAAIBHS6j8AAACAmGntPwAAAECcu+w/AAAAAEFi7T8AAACACOvrPwAAAACNz+w/AAAAQLEN7D8AAABA6lnsPwAAAKCgqes/AAAAwMvq6j8AAAAglcvrPwAAACCglOs/AAAAYPop7D8AAADAjxPqPwAAAEC9dOk/AAAAIHCV6j8AAABAEnrpPwAAAEDIY+g/AAAAIE/c6D8AAABASH3pPwAAAADT4+g/AAAAoCB96T8AAACgYb7oPwAAACDFl+c/AAAA4OLl5j8AAABA1yXnPwAAAEDxVOU/AAAAYGmC5T8AAADgxoXlPwAAAECIkuY/AAAAAKsO5T8AAACAie7lPwAAAIC0aOM/AAAAgLOe4j8AAADgJ3jkPwAAAEA6POI/AAAAwDWV4j8AAABAu0biPwAAAOCQ4uI/AAAAIHpH4T8AAACgDuXhPwAAAMBWxOE/AAAAAElQ4D8AAACgXQfhPwAAAIAAYN8/AAAAwCwB3z8AAABgDw3gPwAAAEBWW94/AAAAQHCl3j8AAACgDobdPwAAAIAd99w/AAAAwAxf3T8AAABADZLdPwAAAIAepN0/AAAAgH4D2z8AAAAAa7DbPwAAAKC+sdo/AAAAgARk3D8AAADAQzXaPwAAAEAOetk/AAAAAGkx2T8AAACALojaPwAAACBAJNo/AAAA4POg2D8AAACgQfPYPwAAACA53No/AAAAIGZ11z8AAACAfBvYPwAAACBtudc/AAAAAM++1z8AAADAaBTXPwAAAGB8Wtc/AAAAQBZo1T8AAAAg7SPYPwAAAGB3pdU/AAAAAKx81T8AAABALbTUPwAAAMA5+tU/AAAAgKj80z8AAAAA7JvUPwAAAIDrWtQ/AAAA4FzX1D8AAABg32LTPwAAAECpz9M/AAAAYO2l0z8AAACgiIjUPwAAACBeIdI/AAAAAMRW1D8AAABAgWfRPwAAAGCwwdI/AAAAYOLC0z8AAABAoIvRPwAAAACqrtA/AAAAoJtL0T8AAABgz6rRPwAAAOCOddI/AAAAYNiU0D8AAAAgm3zSPwAAAKBhsNA/AAAAQFxn0T8AAADgoUbRPwAAAEAontA/AAAA4D9czj8AAADAhQXOPwAAACB4us4/AAAAQEx3zT8AAAAAzfzNPwAAACAMMs8/AAAA4B6vzD8AAACAqYDNPwAAAIAjrsw/AAAAIOzwyz8AAAAg1wnKPwAAAIAWc8w/AAAA4FWvyz8AAADANGLKPwAAAMCGs8g/AAAAoIhXyj8AAACA0BDJPwAAAADx38c/AAAAYAdTxz8AAAAgJmTJPwAAAMAMesg/AAAAAN/lxj8AAAAgArvGPwAAAMAmUsY/AAAAgPZAxj8AAABgERHFPwAAAIAPwsQ/AAAAgI2Zwj8AAAAA4ZPEPwAAAABOtMY/AAAAwAlaxj8AAADg8yTCPwAAAICZacE/AAAA4CFhwj8AAACAN+PAPwAAAMAGh8A/AAAAwG0+wD8AAABgqLnAPwAAAMCoTb8/AAAA4DTPvj8AAACAOv++PwAAAGBq1rs/AAAAwNZ/vD8AAABgnY28PwAAAECZQ74/AAAAoL14uz8AAACg5cO4PwAAAKCX2rc/AAAAII7Ttj8AAAAAJD+3PwAAAABkrbo/AAAAgD4stz8AAADAXuG1PwAAAAC2orQ/AAAAQPBftD8AAABgoju0PwAAAAAPk7Y/AAAAAJ2dsz8AAADgoQ+xPwAAAGAHtLE/AAAAQKCPrj8AAABgW6KtPwAAACDuZrE/AAAAQIBorz8AAACAhKyrPwAAAEAte68/AAAAYKlkqD8AAADAMeupPwAAAEA59ac/AAAAwJMzqj8AAAAAEKerPwAAAKDGQqU/AAAAILqVoz8AAADAj/ulPwAAAADk76E/AAAAoHaenz8AAACAwx2hPwAAAGDGL58/AAAA4JhAoD8AAAAgn2CYPwAAAOCnN5U/AAAAINaqmD8AAADAdYWaPwAAAGCWp5g/AAAAALkYkz8AAABghhWRPwAAACCwBoo/AAAAICg+jD8AAADgzQuGPwAAAKAQC4E/AAAA4H/Egz8AAABgfWtxPwAAAADpOoA/AAAA4DlrcT8AAAAghP1mPwAAAODUiVc/AAAAAK0iSD8AAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1101\"},\"selection_policy\":{\"id\":\"1100\"}},\"id\":\"1086\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1101\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1077\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1124\"},{\"id\":\"1125\"},{\"id\":\"1126\"},{\"id\":\"1127\"},{\"id\":\"1128\"},{\"id\":\"1129\"},{\"id\":\"1157\"}]},\"id\":\"1131\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"1147\"},\"group\":null,\"major_label_policy\":{\"id\":\"1148\"},\"ticker\":{\"id\":\"1121\"}},\"id\":\"1120\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1089\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1096\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1100\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1153\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1112\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1086\"}},\"id\":\"1091\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1069\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1087\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1128\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1108\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"1120\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1123\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"O_O_O - Max: 91.507 degrees \"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1092\",\"type\":\"Title\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1130\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"label\":{\"value\":\"O_O_H - Max: 105.974 degrees \"},\"renderers\":[{\"id\":\"1090\"}]},\"id\":\"1104\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{\"below\":[{\"id\":\"1116\"}],\"center\":[{\"id\":\"1119\"},{\"id\":\"1123\"},{\"id\":\"1155\"}],\"left\":[{\"id\":\"1120\"}],\"renderers\":[{\"id\":\"1142\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1144\"},\"toolbar\":{\"id\":\"1131\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1108\"},\"x_scale\":{\"id\":\"1112\"},\"y_range\":{\"id\":\"1110\"},\"y_scale\":{\"id\":\"1114\"}},\"id\":\"1107\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1104\"}]},\"id\":\"1103\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1099\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1088\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"1053\",\"type\":\"HoverTool\"},{\"attributes\":{\"source\":{\"id\":\"1138\"}},\"id\":\"1143\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"1130\"}},\"id\":\"1126\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1098\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1117\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1114\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1110\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1095\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"1150\"},\"group\":null,\"major_label_policy\":{\"id\":\"1151\"},\"ticker\":{\"id\":\"1117\"}},\"id\":\"1116\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1150\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1139\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1073\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"O_H_H - Max: 109.591 degrees \"},\"renderers\":[{\"id\":\"1142\"}]},\"id\":\"1156\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1076\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1141\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1153\"},\"selection_policy\":{\"id\":\"1152\"}},\"id\":\"1138\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1075\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1078\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1068\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1071\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"1095\"},\"group\":null,\"major_label_policy\":{\"id\":\"1096\"},\"ticker\":{\"id\":\"1069\"}},\"id\":\"1068\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1116\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1119\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1152\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1072\"},{\"id\":\"1073\"},{\"id\":\"1074\"},{\"id\":\"1075\"},{\"id\":\"1076\"},{\"id\":\"1077\"},{\"id\":\"1105\"}]},\"id\":\"1079\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1072\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1127\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1138\"},\"glyph\":{\"id\":\"1139\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1141\"},\"nonselection_glyph\":{\"id\":\"1140\"},\"view\":{\"id\":\"1143\"}},\"id\":\"1142\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1262\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"1408a722-ecc6-411e-aca8-79c1fa6f64f3\",\"root_ids\":[\"1262\"],\"roots\":{\"1262\":\"09d11bd3-cad6-4809-b08c-4417bcce3fec\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1262" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Angular_Distribution_Function_1" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.AngularDistributionFunction(\n", + " number_of_configurations=5000, number_of_bins=500, norm_power=8\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "0b206ed9", + "metadata": {}, + "source": [ + "Looking at the O_H_H ADF in he top right we see a strong max peak at 109.591 degrees corresponding well with the bond angle of an SPCE model (109.47) as was used in the simulation. It is also worth noting that the oxygen triplet angle looks similar to that measured in QM and experimental studies.\n", + "\n", + "When we want to study the molecular ADF we have two choices, we can either pass it as a species argument to the calculator if only one is desired, we we can call the calculator with the `molecules=True` keyword as we will do here." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "d6f7e8bf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 1.04it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"1527\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"1527\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1527\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1527\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"a8529cb5-0592-4a26-8ca4-ad2ec0ca7dc4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1594\"},{\"id\":\"1592\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"1595\",\"type\":\"Column\"},{\"attributes\":{\"below\":[{\"id\":\"1537\"}],\"center\":[{\"id\":\"1540\"},{\"id\":\"1544\"},{\"id\":\"1576\"}],\"left\":[{\"id\":\"1541\"}],\"renderers\":[{\"id\":\"1563\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1565\"},\"toolbar\":{\"id\":\"1552\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1529\"},\"x_scale\":{\"id\":\"1533\"},\"y_range\":{\"id\":\"1531\"},\"y_scale\":{\"id\":\"1535\"}},\"id\":\"1528\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"1578\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1535\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1562\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1542\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1574\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1559\"}},\"id\":\"1564\",\"type\":\"CDSView\"},{\"attributes\":{\"children\":[[{\"id\":\"1528\"},0,0]]},\"id\":\"1592\",\"type\":\"GridBox\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1551\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"1551\"}},\"id\":\"1547\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1545\"},{\"id\":\"1546\"},{\"id\":\"1547\"},{\"id\":\"1548\"},{\"id\":\"1549\"},{\"id\":\"1550\"},{\"id\":\"1578\"}]},\"id\":\"1552\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1577\"}]},\"id\":\"1576\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1574\"},\"selection_policy\":{\"id\":\"1573\"}},\"id\":\"1559\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1573\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1549\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1569\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1537\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1540\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1548\",\"type\":\"SaveTool\"},{\"attributes\":{\"label\":{\"value\":\"water_water_water - Max: 104.889 degrees \"},\"renderers\":[{\"id\":\"1563\"}]},\"id\":\"1577\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"1541\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1544\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1571\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1529\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"1571\"},\"group\":null,\"major_label_policy\":{\"id\":\"1572\"},\"ticker\":{\"id\":\"1538\"}},\"id\":\"1537\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1565\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1538\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1531\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"1568\"},\"group\":null,\"major_label_policy\":{\"id\":\"1569\"},\"ticker\":{\"id\":\"1542\"}},\"id\":\"1541\",\"type\":\"LinearAxis\"},{\"attributes\":{\"toolbar\":{\"id\":\"1593\"},\"toolbar_location\":\"above\"},\"id\":\"1594\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"1550\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1545\",\"type\":\"PanTool\"},{\"attributes\":{\"toolbars\":[{\"id\":\"1552\"}],\"tools\":[{\"id\":\"1545\"},{\"id\":\"1546\"},{\"id\":\"1547\"},{\"id\":\"1548\"},{\"id\":\"1549\"},{\"id\":\"1550\"},{\"id\":\"1578\"}]},\"id\":\"1593\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1559\"},\"glyph\":{\"id\":\"1560\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1562\"},\"nonselection_glyph\":{\"id\":\"1561\"},\"view\":{\"id\":\"1564\"}},\"id\":\"1563\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1560\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1561\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1572\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1533\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1568\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1546\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"1595\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"a8529cb5-0592-4a26-8ca4-ad2ec0ca7dc4\",\"root_ids\":[\"1595\"],\"roots\":{\"1595\":\"ffdc8971-0575-4d90-8a9f-26ad4f506900\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1595" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Angular_Distribution_Function_2" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.AngularDistributionFunction(\n", + " molecules=True, number_of_configurations=3000, number_of_bins=500, norm_power=8\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b4407de0", + "metadata": {}, + "source": [ + "In this case we have increased the norm power to suppress the noise floor and highlight only the most dominant peaks.\n", + "\n", + "In the water molecule ADF it we do not see any clear stacking or structure suggesting there is not special organization of the molecules in these simulations." + ] + }, + { + "cell_type": "markdown", + "id": "b8581249", + "metadata": {}, + "source": [ + "#### Radial Distribution Functions (RDFs)\n", + "\n", + "Now let's look at the radial structure and distribution of particles in space of both the atomistic system and the molecules. This is where molecule mapping can be very helpful as often we are more interested in the positions of the molecules themselves and not necessarily those of the atoms." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "be87957e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running mini batch loop 1 / 1: 100%|████| 1/1 [00:01<00:00, 1.79s/it]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"1706\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"1706\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1706\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1706\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"0f7cc494-dd5d-4568-a466-7ee698f62609\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1901\"},{\"id\":\"1899\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"1902\",\"type\":\"Column\"},{\"attributes\":{\"overlay\":{\"id\":\"1834\"}},\"id\":\"1830\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1816\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"O_H\"},\"renderers\":[{\"id\":\"1794\"}]},\"id\":\"1808\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1831\",\"type\":\"SaveTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1776\"},{\"id\":\"1777\"},{\"id\":\"1778\"},{\"id\":\"1779\"},{\"id\":\"1780\"},{\"id\":\"1781\"},{\"id\":\"1809\"}]},\"id\":\"1783\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1857\"},\"selection_policy\":{\"id\":\"1856\"}},\"id\":\"1842\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1842\"}},\"id\":\"1847\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1852\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1747\"},\"group\":null,\"major_label_policy\":{\"id\":\"1748\"},\"ticker\":{\"id\":\"1721\"}},\"id\":\"1720\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1843\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABxgFeIpD1eP3GAV4ikPW4/VKBBZjuudj9xgFeIpD1+P0ewNtWG5oI/VKBBZjuuhj9jkEz373WKP3GAV4ikPY4/QDixjKwCkT9HsDbVhuaSP04ovB1hypQ/VKBBZjuulj9bGMeuFZKYP2OQTPfvdZo/awjSP8pZnD9xgFeIpD2ePzx8bmi/EKA/QDixjKwCoT9D9POwmfShP0ewNtWG5qI/Smx5+XPYoz9OKLwdYcqkP1Hk/kFOvKU/VKBBZjuupj9YXISKKKCnP1sYx64Vkqg/X9QJ0wKEqT9jkEz373WqP2ZMjxvdZ6s/awjSP8pZrD9uxBRkt0utP3GAV4ikPa4/dDyarJEvrz88fG5ovxCwPz7aj/q1ibA/QDixjKwCsT9BltIeo3uxP0P087CZ9LE/RVIVQ5Btsj9HsDbVhuayP0gOWGd9X7M/Smx5+XPYsz9MypqLalG0P04ovB1hyrQ/UIbdr1dDtT9R5P5BTry1P1NCINRENbY/VKBBZjuutj9X/mL4MSe3P1hchIoooLc/WrqlHB8ZuD9bGMeuFZK4P1526EAMC7k/X9QJ0wKEuT9hMitl+fy5P2OQTPfvdbo/ZO5tiebuuj9mTI8b3We7P2eqsK3T4Ls/awjSP8pZvD9sZvPRwNK8P27EFGS3S70/byI29q3EvT9xgFeIpD2+P3LeeBqbtr4/dDyarJEvvz92mrs+iKi/Pzx8bmi/EMA/PSt/sTpNwD8+2o/6tYnAPz+JoEMxxsA/QDixjKwCwT9A58HVJz/BP0GW0h6je8E/QkXjZx64wT9D9POwmfTBP0SjBPoUMcI/RVIVQ5Btwj9GASaMC6rCP0ewNtWG5sI/SF9HHgIjwz9IDlhnfV/DP0m9aLD4m8M/Smx5+XPYwz9LG4pC7xTEP0zKmotqUcQ/TXmr1OWNxD9OKLwdYcrEP0/XzGbcBsU/UIbdr1dDxT9QNe740n/FP1Hk/kFOvMU/UpMPi8n4xT9TQiDURDXGP1PxMB3AccY/VKBBZjuuxj9WT1KvturGP1f+YvgxJ8c/V61zQa1jxz9YXISKKKDHP1kLldOj3Mc/WrqlHB8ZyD9babZlmlXIP1sYx64Vksg/XMfX95DOyD9eduhADAvJP18l+YmHR8k/X9QJ0wKEyT9fgxocfsDJP2EyK2X5/Mk/Y+E7rnQ5yj9jkEz373XKP2Q/XUBrsso/ZO5tiebuyj9mnX7SYSvLP2ZMjxvdZ8s/Z/ufZFikyz9nqrCt0+DLP2lZwfZOHcw/awjSP8pZzD9rt+KIRZbMP2xm89HA0sw/bBUEGzwPzT9uxBRkt0vNP25zJa0yiM0/byI29q3EzT9v0UY/KQHOP3GAV4ikPc4/ci9o0R96zj9y3ngam7bOP3SNiWMW884/dDyarJEvzz9266r1DGzPP3aauz6IqM8/d0nMhwPlzz88fG5ovxDQP7zT9gz9LtA/PSt/sTpN0D+9ggdWeGvQPz7aj/q1idA/vjEYn/On0D8/iaBDMcbQP7/gKOhu5NA/QDixjKwC0T/Ajzkx6iDRP0DnwdUnP9E/wT5KemVd0T9BltIeo3vRP8LtWsPgmdE/QkXjZx640T/DnGsMXNbRP0P087CZ9NE/xEt8VdcS0j9EowT6FDHSP8T6jJ5ST9I/RVIVQ5Bt0j/FqZ3nzYvSP0YBJowLqtI/xliuMEnI0j9HsDbVhubSP8cHv3nEBNM/SF9HHgIj0z/Its/CP0HTP0gOWGd9X9M/yWXgC7t90z9JvWiw+JvTP8oU8VQ2utM/Smx5+XPY0z/LwwGesfbTP0sbikLvFNQ/zHIS5ywz1D9MypqLalHUP8whIzCob9Q/TXmr1OWN1D/N0DN5I6zUP04ovB1hytQ/zn9Ewp7o1D9P18xm3AbVP88uVQsaJdU/UIbdr1dD1T/P3WVUlWHVP1A17vjSf9U/0Yx2nRCe1T9R5P5BTrzVP9I7h+aL2tU/UpMPi8n41T/T6pcvBxfWP1NCINRENdY/05moeIJT1j9T8TAdwHHWP9RIucH9j9Y/VKBBZjuu1j/V98kKeczWP1ZPUq+26tY/1qbaU/QI1z9X/mL4MSfXP9dV65xvRdc/V61zQa1j1z/XBPzl6oHXP1hchIoooNc/2LMML2a+1z9ZC5XTo9zXP9piHXjh+tc/WrqlHB8Z2D/bES7BXDfYP1tptmWaVdg/28A+Cthz2D9bGMeuFZLYP9xvT1NTsNg/XMfX95DO2D/dHmCczuzYP1526EAMC9k/3s1w5Ukp2T9fJfmJh0fZP998gS7FZdk/X9QJ0wKE2T/fK5J3QKLZP1+DGhx+wNk/4dqiwLve2T9hMitl+fzZP+GJswk3G9o/Y+E7rnQ52j/jOMRSslfaP2OQTPfvddo/4+fUmy2U2j9kP11Aa7LaP+SW5eSo0No/ZO5tiebu2j/mRfYtJA3bP2adftJhK9s/5vQGd59J2z9mTI8b3WfbP+ejF8Aahts/Z/ufZFik2z/nUigJlsLbP2eqsK3T4Ns/6QE5UhH/2z9pWcH2Th3cP+mwSZuMO9w/awjSP8pZ3D/rX1rkB3jcP2u34ohFltw/6w5rLYO03D9sZvPRwNLcP+y9e3b+8Nw/bBUEGzwP3T/ubIy/eS3dP27EFGS3S90/7hudCPVp3T9ucyWtMojdP+/KrVFwpt0/byI29q3E3T/veb6a6+LdP2/RRj8pAd4/8SjP42Yf3j9xgFeIpD3eP/HX3yziW94/ci9o0R963j/yhvB1XZjeP3LeeBqbtt4/8jUBv9jU3j90jYljFvPeP/TkEQhUEd8/dDyarJEv3z/0kyJRz03fP3brqvUMbN8/9kIzmkqK3z92mrs+iKjfP/fxQ+PFxt8/d0nMhwPl3z98UCqWoAHgPzx8bmi/EOA//KeyOt4f4D+80/YM/S7gP3z/Ot8bPuA/PSt/sTpN4D/9VsODWVzgP72CB1Z4a+A/fa5LKJd64D8+2o/6tYngP/4F1MzUmOA/vjEYn/On4D9+XVxxErfgPz+JoEMxxuA//7TkFVDV4D+/4CjobuTgP4AMbbqN8+A/QDixjKwC4T8AZPVeyxHhP8CPOTHqIOE/gLt9Awkw4T9A58HVJz/hPwATBqhGTuE/wT5KemVd4T+Bao5MhGzhP0GW0h6je+E/AcIW8cGK4T/C7VrD4JnhP4IZn5X/qOE/QkXjZx644T8CcSc6PcfhP8Ocawxc1uE/g8iv3nrl4T9D9POwmfThPwQgOIO4A+I/xEt8VdcS4j+Ed8An9iHiP0SjBPoUMeI/BM9IzDNA4j/E+oyeUk/iP4Qm0XBxXuI/RVIVQ5Bt4j8FflkVr3ziP8WpnefNi+I/hdXhueya4j9GASaMC6riPwYtal4queI/xliuMEnI4j+GhPICaNfiP0ewNtWG5uI/B9x6p6X14j/HB795xATjP4gzA0zjE+M/SF9HHgIj4z8Ii4vwIDLjP8i2z8I/QeM/iOITlV5Q4z9IDlhnfV/jPwg6nDmcbuM/yWXgC7t94z+JkSTe2YzjP0m9aLD4m+M/Cemsgher4z/KFPFUNrrjP4pANSdVyeM/Smx5+XPY4z8KmL3LkufjP8vDAZ6x9uM/i+9FcNAF5D9LG4pC7xTkPwxHzhQOJOQ/zHIS5ywz5D+Mnla5S0LkP0zKmotqUeQ/DPbeXYlg5D/MISMwqG/kP4xNZwLHfuQ/TXmr1OWN5D8Npe+mBJ3kP83QM3kjrOQ/jfx3S0K75D9OKLwdYcrkPw5UAPB/2eQ/zn9Ewp7o5D+Oq4iUvffkP0/XzGbcBuU/DwMROfsV5T/PLlULGiXlP5Bamd04NOU/UIbdr1dD5T8QsiGCdlLlP8/dZVSVYeU/kAmqJrRw5T9QNe740n/lPxBhMsvxjuU/0Yx2nRCe5T+RuLpvL63lP1Hk/kFOvOU/ERBDFG3L5T/SO4fmi9rlP5Jny7iq6eU/UpMPi8n45T8Sv1Nd6AfmP9Pqly8HF+Y/kxbcASYm5j9TQiDURDXmPxNuZKZjROY/05moeIJT5j+TxexKoWLmP1PxMB3AceY/FB11796A5j/USLnB/Y/mP5R0/ZMcn+Y/VKBBZjuu5j8VzIU4Wr3mP9X3yQp5zOY/lSMO3Zfb5j9WT1KvturmPxZ7loHV+eY/1qbaU/QI5z+W0h4mExjnP1f+YvgxJ+c/FyqnylA25z/XVeucb0XnP5eBL2+OVOc/V61zQa1j5z8X2bcTzHLnP9cE/OXqgec/mDBAuAmR5z9YXISKKKDnPxiIyFxHr+c/2LMML2a+5z+Z31ABhc3nP1kLldOj3Oc/GTfZpcLr5z/aYh144frnP5qOYUoACug/WrqlHB8Z6D8a5unuPSjoP9sRLsFcN+g/mz1yk3tG6D9babZlmlXoPxuV+je5ZOg/28A+Cthz6D+b7ILc9oLoP1sYx64Vkug/HEQLgTSh6D/cb09TU7DoP5ybkyVyv+g/XMfX95DO6D8d8xvKr93oP90eYJzO7Og/nUqkbu376D9eduhADAvpPx6iLBMrGuk/3s1w5Ukp6T+e+bS3aDjpP18l+YmHR+k/H1E9XKZW6T/ffIEuxWXpP5+oxQDkdOk/X9QJ0wKE6T8fAE6lIZPpP98rkndAouk/n1fWSV+x6T9fgxocfsDpPyGvXu6cz+k/4dqiwLve6T+hBueS2u3pP2EyK2X5/Ok/IV5vNxgM6j/hibMJNxvqP6G199tVKuo/Y+E7rnQ56j8jDYCAk0jqP+M4xFKyV+o/o2QIJdFm6j9jkEz373XqPyO8kMkOheo/4+fUmy2U6j+kExluTKPqP2Q/XUBrsuo/JGuhEorB6j/kluXkqNDqP6TCKbfH3+o/ZO5tiebu6j8kGrJbBf7qP+ZF9i0kDes/pnE6AEMc6z9mnX7SYSvrPybJwqSAOus/5vQGd59J6z+mIEtJvljrP2ZMjxvdZ+s/JnjT7ft26z/noxfAGobrP6fPW5I5les/Z/ufZFik6z8nJ+Q2d7PrP+dSKAmWwus/p35s27TR6z9nqrCt0+DrPynW9H/y7+s/6QE5UhH/6z+pLX0kMA7sP2lZwfZOHew/KYUFyW0s7D/psEmbjDvsP6ncjW2rSuw/awjSP8pZ7D8rNBYS6WjsP+tfWuQHeOw/q4uetiaH7D9rt+KIRZbsPyvjJltkpew/6w5rLYO07D+sOq//ocPsP2xm89HA0uw/LJI3pN/h7D/svXt2/vDsP6zpv0gdAO0/bBUEGzwP7T8sQUjtWh7tP+5sjL95Le0/rpjQkZg87T9uxBRkt0vtPy7wWDbWWu0/7hudCPVp7T+uR+HaE3ntPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1753\"},\"selection_policy\":{\"id\":\"1752\"}},\"id\":\"1738\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1777\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"toolbar\":{\"id\":\"1900\"},\"toolbar_location\":\"above\"},\"id\":\"1901\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1793\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1812\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1856\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1814\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1828\"},{\"id\":\"1829\"},{\"id\":\"1830\"},{\"id\":\"1831\"},{\"id\":\"1832\"},{\"id\":\"1833\"},{\"id\":\"1861\"}]},\"id\":\"1835\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"1730\"}},\"id\":\"1726\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"H_H\"},\"renderers\":[{\"id\":\"1846\"}]},\"id\":\"1860\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1780\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1782\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1721\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1825\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"1782\"}},\"id\":\"1778\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"1824\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1827\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1848\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1756\"}]},\"id\":\"1755\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1792\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1833\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1829\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1740\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1834\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1851\"},\"group\":null,\"major_label_policy\":{\"id\":\"1852\"},\"ticker\":{\"id\":\"1825\"}},\"id\":\"1824\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1724\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"1820\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1823\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1779\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1832\",\"type\":\"ResetTool\"},{\"attributes\":{\"below\":[{\"id\":\"1820\"}],\"center\":[{\"id\":\"1823\"},{\"id\":\"1827\"},{\"id\":\"1859\"}],\"left\":[{\"id\":\"1824\"}],\"renderers\":[{\"id\":\"1846\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1848\"},\"toolbar\":{\"id\":\"1835\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1812\"},\"x_scale\":{\"id\":\"1816\"},\"y_range\":{\"id\":\"1814\"},\"y_scale\":{\"id\":\"1818\"}},\"id\":\"1811\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1727\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1729\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1845\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1725\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1828\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"1720\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1723\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1728\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1818\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1855\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1776\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1844\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1730\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"label\":{\"value\":\"O_O\"},\"renderers\":[{\"id\":\"1742\"}]},\"id\":\"1756\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1791\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"1861\",\"type\":\"HoverTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1724\"},{\"id\":\"1725\"},{\"id\":\"1726\"},{\"id\":\"1727\"},{\"id\":\"1728\"},{\"id\":\"1729\"},{\"id\":\"1757\"}]},\"id\":\"1731\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1781\",\"type\":\"HelpTool\"},{\"attributes\":{\"children\":[[{\"id\":\"1707\"},0,0],[{\"id\":\"1759\"},0,1],[{\"id\":\"1811\"},0,2]]},\"id\":\"1899\",\"type\":\"GridBox\"},{\"attributes\":{\"source\":{\"id\":\"1790\"}},\"id\":\"1795\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1860\"}]},\"id\":\"1859\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1741\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1854\"},\"group\":null,\"major_label_policy\":{\"id\":\"1855\"},\"ticker\":{\"id\":\"1821\"}},\"id\":\"1820\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1842\"},\"glyph\":{\"id\":\"1843\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1845\"},\"nonselection_glyph\":{\"id\":\"1844\"},\"view\":{\"id\":\"1847\"}},\"id\":\"1846\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1739\",\"type\":\"Line\"},{\"attributes\":{\"toolbars\":[{\"id\":\"1731\"},{\"id\":\"1783\"},{\"id\":\"1835\"}],\"tools\":[{\"id\":\"1724\"},{\"id\":\"1725\"},{\"id\":\"1726\"},{\"id\":\"1727\"},{\"id\":\"1728\"},{\"id\":\"1729\"},{\"id\":\"1757\"},{\"id\":\"1776\"},{\"id\":\"1777\"},{\"id\":\"1778\"},{\"id\":\"1779\"},{\"id\":\"1780\"},{\"id\":\"1781\"},{\"id\":\"1809\"},{\"id\":\"1828\"},{\"id\":\"1829\"},{\"id\":\"1830\"},{\"id\":\"1831\"},{\"id\":\"1832\"},{\"id\":\"1833\"},{\"id\":\"1861\"}]},\"id\":\"1900\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"1712\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1808\"}]},\"id\":\"1807\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1821\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1738\"}},\"id\":\"1743\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1857\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null},\"id\":\"1809\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1751\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1748\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1768\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1771\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1752\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1708\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1773\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"1757\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1790\"},\"glyph\":{\"id\":\"1791\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1793\"},\"nonselection_glyph\":{\"id\":\"1792\"},\"view\":{\"id\":\"1795\"}},\"id\":\"1794\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1802\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1772\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1775\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1747\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1750\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1805\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1716\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1719\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1714\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1799\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1750\"},\"group\":null,\"major_label_policy\":{\"id\":\"1751\"},\"ticker\":{\"id\":\"1717\"}},\"id\":\"1716\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1753\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1799\"},\"group\":null,\"major_label_policy\":{\"id\":\"1800\"},\"ticker\":{\"id\":\"1773\"}},\"id\":\"1772\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1804\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1744\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1800\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1764\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1769\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1796\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"1716\"}],\"center\":[{\"id\":\"1719\"},{\"id\":\"1723\"},{\"id\":\"1755\"}],\"left\":[{\"id\":\"1720\"}],\"renderers\":[{\"id\":\"1742\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1744\"},\"toolbar\":{\"id\":\"1731\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1708\"},\"x_scale\":{\"id\":\"1712\"},\"y_range\":{\"id\":\"1710\"},\"y_scale\":{\"id\":\"1714\"}},\"id\":\"1707\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1760\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1710\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1766\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1738\"},\"glyph\":{\"id\":\"1739\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1741\"},\"nonselection_glyph\":{\"id\":\"1740\"},\"view\":{\"id\":\"1743\"}},\"id\":\"1742\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1762\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"1802\"},\"group\":null,\"major_label_policy\":{\"id\":\"1803\"},\"ticker\":{\"id\":\"1769\"}},\"id\":\"1768\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1717\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1803\",\"type\":\"AllLabels\"},{\"attributes\":{\"below\":[{\"id\":\"1768\"}],\"center\":[{\"id\":\"1771\"},{\"id\":\"1775\"},{\"id\":\"1807\"}],\"left\":[{\"id\":\"1772\"}],\"renderers\":[{\"id\":\"1794\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"1796\"},\"toolbar\":{\"id\":\"1783\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1760\"},\"x_scale\":{\"id\":\"1764\"},\"y_range\":{\"id\":\"1762\"},\"y_scale\":{\"id\":\"1766\"}},\"id\":\"1759\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1805\"},\"selection_policy\":{\"id\":\"1804\"}},\"id\":\"1790\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1902\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"0f7cc494-dd5d-4568-a466-7ee698f62609\",\"root_ids\":[\"1902\"],\"roots\":{\"1902\":\"0f8a3792-d359-4408-a197-83912df96908\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1902" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Radial_Distribution_Function_3" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.RadialDistributionFunction(\n", + " number_of_configurations=4000, start=100, stop=5100, number_of_bins=500\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "a13dc35e", + "metadata": {}, + "source": [ + "In the case of the hydrogen-hydrogen and the oxygen-hydrogen we can see clear peaks where the bond distance is fixed. Using the cursor to hover over the points in the plot we can identify a bond distance between hydrogens of approximately 0.163 nm, in good agreement with experimental values. The oxygen-hydrogen bond sits around 0.09 nm, also in good agreement with experiment values." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "b4358b83", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running mini batch loop 1 / 1: 100%|████| 1/1 [00:00<00:00, 4.09it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"2156\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"2156\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"2156\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"2156\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"d7750bf3-d380-4b08-913a-5f90e655575b\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2223\"},{\"id\":\"2221\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"2224\",\"type\":\"Column\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2180\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2162\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2197\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"2200\"},\"group\":null,\"major_label_policy\":{\"id\":\"2201\"},\"ticker\":{\"id\":\"2167\"}},\"id\":\"2166\",\"type\":\"LinearAxis\"},{\"attributes\":{\"tools\":[{\"id\":\"2174\"},{\"id\":\"2175\"},{\"id\":\"2176\"},{\"id\":\"2177\"},{\"id\":\"2178\"},{\"id\":\"2179\"},{\"id\":\"2207\"}]},\"id\":\"2181\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"2170\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2173\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2191\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2158\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2160\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2201\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"water_water\"},\"renderers\":[{\"id\":\"2192\"}]},\"id\":\"2206\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2166\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2169\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2194\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"2166\"}],\"center\":[{\"id\":\"2169\"},{\"id\":\"2173\"},{\"id\":\"2205\"}],\"left\":[{\"id\":\"2170\"}],\"renderers\":[{\"id\":\"2192\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"2194\"},\"toolbar\":{\"id\":\"2181\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2158\"},\"x_scale\":{\"id\":\"2162\"},\"y_range\":{\"id\":\"2160\"},\"y_scale\":{\"id\":\"2164\"}},\"id\":\"2157\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"2180\"}},\"id\":\"2176\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2203\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2190\",\"type\":\"Line\"},{\"attributes\":{\"toolbar\":{\"id\":\"2222\"},\"toolbar_location\":\"above\"},\"id\":\"2223\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"2164\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2189\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2188\"},\"glyph\":{\"id\":\"2189\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2191\"},\"nonselection_glyph\":{\"id\":\"2190\"},\"view\":{\"id\":\"2193\"}},\"id\":\"2192\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"children\":[[{\"id\":\"2157\"},0,0]]},\"id\":\"2221\",\"type\":\"GridBox\"},{\"attributes\":{},\"id\":\"2178\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2206\"}]},\"id\":\"2205\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"2203\"},\"selection_policy\":{\"id\":\"2202\"}},\"id\":\"2188\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2200\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"2207\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"2179\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2177\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"2188\"}},\"id\":\"2193\",\"type\":\"CDSView\"},{\"attributes\":{\"toolbars\":[{\"id\":\"2181\"}],\"tools\":[{\"id\":\"2174\"},{\"id\":\"2175\"},{\"id\":\"2176\"},{\"id\":\"2177\"},{\"id\":\"2178\"},{\"id\":\"2179\"},{\"id\":\"2207\"}]},\"id\":\"2222\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"2197\"},\"group\":null,\"major_label_policy\":{\"id\":\"2198\"},\"ticker\":{\"id\":\"2171\"}},\"id\":\"2170\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2167\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2175\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2174\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2198\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2171\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2202\",\"type\":\"UnionRenderers\"}],\"root_ids\":[\"2224\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"d7750bf3-d380-4b08-913a-5f90e655575b\",\"root_ids\":[\"2224\"],\"roots\":{\"2224\":\"8f33d28f-1834-4c11-b1d0-729e46e2673e\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2224" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp2_Radial_Distribution_Function_4" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_ligand.run.RadialDistributionFunction(\n", + " number_of_configurations=5200, start=0, stop=5100, number_of_bins=500, molecules=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9a020f11", + "metadata": {}, + "source": [ + "### Diffusion Coeffients\n", + "\n", + "Finally, let's start looking at the diffusion coefficients of the atoms and molecules." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ffaf74c3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:47:26,425 - INFO: starting Einstein Diffusion Computation\n", + "2022-01-31 10:47:26,428 - INFO: starting Einstein Diffusion Computation\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "O: 100%|████████████████████████████████| 1/1 [00:09<00:00, 9.84s/it]\n", + "H: 100%|████████████████████████████████| 1/1 [00:12<00:00, 12.56s/it]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"2379\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"2379\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"2379\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"2379\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"d2fc3317-a9e2-4f49-9076-36974554c36e\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2510\"},{\"id\":\"2508\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"2511\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"2439\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2390\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2481\"}]},\"id\":\"2480\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2472\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"2455\"}},\"id\":\"2451\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2394\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2473\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2412\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2454\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"$\\\\text{MSD}$ / $m^{2}$\",\"coordinates\":null,\"formatter\":{\"id\":\"2472\"},\"group\":null,\"major_label_policy\":{\"id\":\"2473\"},\"ticker\":{\"id\":\"2446\"}},\"id\":\"2445\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2413\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"$\\\\text{MSD}$ / $m^{2}$\",\"coordinates\":null,\"formatter\":{\"id\":\"2420\"},\"group\":null,\"major_label_policy\":{\"id\":\"2421\"},\"ticker\":{\"id\":\"2394\"}},\"id\":\"2393\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2425\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2414\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2475\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2421\",\"type\":\"AllLabels\"},{\"attributes\":{\"toolbar\":{\"id\":\"2509\"},\"toolbar_location\":\"above\"},\"id\":\"2510\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"2385\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2423\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"2397\"},{\"id\":\"2398\"},{\"id\":\"2399\"},{\"id\":\"2400\"},{\"id\":\"2401\"},{\"id\":\"2402\"},{\"id\":\"2430\"}]},\"id\":\"2404\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2381\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"O: 4.108E-03 +- 6.693E-06\"},\"renderers\":[{\"id\":\"2415\"}]},\"id\":\"2429\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Time}$ / $s$\",\"coordinates\":null,\"formatter\":{\"id\":\"2423\"},\"group\":null,\"major_label_policy\":{\"id\":\"2424\"},\"ticker\":{\"id\":\"2390\"}},\"id\":\"2389\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2476\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"2393\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2396\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2452\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2417\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2398\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2387\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2401\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null},\"id\":\"2430\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"2453\",\"type\":\"ResetTool\"},{\"attributes\":{\"source\":{\"id\":\"2411\"}},\"id\":\"2416\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2383\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2420\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"2389\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2392\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"2478\"},\"selection_policy\":{\"id\":\"2477\"}},\"id\":\"2463\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2426\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2424\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2450\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2429\"}]},\"id\":\"2428\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2477\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2478\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"2449\"},{\"id\":\"2450\"},{\"id\":\"2451\"},{\"id\":\"2452\"},{\"id\":\"2453\"},{\"id\":\"2454\"},{\"id\":\"2482\"}]},\"id\":\"2456\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2442\",\"type\":\"BasicTicker\"},{\"attributes\":{\"toolbars\":[{\"id\":\"2404\"},{\"id\":\"2456\"}],\"tools\":[{\"id\":\"2397\"},{\"id\":\"2398\"},{\"id\":\"2399\"},{\"id\":\"2400\"},{\"id\":\"2401\"},{\"id\":\"2402\"},{\"id\":\"2430\"},{\"id\":\"2449\"},{\"id\":\"2450\"},{\"id\":\"2451\"},{\"id\":\"2452\"},{\"id\":\"2453\"},{\"id\":\"2454\"},{\"id\":\"2482\"}]},\"id\":\"2509\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"2449\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"2389\"}],\"center\":[{\"id\":\"2392\"},{\"id\":\"2396\"},{\"id\":\"2428\"}],\"left\":[{\"id\":\"2393\"}],\"renderers\":[{\"id\":\"2415\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"2417\"},\"toolbar\":{\"id\":\"2404\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2381\"},\"x_scale\":{\"id\":\"2385\"},\"y_range\":{\"id\":\"2383\"},\"y_scale\":{\"id\":\"2387\"}},\"id\":\"2380\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2411\"},\"glyph\":{\"id\":\"2412\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2414\"},\"nonselection_glyph\":{\"id\":\"2413\"},\"view\":{\"id\":\"2416\"}},\"id\":\"2415\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Time}$ / $s$\",\"coordinates\":null,\"formatter\":{\"id\":\"2475\"},\"group\":null,\"major_label_policy\":{\"id\":\"2476\"},\"ticker\":{\"id\":\"2442\"}},\"id\":\"2441\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"2426\"},\"selection_policy\":{\"id\":\"2425\"}},\"id\":\"2411\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"children\":[[{\"id\":\"2380\"},0,0],[{\"id\":\"2432\"},0,1]]},\"id\":\"2508\",\"type\":\"GridBox\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2403\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2446\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2400\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2469\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"2403\"}},\"id\":\"2399\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"2482\",\"type\":\"HoverTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2466\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2433\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"2463\"}},\"id\":\"2468\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"2445\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2448\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2464\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2463\"},\"glyph\":{\"id\":\"2464\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2466\"},\"nonselection_glyph\":{\"id\":\"2465\"},\"view\":{\"id\":\"2468\"}},\"id\":\"2467\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"2441\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2444\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2397\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2402\",\"type\":\"HelpTool\"},{\"attributes\":{\"below\":[{\"id\":\"2441\"}],\"center\":[{\"id\":\"2444\"},{\"id\":\"2448\"},{\"id\":\"2480\"}],\"left\":[{\"id\":\"2445\"}],\"renderers\":[{\"id\":\"2467\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"2469\"},\"toolbar\":{\"id\":\"2456\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2433\"},\"x_scale\":{\"id\":\"2437\"},\"y_range\":{\"id\":\"2435\"},\"y_scale\":{\"id\":\"2439\"}},\"id\":\"2432\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2455\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2435\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"H: 5.055E-03 +- 4.566E-06\"},\"renderers\":[{\"id\":\"2467\"}]},\"id\":\"2481\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2465\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2437\",\"type\":\"LinearScale\"}],\"root_ids\":[\"2511\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"d2fc3317-a9e2-4f49-9076-36974554c36e\",\"root_ids\":[\"2511\"],\"roots\":{\"2511\":\"98449846-cb52-4467-8f98-017dacff186c\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2511" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Einstein Self-Diffusion Coefficients_5" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.EinsteinDiffusionCoefficients(data_range=500)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "662a10e2", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:47:49,452 - INFO: starting Einstein Diffusion Computation\n", + "2022-01-31 10:47:49,453 - INFO: starting Einstein Diffusion Computation\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "water: 100%|████████████████████████████| 1/1 [00:09<00:00, 9.71s/it]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"2743\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"2743\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"2743\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"2743\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"91ca25ee-f6b6-4782-802e-440e98f0127f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2810\"},{\"id\":\"2808\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"2811\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"2765\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2762\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2777\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2778\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"2761\"},{\"id\":\"2762\"},{\"id\":\"2763\"},{\"id\":\"2764\"},{\"id\":\"2765\"},{\"id\":\"2766\"},{\"id\":\"2794\"}]},\"id\":\"2768\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2789\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"toolbars\":[{\"id\":\"2768\"}],\"tools\":[{\"id\":\"2761\"},{\"id\":\"2762\"},{\"id\":\"2763\"},{\"id\":\"2764\"},{\"id\":\"2765\"},{\"id\":\"2766\"},{\"id\":\"2794\"}]},\"id\":\"2809\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2776\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2790\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"water: 4.341E-03 +- 7.101E-06\"},\"renderers\":[{\"id\":\"2779\"}]},\"id\":\"2793\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2758\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2749\",\"type\":\"LinearScale\"},{\"attributes\":{\"children\":[[{\"id\":\"2744\"},0,0]]},\"id\":\"2808\",\"type\":\"GridBox\"},{\"attributes\":{\"axis\":{\"id\":\"2757\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2760\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"2790\"},\"selection_policy\":{\"id\":\"2789\"}},\"id\":\"2775\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"2753\"}],\"center\":[{\"id\":\"2756\"},{\"id\":\"2760\"},{\"id\":\"2792\"}],\"left\":[{\"id\":\"2757\"}],\"renderers\":[{\"id\":\"2779\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"2781\"},\"toolbar\":{\"id\":\"2768\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2745\"},\"x_scale\":{\"id\":\"2749\"},\"y_range\":{\"id\":\"2747\"},\"y_scale\":{\"id\":\"2751\"}},\"id\":\"2744\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2787\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2761\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2767\"}},\"id\":\"2763\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2747\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"$\\\\text{MSD}$ / $m^{2}$\",\"coordinates\":null,\"formatter\":{\"id\":\"2784\"},\"group\":null,\"major_label_policy\":{\"id\":\"2785\"},\"ticker\":{\"id\":\"2758\"}},\"id\":\"2757\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2788\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2766\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2745\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2775\"},\"glyph\":{\"id\":\"2776\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2778\"},\"nonselection_glyph\":{\"id\":\"2777\"},\"view\":{\"id\":\"2780\"}},\"id\":\"2779\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2751\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2785\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2764\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2767\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"toolbar\":{\"id\":\"2809\"},\"toolbar_location\":\"above\"},\"id\":\"2810\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2781\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"2794\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"2784\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Time}$ / $s$\",\"coordinates\":null,\"formatter\":{\"id\":\"2787\"},\"group\":null,\"major_label_policy\":{\"id\":\"2788\"},\"ticker\":{\"id\":\"2754\"}},\"id\":\"2753\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"2753\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2756\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2793\"}]},\"id\":\"2792\",\"type\":\"Legend\"},{\"attributes\":{\"source\":{\"id\":\"2775\"}},\"id\":\"2780\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2754\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"2811\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"91ca25ee-f6b6-4782-802e-440e98f0127f\",\"root_ids\":[\"2811\"],\"roots\":{\"2811\":\"81661e6e-f7c3-4ca2-8d89-04bbc91d5d92\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2811" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Einstein Self-Diffusion Coefficients_6" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.EinsteinDiffusionCoefficients(molecules=True, data_range=500)" + ] + }, + { + "cell_type": "markdown", + "id": "ff0301e3", + "metadata": {}, + "source": [ + "### Group-wise analysis\n", + "\n", + "Say we want to study a specific molecule. We only want the diffusion coefficients, ADFs, and RDFs of the atoms in that one molecule. This can be achieved with the MDSuite atom-selection command and is included here as a demonstration of the flexibility of the software.\n", + "\n", + "First things first, let's select a molecule group to study, say the first water molecule." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "214b0f33", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'H': [0, 1], 'O': [0]}\n" + ] + } + ], + "source": [ + "water_group = water_chemical.molecules['water']['groups']['0']\n", + "print(water_group)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "97206db4", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running mini batch loop 1 / 1: 100%|████| 1/1 [00:00<00:00, 4.04it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"2999\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"2999\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"2999\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"2999\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"96d52627-370d-413d-9e89-7e069c02c737\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"3194\"},{\"id\":\"3192\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"3195\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"3003\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3014\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"3009\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3012\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3005\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"3023\"}},\"id\":\"3019\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3095\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3145\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3033\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3096\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3148\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3147\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3150\",\"type\":\"Selection\"},{\"attributes\":{\"toolbar\":{\"id\":\"3193\"},\"toolbar_location\":\"above\"},\"id\":\"3194\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"3149\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3075\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3097\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3007\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3001\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"3031\"}},\"id\":\"3036\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3018\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3031\"},\"glyph\":{\"id\":\"3032\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3034\"},\"nonselection_glyph\":{\"id\":\"3033\"},\"view\":{\"id\":\"3036\"}},\"id\":\"3035\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3032\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3093\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3144\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3034\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3022\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3089\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3020\",\"type\":\"SaveTool\"},{\"attributes\":{\"below\":[{\"id\":\"3009\"}],\"center\":[{\"id\":\"3012\"},{\"id\":\"3016\"},{\"id\":\"3048\"}],\"left\":[{\"id\":\"3013\"}],\"renderers\":[{\"id\":\"3035\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3037\"},\"toolbar\":{\"id\":\"3024\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3001\"},\"x_scale\":{\"id\":\"3005\"},\"y_range\":{\"id\":\"3003\"},\"y_scale\":{\"id\":\"3007\"}},\"id\":\"3000\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3043\"},\"group\":null,\"major_label_policy\":{\"id\":\"3044\"},\"ticker\":{\"id\":\"3010\"}},\"id\":\"3009\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3098\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3021\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"3013\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3016\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3092\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"3050\",\"type\":\"HoverTool\"},{\"attributes\":{\"tools\":[{\"id\":\"3017\"},{\"id\":\"3018\"},{\"id\":\"3019\"},{\"id\":\"3020\"},{\"id\":\"3021\"},{\"id\":\"3022\"},{\"id\":\"3050\"}]},\"id\":\"3024\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3010\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3017\",\"type\":\"PanTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]}},\"selected\":{\"id\":\"3098\"},\"selection_policy\":{\"id\":\"3097\"}},\"id\":\"3083\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3040\"},\"group\":null,\"major_label_policy\":{\"id\":\"3041\"},\"ticker\":{\"id\":\"3014\"}},\"id\":\"3013\",\"type\":\"LinearAxis\"},{\"attributes\":{\"tools\":[{\"id\":\"3121\"},{\"id\":\"3122\"},{\"id\":\"3123\"},{\"id\":\"3124\"},{\"id\":\"3125\"},{\"id\":\"3126\"},{\"id\":\"3154\"}]},\"id\":\"3128\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3135\"},\"glyph\":{\"id\":\"3136\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3138\"},\"nonselection_glyph\":{\"id\":\"3137\"},\"view\":{\"id\":\"3140\"}},\"id\":\"3139\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"3117\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3120\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3062\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"3075\"}},\"id\":\"3071\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]}},\"selected\":{\"id\":\"3046\"},\"selection_policy\":{\"id\":\"3045\"}},\"id\":\"3031\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3121\",\"type\":\"PanTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3092\"},\"group\":null,\"major_label_policy\":{\"id\":\"3093\"},\"ticker\":{\"id\":\"3066\"}},\"id\":\"3065\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3023\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3101\"}]},\"id\":\"3100\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3046\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3053\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3085\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3147\"},\"group\":null,\"major_label_policy\":{\"id\":\"3148\"},\"ticker\":{\"id\":\"3114\"}},\"id\":\"3113\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3144\"},\"group\":null,\"major_label_policy\":{\"id\":\"3145\"},\"ticker\":{\"id\":\"3118\"}},\"id\":\"3117\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3040\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3074\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"3069\"},{\"id\":\"3070\"},{\"id\":\"3071\"},{\"id\":\"3072\"},{\"id\":\"3073\"},{\"id\":\"3074\"},{\"id\":\"3102\"}]},\"id\":\"3076\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3141\",\"type\":\"Title\"},{\"attributes\":{\"children\":[[{\"id\":\"3000\"},0,0],[{\"id\":\"3052\"},0,1],[{\"id\":\"3104\"},0,2]]},\"id\":\"3192\",\"type\":\"GridBox\"},{\"attributes\":{},\"id\":\"3072\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"3154\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"3125\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3066\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3114\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3041\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3070\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3086\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"O_H\"},\"renderers\":[{\"id\":\"3087\"}]},\"id\":\"3101\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"H_H\"},\"renderers\":[{\"id\":\"3139\"}]},\"id\":\"3153\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"3124\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3044\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3137\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3037\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3107\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3084\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3127\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3069\",\"type\":\"PanTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3136\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"3083\"}},\"id\":\"3088\",\"type\":\"CDSView\"},{\"attributes\":{\"below\":[{\"id\":\"3113\"}],\"center\":[{\"id\":\"3116\"},{\"id\":\"3120\"},{\"id\":\"3152\"}],\"left\":[{\"id\":\"3117\"}],\"renderers\":[{\"id\":\"3139\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3141\"},\"toolbar\":{\"id\":\"3128\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3105\"},\"x_scale\":{\"id\":\"3109\"},\"y_range\":{\"id\":\"3107\"},\"y_scale\":{\"id\":\"3111\"}},\"id\":\"3104\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"3102\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"3045\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"toolbars\":[{\"id\":\"3024\"},{\"id\":\"3076\"},{\"id\":\"3128\"}],\"tools\":[{\"id\":\"3017\"},{\"id\":\"3018\"},{\"id\":\"3019\"},{\"id\":\"3020\"},{\"id\":\"3021\"},{\"id\":\"3022\"},{\"id\":\"3050\"},{\"id\":\"3069\"},{\"id\":\"3070\"},{\"id\":\"3071\"},{\"id\":\"3072\"},{\"id\":\"3073\"},{\"id\":\"3074\"},{\"id\":\"3102\"},{\"id\":\"3121\"},{\"id\":\"3122\"},{\"id\":\"3123\"},{\"id\":\"3124\"},{\"id\":\"3125\"},{\"id\":\"3126\"},{\"id\":\"3154\"}]},\"id\":\"3193\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[921]}},\"selected\":{\"id\":\"3150\"},\"selection_policy\":{\"id\":\"3149\"}},\"id\":\"3135\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"3113\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3116\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3153\"}]},\"id\":\"3152\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3073\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3126\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3049\"}]},\"id\":\"3048\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3055\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"3095\"},\"group\":null,\"major_label_policy\":{\"id\":\"3096\"},\"ticker\":{\"id\":\"3062\"}},\"id\":\"3061\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"3127\"}},\"id\":\"3123\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"3061\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3064\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"O_O\"},\"renderers\":[{\"id\":\"3035\"}]},\"id\":\"3049\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"3135\"}},\"id\":\"3140\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3083\"},\"glyph\":{\"id\":\"3084\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3086\"},\"nonselection_glyph\":{\"id\":\"3085\"},\"view\":{\"id\":\"3088\"}},\"id\":\"3087\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3122\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3057\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3118\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3105\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"3065\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3068\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"3061\"}],\"center\":[{\"id\":\"3064\"},{\"id\":\"3068\"},{\"id\":\"3100\"}],\"left\":[{\"id\":\"3065\"}],\"renderers\":[{\"id\":\"3087\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3089\"},\"toolbar\":{\"id\":\"3076\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3053\"},\"x_scale\":{\"id\":\"3057\"},\"y_range\":{\"id\":\"3055\"},\"y_scale\":{\"id\":\"3059\"}},\"id\":\"3052\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3059\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3111\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3109\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3138\",\"type\":\"Line\"}],\"root_ids\":[\"3195\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"96d52627-370d-413d-9e89-7e069c02c737\",\"root_ids\":[\"3195\"],\"roots\":{\"3195\":\"edd05587-ffa2-4cb4-a6e9-03ace7d016f8\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "3195" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Radial_Distribution_Function_7" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.RadialDistributionFunction(atom_selection={'H': [0, 1], 'O': [0]}, number_of_configurations=2517)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6187526", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 10.40it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"3526\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"3526\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"3526\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"3526\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"417006a9-2e75-4105-b9de-3263a776b04a\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"3785\"},{\"id\":\"3783\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"3786\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"3723\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"3648\"},{\"id\":\"3649\"},{\"id\":\"3650\"},{\"id\":\"3651\"},{\"id\":\"3652\"},{\"id\":\"3653\"},{\"id\":\"3681\"}]},\"id\":\"3655\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3724\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3596\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"3619\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3654\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3726\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3599\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3675\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3625\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null},\"id\":\"3577\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"3649\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3727\",\"type\":\"AllLabels\"},{\"attributes\":{\"overlay\":{\"id\":\"3602\"}},\"id\":\"3598\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"3640\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3643\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3671\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3662\"},\"glyph\":{\"id\":\"3663\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3665\"},\"nonselection_glyph\":{\"id\":\"3664\"},\"view\":{\"id\":\"3667\"}},\"id\":\"3666\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3672\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3652\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3611\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3729\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3576\"}]},\"id\":\"3575\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3728\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3602\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3623\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3612\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3674\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3651\",\"type\":\"SaveTool\"},{\"attributes\":{\"tools\":[{\"id\":\"3596\"},{\"id\":\"3597\"},{\"id\":\"3598\"},{\"id\":\"3599\"},{\"id\":\"3600\"},{\"id\":\"3601\"},{\"id\":\"3629\"}]},\"id\":\"3603\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3648\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3561\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3600\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3613\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3676\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3645\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3677\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"O_O_H - Max: 0.000 degrees \"},\"renderers\":[{\"id\":\"3614\"}]},\"id\":\"3628\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"3653\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"O_H_H - Max: 109.591 degrees \"},\"renderers\":[{\"id\":\"3666\"}]},\"id\":\"3680\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"3601\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABSXL2b4SXXP1JcvZvhJec/PgXONGlc8T9SXL2b4SX3P2azrAJa7/w/PgXONGlcAUDIsEVoJUEEQFJcvZvhJQdA3Ac1z50KCkBms6wCWu8MQPFeJDYW1A9APgXONGlcEUAD24lOx84SQMiwRWglQRRAjYYBgoOzFUBSXL2b4SUXQBcyebU/mBhA3Ac1z50KGkCh3fDo+3wbQGazrAJa7xxALIloHLhhHkDxXiQ2FtQfQFsa8Cc6oyBAPgXONGlcIUAg8KtBmBUiQAPbiU7HziJA5cVnW/aHI0DIsEVoJUEkQKqbI3VU+iRAjYYBgoOzJUBvcd+OsmwmQFJcvZvhJSdANUebqBDfJ0AXMnm1P5goQPocV8JuUSlA3Ac1z50KKkC/8hLczMMqQKHd8Oj7fCtAhMjO9So2LEBms6wCWu8sQEmeig+JqC1ALIloHLhhLkAOdEYp5xovQPFeJDYW1C9A6iSBoaJGMEBbGvAnOqMwQMwPX67R/zBAPgXONGlcMUCv+jy7ALkxQCDwq0GYFTJAkeUayC9yMkAD24lOx84yQHTQ+NReKzNA5cVnW/aHM0BWu9bhjeQzQMiwRWglQTRAOaa07rydNECqmyN1VPo0QByRkvvrVjVAjYYBgoOzNUD+e3AIGxA2QG9x346ybDZA4WZOFUrJNkBSXL2b4SU3QMNRLCJ5gjdANUebqBDfN0CmPAovqDs4QBcyebU/mDhAiCfoO9f0OED6HFfCblE5QGsSxkgGrjlA3Ac1z50KOkBO/aNVNWc6QL/yEtzMwzpAMOiBYmQgO0Ch3fDo+3w7QBPTX2+T2TtAhMjO9So2PED1vT18wpI8QGazrAJa7zxA2KgbifFLPUBJnooPiag9QLqT+ZUgBT5ALIloHLhhPkCdfteiT74+QA50RinnGj9Af2m1r353P0DxXiQ2FtQ/QDGqSd5WGEBA6iSBoaJGQECin7hk7nRAQFsa8Cc6o0BAFJUn64XRQEDMD1+u0f9AQIWKlnEdLkFAPgXONGlcQUD2fwX4tIpBQK/6PLsAuUFAZ3V0fkznQUAg8KtBmBVCQNlq4wTkQ0JAkeUayC9yQkBKYFKLe6BCQAPbiU7HzkJAu1XBERP9QkB00PjUXitDQC1LMJiqWUNA5cVnW/aHQ0CeQJ8eQrZDQFa71uGN5ENADzYOpdkSREDIsEVoJUFEQIArfStxb0RAOaa07rydREDyIOyxCMxEQKqbI3VU+kRAYxZbOKAoRUAckZL761ZFQNQLyr43hUVAjYYBgoOzRUBGATlFz+FFQP57cAgbEEZAt/any2Y+RkBvcd+OsmxGQCjsFlL+mkZA4WZOFUrJRkCZ4YXYlfdGQFJcvZvhJUdAC9f0Xi1UR0DDUSwieYJHQHzMY+XEsEdANUebqBDfR0DtwdJrXA1IQKY8Ci+oO0hAXrdB8vNpSEAXMnm1P5hIQNCssHiLxkhAiCfoO9f0SEBBoh//IiNJQPocV8JuUUlAspeOhbp/SUBrEsZIBq5JQCSN/QtS3ElA3Ac1z50KSkCVgmyS6ThKQE79o1U1Z0pABnjbGIGVSkC/8hLczMNKQHdtSp8Y8kpAMOiBYmQgS0DpYrklsE5LQKHd8Oj7fEtAWlgorEerS0AT019vk9lLQMtNlzLfB0xAhMjO9So2TEA9Qwa5dmRMQPW9PXzCkkxArjh1Pw7BTEBms6wCWu9MQB8u5MWlHU1A2KgbifFLTUCQI1NMPXpNQEmeig+JqE1AAhnC0tTWTUC6k/mVIAVOQHMOMVlsM05ALIloHLhhTkDkA6DfA5BOQJ1+16JPvk5AVvkOZpvsTkAOdEYp5xpPQMfufewySU9Af2m1r353T0A45OxyyqVPQPFeJDYW1E9A1eyt/DABUEAxqkneVhhQQI1n5b98L1BA6iSBoaJGUEBG4hyDyF1QQKKfuGTudFBA/1xURhSMUEBbGvAnOqNQQLfXiwlgulBAFJUn64XRUEBwUsPMq+hQQMwPX67R/1BAKc36j/cWUUCFipZxHS5RQOFHMlNDRVFAPgXONGlcUUCawmkWj3NRQPZ/Bfi0ilFAUj2h2dqhUUCv+jy7ALlRQAu42Jwm0FFAZ3V0fkznUUDEMhBgcv5RQCDwq0GYFVJAfK1HI74sUkDZauME5ENSQDUof+YJW1JAkeUayC9yUkDuorapVYlSQEpgUot7oFJAph3ubKG3UkAD24lOx85SQF+YJTDt5VJAu1XBERP9UkAYE13zOBRTQHTQ+NReK1NA0I2UtoRCU0AtSzCYqllTQIkIzHnQcFNA5cVnW/aHU0BCgwM9HJ9TQJ5Anx5CtlNA+v06AGjNU0BWu9bhjeRTQLN4csOz+1NADzYOpdkSVEBr86mG/ylUQMiwRWglQVRAJG7hSUtYVECAK30rcW9UQN3oGA2XhlRAOaa07rydVECVY1DQ4rRUQPIg7LEIzFRATt6Hky7jVECqmyN1VPpUQAdZv1Z6EVVAYxZbOKAoVUC/0/YZxj9VQByRkvvrVlVAeE4u3RFuVUDUC8q+N4VVQDHJZaBdnFVAjYYBgoOzVUDpQ51jqcpVQEYBOUXP4VVAor7UJvX4VUD+e3AIGxBWQFo5DOpAJ1ZAt/any2Y+VkATtEOtjFVWQG9x346ybFZAzC57cNiDVkAo7BZS/ppWQISpsjMkslZA4WZOFUrJVkA9JOr2b+BWQJnhhdiV91ZA9p4hursOV0BSXL2b4SVXQK4ZWX0HPVdAC9f0Xi1UV0BnlJBAU2tXQMNRLCJ5gldAIA/IA5+ZV0B8zGPlxLBXQNiJ/8bqx1dANUebqBDfV0CRBDeKNvZXQO3B0mtcDVhASn9uTYIkWECmPAovqDtYQAL6pRDOUlhAXrdB8vNpWEC7dN3TGYFYQBcyebU/mFhAc+8Ul2WvWEDQrLB4i8ZYQCxqTFqx3VhAiCfoO9f0WEDl5IMd/QtZQEGiH/8iI1lAnV+74Eg6WUD6HFfCblFZQFba8qOUaFlAspeOhbp/WUAPVSpn4JZZQGsSxkgGrllAx89hKizFWUAkjf0LUtxZQIBKme1381lA3Ac1z50KWkA5xdCwwyFaQJWCbJLpOFpA8T8IdA9QWkBO/aNVNWdaQKq6PzdbflpABnjbGIGVWkBiNXf6pqxaQL/yEtzMw1pAG7CuvfLaWkB3bUqfGPJaQNQq5oA+CVtAMOiBYmQgW0CMpR1EijdbQOliuSWwTltARSBVB9ZlW0Ch3fDo+3xbQP6ajMohlFtAWlgorEerW0C2FcSNbcJbQBPTX2+T2VtAb5D7ULnwW0DLTZcy3wdcQCgLMxQFH1xAhMjO9So2XEDghWrXUE1cQD1DBrl2ZFxAmQCimpx7XED1vT18wpJcQFJ72V3oqVxArjh1Pw7BXEAK9hAhNNhcQGazrAJa71xAw3BI5H8GXUAfLuTFpR1dQHvrf6fLNF1A2KgbifFLXUA0ZrdqF2NdQJAjU0w9el1A7eDuLWORXUBJnooPiahdQKVbJvGuv11AAhnC0tTWXUBe1l20+u1dQLqT+ZUgBV5AF1GVd0YcXkBzDjFZbDNeQM/LzDqSSl5ALIloHLhhXkCIRgT+3XheQOQDoN8DkF5AQcE7wSmnXkCdfteiT75eQPk7c4R11V5AVvkOZpvsXkCytqpHwQNfQA50RinnGl9AazHiCg0yX0DH7n3sMklfQCOsGc5YYF9Af2m1r353X0DcJlGRpI5fQDjk7HLKpV9AlKGIVPC8X0DxXiQ2FtRfQE0cwBc8619A1eyt/DABYECDy3vtwwxgQDGqSd5WGGBA34gXz+kjYECNZ+W/fC9gQDtGs7APO2BA6iSBoaJGYECYA0+SNVJgQEbiHIPIXWBA9MDqc1tpYECin7hk7nRgQFB+hlWBgGBA/1xURhSMYECtOyI3p5dgQFsa8Cc6o2BACfm9GM2uYEC314sJYLpgQGW2WfryxWBAFJUn64XRYEDCc/XbGN1gQHBSw8yr6GBAHjGRvT70YEDMD1+u0f9gQHruLJ9kC2FAKc36j/cWYUDXq8iAiiJhQIWKlnEdLmFAM2lkYrA5YUDhRzJTQ0VhQI8mAETWUGFAPgXONGlcYUDs45sl/GdhQJrCaRaPc2FASKE3ByJ/YUD2fwX4tIphQKRe0+hHlmFAUj2h2dqhYUABHG/Kba1hQK/6PLsAuWFAXdkKrJPEYUALuNicJtBhQLmWpo2522FAZ3V0fkznYUAWVEJv3/JhQMQyEGBy/mFAchHeUAUKYkAg8KtBmBViQM7OeTIrIWJAfK1HI74sYkArjBUUUThiQNlq4wTkQ2JAh0mx9XZPYkA1KH/mCVtiQOMGTdecZmJAkeUayC9yYkBAxOi4wn1iQO6itqlViWJAnIGEmuiUYkBKYFKLe6BiQPg+IHwOrGJAph3ubKG3YkBU/LtdNMNiQAPbiU7HzmJAsblXP1raYkBfmCUw7eViQA138yCA8WJAu1XBERP9YkBpNI8CpghjQBgTXfM4FGNAxvEq5MsfY0B00PjUXitjQCKvxsXxNmNA0I2UtoRCY0B+bGKnF05jQC1LMJiqWWNA2yn+iD1lY0CJCMx50HBjQDfnmWpjfGNA5cVnW/aHY0CTpDVMiZNjQEKDAz0cn2NA8GHRLa+qY0CeQJ8eQrZjQEwfbQ/VwWNA+v06AGjNY0Co3Ajx+thjQFa71uGN5GNABZqk0iDwY0CzeHLDs/tjQGFXQLRGB2RADzYOpdkSZEC9FNyVbB5kQGvzqYb/KWRAGtJ3d5I1ZEDIsEVoJUFkQHaPE1m4TGRAJG7hSUtYZEDSTK863mNkQIArfStxb2RALwpLHAR7ZEDd6BgNl4ZkQIvH5v0pkmRAOaa07rydZEDnhILfT6lkQJVjUNDitGRAREIewXXAZEDyIOyxCMxkQKD/uaKb12RATt6Hky7jZED8vFWEwe5kQKqbI3VU+mRAWHrxZecFZUAHWb9WehFlQLU3jUcNHWVAYxZbOKAoZUAR9SgpMzRlQL/T9hnGP2VAbbLECllLZUAckZL761ZlQMpvYOx+YmVAeE4u3RFuZUAmLfzNpHllQNQLyr43hWVAguqXr8qQZUAxyWWgXZxlQN+nM5Hwp2VAjYYBgoOzZUA7Zc9yFr9lQOlDnWOpymVAlyJrVDzWZUBGATlFz+FlQPTfBjZi7WVAor7UJvX4ZUBQnaIXiARmQP57cAgbEGZArFo++a0bZkBaOQzqQCdmQAkY2trTMmZAt/any2Y+ZkBl1XW8+UlmQBO0Q62MVWZAwZIRnh9hZkBvcd+OsmxmQB5QrX9FeGZAzC57cNiDZkB6DUlha49mQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKjYCEAAAAAA/tMyQAAAAEAL1kZAAAAAAPEIR0AAAACA3h9EQAAAAKDIOBNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"3677\"},\"selection_policy\":{\"id\":\"3676\"}},\"id\":\"3662\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"3671\"},\"group\":null,\"major_label_policy\":{\"id\":\"3672\"},\"ticker\":{\"id\":\"3645\"}},\"id\":\"3644\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3663\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"3640\"}],\"center\":[{\"id\":\"3643\"},{\"id\":\"3647\"},{\"id\":\"3679\"}],\"left\":[{\"id\":\"3644\"}],\"renderers\":[{\"id\":\"3666\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3668\"},\"toolbar\":{\"id\":\"3655\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3632\"},\"x_scale\":{\"id\":\"3636\"},\"y_range\":{\"id\":\"3634\"},\"y_scale\":{\"id\":\"3638\"}},\"id\":\"3631\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"3654\"}},\"id\":\"3650\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3634\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3622\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3624\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"3674\"},\"group\":null,\"major_label_policy\":{\"id\":\"3675\"},\"ticker\":{\"id\":\"3641\"}},\"id\":\"3640\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"3558\"}},\"id\":\"3563\",\"type\":\"CDSView\"},{\"attributes\":{\"below\":[{\"id\":\"3536\"}],\"center\":[{\"id\":\"3539\"},{\"id\":\"3543\"},{\"id\":\"3575\"}],\"left\":[{\"id\":\"3540\"}],\"renderers\":[{\"id\":\"3562\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3564\"},\"toolbar\":{\"id\":\"3551\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3528\"},\"x_scale\":{\"id\":\"3532\"},\"y_range\":{\"id\":\"3530\"},\"y_scale\":{\"id\":\"3534\"}},\"id\":\"3527\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAABSXL2b4SXXP1JcvZvhJec/PgXONGlc8T9SXL2b4SX3P2azrAJa7/w/PgXONGlcAUDIsEVoJUEEQFJcvZvhJQdA3Ac1z50KCkBms6wCWu8MQPFeJDYW1A9APgXONGlcEUAD24lOx84SQMiwRWglQRRAjYYBgoOzFUBSXL2b4SUXQBcyebU/mBhA3Ac1z50KGkCh3fDo+3wbQGazrAJa7xxALIloHLhhHkDxXiQ2FtQfQFsa8Cc6oyBAPgXONGlcIUAg8KtBmBUiQAPbiU7HziJA5cVnW/aHI0DIsEVoJUEkQKqbI3VU+iRAjYYBgoOzJUBvcd+OsmwmQFJcvZvhJSdANUebqBDfJ0AXMnm1P5goQPocV8JuUSlA3Ac1z50KKkC/8hLczMMqQKHd8Oj7fCtAhMjO9So2LEBms6wCWu8sQEmeig+JqC1ALIloHLhhLkAOdEYp5xovQPFeJDYW1C9A6iSBoaJGMEBbGvAnOqMwQMwPX67R/zBAPgXONGlcMUCv+jy7ALkxQCDwq0GYFTJAkeUayC9yMkAD24lOx84yQHTQ+NReKzNA5cVnW/aHM0BWu9bhjeQzQMiwRWglQTRAOaa07rydNECqmyN1VPo0QByRkvvrVjVAjYYBgoOzNUD+e3AIGxA2QG9x346ybDZA4WZOFUrJNkBSXL2b4SU3QMNRLCJ5gjdANUebqBDfN0CmPAovqDs4QBcyebU/mDhAiCfoO9f0OED6HFfCblE5QGsSxkgGrjlA3Ac1z50KOkBO/aNVNWc6QL/yEtzMwzpAMOiBYmQgO0Ch3fDo+3w7QBPTX2+T2TtAhMjO9So2PED1vT18wpI8QGazrAJa7zxA2KgbifFLPUBJnooPiag9QLqT+ZUgBT5ALIloHLhhPkCdfteiT74+QA50RinnGj9Af2m1r353P0DxXiQ2FtQ/QDGqSd5WGEBA6iSBoaJGQECin7hk7nRAQFsa8Cc6o0BAFJUn64XRQEDMD1+u0f9AQIWKlnEdLkFAPgXONGlcQUD2fwX4tIpBQK/6PLsAuUFAZ3V0fkznQUAg8KtBmBVCQNlq4wTkQ0JAkeUayC9yQkBKYFKLe6BCQAPbiU7HzkJAu1XBERP9QkB00PjUXitDQC1LMJiqWUNA5cVnW/aHQ0CeQJ8eQrZDQFa71uGN5ENADzYOpdkSREDIsEVoJUFEQIArfStxb0RAOaa07rydREDyIOyxCMxEQKqbI3VU+kRAYxZbOKAoRUAckZL761ZFQNQLyr43hUVAjYYBgoOzRUBGATlFz+FFQP57cAgbEEZAt/any2Y+RkBvcd+OsmxGQCjsFlL+mkZA4WZOFUrJRkCZ4YXYlfdGQFJcvZvhJUdAC9f0Xi1UR0DDUSwieYJHQHzMY+XEsEdANUebqBDfR0DtwdJrXA1IQKY8Ci+oO0hAXrdB8vNpSEAXMnm1P5hIQNCssHiLxkhAiCfoO9f0SEBBoh//IiNJQPocV8JuUUlAspeOhbp/SUBrEsZIBq5JQCSN/QtS3ElA3Ac1z50KSkCVgmyS6ThKQE79o1U1Z0pABnjbGIGVSkC/8hLczMNKQHdtSp8Y8kpAMOiBYmQgS0DpYrklsE5LQKHd8Oj7fEtAWlgorEerS0AT019vk9lLQMtNlzLfB0xAhMjO9So2TEA9Qwa5dmRMQPW9PXzCkkxArjh1Pw7BTEBms6wCWu9MQB8u5MWlHU1A2KgbifFLTUCQI1NMPXpNQEmeig+JqE1AAhnC0tTWTUC6k/mVIAVOQHMOMVlsM05ALIloHLhhTkDkA6DfA5BOQJ1+16JPvk5AVvkOZpvsTkAOdEYp5xpPQMfufewySU9Af2m1r353T0A45OxyyqVPQPFeJDYW1E9A1eyt/DABUEAxqkneVhhQQI1n5b98L1BA6iSBoaJGUEBG4hyDyF1QQKKfuGTudFBA/1xURhSMUEBbGvAnOqNQQLfXiwlgulBAFJUn64XRUEBwUsPMq+hQQMwPX67R/1BAKc36j/cWUUCFipZxHS5RQOFHMlNDRVFAPgXONGlcUUCawmkWj3NRQPZ/Bfi0ilFAUj2h2dqhUUCv+jy7ALlRQAu42Jwm0FFAZ3V0fkznUUDEMhBgcv5RQCDwq0GYFVJAfK1HI74sUkDZauME5ENSQDUof+YJW1JAkeUayC9yUkDuorapVYlSQEpgUot7oFJAph3ubKG3UkAD24lOx85SQF+YJTDt5VJAu1XBERP9UkAYE13zOBRTQHTQ+NReK1NA0I2UtoRCU0AtSzCYqllTQIkIzHnQcFNA5cVnW/aHU0BCgwM9HJ9TQJ5Anx5CtlNA+v06AGjNU0BWu9bhjeRTQLN4csOz+1NADzYOpdkSVEBr86mG/ylUQMiwRWglQVRAJG7hSUtYVECAK30rcW9UQN3oGA2XhlRAOaa07rydVECVY1DQ4rRUQPIg7LEIzFRATt6Hky7jVECqmyN1VPpUQAdZv1Z6EVVAYxZbOKAoVUC/0/YZxj9VQByRkvvrVlVAeE4u3RFuVUDUC8q+N4VVQDHJZaBdnFVAjYYBgoOzVUDpQ51jqcpVQEYBOUXP4VVAor7UJvX4VUD+e3AIGxBWQFo5DOpAJ1ZAt/any2Y+VkATtEOtjFVWQG9x346ybFZAzC57cNiDVkAo7BZS/ppWQISpsjMkslZA4WZOFUrJVkA9JOr2b+BWQJnhhdiV91ZA9p4hursOV0BSXL2b4SVXQK4ZWX0HPVdAC9f0Xi1UV0BnlJBAU2tXQMNRLCJ5gldAIA/IA5+ZV0B8zGPlxLBXQNiJ/8bqx1dANUebqBDfV0CRBDeKNvZXQO3B0mtcDVhASn9uTYIkWECmPAovqDtYQAL6pRDOUlhAXrdB8vNpWEC7dN3TGYFYQBcyebU/mFhAc+8Ul2WvWEDQrLB4i8ZYQCxqTFqx3VhAiCfoO9f0WEDl5IMd/QtZQEGiH/8iI1lAnV+74Eg6WUD6HFfCblFZQFba8qOUaFlAspeOhbp/WUAPVSpn4JZZQGsSxkgGrllAx89hKizFWUAkjf0LUtxZQIBKme1381lA3Ac1z50KWkA5xdCwwyFaQJWCbJLpOFpA8T8IdA9QWkBO/aNVNWdaQKq6PzdbflpABnjbGIGVWkBiNXf6pqxaQL/yEtzMw1pAG7CuvfLaWkB3bUqfGPJaQNQq5oA+CVtAMOiBYmQgW0CMpR1EijdbQOliuSWwTltARSBVB9ZlW0Ch3fDo+3xbQP6ajMohlFtAWlgorEerW0C2FcSNbcJbQBPTX2+T2VtAb5D7ULnwW0DLTZcy3wdcQCgLMxQFH1xAhMjO9So2XEDghWrXUE1cQD1DBrl2ZFxAmQCimpx7XED1vT18wpJcQFJ72V3oqVxArjh1Pw7BXEAK9hAhNNhcQGazrAJa71xAw3BI5H8GXUAfLuTFpR1dQHvrf6fLNF1A2KgbifFLXUA0ZrdqF2NdQJAjU0w9el1A7eDuLWORXUBJnooPiahdQKVbJvGuv11AAhnC0tTWXUBe1l20+u1dQLqT+ZUgBV5AF1GVd0YcXkBzDjFZbDNeQM/LzDqSSl5ALIloHLhhXkCIRgT+3XheQOQDoN8DkF5AQcE7wSmnXkCdfteiT75eQPk7c4R11V5AVvkOZpvsXkCytqpHwQNfQA50RinnGl9AazHiCg0yX0DH7n3sMklfQCOsGc5YYF9Af2m1r353X0DcJlGRpI5fQDjk7HLKpV9AlKGIVPC8X0DxXiQ2FtRfQE0cwBc8619A1eyt/DABYECDy3vtwwxgQDGqSd5WGGBA34gXz+kjYECNZ+W/fC9gQDtGs7APO2BA6iSBoaJGYECYA0+SNVJgQEbiHIPIXWBA9MDqc1tpYECin7hk7nRgQFB+hlWBgGBA/1xURhSMYECtOyI3p5dgQFsa8Cc6o2BACfm9GM2uYEC314sJYLpgQGW2WfryxWBAFJUn64XRYEDCc/XbGN1gQHBSw8yr6GBAHjGRvT70YEDMD1+u0f9gQHruLJ9kC2FAKc36j/cWYUDXq8iAiiJhQIWKlnEdLmFAM2lkYrA5YUDhRzJTQ0VhQI8mAETWUGFAPgXONGlcYUDs45sl/GdhQJrCaRaPc2FASKE3ByJ/YUD2fwX4tIphQKRe0+hHlmFAUj2h2dqhYUABHG/Kba1hQK/6PLsAuWFAXdkKrJPEYUALuNicJtBhQLmWpo2522FAZ3V0fkznYUAWVEJv3/JhQMQyEGBy/mFAchHeUAUKYkAg8KtBmBViQM7OeTIrIWJAfK1HI74sYkArjBUUUThiQNlq4wTkQ2JAh0mx9XZPYkA1KH/mCVtiQOMGTdecZmJAkeUayC9yYkBAxOi4wn1iQO6itqlViWJAnIGEmuiUYkBKYFKLe6BiQPg+IHwOrGJAph3ubKG3YkBU/LtdNMNiQAPbiU7HzmJAsblXP1raYkBfmCUw7eViQA138yCA8WJAu1XBERP9YkBpNI8CpghjQBgTXfM4FGNAxvEq5MsfY0B00PjUXitjQCKvxsXxNmNA0I2UtoRCY0B+bGKnF05jQC1LMJiqWWNA2yn+iD1lY0CJCMx50HBjQDfnmWpjfGNA5cVnW/aHY0CTpDVMiZNjQEKDAz0cn2NA8GHRLa+qY0CeQJ8eQrZjQEwfbQ/VwWNA+v06AGjNY0Co3Ajx+thjQFa71uGN5GNABZqk0iDwY0CzeHLDs/tjQGFXQLRGB2RADzYOpdkSZEC9FNyVbB5kQGvzqYb/KWRAGtJ3d5I1ZEDIsEVoJUFkQHaPE1m4TGRAJG7hSUtYZEDSTK863mNkQIArfStxb2RALwpLHAR7ZEDd6BgNl4ZkQIvH5v0pkmRAOaa07rydZEDnhILfT6lkQJVjUNDitGRAREIewXXAZEDyIOyxCMxkQKD/uaKb12RATt6Hky7jZED8vFWEwe5kQKqbI3VU+mRAWHrxZecFZUAHWb9WehFlQLU3jUcNHWVAYxZbOKAoZUAR9SgpMzRlQL/T9hnGP2VAbbLECllLZUAckZL761ZlQMpvYOx+YmVAeE4u3RFuZUAmLfzNpHllQNQLyr43hWVAguqXr8qQZUAxyWWgXZxlQN+nM5Hwp2VAjYYBgoOzZUA7Zc9yFr9lQOlDnWOpymVAlyJrVDzWZUBGATlFz+FlQPTfBjZi7WVAor7UJvX4ZUBQnaIXiARmQP57cAgbEGZArFo++a0bZkBaOQzqQCdmQAkY2trTMmZAt/any2Y+ZkBl1XW8+UlmQBO0Q62MVWZAwZIRnh9hZkBvcd+OsmxmQB5QrX9FeGZAzC57cNiDZkB6DUlha49mQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"3625\"},\"selection_policy\":{\"id\":\"3624\"}},\"id\":\"3610\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"3592\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3595\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3560\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"3610\"}},\"id\":\"3615\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3616\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3593\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3620\",\"type\":\"AllLabels\"},{\"attributes\":{\"children\":[[{\"id\":\"3527\"},0,0],[{\"id\":\"3579\"},0,1],[{\"id\":\"3631\"},0,2],[{\"id\":\"3683\"},1,0]]},\"id\":\"3783\",\"type\":\"GridBox\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3564\",\"type\":\"Title\"},{\"attributes\":{\"toolbars\":[{\"id\":\"3551\"},{\"id\":\"3603\"},{\"id\":\"3655\"},{\"id\":\"3707\"}],\"tools\":[{\"id\":\"3544\"},{\"id\":\"3545\"},{\"id\":\"3546\"},{\"id\":\"3547\"},{\"id\":\"3548\"},{\"id\":\"3549\"},{\"id\":\"3577\"},{\"id\":\"3596\"},{\"id\":\"3597\"},{\"id\":\"3598\"},{\"id\":\"3599\"},{\"id\":\"3600\"},{\"id\":\"3601\"},{\"id\":\"3629\"},{\"id\":\"3648\"},{\"id\":\"3649\"},{\"id\":\"3650\"},{\"id\":\"3651\"},{\"id\":\"3652\"},{\"id\":\"3653\"},{\"id\":\"3681\"},{\"id\":\"3700\"},{\"id\":\"3701\"},{\"id\":\"3702\"},{\"id\":\"3703\"},{\"id\":\"3704\"},{\"id\":\"3705\"},{\"id\":\"3733\"}]},\"id\":\"3784\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"3726\"},\"group\":null,\"major_label_policy\":{\"id\":\"3727\"},\"ticker\":{\"id\":\"3693\"}},\"id\":\"3692\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3597\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3636\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"3644\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3647\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3690\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3638\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3714\"},\"glyph\":{\"id\":\"3715\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3717\"},\"nonselection_glyph\":{\"id\":\"3716\"},\"view\":{\"id\":\"3719\"}},\"id\":\"3718\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3686\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3559\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3693\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"3692\"}],\"center\":[{\"id\":\"3695\"},{\"id\":\"3699\"},{\"id\":\"3731\"}],\"left\":[{\"id\":\"3696\"}],\"renderers\":[{\"id\":\"3718\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3720\"},\"toolbar\":{\"id\":\"3707\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3684\"},\"x_scale\":{\"id\":\"3688\"},\"y_range\":{\"id\":\"3686\"},\"y_scale\":{\"id\":\"3690\"}},\"id\":\"3683\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3641\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3684\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3632\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"O_O_O - Max: 0.000 degrees \"},\"renderers\":[{\"id\":\"3562\"}]},\"id\":\"3576\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"3733\",\"type\":\"HoverTool\"},{\"attributes\":{\"callback\":null},\"id\":\"3681\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3628\"}]},\"id\":\"3627\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3688\",\"type\":\"LinearScale\"},{\"attributes\":{\"toolbar\":{\"id\":\"3784\"},\"toolbar_location\":\"above\"},\"id\":\"3785\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"below\":[{\"id\":\"3588\"}],\"center\":[{\"id\":\"3591\"},{\"id\":\"3595\"},{\"id\":\"3627\"}],\"left\":[{\"id\":\"3592\"}],\"renderers\":[{\"id\":\"3614\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"3616\"},\"toolbar\":{\"id\":\"3603\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3580\"},\"x_scale\":{\"id\":\"3584\"},\"y_range\":{\"id\":\"3582\"},\"y_scale\":{\"id\":\"3586\"}},\"id\":\"3579\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"3570\"},\"group\":null,\"major_label_policy\":{\"id\":\"3571\"},\"ticker\":{\"id\":\"3537\"}},\"id\":\"3536\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"3692\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3695\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3701\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3582\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"3662\"}},\"id\":\"3667\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"3729\"},\"selection_policy\":{\"id\":\"3728\"}},\"id\":\"3714\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3544\",\"type\":\"PanTool\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"3723\"},\"group\":null,\"major_label_policy\":{\"id\":\"3724\"},\"ticker\":{\"id\":\"3697\"}},\"id\":\"3696\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"3550\"}},\"id\":\"3546\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"3696\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3699\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3571\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3697\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3705\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3534\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"3536\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3539\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3700\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3665\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"3544\"},{\"id\":\"3545\"},{\"id\":\"3546\"},{\"id\":\"3547\"},{\"id\":\"3548\"},{\"id\":\"3549\"},{\"id\":\"3577\"}]},\"id\":\"3551\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"3706\"}},\"id\":\"3702\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3703\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3584\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3549\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3704\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"3588\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3591\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3706\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3568\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3530\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3586\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3567\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"3619\"},\"group\":null,\"major_label_policy\":{\"id\":\"3620\"},\"ticker\":{\"id\":\"3593\"}},\"id\":\"3592\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3570\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3558\"},\"glyph\":{\"id\":\"3559\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3561\"},\"nonselection_glyph\":{\"id\":\"3560\"},\"view\":{\"id\":\"3563\"}},\"id\":\"3562\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3680\"}]},\"id\":\"3679\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3537\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Angle} / \\\\theta$\",\"coordinates\":null,\"formatter\":{\"id\":\"3622\"},\"group\":null,\"major_label_policy\":{\"id\":\"3623\"},\"ticker\":{\"id\":\"3589\"}},\"id\":\"3588\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3541\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"H_H_H - Max: 0.000 degrees \"},\"renderers\":[{\"id\":\"3718\"}]},\"id\":\"3732\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"3629\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"3572\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"$\\\\text{ADF} / a.u.$\",\"coordinates\":null,\"formatter\":{\"id\":\"3567\"},\"group\":null,\"major_label_policy\":{\"id\":\"3568\"},\"ticker\":{\"id\":\"3541\"}},\"id\":\"3540\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"3714\"}},\"id\":\"3719\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3664\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3715\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"3573\"},\"selection_policy\":{\"id\":\"3572\"}},\"id\":\"3558\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3589\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3717\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3610\"},\"glyph\":{\"id\":\"3611\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3613\"},\"nonselection_glyph\":{\"id\":\"3612\"},\"view\":{\"id\":\"3615\"}},\"id\":\"3614\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"3700\"},{\"id\":\"3701\"},{\"id\":\"3702\"},{\"id\":\"3703\"},{\"id\":\"3704\"},{\"id\":\"3705\"},{\"id\":\"3733\"}]},\"id\":\"3707\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3716\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3720\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3732\"}]},\"id\":\"3731\",\"type\":\"Legend\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3550\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3528\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3545\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3573\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3547\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"3540\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3543\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3580\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3668\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3532\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3548\",\"type\":\"ResetTool\"}],\"root_ids\":[\"3786\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"417006a9-2e75-4105-b9de-3263a776b04a\",\"root_ids\":[\"3786\"],\"roots\":{\"3786\":\"6cd55ba9-e06e-4ac5-ae4b-0bfe8ea15841\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "3786" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Angular_Distribution_Function_8" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.AngularDistributionFunction(atom_selection=water_group, number_of_configurations=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "aa8518d6", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:48:01,289 - INFO: starting Einstein Diffusion Computation\n", + "2022-01-31 10:48:01,292 - INFO: starting Einstein Diffusion Computation\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "O: 100%|████████████████████████████████| 1/1 [00:06<00:00, 6.38s/it]\n", + "H: 100%|████████████████████████████████| 1/1 [00:06<00:00, 6.10s/it]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"4216\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"4216\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"4216\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"4216\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"630a92cf-3c5b-4ffc-a74c-a868d8ea7885\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"4347\"},{\"id\":\"4345\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"4348\",\"type\":\"Column\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4240\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"$\\\\text{MSD}$ / $m^{2}$\",\"coordinates\":null,\"formatter\":{\"id\":\"4309\"},\"group\":null,\"major_label_policy\":{\"id\":\"4310\"},\"ticker\":{\"id\":\"4283\"}},\"id\":\"4282\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4318\"}]},\"id\":\"4317\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2500]}},\"selected\":{\"id\":\"4263\"},\"selection_policy\":{\"id\":\"4262\"}},\"id\":\"4248\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4249\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4220\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"4278\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4281\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4287\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4258\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4257\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4303\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4261\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4276\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"4248\"}},\"id\":\"4253\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"4234\"},{\"id\":\"4235\"},{\"id\":\"4236\"},{\"id\":\"4237\"},{\"id\":\"4238\"},{\"id\":\"4239\"},{\"id\":\"4267\"}]},\"id\":\"4241\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4250\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4222\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4260\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4302\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4312\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4235\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"tools\":[{\"id\":\"4286\"},{\"id\":\"4287\"},{\"id\":\"4288\"},{\"id\":\"4289\"},{\"id\":\"4290\"},{\"id\":\"4291\"},{\"id\":\"4319\"}]},\"id\":\"4293\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4237\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4291\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4314\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"4313\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4251\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4218\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4254\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"4234\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"4227\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4272\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4239\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4224\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null},\"id\":\"4267\",\"type\":\"HoverTool\"},{\"attributes\":{\"toolbars\":[{\"id\":\"4241\"},{\"id\":\"4293\"}],\"tools\":[{\"id\":\"4234\"},{\"id\":\"4235\"},{\"id\":\"4236\"},{\"id\":\"4237\"},{\"id\":\"4238\"},{\"id\":\"4239\"},{\"id\":\"4267\"},{\"id\":\"4286\"},{\"id\":\"4287\"},{\"id\":\"4288\"},{\"id\":\"4289\"},{\"id\":\"4290\"},{\"id\":\"4291\"},{\"id\":\"4319\"}]},\"id\":\"4346\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"below\":[{\"id\":\"4226\"}],\"center\":[{\"id\":\"4229\"},{\"id\":\"4233\"},{\"id\":\"4265\"}],\"left\":[{\"id\":\"4230\"}],\"renderers\":[{\"id\":\"4252\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4254\"},\"toolbar\":{\"id\":\"4241\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4218\"},\"x_scale\":{\"id\":\"4222\"},\"y_range\":{\"id\":\"4220\"},\"y_scale\":{\"id\":\"4224\"}},\"id\":\"4217\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"4238\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"4274\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4315\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4266\"}]},\"id\":\"4265\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"4309\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4289\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4248\"},\"glyph\":{\"id\":\"4249\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4251\"},\"nonselection_glyph\":{\"id\":\"4250\"},\"view\":{\"id\":\"4253\"}},\"id\":\"4252\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"4230\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4233\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4283\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Time}$ / $s$\",\"coordinates\":null,\"formatter\":{\"id\":\"4260\"},\"group\":null,\"major_label_policy\":{\"id\":\"4261\"},\"ticker\":{\"id\":\"4227\"}},\"id\":\"4226\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4310\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4279\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"$\\\\text{MSD}$ / $m^{2}$\",\"coordinates\":null,\"formatter\":{\"id\":\"4257\"},\"group\":null,\"major_label_policy\":{\"id\":\"4258\"},\"ticker\":{\"id\":\"4231\"}},\"id\":\"4230\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"H: 3.081E-04 +- 2.103E-05\"},\"renderers\":[{\"id\":\"4304\"}]},\"id\":\"4318\",\"type\":\"LegendItem\"},{\"attributes\":{\"children\":[[{\"id\":\"4217\"},0,0],[{\"id\":\"4269\"},0,1]]},\"id\":\"4345\",\"type\":\"GridBox\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4300\"},\"glyph\":{\"id\":\"4301\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4303\"},\"nonselection_glyph\":{\"id\":\"4302\"},\"view\":{\"id\":\"4305\"}},\"id\":\"4304\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"4282\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4285\",\"type\":\"Grid\"},{\"attributes\":{\"toolbar\":{\"id\":\"4346\"},\"toolbar_location\":\"above\"},\"id\":\"4347\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"4231\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4290\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"4263\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"$\\\\text{Time}$ / $s$\",\"coordinates\":null,\"formatter\":{\"id\":\"4312\"},\"group\":null,\"major_label_policy\":{\"id\":\"4313\"},\"ticker\":{\"id\":\"4279\"}},\"id\":\"4278\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"4226\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4229\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"4300\"}},\"id\":\"4305\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"4262\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null},\"id\":\"4319\",\"type\":\"HoverTool\"},{\"attributes\":{\"overlay\":{\"id\":\"4292\"}},\"id\":\"4288\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4301\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"4278\"}],\"center\":[{\"id\":\"4281\"},{\"id\":\"4285\"},{\"id\":\"4317\"}],\"left\":[{\"id\":\"4282\"}],\"renderers\":[{\"id\":\"4304\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4306\"},\"toolbar\":{\"id\":\"4293\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4270\"},\"x_scale\":{\"id\":\"4274\"},\"y_range\":{\"id\":\"4272\"},\"y_scale\":{\"id\":\"4276\"}},\"id\":\"4269\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"4240\"}},\"id\":\"4236\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4292\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4286\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4306\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAACsQ9LRXXJCPKxD0tFdclI8gmW7uoyrWzysQ9LRXXJiPJfURkb1Dmc8gmW7uoyrazw3+5cXEiRwPKxD0tFdcnI8IowMjKnAdDyX1EZG9Q53PAwdgQBBXXk8gmW7uoyrezz4rfV02Pl9PDf7lxcSJIA8cR+19DdLgTysQ9LRXXKCPOdn766DmYM8IowMjKnAhDxcsClpz+eFPJfURkb1Doc80vhjIxs2iDwMHYEAQV2JPEdBnt1mhIo8gmW7uoyrizy9idiXstKMPPit9XTY+Y08MtISUv4gjzw3+5cXEiSQPFSNJgalt5A8cR+19DdLkTyPsUPjyt6RPKxD0tFdcpI8ytVgwPAFkzznZ++ug5mTPAX6fZ0WLZQ8IowMjKnAlDw/Hpt6PFSVPFywKWnP55U8ekK4V2J7ljyX1EZG9Q6XPLVm1TSIopc80vhjIxs2mDzwivIRrsmYPAwdgQBBXZk8Kq8P79PwmTxHQZ7dZoSaPGXTLMz5F5s8gmW7uoyrmzyg90mpHz+cPL2J2Jey0pw82xtnhkVmnTz4rfV02PmdPBVAhGNrjZ48MtISUv4gnzxQZKFAkbSfPDf7lxcSJKA8RUTfjtttoDxUjSYGpbegPGPWbX1uAaE8cR+19DdLoTyAaPxrAZWhPI+xQ+PK3qE8nfqKWpQoojysQ9LRXXKiPLuMGUknvKI8ytVgwPAFozzYHqg3uk+jPOdn766DmaM89rA2Jk3jozwF+n2dFi2kPBNDxRTgdqQ8IowMjKnApDww1VMDcwqlPD8em3o8VKU8TWfi8QWepTxcsClpz+elPGv5cOCYMaY8ekK4V2J7pjyIi//OK8WmPJfURkb1Dqc8ph2Ovb5Ypzy1ZtU0iKKnPMOvHKxR7Kc80vhjIxs2qDzhQaua5H+oPPCK8hGuyag8/tM5iXcTqTwMHYEAQV2pPBtmyHcKp6k8Kq8P79PwqTw4+FZmnTqqPEdBnt1mhKo8VorlVDDOqjxl0yzM+RerPHMcdEPDYas8gmW7uoyrqzyRrgIyVvWrPKD3SakfP6w8rkCRIOmIrDy9idiXstKsPMzSHw98HK082xtnhkVmrTzqZK79DrCtPPit9XTY+a08Bvc87KFDrjwVQIRja42uPCOJy9o01648MtISUv4grzxBG1rJx2qvPFBkoUCRtK88Xq3ot1r+rzw3+5cXEiSwPL6fO9P2SLA8RUTfjtttsDzN6IJKwJKwPFSNJgalt7A83DHKwYncsDxj1m19bgGxPOp6ETlTJrE8cR+19DdLsTz4w1iwHHCxPIBo/GsBlbE8Bw2gJ+a5sTyPsUPjyt6xPBZW556vA7I8nfqKWpQosjwlny4WeU2yPKxD0tFdcrI8NOh1jUKXsjy7jBlJJ7yyPEIxvQQM4bI8ytVgwPAFszxRegR81SqzPNgeqDe6T7M8YMNL8550szznZ++ug5mzPG8Mk2povrM89rA2Jk3jszx9VdrhMQi0PAX6fZ0WLbQ8jJ4hWftRtDwTQ8UU4Ha0PJvnaNDEm7Q8IowMjKnAtDyoMLBHjuW0PDDVUwNzCrU8t3n3vlcvtTw/Hpt6PFS1PMbCPjYhebU8TWfi8QWetTzVC4at6sK1PFywKWnP57U85FTNJLQMtjxr+XDgmDG2PPKdFJx9VrY8ekK4V2J7tjwB51sTR6C2PIiL/84rxbY8EDCjihDqtjyX1EZG9Q63PB956gHaM7c8ph2Ovb5YtzwtwjF5o323PLVm1TSIorc8PAt58GzHtzzDrxysUey3PEtUwGc2Ebg80vhjIxs2uDxanQff/1q4POFBq5rkf7g8aOZOVsmkuDzwivIRrsm4PHcvls2S7rg8/tM5iXcTuTyGeN1EXDi5PAwdgQBBXbk8lMEkvCWCuTwbZsh3Cqe5PKIKbDPvy7k8Kq8P79PwuTyxU7OquBW6PDj4VmadOro8wJz6IYJfujxHQZ7dZoS6PM/lQZlLqbo8VorlVDDOujzdLokQFfO6PGXTLMz5F7s87HfQh948uzxzHHRDw2G7PPvAF/+nhrs8gmW7uoyruzwKCl92cdC7PJGuAjJW9bs8GFOm7ToavDyg90mpHz+8PCec7WQEZLw8rkCRIOmIvDw25TTcza28PL2J2Jey0rw8RS58U5f3vDzM0h8PfBy9PFN3w8pgQb082xtnhkVmvTxiwApCKou9POpkrv0OsL08cQlSufPUvTz4rfV02Pm9PH9SmTC9Hr48Bvc87KFDvjyNm+Cnhmi+PBVAhGNrjb48nOQnH1CyvjwjicvaNNe+PKstb5YZ/L48MtISUv4gvzy6drYN40W/PEEbWsnHar88yL/9hKyPvzxQZKFAkbS/PNcIRfx12b88Xq3ot1r+vzzzKMa5nxHAPDf7lxcSJMA8es1pdYQ2wDy+nzvT9kjAPAJyDTFpW8A8RUTfjtttwDyJFrHsTYDAPM3ogkrAksA8ELtUqDKlwDxUjSYGpbfAPJhf+GMXysA83DHKwYncwDwfBJwf/O7APGPWbX1uAcE8p6g/2+ATwTzqehE5UybBPC5N45bFOME8cR+19DdLwTy18YZSql3BPPjDWLAccME8PJYqDo+CwTyAaPxrAZXBPMQ6zslzp8E8Bw2gJ+a5wTxL33GFWMzBPI+xQ+PK3sE80oMVQT3xwTwWVueerwPCPFooufwhFsI8nfqKWpQowjzhzFy4BjvCPCWfLhZ5TcI8aHEAdOtfwjysQ9LRXXLCPPAVpC/QhMI8NOh1jUKXwjx3ukfrtKnCPLuMGUknvMI8/17rppnOwjxCMb0EDOHCPIYDj2J+88I8ytVgwPAFwzwNqDIeYxjDPFF6BHzVKsM8lUzW2Uc9wzzYHqg3uk/DPBzxeZUsYsM8YMNL8550wzyjlR1REYfDPOdn766DmcM8KzrBDParwzxvDJNqaL7DPLLeZMja0MM89rA2Jk3jwzw6gwiEv/XDPH1V2uExCMQ8wSesP6QaxDwF+n2dFi3EPEjMT/uIP8Q8jJ4hWftRxDzQcPO2bWTEPBNDxRTgdsQ8VxWXclKJxDyb52jQxJvEPN+5Oi43rsQ8IowMjKnAxDxlXt7pG9PEPKgwsEeO5cQ87AKCpQD4xDww1VMDcwrFPHSnJWHlHMU8t3n3vlcvxTz7S8kcykHFPD8em3o8VMU8gvBs2K5mxTzGwj42IXnFPAqVEJSTi8U8TWfi8QWexTyRObRPeLDFPNULhq3qwsU8GN5XC13VxTxcsClpz+fFPKCC+8ZB+sU85FTNJLQMxjwnJ5+CJh/GPGv5cOCYMcY8r8tCPgtExjzynRScfVbGPDZw5vnvaMY8ekK4V2J7xjy9FIq11I3GPAHnWxNHoMY8RbktcbmyxjyIi//OK8XGPMxd0Sye18Y8EDCjihDqxjxTAnXogvzGPJfURkb1Dsc826YYpGchxzwfeeoB2jPHPGJLvF9MRsc8ph2Ovb5Yxzzq718bMWvHPC3CMXmjfcc8cZQD1xWQxzy1ZtU0iKLHPPg4p5L6tMc8PAt58GzHxzyA3UpO39nHPMOvHKxR7Mc8B4LuCcT+xzxLVMBnNhHIPI8mksWoI8g80vhjIxs2yDwWyzWBjUjIPFqdB9//Wsg8nW/ZPHJtyDzhQaua5H/IPCUUffhWksg8aOZOVsmkyDysuCC0O7fIPPCK8hGuycg8M13EbyDcyDx3L5bNku7IPLsBaCsFAck8/tM5iXcTyTxCpgvn6SXJPIZ43URcOMk8ykqvos5KyTwMHYEAQV3JPFDvUl6zb8k8lMEkvCWCyTzXk/YZmJTJPBtmyHcKp8k8Xzia1Xy5yTyiCmwz78vJPObcPZFh3sk8Kq8P79PwyTxtgeFMRgPKPLFTs6q4Fco89SWFCCsoyjw4+FZmnTrKPHzKKMQPTco8wJz6IYJfyjwDb8x/9HHKPEdBnt1mhMo8ixNwO9mWyjzP5UGZS6nKPBK4E/e9u8o8VorlVDDOyjyaXLeyouDKPN0uiRAV88o8IQFbbocFyzxl0yzM+RfLPKil/ilsKss87HfQh948yzwwSqLlUE/LPHMcdEPDYcs8t+5FoTV0yzz7wBf/p4bLPD+T6Vwamcs8gmW7uoyryzzGN40Y/73LPAoKX3Zx0Ms8Tdww1OPiyzyRrgIyVvXLPNWA1I/IB8w8GFOm7ToazDxcJXhLrSzMPKD3SakfP8w848kbB5JRzDwnnO1kBGTMPGtuv8J2dsw8rkCRIOmIzDzyEmN+W5vMPDblNNzNrcw8ercGOkDAzDy9idiXstLMPAFcqvUk5cw8RS58U5f3zDyIAE6xCQrNPMzSHw98HM08EKXxbO4uzTxTd8PKYEHNPJdJlSjTU8082xtnhkVmzTwe7jjkt3jNPGLACkIqi808ppLcn5ydzTzqZK79DrDNPC03gFuBws08cQlSufPUzTy12yMXZufNPPit9XTY+c08O4DH0koMzjx/UpkwvR7OPMIka44vMc48Bvc87KFDzjxKyQ5KFFbOPI2b4KeGaM480W2yBfl6zjwVQIRja43OPFgSVsHdn848nOQnH1Cyzjzgtvl8wsTOPCOJy9o01848Z1udOKfpzjyrLW+WGfzOPO//QPSLDs88MtISUv4gzzx2pOSvcDPPPLp2tg3jRc88/UiIa1VYzzxBG1rJx2rPPIXtKyc6fc88yL/9hKyPzzwMks/iHqLPPFBkoUCRtM88kzZzngPHzzzXCEX8ddnPPBvbFlro6888Xq3ot1r+zzzRP92KZgjQPPMoxrmfEdA8FRKv6Nga0Dw3+5cXEiTQPFjkgEZLLdA8es1pdYQ20DyctlKkvT/QPL6fO9P2SNA84IgkAjBS0DwCcg0xaVvQPCRb9l+iZNA8RUTfjttt0DxnLci9FHfQPIkWsexNgNA8q/+ZG4eJ0DzN6IJKwJLQPO/Ra3n5m9A8ELtUqDKl0DwypD3Xa67QPFSNJgalt9A8dnYPNd7A0DyYX/hjF8rQPLpI4ZJQ09A83DHKwYnc0Dz9GrPwwuXQPB8EnB/87tA8Qe2ETjX40Dxj1m19bgHRPIW/VqynCtE8p6g/2+AT0TzIkSgKGh3RPOp6ETlTJtE8DGT6Z4wv0TwuTeOWxTjRPFA2zMX+QdE8cR+19DdL0TyTCJ4jcVTRPLXxhlKqXdE819pvgeNm0Tz4w1iwHHDRPBqtQd9VedE8PJYqDo+C0TxefxM9yIvRPIBo/GsBldE8olHlmjqe0TzEOs7Jc6fRPOUjt/issNE8Bw2gJ+a50Twp9ohWH8PRPEvfcYVYzNE8bchatJHV0TyPsUPjyt7RPLCaLBIE6NE80oMVQT3x0Tz0bP5vdvrRPBZW556vA9I8OD/QzegM0jxaKLn8IRbSPHwRoitbH9I8nfqKWpQo0jy/43OJzTHSPOHMXLgGO9I8A7ZF5z9E0jwlny4WeU3SPEeIF0WyVtI8aHEAdOtf0jyKWumiJGnSPKxD0tFdctI8ziy7AJd70jzwFaQv0ITSPBL/jF4JjtI8NOh1jUKX0jxV0V68e6DSPHe6R+u0qdI8maMwGu6y0jy7jBlJJ7zSPN11AnhgxdI8/17rppnO0jwgSNTV0tfSPEIxvQQM4dI8ZBqmM0Xq0jyGA49ifvPSPKjsd5G3/NI8ytVgwPAF0zzsvknvKQ/TPA2oMh5jGNM8L5EbTZwh0zxRegR81SrTPHNj7aoONNM8lUzW2Uc90zy3Nb8IgUbTPNgeqDe6T9M8+geRZvNY0zwc8XmVLGLTPD7aYsRla9M8YMNL85500zyCrDQi2H3TPKOVHVERh9M8xX4GgEqQ0zznZ++ug5nTPAlR2N28otM8KzrBDPar0zxNI6o7L7XTPG8Mk2povtM8kPV7maHH0zyy3mTI2tDTPNTHTfcT2tM89rA2Jk3j0zwYmh9VhuzTPDqDCIS/9dM8W2zxsvj+0zx9VdrhMQjUPJ8+wxBrEdQ8wSesP6Qa1DzjEJVu3SPUPAX6fZ0WLdQ8J+NmzE821DxIzE/7iD/UPGq1OCrCSNQ8jJ4hWftR1DyuhwqINFvUPNBw87ZtZNQ88lnc5aZt1DwTQ8UU4HbUPDUsrkMZgNQ8VxWXclKJ1Dx5/n+hi5LUPJvnaNDEm9Q8vdBR//2k1DzfuTouN67UPACjI11wt9Q8IowMjKnA1DxDdfW64snUPGVe3ukb09Q8h0fHGFXc1DyoMLBHjuXUPMoZmXbH7tQ87AKCpQD41DwO7GrUOQHVPDDVUwNzCtU8Ur48MqwT1Tx0pyVh5RzVPJWQDpAeJtU8t3n3vlcv1TzZYuDtkDjVPPtLyRzKQdU8HTWySwNL1Tw/Hpt6PFTVPGAHhKl1XdU8gvBs2K5m1Tyk2VUH6G/VPMbCPjYhedU86KsnZVqC1TwKlRCUk4vVPCx++cLMlNU8TWfi8QWe1TxvUMsgP6fVPJE5tE94sNU8syKdfrG51TzVC4at6sLVPPf0btwjzNU8GN5XC13V1Tw6x0A6lt7VPFywKWnP59U8fpkSmAjx1TyggvvGQfrVPMJr5PV6A9Y85FTNJLQM1jwFPrZT7RXWPCcnn4ImH9Y8SRCIsV8o1jxr+XDgmDHWPI3iWQ/SOtY8r8tCPgtE1jzQtCttRE3WPPKdFJx9VtY8FIf9yrZf1jw2cOb572jWPFhZzygpctY8ekK4V2J71jycK6GGm4TWPL0UirXUjdY83/1y5A2X1jwB51sTR6DWPCPQREKAqdY8Rbktcbmy1jxnohag8rvWPIiL/84rxdY8qnTo/WTO1jzMXdEsntfWPO5GulvX4NY8EDCjihDq1jwyGYy5SfPWPFMCdeiC/NY8detdF7wF1zyX1EZG9Q7XPLm9L3UuGNc826YYpGch1zz9jwHToCrXPB956gHaM9c8QGLTMBM91zxiS7xfTEbXPIQ0pY6FT9c8ph2Ovb5Y1zzIBnfs92HXPOrvXxsxa9c8C9lISmp01zwtwjF5o33XPE+rGqjchtc8cZQD1xWQ1zyTfewFT5nXPLVm1TSIotc810++Y8Gr1zz4OKeS+rTXPBoikMEzvtc8PAt58GzH1zxe9GEfptDXPIDdSk7f2dc8osYzfRjj1zzDrxysUezXPOWYBduK9dc8B4LuCcT+1zwpa9c4/QfYPEtUwGc2Edg8bT2plm8a2DyPJpLFqCPYPLAPe/ThLNg80vhjIxs22Dz04UxSVD/YPBbLNYGNSNg8OLQesMZR2DxanQff/1rYPHuG8A05ZNg8nW/ZPHJt2Dy/WMJrq3bYPOFBq5rkf9g8AyuUyR2J2DwlFH34VpLYPEf9ZSeQm9g8aOZOVsmk2DyKzzeFAq7YPKy4ILQ7t9g8zqEJ43TA2DzwivIRrsnYPBJ020Dn0tg8M13EbyDc2DxVRq2eWeXYPHcvls2S7tg8mRh//Mv32Dy7AWgrBQHZPN3qUFo+Ctk8/tM5iXcT2TwgvSK4sBzZPEKmC+fpJdk8ZI/0FSMv2TyGeN1EXDjZPKhhxnOVQdk8ykqvos5K2TzrM5jRB1TZPAwdgQBBXdk8LgZqL3pm2TxQ71Jes2/ZPHLYO43seNk8lMEkvCWC2Ty1qg3rXovZPNeT9hmYlNk8+XzfSNGd2TwbZsh3CqfZPD1PsaZDsNk8Xzia1Xy52TyAIYMEtsLZPKIKbDPvy9k8xPNUYijV2Tzm3D2RYd7ZPAjGJsCa59k8Kq8P79Pw2TxLmPgdDfrZPG2B4UxGA9o8j2rKe38M2jyxU7OquBXaPNM8nNnxHto89SWFCCso2jwXD243ZDHaPDj4VmadOto8WuE/ldZD2jx8yijED03aPJ6zEfNIVto8wJz6IYJf2jziheNQu2jaPANvzH/0cdo8JVi1ri172jxHQZ7dZoTaPGkqhwygjdo8ixNwO9mW2jyt/FhqEqDaPM/lQZlLqdo88M4qyISy2jwSuBP3vbvaPDSh/CX3xNo8VorlVDDO2jx4c86DadfaPJpct7Ki4No8u0Wg4dvp2jzdLokQFfPaPP8Xcj9O/No8IQFbbocF2zxD6kOdwA7bPGXTLMz5F9s8h7wV+zIh2zyopf4pbCrbPMqO51ilM9s87HfQh9482zwOYbm2F0bbPDBKouVQT9s8UjOLFIpY2zxzHHRDw2HbPJUFXXL8ats8t+5FoTV02zzZ1y7Qbn3bPPvAF/+nhts8HaoALuGP2zw/k+lcGpnbPGB80otTots8gmW7uoyr2zykTqTpxbTbPMY3jRj/vds86CB2RzjH2zwKCl92cdDbPCvzR6Wq2ds8Tdww1OPi2zxvxRkDHezbPJGuAjJW9ds8s5frYI/+2zzVgNSPyAfcPPdpvb4BEdw8GFOm7Toa3Dw6PI8cdCPcPFwleEutLNw8fg5heuY13Dyg90mpHz/cPMLgMthYSNw848kbB5JR3DwFswQ2y1rcPCec7WQEZNw8SYXWkz1t3Dxrbr/CdnbcPI1XqPGvf9w8rkCRIOmI3DzQKXpPIpLcPPISY35bm9w8FPxLrZSk3Dw25TTcza3cPFjOHQsHt9w8ercGOkDA3DyboO9oecncPL2J2Jey0tw833LBxuvb3DwBXKr1JOXcPCNFkyRe7tw8RS58U5f33DxmF2WC0ADdPIgATrEJCt08quk24EIT3TzM0h8PfBzdPO67CD61Jd08EKXxbO4u3TwyjtqbJzjdPFN3w8pgQd08dWCs+ZlK3TyXSZUo01PdPLkyflcMXd082xtnhkVm3Tz9BFC1fm/dPB7uOOS3eN08QNchE/GB3TxiwApCKovdPISp83BjlN08ppLcn5yd3TzIe8XO1abdPOpkrv0OsN08C06XLEi53TwtN4BbgcLdPE8gaYq6y908cQlSufPU3TyT8jroLN7dPLXbIxdm59081sQMRp/w3Tz4rfV02PndPBmX3qMRA948O4DH0koM3jxdabABhBXePH9SmTC9Ht48oDuCX/Yn3jzCJGuOLzHePOQNVL1oOt48Bvc87KFD3jwo4CUb20zePErJDkoUVt48a7L3eE1f3jyNm+CnhmjePK+Eyda/cd480W2yBfl63jzzVps0MoTePBVAhGNrjd48NyltkqSW3jxYElbB3Z/ePHr7PvAWqd48nOQnH1Cy3jy+zRBOibvePOC2+XzCxN48AqDiq/vN3jwjicvaNNfePEVytAlu4N48Z1udOKfp3jyJRIZn4PLePKstb5YZ/N48zRZYxVIF3zzv/0D0iw7fPBDpKSPFF988MtISUv4g3zxUu/uANyrfPHak5K9wM988mI3N3qk83zy6drYN40XfPNtfnzwcT988/UiIa1VY3zwfMnGajmHfPEEbWsnHat88YwRD+AB03zyF7SsnOn3fPKbWFFZzht88yL/9hKyP3zzqqOaz5ZjfPAySz+Ieot88Lnu4EVir3zxQZKFAkbTfPHJNim/Kvd88kzZzngPH3zy1H1zNPNDfPNcIRfx12d88+fEtK6/i3zwb2xZa6OvfPD3E/4gh9d88Xq3ot1r+3zxAy2jzyQPgPNE/3YpmCOA8YrRRIgMN4DzzKMa5nxHgPISdOlE8FuA8FRKv6Nga4DymhiOAdR/gPDf7lxcSJOA8yG8Mr64o4DxY5IBGSy3gPOlY9d3nMeA8es1pdYQ24DwLQt4MITvgPJy2UqS9P+A8LSvHO1pE4Dy+nzvT9kjgPE8UsGqTTeA84IgkAjBS4Dxx/ZiZzFbgPAJyDTFpW+A8k+aByAVg4DwkW/ZfomTgPLTPavc+aeA8RUTfjttt4DzWuFMmeHLgPGctyL0Ud+A8+KE8VbF74DyJFrHsTYDgPBqLJYTqhOA8q/+ZG4eJ4Dw8dA6zI47gPM3ogkrAkuA8Xl334VyX4Dzv0Wt5+ZvgPIBG4BCWoOA8ELtUqDKl4DyhL8k/z6ngPDKkPddrruA8wxiybgiz4DxUjSYGpbfgPOUBm51BvOA8dnYPNd7A4DwH64PMesXgPJhf+GMXyuA8KdRs+7PO4Dy6SOGSUNPgPEu9VSrt1+A83DHKwYnc4Dxspj5ZJuHgPP0as/DC5eA8jo8niF/q4DwfBJwf/O7gPLB4ELeY8+A8Qe2ETjX44DzSYfnl0fzgPGPWbX1uAeE89EriFAsG4TyFv1aspwrhPBY0y0NED+E8p6g/2+AT4Tw4HbRyfRjhPMiRKAoaHeE8WQadobYh4TzqehE5UybhPHvvhdDvKuE8DGT6Z4wv4Tyd2G7/KDThPC5N45bFOOE8v8FXLmI94TxQNszF/kHhPOGqQF2bRuE8cR+19DdL4TwClCmM1E/hPJMIniNxVOE8JH0Suw1Z4Ty18YZSql3hPEZm++lGYuE819pvgeNm4TxoT+QYgGvhPPjDWLAccOE8iTjNR7l04TwarUHfVXnhPKshtnbyfeE8PJYqDo+C4TzNCp+lK4fhPF5/Ez3Ii+E87/OH1GSQ4TyAaPxrAZXhPBHdcAOemeE8olHlmjqe4Twzxlky16LhPMQ6zslzp+E8VK9CYRCs4TzlI7f4rLDhPHaYK5BJteE8Bw2gJ+a54TyYgRS/gr7hPCn2iFYfw+E8umr97bvH4TxL33GFWMzhPNxT5hz10OE8bchatJHV4Tz+PM9LLtrhPI+xQ+PK3uE8ICa4emfj4TywmiwSBOjhPEEPoamg7OE80oMVQT3x4Txj+InY2fXhPPRs/m92+uE8heFyBxP/4TwWVueerwPiPKfKWzZMCOI8OD/QzegM4jzJs0RlhRHiPFooufwhFuI865wtlL4a4jx8EaIrWx/iPA2GFsP3I+I8nfqKWpQo4jwvb//xMC3iPL/jc4nNMeI8UVjoIGo24jzhzFy4BjviPHNB0U+jP+I8A7ZF5z9E4jyUKrp+3EjiPCWfLhZ5TeI8thOjrRVS4jxHiBdFslbiPNj8i9xOW+I8aHEAdOtf4jz65XQLiGTiPIpa6aIkaeI8HM9dOsFt4jysQ9LRXXLiPDy4Rmn6duI8ziy7AJd74jxeoS+YM4DiPPAVpC/QhOI8gIoYx2yJ4jwS/4xeCY7iPKJzAfalkuI8NOh1jUKX4jzEXOok35viPFXRXrx7oOI85kXTUxil4jx3ukfrtKniPAgvvIJRruI8maMwGu6y4jwpGKWxirfiPLuMGUknvOI8SwGO4MPA4jzddQJ4YMXiPG3qdg/9yeI8/17rppnO4jyP018+NtPiPCBI1NXS1+I8sbxIbW/c4jxCMb0EDOHiPNOlMZyo5eI8ZBqmM0Xq4jz0jhrL4e7iPIYDj2J+8+I8FngD+hr44jyo7HeRt/ziPDhh7ChUAeM8ytVgwPAF4zxaStVXjQrjPOy+Se8pD+M8fDO+hsYT4zwNqDIeYxjjPJ4cp7X/HOM8L5EbTZwh4zzABZDkOCbjPFF6BHzVKuM84e54E3Iv4zxzY+2qDjTjPAPYYUKrOOM8lUzW2Uc94zwlwUpx5EHjPLc1vwiBRuM8R6ozoB1L4zzYHqg3uk/jPGmTHM9WVOM8+geRZvNY4zyLfAX+j13jPBzxeZUsYuM8rGXuLMlm4zw+2mLEZWvjPM5O11sCcOM8YMNL85504zzwN8CKO3njPIKsNCLYfeM8EiGpuXSC4zyjlR1REYfjPDQKkuiti+M8xX4GgEqQ4zxW83oX55TjPOdn766DmeM8eNxjRiCe4zwJUdjdvKLjPJnFTHVZp+M8KzrBDPar4zy7rjWkkrDjPE0jqjsvteM83Zce08u54zxvDJNqaL7jPP+ABwIFw+M8kPV7maHH4zwhavAwPszjPLLeZMja0OM8Q1PZX3fV4zzUx033E9rjPGQ8wo6w3uM89rA2Jk3j4zyGJau96efjPBiaH1WG7OM8qA6U7CLx4zw6gwiEv/XjPMr3fBtc+uM8W2zxsvj+4zzs4GVKlQPkPH1V2uExCOQ8DspOec4M5DyfPsMQaxHkPDCzN6gHFuQ8wSesP6Qa5DxRnCDXQB/kPOMQlW7dI+Q8c4UJBnoo5DwF+n2dFi3kPJVu8jSzMeQ8J+NmzE825Dy3V9tj7DrkPEjMT/uIP+Q82UDEkiVE5DxqtTgqwkjkPPsprcFeTeQ8jJ4hWftR5DwcE5bwl1bkPK6HCog0W+Q8Pvx+H9Ff5DzQcPO2bWTkPGDlZ04KaeQ88lnc5aZt5DyCzlB9Q3LkPBNDxRTgduQ8pLc5rHx75Dw1LK5DGYDkPMagItu1hOQ8VxWXclKJ5DzoiQsK743kPHn+f6GLkuQ8CXP0OCiX5Dyb52jQxJvkPCtc3WdhoOQ8vdBR//2k5DxNRcaWmqnkPN+5Oi43ruQ8by6vxdOy5DwAoyNdcLfkPJEXmPQMvOQ8IowMjKnA5DyzAIEjRsXkPEN19briyeQ81OlpUn/O5DxlXt7pG9PkPPbSUoG41+Q8h0fHGFXc5DwYvDuw8eDkPKgwsEeO5eQ8OqUk3yrq5DzKGZl2x+7kPFyODQ5k8+Q87AKCpQD45Dx+d/Y8nfzkPA7satQ5AeU8n2Dfa9YF5Tww1VMDcwrlPMFJyJoPD+U8Ur48MqwT5TzjMrHJSBjlPHSnJWHlHOU8BRya+IEh5TyVkA6QHiblPCcFgye7KuU8t3n3vlcv5TxJ7mtW9DPlPNli4O2QOOU8a9dUhS095Tz7S8kcykHlPIzAPbRmRuU8HTWySwNL5TyuqSbjn0/lPD8em3o8VOU80JIPEtlY5TxgB4SpdV3lPPJ7+EASYuU8gvBs2K5m5TwUZeFvS2vlPKTZVQfob+U8Nk7KnoR05TzGwj42IXnlPFc3s829feU86KsnZVqC5Tx5IJz89oblPAqVEJSTi+U8mwmFKzCQ5TwsfvnCzJTlPL3ybVppmeU8TWfi8QWe5Tzf21aJoqLlPG9QyyA/p+U8AcU/uNur5TyRObRPeLDlPCOuKOcUteU8syKdfrG55TxElxEWTr7lPNULhq3qwuU8ZoD6RIfH5Tz39G7cI8zlPIhp43PA0OU8GN5XC13V5TyqUsyi+dnlPDrHQDqW3uU8zDu10TLj5TxcsClpz+flPO4kngBs7OU8fpkSmAjx5TwPDocvpfXlPKCC+8ZB+uU8MfdvXt7+5TzCa+T1egPmPFPgWI0XCOY85FTNJLQM5jx1yUG8UBHmPAU+tlPtFeY8l7Iq64ka5jwnJ5+CJh/mPLmbExrDI+Y8SRCIsV8o5jzbhPxI/CzmPGv5cOCYMeY8/G3ldzU25jyN4lkP0jrmPB5XzqZuP+Y8r8tCPgtE5jxAQLfVp0jmPNC0K21ETeY8YimgBOFR5jzynRScfVbmPIQSiTMaW+Y8FIf9yrZf5jym+3FiU2TmPDZw5vnvaOY8x+RakYxt5jxYWc8oKXLmPOnNQ8DFduY8ekK4V2J75jwLtyzv/n/mPJwroYabhOY8LaAVHjiJ5jy9FIq11I3mPE+J/kxxkuY83/1y5A2X5jxxcud7qpvmPAHnWxNHoOY8k1vQquOk5jwj0ERCgKnmPLREudkcruY8Rbktcbmy5jzWLaIIVrfmPGeiFqDyu+Y8+BaLN4/A5jyIi//OK8XmPBoAdGbIyeY8qnTo/WTO5jw86VyVAdPmPMxd0Sye1+Y8XtJFxDrc5jzuRrpb1+DmPH+7LvNz5eY8EDCjihDq5jyhpBcire7mPDIZjLlJ8+Y8w40AUeb35jxTAnXogvzmPOV26X8fAec8detdF7wF5zwHYNKuWArnPJfURkb1Duc8KEm73ZET5zy5vS91LhjnPEkypAzLHOc826YYpGch5zxrG407BCbnPP2PAdOgKuc8jQR2aj0v5zwfeeoB2jPnPK/tXpl2OOc8QGLTMBM95zzR1kfIr0HnPGJLvF9MRuc8878w9+hK5zyENKWOhU/nPBSpGSYiVOc8ph2Ovb5Y5zw2kgJVW13nPMgGd+z3Yec8WHvrg5Rm5zzq718bMWvnPHpk1LLNb+c8C9lISmp05zycTb3hBnnnPC3CMXmjfec8vjamEECC5zxPqxqo3IbnPOAfjz95i+c8cZQD1xWQ5zwBCXhuspTnPJN97AVPmec8I/Jgneud5zy1ZtU0iKLnPEXbScwkp+c810++Y8Gr5zxnxDL7XbDnPPg4p5L6tOc8ia0bKpe55zwaIpDBM77nPKuWBFnQwuc8PAt58GzH5zzMf+2HCcznPF70YR+m0Oc87mjWtkLV5zyA3UpO39nnPBBSv+V73uc8osYzfRjj5zwyO6gUtefnPMOvHKxR7Oc8VCSRQ+7w5zzlmAXbivXnPHYNenIn+uc8B4LuCcT+5zyY9mKhYAPoPClr1zj9B+g8ud9L0JkM6DxLVMBnNhHoPNvINP/SFeg8bT2plm8a6Dz9sR0uDB/oPI8mksWoI+g8H5sGXUUo6DywD3v04SzoPEGE74t+Meg80vhjIxs26Dxjbdi6tzroPPThTFJUP+g8hFbB6fBD6DwWyzWBjUjoPKY/qhgqTeg8OLQesMZR6DzIKJNHY1boPFqdB9//Wug86hF8dpxf6Dx7hvANOWToPAz7ZKXVaOg8nW/ZPHJt6Dwu5E3UDnLoPL9Ywmurdug8T802A0h76DzhQaua5H/oPHG2HzKBhOg8AyuUyR2J6DyTnwhhuo3oPCUUffhWkug8tYjxj/OW6DxH/WUnkJvoPNdx2r4soOg8aOZOVsmk6Dz5WsPtZanoPIrPN4UCrug8G0SsHJ+y6DysuCC0O7foPDwtlUvYu+g8zqEJ43TA6DxeFn56EcXoPPCK8hGuyeg8gP9mqUrO6DwSdNtA59LoPKLoT9iD1+g8M13EbyDc6DzE0TgHveDoPFVGrZ5Z5eg85rohNvbp6Dx3L5bNku7oPAekCmUv8+g8mRh//Mv36DwpjfOTaPzoPLsBaCsFAek8S3bcwqEF6Tzd6lBaPgrpPG1fxfHaDuk8/tM5iXcT6TyPSK4gFBjpPCC9IriwHOk8sTGXT00h6TxCpgvn6SXpPNMagH6GKuk8ZI/0FSMv6Tz0A2mtvzPpPIZ43URcOOk8Fu1R3Pg86TyoYcZzlUHpPDjWOgsyRuk8ykqvos5K6TxavyM6a0/pPOszmNEHVOk8fKgMaaRY6TwMHYEAQV3pPJ6R9ZfdYek8LgZqL3pm6Ty/et7GFmvpPFDvUl6zb+k84WPH9U906Txy2DuN7HjpPANNsCSJfek8lMEkvCWC6TwlNplTwobpPLWqDetei+k8Rx+CgvuP6TzXk/YZmJTpPGkIa7E0mek8+XzfSNGd6TyL8VPgbaLpPBtmyHcKp+k8rNo8D6er6Tw9T7GmQ7DpPM7DJT7gtOk8Xzia1Xy56TzwrA5tGb7pPIAhgwS2wuk8Epb3m1LH6TyiCmwz78vpPDR/4MqL0Ok8xPNUYijV6TxWaMn5xNnpPObcPZFh3uk8d1GyKP7i6TwIxibAmufpPJk6m1c37Ok8Kq8P79Pw6Ty7I4SGcPXpPEuY+B0N+uk83Qxttan+6TxtgeFMRgPqPP/1VeTiB+o8j2rKe38M6jwh3z4THBHqPLFTs6q4Feo8Q8gnQlUa6jzTPJzZ8R7qPGSxEHGOI+o89SWFCCso6jyGmvmfxyzqPBcPbjdkMeo8qIPizgA26jw4+FZmnTrqPMpsy/05P+o8WuE/ldZD6jzsVbQsc0jqPHzKKMQPTeo8Dj+dW6xR6jyesxHzSFbqPC8ohorlWuo8wJz6IYJf6jxREW+5HmTqPOKF41C7aOo8c/pX6Fdt6jwDb8x/9HHqPJXjQBeRduo8JVi1ri176jy3zClGyn/qPEdBnt1mhOo82bUSdQOJ6jxpKocMoI3qPPue+6M8kuo8ixNwO9mW6jwciOTSdZvqPK38WGoSoOo8PnHNAa+k6jzP5UGZS6nqPGBatjDoreo88M4qyISy6jyCQ59fIbfqPBK4E/e9u+o8pCyIjlrA6jw0ofwl98TqPMYVcb2Tyeo8VorlVDDO6jzn/lnszNLqPHhzzoNp1+o8CehCGwbc6jyaXLeyouDqPCvRK0o/5eo8u0Wg4dvp6jxNuhR5eO7qPN0uiRAV8+o8b6P9p7H36jz/F3I/TvzqPJGM5tbqAOs8IQFbbocF6zyydc8FJArrPEPqQ53ADus81F64NF0T6zxl0yzM+RfrPPZHoWOWHOs8h7wV+zIh6zwYMYqSzyXrPKil/ilsKus8OhpzwQgv6zzKjudYpTPrPFwDXPBBOOs87HfQh9486zx+7EQfe0HrPA5hubYXRus8n9UtTrRK6zwwSqLlUE/rPMG+Fn3tU+s8UjOLFIpY6zzjp/+rJl3rPHMcdEPDYes8BZHo2l9m6zyVBV1y/GrrPCd60QmZb+s8t+5FoTV06zxJY7o40njrPNnXLtBufes8akyjZwuC6zz7wBf/p4brPIw1jJZEi+s8HaoALuGP6zyuHnXFfZTrPD+T6Vwames80Ade9Lad6zxgfNKLU6LrPPLwRiPwpus8gmW7uoyr6zwT2i9SKbDrPKROpOnFtOs8NMMYgWK56zzGN40Y/73rPFasAbCbwus86CB2RzjH6zx4lere1MvrPAoKX3Zx0Os8mn7TDQ7V6zwr80elqtnrPLxnvDxH3us8Tdww1OPi6zzeUKVrgOfrPG/FGQMd7Os8/zmOmrnw6zyRrgIyVvXrPCEjd8ny+es8s5frYI/+6zxDDGD4KwPsPNWA1I/IB+w8ZfVIJ2UM7Dz3ab2+ARHsPIfeMVaeFew8GFOm7Toa7DypxxqF1x7sPDo8jxx0I+w8y7ADtBAo7DxcJXhLrSzsPOyZ7OJJMew8fg5heuY17DwOg9URgzrsPKD3SakfP+w8MGy+QLxD7DzC4DLYWEjsPFJVp2/1TOw848kbB5JR7Dx0PpCeLlbsPAWzBDbLWuw8lid5zWdf7DwnnO1kBGTsPLcQYvygaOw8SYXWkz1t7DzZ+Uor2nHsPGtuv8J2duw8++IzWhN77DyNV6jxr3/sPB3MHIlMhOw8rkCRIOmI7Dw/tQW4hY3sPNApek8ikuw8YZ7u5r6W7DzyEmN+W5vsPIOH1xX4n+w8FPxLrZSk7DykcMBEMansPDblNNzNrew8xlmpc2qy7DxYzh0LB7fsPOhCkqKju+w8ercGOkDA7DwKLHvR3MTsPJug72h5yew8LBVkABbO7Dy9idiXstLsPE7+TC9P1+w833LBxuvb7Dxv5zVeiODsPAFcqvUk5ew8kdAejcHp7DwjRZMkXu7sPLO5B7z68uw8RS58U5f37DzVovDqM/zsPGYXZYLQAO0894vZGW0F7TyIAE6xCQrtPBl1wkimDu08quk24EIT7Tw7Xqt33xftPMzSHw98HO08XEeUphgh7Tzuuwg+tSXtPH4wfdVRKu08EKXxbO4u7TygGWYEizPtPDKO2psnOO08wgJPM8Q87TxTd8PKYEHtPOTrN2L9Re08dWCs+ZlK7TwG1SCRNk/tPJdJlSjTU+08J74JwG9Y7Ty5Mn5XDF3tPEmn8u6oYe082xtnhkVm7TxrkNsd4mrtPP0EULV+b+08jXnETBt07Twe7jjkt3jtPK9irXtUfe08QNchE/GB7TzRS5aqjYbtPGLACkIqi+088zR/2caP7TyEqfNwY5TtPBQeaAgAme08ppLcn5yd7Tw2B1E3OaLtPMh7xc7Vpu08WPA5ZnKr7TzqZK79DrDtPHrZIpWrtO08C06XLEi57TycwgvE5L3tPC03gFuBwu08vqv08h3H7TxPIGmKusvtPN+U3SFX0O08cQlSufPU7TwBfsZQkNntPJPyOugs3u08I2evf8ni7Ty12yMXZuftPEVQmK4C7O081sQMRp/w7TxnOYHdO/XtPPit9XTY+e08iSJqDHX+7TwZl96jEQPuPKoLUzuuB+48O4DH0koM7jzM9Dtq5xDuPF1psAGEFe487t0kmSAa7jx/UpkwvR7uPBDHDchZI+48oDuCX/Yn7jwysPb2kizuPMIka44vMe48VJnfJcw17jzkDVS9aDruPHaCyFQFP+48Bvc87KFD7jyXa7GDPkjuPCjgJRvbTO48uVSasndR7jxKyQ5KFFbuPNs9g+GwWu48a7L3eE1f7jz9JmwQ6mPuPI2b4KeGaO48HxBVPyNt7jyvhMnWv3HuPEH5PW5cdu480W2yBfl67jxi4iadlX/uPPNWmzQyhO48hMsPzM6I7jwVQIRja43uPKa0+PoHku48NyltkqSW7jzIneEpQZvuPFgSVsHdn+486obKWHqk7jx6+z7wFqnuPAxws4ezre48nOQnH1Cy7jwuWZy27LbuPL7NEE6Ju+48T0KF5SXA7jzgtvl8wsTuPHErbhRfye48AqDiq/vN7jyTFFdDmNLuPCOJy9o01+48tf0/ctHb7jxFcrQJbuDuPNfmKKEK5e48Z1udOKfp7jz5zxHQQ+7uPIlEhmfg8u48Grn6/nz37jyrLW+WGfzuPDyi4y22AO88zRZYxVIF7zxei8xc7wnvPO//QPSLDu88gHS1iygT7zwQ6SkjxRfvPKJdnrphHO88MtISUv4g7zzERofpmiXvPFS7+4A3Ku885i9wGNQu7zx2pOSvcDPvPAcZWUcNOO88mI3N3qk87zwpAkJ2RkHvPLp2tg3jRe88S+sqpX9K7zzbX588HE/vPG3UE9S4U+88/UiIa1VY7zyPvfwC8lzvPB8ycZqOYe88sablMStm7zxBG1rJx2rvPNKPzmBkb+88YwRD+AB07zz0eLePnXjvPIXtKyc6fe88FmKgvtaB7zym1hRWc4bvPDhLie0Pi+88yL/9hKyP7zxaNHIcSZTvPOqo5rPlmO88fB1bS4Kd7zwMks/iHqLvPJ4GRHq7pu88Lnu4EVir7zy/7yyp9K/vPFBkoUCRtO884dgV2C257zxyTYpvyr3vPAPC/gZnwu88kzZzngPH7zwlq+c1oMvvPLUfXM080O88R5TQZNnU7zzXCEX8ddnvPGl9uZMS3u88+fEtK6/i7zyKZqLCS+fvPBvbFlro6+88rE+L8YTw7zw9xP+IIfXvPM44dCC++e88Xq3ot1r+7zz4kK6newHwPEDLaPPJA/A8iQUjPxgG8DzRP92KZgjwPBp6l9a0CvA8YrRRIgMN8Dyr7gtuUQ/wPPMoxrmfEfA8PGOABe4T8DyEnTpRPBbwPM3X9JyKGPA8FRKv6Nga8DxeTGk0Jx3wPKaGI4B1H/A87sDdy8Mh8Dw3+5cXEiTwPH81UmNgJvA8yG8Mr64o8DwQqsb6/CrwPFjkgEZLLfA8oR47kpkv8DzpWPXd5zHwPDKTryk2NPA8es1pdYQ28DzCByTB0jjwPAtC3gwhO/A8U3yYWG898DyctlKkvT/wPOTwDPALQvA8LSvHO1pE8Dx1ZYGHqEbwPL6fO9P2SPA8Btr1HkVL8DxPFLBqk03wPJdOarbhT/A84IgkAjBS8Dwow95NflTwPHH9mJnMVvA8uTdT5RpZ8DwCcg0xaVvwPEqsx3y3XfA8k+aByAVg8DzbIDwUVGLwPCRb9l+iZPA8bJWwq/Bm8Dy0z2r3PmnwPP0JJUONa/A8RUTfjttt8DyOfpnaKXDwPNa4UyZ4cvA8HvMNcsZ08DxnLci9FHfwPK9nggljefA8+KE8VbF78DxA3Pag/33wPIkWsexNgPA80VBrOJyC8DwaiyWE6oTwPGLF3884h/A8q/+ZG4eJ8DzzOVRn1YvwPDx0DrMjjvA8hK7I/nGQ8DzN6IJKwJLwPBUjPZYOlfA8Xl334VyX8Dyml7Etq5nwPO/Ra3n5m/A8NwwmxUee8DyARuAQlqDwPMiAmlzkovA8ELtUqDKl8DxZ9Q70gKfwPKEvyT/PqfA86mmDix2s8DwypD3Xa67wPHre9yK6sPA8wxiybgiz8DwLU2y6VrXwPFSNJgalt/A8nMfgUfO58DzlAZudQbzwPC08VemPvvA8dnYPNd7A8Dy+sMmALMPwPAfrg8x6xfA8TyU+GMnH8DyYX/hjF8rwPOCZsq9lzPA8KdRs+7PO8DxxDidHAtHwPLpI4ZJQ0/A8AoOb3p7V8DxLvVUq7dfwPJP3D3Y72vA83DHKwYnc8DwkbIQN2N7wPGymPlkm4fA8teD4pHTj8Dz9GrPwwuXwPEZVbTwR6PA8jo8niF/q8DzWyeHTrezwPB8EnB/87vA8Zz5Wa0rx8DyweBC3mPPwPPiyygLn9fA8Qe2ETjX48DyJJz+ag/rwPNJh+eXR/PA8GpyzMSD/8Dxj1m19bgHxPKsQKMm8A/E89EriFAsG8Tw8hZxgWQjxPIW/VqynCvE8zfkQ+PUM8TwWNMtDRA/xPF5uhY+SEfE8p6g/2+AT8Tzv4vkmLxbxPDgdtHJ9GPE8gFduvssa8TzIkSgKGh3xPBHM4lVoH/E8WQadobYh8TyiQFftBCTxPOp6ETlTJvE8MrXLhKEo8Tx774XQ7yrxPMMpQBw+LfE8DGT6Z4wv8TxUnrSz2jHxPJ3Ybv8oNPE85RIpS3c28TwuTeOWxTjxPHaHneITO/E8v8FXLmI98TwH/BF6sD/xPFA2zMX+QfE8mHCGEU1E8TzhqkBdm0bxPCnl+qjpSPE8cR+19DdL8Ty6WW9Ahk3xPAKUKYzUT/E8S87j1yJS8TyTCJ4jcVTxPNxCWG+/VvE8JH0Suw1Z8Txtt8wGXFvxPLXxhlKqXfE8/itBnvhf8TxGZvvpRmLxPI6gtTWVZPE819pvgeNm8TwfFSrNMWnxPGhP5BiAa/E8sImeZM5t8Tz4w1iwHHDxPEH+EvxqcvE8iTjNR7l08TzScoeTB3fxPBqtQd9VefE8Y+f7KqR78TyrIbZ28n3xPPRbcMJAgPE8PJYqDo+C8TyF0ORZ3YTxPM0Kn6Urh/E8FkVZ8XmJ8TxefxM9yIvxPKe5zYgWjvE87/OH1GSQ8Tw4LkIgs5LxPIBo/GsBlfE8yaK2t0+X8TwR3XADnpnxPFoXK0/sm/E8olHlmjqe8Tzqi5/miKDxPDPGWTLXovE8ewAUfiWl8TzEOs7Jc6fxPAx1iBXCqfE8VK9CYRCs8Tyd6fysXq7xPOUjt/issPE8Ll5xRPuy8Tx2mCuQSbXxPL/S5duXt/E8Bw2gJ+a58TxQR1pzNLzxPJiBFL+CvvE84bvOCtHA8Twp9ohWH8PxPHIwQ6JtxfE8umr97bvH8TwDpbc5CsrxPEvfcYVYzPE8lBks0abO8TzcU+Yc9dDxPCWOoGhD0/E8bchatJHV8Ty2AhUA4NfxPP48z0su2vE8RneJl3zc8TyPsUPjyt7xPNfr/S4Z4fE8ICa4emfj8TxoYHLGteXxPLCaLBIE6PE8+dTmXVLq8TxBD6GpoOzxPIpJW/Xu7vE80oMVQT3x8Twbvs+Mi/PxPGP4idjZ9fE8rDJEJCj48Tz0bP5vdvrxPD2nuLvE/PE8heFyBxP/8TzOGy1TYQHyPBZW556vA/I8XpCh6v0F8jynyls2TAjyPPAEFoKaCvI8OD/QzegM8jyAeYoZNw/yPMmzRGWFEfI8Eu7+sNMT8jxaKLn8IRbyPKJic0hwGPI865wtlL4a8jwz1+ffDB3yPHwRoitbH/I8xEtcd6kh8jwNhhbD9yPyPFXA0A5GJvI8nfqKWpQo8jzmNEWm4iryPC9v//EwLfI8d6m5PX8v8jy/43OJzTHyPAceLtUbNPI8UVjoIGo28jyZkqJsuDjyPOHMXLgGO/I8KQcXBFU98jxzQdFPoz/yPLt7i5vxQfI8A7ZF5z9E8jxL8P8yjkbyPJQqun7cSPI83WR0yipL8jwlny4WeU3yPG3Z6GHHT/I8thOjrRVS8jz+TV35Y1TyPEeIF0WyVvI8j8LRkABZ8jzY/IvcTlvyPCA3RiidXfI8aHEAdOtf8jyxq7q/OWLyPPrldAuIZPI8QiAvV9Zm8jyKWumiJGnyPNKUo+5ya/I8HM9dOsFt8jxkCRiGD3DyPKxD0tFdcvI89H2MHax08jw8uEZp+nbyPIbyALVIefI8ziy7AJd78jwWZ3VM5X3yPF6hL5gzgPI8qNvp44GC8jzwFaQv0ITyPDhQXnseh/I8gIoYx2yJ8jzJxNISu4vyPBL/jF4JjvI8WjlHqleQ8jyicwH2pZLyPOutu0H0lPI8NOh1jUKX8jx8IjDZkJnyPMRc6iTfm/I8DZekcC2e8jxV0V68e6DyPJ4LGQjKovI85kXTUxil8jwvgI2fZqfyPHe6R+u0qfI8v/QBNwOs8jwIL7yCUa7yPFFpds6fsPI8maMwGu6y8jzh3eplPLXyPCkYpbGKt/I8c1Jf/di58jy7jBlJJ7zyPAPH05R1vvI8SwGO4MPA8jyVO0gsEsPyPN11AnhgxfI8JbC8w67H8jxt6nYP/cnyPLYkMVtLzPI8/17rppnO8jxHmaXy59DyPI/TXz420/I82A0aioTV8jwgSNTV0tfyPGmCjiEh2vI8sbxIbW/c8jz69gK5vd7yPEIxvQQM4fI8imt3UFrj8jzTpTGcqOXyPBzg6+f25/I8ZBqmM0Xq8jysVGB/k+zyPPSOGsvh7vI8PsnUFjDx8jyGA49ifvPyPM49Sa7M9fI8FngD+hr48jxgsr1FafryPKjsd5G3/PI88CYy3QX/8jw4YewoVAHzPIGbpnSiA/M8ytVgwPAF8zwSEBsMPwjzPFpK1VeNCvM8o4SPo9sM8zzsvknvKQ/zPDT5Azt4EfM8fDO+hsYT8zzFbXjSFBbzPA2oMh5jGPM8VuLsabEa8zyeHKe1/xzzPOdWYQFOH/M8L5EbTZwh8zx3y9WY6iPzPMAFkOQ4JvM8CUBKMIco8zxRegR81SrzPJm0vscjLfM84e54E3Iv8zwrKTNfwDHzPHNj7aoONPM8u52n9lw28zwD2GFCqzjzPE0SHI75OvM8lUzW2Uc98zzdhpAllj/zPCXBSnHkQfM8bvsEvTJE8zy3Nb8IgUbzPP9veVTPSPM8R6ozoB1L8zyQ5O3ra03zPNgeqDe6T/M8IVligwhS8zxpkxzPVlTzPLLN1hqlVvM8+geRZvNY8zxCQkuyQVvzPIt8Bf6PXfM81La/Sd5f8zwc8XmVLGLzPGQrNOF6ZPM8rGXuLMlm8zz2n6h4F2nzPD7aYsRla/M8hhQdELRt8zzOTtdbAnDzPBiJkadQcvM8YMNL85508zyo/QU/7XbzPPA3wIo7efM8OXJ61ol78zyCrDQi2H3zPMrm7m0mgPM8EiGpuXSC8zxbW2MFw4TzPKOVHVERh/M87M/XnF+J8zw0CpLorYvzPH1ETDT8jfM8xX4GgEqQ8zwOucDLmJLzPFbzehfnlPM8ny01YzWX8zznZ++ug5nzPC+iqfrRm/M8eNxjRiCe8zzAFh6SbqDzPAlR2N28ovM8UYuSKQul8zyZxUx1WafzPOL/BsGnqfM8KzrBDPar8zxzdHtYRK7zPLuuNaSSsPM8A+nv7+Cy8zxNI6o7L7XzPJVdZId9t/M83Zce08u58zwl0tgeGrzzPG8Mk2povvM8t0ZNtrbA8zz/gAcCBcPzPEe7wU1TxfM8kPV7maHH8zzZLzbl78nzPCFq8DA+zPM8aaSqfIzO8zyy3mTI2tDzPPoYHxQp0/M8Q1PZX3fV8zyLjZOrxdfzPNTHTfcT2vM8HAIIQ2Lc8zxkPMKOsN7zPK12fNr+4PM89rA2Jk3j8zw+6/Bxm+XzPIYlq73p5/M8zl9lCTjq8zwYmh9VhuzzPGDU2aDU7vM8qA6U7CLx8zzwSE44cfPzPDqDCIS/9fM8gr3Czw348zzK93wbXPrzPBIyN2eq/PM8W2zxsvj+8zykpqv+RgH0POzgZUqVA/Q8NBsgluMF9Dx9VdrhMQj0PMaPlC2ACvQ8DspOec4M9DxWBAnFHA/0PJ8+wxBrEfQ853h9XLkT9DwwszeoBxb0PHjt8fNVGPQ8wSesP6Qa9DwJYmaL8hz0PFGcINdAH/Q8mtbaIo8h9DzjEJVu3SP0PCtLT7orJvQ8c4UJBnoo9Dy7v8NRyCr0PAX6fZ0WLfQ8TTQ46WQv9DyVbvI0szH0PN2orIABNPQ8J+NmzE829DxvHSEYnjj0PLdX22PsOvQ8/5GVrzo99DxIzE/7iD/0PJEGCkfXQfQ82UDEkiVE9Dwhe37ec0b0PGq1OCrCSPQ8su/ydRBL9Dz7Ka3BXk30PENkZw2tT/Q8jJ4hWftR9DzU2NukSVT0PBwTlvCXVvQ8ZU1QPOZY9DyuhwqINFv0PPbBxNOCXfQ8Pvx+H9Ff9DyGNjlrH2L0PNBw87ZtZPQ8GKutArxm9Dxg5WdOCmn0PKgfIppYa/Q88lnc5aZt9Dw6lJYx9W/0PILOUH1DcvQ8yggLyZF09DwTQ8UU4Hb0PFx9f2AuefQ8pLc5rHx79Dzs8fP3yn30PDUsrkMZgPQ8fWZoj2eC9DzGoCLbtYT0PA7b3CYEh/Q8VxWXclKJ9DyfT1G+oIv0POiJCwrvjfQ8MMTFVT2Q9Dx5/n+hi5L0PME4Ou3ZlPQ8CXP0OCiX9DxSra6Edpn0PJvnaNDEm/Q84yEjHBOe9DwrXN1nYaD0PHOWl7OvovQ8vdBR//2k9DwFCwxLTKf0PE1FxpaaqfQ8lX+A4uir9DzfuTouN670PCf09HmFsPQ8by6vxdOy9Dy3aGkRIrX0PACjI11wt/Q8Sd3dqL659DyRF5j0DLz0PNlRUkBbvvQ8IowMjKnA9DxqxsbX98L0PLMAgSNGxfQ8+zo7b5TH9DxDdfW64sn0PIyvrwYxzPQ81OlpUn/O9DwdJCSezdD0PGVe3ukb0/Q8rpiYNWrV9Dz20lKBuNf0PD4NDc0G2vQ8h0fHGFXc9DzQgYFko970PBi8O7Dx4PQ8YPb1+z/j9DyoMLBHjuX0PPJqapPc5/Q8OqUk3yrq9DyC394qeez0PMoZmXbH7vQ8FFRTwhXx9Dxcjg0OZPP0PKTIx1my9fQ87AKCpQD49Dw1PTzxTvr0PH539jyd/PQ8xrGwiOv+9DwO7GrUOQH1PFcmJSCIA/U8n2Dfa9YF9Tzompm3JAj1PDDVUwNzCvU8eQ8OT8EM9TzBSciaDw/1PAqEguZdEfU8Ur48MqwT9Tyb+PZ9+hX1POMysclIGPU8K21rFZca9Tx0pyVh5Rz1PL3h36wzH/U8BRya+IEh9TxNVlRE0CP1PJWQDpAeJvU838rI22wo9TwnBYMnuyr1PG8/PXMJLfU8t3n3vlcv9TwBtLEKpjH1PEnua1b0M/U8kSgmokI29TzZYuDtkDj1PCKdmjnfOvU8a9dUhS099TyzEQ/Rez/1PPtLyRzKQfU8RIaDaBhE9TyMwD20Zkb1PNX69/+0SPU8HTWySwNL9Txmb2yXUU31PK6pJuOfT/U89uPgLu5R9Tw/Hpt6PFT1PIhYVcaKVvU80JIPEtlY9TwYzcldJ1v1PGAHhKl1XfU8qkE+9cNf9Tzye/hAEmL1PDq2soxgZPU8gvBs2K5m9TzMKick/Wj1PBRl4W9La/U8XJ+bu5lt9Tyk2VUH6G/1PO0TEFM2cvU8Nk7KnoR09Tx+iITq0nb1PMbCPjYhefU8D/34gW979TxXN7PNvX31PKBxbRkMgPU86KsnZVqC9Twx5uGwqIT1PHkgnPz2hvU8wlpWSEWJ9TwKlRCUk4v1PFPPyt/hjfU8mwmFKzCQ9TzjQz93fpL1PCx++cLMlPU8dbizDhuX9Ty98m1aaZn1PAUtKKa3m/U8TWfi8QWe9TyXoZw9VKD1PN/bVomiovU8JxYR1fCk9TxvUMsgP6f1PLmKhWyNqfU8AcU/uNur9TxJ//kDKq71PJE5tE94sPU82nNum8ay9TwjrijnFLX1PGvo4jJjt/U8syKdfrG59Tz8XFfK/7v1PESXERZOvvU8jdHLYZzA9TzVC4at6sL1PB5GQPk4xfU8ZoD6RIfH9TyuurSQ1cn1PPf0btwjzPU8QC8pKHLO9TyIaeNzwND1PNCjnb8O0/U8GN5XC13V9TxiGBJXq9f1PKpSzKL52fU88oyG7kfc9Tw6x0A6lt71PIQB+4Xk4PU8zDu10TLj9TwUdm8dgeX1PFywKWnP5/U8pOrjtB3q9TzuJJ4AbOz1PDZfWEy67vU8fpkSmAjx9TzG08zjVvP1PA8Ohy+l9fU8WEhBe/P39TyggvvGQfr1POi8tRKQ/PU8MfdvXt7+9Tx5MSqqLAH2PMJr5PV6A/Y8CqaeQckF9jxT4FiNFwj2PJsaE9llCvY85FTNJLQM9jwsj4dwAg/2PHXJQbxQEfY8vQP8B58T9jwFPrZT7RX2PE54cJ87GPY8l7Iq64ka9jzf7OQ22Bz2PCcnn4ImH/Y8b2FZznQh9jy5mxMawyP2PAHWzWURJvY8SRCIsV8o9jyRSkL9rSr2PNuE/Ej8LPY8I7+2lEov9jxr+XDgmDH2PLMzKyznM/Y8/G3ldzU29jxFqJ/Dgzj2PI3iWQ/SOvY81RwUWyA99jweV86mbj/2PGaRiPK8QfY8r8tCPgtE9jz3Bf2JWUb2PEBAt9WnSPY8iHpxIfZK9jzQtCttRE32PBnv5biST/Y8YimgBOFR9jyqY1pQL1T2PPKdFJx9VvY8OtjO58tY9jyEEokzGlv2PMxMQ39oXfY8FIf9yrZf9jxcwbcWBWL2PKb7cWJTZPY87jUsrqFm9jw2cOb572j2PH6qoEU+a/Y8x+RakYxt9jwQHxXd2m/2PFhZzygpcvY8oJOJdHd09jzpzUPAxXb2PDEI/gsUefY8ekK4V2J79jzCfHKjsH32PAu3LO/+f/Y8U/HmOk2C9jw=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2500]}},\"selected\":{\"id\":\"4315\"},\"selection_policy\":{\"id\":\"4314\"}},\"id\":\"4300\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"O: 2.964E-04 +- 1.396E-05\"},\"renderers\":[{\"id\":\"4252\"}]},\"id\":\"4266\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"4270\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"4348\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"630a92cf-3c5b-4ffc-a74c-a868d8ea7885\",\"root_ids\":[\"4348\"],\"roots\":{\"4348\":\"7e81526e-27f8-4d89-8bf3-808d385edbf4\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "4348" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp1_Einstein Self-Diffusion Coefficients_9" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "water_chemical.run.EinsteinDiffusionCoefficients(atom_selection=water_group, data_range=2500)" + ] + }, + { + "cell_type": "markdown", + "id": "0bb6d22b", + "metadata": {}, + "source": [ + "# BMIM-BF4 RTIL" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "d040986f", + "metadata": {}, + "outputs": [], + "source": [ + "bmim_bf4 = DataHub(\n", + " url=\"https://github.com/zincware/DataHub/tree/main/Bmim_BF4\"\n", + ")\n", + "bmim_bf4.get_file()\n", + "bmim_file = bmim_bf4.file_raw" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "758e5287", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:48:21,384 - INFO: Creating a new experiment!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:09<00:00, 9.19s/it]\n", + "Applying transformation 'Unwrapped_Positions' to 'N': 100%|█| 1/1 [00:\n", + "Applying transformation 'Unwrapped_Positions' to 'C': 100%|█| 1/1 [00:\n", + "Applying transformation 'Unwrapped_Positions' to 'H': 100%|█| 1/1 [00:\n", + "Applying transformation 'Unwrapped_Positions' to 'B': 100%|█| 1/1 [00:\n", + "Applying transformation 'Unwrapped_Positions' to 'F': 100%|█| 1/1 [00:\n" + ] + } + ], + "source": [ + "project.add_experiment(\"bmim_bf4\", simulation_data=bmim_file)\n", + "project.experiments.bmim_bf4.run.CoordinateUnwrapper()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "5096f76c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:48:33,915 - INFO: Building molecular graph from configuration for bmim\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████| 1250/1250 [00:15<00:00, 80.88it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:49:19,499 - INFO: Performing molecule number isomorphism test.\n", + "2022-01-31 10:49:19,501 - INFO: Amount of molecules test passed.\n", + "2022-01-31 10:49:19,502 - INFO: Performing group equality isomorphism test.\n", + "2022-01-31 10:49:19,502 - INFO: Group equality isomorphism test passed.\n", + "2022-01-31 10:49:19,682 - INFO: Mapping molecule graphs onto trajectory for bmim\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23it [00:08, 2.64it/s] \n", + "Applying transformation 'Positions' to 'bmim': 100%|█| 1/1 [00:00<00:0" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:49:28,935 - INFO: Building molecular graph from configuration for bf4\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "100%|██████████████████████████████| 250/250 [00:02<00:00, 114.48it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-01-31 10:49:33,606 - INFO: Performing molecule number isomorphism test.\n", + "2022-01-31 10:49:33,607 - INFO: Amount of molecules test passed.\n", + "2022-01-31 10:49:33,608 - INFO: Performing group equality isomorphism test.\n", + "2022-01-31 10:49:33,610 - INFO: Group equality isomorphism test passed.\n", + "2022-01-31 10:49:33,726 - INFO: Mapping molecule graphs onto trajectory for bf4\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████| 1/1 [00:00<00:00, 7.68it/s]\n", + "Applying transformation 'Positions' to 'bf4': 100%|█| 1/1 [00:00<00:00\n" + ] + } + ], + "source": [ + "bmim_molecule = mdsuite.Molecule(\n", + " name=\"bmim\",\n", + " species_dict={\"C\": 8, \"N\": 2, \"H\": 15},\n", + " amount=50,\n", + " cutoff=1.9,\n", + " reference_configuration=100,\n", + " )\n", + "bf_molecule = mdsuite.Molecule(\n", + " name=\"bf4\",\n", + " smiles=\"[B-](F)(F)(F)F\",\n", + " amount=50,\n", + " cutoff=2.4,\n", + " reference_configuration=100,\n", + ")\n", + "project.experiments[\"bmim_bf4\"].run.MolecularMap(\n", + " molecules=[bmim_molecule, bf_molecule]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "67a3f2ee", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running mini batch loop 1 / 2: 100%|████| 5/5 [00:03<00:00, 1.32it/s]\n", + "Running mini batch loop 2 / 2: 100%|████| 5/5 [00:03<00:00, 1.34it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"4690\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"4690\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"4690\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"4690\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"3c78a2c4-b36e-451c-a941-a0989c7cb9c2\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"5653\"},{\"id\":\"5651\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"5654\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"5320\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5256\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5208\"}]},\"id\":\"5207\",\"type\":\"Legend\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5358\"},\"group\":null,\"major_label_policy\":{\"id\":\"5359\"},\"ticker\":{\"id\":\"5325\"}},\"id\":\"5324\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5255\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"4704\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4707\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5260\"}]},\"id\":\"5259\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"5316\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5318\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEy3gW3Ku1Y/+t32Vd0opj+qJffo47TDP4qmclVwb74/knIeWkgKzz/URHywjkPbP+zmLCNo3OE/vMyoEQK04z/i0QUl5bXqPzPFgwYdh+0/2RGmX1Qt8T/AEH3Kkxr1P9WvrH5K0/Y/oRmv7EsF+D+x5+kdf5P5PwIIZ4TfG/s/9pnbkYIu+j9mKFR0F5X6P18MDeloFPs/u7m1APnt+D8GM5fo3Ov4P3kVbC8ufvc/klhN2rgv9z9FIJMNR/D0P8V1H/4fXPY/e+jeF1QA9T81PRYmMZTyPyMY+gSyS/I/FqFpu4kh8z8ZHH7JeOXyP18jRJAkgvE/++MqDuH38T/B4X02kpzxPzz4fNqfxPA/ao0mHHy17j8vraeAmAHsP1jsoR6Kbes/Hdt4iTwo6j/fjPA2EaHpPysvMDL02uY/fvBj1qz05j9BfbRLlFrnPyRSd9k1Tec/k9Qavelv5D+bVL21YADkP5KzizgkKuM/f3XYeuFY5T+myGZP9gHlP58WNFis7eY/Qjzse4Wc5z8GuPDMgijoP2gQMJfIhuk/0DP8Y91X6z8Bikh5hNzpP6XEUYPEwOo/wwWpCxEV7D+wkgB5+pnqP96BJhDMM+s/9ZHSXpp+7D9wDIGBBgLwP1v5ygwKye8/dxrkjLRK7z8HmHM3sXnwP8bIaOR6LfA/HLcMPVdI8D8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5361\"},\"selection_policy\":{\"id\":\"5360\"}},\"id\":\"5346\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4698\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5252\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5192\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5243\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5244\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5191\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5322\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5202\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5251\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5325\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"5324\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5327\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"H_B\"},\"renderers\":[{\"id\":\"5246\"}]},\"id\":\"5260\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"5205\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"5329\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5355\"},\"group\":null,\"major_label_policy\":{\"id\":\"5356\"},\"ticker\":{\"id\":\"5329\"}},\"id\":\"5328\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"5242\"}},\"id\":\"5247\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5257\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"5199\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5203\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5245\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5254\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"5328\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5331\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5200\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5346\"},\"glyph\":{\"id\":\"5347\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5349\"},\"nonselection_glyph\":{\"id\":\"5348\"},\"view\":{\"id\":\"5351\"}},\"id\":\"5350\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5248\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbpHvaQLfg/P8ISg98yOkAXcPnSU9XLPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzX3HXZQsiD+ZjigOyHSaPxp6pXM/LKc/spULmMMVtj+AlNGW6GnBP71DxoCfvck/a8/XDunhzj9CnGt6dD7QP4gzly0AvtQ/fh4Woa7M1z/vkn7a5AHdP3R3owQkHuA/P3N8gmgz4z/XuF8Zs3LmPwltcUQ0Buc/kHNINwRb6j+DOw7wTH7rP0ZLF8nCouw/pkAY8tS87D/a0Q7IRCPvPxZ4bZ0kvPE/x0ak1mm08j8Dx1BFyafyP62fKqylwfI/BYTryceJ8z8peD/jyKTzPwOMRi83GvM/Nl9PkCPn8z9hCcJCZWL0P1j2O/C6rvQ//benwEt89D/ht34EdRD0PwDkp0b2/fI/mVENHZ2T8z9XUnpFbmPzP5z2kngbM/M/XZHW6YCU8j/XCS3EXqfyP8GRSdecvPE/FwLXEY7G8D9gmNmcMHvwP4bBE8AH+O8/1ytirXOb8D9RZBTIt/3vP8QEfJEnGe8/4hvMRFCV7j8VJaaSIxvvP11NCEVknO4/UkYIfyFz7D85Mgoy+j3sP0D2Xegh8us/QqsD9heM7D/gqdlPktzqPz3E3l6y6+o/uSydKilc6j9CLeeZBU7qP1NSZl64h+k/qAxf1OxQ6z8NTwIkuSzsPzVo9FN0bOw/dhfHIs6+7D/He1SCRfHsP2LQdlHQ2Ow/D68uK0ac7T8aiIHcJh7uP1pPTAC2Eu4/r2tjGDYZ7j819i6u+KnuP3lOKnGKyO4/H12nySkP8D8fjgqbiOTvP0XesH8VFvA/KXzjTMUK8D+TMMxUKUDwP+dp3ujuSfA/huhw8P977z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4737\"},\"selection_policy\":{\"id\":\"4736\"}},\"id\":\"4722\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5204\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5196\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"4818\"}},\"id\":\"4814\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"5177\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5266\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5141\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"5272\"}],\"center\":[{\"id\":\"5275\"},{\"id\":\"5279\"},{\"id\":\"5311\"}],\"left\":[{\"id\":\"5276\"}],\"renderers\":[{\"id\":\"5298\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5300\"},\"toolbar\":{\"id\":\"5287\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5264\"},\"x_scale\":{\"id\":\"5268\"},\"y_range\":{\"id\":\"5266\"},\"y_scale\":{\"id\":\"5270\"}},\"id\":\"5263\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"4787\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5147\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5162\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5268\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4805\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5202\"},\"group\":null,\"major_label_policy\":{\"id\":\"5203\"},\"ticker\":{\"id\":\"5169\"}},\"id\":\"5168\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4753\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"N_C\"},\"renderers\":[{\"id\":\"4778\"}]},\"id\":\"4792\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"4783\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"5346\"}},\"id\":\"5351\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null},\"id\":\"4845\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5190\"},\"glyph\":{\"id\":\"5191\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5193\"},\"nonselection_glyph\":{\"id\":\"5192\"},\"view\":{\"id\":\"5195\"}},\"id\":\"5194\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"N_N\"},\"renderers\":[{\"id\":\"4726\"}]},\"id\":\"4740\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"4816\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4740\"}]},\"id\":\"4739\",\"type\":\"Legend\"},{\"attributes\":{\"tools\":[{\"id\":\"5280\"},{\"id\":\"5281\"},{\"id\":\"5282\"},{\"id\":\"5283\"},{\"id\":\"5284\"},{\"id\":\"5285\"},{\"id\":\"5313\"}]},\"id\":\"5287\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"5286\"}},\"id\":\"5282\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4780\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"5168\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5171\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4800\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4714\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5139\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5099\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5348\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4748\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5284\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5349\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"5172\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5175\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXsrrydxQWkARw0rHedVDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzfOgvzjYfT++zKgRArSTP0QmpF5fUZg/zaQGg2iJqD9mn0qs7BKzP6tsrZvC+7o/4l+zJ+MMxz8fJLW9mqrLP8LHswcc9tA/+t32Vd0o1j95TyOvNKzbPz6GZ/jlQOA//j0OfFKn4j/Jp0cmw1LlPzcsqKzAYec/ErJHDJrG6j93aRrJF9XtP4z5JiWTfu8/fe7MPkfn8D/yveZoMRbyP/MQCDbQofM/qztT/Pf+9D9Q19Yd2W31P9tQhMU6HPY/+TCRygOM9j++fdfqZ5L2P5HAOnVf+PU/alCRkx1/9j+nBm5N+cr2P+heS1CFPfc/KY2jSPQ29z9CfVNqXN32P2EVbFIf5PU/vMORZ4ii9D9uRG8yvmP0P8G5fdRxd/M/4L8ea/cq8z+rVmEXiYryP/Fetk+SpfE/5yXvPN1K8T+GCgWzYNjwPxIX4+xt5+8/gNlNLi0m7j//6klumoPsP/IwCU6iZus/uywHqeCW6z8dftZD3p3qP6s4aXsEAeo/AzeduR3V6T+KAjB2LEjpP3pMRA1oNek/6hOjn9kg6D8Yrn64ik7oP42/8joDAOk//PJb4r1A6T/iIOeb3cPoPxjx3sARkOg/0R16voKz6D+M6QRmhhbpP9Vg7qXVWek/4Lh5TALT6T+LzxV2mJTqP9VqxoI63Os/SbYK0xOA7D9SQXq4u5TsP+ILDUNlgu0/ihd0vEpz7j95yIolM/XuP5Ge97GNpe8/d6OEAUgz8D93udHwvozwP63AglS4p/A/a/3T0ie38D8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5413\"},\"selection_policy\":{\"id\":\"5412\"}},\"id\":\"5398\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4809\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5304\",\"type\":\"AllLabels\"},{\"attributes\":{\"below\":[{\"id\":\"5168\"}],\"center\":[{\"id\":\"5171\"},{\"id\":\"5175\"},{\"id\":\"5207\"}],\"left\":[{\"id\":\"5172\"}],\"renderers\":[{\"id\":\"5194\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5196\"},\"toolbar\":{\"id\":\"5183\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5160\"},\"x_scale\":{\"id\":\"5164\"},\"y_range\":{\"id\":\"5162\"},\"y_scale\":{\"id\":\"5166\"}},\"id\":\"5159\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"tools\":[{\"id\":\"4812\"},{\"id\":\"4813\"},{\"id\":\"4814\"},{\"id\":\"4815\"},{\"id\":\"4816\"},{\"id\":\"4817\"},{\"id\":\"4845\"}]},\"id\":\"4819\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4786\"},\"group\":null,\"major_label_policy\":{\"id\":\"4787\"},\"ticker\":{\"id\":\"4753\"}},\"id\":\"4752\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5046\"},\"group\":null,\"major_label_policy\":{\"id\":\"5047\"},\"ticker\":{\"id\":\"5013\"}},\"id\":\"5012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"5272\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5275\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5307\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4798\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5270\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4835\"},\"group\":null,\"major_label_policy\":{\"id\":\"4836\"},\"ticker\":{\"id\":\"4809\"}},\"id\":\"4808\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5300\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"5096\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4815\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5108\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5273\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4817\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5294\"},\"glyph\":{\"id\":\"5295\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5297\"},\"nonselection_glyph\":{\"id\":\"5296\"},\"view\":{\"id\":\"5299\"}},\"id\":\"5298\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5312\"}]},\"id\":\"5311\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"4752\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4755\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5297\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5152\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4774\"},\"glyph\":{\"id\":\"4775\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4777\"},\"nonselection_glyph\":{\"id\":\"4776\"},\"view\":{\"id\":\"4779\"}},\"id\":\"4778\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5286\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5169\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5164\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGeQzyt/uHQ/xzR3rbsDxj8V7F7NeZnmP7n3e/5b4vI/rPeH/ztf9T+u8d30ihL1P4pDfZJX/vM/nY7y1dTJ8j9QxLw2SYHxP+CG2tC7v/A/ZP5pOD2r8D8QJDlnpHzwP9rB24vJ3fA/e2sbsROm8T/+h5lEyjzzP3iENdhH+vQ/iBa6Yi019j/rNkOiisv2P8giqqChivY/mF8d3LQB9j8hGyEOknH1Pybguwj21PQ/8yTjo9kp9D8DarPifbPzP8H872CHVvM/lAHQyrgG8z/G+2jzvJ3yP++8uuo6SvI/+a1fOZwv8j8ZrM3P9wryPyG1XZY2jfE/7bUwSJlQ8T9TAxCjFPrwP98zTJuhevA/5w2dbl458D+k/EdUMwrwP9pBP4Ujme8/bN6c/hdp7z+BTMEB+mjvP4usR//6KO8/6o9HFXPn7j9zEJ7QN5XuP3GCkzRlZu4/uMYPv8s/7j9QmlNUUSnuPzmb+DwrOO4/UdwUKd4l7j8FCntP2knuP1g9933KZ+4/S7/UgbKi7j9tkg1ck/7uP6PR0BkpFO8/efWP43Fi7z+C6Lj2qpTvP7Vmg2tEvO8/Cpte/0zv7z+PXEP7WgrwP+wcNtadMPA/rJXgqpAl8D/QK4RkHCXwP5ds+Xj7LPA/7DHyp5pD8D96/XH5/UzwP2hdhmL6UPA/ECCMnGBg8D+STsSUjl7wPwuYkaf/RPA/rNDkMP1S8D+iFAbuDFLwP5hpjIQ9TfA/6HrD5Rcn8D/1v/prAyPwP+MKQSDnDPA/6gZhdn3n7z89GCSKzc/vPxtkqYndqu8/+TE15C2v7z/7c3O2227vP6X0mBGpYe8/seo0hE1c7z9RWHa90TfvP02+tkfNEu8/d/KFwS7h7j8uVe0o1MvuP5JHSy8it+4/ZxW+gsyk7j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5309\"},\"selection_policy\":{\"id\":\"5308\"}},\"id\":\"5294\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4731\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5281\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5153\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"5116\"}],\"center\":[{\"id\":\"5119\"},{\"id\":\"5123\"},{\"id\":\"5155\"}],\"left\":[{\"id\":\"5120\"}],\"renderers\":[{\"id\":\"5142\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5144\"},\"toolbar\":{\"id\":\"5131\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5108\"},\"x_scale\":{\"id\":\"5112\"},\"y_range\":{\"id\":\"5110\"},\"y_scale\":{\"id\":\"5114\"}},\"id\":\"5107\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"5160\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4792\"}]},\"id\":\"4791\",\"type\":\"Legend\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4838\"},\"group\":null,\"major_label_policy\":{\"id\":\"4839\"},\"ticker\":{\"id\":\"4805\"}},\"id\":\"4804\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"B_F\"},\"renderers\":[{\"id\":\"5402\"}]},\"id\":\"5416\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4818\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4784\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5285\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5199\"},\"group\":null,\"major_label_policy\":{\"id\":\"5200\"},\"ticker\":{\"id\":\"5173\"}},\"id\":\"5172\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"5276\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5279\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy33HXZQsaD8ipfgmcFOcP0/ARTD3yMM/3KlZz6kt2j9r/+3jawXoP6IZxYFplPA/WJ6Gb/Go9T/IZS5kDLL6P6jqudurDv4/NNIaAVkYAEBI/cFhTIMAQHCog2+bQgFAOpuQgwLsAUCgLhE5k7oBQBcXHSiaKQBAKETnQw4C/T/EPnFEps36PyklHn9Wuvk/dkvJKPkx+j+sMTmv4n76P6hIRR8NUfo/p9FkBM4l+j9276Y9aXT5PzWu+dI5PPg/63qGu4Up9j/RsKk0AgP0P9X6r/v7rfI/N7BAyENj8T893iE0+0XvP8ufvT96iuw/OOGFZPZY6j9+J7MyZbboP17qNZHpTuc/qIlEclmM5j8Uw+mfDrzlP6ZhStJtNuU/wku04jOO5D/vP1NsgPvkP/90r34z8eQ/cDkbYgYN5T8SR9QvpeHlP7DGxeOg/OY/y24b8biO5z9g+SzhvfPoP8qvif6WMek/LVj8zaJx6j8CDcpr59HqPx4lzEMJses/1idIBrQa7D/3Yfjds2ztPz4B6jIwOe4/H9Uw1dKO7z/TSORHYVHwP5EMXFdYyvA/6dLSSELc8D9USBWHZ/jwP9scnU33DfE/Hx9QJe1m8T9pcQ1h867xP62L+HBfs/E/Stoc5dbX8T9ENLIKyLnxPwRfJqgNt/E/KDIT4Kno8T98v2Mz63vxP58GsBPwlvE/wmCNpuct8T+wJroJ7hXxP7MKo0tFpvA/XrHFNEOJ8D9nrd98+zLwP4y9xrSEK/A/G3t+s8MA8D8UnA5LQr7vP07M0Xh9Je8/hyA8AvDb7j+m5cpqiH3uPygv+hZ97O0/fv0ZMmGB7T/f/7MEZy7tP2tXCXdv7+w/BJ3p/2TT7D8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4945\"},\"selection_policy\":{\"id\":\"4944\"}},\"id\":\"4930\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5280\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"H_F\"},\"renderers\":[{\"id\":\"5298\"}]},\"id\":\"5312\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"5306\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"5157\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"5166\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5410\"},\"group\":null,\"major_label_policy\":{\"id\":\"5411\"},\"ticker\":{\"id\":\"5377\"}},\"id\":\"5376\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4813\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5303\"},\"group\":null,\"major_label_policy\":{\"id\":\"5304\"},\"ticker\":{\"id\":\"5277\"}},\"id\":\"5276\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"5209\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"5283\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4826\"},\"glyph\":{\"id\":\"4827\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4829\"},\"nonselection_glyph\":{\"id\":\"4828\"},\"view\":{\"id\":\"4831\"}},\"id\":\"4830\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"4774\"}},\"id\":\"4779\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5098\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5399\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5100\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null},\"id\":\"5313\",\"type\":\"HoverTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5295\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5306\"},\"group\":null,\"major_label_policy\":{\"id\":\"5307\"},\"ticker\":{\"id\":\"5273\"}},\"id\":\"5272\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5400\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5416\"}]},\"id\":\"5415\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"5176\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5401\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5125\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5140\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5277\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5303\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"4804\"}],\"center\":[{\"id\":\"4807\"},{\"id\":\"4811\"},{\"id\":\"4843\"}],\"left\":[{\"id\":\"4808\"}],\"renderers\":[{\"id\":\"4830\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4832\"},\"toolbar\":{\"id\":\"4819\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4796\"},\"x_scale\":{\"id\":\"4800\"},\"y_range\":{\"id\":\"4798\"},\"y_scale\":{\"id\":\"4802\"}},\"id\":\"4795\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"5398\"}},\"id\":\"5403\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5101\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4812\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"4808\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4811\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5264\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"4752\"}],\"center\":[{\"id\":\"4755\"},{\"id\":\"4759\"},{\"id\":\"4791\"}],\"left\":[{\"id\":\"4756\"}],\"renderers\":[{\"id\":\"4778\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4780\"},\"toolbar\":{\"id\":\"4767\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4744\"},\"x_scale\":{\"id\":\"4748\"},\"y_range\":{\"id\":\"4746\"},\"y_scale\":{\"id\":\"4750\"}},\"id\":\"4743\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"5173\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"5294\"}},\"id\":\"5299\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5138\"},\"glyph\":{\"id\":\"5139\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5141\"},\"nonselection_glyph\":{\"id\":\"5140\"},\"view\":{\"id\":\"5143\"}},\"id\":\"5142\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"4750\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4746\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4802\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5404\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"4793\",\"type\":\"HoverTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj/HNZHhdgP93CzrjJCuo/4uXQR7SeF0BMdySlYCvbP64OYmHDobQ/UdjJ4NeZ2T+a2H7VD1HzP7juzVSMrgBAMdUaT19dAEAR+sU2SxD4P1sPwDhxvvA/AQly49BE+z+LsZZZQ4DxP7amavhjJOg/6FyF1/6b6D8urIj/ltTrP3KPkVS4/fA/Yv/K3Hw68T9QnL731/7qPyp9x46qS+4/2IoOdvas7T/fHJ08WlHrPyQQxy87Oe0/dRjfNYDT7z98ySJ4hxfxPwQQPryVQfE/lAXGDqPW8D/u5imoWgPxP/NQsEPDrvA/uTlx5mfY7z93GJZSUgvwP3+hyC5UV/A/bszi2e2e8D+NgacOMafwP+Y5SBMCkPA/Fp1BRHFY8D9HHn05NUvwP0FnwiChcvA/ooSRmXR88D+9zqpRTX3wP5kqF6mYe/A/RkvPTyR98D9FC0LMwoLwPxBDjXOilvA/bqlsB9eN8D+OF34QlJDwP3hqJKg1kfA/Ln6YoluQ8D8TVCIjGY3wP/Yvoht2i/A/NUUW31WF8D8qfNwNFnvwP4YTSd88bvA/50l48iFW8D+A4hKCo1HwP10w8pQfT/A/kPXc+3468D9wF1O/2zLwP7TKLA8dGfA/+tWFgYUS8D/8u0jx8wPwP2EGfEqj9u8/H/hKFULg7z81V0s+0K7vP576rb6Vv+8/EnDYgL2f7z+WVuE06JzvP5Rnm27wp+8/Cll521mc7z8EtJ07qKDvP6Uo297Qi+8/yFWPQduH7z/j5MkObYDvPx5G69XXdO8/r/i6jIpg7z9N9fTax2bvP0J42suFYe8/zthoCN1n7z8A1U67PnHvP6+6149NhO8/cT2gXrR37z+Fpqs/pHTvP6uYmAa/ae8/inq2p3d97z9gymYj3nbvP1LBin8qeO8/TDnZw7CS7z/9XDy2t43vPwHkn+1Zie8/cVTWTmmT7z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5205\"},\"selection_policy\":{\"id\":\"5204\"}},\"id\":\"5190\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLfcZ9li2wPzxZWP5AMhdAb1dWbXH0JkBRsKSoqZfGP+agSvR6gbU/4B//gRq22D+Cp/h2XajnP6YxEt6SKeY/C+R/E7q63D+y6PfEiDHoP3J5+1IqEvk/JDtD2m7d4z80pt3rRdbbP2O0Rw9fu+A/gKogRc8b8D9tFCHZqHT2P7g0G+K6Cvg/OIMeB6Yr9T8C3lZCz4LrP6/Lpb5/iOs/3ZuRJXk87T9Z7EdStQXtP52644Xpse0/305GiQyT7j/zzdPABf/uP/bnqK/CNe8/mO/iF+M57z/IOr/B+rPuP1h5YT4ABO8/uh/o7Qh98D+8mjaAj/7wP9h3C1dBU/E/Uqhj6ekx8T8ijj/3/hnxP+js/Hm6VfE/tC5PDmg/8T8FO4tQ3jTxP3IWR5/5S/E/YKR/Gnoi8T/lmJq0/zPxPzHuzM9sRfE/KEEksdIt8T9OKIJNxy3xP8xPjmhWLfE/UDPEnYoe8T/U3YlTaxDxP/FjynuYHPE/wuJejqEE8T+2ijQOmfbwP6jT6ipMvfA/euj+oVW68D8VbgWqKILwP9BKSwU8RfA/w/oQikFZ8D9zzwD03TLwPy8bCv3/OPA/edzpfREU8D/cliqJDwHwPzz9xEHvnu8/n5yQodhO7z/JC7gyXxTvP93tF0sh7+4/Te/cUGrh7j8J3YMTNsPuPxr3J166yu4/89jokRnk7j/ItI6mYbHuP/7aN0Qzpu4/QxP88W6f7j9ToxaiDX/uPx7zwYgzee4/hUdQpD6P7j/OW4VdjHzuP8sBp7/Rju4/qDncrGJj7j8dROJT027uP2cQgxtdbO4/hBbg6gyj7j8hSWA8xZ/uP/X472jkje4//mNViNTb7j/dPr8MHQ3vP/l3+lK36+4/Hu6Ii9UF7z9LeEGxhx7vP7eK10PVL+8/1NhHz6s67z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4841\"},\"selection_policy\":{\"id\":\"4840\"}},\"id\":\"4826\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5347\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4744\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5095\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"4804\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4807\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5296\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4796\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4786\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5148\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4701\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"5376\"}],\"center\":[{\"id\":\"5379\"},{\"id\":\"5383\"},{\"id\":\"5415\"}],\"left\":[{\"id\":\"5380\"}],\"renderers\":[{\"id\":\"5402\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5404\"},\"toolbar\":{\"id\":\"5391\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5368\"},\"x_scale\":{\"id\":\"5372\"},\"y_range\":{\"id\":\"5370\"},\"y_scale\":{\"id\":\"5374\"}},\"id\":\"5367\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"tools\":[{\"id\":\"5332\"},{\"id\":\"5333\"},{\"id\":\"5334\"},{\"id\":\"5335\"},{\"id\":\"5336\"},{\"id\":\"5337\"},{\"id\":\"5365\"}]},\"id\":\"5339\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"5151\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"F_F\"},\"renderers\":[{\"id\":\"5454\"}]},\"id\":\"5468\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"4700\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4703\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4723\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5451\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"5450\"}},\"id\":\"5455\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5338\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5370\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5453\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5372\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5452\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5468\"}]},\"id\":\"5467\",\"type\":\"Legend\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4734\"},\"group\":null,\"major_label_policy\":{\"id\":\"4735\"},\"ticker\":{\"id\":\"4701\"}},\"id\":\"4700\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5150\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4732\",\"type\":\"AllLabels\"},{\"attributes\":{\"callback\":null},\"id\":\"5417\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5398\"},\"glyph\":{\"id\":\"5399\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5401\"},\"nonselection_glyph\":{\"id\":\"5400\"},\"view\":{\"id\":\"5403\"}},\"id\":\"5402\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"5376\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5379\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5374\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5368\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5117\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4832\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"4835\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4958\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5098\"},\"group\":null,\"major_label_policy\":{\"id\":\"5099\"},\"ticker\":{\"id\":\"5065\"}},\"id\":\"5064\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5110\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4828\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4931\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4995\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5065\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"4722\"}},\"id\":\"4727\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"4974\"}},\"id\":\"4970\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"4838\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"4878\"}},\"id\":\"4883\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5058\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5121\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"4700\"}],\"center\":[{\"id\":\"4703\"},{\"id\":\"4707\"},{\"id\":\"4739\"}],\"left\":[{\"id\":\"4704\"}],\"renderers\":[{\"id\":\"4726\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4728\"},\"toolbar\":{\"id\":\"4715\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4692\"},\"x_scale\":{\"id\":\"4696\"},\"y_range\":{\"id\":\"4694\"},\"y_scale\":{\"id\":\"4698\"}},\"id\":\"4691\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"4991\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5114\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null},\"id\":\"5105\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"4839\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4890\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4971\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5147\"},\"group\":null,\"major_label_policy\":{\"id\":\"5148\"},\"ticker\":{\"id\":\"5121\"}},\"id\":\"5120\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5156\"}]},\"id\":\"5155\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"4892\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"4969\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5128\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4731\"},\"group\":null,\"major_label_policy\":{\"id\":\"4732\"},\"ticker\":{\"id\":\"4705\"}},\"id\":\"4704\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMhr+w3RZD+aeQgmXpqvP6rnuyhyHdI/4Dc1uUQX5j+mtXXoPJPyP1EA7dQ8efg/qhXK6E0g+j/fPe7QSLz5Pz5KeJUXRPg/xvCwYZfQ9j+uUUcIE+f1P7EPKHJkvPU/D8ZF7JlX9j/VnnChugj3PxLl5d332vc/Ys7QxYRl+D8/uHzVTy/5P/NruVsFpvo/1tDFDAsj+z+Mi3dMWUT7P4Wb0hpfHfo/597u1cmW+D8AjULNvrL2P5R/Yy57DfU/tfqb5mdx8z+/3TtIZ0/yPxWwy531pvE/B7N+Foz08D/cqn1jRDvwP52WaDpRpO8/HDscgo8C7z/NmHn8ngbuP2qLCc/lU+0/TrL1Zj4S7D/ShP77uSbrP8waLk71Vuo/jtl6iIuu6T8g4cX5qqnpP7QfN57l3uk/lCQdynbF6T8/BqGzpgrqPxUxJo8VQOo/rxanALfA6j8FpACTZkPrP2ZHVT8U++s/fCpjUyW67D+4cemiHzvtP+ndJIVVAe4/FsoTk5Nk7j9gWTVwQe7uP7kc1kUzcO8/xJPevrnA7z+Y+nOAEBHwP8oOb0HXMfA/UuRTQIx58D+Fnlg3Kr/wP9Q23tBV3fA/SuTTGa388D9JpjbGV+HwP5EW38Y5APE/yCgcNw8b8T/yJHXQiybxP4O+hAL4IfE/69Rj0O8g8T/UYY2NHf7wP4en5CpH1fA/+wIlmXu98D8s3mQfR5TwP2VQlL08j/A/WdBQErNk8D9G70CQ9kTwP57h4HmqL/A/O8Q1BZP+7z/9YrD3zLTvPzu42QRJgu8/73G83yUG7z/VHq3ckODuP6OBaQgxl+4/wvFcHV+C7j83gfMcQHXuP2ECMS+BHO4/NBo378nm7T8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5153\"},\"selection_policy\":{\"id\":\"5152\"}},\"id\":\"5138\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"4714\"}},\"id\":\"4710\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5086\"},\"glyph\":{\"id\":\"5087\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5089\"},\"nonselection_glyph\":{\"id\":\"5088\"},\"view\":{\"id\":\"5091\"}},\"id\":\"5090\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4932\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"H_N\"},\"renderers\":[{\"id\":\"4830\"}]},\"id\":\"4844\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"4994\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4994\"},\"group\":null,\"major_label_policy\":{\"id\":\"4995\"},\"ticker\":{\"id\":\"4961\"}},\"id\":\"4960\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5047\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4724\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4972\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4829\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5150\"},\"group\":null,\"major_label_policy\":{\"id\":\"5151\"},\"ticker\":{\"id\":\"5117\"}},\"id\":\"5116\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5127\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"5064\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5067\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"5124\"},{\"id\":\"5125\"},{\"id\":\"5126\"},{\"id\":\"5127\"},{\"id\":\"5128\"},{\"id\":\"5129\"},{\"id\":\"5157\"}]},\"id\":\"5131\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4968\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"4826\"}},\"id\":\"4831\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"4996\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"4887\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4884\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"5064\"}],\"center\":[{\"id\":\"5067\"},{\"id\":\"5071\"},{\"id\":\"5103\"}],\"left\":[{\"id\":\"5068\"}],\"renderers\":[{\"id\":\"5090\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5092\"},\"toolbar\":{\"id\":\"5079\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5056\"},\"x_scale\":{\"id\":\"5060\"},\"y_range\":{\"id\":\"5058\"},\"y_scale\":{\"id\":\"5062\"}},\"id\":\"5055\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"C_F\"},\"renderers\":[{\"id\":\"5142\"}]},\"id\":\"5156\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"5062\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4881\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4722\"},\"glyph\":{\"id\":\"4723\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4725\"},\"nonselection_glyph\":{\"id\":\"4724\"},\"view\":{\"id\":\"4727\"}},\"id\":\"4726\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5130\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5048\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"5116\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5119\",\"type\":\"Grid\"},{\"attributes\":{\"toolbars\":[{\"id\":\"4715\"},{\"id\":\"4767\"},{\"id\":\"4819\"},{\"id\":\"4871\"},{\"id\":\"4923\"},{\"id\":\"4975\"},{\"id\":\"5027\"},{\"id\":\"5079\"},{\"id\":\"5131\"},{\"id\":\"5183\"},{\"id\":\"5235\"},{\"id\":\"5287\"},{\"id\":\"5339\"},{\"id\":\"5391\"},{\"id\":\"5443\"}],\"tools\":[{\"id\":\"4708\"},{\"id\":\"4709\"},{\"id\":\"4710\"},{\"id\":\"4711\"},{\"id\":\"4712\"},{\"id\":\"4713\"},{\"id\":\"4741\"},{\"id\":\"4760\"},{\"id\":\"4761\"},{\"id\":\"4762\"},{\"id\":\"4763\"},{\"id\":\"4764\"},{\"id\":\"4765\"},{\"id\":\"4793\"},{\"id\":\"4812\"},{\"id\":\"4813\"},{\"id\":\"4814\"},{\"id\":\"4815\"},{\"id\":\"4816\"},{\"id\":\"4817\"},{\"id\":\"4845\"},{\"id\":\"4864\"},{\"id\":\"4865\"},{\"id\":\"4866\"},{\"id\":\"4867\"},{\"id\":\"4868\"},{\"id\":\"4869\"},{\"id\":\"4897\"},{\"id\":\"4916\"},{\"id\":\"4917\"},{\"id\":\"4918\"},{\"id\":\"4919\"},{\"id\":\"4920\"},{\"id\":\"4921\"},{\"id\":\"4949\"},{\"id\":\"4968\"},{\"id\":\"4969\"},{\"id\":\"4970\"},{\"id\":\"4971\"},{\"id\":\"4972\"},{\"id\":\"4973\"},{\"id\":\"5001\"},{\"id\":\"5020\"},{\"id\":\"5021\"},{\"id\":\"5022\"},{\"id\":\"5023\"},{\"id\":\"5024\"},{\"id\":\"5025\"},{\"id\":\"5053\"},{\"id\":\"5072\"},{\"id\":\"5073\"},{\"id\":\"5074\"},{\"id\":\"5075\"},{\"id\":\"5076\"},{\"id\":\"5077\"},{\"id\":\"5105\"},{\"id\":\"5124\"},{\"id\":\"5125\"},{\"id\":\"5126\"},{\"id\":\"5127\"},{\"id\":\"5128\"},{\"id\":\"5129\"},{\"id\":\"5157\"},{\"id\":\"5176\"},{\"id\":\"5177\"},{\"id\":\"5178\"},{\"id\":\"5179\"},{\"id\":\"5180\"},{\"id\":\"5181\"},{\"id\":\"5209\"},{\"id\":\"5228\"},{\"id\":\"5229\"},{\"id\":\"5230\"},{\"id\":\"5231\"},{\"id\":\"5232\"},{\"id\":\"5233\"},{\"id\":\"5261\"},{\"id\":\"5280\"},{\"id\":\"5281\"},{\"id\":\"5282\"},{\"id\":\"5283\"},{\"id\":\"5284\"},{\"id\":\"5285\"},{\"id\":\"5313\"},{\"id\":\"5332\"},{\"id\":\"5333\"},{\"id\":\"5334\"},{\"id\":\"5335\"},{\"id\":\"5336\"},{\"id\":\"5337\"},{\"id\":\"5365\"},{\"id\":\"5384\"},{\"id\":\"5385\"},{\"id\":\"5386\"},{\"id\":\"5387\"},{\"id\":\"5388\"},{\"id\":\"5389\"},{\"id\":\"5417\"},{\"id\":\"5436\"},{\"id\":\"5437\"},{\"id\":\"5438\"},{\"id\":\"5439\"},{\"id\":\"5440\"},{\"id\":\"5441\"},{\"id\":\"5469\"}]},\"id\":\"5652\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5442\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5060\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4933\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4827\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4879\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4961\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4725\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5049\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4997\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4836\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5124\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"4965\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"N_B\"},\"renderers\":[{\"id\":\"4882\"}]},\"id\":\"4896\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"5056\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"5130\"}},\"id\":\"5126\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4991\"},\"group\":null,\"major_label_policy\":{\"id\":\"4992\"},\"ticker\":{\"id\":\"4965\"}},\"id\":\"4964\",\"type\":\"LinearAxis\"},{\"attributes\":{\"toolbar\":{\"id\":\"5652\"},\"toolbar_location\":\"above\"},\"id\":\"5653\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"axis\":{\"id\":\"4960\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4963\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5112\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4888\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4891\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4692\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4694\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4844\"}]},\"id\":\"4843\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null},\"id\":\"4741\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"4973\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"5129\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4992\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4696\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4896\"}]},\"id\":\"4895\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"4964\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4967\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4705\",\"type\":\"BasicTicker\"},{\"attributes\":{\"children\":[[{\"id\":\"4691\"},0,0],[{\"id\":\"4743\"},0,1],[{\"id\":\"4795\"},0,2],[{\"id\":\"4847\"},1,0],[{\"id\":\"4899\"},1,1],[{\"id\":\"4951\"},1,2],[{\"id\":\"5003\"},2,0],[{\"id\":\"5055\"},2,1],[{\"id\":\"5107\"},2,2],[{\"id\":\"5159\"},3,0],[{\"id\":\"5211\"},3,1],[{\"id\":\"5263\"},3,2],[{\"id\":\"5315\"},4,0],[{\"id\":\"5367\"},4,1],[{\"id\":\"5419\"},4,2]]},\"id\":\"5651\",\"type\":\"GridBox\"},{\"attributes\":{\"axis\":{\"id\":\"5120\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5123\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4880\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4765\",\"type\":\"HelpTool\"},{\"attributes\":{\"below\":[{\"id\":\"5428\"}],\"center\":[{\"id\":\"5431\"},{\"id\":\"5435\"},{\"id\":\"5467\"}],\"left\":[{\"id\":\"5432\"}],\"renderers\":[{\"id\":\"5454\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5456\"},\"toolbar\":{\"id\":\"5443\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5420\"},\"x_scale\":{\"id\":\"5424\"},\"y_range\":{\"id\":\"5422\"},\"y_scale\":{\"id\":\"5426\"}},\"id\":\"5419\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"5332\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5092\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"5086\"}},\"id\":\"5091\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5377\",\"type\":\"BasicTicker\"},{\"attributes\":{\"tools\":[{\"id\":\"5072\"},{\"id\":\"5073\"},{\"id\":\"5074\"},{\"id\":\"5075\"},{\"id\":\"5076\"},{\"id\":\"5077\"},{\"id\":\"5105\"}]},\"id\":\"5079\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4919\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4757\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4776\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5088\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"5068\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5071\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4775\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5335\",\"type\":\"SaveTool\"},{\"attributes\":{\"label\":{\"value\":\"C_B\"},\"renderers\":[{\"id\":\"5090\"}]},\"id\":\"5104\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"5069\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4922\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4763\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"5138\"}},\"id\":\"5143\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"5078\"}},\"id\":\"5074\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"5337\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"5077\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4939\"},\"group\":null,\"major_label_policy\":{\"id\":\"4940\"},\"ticker\":{\"id\":\"4913\"}},\"id\":\"4912\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5390\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5360\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALBgI1pGArg/1Bg+XOK9QUAQE2KNNz4yQJxPbLN1Ero/AAAAAAAAAAAAAAAAAAAAAJO9YS63nKs/MmCZkA8mGkApF6/mnJ3ZP/EAGL39Je4/znNK7VgM+D+LKr2Gpra2Pz2A/wG4Ta0/Mmu/j6mgyz8eQd0Op8vSP4BRbq23nM0/OgcPeKA31T8pn/pzSPUBQAu4m+hQR94/KmldyfUV4D/ftfZxMLPZPzPn2BTyJtg/zYMqLE6a4j9M1742ZMDoP7Iergsqee0/ttJB+6Gh6z9wYPT3RvLnP4KbAhxzQ+o/IUgFEWZU6z85+p7CFB/rP4BP3Y0vBOw/XMpOHndv7T90pi3pMCrvPxVBEheGsPA/1wu2qDmi8D+brsWCU5PwPw6v/SuirPA/zdMztobm8D/NqfUrtgzxPxaq0r2nbfE/RnPNE+fO8T9jLyxa9APyPyd2j6BXdPI/j3uSgoQ38j+1iiNW1SzyP7O5Gd7+EfI/50Grup1e8j8m9SBlRSzyP7ovUc+ULPI/ILk/aJAC8j9a/atGmdzxP1AGhZMZ4PE/o2LU2GSk8T+HbXTu3MPxP2fDzCnlwvE/l1GTC3yN8T+g2ITU6FnxP7HnTt5///A/udNw3JXZ8D9uptsRLazwPzXYnx47S/A/OROFfWzd7z8fLwiTIjbvP4n6EDWo1u4/TD+kqwZW7j/5w9GESuDtP6XMizaYx+0/b3qlyZ/T7T9XI/uQT9HtP/168MuBmO0/9pCILyaP7T+nK9JS0FvtP89b+je5E+0/7hsK2MLj7D+pLSFAXJ7sP7tE1mrcJ+0/lYDldWZV7T9V1uER5HDtP65MXY01ze0/W5i4C0Wz7T8AHrRm7AnuPzMwiX/sNe4/nz7pYyym7j9pDcuYx77uP2QN/vQD9+4/3FY+KtMi7z939eiQd0/vP8mZ9jhdd+8/3CBo0eRx7z/Ctdj4CpHvP7GLiSV1ie8/DpYtLtRg7z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4789\"},\"selection_policy\":{\"id\":\"4788\"}},\"id\":\"4774\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACh3kFhE/txPwlrXRz+mrA/tlotEAb+0j+9uW6pASLnP0Xyu1vYqfQ/zdnEa9qe/D8ZJKh99r4AQAhhbJLIvgFA8/XnPXlpAkBx6mR53jMBQMpapgsCVgBAxE7zZqd5/j9HZLVcyqP8P0PBa4GWN/w/g8c81LnI+j8o1KF3+vr5Pzv0p75WQPk/0YUy/vrz+D+CCb81EO74Px9bOPrFcPg/NqhOqQR09j8XUnZPq1D0P7uDnjg5Q/I/6ZKiNmwz8D/RHV3+4qLtP0d9PT8xzOs/F7mjUA6n6T8j9yahwWbnP6Bs8cxIAec/9Jo6iiaw5j+HznlzCVLmP+oeqHaOVuY/A1Ks5vd05j/YXH025f3mP6J9H/cWaec/erbUKet55z8aSZnN25PoP0zKfDxkU+k/2WX2tKQj6j+ysP0PHjHqP2pahuThjOo/KxFh2t0V6z8m5QmjdxjsP0vP2n8bPO0/ArBBmcn87T8bu7FKk4DuP+9sOY4byu4/sZJGVm/O7z+mKVU1Ek/wP+GG3RMHaPA//l0tGJrd8D+efLu1f9vwP8sOyK/S8/A//Pcaj/U18T9j57ANOTjxP295gE+Yi/E/ENKkANx48T86diOqQGnxP4zOHD9+M/E/vxYxvFYN8T9A00/X297wP+0S00Y9+/A/mB1g3M6S8D8LGM7z6HDwP+2LZJJQUfA/xmgNXf9h8D+t4MneclLwP1JgAnlnCfA/T7F9p9CA7z8vdCol1GLvP5gbi5BtxO4/ZYB9VcC97j8jfc/BuTzuPwF8mQs+Z+4/102UJS7s7T+5cMXdYVLtP9jJIpJNNO0/XF9IKnXr7D8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5101\"},\"selection_policy\":{\"id\":\"5100\"}},\"id\":\"5086\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5361\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4711\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4913\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5359\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4916\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"4948\"}]},\"id\":\"4947\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4777\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5358\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"4760\"},{\"id\":\"4761\"},{\"id\":\"4762\"},{\"id\":\"4763\"},{\"id\":\"4764\"},{\"id\":\"4765\"},{\"id\":\"4793\"}]},\"id\":\"4767\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"4930\"}},\"id\":\"4935\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5072\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"5380\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5383\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5076\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"5381\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5087\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5356\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPsEgIwb/sU/lxezBeF7KkAB27YuPxY4QGVSwy52re8/AAAAAAAAAAAAAAAAAAAAAE/bGYxKUXA/AKPX+WlEgT/2XLi/OuGSP4sSg4zFHZo/jeQnj4dvpT9h1bpF0patP+Giq0AVgLE/F8ayG64/uD9q9A4NyJTAPwqaKcGdmsY/AIxijBRKyj+1DjT800HMP86G9CfslNE//nxolgpM1D+IBDYiqI/XPwb5IPZ59to/ESLHKT043z89HlupPgziPz6iH40Ar+M/nfAFMzzX5T9PWkbe3LLnP0hxNMa9duo/8nDMILgL7D+oB2zaU9HtP6sfCmqXAfA/wrwAMo388D+YWOGO0wjyP+IBlml4DvM/E7TIDi6N8z+j+hKvo+3zPwrGin/wSfQ/67rrjO0R9T9xJULRRSX1P9C9MXsRcvU/PK+7yWhz9T/uj3Tl4TL1PzrZJLEEWPU/fIAEja9W9T/Qqu5yUcz0P5zZ72sdkPQ/sqsdJ4sI9D+3riLerwv0P3YEkUTIj/M/Caw3AVUg8z+kMjL922jyP4DrZcugv/E/yHa9BrIt8T+QYMSo1QLxPyPnXVYjQ/A/ExFVrNf47z+eguIn93XuP9wfuP4fmu0/6TOZM/gs7T/LICjNnEfsP6OyO4UYVuw/gR/cgyOr6z/mcE2jWlTrP7n7Unmd2Oo/ONX0EMQH6j/6cqWHNFLqP+gYuO265Ok/2xYCExex6T/RBOPbvPbpPx+8Vns5P+o/2GeDgUoV6z+sViiPpoHrP6UXQxMB1+s/y9O0+XvD6z+EoZAeSIzsP9K1x9G9Bu0/fcAsab5W7T9BQVIakXztP+cHNLp69u0/TV/0OL8K7j+EGp28x8juP1VDfzvSP+8//BGNd0i57z8VyLCARizwPxBVyNvgaPA/Tl0PU9Zq8D8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5465\"},\"selection_policy\":{\"id\":\"5464\"}},\"id\":\"5450\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5407\"},\"group\":null,\"major_label_policy\":{\"id\":\"5408\"},\"ticker\":{\"id\":\"5381\"}},\"id\":\"5380\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"N_F\"},\"renderers\":[{\"id\":\"4934\"}]},\"id\":\"4948\",\"type\":\"LegendItem\"},{\"attributes\":{\"overlay\":{\"id\":\"5338\"}},\"id\":\"5334\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4936\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"5073\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4789\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5104\"}]},\"id\":\"5103\",\"type\":\"Legend\"},{\"attributes\":{\"tools\":[{\"id\":\"4916\"},{\"id\":\"4917\"},{\"id\":\"4918\"},{\"id\":\"4919\"},{\"id\":\"4920\"},{\"id\":\"4921\"},{\"id\":\"4949\"}]},\"id\":\"4923\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"5336\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"4756\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4759\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4760\",\"type\":\"PanTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5078\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5089\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4788\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"4912\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4915\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4921\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5095\"},\"group\":null,\"major_label_policy\":{\"id\":\"5096\"},\"ticker\":{\"id\":\"5069\"}},\"id\":\"5068\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5355\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4917\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4920\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"4922\"}},\"id\":\"4918\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"4764\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"5075\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4766\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4783\"},\"group\":null,\"major_label_policy\":{\"id\":\"4784\"},\"ticker\":{\"id\":\"4757\"}},\"id\":\"4756\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"4766\"}},\"id\":\"4762\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"5333\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4761\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5441\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4974\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5437\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"5442\"}},\"id\":\"5438\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"4982\"}},\"id\":\"4987\",\"type\":\"CDSView\"},{\"attributes\":{\"below\":[{\"id\":\"5012\"}],\"center\":[{\"id\":\"5015\"},{\"id\":\"5019\"},{\"id\":\"5051\"}],\"left\":[{\"id\":\"5016\"}],\"renderers\":[{\"id\":\"5038\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5040\"},\"toolbar\":{\"id\":\"5027\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5004\"},\"x_scale\":{\"id\":\"5008\"},\"y_range\":{\"id\":\"5006\"},\"y_scale\":{\"id\":\"5010\"}},\"id\":\"5003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5000\"}]},\"id\":\"4999\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4983\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5440\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"5010\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"5432\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5435\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"4968\"},{\"id\":\"4969\"},{\"id\":\"4970\"},{\"id\":\"4971\"},{\"id\":\"4972\"},{\"id\":\"4973\"},{\"id\":\"5001\"}]},\"id\":\"4975\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"5424\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5043\"},\"group\":null,\"major_label_policy\":{\"id\":\"5044\"},\"ticker\":{\"id\":\"5017\"}},\"id\":\"5016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5389\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4984\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"5053\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis\":{\"id\":\"5428\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5431\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5450\"},\"glyph\":{\"id\":\"5451\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5453\"},\"nonselection_glyph\":{\"id\":\"5452\"},\"view\":{\"id\":\"5455\"}},\"id\":\"5454\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"5436\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"5006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5420\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4988\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"5436\"},{\"id\":\"5437\"},{\"id\":\"5438\"},{\"id\":\"5439\"},{\"id\":\"5440\"},{\"id\":\"5441\"},{\"id\":\"5469\"}]},\"id\":\"5443\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"5422\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"5034\"}},\"id\":\"5039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5429\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5387\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5385\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5388\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"5013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5410\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5433\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5411\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5439\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5426\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"C_C\"},\"renderers\":[{\"id\":\"4986\"}]},\"id\":\"5000\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5034\"},\"glyph\":{\"id\":\"5035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5037\"},\"nonselection_glyph\":{\"id\":\"5036\"},\"view\":{\"id\":\"5039\"}},\"id\":\"5038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIZtgOkmMjs/NRYyjDikE0CcOf/ly8sYQOv1o5c8CRNAAAAAAAAAAAAAAAAAAAAAAAGt8K5jM7Y/OMaqk7CeCkDry5TXKsy6PzEnjGvGbQxAJQfe4yfQDkDLNG+wwj7PP8eSOOstR6o/wNKAk8q80T/+LjIZ3VPZP0UiY7K9Stc/9a0dhnhr2j9gsv52UR72P9sTx3a3f+s/Grw1q3If6D+Ofe2IHhHnP+ZduPmTmOQ/ORdqgbMh6D/kKqy+sw3rP3lmoX2M7es/fjWiChoc7D9S8+eDRYHuP6cn08IuefE/QqTp0rQ27T9Ef71P3qzsP4NEilTkZO4/UQxTF7Nv7z+6bbipTYXwP0Ljh541/fA/QJnrhy4C8T8K5OvAserwPzVipgWRcPA/p2ZvsNxq8D8uu+mBUnDwP30dcxmRcfA/tQRAy2+Q8D+QiJNlkazwP0gQsbl6zvA/WfqFWIXg8D+3GNjhsDvxP1mB6cCXP/E/4Bs/0+I18T/CQTSRnkvxP/WtBeHRffE/95xEECpW8T+HT4iBqmfxP+uhCPkgdPE/3Epa7aZ+8T+iTZavU0vxP4fqy/whOfE/Jq6uKRz68D/bAGYrTenwPz1X2+X21PA/9N8rO3O08D/6GKT56Z/wPwFKnYO3gfA/JhTwXUyD8D9aCTW5EFXwPwE7sGuYA/A/h4JdV/6g7z/s50MMxknvP/OHiSJKEO8/UsgtoyS57j92FzzbrLLuP8kALZ6+Ze4/zCa1wqRn7j/7B/dfkWnuP9nACtzbSe4/buQy6w8K7j+og5BIHCjuP5Cqtvc3C+4//1W2w3hK7j9uWYpr5EjuP081F9asW+4/D7RDAdKO7j8d45c8zqbuP7cOGcBO4u4/Hc6aNvoG7z8gSDmEw9juPzPNOSHBCe8/ruGxvecz7z9lxGOaAEXvP1X+2KW4be8//5kfAASs7z93enWwlcTvP/d9vSNmB/A/lo+TFXb97z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4997\"},\"selection_policy\":{\"id\":\"4996\"}},\"id\":\"4982\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5412\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"5407\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"5008\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5462\"},\"group\":null,\"major_label_policy\":{\"id\":\"5463\"},\"ticker\":{\"id\":\"5429\"}},\"id\":\"5428\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5384\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"5469\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5459\"},\"group\":null,\"major_label_policy\":{\"id\":\"5460\"},\"ticker\":{\"id\":\"5433\"}},\"id\":\"5432\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5408\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5413\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"5390\"}},\"id\":\"5386\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"5012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5015\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"5001\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"5179\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4712\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5254\"},\"group\":null,\"major_label_policy\":{\"id\":\"5255\"},\"ticker\":{\"id\":\"5221\"}},\"id\":\"5220\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKirWpFj1AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGksaKss5rP0galLNaNvA/mxjoOctYFkBKguaJS0HhP9X7BmLPIL0/ezB1FQ9K5z8JDJZiQrb7P67txIUJcf0/vaNCaN/18D8dXJBdifH2P+B0S10qXPI/CjcnqosF8D86/MSXaVTnP92YpA+IzeM/LtBC8+B/5z/Kd2SP2r7tP5ejRnHWr/A/4TgwKcrf8D9xd3P4K+HrPy071xymhu0/HSJ7hM5H7z9UXtEHhyjsP1fTV0vq5e0/nARoeFAp8D+QAl75iXfwP1dSD9mgffA/BF9e5jO28D/YwgDRvLTwPyoexPkCJ/A/Rtuppl8i8D9NHE2VlEvwP6LPoWyfmvA/rW3Oqey08D9kw4AQhsvwPxnuOrYSzvA/5OSWe5O18D+PEpH+oI3wP1PJlBSnd/A/tBhHPZ6T8D9PgKrUHqrwP622pvf80fA/Esaw46bu8D/3dEpIgP7wP5F+g+Gu3fA/Dbwk4Yzb8D/NozrXw7/wP92FVD1NtfA/RfLVP/y08D+6X6xTwLHwP/usNC9RtPA/VLUhsiqZ8D91YmmsVY3wP/aF0zcad/A/OzCUKv5V8D97J1/vj0XwP3S/FdolIfA/Rq6he5oF8D8928ltePbvPzv3aHok+O8/wLzeOzzb7z+yNnEuIbrvP2E3LO/Up+8/4U8OJlqd7z9DRq9tConvP/b57MuMbO8/sqeNayJX7z8M1P3NuUbvP/Cxg8yWF+8/TS1lssAe7z9GsAoZ1RHvP1VnuUrFDe8/NUVf7GQN7z+gVlu2AQ7vP1zlAVeREu8/JKSM0IQO7z/uZAml4RPvPz9eiqkCHe8/zIVlIxUy7z/Gscoj2j7vP79YPwO2Su8/pEqMdpJa7z9Ds1dNd2LvP2tEYPROaO8/pgw5qyhf7z/139VSPG3vP1NusimggO8/zn0/X3p57z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5049\"},\"selection_policy\":{\"id\":\"5048\"}},\"id\":\"5034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5181\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4906\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5180\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"4956\",\"type\":\"LinearScale\"},{\"attributes\":{\"below\":[{\"id\":\"5220\"}],\"center\":[{\"id\":\"5223\"},{\"id\":\"5227\"},{\"id\":\"5259\"}],\"left\":[{\"id\":\"5224\"}],\"renderers\":[{\"id\":\"5246\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5248\"},\"toolbar\":{\"id\":\"5235\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5212\"},\"x_scale\":{\"id\":\"5216\"},\"y_range\":{\"id\":\"5214\"},\"y_scale\":{\"id\":\"5218\"}},\"id\":\"5211\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5035\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4945\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4867\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4942\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4869\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4930\"},\"glyph\":{\"id\":\"4931\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4933\"},\"nonselection_glyph\":{\"id\":\"4932\"},\"view\":{\"id\":\"4935\"}},\"id\":\"4934\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"5220\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"5223\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"H_H\"},\"renderers\":[{\"id\":\"5194\"}]},\"id\":\"5208\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"4864\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"5025\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4887\"},\"group\":null,\"major_label_policy\":{\"id\":\"4888\"},\"ticker\":{\"id\":\"4861\"}},\"id\":\"4860\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5218\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5182\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"5251\"},\"group\":null,\"major_label_policy\":{\"id\":\"5252\"},\"ticker\":{\"id\":\"5225\"}},\"id\":\"5224\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"5224\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5227\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4861\",\"type\":\"BasicTicker\"},{\"attributes\":{\"tools\":[{\"id\":\"5176\"},{\"id\":\"5177\"},{\"id\":\"5178\"},{\"id\":\"5179\"},{\"id\":\"5180\"},{\"id\":\"5181\"},{\"id\":\"5209\"}]},\"id\":\"5183\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"5234\"}},\"id\":\"5230\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"5182\"}},\"id\":\"5178\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"tools\":[{\"id\":\"4708\"},{\"id\":\"4709\"},{\"id\":\"4710\"},{\"id\":\"4711\"},{\"id\":\"4712\"},{\"id\":\"4713\"},{\"id\":\"4741\"}]},\"id\":\"4715\",\"type\":\"Toolbar\"},{\"attributes\":{\"tools\":[{\"id\":\"4864\"},{\"id\":\"4865\"},{\"id\":\"4866\"},{\"id\":\"4867\"},{\"id\":\"4868\"},{\"id\":\"4869\"},{\"id\":\"4897\"}]},\"id\":\"4871\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4857\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4902\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4850\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5234\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5228\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"4856\"}],\"center\":[{\"id\":\"4859\"},{\"id\":\"4863\"},{\"id\":\"4895\"}],\"left\":[{\"id\":\"4860\"}],\"renderers\":[{\"id\":\"4882\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4884\"},\"toolbar\":{\"id\":\"4871\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4848\"},\"x_scale\":{\"id\":\"4852\"},\"y_range\":{\"id\":\"4850\"},\"y_scale\":{\"id\":\"4854\"}},\"id\":\"4847\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"4908\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4911\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5212\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"5228\"},{\"id\":\"5229\"},{\"id\":\"5230\"},{\"id\":\"5231\"},{\"id\":\"5232\"},{\"id\":\"5233\"},{\"id\":\"5261\"}]},\"id\":\"5235\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"5026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"5017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4952\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4982\"},\"glyph\":{\"id\":\"4983\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4985\"},\"nonselection_glyph\":{\"id\":\"4984\"},\"view\":{\"id\":\"4987\"}},\"id\":\"4986\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"5214\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"5459\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"4870\"}},\"id\":\"4866\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5456\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"5462\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4852\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5233\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null},\"id\":\"4949\",\"type\":\"HoverTool\"},{\"attributes\":{\"below\":[{\"id\":\"4908\"}],\"center\":[{\"id\":\"4911\"},{\"id\":\"4915\"},{\"id\":\"4947\"}],\"left\":[{\"id\":\"4912\"}],\"renderers\":[{\"id\":\"4934\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4936\"},\"toolbar\":{\"id\":\"4923\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4900\"},\"x_scale\":{\"id\":\"4904\"},\"y_range\":{\"id\":\"4902\"},\"y_scale\":{\"id\":\"4906\"}},\"id\":\"4899\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"5026\"}},\"id\":\"5022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"5190\"}},\"id\":\"5195\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5463\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"4943\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"4841\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4904\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"4870\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"label\":{\"value\":\"H_C\"},\"renderers\":[{\"id\":\"5038\"}]},\"id\":\"5052\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"4860\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"4863\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"4939\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4893\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4954\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5193\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"5465\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"5216\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"5021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7qHBUdCHc/oRMb9Q8Quj9Wjmcmm2jVP59CkmRLUOc/Goh9A7as9T8kBYpFndD9PxG4OmKLpQJAP35wn8YtBUAotHpWXToIQBCGjv4IVgpAjE4eY+bsCUB1QLpPFXwHQPnxs/pVzQRAiXHW5p/GAkAA6IoVPpX+P17sjQ0gLPs/rxCytNb0+D9v5LUg/GX2P0tOkFmIC/Q/LP18kkmf8z+cjwIom5PxP7ccxFMolvA/rpwfrkWW7j+XQWxi/VfrP9kFab5tz+c/IeHbV/aV5D+4UQGBkHjjP+vtojO4mOI/AoVT06Sn4T/4ej1znF7hP6AcE8hFlOI/O22aD4E64j9E6Tm71sPhP7szwdKkCOI/Hp6WPm/H4T/Cq6IbRJ3iP6ZlXKYbU+M/M3EvM8/q4z+O4wlgibbkP+6CZeTzQeY/i8dCWjTu5j9XcBs2SuroPy2te/Ywjuo/fX11uY2m7D+fTNkatUbvP1SPA+Xg2e8/fnHssI3C7z847DG2OMfwPxCNuMBLk/E/XeQXUIt38T8dpc7yMYDxP2+RYfOvlfE/vaLWTAqy8T/A87HXrxbyPw9w3bq1nfI/CvMm/fl48j9dppiophbyP2rV9wKaZfE/0cdiP0lk8T/TPHUhTRvxP051rdlON/E/ud6VITgb8T9SBaxb2HnxP40Zkc56YfE/e4SYUow98T/9ffnJApPwP2ZkkMGPvO8/gqLLyH7o7z/MRKK6e/bvP5eUhsERX+8/HH9vwFP37T8rgwbjDZnsP/B7DjD7Ee0/W8OH9sEz7D/765tSkxTsP8ijt838uOs/RBg8pODK6z8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"4893\"},\"selection_policy\":{\"id\":\"4892\"}},\"id\":\"4878\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4985\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4890\"},\"group\":null,\"major_label_policy\":{\"id\":\"4891\"},\"ticker\":{\"id\":\"4857\"}},\"id\":\"4856\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4900\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4944\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null},\"id\":\"4897\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"4942\"},\"group\":null,\"major_label_policy\":{\"id\":\"4943\"},\"ticker\":{\"id\":\"4909\"}},\"id\":\"4908\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"4878\"},\"glyph\":{\"id\":\"4879\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"4881\"},\"nonselection_glyph\":{\"id\":\"4880\"},\"view\":{\"id\":\"4883\"}},\"id\":\"4882\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"5225\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"4856\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"4859\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5052\"}]},\"id\":\"5051\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/eVnNQ4E/8yib81bNsj+ZvdusuB/VP/WlPwlVZeY/sqSt846h8T804uX+ERf2PxawrqFL5vg/M1/jLEXv+j/Er+r1R7z7P8XFdvs45Po/wlms1p4x+T/uJ/m8H/n2P6L8bcKObfU/khSOGfE29D93xKhhSkHzP17aXSieQvM/tcvE5Tvv8z/4I9T9VebzP5zbXUEIefQ/RBJ7A2wT9D99BGOl9SX0P9Q1EGqPwPM/var6QsuW8z+MO4zDfF3zP/X9xvcm//I/aTHoSfl+8j/rQhAvoDHyP/zg4RxPAfI/xaYBuZsN8j8Ih6qbsI7xPxYxX8mo8vA/c+TDriE78D/PClObks7uP7y8VeA4lO0/5PGplGiS7D9nKcYngi/sP97SzZ/g/us/NowXPENn7D9SBBy0ekrsP7vOqBYNgOw/oyY/593A7D/pXXyeu07tP3ZPAUQqiu0/gliwZTmD7T8R8eRjOZrtP8xIRxfF9+0/KITvu7EV7j8VpndbevvtP/1derDJb+4/1IwK7KbS7j9tjUzcW+juP4uKpXcQKe8/zKTuNWdE7z8wtmHvKInvP9ITO3lgF/A/3n0t9Z5K8D/qyO4tNDbwP1n8wSyFUvA/HgFLwGtI8D+IwUL7FWLwP0Zae0rKa/A/5KLwID5J8D8pqntWujzwPxjZ6MR6G/A/E91Q1PkG8D90Di61xPLvPz4PPPm01u8/RHktc4EI8D+5blTfoCDwP/SfONlnKPA/nx3XlX7Q7z/1R9OlnX3vP6jzWU/jb+8/8Hm7pZtX7z+Wma9eRvLuPwCzY+NRxu4/Yaf133SU7j+Htv8bXI/uP009F27Pju4/ylaWIqUz7j8DGnDibv3tP8mBgkz6E+4/uQ460kkf7j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"5257\"},\"selection_policy\":{\"id\":\"5256\"}},\"id\":\"5242\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"5229\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5221\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4713\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4848\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"5016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"5019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5460\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"5464\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"5231\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"4854\",\"type\":\"LinearScale\"},{\"attributes\":{\"tools\":[{\"id\":\"5020\"},{\"id\":\"5021\"},{\"id\":\"5022\"},{\"id\":\"5023\"},{\"id\":\"5024\"},{\"id\":\"5025\"},{\"id\":\"5053\"}]},\"id\":\"5027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"4940\",\"type\":\"AllLabels\"},{\"attributes\":{\"callback\":null},\"id\":\"5261\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"4868\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"5232\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5040\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"5242\"},\"glyph\":{\"id\":\"5243\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5245\"},\"nonselection_glyph\":{\"id\":\"5244\"},\"view\":{\"id\":\"5247\"}},\"id\":\"5246\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5037\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"5384\"},{\"id\":\"5385\"},{\"id\":\"5386\"},{\"id\":\"5387\"},{\"id\":\"5388\"},{\"id\":\"5389\"},{\"id\":\"5417\"}]},\"id\":\"5391\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"5023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"4960\"}],\"center\":[{\"id\":\"4963\"},{\"id\":\"4967\"},{\"id\":\"4999\"}],\"left\":[{\"id\":\"4964\"}],\"renderers\":[{\"id\":\"4986\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"4988\"},\"toolbar\":{\"id\":\"4975\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"4952\"},\"x_scale\":{\"id\":\"4956\"},\"y_range\":{\"id\":\"4954\"},\"y_scale\":{\"id\":\"4958\"}},\"id\":\"4951\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"5020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"4909\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"4865\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4840\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"5024\",\"type\":\"ResetTool\"},{\"attributes\":{\"label\":{\"value\":\"B_B\"},\"renderers\":[{\"id\":\"5350\"}]},\"id\":\"5364\",\"type\":\"LegendItem\"},{\"attributes\":{\"below\":[{\"id\":\"5324\"}],\"center\":[{\"id\":\"5327\"},{\"id\":\"5331\"},{\"id\":\"5363\"}],\"left\":[{\"id\":\"5328\"}],\"renderers\":[{\"id\":\"5350\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"5352\"},\"toolbar\":{\"id\":\"5339\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5316\"},\"x_scale\":{\"id\":\"5320\"},\"y_range\":{\"id\":\"5318\"},\"y_scale\":{\"id\":\"5322\"}},\"id\":\"5315\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5144\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"4708\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"4737\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"5364\"}]},\"id\":\"5363\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null},\"id\":\"5365\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"4709\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"5309\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4734\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4736\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"4728\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"5308\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"4735\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"5352\",\"type\":\"Title\"}],\"root_ids\":[\"5654\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"3c78a2c4-b36e-451c-a941-a0989c7cb9c2\",\"root_ids\":[\"5654\"],\"roots\":{\"5654\":\"26891190-d63b-4e6c-9e7f-79cf5706f2a5\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "5654" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp3_Radial_Distribution_Function_10" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project.experiments.bmim_bf4.run.RadialDistributionFunction(\n", + " number_of_configurations=300, number_of_bins=100\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "a0197fc9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running mini batch loop 1 / 1: 100%|████| 1/1 [00:00<00:00, 13.05it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"6876\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"6876\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"6876\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.2.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"6876\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"89a0c8c7-0ddf-4011-abcb-773136c9e3e8\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"7071\"},{\"id\":\"7069\"}],\"sizing_mode\":\"scale_both\"},\"id\":\"7072\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"6923\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"6882\",\"type\":\"LinearScale\"},{\"attributes\":{\"below\":[{\"id\":\"6886\"}],\"center\":[{\"id\":\"6889\"},{\"id\":\"6893\"},{\"id\":\"6925\"}],\"left\":[{\"id\":\"6890\"}],\"renderers\":[{\"id\":\"6912\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"6914\"},\"toolbar\":{\"id\":\"6901\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"6878\"},\"x_scale\":{\"id\":\"6882\"},\"y_range\":{\"id\":\"6880\"},\"y_scale\":{\"id\":\"6884\"}},\"id\":\"6877\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"6900\"}},\"id\":\"6896\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"below\":[{\"id\":\"6990\"}],\"center\":[{\"id\":\"6993\"},{\"id\":\"6997\"},{\"id\":\"7029\"}],\"left\":[{\"id\":\"6994\"}],\"renderers\":[{\"id\":\"7016\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"7018\"},\"toolbar\":{\"id\":\"7005\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"6982\"},\"x_scale\":{\"id\":\"6986\"},\"y_range\":{\"id\":\"6984\"},\"y_scale\":{\"id\":\"6988\"}},\"id\":\"6981\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"6918\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"6917\"},\"group\":null,\"major_label_policy\":{\"id\":\"6918\"},\"ticker\":{\"id\":\"6891\"}},\"id\":\"6890\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6920\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"6887\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"6899\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"6984\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"6898\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"6890\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"6893\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"7021\"},\"group\":null,\"major_label_policy\":{\"id\":\"7022\"},\"ticker\":{\"id\":\"6995\"}},\"id\":\"6994\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"7021\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"7027\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"6998\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"6914\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"6926\"}]},\"id\":\"6925\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"6986\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"6988\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"6920\"},\"group\":null,\"major_label_policy\":{\"id\":\"6921\"},\"ticker\":{\"id\":\"6887\"}},\"id\":\"6886\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6897\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"6995\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"6990\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"6993\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPjIJtLvedg/CcvSF91Wwz9S6z9m2WnLPyQDu9Nt5Mk/50KvXabZxD9QSuxv7SbSP2j1jo/N+tQ/F6bDKGfR2T/79NOqC7HmP+D2qARHbNM/lvP3XXDS3j/4U/ZBuEXgPwYoXyFlvds/5sj840MF4T9Xs/awtILbP7YUeBoXpOY/HDL9l/0n6T/6PgdoGC/nPwYwwaWyt+E/EWXfnEMs3j9TSTH5cc7bPx7ANeLX7+I/UeMs+ZHd5T/Ww0DaGmHmP9PishxBiug/SdsuHmLH4z9xEjh9Q4fmP+njoPzcCuk/4JRDJ2+48D/3amJ2QsbtP7vj9aJL+ew/GlJ0aeJH8j/yt01VJ8v2P7EFKQeQBvQ/yqkv4f248j/LHNW8EA/xP/+NMwnoLvM/D52YoHDZ8D/ZrYnNK/PwP6Hc6UNlNfI/HokfVLoY8T9FTfifWvHwP/HmFFRyEfE/1NZebpDp7T+4QsBSnprsPx8x3Q9afO4/JlMsMWC97z/8ccI5e2DwPx4br45JVfA/v19YypN78T8yxOSuQovyPw3NTvDk3vA/N71gk76B8j+D0/obLOzxP6lgUF4ucPE/qTbcqrTq8T+mjYyWDkjzPz781t85tfE/tcAtK2Lb8D/HqsZYvbPyPx6gfxlHEvI/p7MUWVrD8D/OxKsrNnrwP5W7SxkOD/E/T44S7sRx8T/EtRN1sRPxP84Wv2mZY/A/VUK8ibru8D8F7YLvfILxP2RpCeAhZ/A/JbHrcu0H8T/Wu9rXxiPwP3GGyTsp3O8/othUXoSo8D/8TfxuDsvwP+bDIiDzge8/Ifp7Wo/g8D9b9LELKd/vP/Ggt9BiIe8/e66MBBR+7z89+aVsInnuPyATeX8L3e4/k1LNLlDO7j+rMiozBw/vP0G2KPmZOfA/D0BlZzjm7z++i+EtGHfsP2wanSTuee4/XGEkfBqI7j+APHuhtx/uP6QDkpQqfuw/tPU11G7/6j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"6923\"},\"selection_policy\":{\"id\":\"6922\"}},\"id\":\"6908\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"7004\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"6921\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"6922\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"children\":[[{\"id\":\"6877\"},0,0],[{\"id\":\"6929\"},0,1],[{\"id\":\"6981\"},0,2]]},\"id\":\"7069\",\"type\":\"GridBox\"},{\"attributes\":{\"callback\":null},\"id\":\"7031\",\"type\":\"HoverTool\"},{\"attributes\":{\"overlay\":{\"id\":\"7004\"}},\"id\":\"7000\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"6994\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"6997\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"7026\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"6884\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"6880\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"6908\"},\"glyph\":{\"id\":\"6909\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"6911\"},\"nonselection_glyph\":{\"id\":\"6910\"},\"view\":{\"id\":\"6913\"}},\"id\":\"6912\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"6991\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"7022\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"6895\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"7012\"},\"glyph\":{\"id\":\"7013\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"7015\"},\"nonselection_glyph\":{\"id\":\"7014\"},\"view\":{\"id\":\"7017\"}},\"id\":\"7016\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"7025\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"7024\"},\"group\":null,\"major_label_policy\":{\"id\":\"7025\"},\"ticker\":{\"id\":\"6991\"}},\"id\":\"6990\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"6900\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"6908\"}},\"id\":\"6913\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"6917\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"6886\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"6889\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"6982\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"6999\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"6878\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"bmim_bmim\"},\"renderers\":[{\"id\":\"6912\"}]},\"id\":\"6926\",\"type\":\"LegendItem\"},{\"attributes\":{\"toolbar\":{\"id\":\"7070\"},\"toolbar_location\":\"above\"},\"id\":\"7071\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"6891\",\"type\":\"BasicTicker\"},{\"attributes\":{\"toolbars\":[{\"id\":\"6901\"},{\"id\":\"6953\"},{\"id\":\"7005\"}],\"tools\":[{\"id\":\"6894\"},{\"id\":\"6895\"},{\"id\":\"6896\"},{\"id\":\"6897\"},{\"id\":\"6898\"},{\"id\":\"6899\"},{\"id\":\"6927\"},{\"id\":\"6946\"},{\"id\":\"6947\"},{\"id\":\"6948\"},{\"id\":\"6949\"},{\"id\":\"6950\"},{\"id\":\"6951\"},{\"id\":\"6979\"},{\"id\":\"6998\"},{\"id\":\"6999\"},{\"id\":\"7000\"},{\"id\":\"7001\"},{\"id\":\"7002\"},{\"id\":\"7003\"},{\"id\":\"7031\"}]},\"id\":\"7070\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"7024\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"6927\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"6894\",\"type\":\"PanTool\"},{\"attributes\":{\"tools\":[{\"id\":\"6894\"},{\"id\":\"6895\"},{\"id\":\"6896\"},{\"id\":\"6897\"},{\"id\":\"6898\"},{\"id\":\"6899\"},{\"id\":\"6927\"}]},\"id\":\"6901\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"6938\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"6941\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"7018\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"6972\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"bmim_bf4\"},\"renderers\":[{\"id\":\"6964\"}]},\"id\":\"6978\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"7001\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"6970\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6962\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"6946\"},{\"id\":\"6947\"},{\"id\":\"6948\"},{\"id\":\"6949\"},{\"id\":\"6950\"},{\"id\":\"6951\"},{\"id\":\"6979\"}]},\"id\":\"6953\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"6969\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"6960\"}},\"id\":\"6965\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"6978\"}]},\"id\":\"6977\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6963\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7013\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"6975\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"6973\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"6974\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"6950\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"6932\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6911\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7015\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"bf4_bf4\"},\"renderers\":[{\"id\":\"7016\"}]},\"id\":\"7030\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"6998\"},{\"id\":\"6999\"},{\"id\":\"7000\"},{\"id\":\"7001\"},{\"id\":\"7002\"},{\"id\":\"7003\"},{\"id\":\"7031\"}]},\"id\":\"7005\",\"type\":\"Toolbar\"},{\"attributes\":{\"below\":[{\"id\":\"6938\"}],\"center\":[{\"id\":\"6941\"},{\"id\":\"6945\"},{\"id\":\"6977\"}],\"left\":[{\"id\":\"6942\"}],\"renderers\":[{\"id\":\"6964\"}],\"sizing_mode\":\"scale_both\",\"title\":{\"id\":\"6966\"},\"toolbar\":{\"id\":\"6953\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"6930\"},\"x_scale\":{\"id\":\"6934\"},\"y_range\":{\"id\":\"6932\"},\"y_scale\":{\"id\":\"6936\"}},\"id\":\"6929\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"7030\"}]},\"id\":\"7029\",\"type\":\"Legend\"},{\"attributes\":{\"axis_label\":\"$$r / nm$$\",\"coordinates\":null,\"formatter\":{\"id\":\"6972\"},\"group\":null,\"major_label_policy\":{\"id\":\"6973\"},\"ticker\":{\"id\":\"6939\"}},\"id\":\"6938\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6961\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"6942\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"6945\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"6979\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"6946\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"6936\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"6960\"},\"glyph\":{\"id\":\"6961\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"6963\"},\"nonselection_glyph\":{\"id\":\"6962\"},\"view\":{\"id\":\"6965\"}},\"id\":\"6964\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"6939\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"7003\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy33HXZQsyD+5VFgCYvjQP/TXG9uwk7U/1bw36Vw50T8nv+QOSBXUP/hOdFiNpcQ/havYWUDTwD9GVxIC96vVPyJl5eY42N8/O8Sdwm/F1z+mDCdMcAPePxYDDrq2Otw/ZpDPK3+45D8CSQd3zEjjP3obqCO/79c/ExLaAF7q3T8Y2RJYxQfgP2q70Ki4e9w/+VrSWOqx3z+KX+XX4A7aP77235XdHN4/2zkIxiDc1z/Boed0Kc/ZP9JMXDCzbtk/8FJ/9iZG2D/J9AHVU6DcP6MG7P6eMNg/f4F6yp1y2z8DYQiZFrzgP2hHQ50CYN4//wuso0Uf4T+6XGtvqYTmP6cg+CuCU+Y/X6wFTwv/5j+VBo7Vx/PtPzmus/YvQvA/sjQULya88j8FQy7aqiv2P8ov7qgpxPY/s3MXNnVf9j/l5acG6RP5P5oPEuWrlPg/4/MPW47p+D8GNB7C7pn3P2Sqv6rCN/g/co0TragV+D8cZL9LQeP2PykNzoXEd/Y/pySMwrgb9j90NkrQ/FL0P9bTEESFkvU/5BtwONJ89D/aXGNKyyjyP6OdCrmhovI/sTQULya88j+wLP++3QrzPyr5x6XefPE/ftCB+6zV8T8aOxkI1jnyPw+liLUZDvE/RF5KW3ME7z/j1RjCoXHuP3/AMOIbCe0/8p6GyhQc7T8zSI1Mjm/rP4v4CCFmBes/nycTcsfZ6j8m0g6EVOnpPyd6E1FK9ug/YKAPECJl5j9qC3npNMfmP4Xvej1Z2OU/J4NRuSB+5z9cKBjXqwfnP0CPwuOIG+k/TGTnmfiu6T9S+Q7afTzpP6mAUfurqOk/jHh1p1Ck6j9uVV2WfYXpPxaYcWs/Cus/Q9xSGdVv7D9Gw74sEDLqP5FggyKGfuk/pfoLAWyO6j9+u7IQbxrsP92St/UDA+0/2UfPBHBv7D+OdbJZlDjuPwfjxtKhGe4/ktOQH6kP7j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"7027\"},\"selection_policy\":{\"id\":\"7026\"}},\"id\":\"7012\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"6952\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"6949\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"7002\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"6951\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"6952\"}},\"id\":\"6948\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"6966\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"7012\"}},\"id\":\"7017\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"6943\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6910\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAADv2YwCV/2MP+/ZjAJX/Zw/c6PpQQG+pT/v2YwCV/2sPzYImGFWHrI/c6PpQQG+tT+xPjsirF25P+/ZjAJX/bw/lzpv8YBOwD82CJhhVh7CP9TVwNEr7sM/c6PpQQG+xT8TcRKy1o3HP7E+OyKsXck/UQxkkoEtyz/v2YwCV/3MP46ntXIszc4/lzpv8YBO0D9moYOpazbRPzYImGFWHtI/BW+sGUEG0z/U1cDRK+7TP6Q81YkW1tQ/c6PpQQG+1T9DCv7566XWPxNxErLWjdc/4tcmasF12D+xPjsirF3ZP4GlT9qWRdo/UQxkkoEt2z8fc3hKbBXcP+/ZjAJX/dw/v0ChukHl3T+Op7VyLM3eP14OyioXtd8/lzpv8YBO4D/+bXlNdsLgP2ahg6lrNuE/ztSNBWGq4T82CJhhVh7iP507or1LkuI/BW+sGUEG4z9torZ1NnrjP9TVwNEr7uM/PAnLLSFi5D+kPNWJFtbkPwxw3+ULSuU/c6PpQQG+5T/b1vOd9jHmP0MK/vnrpeY/qz0IVuEZ5z8TcRKy1o3nP3qkHA7MAeg/4tcmasF16D9KCzHGtunoP7E+OyKsXek/GXJFfqHR6T+BpU/alkXqP+nYWTaMueo/UQxkkoEt6z+3P27udqHrPx9zeEpsFew/h6aCpmGJ7D/v2YwCV/3sP1cNl15Mce0/v0ChukHl7T8ndKsWN1nuP46ntXIsze4/9tq/ziFB7z9eDsoqF7XvP+MgakOGFPA/lzpv8YBO8D9LVHSfe4jwP/5teU12wvA/sod++3D88D9moYOpazbxPxq7iFdmcPE/ztSNBWGq8T+C7pKzW+TxPzYImGFWHvI/6SGdD1FY8j+dO6K9S5LyP1FVp2tGzPI/BW+sGUEG8z+5iLHHO0DzP22itnU2evM/ILy7IzG08z/U1cDRK+7zP4jvxX8mKPQ/PAnLLSFi9D/wItDbG5z0P6Q81YkW1vQ/WFbaNxEQ9T8McN/lC0r1P7+J5JMGhPU/c6PpQQG+9T8nve7v+/f1P9vW8532MfY/j/D4S/Fr9j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAA+H8AAAAAAAAAAMw/LXVCjvw/WZ5VRm8h4j+wkpVTILYHQCXevFIIuOw/dOcIdd2R5z/4TnRYjaXkP/4ggYMn6NQ/kMHA+Nzt4T/m5WTMVnDyP/1X/H+NYvA/XGYeLNfw8D9dbdDSO7vyP9HzOKTFGvU/NT31oX377z+Gn/LiAObqP+XF8ue5uOQ/LFP20RPU4T/b5rwMJi3hP8l11SzpnuU/PBrJ39qS4z9VzCSDiTfjP2Z2yKD8q+Y/IMKOY83G5j8e1fldpYroP6qOrtPy2+0//vm2BRoS8z+3Ens94Af2P8RRH6p/6fk/EVCVJUyH/D9n4/khTnL/PxhTLVc3wv8/w8PZN/USAEBa4YHAO9EBQG2ouNaT1ABATQx7TmfH/z/+ii2YSoH8PzwZt5qU8Po/dmHpiwkt+D+YV3mcTz71P114C+pTgPQ/OOuKtO/L8j/88JXTfNLxPxFVjlcVZPI/woYLd4Ti8T8Z51C8jD3wPw2lVdhAWu4/9majvNwH8D/MrGTxnJzsP6DpEPbhcOo/npQkzg7u6z9aczvzb8PqP0k/WZzaGus/Tqv6Kj0c6j+wZeTwn+7oP9yTMFpmTOk/6gg30G9j6D+Nycj4IZjmP4C3/unrvuU/c4Zmh1Tg5j8lvv9zfDHpP7aeZlObGus/Q2cvmIxD7T9oa3+duXPtP2ioJ9ovse0/kgB1K81/8D+QPKASas7vP5YU3/xzVPA/Qv8haMD58D+ad4DFdunwP9bJ1l+2EPE/U/9WxWtB8T88OncUXDfxP0l2GM5L2/E/JuSo+u908D9hTZtrqYDwP+v0VEsf6fA/vVIG5w2W8T8zCi2T/gHxP1SsYgP5+/A/RWT5aG8U8T/uOvoAYk/xP94La8JU2vA/P4C+olgk8T93hJwOsvrwP8zSKWXqZPE/oOkMQ+958T+OWnVpugXxP/9J/3YXIvA/S91qNITb7z9QJYrQh9buP/3O6plqTO4/ic6ZqBKk7j+/PaD8fFrvPzwdY0E92e8/8YoNqn458D+hoe82io7tPxsN7BK4qu0/qDmMwxN37T8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"6975\"},\"selection_policy\":{\"id\":\"6974\"}},\"id\":\"6960\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7014\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"6934\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6909\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"6947\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"$$g(r)$$\",\"coordinates\":null,\"formatter\":{\"id\":\"6969\"},\"group\":null,\"major_label_policy\":{\"id\":\"6970\"},\"ticker\":{\"id\":\"6943\"}},\"id\":\"6942\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6930\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"7072\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.2\"}};\n", + " const render_items = [{\"docid\":\"89a0c8c7-0ddf-4011-abcb-773136c9e3e8\",\"root_ids\":[\"7072\"],\"roots\":{\"7072\":\"157a7f1a-b676-46a7-b774-47efb3c28623\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "7072" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Exp3_Radial_Distribution_Function_11" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project.experiments.bmim_bf4.run.RadialDistributionFunction(\n", + " number_of_configurations=500, number_of_bins=100, molecules=True\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/scripts/molecule_mapping.py b/examples/scripts/molecule_mapping.py index a154accb..3d2a00a9 100644 --- a/examples/scripts/molecule_mapping.py +++ b/examples/scripts/molecule_mapping.py @@ -61,14 +61,28 @@ def run_example(): simulation_data="bmim_bf4.lammpstraj", ) project.experiments.bmim_bf4.run.UnwrapViaIndices() - project.run.MolecularMap( - molecules={ - "bmim": {"smiles": "CCCCN1C=C[N+](+C1)C", "amount": 50, "cutoff": 1.9}, - "bf4": {"smiles": "[B-](F)(F)(F)F", "amount": 50, "cutoff": 2.4}, - } + + bmim = mds.Molecule( + name="bmim", + species_dict={"C": 8, "N": 2, "H": 15}, + amount=50, + cutoff=1.9, + reference_configuration=400, + ) + bf = mds.Molecule( + name="bf4", + smiles="[B-](F)(F)(F)F", + amount=50, + cutoff=2.4, + reference_configuration=400, + ) + project.run.MolecularMap(molecules=[bf, bmim]) + project.run.RadialDistributionFunction( + start=0, stop=400, number_of_configurations=300, molecules=True ) + print(project.experiments.bmim_bf4.box_array) - # project.experiments.bmim_bf4.run_visualization(molecules=True) # has been removed + project.experiments.bmim_bf4.run_visualization(molecules=True) print("Tutorial complete....... Files being deleted now.") diff --git a/mdsuite/__init__.py b/mdsuite/__init__.py index 5a3e534b..42688018 100644 --- a/mdsuite/__init__.py +++ b/mdsuite/__init__.py @@ -27,13 +27,19 @@ import logging import sys -from .experiment import Experiment -from .graph_modules import adjacency_matrix -from .project import Project -from .utils import config -from .utils.report_computer_characteristics import Report - -__all__ = ["Project", "Experiment", "adjacency_matrix", "Report", "config"] +from mdsuite.experiment import Experiment +from mdsuite.project import Project +from mdsuite.utils import config +from mdsuite.utils.molecule import Molecule +from mdsuite.utils.report_computer_characteristics import Report + +__all__ = [ + Project.__name__, + Experiment.__name__, + Report.__name__, + "config", + Molecule.__name__, +] __version__ = "0.1.0" logger = logging.getLogger(__name__) diff --git a/mdsuite/calculators/angular_distribution_function.py b/mdsuite/calculators/angular_distribution_function.py index 1b58bd25..41cb9e75 100644 --- a/mdsuite/calculators/angular_distribution_function.py +++ b/mdsuite/calculators/angular_distribution_function.py @@ -131,28 +131,30 @@ def __init__(self, **kwargs): self.number_of_atoms = None self.norm_power = None self.sample_configurations = None + self.result_keys = ["max_peak"] self.result_series_keys = ["angle", "adf"] self._dtype = tf.float32 self.adf_minibatch = None # memory management for triples generation per batch. self.analysis_name = "Angular_Distribution_Function" - self.x_label = r"$$\text{Angle} / \theta $$" - self.y_label = r"$$\text{ADF} / a.u.$$" + self.x_label = r"$\text{Angle} / \theta$" + self.y_label = r"$\text{ADF} / a.u.$" @call def __call__( self, batch_size: int = 1, - minibatch: int = 50, + minibatch: int = -1, number_of_configurations: int = 5, - cutoff: int = 6.0, + cutoff: float = 6.0, start: int = 1, stop: int = None, number_of_bins: int = 500, species: list = None, use_tf_function: bool = False, molecules: bool = False, + atom_selection=np.s_[:], plot: bool = True, norm_power: int = 4, **kwargs, @@ -182,6 +184,8 @@ def __call__( of batches. species : list A list of species to use. + atom_selection : Union[np.s_, dict] + Atoms to be used in the analysis. norm_power: int The power of the normalization factor applied to the ADF histogram. If set to zero no distance normalization will be applied. @@ -196,7 +200,7 @@ def __call__( cutoff=cutoff, start=start, stop=stop, - atom_selection=np.s_[:], + atom_selection=atom_selection, data_range=1, correlation_time=1, molecules=molecules, @@ -210,9 +214,7 @@ def __call__( self.cutoff = cutoff self.plot = plot self._batch_size = batch_size # memory management for all batches - self.adf_minibatch = ( - minibatch # memory management for triples generation per batch. - ) + self.adf_minibatch = minibatch self.bin_range = [0.0, 3.15] # from 0 to a chemists pi self.norm_power = norm_power self.override_n_batches = kwargs.get("batches") @@ -254,12 +256,21 @@ def _compute_number_of_atoms(self, reference: dict): ------- Updates the number of atoms attribute. """ + # TODO return to dotdict form when molecules is a dotdict number_of_atoms = 0 for item in self.args.species: - number_of_atoms += reference[item].n_particles + if isinstance(self.args.atom_selection, dict): + number_of_atoms = 0 + for item in self.args.atom_selection: + number_of_atoms += len(self.args.atom_selection[item]) + else: + number_of_atoms += reference[item]["n_particles"] # .n_particles self.number_of_atoms = number_of_atoms + if self.adf_minibatch == -1: + self.adf_minibatch = number_of_atoms + def _prepare_data_structure(self): """ Prepare variables and dicts for the analysis. @@ -278,7 +289,14 @@ def _prepare_data_structure(self): start_index = 0 stop_index = 0 for species in self.args.species: - stop_index += self.experiment.species[species].n_particles + try: + if isinstance(self.args.atom_selection, dict): + stop_index += len(self.args.atom_selection[species]) + else: + stop_index += self.experiment.species[species].n_particles + except KeyError: + # TODO return to dotdict form when molecules is a dotdict + stop_index += self.experiment.molecules[species]["n_particles"] species_indices.append((species, start_index, stop_index)) start_index = stop_index @@ -448,8 +466,9 @@ def _compute_adfs(self, angles, species_indices): self.data_range = self.args.number_of_configurations log.debug(f"species are {species}") - + max_angle = bin_range_to_angles[tf.math.argmax(hist.numpy())] data = { + self.result_keys[0]: max_angle, self.result_series_keys[0]: bin_range_to_angles.tolist(), self.result_series_keys[1]: hist.numpy().tolist(), } @@ -510,6 +529,7 @@ def _correct_batch_properties(self): ------- Updates the parent class. """ + self.remainder = 0 if self.batch_size > self.args.number_of_configurations: self.batch_size = self.args.number_of_configurations self.n_batches = 1 @@ -522,7 +542,6 @@ def _correct_batch_properties(self): if self.minibatch: self.batch_size = 1 self.n_batches = self.args.number_of_configurations - self.remainder = 0 self.memory_manager.atom_batch_size = None self.memory_manager.n_atom_batches = None self.memory_manager.atom_remainder = None @@ -578,7 +597,7 @@ def run_calculator(self): angles = {} # Loop over the batches. - for idx, batch in tqdm(enumerate(batch_ds), ncols=70): + for idx, batch in tqdm(enumerate(batch_ds), ncols=70, total=self.n_batches): positions_tensor = self._format_data(batch=batch, keys=dict_keys) angles = self._build_histograms( diff --git a/mdsuite/calculators/coordination_number_calculation.py b/mdsuite/calculators/coordination_number_calculation.py index 6c2bf166..c081e77d 100644 --- a/mdsuite/calculators/coordination_number_calculation.py +++ b/mdsuite/calculators/coordination_number_calculation.py @@ -289,7 +289,7 @@ def _get_coordination_numbers(self): / np.sqrt(2) ) - # # TODO what about second shell?! + # # TODO what about second shell? # second_shell = ( # np.mean( # [ diff --git a/mdsuite/calculators/einstein_diffusion_coefficients.py b/mdsuite/calculators/einstein_diffusion_coefficients.py index 92d69244..1c2386c5 100644 --- a/mdsuite/calculators/einstein_diffusion_coefficients.py +++ b/mdsuite/calculators/einstein_diffusion_coefficients.py @@ -91,8 +91,8 @@ def __init__(self, **kwargs): super().__init__(**kwargs) self.scale_function = {"linear": {"scale_factor": 150}} self.loaded_property = mdsuite_properties.unwrapped_positions - self.x_label = r"$ \text{Time} / s$" - self.y_label = r"$ \text{MSD} / m^{2}$" + self.x_label = r"$\text{Time}$ / $s$" + self.y_label = r"$\text{MSD}$ / $m^{2}$" self.result_keys = ["diffusion_coefficient", "uncertainty"] self.result_series_keys = ["time", "msd"] self.analysis_name = "Einstein Self-Diffusion Coefficients" @@ -183,7 +183,7 @@ def calculate_prefactor(self, species: str = None): numerator = self.experiment.units["length"] ** 2 denominator = ( self.experiment.units["time"] - * len(self.experiment.molecules[species]["indices"]) + * self.experiment.molecules[species]["n_particles"] ) * 6 else: # Calculate the prefactor @@ -282,7 +282,6 @@ def run_calculator(self): self.calculate_prefactor(species) batch_ds = self.get_batch_dataset([species]) - for batch in tqdm( batch_ds, ncols=70, diff --git a/mdsuite/calculators/einstein_helfand_ionic_conductivity.py b/mdsuite/calculators/einstein_helfand_ionic_conductivity.py index 1b650fc9..dc84c572 100644 --- a/mdsuite/calculators/einstein_helfand_ionic_conductivity.py +++ b/mdsuite/calculators/einstein_helfand_ionic_conductivity.py @@ -97,7 +97,7 @@ def __init__(self, **kwargs): def __call__( self, plot=True, - data_range=500, + data_range=100, correlation_time=1, tau_values: np.s_ = np.s_[:], ): diff --git a/mdsuite/calculators/kirkwood_buff_integrals.py b/mdsuite/calculators/kirkwood_buff_integrals.py index baefc863..1230cf4d 100644 --- a/mdsuite/calculators/kirkwood_buff_integrals.py +++ b/mdsuite/calculators/kirkwood_buff_integrals.py @@ -23,6 +23,7 @@ Summary ------- +Module for the computation of kirkwood buff integrals. """ import logging from dataclasses import dataclass diff --git a/mdsuite/calculators/radial_distribution_function.py b/mdsuite/calculators/radial_distribution_function.py index 4cfea380..b2f19974 100644 --- a/mdsuite/calculators/radial_distribution_function.py +++ b/mdsuite/calculators/radial_distribution_function.py @@ -139,13 +139,14 @@ def __init__(self, **kwargs): @call def __call__( self, - plot=True, - number_of_bins=None, - cutoff=None, - save=True, - start=0, - stop=None, - number_of_configurations=500, + plot: bool = True, + number_of_bins: int = None, + cutoff: float = None, + save: bool = True, + start: int = 0, + stop: int = None, + number_of_configurations: int = 500, + atom_selection: Union[np.s_, dict] = np.s_[:], minibatch: int = -1, species: list = None, molecules: bool = False, @@ -175,6 +176,8 @@ def __call__( number_of_configurations: int The number of uniformly sampled configuration between start and stop to be used for the RDF. + atom_selection : Union[np.s_, dict] + Atoms to be used in the analysis. minibatch: int Size of a minibatch over atoms in the batch over configurations. Decrease this value if you run into memory @@ -193,7 +196,7 @@ def __call__( cutoff=cutoff, start=start, stop=stop, - atom_selection=np.s_[:], + atom_selection=atom_selection, data_range=1, correlation_time=1, molecules=molecules, @@ -314,7 +317,7 @@ def _calculate_prefactor(self, species: Union[str, tuple] = None): if self.args.molecules: # Density of all atoms / total volume rho = ( - len(self.experiment.molecules[species_split[1]]["indices"]) + self.experiment.molecules[species_split[1]]["n_particles"] / self.experiment.volume ) numerator = species_scale_factor @@ -322,20 +325,24 @@ def _calculate_prefactor(self, species: Union[str, tuple] = None): self.args.number_of_configurations * rho * self.ideal_correction - * len(self.experiment.molecules[species_split[0]]["indices"]) + * self.experiment.molecules[species_split[0]]["n_particles"] ) else: + if isinstance(self.args.atom_selection, dict): + n_species_0 = len(self.args.atom_selection[species_split[0]]) + n_species_1 = len(self.args.atom_selection[species_split[1]]) + else: + n_species_0 = self.experiment.species[species_split[0]].n_particles + n_species_1 = self.experiment.species[species_split[1]].n_particles + # Density of all atoms / total volume - rho = ( - self.experiment.species[species_split[1]].n_particles - / self.experiment.volume - ) + rho = n_species_1 / self.experiment.volume numerator = species_scale_factor denominator = ( self.args.number_of_configurations * rho * self.ideal_correction - * self.experiment.species[species_split[0]].n_particles + * n_species_0 ) prefactor = numerator / denominator @@ -357,7 +364,7 @@ def _calculate_radial_distribution_functions(self): for names in self.key_list: self.selected_species = names.split("_") - # TODO use selected_species instead of names, it is more clear! + # TODO use selected_species instead of names, it is more clear prefactor = self._calculate_prefactor(names) # calculate the prefactor self.rdf.update( @@ -397,6 +404,7 @@ def _correct_batch_properties(self): ------- Updates the parent class. """ + self.remainder = 0 if self.batch_size > self.args.number_of_configurations: self.batch_size = self.args.number_of_configurations self.n_batches = 1 @@ -409,7 +417,6 @@ def _correct_batch_properties(self): if self.minibatch: self.batch_size = 1 self.n_batches = self.args.number_of_configurations - self.remainder = 0 self.memory_manager.atom_batch_size = None self.memory_manager.n_atom_batches = None self.memory_manager.atom_remainder = None @@ -462,27 +469,32 @@ def run_minibatch_loop(self, atoms, stop, n_atoms, minibatch_start, positions_te log.debug(f"Computing species values took {timer() - start_time} s") minibatch_start = stop - return minibatch_rdf, minibatch_start, stop - def compute_species_values(self, indices: tf.Tensor, start_batch, d_ij: tf.Tensor): + def compute_species_values( + self, indices: tf.Tensor, start_batch, d_ij: tf.Tensor + ) -> dict: """ Compute species-wise histograms Parameters ---------- - indices: tf.Tensor + indices : tf.Tensor indices of the d_ij distances in the shape (x, 2) - start_batch: starts from 0 and increments by atoms_per_batch every batch - d_ij: d_ij matrix in the shape (x, batches) where x comes from the triu + start_batch : + starts from 0 and increments by atoms_per_batch every batch + d_ij : tf.Tensor + d_ij matrix in the shape (x, batches) where x comes from the triu computation start_batch : int - d_ij : tf.Tensor - distance matrix for the atoms. + Atom index within a single configuration from to start the computation + based on the current minibatch that is being computed. Returns ------- - + rdf : dict + Dict of rdf values for each combination of species, e.g.: + {'H-O': tf.Tensor(...), 'H-H': ..., 'O-O': ...} """ rdf = { name: tf.zeros(self.args.number_of_bins, dtype=tf.int32) @@ -491,7 +503,6 @@ def compute_species_values(self, indices: tf.Tensor, start_batch, d_ij: tf.Tenso indices = tf.transpose(indices) particles_list = self.particles_list - for tuples in itertools.combinations_with_replacement(self.index_list, 2): names = self._get_species_names(tuples) start_ = tf.concat( @@ -519,7 +530,6 @@ def compute_species_values(self, indices: tf.Tensor, start_batch, d_ij: tf.Tenso def plot_data(self, data): """Plot the RDF data""" for selected_species, val in data.items(): - # TODO fix units! self.run_visualization( x_data=np.array(val[self.result_series_keys[0]]), y_data=np.array(val[self.result_series_keys[1]]), @@ -625,8 +635,8 @@ def bin_minibatch( bin_range number_of_bins : int cutoff : float + Cutoff to enforce on the distance tensor. """ - # select the indices that are within the boundaries of the current species / # molecule mask_1 = (indices[:, 0] > start[0]) & (indices[:, 0] < stop[0]) @@ -637,7 +647,6 @@ def bin_minibatch( bin_data = tf.histogram_fixed_width( values=values, value_range=bin_range, nbins=number_of_bins ) - return bin_data @staticmethod @@ -694,14 +703,19 @@ def particles_list(self): """ if self.args.molecules: particles_list = [ - len(self.experiment.molecules[item]["indices"]) + self.experiment.molecules[item]["n_particles"] for item in self.experiment.molecules ] else: - particles_list = [ - self.experiment.species[item].n_particles - for item in self.experiment.species - ] + if isinstance(self.args.atom_selection, dict): + particles_list = [ + len(self.args.atom_selection[item]) for item in self.args.species + ] + else: + particles_list = [ + self.experiment.species[item].n_particles + for item in self.args.species + ] return particles_list @@ -836,7 +850,9 @@ def run_calculator(self): ) # Loop over the batches. - for idx, batch in tqdm(enumerate(batch_ds), ncols=70, disable=batch_tqm): + for idx, batch in tqdm( + enumerate(batch_ds), ncols=70, disable=batch_tqm, total=self.n_batches + ): # Reformat the data. log.debug("Reformatting data.") positions_tensor = self._format_data(batch=batch, keys=dict_keys) diff --git a/mdsuite/calculators/trajectory_calculator.py b/mdsuite/calculators/trajectory_calculator.py index c4346c51..404c79e6 100644 --- a/mdsuite/calculators/trajectory_calculator.py +++ b/mdsuite/calculators/trajectory_calculator.py @@ -226,6 +226,19 @@ def _handle_tau_values(self) -> np.array: return times + def _check_remainder(self): + """ + Check that the remainder is compatible with the calculator. + + It may come to pass that the remainder computed by the memory manager is not + divisible by your data range. In this case, it must be clipped such that it is. + + Returns + ------- + Updates the remainder attribute if required. + """ + return self.remainder - (self.remainder % self.args.data_range) + def _prepare_managers(self, data_path: list, correct: bool = False): """ Prepare the memory and tensor_values monitors for calculation. @@ -263,6 +276,8 @@ def _prepare_managers(self, data_path: list, correct: bool = False): self.n_batches = self.memory_manager.n_batches self.remainder = self.memory_manager.remainder + self._check_remainder() + if correct: self._correct_batch_properties() diff --git a/mdsuite/database/data_manager.py b/mdsuite/database/data_manager.py index a93655e4..ab414654 100644 --- a/mdsuite/database/data_manager.py +++ b/mdsuite/database/data_manager.py @@ -134,6 +134,12 @@ def batch_generator( remainder : bool If true, a remainder batch must be computed. loop_array : np.ndarray + If this is not None, elements of this array will be looped over in + in the batches which load data at their indices. For example, + loop_array = [[1, 4, 7], [10, 13, 16], [19, 21, 24]] + In this case, in the fist batch, configurations 1, 4, and 7 will be + loaded for the analysis. This is particularly important in the + structural properties. Returns ------- @@ -175,8 +181,9 @@ def generator( """ database = Database(database) - for batch in range(batch_number + int(remainder)): + loop_over_remainder = self.remainder > 0 + for batch in range(batch_number + int(loop_over_remainder)): start = int(batch * batch_size) + self.offset stop = int(start + batch_size) data_size = tf.cast(batch_size, dtype=tf.int32) @@ -187,7 +194,14 @@ def generator( # TODO make default if loop_array is not None: - select_slice = np.s_[:, loop_array[batch]] + if isinstance(self.atom_selection, dict): + select_slice = {} + for item in self.atom_selection: + select_slice[item] = np.s_[ + self.atom_selection[item], loop_array[batch] + ] + else: + select_slice = np.s_[self.atom_selection, loop_array[batch]] elif system: select_slice = np.s_[start:stop] else: @@ -309,6 +323,11 @@ def dictionary_generator(ensemble_loop, correlation_time, data_range): ------- None """ + ensemble_loop = int( + np.clip( + (glob_data[b"data_size"] - data_range) / correlation_time, 1, None + ) + ) for ensemble in range(ensemble_loop): start = ensemble * correlation_time stop = start + data_range @@ -317,10 +336,7 @@ def dictionary_generator(ensemble_loop, correlation_time, data_range): if item == str.encode("data_size"): pass else: - if system: - output_dict[item] = glob_data[item][start:stop] - else: - output_dict[item] = glob_data[item][:, start:stop] + output_dict[item] = glob_data[item][:, start:stop] yield output_dict diff --git a/mdsuite/database/simulation_database.py b/mdsuite/database/simulation_database.py index ece81fb9..bb8ee6fc 100644 --- a/mdsuite/database/simulation_database.py +++ b/mdsuite/database/simulation_database.py @@ -580,14 +580,24 @@ def load_data( data = {} for i, item in enumerate(path_list): if type(select_slice) is dict: - my_slice = select_slice[item] + # index is the particle species name in the full item as a str. + slice_index = item.decode().split("/")[0] + my_slice = select_slice[slice_index] else: my_slice = select_slice - - data[item] = ( - tf.convert_to_tensor(database[item][my_slice], dtype=tf.float64) - * scaling[i] - ) + try: + data[item] = ( + tf.convert_to_tensor(database[item][my_slice], dtype=tf.float64) + * scaling[i] + ) + except TypeError: + data[item] = ( + tf.convert_to_tensor( + database[item][my_slice[0]][:, my_slice[1], :], + dtype=tf.float64, + ) + * scaling[i] + ) data[str.encode("data_size")] = d_size return data diff --git a/mdsuite/file_io/chemfiles_read.py b/mdsuite/file_io/chemfiles_read.py index 6f8f7146..f230c112 100644 --- a/mdsuite/file_io/chemfiles_read.py +++ b/mdsuite/file_io/chemfiles_read.py @@ -44,7 +44,8 @@ def __init__( # If more are added, link here the mdsuite property to the name of the property # attribute in chemfiles.Frame self.properties_to_chemfile_attr_dict = { - mdsuite_properties.unwrapped_positions: "positions", + # mdsuite_properties.unwrapped_positions: "positions", + mdsuite_properties.positions: "positions", mdsuite_properties.velocities: "velocities", } @@ -130,7 +131,7 @@ def get_configurations_generator( with chemfiles.Trajectory(str(self.traj_file_path)) as traj: if self.topol_file_path is not None: traj.set_topology(str(self.topol_file_path)) - for _ in tqdm.tqdm(range(n_batches)): + for _ in tqdm.tqdm(range(n_batches), ncols=70): yield self._read_process_n_configurations(traj, batch_size) if n_configs_remainder > 0: yield self._read_process_n_configurations(traj, n_configs_remainder) diff --git a/mdsuite/file_io/tabular_text_files.py b/mdsuite/file_io/tabular_text_files.py index 6d26a0e4..7eae9e40 100644 --- a/mdsuite/file_io/tabular_text_files.py +++ b/mdsuite/file_io/tabular_text_files.py @@ -143,7 +143,7 @@ def get_configurations_generator( skip_n_lines(file, self.tabular_text_reader_data.n_header_lines) n_header_lines_in_config = 0 - for _ in tqdm.tqdm(range(n_batches)): + for _ in tqdm.tqdm(range(n_batches), ncols=70): yield self._read_process_n_configurations( file, batch_size, diff --git a/mdsuite/file_io/xtc_reader.py b/mdsuite/file_io/xtc_reader.py deleted file mode 100644 index fb1dcb10..00000000 --- a/mdsuite/file_io/xtc_reader.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -MDSuite: A Zincwarecode package. - -License -------- -This program and the accompanying materials are made available under the terms -of the Eclipse Public License v2.0 which accompanies this distribution, and is -available at https://www.eclipse.org/legal/epl-v20.html - -SPDX-License-Identifier: EPL-2.0 - -Copyright Contributors to the Zincwarecode Project. - -Contact Information -------------------- -email: zincwarecode@gmail.com -github: https://github.com/zincware -web: https://zincwarecode.com/ - -Citation --------- -If you use this module please cite us with: - -Summary -------- -""" diff --git a/mdsuite/graph_modules/molecular_graph.py b/mdsuite/graph_modules/molecular_graph.py index 71ea26d2..921812ec 100644 --- a/mdsuite/graph_modules/molecular_graph.py +++ b/mdsuite/graph_modules/molecular_graph.py @@ -26,6 +26,7 @@ """ from __future__ import annotations +import logging from typing import TYPE_CHECKING import numpy as np @@ -33,8 +34,13 @@ from pysmiles import read_smiles from tqdm import tqdm +from mdsuite.database.mdsuite_properties import mdsuite_properties from mdsuite.database.simulation_database import Database -from mdsuite.utils.meta_functions import join_path +from mdsuite.utils.meta_functions import check_a_in_b, join_path +from mdsuite.utils.molecule import Molecule + +log = logging.getLogger(__name__) + if TYPE_CHECKING: from mdsuite.experiment import Experiment @@ -43,15 +49,20 @@ class MolecularGraph: """ Class for building and studying molecular graphs. + + Attributes + ---------- + reference_property : str + MDSuite property to use for reference during the unwrapping. """ + molecular_mass: float + molecular_groups: dict + def __init__( self, experiment: Experiment, - from_smiles: bool = False, - from_configuration: bool = True, - smiles_string: str = None, - species: list = None, + molecule_input_data: Molecule, ): """ Constructor for the MolecularGraph class. @@ -60,167 +71,129 @@ def __init__( ---------- experiment : Experiment Experiment object from which to read. - from_smiles : bool - Build graphs from a smiles string. - from_configuration : bool - Build graphs from a configuration. - smiles_string : str - SMILES string to read - species : list - List of species to build a graph with. + molecule_input_data :An MDSuite Molecule instance. + """ self.experiment = experiment - self.from_smiles = from_smiles - self.from_configuration = from_configuration - - self.smiles_string = smiles_string - self.species = species - + self.molecule_name = molecule_input_data.name self.database = Database(self.experiment.database_path / "database.hdf5") + self.cutoff = molecule_input_data.cutoff + self.n_molecules = molecule_input_data.amount + self.mol_pbc = molecule_input_data.mol_pbc - def _perform_checks(self): - """ - Check the input for inconsistency. - - Returns - ------- - """ - pass + if self.mol_pbc: + self.reference_property = mdsuite_properties.positions + else: + self.reference_property = mdsuite_properties.unwrapped_positions - @staticmethod - def get_neighbour_list(positions: tf.Tensor, cell: list = None) -> tf.Tensor: + if isinstance(molecule_input_data.reference_configuration_idx, int): + self.reference_configuration = molecule_input_data.reference_configuration_idx + else: + self.reference_configuration = 0 + + if isinstance(molecule_input_data.smiles, str): + self.smiles_graph, self.species = build_smiles_graph( + molecule_input_data.smiles + ) + elif isinstance(molecule_input_data.species_dict, dict): + self.species = molecule_input_data.species_dict + self.smiles_string = None + else: + error_msg = ( + "The minimum amount of data was not given to the mapping." + "Either provide a reference key with information about" + "Which species and the number of them are in the molecule," + "or provide a SMILES string that can be used to compute " + "this information." + ) + raise ValueError(error_msg) + + self._get_molecular_mass() + self._build_molecule_groups() # populate the class group attribute + self._perform_isomorphism_tests() # run the graph tests. + + def _get_molecular_mass(self): """ - Generate the neighbour list - - Parameters - ---------- - positions: tf.Tensor - Tensor with shape (number_of_configurations, n_atoms, 3) - representing the coordinates - cell: list - If periodic boundary conditions are used, please supply the cell - dimensions, e.g. [13.97, 13.97, 13.97]. If the cell is provided - minimum image convention will be applied! - batch_size: int - Has to be evenly divisible by the the number of configurations. + Get the mass of a SMILES molecule based on experiment data. Returns ------- - generator object which results all distances for the current batch of - time steps - - To get the real r_ij matrix for one time_step you can use the following: - r_ij_mat = np.zeros((n_atoms, n_atoms, 3)) - r_ij_mat[np.triu_indices(n_atoms, k = 1)] = get_neighbour_list(``*args``) - r_ij_mat -= r_ij_mat.transpose(1, 0, 2) - - """ - r_ij_matrix = tf.reshape(positions, (1, len(positions), 3)) - tf.reshape( - positions, (len(positions), 1, 3) - ) - if cell: - r_ij_matrix -= tf.math.rint(r_ij_matrix / cell) * cell - return tf.norm(r_ij_matrix, ord="euclidean", axis=2) - - def build_smiles_graph(self): - """ - Build molecular graphs from SMILES strings. - """ - mol = read_smiles(self.smiles_string, explicit_hydrogen=True) - data = mol.nodes - species = {} - for i in range(len(data)): - item = data[i].get("element") - if item in species: - species[item] += 1 - else: - species[item] = 0 - species[item] += 1 - - return mol, species + Updates the following class attributes: - @staticmethod - def _apply_system_cutoff(tensor: tf.Tensor, cutoff: float) -> tf.Tensor: + mass : float + mass of the molecule """ - Enforce a cutoff on a tensor + self.molecular_mass = 0.0 + for species, number in self.species.items(): + self.molecular_mass += self.experiment.species[species]["mass"][0] * number - Parameters - ---------- - tensor : tf.Tensor - cutoff : float - """ - - cutoff_mask = tf.cast( - tf.less(tensor, cutoff), dtype=tf.int16 - ) # Construct the mask - - return tf.linalg.set_diag(cutoff_mask, np.zeros(len(tensor))) - - def build_configuration_graph(self, cutoff: float, adjacency: bool = True): + def build_configuration_graph(self) -> tf.Tensor: """ Build a graph for the configuration. - Parameters - ---------- - cutoff : float - adjacency : bool - If true, the adjacent matrix is returned. Returns ------- - + adjacency_matrix : tf.Tensor + An adjacency matrix for the configuration describing which atoms are + bonded to which others. """ - path_list = [join_path(species, "Positions") for species in self.species] - data_dict = self.database.load_data(path_list=path_list, select_slice=np.s_[:, 0]) + path_list = [ + join_path(species, self.reference_property.name) for species in self.species + ] + data_dict = self.database.load_data( + path_list=path_list, select_slice=np.s_[:, self.reference_configuration] + ) data = [] for item in path_list: data.append(data_dict[item]) configuration_tensor = tf.concat(data, axis=0) - distance_matrix = self.get_neighbour_list( + distance_matrix = get_neighbour_list( configuration_tensor, cell=self.experiment.box_array ) - return self._apply_system_cutoff(distance_matrix, cutoff) + return _apply_system_cutoff(distance_matrix, self.cutoff) - @staticmethod - def reduce_graphs(adjacency_matrix: tf.Tensor, n_molecules: int = None): + def _build_molecule_groups(self): + """ + Build molecule groups from decomposed graph. + + Returns + ------- + + """ + adjacency_graph = self.build_configuration_graph() + decomposed_graphs = self._perform_graph_decomposition(adjacency_graph) + self.molecular_groups = self._split_decomposed_graphs(decomposed_graphs) + + def _perform_graph_decomposition(self, adjacency_matrix: tf.Tensor) -> dict: """ Reduce an adjacency matrix into a linear combination of sub-matrices. + This is the process of graph decomposition in which one large graph is + decomposed into smaller, independent graphs. In the case of this data, these + sub-graphs are for a single molecule, therefore, there should be one sub-graph + per molecule for each species. + Parameters ---------- adjacency_matrix : tf.Tensor Adjacency tensor to reduce. - n_molecules : int - Number of molecules that should be found after the reduction. - If a number is passed here and the reduced number if not equal - to the argument, the kernel is exited by a raised error. If - nothing is passed, no checks are performed. - """ - - def check_a_in_b(a, b): - """Check if any value of a is in b - - Parameters - ---------- - a: tf.Tensor - b: tf.Tensor - - Returns - ------- - bool - """ - x = tf.unstack(a) - for x1 in x: - if tf.reduce_any(b == x1): - return True - return False + Returns + ------- + reduced_graphs : dict + A dict of sub graphs constructed from the decomposition of the adjacency + matrix. Of the form {'0': [], '1': []} + """ + # TODO: wrap this in an optimizer to iteratively improve the cutoff until the + # number is correct. molecules = {} + log.info(f"Building molecular graph from configuration for {self.molecule_name}") # TODO speed up - for i in tqdm(range(len(adjacency_matrix)), desc="Building molecules"): + for i in tqdm(range(len(adjacency_matrix)), ncols=70): indices = tf.where(adjacency_matrix[i]) - indices = tf.reshape(indices, (len(indices))) + indices = tf.reshape(indices, -1) if len(molecules) == 0: molecule = 0 molecules[molecule] = indices @@ -247,14 +220,212 @@ def check_a_in_b(a, b): for item in del_list: molecules.pop(item) - if n_molecules is None: - return molecules + return molecules + + def _perform_isomorphism_tests(self): + """ + Run isomorphism checks to determine whether or not the graphs computed are + correct. + + Currently runs the following tests: + + 1. Checks that the number of decomposed graphs is equal to the number of + expected molecules. + 2. Checks that the number of particles of each constituent species for each + molecule matches that given by the SMILES string or the user provided + reference data. + """ + # amount of molecules test + self._amount_isomorphism_test() + # groups equality test + self._molecule_group_equality_isomorphism_test() + + def _amount_isomorphism_test(self): + """ + Test that the amount of computed molecules is equal to the expected amount. + + Returns + ------- + Returns nothing, raises a value error if condition is not met. + """ + log.info("Performing molecule number isomorphism test.") + # number of molecules test + if self.n_molecules is None: + log.info("No molecule amount to check against, skipping test.") else: - if len(molecules) != n_molecules: + if len(self.molecular_groups) != self.n_molecules: raise ValueError( - "Expected number of molecules does not " - "match the amount computed, please adjust" - "parameters." + f"Expected number of molecules ({self.n_molecules}) does not " + f"match the amount computed ({len(self.molecular_groups)}), " + "please adjust cutoff parameters." ) else: - return molecules + log.info("Amount of molecules test passed.") + + def _molecule_group_equality_isomorphism_test(self): + """ + Test that the molecule groups computed match that of the reference. + + Returns + ------- + Nothing, will raise an exception if the test fails. + """ + log.info("Performing group equality isomorphism test.") + for mol_number, mol_data in self.molecular_groups.items(): + for species, indices in mol_data.items(): + if not len(indices) == self.species[species]: + error_msg = ( + f"Molecule group {mol_number}, with molecule data {mol_data}," + f"did not match with the reference data in {self.species}." + ) + raise AssertionError(error_msg) + + log.info("Group equality isomorphism test passed.") + + def _adjacency_graph_isomorphism_test(self): + """ + Determine approximate isomorphism between the computed adjacency graph and a + reference graph. + + Returns + ------- + Nothing, will raise an exception if the test fails. + + Notes + ----- + This must be implemented, however, will be quite an expensive operation. + """ + raise NotImplementedError + + def _split_decomposed_graphs(self, graph_dict: dict) -> dict: + """ + Build an indices dict to store the groups of atoms in each molecule. + + Parameters + ---------- + graph_dict : dict + Dict of decomposed graphs to be converted into correct particle species + indices. + Returns + ------- + group_dict : dict + A dictionary of atoms and indices that specify that indices of + this species is in a molecule. + """ + particle_groups = {} + for item in graph_dict: + indices_dict = {} + lengths = [self.experiment.species[item].n_particles for item in self.species] + lengths = np.cumsum(lengths) + + for i, particle_species in enumerate(self.species): + if i == 0: + indices_dict[particle_species] = np.sort( + np.array(list(filter(lambda x: x < lengths[i], graph_dict[item]))) + ).tolist() + else: + greater_array = list( + filter(lambda x: x >= lengths[i - 1], graph_dict[item]) + ) + constrained_array = list( + filter(lambda x: x < lengths[i], greater_array) + ) + indices_dict[particle_species] = np.sort( + np.array(constrained_array) - (lengths[i - 1]) + ).tolist() + + particle_groups[item] = indices_dict + + return particle_groups + + +def build_smiles_graph(smiles_string: str) -> tuple: + """ + Build molecular graphs from SMILES strings. + + Parameters + ---------- + smiles_string : str + SMILES string to use in the graph construction. + + Returns + ------- + smiles_graph : + Graph object returned by PySmiles + species : dict + A dict object containing species information about the molecule. + """ + mol = read_smiles(smiles_string, explicit_hydrogen=True) + data = mol.nodes + species = {} + for i in range(len(data)): + item = data[i].get("element") + if item in species: + species[item] += 1 + else: + species[item] = 1 + + return mol, species + + +def _apply_system_cutoff(input_tensor: tf.Tensor, cutoff: float) -> tf.Tensor: + """ + Enforce a cutoff on a tensor. + + In this context the cutoff is used to identify bonded atoms. We argue + that the closest atoms will be bonded as defined by a cutoff. + Constructing the mask of closest atoms will allow for the bonded ones to be + identified. + + Parameters + ---------- + input_tensor : tf.Tensor + Tensor of any size or shape to be masked. In our case it is a distance + tensor of the atoms in a configuration. + cutoff : float + Cutoff to use in the mask. If a distance is greater than this cutoff it + is marked as 0, if not, it is 1. + + Returns + ------- + masked_tensor : tf.Tensor + A tensor of ones and zeros where 1s corresponded to 'bonded' particles + and 0s indicated no bonding. Note, the diagonals of this tensor are + set to 0 as a particle cannot bond itself. + """ + + cutoff_mask = tf.cast( + tf.less(input_tensor, cutoff), dtype=tf.int16 + ) # Construct the mask + + return tf.linalg.set_diag(cutoff_mask, np.zeros(len(input_tensor))) + + +def get_neighbour_list(positions: tf.Tensor, cell: list = None) -> tf.Tensor: + """ + Generate the neighbour list + + Parameters + ---------- + positions: tf.Tensor + Tensor with shape (number_of_configurations, n_atoms, 3) + representing the coordinates + cell: list + If periodic boundary conditions are used, please supply the cell + dimensions, e.g. [13.97, 13.97, 13.97]. If the cell is provided + minimum image convention will be applied! + + Returns + ------- + neighbour_list : tf.Tensor + Neighbour list for a single configuration. + + """ + r_ij_matrix = tf.reshape(positions, (1, len(positions), 3)) - tf.reshape( + positions, (len(positions), 1, 3) + ) + + # Pretty sure we never need min image for mapping. + if cell: + r_ij_matrix -= tf.math.rint(r_ij_matrix / cell) * cell + return tf.norm(r_ij_matrix, ord="euclidean", axis=2) diff --git a/mdsuite/transformations/map_molecules.py b/mdsuite/transformations/map_molecules.py index d3a33f8d..1f05495c 100644 --- a/mdsuite/transformations/map_molecules.py +++ b/mdsuite/transformations/map_molecules.py @@ -24,6 +24,7 @@ Summary ------- """ +import logging from typing import List import numpy as np @@ -34,6 +35,9 @@ from mdsuite.graph_modules.molecular_graph import MolecularGraph from mdsuite.transformations.transformations import Transformations from mdsuite.utils.meta_functions import join_path +from mdsuite.utils.molecule import Molecule + +log = logging.getLogger(__name__) class MolecularMap(Transformations): @@ -45,8 +49,6 @@ class MolecularMap(Transformations): scale_function : dict A dictionary referencing the memory/time scaling function of the transformation. - experiment : object - Experiment object to work within. molecules : dict Molecule dictionary to use as reference. e.g. @@ -59,37 +61,34 @@ class MolecularMap(Transformations): """ def __init__(self): - """Constructor for the MolecularMap class. - - Parameters - ---------- - molecules : dict - Molecule dictionary to use as reference. e.g, the input for - emim-PF6 ionic liquid would be. - - .. code-block:: - - {'emim': {'smiles': 'CCN1C=C[N+](+C1)C', 'amount': 20}, - 'PF6': {'smiles': 'F[P-](F)(F)(F)(F)F', 'amount': 20}} - + """ + Constructor for the MolecularMap class. """ super().__init__() - self.molecules = None + self.molecules = None # parsed by the user. self.reference_molecules = {} self.adjacency_graphs = {} - self.dependency = mdsuite_properties.unwrapped_positions + self.mapping_property = mdsuite_properties.unwrapped_positions + self.dependency = mdsuite_properties.positions self.scale_function = {"quadratic": {"outer_scale_factor": 5}} - def _prepare_database_entry(self, species, number_of_molecules: int) -> dict: + def _prepare_database_entry(self, species: str, number_of_molecules: int) -> dict: """ Call some housekeeping methods and prepare for the transformations. + + Parameters + ---------- + species + Name of the species to be added + number_of_molecules : int + Number of molecules to be added to the database. Returns ------- data_structure : dict A data structure for the incoming data. """ # collect machine properties and determine batch size - path = join_path(species, "Unwrapped_Positions") # name of the new database_path + path = join_path(species, self.mapping_property.name) dataset_structure = { path: (number_of_molecules, self.experiment.number_of_configurations, 3) } @@ -119,286 +118,175 @@ def _run_dependency_check(self): if not self.database.check_existence(path): self.get_prop_through_transformation(sp_name, self.dependency) - def _update_type_dict(self, dictionary: dict, path_list: list, dimension: int): + def _get_mass_array(self, species: list) -> list: """ - Update a type spec dictionary. + Return an array of atom masses for the scaling. Parameters ---------- - dictionary : dict - Dictionary to append - path_list : list - List of paths for the dictionary - dimension : int - Dimension of the property + species : list + List of species to be loaded. Returns ------- - type dict : dict - Dictionary for the type spec. + mass_array : list + A list of masses. """ - for item in path_list: - dictionary[str.encode(item)] = tf.TensorSpec( - shape=(None, None, dimension), dtype=tf.float64 - ) + return [self.experiment.species[item]["mass"] for item in species] - return dictionary - - def _update_species_type_dict( - self, dictionary: dict, path_list: list, dimension: int - ): + def _get_type_spec(self, path_list: list) -> dict: """ - Update a type spec dictionary for a species input. + Compute the type spec of a list of data. Parameters ---------- - dictionary : dict - Dictionary to append path_list : list - List of paths for the dictionary - dimension : int - Dimension of the property + List of paths for which the type species must be built. + Returns ------- - type dict : dict - Dictionary for the type spec. + type_spec : dict """ + type_spec = {} for item in path_list: - species = item.split("/")[0] - n_atoms = self.experiment.species[species].n_particles - dictionary[str.encode(item)] = tf.TensorSpec( - shape=(n_atoms, None, dimension), dtype=tf.float64 + type_spec[str.encode(item)] = tf.TensorSpec( + shape=(None, None, 3), dtype=self.dtype ) + type_spec.update( + { + str.encode("data_size"): tf.TensorSpec(shape=(), dtype=tf.int32), + } + ) - return dictionary + return type_spec - def _build_reference_graphs(self): - """ - Build the reference graphs from the SMILES strings. - Returns - ------- - Nothing. - """ - for item in self.molecules: - self.reference_molecules[item] = {} - mol, species = MolecularGraph( - self.experiment, - from_smiles=True, - smiles_string=self.molecules[item]["smiles"], - ).build_smiles_graph() - self.reference_molecules[item]["species"] = list(species) - self.reference_molecules[item]["graph"] = mol - self.reference_molecules[item]["mass"] = self._get_molecular_mass(species) - - def _get_molecular_mass(self, species_dict: dict) -> float: + def _get_reduced_mass_dict(self, species: dict, molecular_mass) -> dict: """ - Get the mass of a SMILES molecule based on experiment data. + Build the reduced mass dictionary. + + This is a dictionary of reduced masses for each species in a molecule, + i.e m_species / m_molecule. These are used in the COM positions computation + later. Parameters ---------- - species_dict : dict - Dictionary of species information along with number of species - present in the system. + species : list + List of species to include in the dict. + Returns ------- - mass : float - mass of the molecule + reduced_mass_dict : dict + Dictionary of reduced masses for each species. """ - mass = 0.0 - for item in species_dict: - mass += self.experiment.species[item]["mass"][0] * species_dict[item] + reduced_mass_dict = {} + for item in species: + reduced_mass_dict[item] = ( + self.experiment.species[item]["mass"][0] / molecular_mass + ) - return mass + return reduced_mass_dict - def _build_configuration_graphs(self): + def _map_molecules(self, molecular_graph: MolecularGraph): """ - Build the adjacency graphs for the configurations + Map the molecules and save the data in the database. Returns ------- - Nothing. + Updates the database. """ - for item in self.reference_molecules: - self.adjacency_graphs[item] = {} - mol = MolecularGraph( - self.experiment, - from_configuration=True, - species=self.reference_molecules[item]["species"], - ) - self.adjacency_graphs[item]["graph"] = mol.build_configuration_graph( - cutoff=self.molecules[item]["cutoff"] - ) + molecule_name = molecular_graph.molecule_name + molecules = self.experiment.molecules + molecules[molecule_name] = {} + molecules[molecule_name]["n_particles"] = molecular_graph.n_molecules - def _get_molecule_indices(self): - """ - Collect the indices of the molecules. + molecules[molecule_name]["mass"] = molecular_graph.molecular_mass + molecules[molecule_name]["groups"] = molecular_graph.molecular_groups + scaling_factor = molecular_graph.molecular_mass - Returns - ------- - Nothing. - """ - for item in self.adjacency_graphs: - try: - amount = self.molecules[item]["amount"] - except ValueError: - amount = None - mol = MolecularGraph( - self.experiment, - from_configuration=True, - species=self.reference_molecules[item]["species"], - ) - self.adjacency_graphs[item]["molecules"] = mol.reduce_graphs( - self.adjacency_graphs[item]["graph"], n_molecules=amount - ) + mass_dictionary = self._get_reduced_mass_dict( + molecular_graph.species, scaling_factor + ) - def _load_batch(self, path_list: list, slice: np.s_, factor: list) -> tf.Tensor: - """ - Load a batch of data and stack the configurations. - Returns - ------- - data : tf.Tensor - A tensor of stacked data. - """ - data_dict = self.database.load_data( - path_list=path_list, select_slice=slice, scaling=factor, dictionary=True + # Prepare the data structures and monitors + data_structure = self._prepare_database_entry( + molecule_name, molecular_graph.n_molecules ) - data = [] - for item in path_list: - data.append(data_dict[item]) + path_list = [ + join_path(s, self.mapping_property.name) for s in molecular_graph.species + ] + self._prepare_monitors(data_path=path_list) - return tf.concat(data, axis=0) + type_spec = self._get_type_spec(path_list) + batch_generator, batch_generator_args = self.data_manager.batch_generator() - def _prepare_mass_array(self, species: list) -> list: - """ - Prepare an array of atom masses for the scaling. + data_set = tf.data.Dataset.from_generator( + batch_generator, args=batch_generator_args, output_signature=type_spec + ) + data_set = data_set.prefetch(tf.data.experimental.AUTOTUNE) - Parameters - ---------- - species : list - List of species to be loaded. - Returns - ------- - mass_array : list - A list of masses. - """ - mass_array = [] - for item in species: - mass_array.append(self.experiment.species[item]["mass"]) + log.info(f"Mapping molecule graphs onto trajectory for {molecule_name}") + for i, batch in tqdm(enumerate(data_set), ncols=70, total=self.n_batches): + batch_size = batch[b"data_size"] - return mass_array + trajectory = np.zeros( + shape=( + molecular_graph.n_molecules, + batch_size, + 3, + ) + ) - def _map_molecules(self): - """ - Map the molecules and save the data in the database. + for t, molecule in enumerate(molecular_graph.molecular_groups): + # Load species molecule-specific particles into a separate dict + # and apply their respective scaling factor. + molecule_trajectory = np.zeros((batch_size, 3)) + for item in molecular_graph.molecular_groups[molecule]: + batch_reference = str.encode(f"{item}/{self.mapping_property.name}") + particles = molecular_graph.molecular_groups[molecule][item] + particle_trajectories = ( + tf.gather(batch[batch_reference], particles) + * mass_dictionary[item] + ) + molecule_trajectory += tf.reduce_sum(particle_trajectories, axis=0) - Returns - ------- - Updates the database. - """ - for molecule_name in self.molecules: - species = self.reference_molecules[molecule_name]["species"] - mass_factor = self._prepare_mass_array(species) - data_structure = self._prepare_database_entry( - molecule_name, len(self.adjacency_graphs[molecule_name]["molecules"]) - ) - path_list = [join_path(s, "Unwrapped_Positions") for s in species] - self._prepare_monitors(data_path=path_list) - scaling_factor = self.reference_molecules[molecule_name]["mass"] - molecules = self.experiment.molecules - molecules[molecule_name] = {} - molecules[molecule_name]["n_particles"] = len( - self.adjacency_graphs[molecule_name]["molecules"] - ) - molecules[molecule_name]["indices"] = list( - range(molecules[molecule_name]["n_particles"]) + # Compute the COM trajectory + trajectory[t] = molecule_trajectory + + self._save_output( + data=trajectory, + data_structure=data_structure, + index=i * self.batch_size, ) - molecules[molecule_name]["mass"] = scaling_factor - molecules[molecule_name]["groups"] = {} - for i in tqdm(range(self.n_batches), ncols=70, desc="Mapping molecules"): - start = i * self.batch_size - stop = start + self.batch_size - data = self._load_batch( - path_list, - np.s_[:, start:stop], - factor=np.array(mass_factor) / scaling_factor, - ) - trajectory = np.zeros( - shape=( - len(self.adjacency_graphs[molecule_name]["molecules"]), - self.batch_size, - 3, - ) - ) - for t, molecule in enumerate( - self.adjacency_graphs[molecule_name]["molecules"] - ): - indices = list( - self.adjacency_graphs[molecule_name]["molecules"][ - molecule - ].numpy() - ) - molecules[molecule_name]["groups"][t] = self._build_indices_dict( - indices, species - ) - trajectory[t, :, :] = np.sum(np.array(data)[indices], axis=0) - self._save_output( - data=trajectory, - data_structure=data_structure, - index=start, - ) self.experiment.molecules = molecules - self.experiment.species.update(molecules) - def _build_indices_dict(self, indices: List[int], species: List[str]) -> dict: + def run_transformation(self, molecules: List[Molecule]): """ - Build an indices dict to store the groups of atoms in each molecule. + Perform the transformation. Parameters ---------- - indices : list[int] - Indices of atoms belonging in the molecule - species : list[str] - Elements in the molecules, in the order that they are loaded. - Returns - ------- - group_dict : dict - A dictionary of atoms and indices that specify that indices of - this species is in a molecule. - """ - indices_dict = {} - lengths = [] - for i, item in enumerate(species): - length = self.experiment.species[item].n_particles - if i == 0: - lengths.append(length) - else: - lengths.append(length + lengths[i - 1]) - - for i, item in enumerate(species): - if i == 0: - indices_dict[item] = np.sort( - list(filter(lambda x: x < lengths[i], indices)) - ).tolist() - else: - greater_array = list(filter(lambda x: x >= lengths[i - 1], indices)) - constrained_array = list(filter(lambda x: x < lengths[i], greater_array)) - indices_dict[item] = np.sort( - np.array(constrained_array) - (lengths[i - 1] - 1) - ).tolist() + molecules : List[Molecule] + A list of MDSuite Molecule objects. For each, a molecule will be + mapped. - return indices_dict - - def run_transformation(self, molecules: dict): - """ - Perform the transformation. Returns ------- Update the experiment database. """ - self.molecules = molecules self._run_dependency_check() - self._build_reference_graphs() - self._build_configuration_graphs() - self._get_molecule_indices() - self._map_molecules() - self.experiment.run.CoordinateWrapper(species=[key for key in self.molecules]) + + # Populate the molecules dict + for item in molecules: + molecular_graph = MolecularGraph( + experiment=self.experiment, + molecule_input_data=item, + ) + if item.mol_pbc: + self.mapping_property = mdsuite_properties.positions + + self._map_molecules(molecular_graph) + + if item.mol_pbc: + self.experiment.run.CoordinateUnwrapper(species=[item.name]) + else: + self.experiment.run.CoordinateWrapper(species=[item.name]) diff --git a/mdsuite/transformations/transformations.py b/mdsuite/transformations/transformations.py index a15aeac5..5ff4cf27 100644 --- a/mdsuite/transformations/transformations.py +++ b/mdsuite/transformations/transformations.py @@ -259,6 +259,7 @@ def _prepare_monitors(self, data_path: Union[list, np.array]): ) = self.memory_manager.get_batch_size() self.data_manager = DataManager( data_path=data_path, + data_range=1, database=self.database, batch_size=self.batch_size, n_batches=self.n_batches, @@ -285,7 +286,10 @@ def _prepare_database_entry(self, species: str, system_tensor=False): output_length = 1 path = join_path(self.output_property.name, self.output_property.name) else: - output_length = self.experiment.species[species]["n_particles"] + try: + output_length = self.experiment.species[species]["n_particles"] + except KeyError: + output_length = self.experiment.molecules[species]["n_particles"] path = join_path(species, self.output_property.name) n_dims = self.output_property.n_dims @@ -327,7 +331,10 @@ def find_property_per_config(self, sp_name, prop) -> typing.Union[None, str]: def find_property_single_val(self, sp_name, prop): # TODO: properties in species_dict are all lowercase, # whereas the properties in the database are upper case - species_dict = self.experiment.species[sp_name] + try: + species_dict = self.experiment.species[sp_name] + except KeyError: + species_dict = self.experiment.molecules[sp_name] per_sp_value = species_dict.get(prop.name.lower()) if per_sp_value is not None: return per_sp_value @@ -487,6 +494,7 @@ def run_transformation(self, species: typing.Iterable[str] = None): f"Applying transformation '{self.output_property.name}' to" f" '{species_name}'" ), + total=self.n_batches, ): # remove species information from batch: # the transformation only has to know about the property @@ -586,6 +594,7 @@ def run_transformation(self, species: typing.Iterable[str] = None) -> None: enumerate(data_set), ncols=70, desc=f"Applying transformation '{self.output_property.name}'", + total=self.n_batches, ): batch_dict.pop(str.encode("data_size")) batch_dict_hierachical = {sp_name: {} for sp_name in species} diff --git a/mdsuite/utils/__init__.py b/mdsuite/utils/__init__.py index 5285ac5c..b2e06bb8 100644 --- a/mdsuite/utils/__init__.py +++ b/mdsuite/utils/__init__.py @@ -25,7 +25,7 @@ ------- """ -from .config import config -from .units import Units +from mdsuite.utils.config import config +from mdsuite.utils.units import Units __all__ = ["config", "Units"] diff --git a/mdsuite/utils/meta_functions.py b/mdsuite/utils/meta_functions.py index be49c1b7..96f17a48 100644 --- a/mdsuite/utils/meta_functions.py +++ b/mdsuite/utils/meta_functions.py @@ -444,7 +444,7 @@ def golden_section_search( ) -def round_down(a: int, b: int) -> int: +def get_nearest_divisor(a: int, b: int) -> int: """ Function to get the nearest lower divisor. @@ -549,3 +549,24 @@ def sort_array_by_column(array: np.ndarray, column_idx: int): # even though the id column could have number type. to_sort_by_column = np.asarray(array[:, column_idx], dtype=float) return array[to_sort_by_column.argsort()] + + +def check_a_in_b(a, b): + """ + Check if any value of a is in b + + Parameters + ---------- + a: tf.Tensor + b: tf.Tensor + + Returns + ------- + bool + + """ + x = tf.unstack(a) + for x1 in x: + if tf.reduce_any(b == x1): + return True + return False diff --git a/mdsuite/utils/molecule.py b/mdsuite/utils/molecule.py new file mode 100644 index 00000000..f20c30cb --- /dev/null +++ b/mdsuite/utils/molecule.py @@ -0,0 +1,67 @@ +""" +MDSuite: A Zincwarecode package. + +License +------- +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v2.0 which accompanies this distribution, and is +available at https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zincwarecode Project. + +Contact Information +------------------- +email: zincwarecode@gmail.com +github: https://github.com/zincware +web: https://zincwarecode.com/ + +Citation +-------- +If you use this module please cite us with: + +Summary +------- +Module for the MDSuite molecule dataclass +""" +from dataclasses import dataclass + + +@dataclass +class Molecule: + """ + Data class to define a molecule. + + Attributes + ---------- + name : str + Name of the molecule. This name will be stored in the database. + smiles : str (optional) + SMILES string to use in the definition of the molecule internally. + e.g. CCN1C=C[N+](+C1)C + species_dict : dict (optional) + A species dict for a custom molecule in the case where a SMILES string + cannot be written. + e.g. {'C': 6, 'N': 2, 'H': 12} + amount : int + Number of molecules of this species in the trajectory. + reference_configuration_idx : int (default=0) + A specific configuration to use in the construction of the molecules. + cutoff : float + A cutoff value to use when identifying bonded pairs. Should be the largest + bond distance in the system, perhaps with some buffer depending on the + flexibility of bonds in the molecule and their distribution in the reference + configuration. + mol_pbc : bool + If true, the simulation that was run was using molecule-based PBC, i.e. + molecules were not allowed to break in the simulation. + """ + + name: str + amount: int + cutoff: float + smiles: str = None + species_dict: dict = None + reference_configuration_idx: int = 0 + mol_pbc: bool = False diff --git a/mdsuite/utils/neighbour_list.py b/mdsuite/utils/neighbour_list.py index 4c65e064..4060efc8 100644 --- a/mdsuite/utils/neighbour_list.py +++ b/mdsuite/utils/neighbour_list.py @@ -146,9 +146,12 @@ def get_triplets( memory issues. """ + if n_batches >= n_atoms: + n_batches = n_atoms - 1 r_ij = tf.norm(full_r_ij, axis=-1) r_ij = tf.cast(r_ij, dtype=tf.float16) # Using float16 for maximal memory safety. r_ij = tf.where(r_ij == 0, tf.ones_like(r_ij) * r_cut, r_ij) + batches = np.array_split(np.arange(1, n_atoms), n_batches) triples = [] # batches would be [(1, 100), (101, 200), (201, 300), ...] diff --git a/mdsuite/visualizer/znvis_visualizer.py b/mdsuite/visualizer/znvis_visualizer.py index dacba051..e882e572 100644 --- a/mdsuite/visualizer/znvis_visualizer.py +++ b/mdsuite/visualizer/znvis_visualizer.py @@ -33,6 +33,7 @@ from PIL.ImageColor import getcolor import mdsuite.data +from mdsuite.database.mdsuite_properties import mdsuite_properties from mdsuite.database.simulation_database import Database from mdsuite.utils.meta_functions import join_path @@ -69,9 +70,9 @@ def __init__( self.frame_rate = frame_rate self.species = species if unwrapped: - self.identifier = "Unwrapped_Positions" + self.identifier = mdsuite_properties.unwrapped_positions else: - self.identifier = "Positions" + self.identifier = mdsuite_properties.positions @staticmethod def _get_species_properties(species: str): @@ -116,12 +117,11 @@ def _prepare_species(self): particle_list = [] for item in self.species: colour, radius = self._get_species_properties(item) - trajectory = np.transpose( - self.database.load_data( - [join_path(item, self.identifier)], select_slice=np.s_[:] - )[join_path(item, self.identifier)], - axes=[1, 0, 2], + trajectory = self.database.load_data( + [join_path(item, self.identifier.name)], select_slice=np.s_[:] ) + trajectory = trajectory[join_path(item, self.identifier.name)] + trajectory = np.transpose(trajectory, axes=[1, 0, 2]) sphere = znvis.Sphere(colour=colour, radius=radius, resolution=10) particle_list.append( znvis.Particle(name=item, mesh=sphere, position=trajectory) @@ -130,7 +130,6 @@ def _prepare_species(self): return particle_list def run_visualization(self): - # has been removed """ Run the visualization. @@ -138,6 +137,6 @@ def run_visualization(self): ------- Opens the ZnVis app and runs the visualization. """ - # particle_list = self._prepare_species() - # visualizer = znvis.Visualizer(particles=particle_list, frame_rate=50) - # visualizer.run_visualization() + particle_list = self._prepare_species() + visualizer = znvis.Visualizer(particles=particle_list, frame_rate=24) + visualizer.run_visualization()