From ae6088404e6d6e3f1e11f5905c74ba5a8be76021 Mon Sep 17 00:00:00 2001 From: Ian Harrison Date: Thu, 13 Jun 2024 13:40:23 +0100 Subject: [PATCH] Move to buildtools and pyproject.toml (#163) * move to buildtools and pproject.toml * isolated build * include for flat layout, reinstate setup.py * add foreground init * add more inits * add bias init * isolated build * include for flat layout, reinstate setup.py * include for flat layout, reinstate setup.py * fix _bias naming error * try restoring a test file * restore kappa test data * restore cash data * restore bandpass test files * codestyle * setuptools_scm and remove astropy * add missing os import * Avoid `noqa F401` * Sort imports * Pack `cash` * Pack `gaussian` * Pack `poisson` * Pack `ps` * Sort imports * Drop `setup.cfg` in favor of `pyproject.toml` * Add common cosmology for testing * Pass new fixed cosmology to tests * Check specific value of likelihood rather than finite * Fix cosmopower test * Clean comments * add ccl to include * add testpaths * try removing conftest * try more verbosity * add testpaths to package data * testpaths must be array * test source in coverage run * test path to tests * test include * test python * test specify files * Re-create setup.cfg * Add pythonpath * try remove `cfg` * Revert last two commits * Fully revert commit `a41970a` * change setup method of mflike test * Add dependency tensorflow * test explicit path to `soliket` * Correct config file for `cov` --------- Co-authored-by: Giacomo Galloni --- .gitignore | 7 + docs/conf.py | 4 +- docs/halo_model.rst | 19 + notebooks/dev/clusters.ipynb | 1001 --- notebooks/dev/cov.html | 833 --- .../dev/cross_correlation_simulatedata.ipynb | 486 -- notebooks/dev/multi-like-test.ipynb | 1308 ---- notebooks/dev/multi-test.ipynb | 6436 ----------------- notebooks/dev/poisson.ipynb | 458 -- pyproject.toml | 107 + setup.cfg | 70 - setup.py | 41 +- soliket/__init__.py | 67 +- soliket/{ => bandpass}/BandPass.yaml | 0 soliket/bandpass/__init__.py | 5 + soliket/{ => bandpass}/bandpass.py | 7 +- soliket/{ => bias}/Bias.yaml | 0 soliket/{ => bias}/Linear_bias.yaml | 0 soliket/bias/__init__.py | 6 + soliket/{ => bias}/bias.py | 3 +- soliket/cash/__init__.py | 9 + soliket/{ => cash}/cash.py | 3 +- soliket/{ => cash}/cash_data.py | 0 soliket/{ => ccl}/CCL.yaml | 0 soliket/ccl/__init__.py | 5 + soliket/{ => ccl}/ccl.py | 0 soliket/clusters/__init__.py | 6 +- soliket/clusters/clusters.py | 9 +- soliket/clusters/massfunc.py | 4 +- soliket/clusters/survey.py | 9 +- soliket/clusters/sz_utils.py | 9 +- soliket/clusters/tinker.py | 3 +- soliket/{ => cosmopower}/CosmoPower.yaml | 2 +- .../{ => cosmopower}/CosmoPowerDerived.yaml | 0 soliket/cosmopower/__init__.py | 6 + soliket/{ => cosmopower}/cosmopower.py | 15 +- .../data/CP_paper}/cmb_EE_NN.pkl | Bin .../data/CP_paper}/cmb_TE_PCAplusNN.pkl | Bin .../data/CP_paper}/cmb_TT_NN.pkl | Bin soliket/cross_correlation/__init__.py | 9 +- .../cross_correlation/cross_correlation.py | 4 +- ...ky_16000_iterOn_20191109_binned_covmat.txt | 24 - ...6000_iterOn_20191109_sim_00_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_01_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_02_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_03_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_04_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_05_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_06_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_07_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_08_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_09_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_10_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_11_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_12_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_13_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_14_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_15_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_16_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_17_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_18_bandpowers.txt | 25 - ...6000_iterOn_20191109_sim_19_bandpowers.txt | 25 - soliket/{ => foreground}/Foreground.yaml | 0 soliket/foreground/__init__.py | 5 + soliket/{ => foreground}/foreground.py | 4 +- soliket/gaussian/__init__.py | 12 + soliket/{ => gaussian}/gaussian.py | 7 +- soliket/{ => gaussian}/gaussian_data.py | 3 +- soliket/halo_model/__init__.py | 7 +- soliket/halo_model/halo_model.py | 4 +- soliket/lensing/__init__.py | 7 +- soliket/lensing/lensing.py | 7 +- soliket/mflike/__init__.py | 12 +- soliket/mflike/mflike.py | 2 +- soliket/mflike/theoryforge_MFLike.py | 4 +- soliket/poisson/__init__.py | 9 + soliket/{ => poisson}/poisson.py | 1 - soliket/{ => poisson}/poisson_data.py | 4 +- soliket/ps/__init__.py | 6 + soliket/{ => ps}/ps.py | 4 +- soliket/tests/__init__.py | 3 + soliket/tests/conftest.py | 24 + soliket/tests/data/dndz_hsc.txt | 149 - soliket/tests/data/lcl_hsc.txt | 50 - .../data/unwise_g-so_kappa.sim.sacc.fits | 932 --- soliket/tests/test_bandpass.py | 69 +- soliket/tests/test_bias.py | 49 +- soliket/tests/test_cash.py | 6 +- soliket/tests/test_ccl.py | 39 +- soliket/tests/test_clusters.py | 40 +- soliket/tests/test_cosmopower.py | 18 +- soliket/tests/test_cross_correlation.py | 202 +- soliket/tests/test_foreground.py | 348 +- soliket/tests/test_gaussian.py | 2 +- soliket/tests/test_halo_model.py | 72 +- soliket/tests/test_lensing.py | 6 +- soliket/tests/test_lensing_lite.py | 5 +- soliket/tests/test_mflike.py | 63 +- soliket/tests/test_multi.py | 13 +- soliket/tests/test_poisson.py | 5 +- soliket/tests/test_ps.py | 7 +- soliket/tests/test_runs.py | 3 +- soliket/tests/test_xcorr.py | 5 +- soliket/utils.py | 3 +- soliket/xcorr/__init__.py | 6 +- soliket/xcorr/limber.py | 3 +- soliket/xcorr/xcorr.py | 6 +- tox.ini | 11 +- 108 files changed, 905 insertions(+), 12807 deletions(-) create mode 100644 docs/halo_model.rst delete mode 100644 notebooks/dev/clusters.ipynb delete mode 100644 notebooks/dev/cov.html delete mode 100644 notebooks/dev/cross_correlation_simulatedata.ipynb delete mode 100644 notebooks/dev/multi-like-test.ipynb delete mode 100644 notebooks/dev/multi-test.ipynb delete mode 100644 notebooks/dev/poisson.ipynb create mode 100644 pyproject.toml delete mode 100644 setup.cfg rename soliket/{ => bandpass}/BandPass.yaml (100%) create mode 100644 soliket/bandpass/__init__.py rename soliket/{ => bandpass}/bandpass.py (99%) rename soliket/{ => bias}/Bias.yaml (100%) rename soliket/{ => bias}/Linear_bias.yaml (100%) create mode 100644 soliket/bias/__init__.py rename soliket/{ => bias}/bias.py (99%) create mode 100644 soliket/cash/__init__.py rename soliket/{ => cash}/cash.py (99%) rename soliket/{ => cash}/cash_data.py (100%) rename soliket/{ => ccl}/CCL.yaml (100%) create mode 100644 soliket/ccl/__init__.py rename soliket/{ => ccl}/ccl.py (100%) rename soliket/{ => cosmopower}/CosmoPower.yaml (92%) rename soliket/{ => cosmopower}/CosmoPowerDerived.yaml (100%) create mode 100644 soliket/cosmopower/__init__.py rename soliket/{ => cosmopower}/cosmopower.py (99%) mode change 100755 => 100644 rename soliket/{data/CosmoPower/CP_paper/CMB => cosmopower/data/CP_paper}/cmb_EE_NN.pkl (100%) rename soliket/{data/CosmoPower/CP_paper/CMB => cosmopower/data/CP_paper}/cmb_TE_PCAplusNN.pkl (100%) rename soliket/{data/CosmoPower/CP_paper/CMB => cosmopower/data/CP_paper}/cmb_TT_NN.pkl (100%) delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_binned_covmat.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_00_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_01_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_02_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_03_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_04_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_05_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_06_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_07_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_08_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_09_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_10_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_11_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_12_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_13_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_14_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_15_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_16_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_17_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_18_bandpowers.txt delete mode 100644 soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_19_bandpowers.txt rename soliket/{ => foreground}/Foreground.yaml (100%) create mode 100644 soliket/foreground/__init__.py rename soliket/{ => foreground}/foreground.py (100%) create mode 100644 soliket/gaussian/__init__.py rename soliket/{ => gaussian}/gaussian.py (98%) rename soliket/{ => gaussian}/gaussian_data.py (99%) create mode 100644 soliket/poisson/__init__.py rename soliket/{ => poisson}/poisson.py (99%) rename soliket/{ => poisson}/poisson_data.py (94%) create mode 100644 soliket/ps/__init__.py rename soliket/{ => ps}/ps.py (93%) create mode 100644 soliket/tests/conftest.py delete mode 100644 soliket/tests/data/dndz_hsc.txt delete mode 100644 soliket/tests/data/lcl_hsc.txt delete mode 100644 soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits diff --git a/.gitignore b/.gitignore index 894a44cc..3e3f825c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ +# soliket specific +chains/ + +# macos +.DS_Store +.tmp + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/docs/conf.py b/docs/conf.py index b5db5c5d..cee05aa9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,9 @@ for module in MOCK_MODULES: sys.modules[module] = mock.Mock() -import soliket # noqa F401 +import soliket + +__all__ = ['soliket'] # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information diff --git a/docs/halo_model.rst b/docs/halo_model.rst new file mode 100644 index 00000000..8f2f0bc0 --- /dev/null +++ b/docs/halo_model.rst @@ -0,0 +1,19 @@ +HaloModel (Halo Model Non-Linear Power Spectrum) +==== + +.. automodule:: soliket.halo_model.halo_model + + +HaloModel Theory +----------- + +.. autoclass:: soliket.halo_model.HaloModel + :members: + + +pyhalomodel Halo Model +----------- + +.. autoclass:: soliket.halo_model.HaloModel_pyhm + :exclude-members: initialize + :members: diff --git a/notebooks/dev/clusters.ipynb b/notebooks/dev/clusters.ipynb deleted file mode 100644 index 5ef96a70..00000000 --- a/notebooks/dev/clusters.ipynb +++ /dev/null @@ -1,1001 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext lab_black" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import solike.clusters" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import camb" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Populating the interactive namespace from numpy and matplotlib\n", - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] *local* CAMB not found at /Users/nab/Repos/cobaya_modules/code/CAMB\n", - "[camb] Importing *global* CAMB.\n", - "[pks] Initialized external likelihood.\n", - "[camb] *ERROR* hubble_units and k_hunit must be Falsefor consistency\n" - ] - }, - { - "ename": "LoggedError", - "evalue": "hubble_units and k_hunit must be Falsefor consistency", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mLoggedError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 26\u001b[0m 'modules': modules_path}\n\u001b[1;32m 27\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcobaya\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 28\u001b[0;31m \u001b[0mmodel_fiducial\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfo_fiducial\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 29\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'loglike'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_fiducial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloglike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'As'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m3e-9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ns'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m0.96\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;31m# Declare our desired theory product\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36mget_model\u001b[0;34m(info, stop_at_error)\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0mpackaged_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_path_install\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mtiming\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mupdated_info\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_timing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m \u001b[0mstop_at_error\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minfo_stop\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstop_at_error\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mstop_at_error\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 113\u001b[0m )\n\u001b[1;32m 114\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, info_params, info_likelihood, info_prior, info_theory, packages_path, timing, allow_renames, stop_at_error, post, prior_parameterization)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_assign_params\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfo_likelihood\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minfo_theory\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_set_dependencies_and_providers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_measured_speeds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36m_set_dependencies_and_providers\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 606\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mneed\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mneeds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcomponent\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 607\u001b[0m conditional_requirements = _tidy_requirements(\n\u001b[0;32m--> 608\u001b[0;31m \u001b[0mcomponent\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcomponent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mneeds\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0mneed\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mneed\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 609\u001b[0m )\n\u001b[1;32m 610\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_needs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcomponent\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mneed\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/theories/camb/camb.py\u001b[0m in \u001b[0;36mneeds\u001b[0;34m(self, **requirements)\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;31m# different likelihoods. Store results without Hubble units.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"hubble_units\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"k_hunit\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 356\u001b[0;31m raise LoggedError(self.log, \"hubble_units and k_hunit must be False\"\n\u001b[0m\u001b[1;32m 357\u001b[0m \"for consistency\")\n\u001b[1;32m 358\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"hubble_units\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mLoggedError\u001b[0m: hubble_units and k_hunit must be Falsefor consistency" - ] - } - ], - "source": [ - "import numpy as np\n", - "%pylab inline\n", - "import matplotlib.pyplot as plt\n", - "import time\n", - "\n", - "fiducial_params = {\n", - " 'ombh2': 0.02225, 'omch2': 0.1198, 'H0': 67.3, 'tau': 0.06,\n", - " 'As': 2.2e-9, 'ns': 0.96,\n", - " 'mnu': 0.06, 'nnu': 3.046, 'num_massive_neutrinos': 1}\n", - "l_max = 1000\n", - "zarr = np.linspace(0,2,41)\n", - "modules_path = '/Users/nab/Repos/cobaya_modules/'\n", - "\n", - "def pk(_theory={'Pk_interpolator': {'z': np.linspace(0,4,41), 'k_max': 100.0, 'nonlinear': True,'hubble_units': True,'k_hunit': True, 'vars_pairs': [['delta_nonu','delta_nonu']]}}):\n", - " #print (_theory.get_Pk_interpolator())\n", - " Pk_interpolator = _theory.get_Pk_interpolator()['delta_nonu_delta_nonu'].P\n", - " k = np.logspace(-3,1,100)\n", - " return Pk_interpolator(0.0,k)\n", - "\n", - "info_fiducial = {\n", - " 'params': fiducial_params,\n", - " 'likelihood': {'pks': pk},\n", - " 'theory': {'camb':{'extra_args':{\"accurate_massive_neutrino_transfers\": True,\n", - " \"redshifts\": np.linspace(0,2,41), \"nonlinear\": False,\n", - " \"kmax\": 10., \"dark_energy_model\":\"ppf\"}}\n", - " },\n", - " 'modules': modules_path}\n", - "\n", - "from cobaya.model import get_model\n", - "model_fiducial = get_model(info_fiducial)\n", - "print ('loglike', model_fiducial.loglike({'As': 3e-9, 'ns':0.96}))\n", - "# Declare our desired theory product\n", - "# (there is no cosmological likelihood doing it for us)\n", - "model_fiducial.likelihood.theory.needs(Cl={'tt': l_max},\n", - " Pk_interpolator={'z': np.linspace(0,2,41), 'k_max': 5.0,\n", - " 'nonlinear': False,'hubble_units': True,'k_hunit': True,\n", - " 'vars_pairs': [['delta_tot','delta_tot']]},\n", - " H={'z': np.linspace(0,2,41)})#,\n", - " #extra_args={\"accurate_massive_neutrino_transfers\": True,\n", - " # \"redshifts\": np.linspace(0,4,41), \"nonlinear\": False,\n", - " # \"kmax\": 10., \"dark_energy_model\":\"ppf\"})\n", - "# Compute and extract the CMB power spectrum\n", - "# (In muK^-2, without l(l+1)/(2pi) factor)\n", - "# notice the empty dictionary below: all parameters are fixed\n", - "model_fiducial.logposterior({})\n", - "Cls = model_fiducial.likelihood.theory.get_Cl(ell_factor=False)\n", - "print(model_fiducial.likelihood.theory.requested())\n", - "Pk_interpolator = model_fiducial.likelihood.theory.get_Pk_interpolator()['delta_nonu_delta_nonu'].P#(0,k_max=5)\n", - "k = np.logspace(-4,np.log10(5),200)\n", - "pks = Pk_interpolator(zarr,k)\n", - "Ez = model_fiducial.likelihood.theory.get_H(zarr) / model_fiducial.likelihood.theory.get_param('H0')\n", - "om = (model_fiducial.likelihood.theory.get_param('omch2') + model_fiducial.likelihood.theory.get_param('ombh2'))/ ((model_fiducial.likelihood.theory.get_param('H0')/100.)**2)\n", - "print (pks.shape,Ez.shape)\n", - "import solike.clusters.massfunc as mf\n", - "hmf = mf.HMF(om,Ez,pk=pks,kh=k,zarr=zarr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *global* CAMB.\n", - "mock catalog\n" - ] - } - ], - "source": [ - "from solike import ClusterLikelihood\n", - "\n", - "import numpy as np\n", - "\n", - "fiducial_params = {\n", - " 'ombh2': 0.02225, 'omch2': 0.1198, 'H0': 67.3, 'tau': 0.06,\n", - " 'As': 2.2e-9, 'ns': 0.96,\n", - " 'mnu': 0.06, 'nnu': 3.046, 'num_massive_neutrinos': 1}\n", - "\n", - "info_fiducial = {\n", - " 'params': fiducial_params,\n", - " 'likelihood': {'solike.ClusterLikelihood' : {'stop_at_error': True}},\n", - " 'theory': {'camb':{'extra_args':{\"accurate_massive_neutrino_transfers\": True,\n", - " \"redshifts\": np.linspace(0,2,41), \"nonlinear\": False,\n", - " \"kmax\": 10., \"dark_energy_model\":\"ppf\"}}\n", - " }}\n", - "\n", - "from cobaya.model import get_model\n", - "model_fiducial = get_model(info_fiducial)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "like = model_fiducial.likelihood['solike.ClusterLikelihood']" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0025340558166296974\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.004428964235821682\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.006038130860327309\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.016317419432449885\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) frac\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.2002244997020222\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.017027770721046262\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) frac\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0659202329131929\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.017027770721046262\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) c\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/tmorton/repositories/likelihoods/solike/clusters/clusters.py(142)_get_n_expected()\n", - "-> for Yt, frac in zip(self.survey.Ythresh, self.survey.frac_of_survey):\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) Ntot\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.01729852594031611\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) frac\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.02836915212877623\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) q\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[solike.clusterlikelihood] *ERROR* Error at evaluation: BdbQuit()\n" - ] - }, - { - "ename": "LoggedError", - "evalue": "Error at evaluation: BdbQuit()", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mBdbQuit\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/repositories/cobaya/cobaya/theory.py\u001b[0m in \u001b[0;36mcheck_cache_and_compute\u001b[0;34m(self, dependency_params, want_derived, cached, **params_values_dict)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalculate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwant_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams_values_dict\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/likelihood.py\u001b[0m in \u001b[0;36mcalculate\u001b[0;34m(self, state, want_derived, **params_values_dict)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"logp\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minf\u001b[0m \u001b[0;31m# in case of exception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"logp\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mderived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams_values_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 113\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mwant_derived\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/poisson.py\u001b[0m in \u001b[0;36mlogp\u001b[0;34m(self, **params_values)\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mrate_fn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_rate_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mparams_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m \u001b[0mn_expected\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_n_expected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mparams_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 33\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloglike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrate_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_expected\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/clusters.py\u001b[0m in \u001b[0;36m_get_n_expected\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 142\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mYt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfrac\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msurvey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mYthresh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msurvey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrac_of_survey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 143\u001b[0m \u001b[0mPfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mszutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPfuncY\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mYt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHMF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz_arr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_vals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mEz_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/clusters.py\u001b[0m in \u001b[0;36m_get_n_expected\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 142\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mYt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfrac\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msurvey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mYthresh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msurvey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrac_of_survey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 143\u001b[0m \u001b[0mPfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mszutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPfuncY\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mYt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHMF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz_arr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_vals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mEz_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/bdb.py\u001b[0m in \u001b[0;36mtrace_dispatch\u001b[0;34m(self, frame, event, arg)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'line'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 88\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispatch_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 89\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'call'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/bdb.py\u001b[0m in \u001b[0;36mdispatch_line\u001b[0;34m(self, frame)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquitting\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mBdbQuit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace_dispatch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mBdbQuit\u001b[0m: ", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mLoggedError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel_fiducial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloglikes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36mloglikes\u001b[0;34m(self, params_values, return_derived, make_finite, cached, _no_check)\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 328\u001b[0m result = self.logps(\n\u001b[0;32m--> 329\u001b[0;31m \u001b[0minput_params\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcached\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmake_finite\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmake_finite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 330\u001b[0m )\n\u001b[1;32m 331\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreturn_derived\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36mlogps\u001b[0;34m(self, input_params, return_derived, cached, make_finite)\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0minput_params\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcomponent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_params\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 266\u001b[0m compute_success = component.check_cache_and_compute(\n\u001b[0;32m--> 267\u001b[0;31m \u001b[0mwant_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdependency_params\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdepend_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcached\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 268\u001b[0m )\n\u001b[1;32m 269\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcompute_success\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/theory.py\u001b[0m in \u001b[0;36mcheck_cache_and_compute\u001b[0;34m(self, dependency_params, want_derived, cached, **params_values_dict)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalculate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwant_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams_values_dict\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0malways_stop_exceptions\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mLoggedError\u001b[0m: Error at evaluation: BdbQuit()" - ] - } - ], - "source": [ - "model_fiducial.loglikes({})[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "136" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(like.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
tsz_signalztsz_signal_err
01.1550460.7560640.140697
10.8824820.9348020.141784
21.3735740.4992740.217448
30.8968170.3592530.141908
41.5016320.4420960.147403
............
1311.0276110.5130010.165673
1323.1349140.3479470.152665
1331.4037370.2138220.204777
1344.3001950.5429560.155887
1350.9987090.4058410.172687
\n", - "

136 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " tsz_signal z tsz_signal_err\n", - "0 1.155046 0.756064 0.140697\n", - "1 0.882482 0.934802 0.141784\n", - "2 1.373574 0.499274 0.217448\n", - "3 0.896817 0.359253 0.141908\n", - "4 1.501632 0.442096 0.147403\n", - ".. ... ... ...\n", - "131 1.027611 0.513001 0.165673\n", - "132 3.134914 0.347947 0.152665\n", - "133 1.403737 0.213822 0.204777\n", - "134 4.300195 0.542956 0.155887\n", - "135 0.998709 0.405841 0.172687\n", - "\n", - "[136 rows x 3 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like.data.catalog" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "count 136.000000\n", - "mean 0.000150\n", - "std 0.000076\n", - "min 0.000070\n", - "25% 0.000102\n", - "50% 0.000130\n", - "75% 0.000169\n", - "max 0.000524\n", - "Name: tsz_signal, dtype: float64" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(like.data.catalog.tsz_signal * 1e-4).describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([6.92306244e-05, 7.57297464e-05, 8.28389828e-05, 9.06156086e-05,\n", - " 9.91222761e-05, 1.08427519e-04, 1.18606305e-04, 1.29740638e-04,\n", - " 1.41920223e-04, 1.55243183e-04, 1.69816855e-04, 1.85758651e-04,\n", - " 2.03197005e-04, 2.22272409e-04, 2.43138544e-04, 2.65963516e-04,\n", - " 2.90931214e-04, 3.18242791e-04, 3.48118280e-04, 3.80798372e-04])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(like.survey.Ythresh * 5.6)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.01781438056806854" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like._get_n_expected()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(110, 1, 350)\n", - "[solike.clusterlikelihood] *ERROR* Error at evaluation: KeyError('Q')\n" - ] - }, - { - "ename": "LoggedError", - "evalue": "Error at evaluation: KeyError('Q')", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/repositories/cobaya/cobaya/theory.py\u001b[0m in \u001b[0;36mcheck_cache_and_compute\u001b[0;34m(self, dependency_params, want_derived, cached, **params_values_dict)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalculate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwant_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams_values_dict\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/likelihood.py\u001b[0m in \u001b[0;36mcalculate\u001b[0;34m(self, state, want_derived, **params_values_dict)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"logp\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minf\u001b[0m \u001b[0;31m# in case of exception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"logp\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mderived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams_values_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 113\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mwant_derived\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/poisson.py\u001b[0m in \u001b[0;36mlogp\u001b[0;34m(self, **params_values)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0mn_expected\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_n_expected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mparams_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 33\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloglike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrate_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_expected\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/repositories/likelihoods/solike/poisson_data.py\u001b[0m in \u001b[0;36mloglike\u001b[0;34m(self, rate_fn, n_expected)\u001b[0m\n\u001b[1;32m 34\u001b[0m \"\"\"\n\u001b[0;32m---> 35\u001b[0;31m \u001b[0mrate_densities\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrate_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcatalog\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mc\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/clusters.py\u001b[0m in \u001b[0;36mProb_per_cluster\u001b[0;34m(z, tsz_signal, tsz_signal_err)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mPfunc_ind\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mszutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPfunc_per\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHMF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc_yerr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m \u001b[0mdn_dzdm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mHMF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdn_dzdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc_z\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog10\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHMF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/sz_utils.py\u001b[0m in \u001b[0;36mPfunc_per\u001b[0;34m(self, Marr, zarr, Y_c, Y_err, param_vals)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mP_Y_sig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mY_prob\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mYc_arr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mLgYa2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mYerr_arr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 106\u001b[0;31m \u001b[0mP_Y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan_to_num\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mP_Yo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mLgYa2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mzarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 107\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/sz_utils.py\u001b[0m in \u001b[0;36mP_Yo\u001b[0;34m(self, LgY, M, z, param_vals)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSurvey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtckQFit\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Q\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0msigma_int\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparam_vals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"scat\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'Q'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mLoggedError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel_fiducial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloglikes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36mloglikes\u001b[0;34m(self, params_values, return_derived, make_finite, cached, _no_check)\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 328\u001b[0m result = self.logps(\n\u001b[0;32m--> 329\u001b[0;31m \u001b[0minput_params\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcached\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmake_finite\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmake_finite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 330\u001b[0m )\n\u001b[1;32m 331\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreturn_derived\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/model.py\u001b[0m in \u001b[0;36mlogps\u001b[0;34m(self, input_params, return_derived, cached, make_finite)\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0minput_params\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcomponent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_params\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 266\u001b[0m compute_success = component.check_cache_and_compute(\n\u001b[0;32m--> 267\u001b[0;31m \u001b[0mwant_derived\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_derived\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdependency_params\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdepend_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcached\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 268\u001b[0m )\n\u001b[1;32m 269\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcompute_success\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/theory.py\u001b[0m in \u001b[0;36mcheck_cache_and_compute\u001b[0;34m(self, dependency_params, want_derived, cached, **params_values_dict)\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstop_at_error\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 229\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mLoggedError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Error at evaluation: %r\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 230\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m self.log.debug(\n", - "\u001b[0;31mLoggedError\u001b[0m: Error at evaluation: KeyError('Q')" - ] - } - ], - "source": [ - "model_fiducial.loglikes({})[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "like = model_fiducial.likelihood['solike.ClusterLikelihood']" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'camb' object has no attribute '_current_state'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlike\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_HMF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/repositories/likelihoods/solike/clusters/clusters.py\u001b[0m in \u001b[0;36m_get_HMF\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_HMF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mPk_interpolator\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtheory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_Pk_interpolator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"delta_nonu\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"delta_nonu\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnonlinear\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mP\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 55\u001b[0m \u001b[0mpks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPk_interpolator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mEz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtheory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_H\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzarr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtheory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_param\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"H0\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/repositories/cobaya/cobaya/theories/_cosmo/boltzmannbase.py\u001b[0m in \u001b[0;36mget_Pk_interpolator\u001b[0;34m(self, var_pair, nonlinear, extrap_kmax)\u001b[0m\n\u001b[1;32m 250\u001b[0m \u001b[0mnonlinear\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbool\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnonlinear\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 251\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Pk_interpolator\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnonlinear\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextrap_kmax\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msorted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvar_pair\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 252\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_current_state\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 253\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_current_state\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_Pk_grid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvar_pair\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvar_pair\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnonlinear\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnonlinear\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'camb' object has no attribute '_current_state'" - ] - } - ], - "source": [ - "like._get_HMF()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mock catalog\n" - ] - } - ], - "source": [ - "surveydata = like._get_catalog()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "surveydata." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "\n", - "def _get_catalog():\n", - " catalog = Survey.SurveyData(self.data_path, self.data_name)\n", - " return catalog" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def Prob_per_cluster(self, HMF, cluster_props, param_vals):\n", - " # c_z, c_zerr, c_y, c_yerr = cluster_props\n", - " tempz = cluster_props[0, :]\n", - " zind = np.argsort(tempz)\n", - " tempz = 0.\n", - " c_z = cluster_props[0, zind]\n", - " c_zerr = cluster_props[1, zind]\n", - " c_y = cluster_props[2, zind]\n", - " c_yerr = cluster_props[3, zind]\n", - "\n", - " Marr = np.outer(int_HMF.M.copy(), np.ones([len(c_z)]))\n", - " zarr = np.outer(np.ones([len(int_HMF.M.copy())]), c_z)\n", - "\n", - " if (c_zerr.any() > 0):\n", - " # FIX THIS\n", - " z_arr = np.arange(-3.*c_zerr, (3.+0.1)*c_zerr, c_zerr) + c_z\n", - " Pfunc_ind = self.Pfunc_per_zarr(int_HMF.M.copy(), z_arr, c_y, c_yerr, int_HMF, param_vals)\n", - " M200 = int_HMF.cc.Mass_con_del_2_del_mean200(int_HMF.M.copy(), 500, c_z) # FIX THIS?\n", - " dn_dzdm = dn_dzdm_int(z_arr, np.log10(int_HMF.M.copy()))\n", - " N_z_ind = np.trapz(dn_dzdm*Pfunc_ind, dx=np.diff(M200, axis=0), axis=0)\n", - " N_per = np.trapz(N_z_ind*gaussian(z_arr, c_z, c_zerr), dx=np.diff(z_arr))\n", - " ans = N_per\n", - " else:\n", - " Pfunc_ind = self.Pfunc_per(Marr, zarr, c_y, c_yerr, param_vals)\n", - " dn_dzdm = HMF.dn_dzdm(c_z, np.log10(int_HMF.M.copy()))\n", - " M200 = int_HMF.M200_int(c_z, int_HMF.M.copy())\n", - " N_z_ind = np.trapz(dn_dzdm*Pfunc_ind, dx=np.diff(M200, axis=0), axis=0)\n", - " ans = N_z_ind\n", - " return ans\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def Prob_per_cluster(HMF, z, y, param_vals):\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'/Users/tmorton/repositories/likelihoods/solike/clusters/data/ACTPol_Cond_scatv5.fits'" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from pkg_resources import resource_filename\n", - "\n", - "resource_filename('solike.clusters', 'data/ACTPol_Cond_scatv5.fits')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/dev/cov.html b/notebooks/dev/cov.html deleted file mode 100644 index bc9ac222..00000000 --- a/notebooks/dev/cov.html +++ /dev/null @@ -1,833 +0,0 @@ - - - - - - - - - - - - - - -
- - - - - - -
- - -
\ No newline at end of file diff --git a/notebooks/dev/cross_correlation_simulatedata.ipynb b/notebooks/dev/cross_correlation_simulatedata.ipynb deleted file mode 100644 index 08ae3720..00000000 --- a/notebooks/dev/cross_correlation_simulatedata.ipynb +++ /dev/null @@ -1,486 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "296ce09a", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from astropy import units\n", - "import pyccl as ccl\n", - "import sacc\n", - "\n", - "import sys\n", - "sys.path.append('../../')\n", - "\n", - "from matplotlib import pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "id": "88cc94b4", - "metadata": {}, - "source": [ - "# Set up cosmology" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5db24a17", - "metadata": {}, - "outputs": [], - "source": [ - "cosmo = ccl.Cosmology(Omega_c=0.25,\n", - " Omega_b=0.05,\n", - " h=0.7,\n", - " n_s=0.965,\n", - " A_s=2.11e-9,\n", - " Omega_k=0.0,\n", - " Neff=3.046,\n", - " matter_power_spectrum='linear')\n", - "b1_unwise = 1.0\n", - "s1_unwise = 0.4" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c5d1b487", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyccl.Cosmology(Omega_c=0.25, Omega_b=0.05, h=0.7, n_s=0.965, sigma8=None, A_s=2.11e-09, Omega_k=0.0, Omega_g=None, Neff=3.046, w0=-1.0, wa=0.0, T_CMB=None, bcm_log10Mc=14.079181246047625, bcm_etab=0.5, bcm_ks=55.0, mu_0=0.0, sigma_0=0.0, c1_mg=1.0, c2_mg=1.0, lambda_mg=0.0, m_nu=0.0, m_nu_type=None, z_mg=None, df_mg=None, transfer_function='boltzmann_camb', matter_power_spectrum='linear', baryons_power_spectrum='nobaryons', mass_function='tinker10', halo_concentration='duffy2008', emulator_neutrinos='strict')" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cosmo" - ] - }, - { - "cell_type": "markdown", - "id": "418ed394", - "metadata": {}, - "source": [ - "# Set up binning" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "39d96e49", - "metadata": {}, - "outputs": [], - "source": [ - "ell_max = 600\n", - "n_ell = 20\n", - "delta_ell = ell_max // n_ell\n", - "\n", - "ells = (np.arange(n_ell) + 0.5) * delta_ell\n", - "\n", - "ells_win = np.arange(ell_max + 1)\n", - "wins = np.zeros([n_ell, len(ells_win)])\n", - "\n", - "for i in range(n_ell):\n", - " wins[i, i * delta_ell : (i + 1) * delta_ell] = 1.0\n", - " \n", - "Well = sacc.BandpowerWindow(ells_win, wins.T)" - ] - }, - { - "cell_type": "markdown", - "id": "88c43116", - "metadata": {}, - "source": [ - "# Set up unWISE tracer" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c8e82dfc", - "metadata": {}, - "outputs": [], - "source": [ - "dndz_unwise = np.loadtxt('../../soliket/xcorr/data/dndz.txt')\n", - "ngal_unwise = 1.\n", - "fsky_unwise = 0.4\n", - "\n", - "tracer_unwise_g = ccl.NumberCountsTracer(cosmo,\n", - " has_rsd=False,\n", - " dndz=dndz_unwise.T,\n", - " bias=(dndz_unwise[:,0], b1_unwise * np.ones(len(dndz_unwise[:,0]))), \n", - " mag_bias=(dndz_unwise[:,0], s1_unwise * np.ones(len(dndz_unwise[:,0])))\n", - " )\n", - "\n", - "Nell_unwise_g = np.ones(n_ell) / (ngal_unwise * (60 * 180 / np.pi)**2)" - ] - }, - { - "cell_type": "markdown", - "id": "8595cbf0", - "metadata": {}, - "source": [ - "# Set up SO CMB lensing tracer" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b41fbc8d", - "metadata": {}, - "outputs": [], - "source": [ - "zstar = 1086\n", - "fsky_solensing = 0.4\n", - "\n", - "tracer_so_k = ccl.CMBLensingTracer(cosmo, z_source=zstar)\n", - "\n", - "# Approximation to SO LAT beam\n", - "fwhm_so_k = 1. * units.arcmin\n", - "sigma_so_k = (fwhm_so_k.to(units.rad).value / 2.355)\n", - "ell_beam = np.arange(3000)\n", - "beam_so_k = np.exp(-ell_beam * (ell_beam + 1) * sigma_so_k**2)" - ] - }, - { - "cell_type": "markdown", - "id": "2da86e56", - "metadata": {}, - "source": [ - "# Calculate power spectra" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "75519761", - "metadata": {}, - "outputs": [], - "source": [ - "n_maps = 2\n", - "cls = np.zeros([n_maps, n_maps, n_ell])\n", - "\n", - "cls[0, 0, :] = ccl.angular_cl(cosmo, tracer_unwise_g, tracer_unwise_g, ells) + Nell_unwise_g\n", - "\n", - "cls[0, 1, :] = ccl.angular_cl(cosmo, tracer_unwise_g, tracer_so_k, ells)\n", - "cls[1, 0, :] = cls[0, 1, :]\n", - "\n", - "cls[1, 1, :] = ccl.angular_cl(cosmo, tracer_so_k, tracer_so_k, ells)" - ] - }, - { - "cell_type": "markdown", - "id": "4113c57a", - "metadata": {}, - "source": [ - "# Set up covariance" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "620c0df5", - "metadata": {}, - "outputs": [], - "source": [ - "n_cross = (n_maps * (n_maps + 1)) // 2\n", - "covar = np.zeros([n_cross, n_ell, n_cross, n_ell])\n", - "\n", - "id_i = 0\n", - "for i1 in range(n_maps):\n", - " for i2 in range(i1, n_maps):\n", - " id_j = 0\n", - " for j1 in range(n_maps):\n", - " for j2 in range(j1, n_maps):\n", - " cl_i1j1 = cls[i1, j1, :]\n", - " cl_i1j2 = cls[i1, j2, :]\n", - " cl_i2j1 = cls[i2, j1, :]\n", - " cl_i2j2 = cls[i2, j2, :]\n", - " # Knox formula\n", - " cov = (cl_i1j1 * cl_i2j2 + cl_i1j2 * cl_i2j1) / (delta_ell * fsky_solensing * (2 * ells + 1))\n", - " covar[id_i, :, id_j, :] = np.diag(cov)\n", - " id_j += 1\n", - " id_i += 1\n", - " \n", - "covar = covar.reshape([n_cross * n_ell, n_cross * n_ell])" - ] - }, - { - "cell_type": "markdown", - "id": "9024625e", - "metadata": {}, - "source": [ - "# Construct sacc file" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a00dfdbc", - "metadata": {}, - "outputs": [], - "source": [ - "s = sacc.Sacc()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b91478f0", - "metadata": {}, - "outputs": [], - "source": [ - "s.add_tracer('NZ', 'gc_unwise',\n", - " quantity='galaxy_density',\n", - " spin=0,\n", - " z=dndz_unwise[:,0],\n", - " nz=dndz_unwise[:,1],\n", - " metadata={'ngal': ngal_unwise})\n", - "\n", - "s.add_tracer('Map', 'ck_so',\n", - " quantity='cmb_convergence',\n", - " spin=0,\n", - " ell=ell_beam,\n", - " beam=beam_so_k)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "58a67a06", - "metadata": {}, - "outputs": [], - "source": [ - "s.add_ell_cl('cl_00',\n", - " 'gc_unwise',\n", - " 'gc_unwise',\n", - " ells, cls[0, 0, :],\n", - " window=Well)\n", - "\n", - "s.add_ell_cl('cl_00',\n", - " 'gc_unwise',\n", - " 'ck_so',\n", - " ells, cls[0, 1, :],\n", - " window=Well)\n", - "\n", - "s.add_ell_cl('cl_00',\n", - " 'ck_so',\n", - " 'ck_so',\n", - " ells, cls[1, 1, :],\n", - " window=Well)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f76675aa", - "metadata": {}, - "outputs": [], - "source": [ - "s.add_covariance(covar)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "71c72b97", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: VerifyWarning: Keyword name 'META_ngal' is greater than 8 characters or contains characters not allowed by the FITS standard; a HIERARCH card will be created. [astropy.io.fits.card]\n" - ] - } - ], - "source": [ - "s.save_fits('../../soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits', overwrite=True)" - ] - }, - { - "cell_type": "markdown", - "id": "d98c9b8e", - "metadata": {}, - "source": [ - "# Read sacc file and compare to 'theory'" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "6b6831ff", - "metadata": {}, - "outputs": [], - "source": [ - "s_load = sacc.Sacc.load_fits('../../soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits')" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "f29b20ef", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ck_so cmb_convergence \n", - "gc_unwise galaxy_density \n" - ] - } - ], - "source": [ - "for n, t in s_load.tracers.items():\n", - " print(t.name, t.quantity, type(t))" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "d1150f7a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data types: ['cl_00']\n", - "Tracer combinations: [('ck_so', 'ck_so'), ('gc_unwise', 'ck_so'), ('gc_unwise', 'gc_unwise')]\n", - "Nell: 60\n" - ] - } - ], - "source": [ - "\n", - "# Type of power spectra\n", - "data_types = np.unique([d.data_type for d in s_load.data])\n", - "print(\"Data types: \", data_types)\n", - "\n", - "# Tracer combinations\n", - "print(\"Tracer combinations: \", s_load.get_tracer_combinations())\n", - "\n", - "# Data size\n", - "print(\"Nell: \", s_load.mean.size)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "165c4abd", - "metadata": {}, - "outputs": [], - "source": [ - "ell_theory = np.linspace(1,ell_max,ell_max)\n", - "\n", - "z_unwise = s_load.tracers['gc_unwise'].z\n", - "nz_unwise = s_load.tracers['gc_unwise'].nz\n", - "\n", - "tracer_gc_unwise = ccl.NumberCountsTracer(cosmo, has_rsd=False,\n", - " dndz=[z_unwise, nz_unwise],\n", - " bias=(z_unwise, b1_unwise * np.ones(len(z_unwise))), \n", - " mag_bias=(z_unwise, s1_unwise * np.ones(len(z_unwise)))\n", - " )\n", - "\n", - "tracer_ck_so = ccl.CMBLensingTracer(cosmo, z_source=zstar)\n", - "\n", - "cl_gg_theory = ccl.angular_cl(cosmo, tracer_gc_unwise, tracer_gc_unwise, ell_theory)\n", - "cl_gk_theory = ccl.angular_cl(cosmo, tracer_gc_unwise, tracer_ck_so, ell_theory)\n", - "cl_kk_theory = ccl.angular_cl(cosmo, tracer_ck_so, tracer_ck_so, ell_theory)\n", - "\n", - "Nell_unwise_g = np.ones_like(ell_theory) / (s_load.tracers['gc_unwise'].metadata['ngal'] * (60 * 180 / np.pi)**2)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "7a14780c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(1, figsize=(3.*4.5, 3.75))\n", - "\n", - "plt.suptitle(r'SO $\\times$ unWISE')\n", - "\n", - "plt.subplot(131)\n", - "plt.title(r'$gg$')\n", - "ell, cl, cov = s_load.get_ell_cl('cl_00', 'gc_unwise', 'gc_unwise', return_cov=True)\n", - "cl_err = np.sqrt(np.diag(cov))\n", - "plt.plot(ell_theory, 1.e5*(cl_gg_theory + Nell_unwise_g), '--', c='C0')\n", - "plt.plot(ell, 1.e5*cl, 'o', ms=3, c='C0')\n", - "plt.errorbar(ell, 1.e5*cl, yerr=1.e5*cl_err, fmt='none', c='C0')\n", - "plt.xlim([1,ell_max])\n", - "plt.xlabel(r'$\\ell$')\n", - "plt.ylabel(r'$C_\\ell \\times 10^5$')\n", - "\n", - "plt.subplot(132)\n", - "plt.title(r'$g\\kappa$')\n", - "ell, cl, cov = s_load.get_ell_cl('cl_00', 'gc_unwise', 'ck_so', return_cov=True)\n", - "cl_err = np.sqrt(np.diag(cov))\n", - "plt.plot(ell_theory, 1.e5*ell_theory*cl_gk_theory , '--', c='C1')\n", - "plt.plot(ell, 1.e5*ell*cl, 'o', ms=3, c='C1')\n", - "plt.errorbar(ell, 1.e5*ell*cl, yerr=1.e5*ell*cl_err, fmt='none', c='C1')\n", - "plt.xlim([1,ell_max])\n", - "plt.xlabel(r'$\\ell$')\n", - "plt.ylabel(r'$\\ell C_\\ell \\times 10^5$')\n", - "\n", - "plt.subplot(133)\n", - "plt.title(r'$\\kappa\\kappa$')\n", - "ell, cl, cov = s_load.get_ell_cl('cl_00', 'ck_so', 'ck_so', return_cov=True)\n", - "cl_err = np.sqrt(np.diag(cov))\n", - "plt.plot(ell_theory, 1.e5*ell_theory*cl_kk_theory , '--', c='C2')\n", - "plt.plot(ell, 1.e5*ell*cl, 'o', ms=3, c='C2')\n", - "plt.errorbar(ell, 1.e5*ell*cl, yerr=1.e5*ell*cl_err, fmt='none', c='C2')\n", - "plt.xlim([1,ell_max])\n", - "plt.xlabel(r'$\\ell$')\n", - "plt.ylabel(r'$\\ell C_\\ell \\times 10^5$')\n", - "plt.subplots_adjust(wspace=0.25);" - ] - } - ], - "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.10.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/dev/multi-like-test.ipynb b/notebooks/dev/multi-like-test.ipynb deleted file mode 100644 index b447f28e..00000000 --- a/notebooks/dev/multi-like-test.ipynb +++ /dev/null @@ -1,1308 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext lab_black\n", - "\n", - "\n", - "from solike.tests.test_mflike import cosmo_params, nuisance_params\n", - "\n", - "info = {\n", - " \"likelihood\": {\n", - " \"solike.gaussian.MultiGaussianLikelihood\": {\n", - " \"components\": [\"solike.mflike.MFLike\", \"solike.SimulatedLensingLikelihood\"],\n", - " \"options\": [{\"sim_id\": 0}, {\"sim_number\": 1}],\n", - " \"stop_at_error\": True,\n", - " }\n", - " },\n", - " \"theory\": {\"camb\": {\"extra_args\": {\"lens_potential_accuracy\": 1}}},\n", - " \"params\": {**cosmo_params, **nuisance_params},\n", - "}\n", - "\n", - "info1 = {\n", - " \"likelihood\": {\"solike.mflike.MFLike\": {\"sim_id\": 0},},\n", - " \"theory\": {\"camb\": {\"extra_args\": {\"lens_potential_accuracy\": 1}}},\n", - " \"params\": {**cosmo_params, **nuisance_params},\n", - "}\n", - "\n", - "info2 = {\n", - " \"likelihood\": {\"solike.SimulatedLensingLikelihood\": {\"sim_number\": 1},},\n", - " \"theory\": {\"camb\": {\"extra_args\": {\"lens_potential_accuracy\": 1}}},\n", - " \"params\": {**cosmo_params},\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *global* CAMB.\n", - "[solike.mflike.mflike] Initialising.\n", - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *global* CAMB.\n", - "[solike.mflike.mflike] Initialising.\n", - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *global* CAMB.\n" - ] - } - ], - "source": [ - "from cobaya.model import get_model\n", - "\n", - "model = get_model(info)\n", - "model1 = get_model(info1)\n", - "model2 = get_model(info2)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([-2349.34448402])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.loglikes({}, cached=False)[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([-2349.34431616])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model1.loglikes({}, cached=False)[0] + model2.loglikes({}, cached=False)[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "like = model1.likelihood[\"solike.mflike.MFLike\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1.47072538e-03, 4.62275773e-16, 1.80889436e-15, ...,\n", - " -6.48039497e-18, -2.35454536e-17, 5.77873882e-19],\n", - " [ 5.66073720e-16, 2.10758256e-03, 4.40136446e-16, ...,\n", - " 1.44159769e-18, -8.64818774e-18, 6.07207401e-20],\n", - " [-1.56265237e-15, -3.47175645e-16, 1.87062674e-03, ...,\n", - " 8.94334016e-19, 9.19833394e-19, -5.53459577e-19],\n", - " ...,\n", - " [ 5.47572256e-19, 2.10583671e-18, 4.41243629e-19, ...,\n", - " 1.94251834e-01, -4.20691626e-18, 1.77090889e-18],\n", - " [-1.66809770e-18, 2.74085598e-18, 5.14145132e-19, ...,\n", - " 3.17928410e-18, 1.78288905e-01, 7.94581429e-18],\n", - " [-9.08823871e-20, 1.42048324e-18, 4.06917588e-20, ...,\n", - " -9.84031354e-19, 8.70624832e-17, 1.63691315e-01]])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like.inv_cov" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-3.2568328706449625e-10" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "\n", - "np.diag(np.linalg.inv(like.cov_mat) - like.inv_cov).mean()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "251.7683201002421" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.diag(like.inv_cov).mean()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "like = model.likelihood[\"solike.gaussian.MultiGaussianLikelihood\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{camb.transfers: [{'CAMB_transfers':{'non_linear': True, 'needs_perts': True}}],\n", - " camb: [{'Cl':{'tt': 6002, 'te': 6002, 'ee': 6002}}],\n", - " solike.gaussian.MultiGaussianLikelihood: []}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model._needs" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ChainMap({'Cl': {'tt': 6002, 'te': 6002, 'ee': 6002}}, {'Cl': {'pp': 6000}})" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like.get_requirements()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cl': {'tt': 6002, 'te': 6002, 'ee': 6002, 'pp': 6000},\n", - " 'params': OrderedDict()}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from cobaya.input import merge_info\n", - "\n", - "merge_info({\"Cl\": {\"tt\": 6002, \"te\": 6002, \"ee\": 6002}}, {\"Cl\": {\"pp\": 6000}})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "like = model.likelihood[\"solike.gaussian.MultiGaussianLikelihood\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'MFLike' object has no attribute 'input_params'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlike\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlikelihoods\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_params\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m: 'MFLike' object has no attribute 'input_params'" - ] - } - ], - "source": [ - "like.likelihoods[0].input_params" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['cosmomc_theta', 'As', 'ombh2', 'omch2', 'ns', 'Alens', 'tau']" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.input_params" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "OrderedDict([('cosmomc_theta', 0.0104085),\n", - " ('As', 2.0989031673191437e-09),\n", - " ('ombh2', 0.02237),\n", - " ('omch2', 0.12),\n", - " ('ns', 0.9649),\n", - " ('Alens', 1.0),\n", - " ('tau', 0.0544)])" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.parameterization.constant_params()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.gaussian import MultiGaussianLikelihood" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.tests.test_gaussian import toy_data\n", - "\n", - "datalist, cross_cov = toy_data()\n", - "cross_cov.save(\"test.npz\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "components = {\n", - " \"solike.mflike.MFLike\": {\"sim_id\": 0},\n", - " \"solike.SimulatedLensingLikelihood\": {},\n", - "}\n", - "\n", - "cross_cov_path = \"test.npz\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "multi = MultiGaussianLikelihood({\"components\": components})" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *local* CAMB from /Users/tmorton/cosmology/modules/code/CAMB\n", - "[solike.mflike.mflike] Initialising.\n", - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[classy] Importing *global* CLASS.\n", - "[classy] *WARNING* Requesting BB for ell>50 or lensing Cl's: using a non-linear code is recommended (and you are not using any). To activate it, set 'non_linear: halofit|hmcode|...' in classy's 'extra_args'.\n" - ] - } - ], - "source": [ - "%load_ext lab_black\n", - "\n", - "from solike.tests.test_mflike import get_demo_mflike_model, cosmo_params\n", - "from solike.tests.test_lensing import get_demo_lensing_model\n", - "\n", - "mflike_model = get_demo_mflike_model()\n", - "lensing_model = get_demo_lensing_model()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "mflike = mflike_model.likelihood[\"solike.mflike.MFLike\"]\n", - "lensing_like = lensing_model.likelihood[\"solike.SimulatedLensingLikelihood\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from solike import MultiGaussianLikelihood\n", - "\n", - "multi_like = MultiGaussianLikelihood([mflike, lensing_like])" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "info = {\n", - " # \"likelihood\": {\"solike.mflike.MFLike\": {\"sim_id\": 0}},\n", - " \"likelihood\": {\"solike.SimulatedLensingLikelihood\": {}},\n", - " \"theory\": {\"camb\": {\"extra_args\": {\"lens_potential_accuracy\": 1}}},\n", - " \"params\": cosmo_params,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *global* CAMB.\n" - ] - } - ], - "source": [ - "from cobaya.model import get_model\n", - "\n", - "model = get_model(info)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# like = model.likelihood[\"solike.mflike.MFLike\"]\n", - "like = model.likelihood[\"solike.SimulatedLensingLikelihood\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'SimulatedLensingLikelihood' object has no attribute 'params'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlike\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m: 'SimulatedLensingLikelihood' object has no attribute 'params'" - ] - } - ], - "source": [ - "like.params" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from solike import SimulatedLensingLikelihood\n", - "\n", - "lensing = " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext lab_black\n", - "\n", - "import numpy as np\n", - "from sklearn.datasets import make_spd_matrix\n", - "from scipy.stats import multivariate_normal\n", - "\n", - "from solike.gaussian import GaussianData\n", - "from solike import GaussianLikelihood, MultiGaussianLikelihood\n", - "from solike import PSLikelihood\n", - "\n", - "\n", - "class ToyLikelihood(PSLikelihood):\n", - " class_options = {\n", - " \"name\": \"toy\",\n", - " \"n\": 10,\n", - " \"sigma\": 1,\n", - " \"off_diag_amp\": 1e-3,\n", - " \"cov\": None,\n", - " }\n", - "\n", - " def initialize(self):\n", - " x = np.arange(self.n)\n", - " if self.cov is None:\n", - " cov = make_spd_matrix(self.n) * self.off_diag_amp\n", - " cov += np.diag(np.ones(self.n) * self.sigma ** 2)\n", - " else:\n", - " cov = self.cov\n", - "\n", - " y = np.random.multivariate_normal(np.zeros(self.n), cov)\n", - " self.data = GaussianData(self.name, x, y, cov)\n", - "\n", - " def _get_theory(self):\n", - " return np.zeros(self.n)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "n1, n2, n3 = [10, 20, 30]\n", - "full_cov = make_spd_matrix(n1 + n2 + n3, random_state=1234) * 0.1\n", - "full_cov += np.diag(np.ones((n1 + n2 + n3)))\n", - "\n", - "cov1 = full_cov[:n1, :n1]\n", - "cov2 = full_cov[n1 : n1 + n2, n1 : n1 + n2]\n", - "cov3 = full_cov[n1 + n2 :, n1 + n2 :]\n", - "\n", - "name1, name2, name3 = [\"A\", \"B\", \"C\"]\n", - "\n", - "cross_cov = {\n", - " (name1, name2): full_cov[:n1, n1 : n1 + n2],\n", - " (name1, name3): full_cov[:n1, n1 + n2 :],\n", - " (name2, name3): full_cov[n1 : n1 + n2, n1 + n2 :],\n", - "}\n", - "\n", - "\n", - "info1 = {\"name\": name1, \"n\": n1, \"cov\": cov1}\n", - "like1 = ToyLikelihood(info1)\n", - "\n", - "info2 = {\"name\": name2, \"n\": n2, \"cov\": cov2}\n", - "like2 = ToyLikelihood(info2)\n", - "\n", - "info3 = {\"name\": name3, \"n\": n3, \"cov\": cov3}\n", - "like3 = ToyLikelihood(info3)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(-13.887888835402642, -28.03603225966067, -39.26942865850595)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like1.logp(), like2.logp(), like3.logp()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "multilike = MultiGaussianLikelihood([like1, like2, like3], cross_cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from getdist.covmat import CovMat\n", - "\n", - "cov = CovMat(matrix=multilike.data.cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "\n", - "cov.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Numpy : 1.17.4\n", - "Matplotlib : 3.1.1\n", - " CAMB : 1.0.12\n", - " Cobaya : 2.1.0\n" - ] - } - ], - "source": [ - "%matplotlib inline\n", - "%load_ext lab_black\n", - "import numpy as np\n", - "import matplotlib as mpl\n", - "import matplotlib.pyplot as plt\n", - "import cobaya\n", - "import camb\n", - "\n", - "print(\" Numpy :\", np.__version__)\n", - "print(\"Matplotlib :\", mpl.__version__)\n", - "print(\" CAMB :\", camb.__version__)\n", - "print(\" Cobaya :\", cobaya.__version__)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "cosmo_params = {\n", - " \"cosmomc_theta\": 0.0104085,\n", - " \"logA\": {\"value\": 3.044, \"drop\": True},\n", - " \"As\": {\"value\": \"lambda logA: 1e-10*np.exp(logA)\"},\n", - " \"ombh2\": 0.02237,\n", - " \"omch2\": 0.1200,\n", - " \"ns\": 0.9649,\n", - " \"Alens\": 1.0,\n", - " \"tau\": 0.0544,\n", - "}\n", - "nuisance_params = {\n", - " \"a_tSZ\": 3.30,\n", - " \"a_kSZ\": 1.60,\n", - " \"a_p\": 6.90,\n", - " \"beta_p\": 2.08,\n", - " \"a_c\": 4.90,\n", - " \"beta_c\": 2.20,\n", - " \"n_CIBC\": 1.20,\n", - " \"a_s\": 3.10,\n", - " \"T_d\": 9.60,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "mflike_config = {\"solike.mflike.MFLike\": {\"sim_id\": 0, \"select\": \"tt-te-ee\"}}" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[install] Installing modules at '/Users/tmorton/cosmology/modules'\n", - "\n", - "================================================================================\n", - "likelihood:solike.mflike.MFLike\n", - "================================================================================\n", - "\n", - "[install] External module already installed.\n", - "\n", - "[install] Doing nothing.\n", - "\n" - ] - } - ], - "source": [ - "from cobaya.install import install\n", - "import os\n", - "\n", - "install(\n", - " {\"likelihood\": mflike_config},\n", - " path=os.getenv(\"COBAYA_MODULES\", \"/Users/tmorton/cosmology/modules\"),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "info = {\n", - " \"params\": {**cosmo_params, **nuisance_params},\n", - " \"likelihood\": mflike_config,\n", - " \"theory\": {\"camb\": None},\n", - " \"modules\": os.getenv(\"COBAYA_MODULES\", \"/Users/tmorton/cosmology/modules\"),\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import cobaya.conventions\n", - "\n", - "cobaya.conventions._debug_default = True" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[prior] *WARNING* No sampled parameters requested! This will fail for non-mock samplers.\n", - "[camb] Importing *local* CAMB from /Users/tmorton/cosmology/modules/code/CAMB\n", - "[solike.mflike.mflike] Initialising.\n" - ] - } - ], - "source": [ - "from cobaya.model import get_model\n", - "\n", - "model = get_model(info)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "mflike = model.likelihood[\"solike.mflike.MFLike\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([-1384.34401843]), [2.0989031673191437e-09])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.loglikes({}, cached=False) # should be -1384.34401843" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(mflike.cov_mat == mflike.data.cov).all()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(mflike.data_vec == mflike.data.y).all()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "log-likelihood value = [-1384.34401843], derived parameter value (As) = [2.0989031673191437e-09]\n" - ] - } - ], - "source": [ - "loglikes, derived = model.loglikes({})\n", - "print(\n", - " \"log-likelihood value = {}, derived parameter value (As) = {}\".format(\n", - " loglikes, derived\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.mflike import multivariate_normal_logpdf\n", - "from sklearn.datasets import make_spd_matrix\n", - "import scipy.linalg\n", - "import numpy as np\n", - "\n", - "n = 1000\n", - "data = np.random.randn(n)\n", - "theory = np.random.randn(n)\n", - "cov = make_spd_matrix(n)\n", - "inv_cov = scipy.linalg.inv(cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-9700.51456056774" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multivariate_normal_logpdf(theory, data, cov, inv_cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-9700.51456216281" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from scipy.stats import multivariate_normal\n", - "\n", - "norm = multivariate_normal(data, cov=cov)\n", - "norm.logpdf(theory)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "nan" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mflike.logp_const" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1.0, -2221.41943964051)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linalg.slogdet(mflike.cov_mat)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error in callback (for post_execute):\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/ipykernel/pylab/backend_inline.py\u001b[0m in \u001b[0;36mflush_figures\u001b[0;34m()\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;31m# ignore the tracking, just draw and close all figures\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 117\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;31m# safely show traceback if in IPython, else raise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/ipykernel/pylab/backend_inline.py\u001b[0m in \u001b[0;36mshow\u001b[0;34m(close, block)\u001b[0m\n\u001b[1;32m 37\u001b[0m display(\n\u001b[1;32m 38\u001b[0m \u001b[0mfigure_manager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m \u001b[0mmetadata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0m_fetch_figure_metadata\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigure_manager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 40\u001b[0m )\n\u001b[1;32m 41\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/display.py\u001b[0m in \u001b[0;36mdisplay\u001b[0;34m(include, exclude, metadata, transient, display_id, *objs, **kwargs)\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[0mpublish_display_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetadata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmetadata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 313\u001b[0;31m \u001b[0mformat_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmd_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minclude\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minclude\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexclude\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mexclude\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 314\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mformat_dict\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 315\u001b[0m \u001b[0;31m# nothing to display (e.g. _ipython_display_ took over)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/formatters.py\u001b[0m in \u001b[0;36mformat\u001b[0;34m(self, obj, include, exclude)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mmd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 179\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 180\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mformatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 181\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 182\u001b[0m \u001b[0;31m# FIXME: log the exception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, obj)\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/formatters.py\u001b[0m in \u001b[0;36mcatch_format_error\u001b[0;34m(method, self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0;34m\"\"\"show traceback on failed format call\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 224\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 225\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mNotImplementedError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0;31m# don't warn on NotImplementedErrors\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/formatters.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 339\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 341\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mprinter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 342\u001b[0m \u001b[0;31m# Finally look for special method names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 343\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_real_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_method\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/pylabtools.py\u001b[0m in \u001b[0;36m\u001b[0;34m(fig)\u001b[0m\n\u001b[1;32m 242\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'png'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mformats\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 244\u001b[0;31m \u001b[0mpng_formatter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfor_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mFigure\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mprint_figure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'png'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 245\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'retina'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mformats\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m'png2x'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mformats\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 246\u001b[0m \u001b[0mpng_formatter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfor_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mFigure\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mretina_figure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/IPython/core/pylabtools.py\u001b[0m in \u001b[0;36mprint_figure\u001b[0;34m(fig, fmt, bbox_inches, **kwargs)\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0mbytes_io\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBytesIO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 128\u001b[0;31m \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_figure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbytes_io\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 129\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbytes_io\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetvalue\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfmt\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'svg'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/backend_bases.py\u001b[0m in \u001b[0;36mprint_figure\u001b[0;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)\u001b[0m\n\u001b[1;32m 2058\u001b[0m \u001b[0mbbox_artists\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"bbox_extra_artists\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2059\u001b[0m bbox_inches = self.figure.get_tightbbox(renderer,\n\u001b[0;32m-> 2060\u001b[0;31m bbox_extra_artists=bbox_artists)\n\u001b[0m\u001b[1;32m 2061\u001b[0m \u001b[0mpad\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"pad_inches\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2062\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpad\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/figure.py\u001b[0m in \u001b[0;36mget_tightbbox\u001b[0;34m(self, renderer, bbox_extra_artists)\u001b[0m\n\u001b[1;32m 2365\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2366\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0martists\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2367\u001b[0;31m \u001b[0mbbox\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_tightbbox\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2368\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbbox\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwidth\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mheight\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2369\u001b[0m \u001b[0mbb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36mget_tightbbox\u001b[0;34m(self, renderer)\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0mThe\u001b[0m \u001b[0menclosing\u001b[0m \u001b[0mbounding\u001b[0m \u001b[0mbox\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;32min\u001b[0m \u001b[0mfigure\u001b[0m \u001b[0mpixel\u001b[0m \u001b[0mco\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mordinates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 283\u001b[0m \"\"\"\n\u001b[0;32m--> 284\u001b[0;31m \u001b[0mbbox\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_window_extent\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 285\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_clip_on\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 286\u001b[0m \u001b[0mclip_box\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_clip_box\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/collections.py\u001b[0m in \u001b[0;36mget_window_extent\u001b[0;34m(self, renderer)\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;31m# TODO: check to ensure that this does not fail for\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[0;31m# cases other than scatter plot legend\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 210\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_datalim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtransforms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIdentityTransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 211\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prepare_points\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/collections.py\u001b[0m in \u001b[0;36mget_datalim\u001b[0;34m(self, transData)\u001b[0m\n\u001b[1;32m 199\u001b[0m result = mpath.get_path_collection_extents(\n\u001b[1;32m 200\u001b[0m \u001b[0mtransform\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrozen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpaths\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_transforms\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m offsets, transOffset.frozen())\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minverse_transformed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtransData\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/path.py\u001b[0m in \u001b[0;36mget_path_collection_extents\u001b[0;34m(master_transform, paths, transforms, offsets, offset_transform)\u001b[0m\n\u001b[1;32m 962\u001b[0m return Bbox.from_extents(*_path.get_path_collection_extents(\n\u001b[1;32m 963\u001b[0m \u001b[0mmaster_transform\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpaths\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matleast_3d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtransforms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m offsets, offset_transform))\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/miniconda3/envs/cobaya/lib/python3.7/site-packages/matplotlib/path.py\u001b[0m in \u001b[0;36mcodes\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_update_values\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 210\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 211\u001b[0;31m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 212\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mcodes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 213\u001b[0m \"\"\"\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from getdist.covmat import CovMat\n", - "\n", - "cov = CovMat(matrix=mflike.cov_mat)\n", - "\n", - "cov.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-84.04887803082417" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multilike.logp()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-83.4677968639924" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum([l.logp() for l in [like1, like2, like3]])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-17.857919535814542" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like1.logp()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-17.857919535814542" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "like1.data.norm.logpdf(np.zeros(like1.n))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 2, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 3, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 4, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 5, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 6, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 7, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 8, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 9]])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.diag(np.arange(10))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/dev/multi-test.ipynb b/notebooks/dev/multi-test.ipynb deleted file mode 100644 index 33f639d1..00000000 --- a/notebooks/dev/multi-test.ipynb +++ /dev/null @@ -1,6436 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext lab_black" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.tests.test_gaussian import toy_data\n", - "\n", - "datalist, cross_cov = toy_data()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.gaussian import MultiGaussianData\n", - "\n", - "multi = MultiGaussianData(datalist, cross_cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var 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", - " var JS_MIME_TYPE = 'application/javascript';\n", - " var HTML_MIME_TYPE = 'text/html';\n", - " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " var CLASS_NAME = 'output_bokeh rendered_html';\n", - "\n", - " /**\n", - " * Render data to the DOM node\n", - " */\n", - " function render(props, node) {\n", - " var 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", - " var cell = handle.cell;\n", - "\n", - " var id = cell.output_area._bokeh_element_id;\n", - " var 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", - " var cmd = \"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, {\n", - " iopub: {\n", - " output: function(msg) {\n", - " var 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", - " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd);\n", - " }\n", - " }\n", - "\n", - " /**\n", - " * Handle when a new output is added\n", - " */\n", - " function handleAddOutput(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - "\n", - " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", - " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - "\n", - " var 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", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\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", - " var 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", - " var 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", - " var events = require('base/js/events');\n", - " var 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", - " var 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", - " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", - " \"
  • use INLINE resources instead, as so:
  • \\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", - " var el = document.getElementById(null);\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() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\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 (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\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", - " var js_urls = [];\n", - " var css_urls = [];\n", - " \n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " /* BEGIN bokeh.min.js */\n", - " /*!\n", - " * Copyright (c) 2012 - 2019, Anaconda, Inc., and Bokeh Contributors\n", - " * All rights reserved.\n", - " * \n", - " * Redistribution and use in source and binary forms, with or without modification,\n", - " * are permitted provided that the following conditions are met:\n", - " * \n", - " * Redistributions of source code must retain the above copyright notice,\n", - " * this list of conditions and the following disclaimer.\n", - " * \n", - " * Redistributions in binary form must reproduce the above copyright notice,\n", - " * this list of conditions and the following disclaimer in the documentation\n", - " * and/or other materials provided with the distribution.\n", - " * \n", - " * Neither the name of Anaconda nor the names of any contributors\n", - " * may be used to endorse or promote products derived from this software\n", - " * without specific prior written permission.\n", - " * \n", - " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", - " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", - " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", - " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", - " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", - " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", - " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", - " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", - " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", - " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", - " * THE POSSIBILITY OF SUCH DAMAGE.\n", - " */\n", - " (function(root, factory) {\n", - " root[\"Bokeh\"] = factory();\n", - " })(this, function() {\n", - " var define;\n", - " var parent_require = typeof require === \"function\" && require\n", - " return (function(modules, entry, aliases, externals) {\n", - " if (aliases === undefined) aliases = {};\n", - " if (externals === undefined) externals = {};\n", - "\n", - " var cache = {};\n", - "\n", - " var normalize = function(name) {\n", - " if (typeof name === \"number\")\n", - " return name;\n", - "\n", - " if (name === \"bokehjs\")\n", - " return entry;\n", - "\n", - " var prefix = \"@bokehjs/\"\n", - " if (name.slice(0, prefix.length) === prefix)\n", - " name = name.slice(prefix.length)\n", - "\n", - " var alias = aliases[name]\n", - " if (alias != null)\n", - " return alias;\n", - "\n", - " var trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", - " var index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", - " if (index != null)\n", - " return index;\n", - "\n", - " return name;\n", - " }\n", - "\n", - " var require = function(name) {\n", - " var mod = cache[name];\n", - " if (!mod) {\n", - " var id = normalize(name);\n", - "\n", - " mod = cache[id];\n", - " if (!mod) {\n", - " if (!modules[id]) {\n", - " if (parent_require && externals[id]) {\n", - " try {\n", - " mod = {exports: parent_require(id)};\n", - " cache[id] = cache[name] = mod;\n", - " return mod.exports;\n", - " } catch (e) {}\n", - " }\n", - "\n", - " var err = new Error(\"Cannot find module '\" + name + \"'\");\n", - " err.code = 'MODULE_NOT_FOUND';\n", - " throw err;\n", - " }\n", - "\n", - " mod = {exports: {}};\n", - " cache[id] = cache[name] = mod;\n", - " modules[id].call(mod.exports, require, mod, mod.exports);\n", - " } else\n", - " cache[name] = mod;\n", - " }\n", - "\n", - " return mod.exports;\n", - " }\n", - "\n", - " var main = require(entry);\n", - " main.require = require;\n", - "\n", - " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", - " if (plugin_aliases === undefined) plugin_aliases = {};\n", - " if (plugin_externals === undefined) plugin_externals = {};\n", - "\n", - " for (var name in plugin_modules) {\n", - " modules[name] = plugin_modules[name];\n", - " }\n", - "\n", - " for (var name in plugin_aliases) {\n", - " aliases[name] = plugin_aliases[name];\n", - " }\n", - "\n", - " for (var name in plugin_externals) {\n", - " externals[name] = plugin_externals[name];\n", - " }\n", - "\n", - " var plugin = require(plugin_entry);\n", - "\n", - " for (var name in plugin) {\n", - " main[name] = plugin[name];\n", - " }\n", - "\n", - " return plugin;\n", - " }\n", - "\n", - " return main;\n", - " })\n", - " ([\n", - " function _(n,o,r){n(1),function(n){for(var o in n)r.hasOwnProperty(o)||(r[o]=n[o])}(n(102))},\n", - " function _(n,c,f){n(2),n(11),n(14),n(21),n(49),n(52),n(87),n(94),n(100)},\n", - " function _(e,n,a){e(3)()||Object.defineProperty(Object,\"assign\",{value:e(4),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(r,t,o){t.exports=function(){var r,t=Object.assign;return\"function\"==typeof t&&(t(r={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),r.foo+r.bar+r.trzy===\"razdwatrzy\")}},\n", - " function _(t,r,n){var o=t(5),c=t(10),a=Math.max;r.exports=function(t,r){var n,f,h,i=a(arguments.length,2);for(t=Object(c(t)),h=function(o){try{t[o]=r[o]}catch(t){n||(n=t)}},f=1;f= 0\");if(!isFinite(r))throw new RangeError(\"Count must be < ∞\");for(n=\"\";r;)r%2&&(n+=t),r>1&&(t+=t),r>>=1;return n}},\n", - " function _(t,i,n){var r=t(18),a=Math.abs,o=Math.floor;i.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?r(t)*o(a(t)):t}},\n", - " function _(n,t,i){t.exports=n(19)()?Math.sign:n(20)},\n", - " function _(n,t,o){t.exports=function(){var n=Math.sign;return\"function\"==typeof n&&(1===n(10)&&-1===n(-20))}},\n", - " function _(n,r,t){r.exports=function(n){return n=Number(n),isNaN(n)||0===n?n:n>0?1:-1}},\n", - " function _(e,r,a){e(22)()||Object.defineProperty(Array,\"from\",{value:e(23),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(n,o,r){o.exports=function(){var n,o,r=Array.from;return\"function\"==typeof r&&(o=r(n=[\"raz\",\"dwa\"]),Boolean(o&&o!==n&&\"dwa\"===o[1]))}},\n", - " function _(e,l,r){var n=e(24).iterator,t=e(44),a=e(45),i=e(46),u=e(47),o=e(10),f=e(8),c=e(48),v=Array.isArray,h=Function.prototype.call,y={configurable:!0,enumerable:!0,writable:!0,value:null},s=Object.defineProperty;l.exports=function(e){var l,r,A,g,p,w,b,d,x,j,O=arguments[1],m=arguments[2];if(e=Object(o(e)),f(O)&&u(O),this&&this!==Array&&a(this))l=this;else{if(!O){if(t(e))return 1!==(p=e.length)?Array.apply(null,e):((g=new Array(1))[0]=e[0],g);if(v(e)){for(g=new Array(p=e.length),r=0;r=55296&&w<=56319&&(j+=e[++r]),j=O?h.call(O,m,j,A):j,l?(y.value=j,s(g,A,y)):g[A]=j,++A;p=A}if(void 0===p)for(p=i(e.length),l&&(g=new l(p)),r=0;r-1}},\n", - " function _(r,n,o){var t=r(40);n.exports=function(r){if(!t(r))throw new TypeError(r+\" is not a symbol\");return r}},\n", - " function _(o,t,n){t.exports=function(o){return!!o&&(\"symbol\"==typeof o||!!o.constructor&&(\"Symbol\"===o.constructor.name&&\"Symbol\"===o[o.constructor.toStringTag]))}},\n", - " function _(t,e,n){var r=t(28),o=Object.create,c=Object.defineProperty,u=Object.prototype,f=o(null);e.exports=function(t){for(var e,n,o=0;f[t+(o||\"\")];)++o;return f[t+=o||\"\"]=!0,c(u,e=\"@@\"+t,r.gs(null,function(t){n||(n=!0,c(this,e,r(t)),n=!1)})),e}},\n", - " function _(e,t,a){var s=e(28),i=e(26).Symbol;t.exports=function(e){return Object.defineProperties(e,{hasInstance:s(\"\",i&&i.hasInstance||e(\"hasInstance\")),isConcatSpreadable:s(\"\",i&&i.isConcatSpreadable||e(\"isConcatSpreadable\")),iterator:s(\"\",i&&i.iterator||e(\"iterator\")),match:s(\"\",i&&i.match||e(\"match\")),replace:s(\"\",i&&i.replace||e(\"replace\")),search:s(\"\",i&&i.search||e(\"search\")),species:s(\"\",i&&i.species||e(\"species\")),split:s(\"\",i&&i.split||e(\"split\")),toPrimitive:s(\"\",i&&i.toPrimitive||e(\"toPrimitive\")),toStringTag:s(\"\",i&&i.toStringTag||e(\"toStringTag\")),unscopables:s(\"\",i&&i.unscopables||e(\"unscopables\"))})}},\n", - " function _(r,n,e){var t=r(28),i=r(39),o=Object.create(null);n.exports=function(r){return Object.defineProperties(r,{for:t(function(n){return o[n]?o[n]:o[n]=r(String(n))}),keyFor:t(function(r){var n;for(n in i(r),o)if(o[n]===r)return n})})}},\n", - " function _(t,n,r){var o=Object.prototype.toString,c=o.call(function(){return arguments}());n.exports=function(t){return o.call(t)===c}},\n", - " function _(t,o,n){var e=Object.prototype.toString,c=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);o.exports=function(t){return\"function\"==typeof t&&c(e.call(t))}},\n", - " function _(n,t,r){var a=n(17),o=Math.max;t.exports=function(n){return o(0,a(n))}},\n", - " function _(n,o,t){o.exports=function(n){if(\"function\"!=typeof n)throw new TypeError(n+\" is not a function\");return n}},\n", - " function _(t,n,o){var e=Object.prototype.toString,r=e.call(\"\");n.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||e.call(t)===r)||!1}},\n", - " function _(e,a,l){e(50)()||Object.defineProperty(Math,\"log10\",{value:e(51),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(n,t,o){t.exports=function(){var n=Math.log10;return\"function\"==typeof n&&.3010299956639812===n(2)}},\n", - " function _(N,a,t){var n=Math.log,r=Math.LOG10E;a.exports=function(N){return isNaN(N)?NaN:(N=Number(N))<0?NaN:0===N?-1/0:1===N?0:N===1/0?1/0:n(N)*r}},\n", - " function _(e,n,r){e(53)()||Object.defineProperty(e(26),\"Set\",{value:e(54),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(t,e,n){e.exports=function(){var t,e;return\"function\"==typeof Set&&(t=new Set([\"raz\",\"dwa\",\"trzy\"]),\"[object Set]\"===String(t)&&(3===t.size&&(\"function\"==typeof t.add&&(\"function\"==typeof t.clear&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.entries&&(\"function\"==typeof t.forEach&&(\"function\"==typeof t.has&&(\"function\"==typeof t.keys&&(\"function\"==typeof t.values&&(!1===(e=t.values().next()).done&&\"raz\"===e.value)))))))))))}},\n", - " function _(t,e,n){var r,i,s,o=t(55),a=t(56),_=t(60),c=t(47),u=t(28),h=t(65),l=t(24),f=t(66),p=t(68),y=t(85),v=t(86),d=Function.prototype.call,D=Object.defineProperty,g=Object.getPrototypeOf;v&&(s=Set),e.exports=r=function(){var t,e=arguments[0];if(!(this instanceof r))throw new TypeError(\"Constructor requires 'new'\");return t=v&&_?_(new s,g(this)):this,null!=e&&f(e),D(t,\"__setData__\",u(\"c\",[])),e?(p(e,function(t){-1===a.call(this,t)&&this.push(t)},t.__setData__),t):t},v&&(_&&_(r,s),r.prototype=Object.create(s.prototype,{constructor:u(r)})),h(Object.defineProperties(r.prototype,{add:u(function(t){return this.has(t)?this:(this.emit(\"_add\",this.__setData__.push(t)-1,t),this)}),clear:u(function(){this.__setData__.length&&(o.call(this.__setData__),this.emit(\"_clear\"))}),delete:u(function(t){var e=a.call(this.__setData__,t);return-1!==e&&(this.__setData__.splice(e,1),this.emit(\"_delete\",e,t),!0)}),entries:u(function(){return new y(this,\"key+value\")}),forEach:u(function(t){var e,n,r,i=arguments[1];for(c(t),n=(e=this.values())._next();void 0!==n;)r=e._resolve(n),d.call(t,i,r,r,this),n=e._next()}),has:u(function(t){return-1!==a.call(this.__setData__,t)}),keys:u(i=function(){return this.values()}),size:u.gs(function(){return this.__setData__.length}),values:u(function(){return new y(this)}),toString:u(function(){return\"[object Set]\"})})),D(r.prototype,l.iterator,u(i)),D(r.prototype,l.toStringTag,u(\"c\",\"Set\"))},\n", - " function _(t,n,i){var r=t(10);n.exports=function(){return r(this).length=0,this}},\n", - " function _(t,r,e){var i=t(57),n=t(46),o=t(10),a=Array.prototype.indexOf,h=Object.prototype.hasOwnProperty,s=Math.abs,p=Math.floor;r.exports=function(t){var r,e,f,l;if(!i(t))return a.apply(this,arguments);for(e=n(o(this).length),f=arguments[1],r=f=isNaN(f)?0:f>=0?p(f):n(this.length)-p(s(f));r=55296&&v<=56319&&(g+=r[++p]),i.call(n,x,g,s),!y);++p);else f.call(r,function(r){return i.call(n,x,r,s),y})}},\n", - " function _(n,t,e){var o=n(44),r=n(48),f=n(70),i=n(84),u=n(66),c=n(24).iterator;t.exports=function(n){return\"function\"==typeof u(n)[c]?n[c]():o(n)?new f(n):r(n)?new i(n):new f(n)}},\n", - " function _(t,e,r){var o,_=t(60),i=t(36),n=t(28),l=t(24),a=t(71),s=Object.defineProperty;o=e.exports=function(t,e){if(!(this instanceof o))throw new TypeError(\"Constructor requires 'new'\");a.call(this,t),e=e?i.call(e,\"key+value\")?\"key+value\":i.call(e,\"key\")?\"key\":\"value\":\"value\",s(this,\"__kind__\",n(\"\",e))},_&&_(o,a),delete o.prototype.constructor,o.prototype=Object.create(a.prototype,{_resolve:n(function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t})}),s(o.prototype,l.toStringTag,n(\"c\",\"Array Iterator\"))},\n", - " function _(_,t,e){var n,i=_(55),o=_(34),s=_(47),r=_(10),h=_(28),d=_(72),c=_(24),u=Object.defineProperty,l=Object.defineProperties;t.exports=n=function(_,t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l(this,{__list__:h(\"w\",r(_)),__context__:h(\"w\",t),__nextIndex__:h(\"w\",0)}),t&&(s(t.on),t.on(\"_add\",this._onAdd),t.on(\"_delete\",this._onDelete),t.on(\"_clear\",this._onClear))},delete n.prototype.constructor,l(n.prototype,o({_next:h(function(){var _;if(this.__list__)return this.__redo__&&void 0!==(_=this.__redo__.shift())?_:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){t>=_&&(this.__redo__[e]=++t)},this),this.__redo__.push(_)):u(this,\"__redo__\",h(\"c\",[_])))}),_onDelete:h(function(_){var t;_>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(_))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){t>_&&(this.__redo__[e]=--t)},this)))}),_onClear:h(function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0})}))),u(n.prototype,c.iterator,h(function(){return this}))},\n", - " function _(e,t,n){var r,o=e(29),i=e(73),l=e(78),u=e(79),s=e(35),v=e(81),a=Function.prototype.bind,c=Object.defineProperty,f=Object.prototype.hasOwnProperty;r=function(e,t,n){var r,o=i(t)&&l(t.value);return delete(r=u(t)).writable,delete r.value,r.get=function(){return!n.overwriteDefinition&&f.call(this,e)?o:(t.value=a.call(o,n.resolveContext?n.resolveContext(this):this),c(this,e,t),this[e])},r},t.exports=function(e){var t=s(arguments[1]);return o(t.resolveContext)&&l(t.resolveContext),v(e,function(e,n){return r(n,e,t)})}},\n", - " function _(n,t,o){var r=n(74),u=n(29);t.exports=function(n){return u(n)?n:r(n,\"Cannot use %v\",arguments[1])}},\n", - " function _(r,e,n){var t=r(29),i=r(33),o=r(75),f=r(76),u=function(r,e){return r.replace(\"%v\",f(e))};e.exports=function(r,e,n){if(!i(n))throw new TypeError(u(e,r));if(!t(r)){if(\"default\"in n)return n.default;if(n.isOptional)return null}var f=o(n.errorMessage);throw t(f)||(f=e),new TypeError(u(f,r))}},\n", - " function _(t,n,r){var u=t(29),e=t(33),i=Object.prototype.toString;n.exports=function(t){if(!u(t))return null;if(e(t)){var n=t.toString;if(\"function\"!=typeof n)return null;if(n===i)return null}try{return\"\"+t}catch(t){return null}}},\n", - " function _(r,e,n){var t=r(77),u=/[\\n\\r\\u2028\\u2029]/g;e.exports=function(r){var e=t(r);return null===e?\"\":(e.length>100&&(e=e.slice(0,99)+\"…\"),e=e.replace(u,function(r){switch(r){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}}))}},\n", - " function _(t,r,n){r.exports=function(t){try{return t.toString()}catch(r){try{return String(t)}catch(t){return null}}}},\n", - " function _(n,t,i){var o=n(74),r=n(30);t.exports=function(n){return r(n)?n:o(n,\"%v is not a plain function\",arguments[1])}},\n", - " function _(n,r,t){var e=n(80),u=n(34),c=n(10);r.exports=function(n){var r=Object(c(n)),t=arguments[1],i=Object(arguments[2]);if(r!==n&&!t)return r;var f={};return t?e(t,function(r){(i.ensure||r in n)&&(f[r]=n[r])}):u(f,n),f}},\n", - " function _(r,o,f){o.exports=r(22)()?Array.from:r(23)},\n", - " function _(n,t,o){var c=n(47),r=n(82),u=Function.prototype.call;t.exports=function(n,t){var o={},a=arguments[2];return c(t),r(n,function(n,c,r,i){o[c]=u.call(t,a,n,c,r,i)}),o}},\n", - " function _(o,c,f){c.exports=o(83)(\"forEach\")},\n", - " function _(t,n,o){var c=t(47),e=t(10),r=Function.prototype.bind,u=Function.prototype.call,l=Object.keys,p=Object.prototype.propertyIsEnumerable;n.exports=function(t,n){return function(o,i){var a,f=arguments[2],y=arguments[3];return o=Object(e(o)),c(i),a=l(o),y&&a.sort(\"function\"==typeof y?r.call(y,o):void 0),\"function\"!=typeof t&&(t=a[t]),u.call(t,a,function(t,c){return p.call(o,t)?u.call(i,f,o[t],t,o,c):n})}}},\n", - " function _(t,_,e){var n,r=t(60),i=t(28),o=t(24),s=t(71),h=Object.defineProperty;n=_.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),h(this,\"__length__\",i(\"\",t.length))},r&&r(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:i(function(){if(this.__list__)return this.__nextIndex__=55296&&_<=56319?e+this.__list__[this.__nextIndex__++]:e})}),h(n.prototype,o.toStringTag,i(\"c\",\"String Iterator\"))},\n", - " function _(t,e,_){var r,i=t(60),o=t(36),n=t(28),s=t(71),a=t(24).toStringTag,c=Object.defineProperty;r=e.exports=function(t,e){if(!(this instanceof r))return new r(t,e);s.call(this,t.__setData__,t),e=e&&o.call(e,\"key+value\")?\"key+value\":\"value\",c(this,\"__kind__\",n(\"\",e))},i&&i(r,s),r.prototype=Object.create(s.prototype,{constructor:n(r),_resolve:n(function(t){return\"value\"===this.__kind__?this.__list__[t]:[this.__list__[t],this.__list__[t]]}),toString:n(function(){return\"[object Set Iterator]\"})}),c(r.prototype,a,n(\"c\",\"Set Iterator\"))},\n", - " function _(t,e,o){e.exports=\"undefined\"!=typeof Set&&\"[object Set]\"===Object.prototype.toString.call(Set.prototype)},\n", - " function _(e,a,n){e(88)()||Object.defineProperty(e(26),\"Map\",{value:e(89),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(t,e,n){e.exports=function(){var t,e;if(\"function\"!=typeof Map)return!1;try{t=new Map([[\"raz\",\"one\"],[\"dwa\",\"two\"],[\"trzy\",\"three\"]])}catch(t){return!1}return\"[object Map]\"===String(t)&&(3===t.size&&(\"function\"==typeof t.clear&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.entries&&(\"function\"==typeof t.forEach&&(\"function\"==typeof t.get&&(\"function\"==typeof t.has&&(\"function\"==typeof t.keys&&(\"function\"==typeof t.set&&(\"function\"==typeof t.values&&(!1===(e=t.entries().next()).done&&(!!e.value&&(\"raz\"===e.value[0]&&\"one\"===e.value[1])))))))))))))}},\n", - " function _(t,e,a){var _,n=t(55),i=t(56),r=t(60),s=t(47),o=t(10),p=t(28),c=t(65),u=t(24),l=t(66),h=t(68),f=t(90),y=t(93),m=Function.prototype.call,D=Object.defineProperties,v=Object.getPrototypeOf;e.exports=_=function(){var t,e,a,n=arguments[0];if(!(this instanceof _))throw new TypeError(\"Constructor requires 'new'\");return a=y&&r&&Map!==_?r(new Map,v(this)):this,null!=n&&l(n),D(a,{__mapKeysData__:p(\"c\",t=[]),__mapValuesData__:p(\"c\",e=[])}),n?(h(n,function(a){var _=o(a)[0];a=a[1],-1===i.call(t,_)&&(t.push(_),e.push(a))},a),a):a},y&&(r&&r(_,Map),_.prototype=Object.create(Map.prototype,{constructor:p(_)})),c(D(_.prototype,{clear:p(function(){this.__mapKeysData__.length&&(n.call(this.__mapKeysData__),n.call(this.__mapValuesData__),this.emit(\"_clear\"))}),delete:p(function(t){var e=i.call(this.__mapKeysData__,t);return-1!==e&&(this.__mapKeysData__.splice(e,1),this.__mapValuesData__.splice(e,1),this.emit(\"_delete\",e,t),!0)}),entries:p(function(){return new f(this,\"key+value\")}),forEach:p(function(t){var e,a,_=arguments[1];for(s(t),a=(e=this.entries())._next();void 0!==a;)m.call(t,_,this.__mapValuesData__[a],this.__mapKeysData__[a],this),a=e._next()}),get:p(function(t){var e=i.call(this.__mapKeysData__,t);if(-1!==e)return this.__mapValuesData__[e]}),has:p(function(t){return-1!==i.call(this.__mapKeysData__,t)}),keys:p(function(){return new f(this,\"key\")}),set:p(function(t,e){var a,_=i.call(this.__mapKeysData__,t);return-1===_&&(_=this.__mapKeysData__.push(t)-1,a=!0),this.__mapValuesData__[_]=e,a&&this.emit(\"_add\",_,t),this}),size:p.gs(function(){return this.__mapKeysData__.length}),values:p(function(){return new f(this,\"value\")}),toString:p(function(){return\"[object Map]\"})})),Object.defineProperty(_.prototype,u.iterator,p(function(){return this.entries()})),Object.defineProperty(_.prototype,u.toStringTag,p(\"c\",\"Map\"))},\n", - " function _(t,_,e){var i,n=t(60),r=t(28),o=t(71),s=t(24).toStringTag,a=t(91),u=Object.defineProperties,c=o.prototype._unBind;i=_.exports=function(t,_){if(!(this instanceof i))return new i(t,_);o.call(this,t.__mapKeysData__,t),_&&a[_]||(_=\"key+value\"),u(this,{__kind__:r(\"\",_),__values__:r(\"w\",t.__mapValuesData__)})},n&&n(i,o),i.prototype=Object.create(o.prototype,{constructor:r(i),_resolve:r(function(t){return\"value\"===this.__kind__?this.__values__[t]:\"key\"===this.__kind__?this.__list__[t]:[this.__list__[t],this.__values__[t]]}),_unBind:r(function(){this.__values__=null,c.call(this)}),toString:r(function(){return\"[object Map Iterator]\"})}),Object.defineProperty(i.prototype,s,r(\"c\",\"Map Iterator\"))},\n", - " function _(e,u,a){u.exports=e(92)(\"key\",\"value\",\"key+value\")},\n", - " function _(r,t,n){var c=Array.prototype.forEach,o=Object.create;t.exports=function(r){var t=o(null);return c.call(arguments,function(r){t[r]=!0}),t}},\n", - " function _(t,e,o){e.exports=\"undefined\"!=typeof Map&&\"[object Map]\"===Object.prototype.toString.call(new Map)},\n", - " function _(e,a,n){e(95)()||Object.defineProperty(e(26),\"WeakMap\",{value:e(96),configurable:!0,enumerable:!1,writable:!0})},\n", - " function _(t,e,n){e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},\n", - " function _(t,e,a){var r,n=t(8),o=t(60),p=t(97),_=t(10),i=t(98),c=t(28),s=t(69),u=t(68),f=t(24).toStringTag,k=t(99),M=Array.isArray,h=Object.defineProperty,w=Object.prototype.hasOwnProperty,y=Object.getPrototypeOf;e.exports=r=function(){var t,e=arguments[0];if(!(this instanceof r))throw new TypeError(\"Constructor requires 'new'\");return t=k&&o&&WeakMap!==r?o(new WeakMap,y(this)):this,n(e)&&(M(e)||(e=s(e))),h(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+i())),e?(u(e,function(e){_(e),t.set(e[0],e[1])}),t):t},k&&(o&&o(r,WeakMap),r.prototype=Object.create(WeakMap.prototype,{constructor:c(r)})),Object.defineProperties(r.prototype,{delete:c(function(t){return!!w.call(p(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:c(function(t){if(w.call(p(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:c(function(t){return w.call(p(t),this.__weakMapData__)}),set:c(function(t,e){return h(p(t),this.__weakMapData__,c(\"c\",e)),this}),toString:c(function(){return\"[object WeakMap]\"})}),h(r.prototype,f,c(\"c\",\"WeakMap\"))},\n", - " function _(n,r,t){var o=n(63);r.exports=function(n){if(!o(n))throw new TypeError(n+\" is not an Object\");return n}},\n", - " function _(t,n,r){var e=Object.create(null),o=Math.random;n.exports=function(){var t;do{t=o().toString(36).slice(2)}while(e[t]);return t}},\n", - " function _(t,e,o){e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},\n", - " function _(l,o,f){o.exports=l(101).polyfill()},\n", - " function _(t,e,r){\n", - " /*!\n", - " * @overview es6-promise - a tiny implementation of Promises/A+.\n", - " * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n", - " * @license Licensed under MIT license\n", - " * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n", - " * @version v4.2.6+9869a4bc\n", - " */\n", - " !function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():\"function\"==typeof define&&define.amd?define(n):t.ES6Promise=n()}(this,function(){\"use strict\";function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},n=0,o=void 0,i=void 0,s=function(t,e){v[n]=t,v[n+1]=e,2===(n+=2)&&(i?i(p):b())};var u=\"undefined\"!=typeof window?window:void 0,c=u||{},a=c.MutationObserver||c.WebKitMutationObserver,f=\"undefined\"==typeof self&&\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),l=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function h(){var t=setTimeout;return function(){return t(p,1)}}var v=new Array(1e3);function p(){for(var t=0;t0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}},e.prototype.interactive_start=function(e){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new s.LODStart)),this._interactive_timestamp=Date.now()},e.prototype.interactive_stop=function(e){null!=this._interactive_plot&&this._interactive_plot.id===e.id&&this._interactive_plot.trigger_event(new s.LODEnd),this._interactive_plot=null,this._interactive_timestamp=null},e.prototype.interactive_duration=function(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp},e.prototype.destructively_move=function(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();var t=d.copy(this._roots);this.clear();for(var n=0,o=t;n=0&&this._callbacks.splice(t,1)},e.prototype._trigger_on_change=function(e){for(var t=0,n=this._callbacks;t0||d.difference(f,a).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");var g={},y=[];for(var w in n._all_models)if(w in i){var b=e._events_to_sync_objects(i[w],c[w],n,g);y=y.concat(b)}return{references:e._references_json(h.values(g),!1),events:y}},e.prototype.to_json_string=function(e){return void 0===e&&(e=!0),JSON.stringify(this.to_json(e))},e.prototype.to_json=function(t){void 0===t&&(t=!0);var n=this._roots.map(function(e){return e.id}),o=h.values(this._all_models);return{version:r.version,title:this._title,roots:{root_ids:n,references:e._references_json(o,t)}}},e.from_json_string=function(t){var n=JSON.parse(t);return e.from_json(n)},e.from_json=function(t){i.logger.debug(\"Creating Document from JSON\");var n=t.version,o=-1!==n.indexOf(\"+\")||-1!==n.indexOf(\"-\"),s=\"Library versions: JS (\"+r.version+\") / Python (\"+n+\")\";o||r.version===n?i.logger.debug(s):(i.logger.warn(\"JS/Python version mismatch\"),i.logger.warn(s));var a=t.roots,_=a.root_ids,l=a.references,c=e._instantiate_references_json(l,{});e._initialize_references_json(l,{},c);for(var u=new e,d=0,h=_;d0,\"'step' must be a positive number\"),null==r&&(r=n,n=0);for(var t=n<=r?e:-e,i=(0,Math.max)((0,Math.ceil)((0,Math.abs)(r-n)/e),0),a=Array(i),o=0;o=0?r:n.length+r]},e.zip=function(){for(var n=[],r=0;rt||void 0===e)return 1;if(e2*Math.PI;)n-=2*Math.PI;return n}function o(n,r){return a(n-r)}function u(){return Math.random()}t.angle_norm=a,t.angle_dist=o,t.angle_between=function(n,r,t,u){var e=o(r,t);if(0==e)return!1;if(e==2*Math.PI)return!0;var f=a(n),i=o(r,f)<=e&&o(f,t)<=e;return 0==u?i:!i},t.random=u,t.randomIn=function(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))},t.atan2=function(n,r){return Math.atan2(r[1]-n[1],r[0]-n[0])},t.rnorm=function(n,r){for(var t,a;t=u(),a=(2*(a=u())-1)*Math.sqrt(1/Math.E*2),!(-4*t*t*Math.log(t)>=a*a););var o=a/t;return o=n+r*o},t.clamp=function(n,r,t){return n>t?t:n=0;u--)(o=t[u])&&(c=(a<3?o(c):a>3?o(e,n,c):o(e,n))||c);return a>3&&c&&Object.defineProperty(e,n,c),c},u=function(t,e){return function(n,r){e(n,r,t)}},i=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},f=function(t,e,n,r){return new(n||(n=Promise))(function(o,a){function c(t){try{i(r.next(t))}catch(t){a(t)}}function u(t){try{i(r.throw(t))}catch(t){a(t)}}function i(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(c,u)}i((r=r.apply(t,e||[])).next())})},l=function(t,e){var n,r,o,a,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;c;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,r=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!(o=(o=c.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){c=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}},p=function(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,a=n.call(t),c=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)c.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return c},_=function(){for(var t=[],e=0;e1||u(t,e)})})}function u(t,e){try{(n=o[t](e)).value instanceof h?Promise.resolve(n.value.v).then(i,f):l(a[0][2],n)}catch(t){l(a[0][3],t)}var n}function i(t){u(\"next\",t)}function f(t){u(\"throw\",t)}function l(t,e){t(e),a.shift(),a.length&&u(a[0][0],a[0][1])}},d=function(t){var e,n;return e={},r(\"next\"),r(\"throw\",function(t){throw t}),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:h(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}},w=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=y(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise(function(r,o){(function(t,e,n,r){Promise.resolve(r).then(function(e){t({value:e,done:n})},e)})(r,o,(e=t[n](e)).done,e.value)})}}},m=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t},O=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e},j=function(t){return t&&t.__esModule?t:{default:t}},t(\"__extends\",r),t(\"__assign\",o),t(\"__rest\",a),t(\"__decorate\",c),t(\"__param\",u),t(\"__metadata\",i),t(\"__awaiter\",f),t(\"__generator\",l),t(\"__exportStar\",s),t(\"__values\",y),t(\"__read\",p),t(\"__spread\",_),t(\"__spreadArrays\",b),t(\"__await\",h),t(\"__asyncGenerator\",v),t(\"__asyncDelegator\",d),t(\"__asyncValues\",w),t(\"__makeTemplateObject\",m),t(\"__importStar\",O),t(\"__importDefault\",j)})},\n", - " function _(n,r,t){function e(n,r,t){for(var e=[],o=3;ou&&(r=u),null==t||t>u-r?t=u-r:t<0&&(t=0);for(var i=u-t+e.length,f=new n.constructor(i),a=0;a0?0:e-1;o>=0&&ot&&(t=r);return t},t.max_by=function(n,r){if(0==n.length)throw new Error(\"max_by() called with an empty array\");for(var t=n[0],e=r(t),o=1,u=n.length;oe&&(t=i,e=f)}return t},t.sum=function(n){for(var r=0,t=0,e=n.length;t0&&(this._pending=!0);for(var p=0;p0?this._dict[t]=s:delete this._dict[t]}else i.isEqual(e,n)&&delete this._dict[t]},t.prototype.get_one=function(t,n){var e=this._existing(t);if(o.isArray(e)){if(1===e.length)return e[0];throw new Error(n)}return e},t}();e.MultiDict=s,s.__name__=\"MultiDict\";var a=function(){function t(n){if(null==n)this._values=[];else if(n instanceof t)this._values=r.copy(n._values);else{this._values=[];for(var e=0,i=n;et?(a&&(clearTimeout(a),a=null),o=c,i=n.apply(r,u),a||(r=u=null)):a||!1===e.trailing||(a=setTimeout(l,f)),i}},e.once=function(n){var t,e=!1;return function(){return e||(e=!0,t=n()),t}}},\n", - " function _(e,t,n){var r=e(121),a=e(125);function l(e,t){var n={};for(var r in e){var a=e[r];n[t+r]=a}return n}var i={line_color:[r.ColorSpec,\"black\"],line_width:[r.NumberSpec,1],line_alpha:[r.NumberSpec,1],line_join:[r.LineJoin,\"bevel\"],line_cap:[r.LineCap,\"butt\"],line_dash:[r.Array,[]],line_dash_offset:[r.Number,0]};n.line=function(e){return void 0===e&&(e=\"\"),l(i,e)};var o={fill_color:[r.ColorSpec,\"gray\"],fill_alpha:[r.NumberSpec,1]};n.fill=function(e){return void 0===e&&(e=\"\"),l(o,e)};var c={hatch_color:[r.ColorSpec,\"black\"],hatch_alpha:[r.NumberSpec,1],hatch_scale:[r.NumberSpec,12],hatch_pattern:[r.StringSpec,null],hatch_weight:[r.NumberSpec,1],hatch_extra:[r.Any,{}]};n.hatch=function(e){return void 0===e&&(e=\"\"),l(c,e)};var h={text_font:[r.Font,\"helvetica\"],text_font_size:[r.FontSizeSpec,\"12pt\"],text_font_style:[r.FontStyle,\"normal\"],text_color:[r.ColorSpec,\"#444444\"],text_alpha:[r.NumberSpec,1],text_align:[r.TextAlign,\"left\"],text_baseline:[r.TextBaseline,\"bottom\"],text_line_height:[r.Number,1.2]};n.text=function(e){return void 0===e&&(e=\"\"),l(h,e)},n.create=function(e){for(var t={},r=0,l=e;r\",\"*\"],n.HTTPMethod=[\"POST\",\"GET\"],n.HexTileOrientation=[\"pointytop\",\"flattop\"],n.HoverMode=[\"mouse\",\"hline\",\"vline\"],n.LatLon=[\"lat\",\"lon\"],n.LegendClickPolicy=[\"none\",\"hide\",\"mute\"],n.LegendLocation=n.Anchor,n.LineCap=[\"butt\",\"round\",\"square\"],n.LineJoin=[\"miter\",\"round\",\"bevel\"],n.LinePolicy=[\"prev\",\"next\",\"nearest\",\"interp\",\"none\"],n.Location=[\"above\",\"below\",\"left\",\"right\"],n.Logo=[\"normal\",\"grey\"],n.MarkerType=[\"asterisk\",\"circle\",\"circle_cross\",\"circle_x\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"hex\",\"inverted_triangle\",\"square\",\"square_cross\",\"square_x\",\"triangle\",\"x\"],n.Orientation=[\"vertical\",\"horizontal\"],n.OutputBackend=[\"canvas\",\"svg\",\"webgl\"],n.PaddingUnits=[\"percent\",\"absolute\"],n.Place=[\"above\",\"below\",\"left\",\"right\",\"center\"],n.PointPolicy=[\"snap_to_data\",\"follow_mouse\",\"none\"],n.RadiusDimension=[\"x\",\"y\",\"max\",\"min\"],n.RenderLevel=[\"image\",\"underlay\",\"glyph\",\"annotation\",\"overlay\"],n.RenderMode=[\"canvas\",\"css\"],n.ResetPolicy=[\"standard\",\"event_only\"],n.RoundingFunction=[\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"],n.Side=[\"above\",\"below\",\"left\",\"right\"],n.SizingMode=[\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"],n.SliderCallbackPolicy=[\"continuous\",\"throttle\",\"mouseup\"],n.Sort=[\"ascending\",\"descending\"],n.SpatialUnits=[\"screen\",\"data\"],n.StartEnd=[\"start\",\"end\"],n.StepMode=[\"after\",\"before\",\"center\"],n.TapBehavior=[\"select\",\"inspect\"],n.TextAlign=[\"left\",\"right\",\"center\"],n.TextBaseline=[\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"],n.TextureRepetition=[\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"],n.TickLabelOrientation=[\"vertical\",\"horizontal\",\"parallel\",\"normal\"],n.TooltipAttachment=[\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"],n.UpdateMode=[\"replace\",\"append\"],n.VerticalAlign=[\"top\",\"middle\",\"bottom\"]},\n", - " function _(r,e,t){var n=r(124),a=r(110);function o(r){var e=Number(r).toString(16);return 1==e.length?\"0\"+e:e}function l(r){if(0==(r+=\"\").indexOf(\"#\"))return r;if(n.is_svg_color(r))return n.svg_colors[r];if(0==r.indexOf(\"rgb\")){var e=r.replace(/^rgba?\\(|\\s+|\\)$/g,\"\").split(\",\"),t=e.slice(0,3).map(o).join(\"\");return 4==e.length&&(t+=o(Math.floor(255*parseFloat(e[3])))),\"#\"+t.slice(0,8)}return r}function i(r){var e;switch(r.substring(0,4)){case\"rgba\":e={start:\"rgba(\",len:4,alpha:!0};break;case\"rgb(\":e={start:\"rgb(\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\".*?(\\\\.).*(,)\").test(r))throw new Error(\"color expects integers for rgb in rgb/rgba tuple, received \"+r);var t=r.replace(e.start,\"\").replace(\")\",\"\").split(\",\").map(parseFloat);if(t.length!=e.len)throw new Error(\"color expects rgba \"+e.len+\"-tuple, received \"+r);if(e.alpha&&!(0<=t[3]&&t[3]<=1))throw new Error(\"color expects rgba 4-tuple to have alpha value between 0 and 1\");if(a.includes(t.slice(0,3).map(function(r){return 0<=r&&r<=255}),!1))throw new Error(\"color expects rgb to have value between 0 and 255\");return!0}t.is_color=function(r){return n.is_svg_color(r.toLowerCase())||\"#\"==r.substring(0,1)||i(r)},t.rgb2hex=function(r,e,t){return\"#\"+o(255&r)+o(255&e)+o(255&t)},t.color2hex=l,t.color2rgba=function(r,e){if(void 0===e&&(e=1),!r)return[0,0,0,0];var t=l(r);(t=t.replace(/ |#/g,\"\")).length<=4&&(t=t.replace(/(.)/g,\"$1$1\"));for(var n=t.match(/../g).map(function(r){return parseInt(r,16)/255});n.length<3;)n.push(0);return n.length<4&&n.push(e),n.slice(0,4)},t.valid_rgb=i},\n", - " function _(F,e,r){r.svg_colors={indianred:\"#CD5C5C\",lightcoral:\"#F08080\",salmon:\"#FA8072\",darksalmon:\"#E9967A\",lightsalmon:\"#FFA07A\",crimson:\"#DC143C\",red:\"#FF0000\",firebrick:\"#B22222\",darkred:\"#8B0000\",pink:\"#FFC0CB\",lightpink:\"#FFB6C1\",hotpink:\"#FF69B4\",deeppink:\"#FF1493\",mediumvioletred:\"#C71585\",palevioletred:\"#DB7093\",coral:\"#FF7F50\",tomato:\"#FF6347\",orangered:\"#FF4500\",darkorange:\"#FF8C00\",orange:\"#FFA500\",gold:\"#FFD700\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",lemonchiffon:\"#FFFACD\",lightgoldenrodyellow:\"#FAFAD2\",papayawhip:\"#FFEFD5\",moccasin:\"#FFE4B5\",peachpuff:\"#FFDAB9\",palegoldenrod:\"#EEE8AA\",khaki:\"#F0E68C\",darkkhaki:\"#BDB76B\",lavender:\"#E6E6FA\",thistle:\"#D8BFD8\",plum:\"#DDA0DD\",violet:\"#EE82EE\",orchid:\"#DA70D6\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",blueviolet:\"#8A2BE2\",darkviolet:\"#9400D3\",darkorchid:\"#9932CC\",darkmagenta:\"#8B008B\",purple:\"#800080\",indigo:\"#4B0082\",slateblue:\"#6A5ACD\",darkslateblue:\"#483D8B\",mediumslateblue:\"#7B68EE\",greenyellow:\"#ADFF2F\",chartreuse:\"#7FFF00\",lawngreen:\"#7CFC00\",lime:\"#00FF00\",limegreen:\"#32CD32\",palegreen:\"#98FB98\",lightgreen:\"#90EE90\",mediumspringgreen:\"#00FA9A\",springgreen:\"#00FF7F\",mediumseagreen:\"#3CB371\",seagreen:\"#2E8B57\",forestgreen:\"#228B22\",green:\"#008000\",darkgreen:\"#006400\",yellowgreen:\"#9ACD32\",olivedrab:\"#6B8E23\",olive:\"#808000\",darkolivegreen:\"#556B2F\",mediumaquamarine:\"#66CDAA\",darkseagreen:\"#8FBC8F\",lightseagreen:\"#20B2AA\",darkcyan:\"#008B8B\",teal:\"#008080\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",lightcyan:\"#E0FFFF\",paleturquoise:\"#AFEEEE\",aquamarine:\"#7FFFD4\",turquoise:\"#40E0D0\",mediumturquoise:\"#48D1CC\",darkturquoise:\"#00CED1\",cadetblue:\"#5F9EA0\",steelblue:\"#4682B4\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",lightblue:\"#ADD8E6\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",deepskyblue:\"#00BFFF\",dodgerblue:\"#1E90FF\",cornflowerblue:\"#6495ED\",royalblue:\"#4169E1\",blue:\"#0000FF\",mediumblue:\"#0000CD\",darkblue:\"#00008B\",navy:\"#000080\",midnightblue:\"#191970\",cornsilk:\"#FFF8DC\",blanchedalmond:\"#FFEBCD\",bisque:\"#FFE4C4\",navajowhite:\"#FFDEAD\",wheat:\"#F5DEB3\",burlywood:\"#DEB887\",tan:\"#D2B48C\",rosybrown:\"#BC8F8F\",sandybrown:\"#F4A460\",goldenrod:\"#DAA520\",darkgoldenrod:\"#B8860B\",peru:\"#CD853F\",chocolate:\"#D2691E\",saddlebrown:\"#8B4513\",sienna:\"#A0522D\",brown:\"#A52A2A\",maroon:\"#800000\",white:\"#FFFFFF\",snow:\"#FFFAFA\",honeydew:\"#F0FFF0\",mintcream:\"#F5FFFA\",azure:\"#F0FFFF\",aliceblue:\"#F0F8FF\",ghostwhite:\"#F8F8FF\",whitesmoke:\"#F5F5F5\",seashell:\"#FFF5EE\",beige:\"#F5F5DC\",oldlace:\"#FDF5E6\",floralwhite:\"#FFFAF0\",ivory:\"#FFFFF0\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lavenderblush:\"#FFF0F5\",mistyrose:\"#FFE4E1\",gainsboro:\"#DCDCDC\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",silver:\"#C0C0C0\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",gray:\"#808080\",grey:\"#808080\",dimgray:\"#696969\",dimgrey:\"#696969\",lightslategray:\"#778899\",lightslategrey:\"#778899\",slategray:\"#708090\",slategrey:\"#708090\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",black:\"#000000\"},r.is_svg_color=function(F){return F in r.svg_colors}},\n", - " function _(e,n,t){var r=e(113),c=e(110);function o(e,n){return r.__assign(e,n)}function u(e){return Object.keys(e).length}t.keys=Object.keys,t.values=function(e){for(var n=Object.keys(e),t=n.length,r=new Array(t),c=0;c\"'`])/g,function(r){switch(r){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return r}})},e.unescape=function(r){return r.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(r,t){switch(t){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return t}})},e.use_strict=function(r){return\"'use strict';\\n\"+r}},\n", - " function _(e,t,n){var i=function(){function e(){this._dev=!1}return Object.defineProperty(e.prototype,\"dev\",{get:function(){return this._dev},set:function(e){this._dev=e},enumerable:!0,configurable:!0}),e}();n.Settings=i,i.__name__=\"Settings\",n.settings=new i},\n", - " function _(n,o,r){function f(n){for(var o in n)r.hasOwnProperty(o)||(r[o]=n[o])}f(n(130)),f(n(242)),f(n(269)),f(n(273)),f(n(288)),f(n(292)),f(n(298)),f(n(302)),f(n(332)),f(n(335)),f(n(337)),f(n(350)),f(n(217)),f(n(356)),f(n(360)),f(n(383)),f(n(384)),f(n(385)),f(n(386)),f(n(387)),f(n(393)),f(n(395)),f(n(405)),f(n(409))},\n", - " function _(a,e,o){var r=a(131);o.Annotation=r.Annotation;var n=a(168);o.Arrow=n.Arrow;var t=a(169);o.ArrowHead=t.ArrowHead;var v=a(169);o.OpenHead=v.OpenHead;var l=a(169);o.NormalHead=l.NormalHead;var d=a(169);o.TeeHead=d.TeeHead;var i=a(169);o.VeeHead=i.VeeHead;var A=a(200);o.Band=A.Band;var H=a(201);o.BoxAnnotation=H.BoxAnnotation;var T=a(203);o.ColorBar=T.ColorBar;var p=a(227);o.Label=p.Label;var L=a(229);o.LabelSet=L.LabelSet;var b=a(230);o.Legend=b.Legend;var B=a(231);o.LegendItem=B.LegendItem;var S=a(233);o.PolyAnnotation=S.PolyAnnotation;var g=a(234);o.Slope=g.Slope;var m=a(235);o.Span=m.Span;var w=a(228);o.TextAnnotation=w.TextAnnotation;var x=a(236);o.Title=x.Title;var P=a(237);o.ToolbarPanel=P.ToolbarPanel;var h=a(238);o.Tooltip=h.Tooltip;var k=a(241);o.Whisker=k.Whisker},\n", - " function _(t,e,n){var i=t(113),o=t(132),r=t(125),s=t(160),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),Object.defineProperty(e.prototype,\"panel\",{get:function(){return this.layout},enumerable:!0,configurable:!0}),e.prototype.get_size=function(){if(this.model.visible){var t=this._get_size(),e=t.width,n=t.height;return{width:Math.round(e),height:Math.round(n)}}return{width:0,height:0}},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this);var n=this.model.properties;this.on_change(n.visible,function(){return e.plot_view.request_layout()})},e.prototype._get_size=function(){throw new Error(\"not implemented\")},Object.defineProperty(e.prototype,\"ctx\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),e.prototype.set_data=function(t){var e,n,i=this.model.materialize_dataspecs(t);if(r.extend(this,i),this.plot_model.use_map){null!=this._x&&(e=o.project_xy(this._x,this._y),this._x=e[0],this._y=e[1]),null!=this._xs&&(n=o.project_xsys(this._xs,this._ys),this._xs=n[0],this._ys=n[1])}},Object.defineProperty(e.prototype,\"needs_clip\",{get:function(){return null==this.layout},enumerable:!0,configurable:!0}),e.prototype.serializable_state=function(){var e=t.prototype.serializable_state.call(this);return null==this.layout?e:Object.assign(Object.assign({},e),{bbox:this.layout.bbox.box})},e}(s.RendererView);n.AnnotationView=a,a.__name__=\"AnnotationView\";var l=function(t){function e(e){return t.call(this,e)||this}return i.__extends(e,t),e.init_Annotation=function(){this.override({level:\"annotation\"})},e}(s.Renderer);n.Annotation=l,l.__name__=\"Annotation\",l.init_Annotation()},\n", - " function _(r,n,t){var a=r(133),e=r(134),o=new e(\"GOOGLE\"),c=new e(\"WGS84\");t.wgs84_mercator=a(c,o);var i={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},u={lon:[-180,180],lat:[-85.06,85.06]};function l(r,n){for(var a=Math.min(r.length,n.length),e=new Array(a),o=new Array(a),c=0;cu[n][0]&&r-1})}(n)?i(n):function(n){return\"+\"===n[0]}(n)?o(n):void 0:n}},\n", - " function _(r,n,i){var t=r(137),e=r(138),a=r(141);function f(r){var n=this;if(2===arguments.length){var i=arguments[1];\"string\"==typeof i?\"+\"===i.charAt(0)?f[r]=e(arguments[1]):f[r]=a(arguments[1]):f[r]=i}else if(1===arguments.length){if(Array.isArray(r))return r.map(function(r){Array.isArray(r)?f.apply(n,r):f(r)});if(\"string\"==typeof r){if(r in f)return f[r]}else\"EPSG\"in r?f[\"EPSG:\"+r.EPSG]=r:\"ESRI\"in r?f[\"ESRI:\"+r.ESRI]=r:\"IAU2000\"in r?f[\"IAU2000:\"+r.IAU2000]=r:console.log(r);return}}t(f),n.exports=f},\n", - " function _(t,l,G){l.exports=function(t){t(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),t(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),t(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),t.WGS84=t[\"EPSG:4326\"],t[\"EPSG:3785\"]=t[\"EPSG:3857\"],t.GOOGLE=t[\"EPSG:3857\"],t[\"EPSG:900913\"]=t[\"EPSG:3857\"],t[\"EPSG:102113\"]=t[\"EPSG:3857\"]}},\n", - " function _(n,t,o){var a=.017453292519943295,u=n(139),e=n(140);t.exports=function(n){var t,o,r,i={},f=n.split(\"+\").map(function(n){return n.trim()}).filter(function(n){return n}).reduce(function(n,t){var o=t.split(\"=\");return o.push(!0),n[o[0].toLowerCase()]=o[1],n},{}),s={proj:\"projName\",datum:\"datumCode\",rf:function(n){i.rf=parseFloat(n)},lat_0:function(n){i.lat0=n*a},lat_1:function(n){i.lat1=n*a},lat_2:function(n){i.lat2=n*a},lat_ts:function(n){i.lat_ts=n*a},lon_0:function(n){i.long0=n*a},lon_1:function(n){i.long1=n*a},lon_2:function(n){i.long2=n*a},alpha:function(n){i.alpha=parseFloat(n)*a},lonc:function(n){i.longc=n*a},x_0:function(n){i.x0=parseFloat(n)},y_0:function(n){i.y0=parseFloat(n)},k_0:function(n){i.k0=parseFloat(n)},k:function(n){i.k0=parseFloat(n)},a:function(n){i.a=parseFloat(n)},b:function(n){i.b=parseFloat(n)},r_a:function(){i.R_A=!0},zone:function(n){i.zone=parseInt(n,10)},south:function(){i.utmSouth=!0},towgs84:function(n){i.datum_params=n.split(\",\").map(function(n){return parseFloat(n)})},to_meter:function(n){i.to_meter=parseFloat(n)},units:function(n){i.units=n,e[n]&&(i.to_meter=e[n].to_meter)},from_greenwich:function(n){i.from_greenwich=n*a},pm:function(n){i.from_greenwich=(u[n]?u[n]:parseFloat(n))*a},nadgrids:function(n){\"@null\"===n?i.datumCode=\"none\":i.nadgrids=n},axis:function(n){3===n.length&&-1!==\"ewnsud\".indexOf(n.substr(0,1))&&-1!==\"ewnsud\".indexOf(n.substr(1,1))&&-1!==\"ewnsud\".indexOf(n.substr(2,1))&&(i.axis=n)}};for(t in f)o=f[t],t in s?\"function\"==typeof(r=s[t])?r(o):i[r]=o:i[t]=o;return\"string\"==typeof i.datumCode&&\"WGS84\"!==i.datumCode&&(i.datumCode=i.datumCode.toLowerCase()),i}},\n", - " function _(o,r,s){s.greenwich=0,s.lisbon=-9.131906111111,s.paris=2.337229166667,s.bogota=-74.080916666667,s.madrid=-3.687938888889,s.rome=12.452333333333,s.bern=7.439583333333,s.jakarta=106.807719444444,s.ferro=-17.666666666667,s.brussels=4.367975,s.stockholm=18.058277777778,s.athens=23.7163375,s.oslo=10.722916666667},\n", - " function _(t,e,f){f.ft={to_meter:.3048},f[\"us-ft\"]={to_meter:1200/3937}},\n", - " function _(e,a,t){var r=.017453292519943295,n=e(142);function o(e,a,t){e[a]=t.map(function(e){var a={};return l(e,a),a}).reduce(function(e,a){return n(e,a)},{})}function l(e,a){var t;Array.isArray(e)?(\"PARAMETER\"===(t=e.shift())&&(t=e.shift()),1===e.length?Array.isArray(e[0])?(a[t]={},l(e[0],a[t])):a[t]=e[0]:e.length?\"TOWGS84\"===t?a[t]=e:(a[t]={},[\"UNIT\",\"PRIMEM\",\"VERT_DATUM\"].indexOf(t)>-1?(a[t]={name:e[0].toLowerCase(),convert:e[1]},3===e.length&&(a[t].auth=e[2])):\"SPHEROID\"===t?(a[t]={name:e[0],a:e[1],rf:e[2]},4===e.length&&(a[t].auth=e[3])):[\"GEOGCS\",\"GEOCCS\",\"DATUM\",\"VERT_CS\",\"COMPD_CS\",\"LOCAL_CS\",\"FITTED_CS\",\"LOCAL_DATUM\"].indexOf(t)>-1?(e[0]=[\"name\",e[0]],o(a,t,e)):e.every(function(e){return Array.isArray(e)})?o(a,t,e):l(e,a[t])):a[t]=!0):a[e]=!0}function i(e){return e*r}a.exports=function(e,a){var t=JSON.parse((\",\"+e).replace(/\\s*\\,\\s*([A-Z_0-9]+?)(\\[)/g,',[\"$1\",').slice(1).replace(/\\s*\\,\\s*([A-Z_0-9]+?)\\]/g,',\"$1\"]').replace(/,\\[\"VERTCS\".+/,\"\")),r=t.shift(),o=t.shift();t.unshift([\"name\",o]),t.unshift([\"type\",r]),t.unshift(\"output\");var _={};return l(t,_),function(e){function a(a){var t=e.to_meter||1;return parseFloat(a,10)*t}\"GEOGCS\"===e.type?e.projName=\"longlat\":\"LOCAL_CS\"===e.type?(e.projName=\"identity\",e.local=!0):\"object\"==typeof e.PROJECTION?e.projName=Object.keys(e.PROJECTION)[0]:e.projName=e.PROJECTION,e.UNIT&&(e.units=e.UNIT.name.toLowerCase(),\"metre\"===e.units&&(e.units=\"meter\"),e.UNIT.convert&&(\"GEOGCS\"===e.type?e.DATUM&&e.DATUM.SPHEROID&&(e.to_meter=parseFloat(e.UNIT.convert,10)*e.DATUM.SPHEROID.a):e.to_meter=parseFloat(e.UNIT.convert,10))),e.GEOGCS&&(e.GEOGCS.DATUM?e.datumCode=e.GEOGCS.DATUM.name.toLowerCase():e.datumCode=e.GEOGCS.name.toLowerCase(),\"d_\"===e.datumCode.slice(0,2)&&(e.datumCode=e.datumCode.slice(2)),\"new_zealand_geodetic_datum_1949\"!==e.datumCode&&\"new_zealand_1949\"!==e.datumCode||(e.datumCode=\"nzgd49\"),\"wgs_1984\"===e.datumCode&&(\"Mercator_Auxiliary_Sphere\"===e.PROJECTION&&(e.sphere=!0),e.datumCode=\"wgs84\"),\"_ferro\"===e.datumCode.slice(-6)&&(e.datumCode=e.datumCode.slice(0,-6)),\"_jakarta\"===e.datumCode.slice(-8)&&(e.datumCode=e.datumCode.slice(0,-8)),~e.datumCode.indexOf(\"belge\")&&(e.datumCode=\"rnb72\"),e.GEOGCS.DATUM&&e.GEOGCS.DATUM.SPHEROID&&(e.ellps=e.GEOGCS.DATUM.SPHEROID.name.replace(\"_19\",\"\").replace(/[Cc]larke\\_18/,\"clrk\"),\"international\"===e.ellps.toLowerCase().slice(0,13)&&(e.ellps=\"intl\"),e.a=e.GEOGCS.DATUM.SPHEROID.a,e.rf=parseFloat(e.GEOGCS.DATUM.SPHEROID.rf,10)),~e.datumCode.indexOf(\"osgb_1936\")&&(e.datumCode=\"osgb36\")),e.b&&!isFinite(e.b)&&(e.b=e.a),[[\"standard_parallel_1\",\"Standard_Parallel_1\"],[\"standard_parallel_2\",\"Standard_Parallel_2\"],[\"false_easting\",\"False_Easting\"],[\"false_northing\",\"False_Northing\"],[\"central_meridian\",\"Central_Meridian\"],[\"latitude_of_origin\",\"Latitude_Of_Origin\"],[\"latitude_of_origin\",\"Central_Parallel\"],[\"scale_factor\",\"Scale_Factor\"],[\"k0\",\"scale_factor\"],[\"latitude_of_center\",\"Latitude_of_center\"],[\"lat0\",\"latitude_of_center\",i],[\"longitude_of_center\",\"Longitude_Of_Center\"],[\"longc\",\"longitude_of_center\",i],[\"x0\",\"false_easting\",a],[\"y0\",\"false_northing\",a],[\"long0\",\"central_meridian\",i],[\"lat0\",\"latitude_of_origin\",i],[\"lat0\",\"standard_parallel_1\",i],[\"lat1\",\"standard_parallel_1\",i],[\"lat2\",\"standard_parallel_2\",i],[\"alpha\",\"azimuth\",i],[\"srsCode\",\"name\"]].forEach(function(a){return t=e,n=(r=a)[0],o=r[1],void(!(n in t)&&o in t&&(t[n]=t[o],3===r.length&&(t[n]=r[2](t[n]))));var t,r,n,o}),e.long0||!e.longc||\"Albers_Conic_Equal_Area\"!==e.projName&&\"Lambert_Azimuthal_Equal_Area\"!==e.projName||(e.long0=e.longc),e.lat_ts||!e.lat1||\"Stereographic_South_Pole\"!==e.projName&&\"Polar Stereographic (variant B)\"!==e.projName||(e.lat0=i(e.lat1>0?90:-90),e.lat_ts=e.lat1)}(_.output),n(a,_.output)}},\n", - " function _(n,r,i){r.exports=function(n,r){var i,o;if(n=n||{},!r)return n;for(o in r)void 0!==(i=r[o])&&(n[o]=i);return n}},\n", - " function _(n,o,t){var r=[n(144),n(150)],e={},a=[];function i(n,o){var t=a.length;return n.names?(a[t]=n,n.names.forEach(function(n){e[n.toLowerCase()]=t}),this):(console.log(o),!0)}t.add=i,t.get=function(n){if(!n)return!1;var o=n.toLowerCase();return void 0!==e[o]&&a[e[o]]?a[e[o]]:void 0},t.start=function(){r.forEach(i)}},\n", - " function _(t,s,i){var h=t(145),a=Math.PI/2,e=57.29577951308232,r=t(146),n=Math.PI/4,l=t(148),o=t(149);i.init=function(){var t=this.b/this.a;this.es=1-t*t,\"x0\"in this||(this.x0=0),\"y0\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=h(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},i.forward=function(t){var s,i,h=t.x,o=t.y;if(o*e>90&&o*e<-90&&h*e>180&&h*e<-180)return null;if(Math.abs(Math.abs(o)-a)<=1e-10)return null;if(this.sphere)s=this.x0+this.a*this.k0*r(h-this.long0),i=this.y0+this.a*this.k0*Math.log(Math.tan(n+.5*o));else{var M=Math.sin(o),u=l(this.e,o,M);s=this.x0+this.a*this.k0*r(h-this.long0),i=this.y0-this.a*this.k0*Math.log(u)}return t.x=s,t.y=i,t},i.inverse=function(t){var s,i,h=t.x-this.x0,e=t.y-this.y0;if(this.sphere)i=a-2*Math.atan(Math.exp(-e/(this.a*this.k0)));else{var n=Math.exp(-e/(this.a*this.k0));if(-9999===(i=o(this.e,n)))return null}return s=r(this.long0+h/(this.a*this.k0)),t.x=s,t.y=i,t},i.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"]},\n", - " function _(t,n,r){n.exports=function(t,n,r){var o=t*n;return r/Math.sqrt(1-o*o)}},\n", - " function _(t,n,a){var r=2*Math.PI,o=t(147);n.exports=function(t){return Math.abs(t)<=3.14159265359?t:t-o(t)*r}},\n", - " function _(n,t,o){t.exports=function(n){return n<0?-1:1}},\n", - " function _(t,a,n){var r=Math.PI/2;a.exports=function(t,a,n){var o=t*n,h=.5*t;return o=Math.pow((1-o)/(1+o),h),Math.tan(.5*(r-a))/o}},\n", - " function _(a,t,n){var r=Math.PI/2;t.exports=function(a,t){for(var n,h,M=.5*a,o=r-2*Math.atan(t),e=0;e<=15;e++)if(n=a*Math.sin(o),o+=h=r-2*Math.atan(t*Math.pow((1-n)/(1+n),M))-o,Math.abs(h)<=1e-10)return o;return-9999}},\n", - " function _(n,i,t){function e(n){return n}t.init=function(){},t.forward=e,t.inverse=e,t.names=[\"longlat\",\"identity\"]},\n", - " function _(r,e,t){var n=r(152);t.eccentricity=function(r,e,t,n){var a=r*r,c=e*e,f=(a-c)/a,i=0;return n?(a=(r*=1-f*(.16666666666666666+f*(.04722222222222222+.022156084656084655*f)))*r,f=0):i=Math.sqrt(f),{es:f,e:i,ep2:(a-c)/c}},t.sphere=function(r,e,t,a,c){if(!r){var f=n[a];f||(f=n.WGS84),r=f.a,e=f.b,t=f.rf}return t&&!e&&(e=(1-1/t)*r),(0===t||Math.abs(r-e)<1e-10)&&(c=!0,e=r),{a:r,b:e,rf:t,sphere:c}}},\n", - " function _(e,a,l){l.MERIT={a:6378137,rf:298.257,ellipseName:\"MERIT 1983\"},l.SGS85={a:6378136,rf:298.257,ellipseName:\"Soviet Geodetic System 85\"},l.GRS80={a:6378137,rf:298.257222101,ellipseName:\"GRS 1980(IUGG, 1980)\"},l.IAU76={a:6378140,rf:298.257,ellipseName:\"IAU 1976\"},l.airy={a:6377563.396,b:6356256.91,ellipseName:\"Airy 1830\"},l.APL4={a:6378137,rf:298.25,ellipseName:\"Appl. Physics. 1965\"},l.NWL9D={a:6378145,rf:298.25,ellipseName:\"Naval Weapons Lab., 1965\"},l.mod_airy={a:6377340.189,b:6356034.446,ellipseName:\"Modified Airy\"},l.andrae={a:6377104.43,rf:300,ellipseName:\"Andrae 1876 (Den., Iclnd.)\"},l.aust_SA={a:6378160,rf:298.25,ellipseName:\"Australian Natl & S. Amer. 1969\"},l.GRS67={a:6378160,rf:298.247167427,ellipseName:\"GRS 67(IUGG 1967)\"},l.bessel={a:6377397.155,rf:299.1528128,ellipseName:\"Bessel 1841\"},l.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:\"Bessel 1841 (Namibia)\"},l.clrk66={a:6378206.4,b:6356583.8,ellipseName:\"Clarke 1866\"},l.clrk80={a:6378249.145,rf:293.4663,ellipseName:\"Clarke 1880 mod.\"},l.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:\"Clarke 1858\"},l.CPM={a:6375738.7,rf:334.29,ellipseName:\"Comm. des Poids et Mesures 1799\"},l.delmbr={a:6376428,rf:311.5,ellipseName:\"Delambre 1810 (Belgium)\"},l.engelis={a:6378136.05,rf:298.2566,ellipseName:\"Engelis 1985\"},l.evrst30={a:6377276.345,rf:300.8017,ellipseName:\"Everest 1830\"},l.evrst48={a:6377304.063,rf:300.8017,ellipseName:\"Everest 1948\"},l.evrst56={a:6377301.243,rf:300.8017,ellipseName:\"Everest 1956\"},l.evrst69={a:6377295.664,rf:300.8017,ellipseName:\"Everest 1969\"},l.evrstSS={a:6377298.556,rf:300.8017,ellipseName:\"Everest (Sabah & Sarawak)\"},l.fschr60={a:6378166,rf:298.3,ellipseName:\"Fischer (Mercury Datum) 1960\"},l.fschr60m={a:6378155,rf:298.3,ellipseName:\"Fischer 1960\"},l.fschr68={a:6378150,rf:298.3,ellipseName:\"Fischer 1968\"},l.helmert={a:6378200,rf:298.3,ellipseName:\"Helmert 1906\"},l.hough={a:6378270,rf:297,ellipseName:\"Hough\"},l.intl={a:6378388,rf:297,ellipseName:\"International 1909 (Hayford)\"},l.kaula={a:6378163,rf:298.24,ellipseName:\"Kaula 1961\"},l.lerch={a:6378139,rf:298.257,ellipseName:\"Lerch 1979\"},l.mprts={a:6397300,rf:191,ellipseName:\"Maupertius 1738\"},l.new_intl={a:6378157.5,b:6356772.2,ellipseName:\"New International 1967\"},l.plessis={a:6376523,rf:6355863,ellipseName:\"Plessis 1817 (France)\"},l.krass={a:6378245,rf:298.3,ellipseName:\"Krassovsky, 1942\"},l.SEasia={a:6378155,b:6356773.3205,ellipseName:\"Southeast Asia\"},l.walbeck={a:6376896,b:6355834.8467,ellipseName:\"Walbeck\"},l.WGS60={a:6378165,rf:298.3,ellipseName:\"WGS 60\"},l.WGS66={a:6378145,rf:298.25,ellipseName:\"WGS 66\"},l.WGS7={a:6378135,rf:298.26,ellipseName:\"WGS 72\"},l.WGS84={a:6378137,rf:298.257223563,ellipseName:\"WGS 84\"},l.sphere={a:6370997,b:6370997,ellipseName:\"Normal Sphere (r=6370997)\"}},\n", - " function _(e,a,s){s.wgs84={towgs84:\"0,0,0\",ellipse:\"WGS84\",datumName:\"WGS84\"},s.ch1903={towgs84:\"674.374,15.056,405.346\",ellipse:\"bessel\",datumName:\"swiss\"},s.ggrs87={towgs84:\"-199.87,74.79,246.62\",ellipse:\"GRS80\",datumName:\"Greek_Geodetic_Reference_System_1987\"},s.nad83={towgs84:\"0,0,0\",ellipse:\"GRS80\",datumName:\"North_American_Datum_1983\"},s.nad27={nadgrids:\"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",ellipse:\"clrk66\",datumName:\"North_American_Datum_1927\"},s.potsdam={towgs84:\"606.0,23.0,413.0\",ellipse:\"bessel\",datumName:\"Potsdam Rauenberg 1950 DHDN\"},s.carthage={towgs84:\"-263.0,6.0,431.0\",ellipse:\"clark80\",datumName:\"Carthage 1934 Tunisia\"},s.hermannskogel={towgs84:\"653.0,-212.0,449.0\",ellipse:\"bessel\",datumName:\"Hermannskogel\"},s.ire65={towgs84:\"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",ellipse:\"mod_airy\",datumName:\"Ireland 1965\"},s.rassadiran={towgs84:\"-133.63,-157.5,-158.62\",ellipse:\"intl\",datumName:\"Rassadiran\"},s.nzgd49={towgs84:\"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",ellipse:\"intl\",datumName:\"New Zealand Geodetic Datum 1949\"},s.osgb36={towgs84:\"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",ellipse:\"airy\",datumName:\"Airy 1830\"},s.s_jtsk={towgs84:\"589,76,480\",ellipse:\"bessel\",datumName:\"S-JTSK (Ferro)\"},s.beduaram={towgs84:\"-106,-87,188\",ellipse:\"clrk80\",datumName:\"Beduaram\"},s.gunung_segara={towgs84:\"-403,684,41\",ellipse:\"bessel\",datumName:\"Gunung Segara Jakarta\"},s.rnb72={towgs84:\"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",ellipse:\"intl\",datumName:\"Reseau National Belge 1972\"}},\n", - " function _(a,m,t){var p=1,u=2,r=4,_=5,d=484813681109536e-20;m.exports=function(a,m,t,s,e,n){var o={};return o.datum_type=r,a&&\"none\"===a&&(o.datum_type=_),m&&(o.datum_params=m.map(parseFloat),0===o.datum_params[0]&&0===o.datum_params[1]&&0===o.datum_params[2]||(o.datum_type=p),o.datum_params.length>3&&(0===o.datum_params[3]&&0===o.datum_params[4]&&0===o.datum_params[5]&&0===o.datum_params[6]||(o.datum_type=u,o.datum_params[3]*=d,o.datum_params[4]*=d,o.datum_params[5]*=d,o.datum_params[6]=o.datum_params[6]/1e6+1))),o.a=t,o.b=s,o.es=e,o.ep2=n,o}},\n", - " function _(t,e,r){var m=.017453292519943295,a=57.29577951308232,o=1,u=2,n=t(156),d=t(158),y=t(134),_=t(159);e.exports=function t(e,r,x){var i;return Array.isArray(x)&&(x=_(x)),e.datum&&r.datum&&function(t,e){return(t.datum.datum_type===o||t.datum.datum_type===u)&&\"WGS84\"!==e.datumCode||(e.datum.datum_type===o||e.datum.datum_type===u)&&\"WGS84\"!==t.datumCode}(e,r)&&(x=t(e,i=new y(\"WGS84\"),x),e=i),\"enu\"!==e.axis&&(x=d(e,!1,x)),\"longlat\"===e.projName?x={x:x.x*m,y:x.y*m}:(e.to_meter&&(x={x:x.x*e.to_meter,y:x.y*e.to_meter}),x=e.inverse(x)),e.from_greenwich&&(x.x+=e.from_greenwich),x=n(e.datum,r.datum,x),r.from_greenwich&&(x={x:x.x-r.grom_greenwich,y:x.y}),\"longlat\"===r.projName?x={x:x.x*a,y:x.y*a}:(x=r.forward(x),r.to_meter&&(x={x:x.x/r.to_meter,y:x.y/r.to_meter})),\"enu\"!==r.axis?d(r,!0,x):x}},\n", - " function _(t,e,a){var u=1,m=2,o=t(157);function c(t){return t===u||t===m}e.exports=function(t,e,a){return o.compareDatums(t,e)?a:5===t.datum_type||5===e.datum_type?a:t.es!==e.es||t.a!==e.a||c(t.datum_type)||c(e.datum_type)?(a=o.geodeticToGeocentric(a,t.es,t.a),c(t.datum_type)&&(a=o.geocentricToWgs84(a,t.datum_type,t.datum_params)),c(e.datum_type)&&(a=o.geocentricFromWgs84(a,e.datum_type,e.datum_params)),o.geocentricToGeodetic(a,e.es,e.a,e.b)):a}},\n", - " function _(a,t,r){var m=Math.PI/2;r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(this.es-t.es)>5e-11)&&(1===a.datum_type?this.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:2!==a.datum_type||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var s,u,e,n,d=a.x,i=a.y,p=a.z?a.z:0;if(i<-m&&i>-1.001*m)i=-m;else if(i>m&&i<1.001*m)i=m;else if(i<-m||i>m)return null;return d>Math.PI&&(d-=2*Math.PI),u=Math.sin(i),n=Math.cos(i),e=u*u,{x:((s=r/Math.sqrt(1-t*e))+p)*n*Math.cos(d),y:(s+p)*n*Math.sin(d),z:(s*(1-t)+p)*u}},r.geocentricToGeodetic=function(a,t,r,s){var u,e,n,d,i,p,_,h,o,y,c,z,M,x,f,g=a.x,l=a.y,q=a.z?a.z:0;if(u=Math.sqrt(g*g+l*l),e=Math.sqrt(g*g+l*l+q*q),u/r<1e-12){if(x=0,e/r<1e-12)return m,f=-s,{x:a.x,y:a.y,z:a.z}}else x=Math.atan2(l,g);n=q/e,h=(d=u/e)*(1-t)*(i=1/Math.sqrt(1-t*(2-t)*d*d)),o=n*i,M=0;do{M++,p=t*(_=r/Math.sqrt(1-t*o*o))/(_+(f=u*h+q*o-_*(1-t*o*o))),z=(c=n*(i=1/Math.sqrt(1-p*(2-p)*d*d)))*h-(y=d*(1-p)*i)*o,h=y,o=c}while(z*z>1e-24&&M<30);return{x:x,y:Math.atan(c/Math.abs(y)),z:f}},r.geocentricToWgs84=function(a,t,r){if(1===t)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(2===t){var m=r[0],s=r[1],u=r[2],e=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-e*a.z)+s,z:i*(-n*a.x+e*a.y+a.z)+u}}},r.geocentricFromWgs84=function(a,t,r){if(1===t)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(2===t){var m=r[0],s=r[1],u=r[2],e=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,_=(a.y-s)/i,h=(a.z-u)/i;return{x:p+d*_-n*h,y:-d*p+_+e*h,z:n*p-e*_+h}}}},\n", - " function _(e,a,r){a.exports=function(e,a,r){var s,c,i,n=r.x,o=r.y,t=r.z||0,u={};for(i=0;i<3;i++)if(!a||2!==i||void 0!==r.z)switch(0===i?(s=n,c=\"x\"):1===i?(s=o,c=\"y\"):(s=t,c=\"z\"),e.axis[i]){case\"e\":u[c]=s;break;case\"w\":u[c]=-s;break;case\"n\":u[c]=s;break;case\"s\":u[c]=-s;break;case\"u\":void 0!==r[c]&&(u.z=s);break;case\"d\":void 0!==r[c]&&(u.z=-s);break;default:return null}return u}},\n", - " function _(n,t,e){t.exports=function(n){var t={x:n[0],y:n[1]};return n.length>2&&(t.z=n[2]),n.length>3&&(t.m=n[3]),t}},\n", - " function _(e,t,n){var i=e(113),r=e(161),o=e(165),l=e(121),u=e(166),_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.visuals=new o.Visuals(this.model),this._has_finished=!0},Object.defineProperty(t.prototype,\"plot_view\",{get:function(){return this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"plot_model\",{get:function(){return this.parent.model},enumerable:!0,configurable:!0}),t.prototype.request_render=function(){this.plot_view.request_render()},t.prototype.map_to_screen=function(e,t){return this.plot_view.map_to_screen(e,t,this.model.x_range_name,this.model.y_range_name)},Object.defineProperty(t.prototype,\"needs_clip\",{get:function(){return!1},enumerable:!0,configurable:!0}),t.prototype.notify_finished=function(){this.plot_view.notify_finished()},Object.defineProperty(t.prototype,\"has_webgl\",{get:function(){return!1},enumerable:!0,configurable:!0}),t}(r.DOMView);n.RendererView=_,_.__name__=\"RendererView\";var p=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.init_Renderer=function(){this.define({level:[l.RenderLevel],visible:[l.Boolean,!0]})},t}(u.Model);n.Renderer=p,p.__name__=\"Renderer\",p.init_Renderer()},\n", - " function _(e,t,n){var i=e(113),r=e(162),o=e(163),s=e(164),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this._has_finished=!1,this.el=this._createElement()},t.prototype.remove=function(){o.removeElement(this.el),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return[]},t.prototype.cursor=function(e,t){return null},t.prototype.render=function(){},t.prototype.renderTo=function(e){e.appendChild(this.el),this.render()},t.prototype.has_finished=function(){return this._has_finished},Object.defineProperty(t.prototype,\"_root_element\",{get:function(){return o.parent(this.el,\".\"+s.bk_root)||document.body},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"is_idle\",{get:function(){return this.has_finished()},enumerable:!0,configurable:!0}),t.prototype._createElement=function(){return o.createElement(this.tagName,{class:this.css_classes()})},t}(r.View);n.DOMView=p,p.__name__=\"DOMView\",p.prototype.tagName=\"div\"},\n", - " function _(t,e,n){var o=t(113),i=t(116),r=t(109),a=t(127),s=function(t){function e(e){var n=t.call(this)||this;if(n.removed=new i.Signal0(n,\"removed\"),null==e.model)throw new Error(\"model of a view wasn't configured\");return n.model=e.model,n._parent=e.parent,n.id=e.id||a.uniqueId(),n.initialize(),!1!==e.connect_signals&&n.connect_signals(),n}return o.__extends(e,t),e.prototype.initialize=function(){},e.prototype.remove=function(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()},e.prototype.toString=function(){return this.model.type+\"View(\"+this.id+\")\"},e.prototype.serializable_state=function(){return{type:this.model.type}},Object.defineProperty(e.prototype,\"parent\",{get:function(){if(void 0!==this._parent)return this._parent;throw new Error(\"parent of a view wasn't configured\")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"is_root\",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"root\",{get:function(){return this.is_root?this:this.parent.root},enumerable:!0,configurable:!0}),e.prototype.assert_root=function(){if(!this.is_root)throw new Error(this.toString()+\" is not a root layout\")},e.prototype.connect_signals=function(){},e.prototype.disconnect_signals=function(){i.Signal.disconnectReceiver(this)},e.prototype.on_change=function(t,e){for(var n=0,o=r.isArray(t)?t:[t];n\":case\"vertical_wave\":_.moveTo(n,0),_.lineTo(3*n,c),_.lineTo(n,l),_.stroke();break;case\"*\":case\"criss_cross\":h(_,l),o(_,l,c),s(_,l,c)}return r}var r=function(){function e(e,t){void 0===t&&(t=\"\"),this.obj=e,this.prefix=t,this.cache={};for(var a=0,i=this.attrs;a0){var n=t[l];return null==n&&(t[l]=n=new e(l,o)),n}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")},Object.defineProperty(e.prototype,\"level\",{get:function(){return this.get_level()},enumerable:!0,configurable:!0}),e.prototype.get_level=function(){return this._log_level},e.prototype.set_level=function(l){if(l instanceof r)this._log_level=l;else{if(!n.isString(l)||null==e.log_levels[l])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=e.log_levels[l]}var o=\"[\"+this._name+\"]\";for(var t in e.log_levels){e.log_levels[t].levele?a.slice(-e):a}if(l.isTypedArray(t)){var i=t.length+n.length;if(null!=e&&i>e){var r=i-e,o=t.length;a=void 0;t.length0?this.selected_glyphs[0]:null},enumerable:!0,configurable:!0}),e.prototype.add_to_selected_glyphs=function(i){this.selected_glyphs.push(i)},e.prototype.update=function(i,e,t){this.final=e,t?this.update_through_union(i):(this.indices=i.indices,this.line_indices=i.line_indices,this.selected_glyphs=i.selected_glyphs,this.get_view=i.get_view,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices)},e.prototype.clear=function(){this.final=!0,this.indices=[],this.line_indices=[],this.multiline_indices={},this.get_view=function(){return null},this.selected_glyphs=[]},e.prototype.is_empty=function(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length},e.prototype.update_through_union=function(i){this.indices=l.union(i.indices,this.indices),this.selected_glyphs=l.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=l.union(i.line_indices,this.line_indices),this.get_view()||(this.get_view=i.get_view),this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)},e.prototype.update_through_intersection=function(i){this.indices=l.intersection(i.indices,this.indices),this.selected_glyphs=l.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=l.union(i.line_indices,this.line_indices),this.get_view()||(this.get_view=i.get_view),this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)},e}(s.Model);t.Selection=d,d.__name__=\"Selection\",d.init_Selection()},\n", - " function _(e,t,i){var n=e(113),o=e(115),r=e(173),s=e(175),c=e(192),l=e(121),p=function(e){function t(t){var i=e.call(this,t)||this;return i.inspectors={},i}return n.__extends(t,e),t.init_SelectionManager=function(){this.internal({source:[l.Any]})},t.prototype.select=function(e,t,i,n){void 0===n&&(n=!1);for(var o=[],r=[],l=0,p=e;l0){d=this.source.selection_policy.hit_test(t,o);a=a||this.source.selection_policy.do_selection(d,this.source,i,n)}return a},t.prototype.inspect=function(e,t){var i=!1;if(e instanceof s.GlyphRendererView){if(null!=(o=e.hit_test(t))){i=!o.is_empty();var n=this.get_or_create_inspector(e.model);n.update(o,!0,!1),this.source.setv({inspected:n},{silent:!0}),this.source.inspect.emit([e,{geometry:t}])}}else if(e instanceof c.GraphRendererView){var o=e.model.inspection_policy.hit_test(t,e);i=i||e.model.inspection_policy.do_inspection(o,t,e,!1,!1)}return i},t.prototype.clear=function(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()},t.prototype.get_or_create_inspector=function(e){return null==this.inspectors[e.id]&&(this.inspectors[e.id]=new r.Selection),this.inspectors[e.id]},t}(o.HasProps);i.SelectionManager=p,p.__name__=\"SelectionManager\",p.init_SelectionManager()},\n", - " function _(e,t,i){var n=e(113),l=e(176),s=e(177),h=e(187),r=e(188),o=e(190),a=e(191),d=e(167),c=e(121),_=e(114),p=e(110),u=e(125),g=e(184),y={fill:{},line:{}},m={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},v={fill:{fill_alpha:.2},line:{}},f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.model.glyph,i=p.includes(t.mixins,\"fill\"),n=p.includes(t.mixins,\"line\"),l=u.clone(t.attributes);function s(e){var s=u.clone(l);return i&&u.extend(s,e.fill),n&&u.extend(s,e.line),new t.constructor(s)}delete l.id,this.glyph=this.build_glyph_view(t);var h=this.model.selection_glyph;null==h?h=s({fill:{},line:{}}):\"auto\"===h&&(h=s(y)),this.selection_glyph=this.build_glyph_view(h);var r=this.model.nonselection_glyph;null==r?r=s({fill:{},line:{}}):\"auto\"===r&&(r=s(v)),this.nonselection_glyph=this.build_glyph_view(r);var o=this.model.hover_glyph;null!=o&&(this.hover_glyph=this.build_glyph_view(o));var a=this.model.muted_glyph;null!=a&&(this.muted_glyph=this.build_glyph_view(a));var d=s(m);this.decimated_glyph=this.build_glyph_view(d),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(e){return new e.default_view({model:e,parent:this})},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()}),this.connect(this.model.glyph.change,function(){return t.set_data()}),this.connect(this.model.data_source.change,function(){return t.set_data()}),this.connect(this.model.data_source.streaming,function(){return t.set_data()}),this.connect(this.model.data_source.patching,function(e){return t.set_data(!0,e)}),this.connect(this.model.data_source.selected.change,function(){return t.request_render()}),this.connect(this.model.data_source._select,function(){return t.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return t.request_render()}),this.connect(this.model.properties.view.change,function(){return t.set_data()}),this.connect(this.model.view.change,function(){return t.set_data()}),this.connect(this.model.properties.visible.change,function(){return t.plot_view.update_dataranges()});var i=this.plot_view.frame,n=i.x_ranges,l=i.y_ranges;for(var s in n){(h=n[s])instanceof g.FactorRange&&this.connect(h.change,function(){return t.set_data()})}for(var s in l){var h;(h=l[s])instanceof g.FactorRange&&this.connect(h.change,function(){return t.set_data()})}this.connect(this.model.glyph.transformchange,function(){return t.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,t),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var l=this.plot_model.lod_factor;this.decimated=[];for(var s=0,h=Math.floor(this.all_indices.length/l);s0?w[\"1d\"].indices:_.map(Object.keys(w[\"2d\"].indices),function(e){return parseInt(e)})),x=_.filter(a,function(t){return b.has(e.all_indices[t])}),D=this.plot_model.lod_threshold;null!=this.model.document&&this.model.document.interactive_duration()>0&&!i&&null!=D&&this.all_indices.length>D?(a=this.decimated,m=this.decimated_glyph,v=this.decimated_glyph,f=this.selection_glyph):(m=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,v=this.nonselection_glyph,f=this.selection_glyph),null!=this.hover_glyph&&x.length&&(a=p.difference(a,x));var R,V=null;if(g.length&&this.have_selection_glyphs()){for(var G=Date.now(),A={},I=0,q=g;I1&&(t.stroke(),r=!1)}r?t.lineTo(n[l],s[l]):(t.beginPath(),t.moveTo(n[l],s[l]),r=!0),_=l}r&&t.stroke()},e.prototype._hit_point=function(t){for(var e=this,i=_.create_empty_hit_test_result(),n={x:t.sx,y:t.sy},s=9999,r=Math.max(2,this.visuals.line.line_width.value()/2),o=0,h=this.sx.length-1;o0){this.index=new e(n.length);for(var t=0,i=n;to&&(e=(t=[o,e])[0],o=t[1]),r>a&&(r=(i=[a,r])[0],a=i[1]),{x0:e,y0:r,x1:o,y1:a}},Object.defineProperty(n.prototype,\"bbox\",{get:function(){if(null==this.index)return r.empty();var n=this.index;return{x0:n.minX,y0:n.minY,x1:n.maxX,y1:n.maxY}},enumerable:!0,configurable:!0}),n.prototype.search=function(n){var t=this;if(null==this.index)return[];var i=this._normalize(n),e=i.x0,r=i.y0,o=i.x1,a=i.y1;return this.index.search(e,r,o,a).map(function(n){return t.points[n]})},n.prototype.indices=function(n){return this.search(n).map(function(n){return n.i})},n}();i.SpatialIndex=o,o.__name__=\"SpatialIndex\"},\n", - " function _(t,s,i){var e,h;e=this,h=function(){\"use strict\";var t=function(){this.ids=[],this.values=[],this.length=0};t.prototype.clear=function(){this.length=this.ids.length=this.values.length=0},t.prototype.push=function(t,s){this.ids.push(t),this.values.push(s);for(var i=this.length++;i>0;){var e=i-1>>1,h=this.values[e];if(s>=h)break;this.ids[i]=this.ids[e],this.values[i]=h,i=e}this.ids[i]=t,this.values[i]=s},t.prototype.pop=function(){if(0!==this.length){var t=this.ids[0];if(this.length--,this.length>0){for(var s=this.ids[0]=this.ids[this.length],i=this.values[0]=this.values[this.length],e=this.length>>1,h=0;h=i)break;this.ids[h]=o,this.values[h]=a,h=r}this.ids[h]=s,this.values[h]=i}return this.ids.pop(),this.values.pop(),t}},t.prototype.peek=function(){return this.ids[0]},t.prototype.peekValue=function(){return this.values[0]};var s=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],i=function(i,e,h,r){if(void 0===e&&(e=16),void 0===h&&(h=Float64Array),void 0===i)throw new Error(\"Missing required argument: numItems.\");if(isNaN(i)||i<=0)throw new Error(\"Unpexpected numItems value: \"+i+\".\");this.numItems=+i,this.nodeSize=Math.min(Math.max(+e,2),65535);var n=i,o=n;this._levelBounds=[4*n];do{o+=n=Math.ceil(n/this.nodeSize),this._levelBounds.push(4*o)}while(1!==n);this.ArrayType=h||Float64Array,this.IndexArrayType=o<16384?Uint16Array:Uint32Array;var a=s.indexOf(this.ArrayType),u=4*o*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(\"Unexpected typed array class: \"+h+\".\");r&&r instanceof ArrayBuffer?(this.data=r,this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+u,o),this._pos=4*o,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+u+o*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+u,o),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=i),this._queue=new t};function e(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function r(t,s,i,e,h){var r=t[e];t[e]=t[h],t[h]=r;var n=4*e,o=4*h,a=s[n],u=s[n+1],p=s[n+2],d=s[n+3];s[n]=s[o],s[n+1]=s[o+1],s[n+2]=s[o+2],s[n+3]=s[o+3],s[o]=a,s[o+1]=u,s[o+2]=p,s[o+3]=d;var _=i[e];i[e]=i[h],i[h]=_}function n(t,s){var i=t^s,e=65535^i,h=65535^(t|s),r=t&(65535^s),n=i|e>>1,o=i>>1^i,a=h>>1^e&r>>1^h,u=i&h>>1^r>>1^r;o=(i=n)&(e=o)>>2^e&(i^e)>>2,a^=i&(h=a)>>2^e&(r=u)>>2,u^=e&h>>2^(i^e)&r>>2,o=(i=n=i&i>>2^e&e>>2)&(e=o)>>4^e&(i^e)>>4,a^=i&(h=a)>>4^e&(r=u)>>4,u^=e&h>>4^(i^e)&r>>4,a^=(i=n=i&i>>4^e&e>>4)&(h=a)>>8^(e=o)&(r=u)>>8;var p=t^s,d=(e=(u^=e&h>>8^(i^e)&r>>8)^u>>1)|65535^(p|(i=a^a>>1));return((d=1431655765&((d=858993459&((d=252645135&((d=16711935&(d|d<<8))|d<<4))|d<<2))|d<<1))<<1|(p=1431655765&((p=858993459&((p=252645135&((p=16711935&(p|p<<8))|p<<4))|p<<2))|p<<1)))>>>0}return i.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");var e=new Uint8Array(t,0,2),h=e[0],r=e[1];if(251!==h)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(r>>4!=3)throw new Error(\"Got v\"+(r>>4)+\" data when expected v3.\");var n=new Uint16Array(t,2,1)[0],o=new Uint32Array(t,4,1)[0];return new i(o,n,s[15&r],t)},i.prototype.add=function(t,s,i,e){var h=this._pos>>2;this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e)},i.prototype.finish=function(){if(this._pos>>2!==this.numItems)throw new Error(\"Added \"+(this._pos>>2)+\" items when expected \"+this.numItems+\".\");for(var t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems),e=0;e=n)return;var o=s[h+n>>1];var a=h-1;var u=n+1;for(;;){do{a++}while(s[a]o);if(a>=u)break;r(s,i,e,a,u)}t(s,i,e,h,u);t(s,i,e,u+1,n)}(i,this._boxes,this._indices,0,this.numItems-1);for(var f=0,l=0;fm&&(m=E),I>c&&(c=I)}this._indices[this._pos>>2]=b,this._boxes[this._pos++]=x,this._boxes[this._pos++]=y,this._boxes[this._pos++]=m,this._boxes[this._pos++]=c}},i.prototype.search=function(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");for(var r=this._boxes.length-4,n=this._levelBounds.length-1,o=[],a=[];void 0!==r;){for(var u=Math.min(r+4*this.nodeSize,this._levelBounds[n]),p=r;p>2];ithis._boxes[p+2]||s>this._boxes[p+3]||(r<4*this.numItems?(void 0===h||h(d))&&a.push(d):(o.push(d),o.push(n-1))))}n=o.pop(),r=o.pop()}return a},i.prototype.neighbors=function(t,s,i,r,n){if(void 0===i&&(i=1/0),void 0===r&&(r=1/0),this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");for(var o=this._boxes.length-4,a=this._queue,u=[],p=r*r;void 0!==o;){for(var d=Math.min(o+4*this.nodeSize,h(o,this._levelBounds)),_=o;_>2],l=e(t,this._boxes[_],this._boxes[_+2]),v=e(s,this._boxes[_+1],this._boxes[_+3]),x=l*l+v*v;o<4*this.numItems?(void 0===n||n(f))&&a.push(-f-1,x):a.push(f,x)}for(;a.length&&a.peek()<0;){if(a.peekValue()>p)return a.clear(),u;if(u.push(-a.pop()-1),u.length===i)return a.clear(),u}o=a.pop()}return a.clear(),u},i},\"object\"==typeof i&&void 0!==s?s.exports=h():\"function\"==typeof define&&define.amd?define(h):(e=e||self).Flatbush=h()},\n", - " function _(t,e,r){var i=Math.min,n=Math.max;r.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},r.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},r.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},r.union=function(t,e){return{x0:i(t.x0,e.x0),x1:n(t.x1,e.x1),y0:i(t.y0,e.y0),y1:n(t.y1,e.y1)}};var o=function(){function t(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){var e=t.x0,r=t.y0,i=t.x1,n=t.y1;if(!(e<=i&&r<=n))throw new Error(\"invalid bbox {x0: \"+e+\", y0: \"+r+\", x1: \"+i+\", y1: \"+n+\"}\");this.x0=e,this.y0=r,this.x1=i,this.y1=n}else if(\"x\"in t){var o=t.x,h=t.y,u=t.width,y=t.height;if(!(u>=0&&y>=0))throw new Error(\"invalid bbox {x: \"+o+\", y: \"+h+\", width: \"+u+\", height: \"+y+\"}\");this.x0=o,this.y0=h,this.x1=o+u,this.y1=h+y}else{var f=void 0,s=void 0,c=void 0,p=void 0;if(\"width\"in t)if(\"left\"in t)s=(f=t.left)+t.width;else if(\"right\"in t)f=(s=t.right)-t.width;else{var b=t.width/2;f=t.hcenter-b,s=t.hcenter+b}else f=t.left,s=t.right;if(\"height\"in t)if(\"top\"in t)p=(c=t.top)+t.height;else if(\"bottom\"in t)c=(p=t.bottom)-t.height;else{var a=t.height/2;c=t.vcenter-a,p=t.vcenter+a}else c=t.top,p=t.bottom;if(!(f<=s&&c<=p))throw new Error(\"invalid bbox {left: \"+f+\", top: \"+c+\", right: \"+s+\", bottom: \"+p+\"}\");this.x0=f,this.y0=c,this.x1=s,this.y1=p}}return t.prototype.toString=function(){return\"BBox({left: \"+this.left+\", top: \"+this.top+\", width: \"+this.width+\", height: \"+this.height+\"})\"},Object.defineProperty(t.prototype,\"left\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"top\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"right\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"bottom\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"p0\",{get:function(){return[this.x0,this.y0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"p1\",{get:function(){return[this.x1,this.y1]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"x\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"y\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"width\",{get:function(){return this.x1-this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"height\",{get:function(){return this.y1-this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"rect\",{get:function(){return{x0:this.x0,y0:this.y0,x1:this.x1,y1:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"box\",{get:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"h_range\",{get:function(){return{start:this.x0,end:this.x1}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"v_range\",{get:function(){return{start:this.y0,end:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"ranges\",{get:function(){return[this.h_range,this.v_range]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"aspect\",{get:function(){return this.width/this.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"hcenter\",{get:function(){return(this.left+this.right)/2},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"vcenter\",{get:function(){return(this.top+this.bottom)/2},enumerable:!0,configurable:!0}),t.prototype.contains=function(t,e){return t>=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},t.prototype.clip=function(t,e){return tthis.x1&&(t=this.x1),ethis.y1&&(e=this.y1),[t,e]},t.prototype.union=function(e){return new t({x0:i(this.x0,e.x0),y0:i(this.y0,e.y0),x1:n(this.x1,e.x1),y1:n(this.y1,e.y1)})},t.prototype.equals=function(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1},Object.defineProperty(t.prototype,\"xview\",{get:function(){var t=this;return{compute:function(e){return t.left+e},v_compute:function(e){for(var r=new Float64Array(e.length),i=t.left,n=0;nt.x1&&(t.x1=n.x1)}for(var r=0,s=this.index.search(o.positive_y());rt.y1&&(t.y1=a.y1)}return this._bounds(t)},i.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\"center\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},i.prototype.sdist=function(t,e,i,n,r){var s,o;void 0===n&&(n=\"edge\"),void 0===r&&(r=!1);var a=e.length;if(\"center\"==n){var h=c.map(i,function(t){return t/2});s=new Float64Array(a);for(var _=0;_1?r:{x:n.x+i*(r.x-n.x),y:n.y+i*(r.y-n.y)})}r.point_in_poly=function(t,n,r,e){for(var i=!1,o=r[r.length-1],u=e[e.length-1],a=0;a0&&_<1&&h>0&&h<1,x:t+_*(r-t),y:n+_*(e-n)}}},\n", - " function _(t,n,r){var e=t(113),i=t(185),a=t(121),s=t(114),o=t(110),p=t(109);function u(t,n,r){void 0===r&&(r=0);for(var e={},i=0;ithis.end},enumerable:!0,configurable:!0}),n}(a.Model);e.Range=r,r.__name__=\"Range\",r.init_Range()},\n", - " function _(e,t,i){var n=e(183);i.generic_line_legend=function(e,t,i,n){var r=i.x0,a=i.x1,l=i.y0,c=i.y1;t.save(),t.beginPath(),t.moveTo(r,(l+c)/2),t.lineTo(a,(l+c)/2),e.line.doit&&(e.line.set_vectorize(t,n),t.stroke()),t.restore()},i.generic_area_legend=function(e,t,i,n){var r=i.x0,a=i.x1,l=i.y0,c=i.y1,o=.1*Math.abs(a-r),s=.1*Math.abs(c-l),_=r+o,v=a-o,h=l+s,x=c-s;e.fill.doit&&(e.fill.set_vectorize(t,n),t.fillRect(_,h,v-_,x-h)),null!=e.hatch&&e.hatch.doit&&(e.hatch.set_vectorize(t,n),t.fillRect(_,h,v-_,x-h)),e.line&&e.line.doit&&(t.beginPath(),t.rect(_,h,v-_,x-h),e.line.set_vectorize(t,n),t.stroke())},i.line_interpolation=function(e,t,i,r,a,l){var c,o,s,_,v,h,x,y,f,d,g=t.sx,m=t.sy;\"point\"==t.type?(f=(c=e.yscale.r_invert(m-1,m+1))[0],d=c[1],x=(o=e.xscale.r_invert(g-1,g+1))[0],y=o[1]):\"v\"==t.direction?(f=(s=e.yscale.r_invert(m,m))[0],d=s[1],x=(_=[Math.min(i-1,a-1),Math.max(i+1,a+1)])[0],y=_[1]):(x=(v=e.xscale.r_invert(g,g))[0],y=v[1],f=(h=[Math.min(r-1,l-1),Math.max(r+1,l+1)])[0],d=h[1]);var u=n.check_2_segments_intersect(x,f,y,d,i,r,a,l);return[u.x,u.y]}},\n", - " function _(t,i,e){var n=t(113),s=t(178),l=t(186),o=t(183),r=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(i,t),i.prototype._inner_loop=function(t,i,e,n,s){for(var l=0,o=i;l=0;s--)t.lineTo(i[s],n[s]);t.closePath(),r.call(t)},e.prototype._render=function(t,e,i){var n=this,r=i.sx1,s=i.sx2,o=i.sy;this.visuals.fill.doit&&(this.visuals.fill.set_value(t),this._inner(t,r,s,o,t.fill)),this.visuals.hatch.doit2(t,0,function(){return n._inner(t,r,s,o,t.fill)},function(){return n.renderer.request_render()})},e.prototype._hit_point=function(t){for(var e=this,i=o.create_empty_hit_test_result(),n=this.sy.length,r=new Float64Array(2*n),s=new Float64Array(2*n),a=0,h=n;a=0;s--)t.lineTo(e[s],n[s]);t.closePath(),r.call(t)},e.prototype._render=function(t,e,i){var n=this,r=i.sx,s=i.sy1,o=i.sy2;this.visuals.fill.doit&&(this.visuals.fill.set_value(t),this._inner(t,r,s,o,t.fill)),this.visuals.hatch.doit2(t,0,function(){return n._inner(t,r,s,o,t.fill)},function(){return n.renderer.request_render()})},e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return(this.sy1[t]+this.sy2[t])/2},e.prototype._hit_point=function(t){for(var e=this,i=o.create_empty_hit_test_result(),n=this.sx.length,r=new Float64Array(2*n),s=new Float64Array(2*n),a=0,h=n;a0?this.indices=r.intersection.apply(this,n):this.source instanceof u.ColumnarDataSource&&(this.indices=this.source.get_indices()),this.indices_map_to_subset()},n.prototype.indices_map_to_subset=function(){this.indices_map={};for(var i=0;i0){for(var l=n[0],o=0,_=n;o<_.length;o++){var s=_[o];l.update_through_intersection(s)}return l}return null},e}(u);n.IntersectRenderers=i,i.__name__=\"IntersectRenderers\";var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.hit_test=function(t,e){for(var n=[],r=0,u=e;r0){for(var l=n[0],o=0,_=n;o<_.length;o++){var s=_[o];l.update_through_union(s)}return l}return null},e}(u);n.UnionRenderers=l,l.__name__=\"UnionRenderers\"},\n", - " function _(r,n,t){var a=r(109),e=r(197);function i(r){for(var n=new Uint8Array(r.buffer,r.byteOffset,2*r.length),t=0,a=n.length;t=0||r.indexOf(\"Trident\")>0||r.indexOf(\"Edge\")>0,e.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),e.is_little_endian=function(){var n=new ArrayBuffer(4),i=new Uint8Array(n);new Uint32Array(n)[1]=168496141;var e=!0;return 10==i[4]&&11==i[5]&&12==i[6]&&13==i[7]&&(e=!1),e}()},\n", - " function _(n,t,r){r.concat=function(n){for(var t=[],r=1;r=0;t--)e.lineTo(this._upper_sx[t],this._upper_sy[t]);e.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(e),e.fill()),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(t=0,i=this._lower_sx.length;tthis.sleft&&tthis.stop&&is||(d[r].push(h[p]),d[a].push(0));for(p=0,f=m.length;ps||(c[r].push(m[p]),c[a].push(0));var g={major:this._format_major_labels(d[r],h)},v={major:[[],[]],minor:[[],[]]};return v.major[r]=i.v_compute(d[r]),v.minor[r]=i.v_compute(c[r]),v.major[a]=d[a],v.minor[a]=c[a],\"vertical\"==this.model.orientation&&(v.major[r]=u.map(v.major[r],function(e){return t-e}),v.minor[r]=u.map(v.minor[r],function(e){return t-e})),{coords:v,labels:g}},e}(r.AnnotationView);i.ColorBarView=g,g.__name__=\"ColorBarView\";var v=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.init_ColorBar=function(){this.prototype.default_view=g,this.mixins([\"text:major_label_\",\"text:title_\",\"line:major_tick_\",\"line:minor_tick_\",\"line:border_\",\"line:bar_\",\"fill:background_\"]),this.define({location:[m.Any,\"top_right\"],orientation:[m.Orientation,\"vertical\"],title:[m.String],title_standoff:[m.Number,2],width:[m.Any,\"auto\"],height:[m.Any,\"auto\"],scale_alpha:[m.Number,1],ticker:[m.Instance,function(){return new a.BasicTicker}],formatter:[m.Instance,function(){return new n.BasicTickFormatter}],major_label_overrides:[m.Any,{}],color_mapper:[m.Instance],label_standoff:[m.Number,5],margin:[m.Number,30],padding:[m.Number,10],major_tick_in:[m.Number,5],major_tick_out:[m.Number,0],minor_tick_in:[m.Number,0],minor_tick_out:[m.Number,0]}),this.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\"center\",major_label_text_baseline:\"middle\",major_label_text_font_size:\"8pt\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"10pt\",title_text_font_style:\"italic\"})},e}(r.Annotation);i.ColorBar=v,v.__name__=\"ColorBar\",v.init_ColorBar()},\n", - " function _(i,n,c){var e=i(113),t=function(i){function n(n){return i.call(this,n)||this}return e.__extends(n,i),n}(i(205).AdaptiveTicker);c.BasicTicker=t,t.__name__=\"BasicTicker\"},\n", - " function _(t,i,a){var e=t(113),n=t(206),s=t(110),r=t(121);var h=function(t){function i(i){return t.call(this,i)||this}return e.__extends(i,t),i.init_AdaptiveTicker=function(){this.define({base:[r.Number,10],mantissas:[r.Array,[1,2,5]],min_interval:[r.Number,0],max_interval:[r.Number]})},i.prototype.initialize=function(){t.prototype.initialize.call(this);var i=s.nth(this.mantissas,-1)/this.base,a=s.nth(this.mantissas,0)*this.base;this.extended_mantissas=e.__spreadArrays([i],this.mantissas,[a]),this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()},i.prototype.get_interval=function(t,i,a){var e,n,r=i-t,h=this.get_ideal_interval(t,i,a),_=Math.floor((e=h/this.base_factor,void 0===(n=this.base)&&(n=Math.E),Math.log(e)/Math.log(n))),o=Math.pow(this.base,_)*this.base_factor,m=this.extended_mantissas,c=m.map(function(t){return Math.abs(a-r/(t*o))});return function(t,i,a){return Math.max(i,Math.min(a,t))}(m[s.argmin(c)]*o,this.get_min_interval(),this.get_max_interval())},i}(n.ContinuousTicker);a.AdaptiveTicker=h,h.__name__=\"AdaptiveTicker\",h.init_AdaptiveTicker()},\n", - " function _(t,n,i){var r=t(113),e=t(207),o=t(121),u=t(110),_=t(109),s=function(t){function n(n){return t.call(this,n)||this}return r.__extends(n,t),n.init_ContinuousTicker=function(){this.define({num_minor_ticks:[o.Number,5],desired_num_ticks:[o.Number,6]})},n.prototype.get_ticks=function(t,n,i,r,e){return this.get_ticks_no_defaults(t,n,r,this.desired_num_ticks)},n.prototype.get_ticks_no_defaults=function(t,n,i,r){var e=this.get_interval(t,n,r),o=Math.floor(t/e),s=Math.ceil(n/e),a=(_.isStrictNaN(o)||_.isStrictNaN(s)?[]:u.range(o,s+1)).map(function(t){return t*e}).filter(function(i){return t<=i&&i<=n}),c=this.num_minor_ticks,l=[];if(c>0&&a.length>0){for(var f=e/c,h=u.range(0,c).map(function(t){return t*f}),m=0,p=h.slice(1);m=2&&(t=Math.abs(i[1]-i[0])/1e4);var r=!1;if(this.use_scientific)for(var n=0,o=i;nt&&(l>=this.scientific_limit_high||l<=this.scientific_limit_low)){r=!0;break}}var s=new Array(i.length),f=this.precision;if(null==f||a.isNumber(f))if(r)for(var h=0,_=i.length;h<_;h++)s[h]=i[h].toExponential(f||void 0);else for(h=0,_=i.length;h<_;h++)s[h]=i[h].toFixed(f||void 0).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\");else for(var p=this.last_precision,u=this.last_precision<=15;u?p<=15:p>=15;u?p++:p--){var m=!0;if(r){for(h=0,_=i.length;h<_;h++)if(s[h]=i[h].toExponential(p),h>0&&s[h]===s[h-1]){m=!1;break}if(m)break}else{for(h=0,_=i.length;h<_;h++)if(s[h]=i[h].toFixed(p).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\"),h>0&&s[h]==s[h-1]){m=!1;break}if(m)break}if(m){this.last_precision=p;break}}return s},e}(n.TickFormatter);t.BasicTickFormatter=c,c.__name__=\"BasicTickFormatter\",c.init_BasicTickFormatter()},\n", - " function _(t,n,r){var e=t(113),i=function(t){function n(n){return t.call(this,n)||this}return e.__extends(n,t),n}(t(166).Model);r.TickFormatter=i,i.__name__=\"TickFormatter\"},\n", - " function _(o,n,l){var r=o(113),t=o(211),i=o(114),e=function(o){function n(n){return o.call(this,n)||this}return r.__extends(n,o),n.prototype._v_compute=function(o,n,l,r){for(var t=r.nan_color,e=r.low_color,h=r.high_color,a=null!=this.low?this.low:i.min(o),u=null!=this.high?this.high:i.max(o),_=l.length-1,s=1/(u-a),c=1/l.length,p=0,f=o.length;p_?null!=h?h:l[_]:l[m]}else n[p]=l[_]}},n}(t.ContinuousColorMapper);l.LinearColorMapper=e,e.__name__=\"LinearColorMapper\"},\n", - " function _(o,r,i){var l=o(113),n=o(212),t=o(121),u=function(o){function r(r){return o.call(this,r)||this}return l.__extends(r,o),r.init_ContinuousColorMapper=function(){this.define({high:[t.Number],low:[t.Number],high_color:[t.Color],low_color:[t.Color]})},r.prototype._colors=function(r){return Object.assign(Object.assign({},o.prototype._colors.call(this,r)),{low_color:null!=this.low_color?r(this.low_color):void 0,high_color:null!=this.high_color?r(this.high_color):void 0})},r}(n.ColorMapper);i.ContinuousColorMapper=u,u.__name__=\"ContinuousColorMapper\",u.init_ContinuousColorMapper()},\n", - " function _(t,r,n){var e=t(113),o=t(213),i=t(121),a=t(109),u=t(123),_=t(197);function c(t){return a.isNumber(t)?t:(\"#\"!=t[0]&&(t=u.color2hex(t)),9!=t.length&&(t+=\"ff\"),parseInt(t.slice(1),16))}function l(t){for(var r=new Uint32Array(t.length),n=0,e=t.length;nr.x?-1:t.x==r.x?0:1}):o.sort(function(t,r){return t.xthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];var r=s.find_last_index(this._x_sorted,function(r){return rthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var e;switch(this.mode){case\"after\":e=s.find_last_index(this._x_sorted,function(e){return t>=e});break;case\"before\":e=s.find_index(this._x_sorted,function(e){return t<=e});break;case\"center\":var r=this._x_sorted.map(function(e){return Math.abs(e-t)}),n=s.min(r);e=s.find_index(r,function(t){return n===t});break;default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=e?this._y_sorted[e]:NaN},e}(i.Interpolator);r.StepInterpolator=_,_.__name__=\"StepInterpolator\",_.init_StepInterpolator()},\n", - " function _(t,e,a){var r=t(113),o=function(t){function e(e){return t.call(this,e)||this}return r.__extends(e,t),e.prototype.compute=function(t){var e,a=this._compute_state(),r=a[0],o=a[1],n=a[2],i=a[3];if(0==n)e=0;else{var h=(Math.log(t)-i)/n;e=isFinite(h)?h*r+o:NaN}return e},e.prototype.v_compute=function(t){var e=this._compute_state(),a=e[0],r=e[1],o=e[2],n=e[3],i=new Float64Array(t.length);if(0==o)for(var h=0;h0?(this.el.style.top=y+\"px\",this.el.style.left=b+\"px\"):l.undisplay(this.el)}},e}(o.AnnotationView);i.TooltipView=c,c.__name__=\"TooltipView\";var d=function(t){function e(e){return t.call(this,e)||this}return s.__extends(e,t),e.init_Tooltip=function(){this.prototype.default_view=c,this.define({attachment:[a.TooltipAttachment,\"horizontal\"],inner_only:[a.Boolean,!0],show_arrow:[a.Boolean,!0]}),this.override({level:\"overlay\"}),this.internal({data:[a.Any,[]],custom:[a.Any]})},e.prototype.clear=function(){this.data=[]},e.prototype.add=function(t,e,i){this.data=this.data.concat([[t,e,i]])},e}(o.Annotation);i.Tooltip=d,d.__name__=\"Tooltip\",d.init_Tooltip()},\n", - " function _(o,t,n){o(164),o(163).styles.append('.bk-root {\\n /* Same border color used everywhere */\\n /* Gray of icons */\\n}\\n.bk-root .bk-tooltip {\\n font-weight: 300;\\n font-size: 12px;\\n position: absolute;\\n padding: 5px;\\n border: 1px solid #e5e5e5;\\n color: #2f2f2f;\\n background-color: white;\\n pointer-events: none;\\n opacity: 0.95;\\n z-index: 100;\\n}\\n.bk-root .bk-tooltip > div:not(:first-child) {\\n /* gives space when multiple elements are being hovered over */\\n margin-top: 5px;\\n border-top: #e5e5e5 1px dashed;\\n}\\n.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-left::before {\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right::after {\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-above::before {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n top: -10px;\\n border-bottom-width: 10px;\\n border-bottom-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-below::after {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n bottom: -10px;\\n border-top-width: 10px;\\n border-top-color: #909599;\\n}\\n.bk-root .bk-tooltip-row-label {\\n text-align: right;\\n color: #26aae1;\\n /* blue from toolbar highlighting */\\n}\\n.bk-root .bk-tooltip-row-value {\\n color: default;\\n /* seems to be necessary for notebook */\\n}\\n.bk-root .bk-tooltip-color-block {\\n width: 12px;\\n height: 12px;\\n margin-left: 5px;\\n margin-right: 5px;\\n outline: #dddddd solid 1px;\\n display: inline-block;\\n}\\n'),n.bk_tooltip=\"bk-tooltip\",n.bk_tooltip_arrow=\"bk-tooltip-arrow\",n.bk_tooltip_custom=\"bk-tooltip-custom\",n.bk_tooltip_row_label=\"bk-tooltip-row-label\",n.bk_tooltip_row_value=\"bk-tooltip-row-value\",n.bk_tooltip_color_block=\"bk-tooltip-color-block\"},\n", - " function _(b,e,k){b(163).styles.append(\"\"),k.bk_active=\"bk-active\",k.bk_inline=\"bk-inline\",k.bk_left=\"bk-left\",k.bk_right=\"bk-right\",k.bk_above=\"bk-above\",k.bk_below=\"bk-below\",k.bk_up=\"bk-up\",k.bk_down=\"bk-down\",k.bk_side=function(b){switch(b){case\"above\":return k.bk_above;case\"below\":return k.bk_below;case\"left\":return k.bk_left;case\"right\":return k.bk_right}}},\n", - " function _(e,t,i){var s=e(113),n=e(131),r=e(170),o=e(169),a=e(121),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var e,t,i,s=this.plot_view.frame,n=this.model.dimension,r=s.xscales[this.model.x_range_name],o=s.yscales[this.model.y_range_name],a=\"height\"==n?o:r,h=\"height\"==n?r:o,_=\"height\"==n?s.yview:s.xview,l=\"height\"==n?s.xview:s.yview;e=\"data\"==this.model.properties.lower.units?a.v_compute(this._lower):_.v_compute(this._lower),t=\"data\"==this.model.properties.upper.units?a.v_compute(this._upper):_.v_compute(this._upper),i=\"data\"==this.model.properties.base.units?h.v_compute(this._base):l.v_compute(this._base);var u=\"height\"==n?[1,0]:[0,1],p=u[0],c=u[1],d=[e,i],m=[t,i];this._lower_sx=d[p],this._lower_sy=d[c],this._upper_sx=m[p],this._upper_sy=m[c]},t.prototype.render=function(){if(this.model.visible){this._map_data();var e=this.plot_view.canvas_view.ctx;if(this.visuals.line.doit)for(var t=0,i=this._lower_sx.length;tu&&(u=b)}return u>0&&(u+=a),u},Object.defineProperty(t.prototype,\"normals\",{get:function(){return this.panel.normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"dimension\",{get:function(){return this.panel.dimension},enumerable:!0,configurable:!0}),t.prototype.compute_labels=function(e){for(var t=this.model.formatter.doFormat(e,this),i=0;i_(l-c)?(a=u(h(n,o),l),r=h(u(n,o),c)):(a=h(n,o),r=u(n,o)),[a,r]}throw new Error(\"user bounds '\"+t+\"' not understood\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"rule_coords\",{get:function(){var e=this.dimension,t=(e+1)%2,i=this.ranges[0],a=this.computed_bounds,r=a[0],n=a[1],o=[new Array(2),new Array(2)];return o[e][0]=Math.max(r,i.min),o[e][1]=Math.min(n,i.max),o[e][0]>o[e][1]&&(o[e][0]=o[e][1]=NaN),o[t][0]=this.loc,o[t][1]=this.loc,o},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"tick_coords\",{get:function(){for(var e=this.dimension,t=(e+1)%2,i=this.ranges[0],a=this.computed_bounds,r=a[0],n=a[1],o=this.model.ticker.get_ticks(r,n,i,this.loc,{}),s=o.major,l=o.minor,_=[[],[]],h=[[],[]],u=[i.min,i.max],c=u[0],d=u[1],m=0;md||(_[e].push(s[m]),_[t].push(this.loc));for(m=0;md||(h[e].push(l[m]),h[t].push(this.loc));return{major:_,minor:h}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"loc\",{get:function(){var e=this.model.fixed_location;if(null!=e){if(s.isNumber(e))return e;var t=this.ranges[1];if(t instanceof l.FactorRange)return t.synthetic(e);throw new Error(\"unexpected\")}var i=this.ranges[1];switch(this.panel.side){case\"left\":case\"below\":return i.start;case\"right\":case\"above\":return i.end}},enumerable:!0,configurable:!0}),t.prototype.serializable_state=function(){return Object.assign(Object.assign({},e.prototype.serializable_state.call(this)),{bbox:this.layout.bbox.box})},t}(r.GuideRendererView);i.AxisView=c,c.__name__=\"AxisView\";var d=function(e){function t(t){return e.call(this,t)||this}return a.__extends(t,e),t.init_Axis=function(){this.prototype.default_view=c,this.mixins([\"line:axis_\",\"line:major_tick_\",\"line:minor_tick_\",\"text:major_label_\",\"text:axis_label_\"]),this.define({bounds:[n.Any,\"auto\"],ticker:[n.Instance],formatter:[n.Instance],x_range_name:[n.String,\"default\"],y_range_name:[n.String,\"default\"],axis_label:[n.String,\"\"],axis_label_standoff:[n.Int,5],major_label_standoff:[n.Int,5],major_label_orientation:[n.Any,\"horizontal\"],major_label_overrides:[n.Any,{}],major_tick_in:[n.Number,2],major_tick_out:[n.Number,6],minor_tick_in:[n.Number,0],minor_tick_out:[n.Number,4],fixed_location:[n.Any,null]}),this.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"8pt\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"10pt\",axis_label_text_font_style:\"italic\"})},t}(r.GuideRenderer);i.Axis=d,d.__name__=\"Axis\",d.init_Axis()},\n", - " function _(e,n,r){var i=e(113),t=e(160),d=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(n,e),n}(t.RendererView);r.GuideRendererView=d,d.__name__=\"GuideRendererView\";var u=function(e){function n(n){return e.call(this,n)||this}return i.__extends(n,e),n.init_GuideRenderer=function(){this.override({level:\"overlay\"})},n}(t.Renderer);r.GuideRenderer=u,u.__name__=\"GuideRenderer\",u.init_GuideRenderer()},\n", - " function _(t,o,e){var i=t(113),r=t(243),s=t(246),a=t(247),n=t(121),l=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(o,t),o.prototype._render=function(t,o,e){this._draw_group_separators(t,o,e)},o.prototype._draw_group_separators=function(t,o,e){var i,r=this.ranges[0],s=this.computed_bounds,a=s[0],n=s[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.dimension,_=(l+1)%2,u=[[],[]],p=0,h=0;ha&&f1&&(l.tops[o]=n.tops,l.tops[e]=n.tops.map(function(o){return t.loc})),l},enumerable:!0,configurable:!0}),o}(r.AxisView);e.CategoricalAxisView=l,l.__name__=\"CategoricalAxisView\";var _=function(t){function o(o){return t.call(this,o)||this}return i.__extends(o,t),o.init_CategoricalAxis=function(){this.prototype.default_view=l,this.mixins([\"line:separator_\",\"text:group_\",\"text:subgroup_\"]),this.define({group_label_orientation:[n.Any,\"parallel\"],subgroup_label_orientation:[n.Any,\"parallel\"]}),this.override({ticker:function(){return new s.CategoricalTicker},formatter:function(){return new a.CategoricalTickFormatter},separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"8pt\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"8pt\"})},o}(r.Axis);e.CategoricalAxis=_,_.__name__=\"CategoricalAxis\",_.init_CategoricalAxis()},\n", - " function _(t,c,r){var e=t(113),o=function(t){function c(c){return t.call(this,c)||this}return e.__extends(c,t),c.prototype.get_ticks=function(t,c,r,e,o){return{major:this._collect(r.factors,r,t,c),minor:[],tops:this._collect(r.tops||[],r,t,c),mids:this._collect(r.mids||[],r,t,c)}},c.prototype._collect=function(t,c,r,e){for(var o=[],i=0,n=t;ir&&l=60?\"minsec\":\"seconds\";case!(e<3600):return r>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}},r.prototype.doFormat=function(t,r){if(0==t.length)return[];for(var e=Math.abs(t[t.length-1]-t[0])/1e3,s=e/(t.length-1),i=this._get_resolution_str(s,e),n=this._width_formats[i][1][0],a=[],u=f.indexOf(i),c={},m=0,l=f;m=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.22\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,function(e){a[e].pad=2}),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}})},\n", - " function _(r,n,e){var t=r(113),i=r(254),u=r(255),a=r(252),f=r(127),o=r(109);function l(r){for(var n=[],e=1;e.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}}(),r):\"\"+r}function s(r,n,t,i){if(null==t)return c;if(null!=i&&(r in i||n in i)){var u=i[n in i?n:r];if(o.isString(u)){if(u in e.DEFAULT_FORMATTERS)return e.DEFAULT_FORMATTERS[u];throw new Error(\"Unknown tooltip field formatter type '\"+u+\"'\")}return function(r,n,e){return u.format(r,n,e)}}return e.DEFAULT_FORMATTERS.numeral}function p(r,n,e,t){if(\"$\"==r[0]){if(r.substring(1)in t)return t[r.substring(1)];throw new Error(\"Unknown special variable '\"+r+\"'\")}var i=n.get_column(r);if(null==i)return null;if(o.isNumber(e))return i[e];var u=i[e.index];return o.isTypedArray(u)||o.isArray(u)?o.isArray(u[0])?u[e.dim2][e.dim1]:u[e.flat_index]:u}e.sprintf=l,e.DEFAULT_FORMATTERS={numeral:function(r,n,e){return u.format(r,n)},datetime:function(r,n,e){return a(r,n)},printf:function(r,n,e){return l(n,r)}},e.basic_formatter=c,e.get_formatter=s,e.get_value=p,e.replace_placeholders=function(r,n,e,t,i){void 0===i&&(i={});var u=r.replace(/(?:^|[^@])([@|\\$](?:\\w+|{[^{}]+}))(?:{[^{}]+})?/g,function(r,n,e){return\"\"+n});return r=(r=(r=r.replace(/@\\$name/g,function(r){return\"@{\"+i.name+\"}\"})).replace(/(^|[^\\$])\\$(\\w+)/g,function(r,n,e){return n+\"@$\"+e})).replace(/(^|[^@])@(?:(\\$?\\w+)|{([^{}]+)})(?:{([^{}]+)})?/g,function(r,a,o,l,c){var m=p(o=null!=l?l:o,n,e,i);if(null==m)return\"\"+a+f.escape(\"???\");if(\"safe\"==c)return\"\"+a+m;var T=s(o,u,c,t);return\"\"+a+f.escape(T(m,c,i))})}},\n", - " function _(e,n,t){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(t){return function(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}(function(n){if(i[n])return i[n];var t,r=n,s=[],a=0;for(;r;){if(null!==(t=e.text.exec(r)))s.push(t[0]);else if(null!==(t=e.modulo.exec(r)))s.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");s.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return i[n]=s}(t),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}var i=Object.create(null);void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define(function(){return{sprintf:n,vsprintf:r}}))}()},\n", - " function _(e,n,t){\n", - " /*!\n", - " * numbro.js\n", - " * version : 1.6.2\n", - " * author : Företagsplatsen AB\n", - " * license : MIT\n", - " * http://www.foretagsplatsen.se\n", - " */\n", - " var r,i={},a=i,o=\"en-US\",l=null,u=\"0,0\";void 0!==n&&n.exports;function c(e){this._value=e}function s(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+s(i-r.length),n>0&&(a+=\".\"+s(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function d(e,n,t){return n.indexOf(\"$\")>-1?function(e,n,t){var r,a,l=n,u=l.indexOf(\"$\"),c=l.indexOf(\"(\"),s=l.indexOf(\"+\"),f=l.indexOf(\"-\"),d=\"\",p=\"\";-1===l.indexOf(\"$\")?\"infix\"===i[o].currency.position?(p=i[o].currency.symbol,i[o].currency.spaceSeparated&&(p=\" \"+p+\" \")):i[o].currency.spaceSeparated&&(d=\" \"):l.indexOf(\" $\")>-1?(d=\" \",l=l.replace(\" $\",\"\")):l.indexOf(\"$ \")>-1?(d=\" \",l=l.replace(\"$ \",\"\")):l=l.replace(\"$\",\"\");if(a=h(e,l,t,p),-1===n.indexOf(\"$\"))switch(i[o].currency.position){case\"postfix\":a.indexOf(\")\")>-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;break;case\"infix\":break;case\"prefix\":a.indexOf(\"(\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=Math.max(c,f)+1,a.splice(r,0,i[o].currency.symbol+d),a=a.join(\"\")):a=i[o].currency.symbol+d+a;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else u<=1?a.indexOf(\"(\")>-1||a.indexOf(\"+\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=1,(u-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;return a}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=h(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):h(e,n,t)}function h(e,n,t,r){var a,u,c,s,d,h,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==l)return l;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(d=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(h=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,d)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===h?0:3*~~(h/3)-h)<0?M+3:M,a=0;a=Math.pow(10,12)&&!D||j?(k+=i[o].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=i[o].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=i[o].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=i[o].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(u=Math.pow(1024,s),c=Math.pow(1024,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(u=Math.pow(1e3,s),c=Math.pow(1e3,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),i[o].ordinal&&(L+=i[o].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?f(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?f(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):f(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:i[o].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=f(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+i[o].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,i){return null!=t&&t!==r.culture()&&r.setCulture(t),d(Number(e),null!=n?n:u,null==i?Math.round:i)}}},\n", - " function _(e,n,i){var t=e(113),r=e(110),a=e(205),s=e(257),c=e(258),_=e(261),m=e(262),k=e(260),o=function(e){function n(n){return e.call(this,n)||this}return t.__extends(n,e),n.init_DatetimeTicker=function(){this.override({num_minor_ticks:0,tickers:function(){return[new a.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*k.ONE_MILLI,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:k.ONE_SECOND,max_interval:30*k.ONE_MINUTE,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:k.ONE_HOUR,max_interval:12*k.ONE_HOUR,num_minor_ticks:0}),new c.DaysTicker({days:r.range(1,32)}),new c.DaysTicker({days:r.range(1,31,3)}),new c.DaysTicker({days:[1,8,15,22]}),new c.DaysTicker({days:[1,15]}),new _.MonthsTicker({months:r.range(0,12,1)}),new _.MonthsTicker({months:r.range(0,12,2)}),new _.MonthsTicker({months:r.range(0,12,4)}),new _.MonthsTicker({months:r.range(0,12,6)}),new m.YearsTicker({})]}})},n}(s.CompositeTicker);i.DatetimeTicker=o,o.__name__=\"DatetimeTicker\",o.init_DatetimeTicker()},\n", - " function _(t,e,i){var n=t(113),r=t(206),o=t(121),s=t(110),a=t(125),_=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_CompositeTicker=function(){this.define({tickers:[o.Array,[]]})},Object.defineProperty(e.prototype,\"min_intervals\",{get:function(){return this.tickers.map(function(t){return t.get_min_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"max_intervals\",{get:function(){return this.tickers.map(function(t){return t.get_max_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"min_interval\",{get:function(){return this.min_intervals[0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"max_interval\",{get:function(){return this.max_intervals[0]},enumerable:!0,configurable:!0}),e.prototype.get_best_ticker=function(t,e,i){var n,r=e-t,o=this.get_ideal_interval(t,e,i),_=[s.sorted_index(this.min_intervals,o)-1,s.sorted_index(this.max_intervals,o)],u=[this.min_intervals[_[0]],this.max_intervals[_[1]]].map(function(t){return Math.abs(i-r/t)});if(a.isEmpty(u.filter(function(t){return!isNaN(t)})))n=this.tickers[0];else{var c=_[s.argmin(u)];n=this.tickers[c]}return n},e.prototype.get_interval=function(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)},e.prototype.get_ticks_no_defaults=function(t,e,i,n){return this.get_best_ticker(t,e,n).get_ticks_no_defaults(t,e,i,n)},e}(r.ContinuousTicker);i.CompositeTicker=_,_.__name__=\"CompositeTicker\",_.init_CompositeTicker()},\n", - " function _(t,n,e){var i=t(113),r=t(259),a=t(260),o=t(121),s=t(110);var _=function(t){function n(n){return t.call(this,n)||this}return i.__extends(n,t),n.init_DaysTicker=function(){this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})},n.prototype.initialize=function(){t.prototype.initialize.call(this);var n=this.days;n.length>1?this.interval=(n[1]-n[0])*a.ONE_DAY:this.interval=31*a.ONE_DAY},n.prototype.get_ticks_no_defaults=function(t,n,e,i){var r=function(t,n){var e=a.last_month_no_later_than(new Date(t)),i=a.last_month_no_later_than(new Date(n));i.setUTCMonth(i.getUTCMonth()+1);for(var r=[],o=e;r.push(a.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(o>i););return r}(t,n),o=this.days,_=this.interval;return{major:s.concat(r.map(function(t){return function(t,n){for(var e=t.getUTCMonth(),i=[],r=0,s=o;r1?this.interval=(n[1]-n[0])*a.ONE_MONTH:this.interval=12*a.ONE_MONTH},n.prototype.get_ticks_no_defaults=function(t,n,e,r){var i=function(t,n){var e=a.last_year_no_later_than(new Date(t)),r=a.last_year_no_later_than(new Date(n));r.setUTCFullYear(r.getUTCFullYear()+1);for(var i=[],o=e;i.push(a.copy_date(o)),o.setUTCFullYear(o.getUTCFullYear()+1),!(o>r););return i}(t,n),o=this.months;return{major:l.concat(i.map(function(t){return o.map(function(n){var e=a.copy_date(t);return e.setUTCMonth(n),e})})).map(function(t){return t.getTime()}).filter(function(e){return t<=e&&e<=n}),minor:[]}},n}(i.SingleIntervalTicker);e.MonthsTicker=u,u.__name__=\"MonthsTicker\",u.init_MonthsTicker()},\n", - " function _(t,e,i){var n=t(113),r=t(204),a=t(259),_=t(260),c=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.prototype.initialize=function(){t.prototype.initialize.call(this),this.interval=_.ONE_YEAR,this.basic_ticker=new r.BasicTicker({num_minor_ticks:0})},e.prototype.get_ticks_no_defaults=function(t,e,i,n){var r=_.last_year_no_later_than(new Date(t)).getUTCFullYear(),a=_.last_year_no_later_than(new Date(e)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,a,i,n).major.map(function(t){return Date.UTC(t,0,1)}).filter(function(i){return t<=i&&i<=e}),minor:[]}},e}(a.SingleIntervalTicker);i.YearsTicker=c,c.__name__=\"YearsTicker\"},\n", - " function _(i,n,t){var e=i(113),o=i(243),r=i(248),u=i(264),s=i(265),_=function(i){function n(){return null!==i&&i.apply(this,arguments)||this}return e.__extends(n,i),n}(o.AxisView);t.LogAxisView=_,_.__name__=\"LogAxisView\";var c=function(i){function n(n){return i.call(this,n)||this}return e.__extends(n,i),n.init_LogAxis=function(){this.prototype.default_view=_,this.override({ticker:function(){return new s.LogTicker},formatter:function(){return new u.LogTickFormatter}})},n}(r.ContinuousAxis);t.LogAxis=c,c.__name__=\"LogAxis\",c.init_LogAxis()},\n", - " function _(t,i,r){var e=t(113),n=t(209),o=t(208),a=t(167),c=t(121),l=function(t){function i(i){return t.call(this,i)||this}return e.__extends(i,t),i.init_LogTickFormatter=function(){this.define({ticker:[c.Instance,null]})},i.prototype.initialize=function(){t.prototype.initialize.call(this),this.basic_formatter=new o.BasicTickFormatter,null==this.ticker&&a.logger.warn(\"LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)\")},i.prototype.doFormat=function(t,i){if(0==t.length)return[];for(var r=null!=this.ticker?this.ticker.base:10,e=!1,n=new Array(t.length),o=0,a=t.length;o0&&n[o]==n[o-1]){e=!0;break}return e?this.basic_formatter.doFormat(t,i):n},i}(n.TickFormatter);r.LogTickFormatter=l,l.__name__=\"LogTickFormatter\",l.init_LogTickFormatter()},\n", - " function _(t,r,n){var e=t(113),i=t(205),o=t(110),a=function(t){function r(r){return t.call(this,r)||this}return e.__extends(r,t),r.init_LogTicker=function(){this.override({mantissas:[1,5]})},r.prototype.get_ticks_no_defaults=function(t,r,n,e){var i,a=this.num_minor_ticks,u=[],f=this.base,h=Math.log(t)/Math.log(f),l=Math.log(r)/Math.log(f),c=l-h;if(isFinite(c))if(c<2){var s=this.get_interval(t,r,e),g=Math.floor(t/s),_=Math.ceil(r/s);if(i=o.range(g,_+1).filter(function(t){return 0!=t}).map(function(t){return t*s}).filter(function(n){return t<=n&&n<=r}),a>0&&i.length>0){for(var p=s/a,v=0,M=(y=o.range(0,a).map(function(t){return t*p})).slice(1);v0&&i.length>0){for(var y,A=Math.pow(f,x)/a,F=0,q=y=o.range(1,a+1).map(function(t){return t*A});F1?((e=i).width=arguments[0],e.height=arguments[1]):e=t||i,!(this instanceof r))return new r(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,this.canvas=this,this.__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement(\"canvas\"),this.__ctx=this.__canvas.getContext(\"2d\")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),this.__root.setAttribute(\"version\",1.1),this.__root.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),this.__root.setAttributeNS(\"http://www.w3.org/2000/xmlns/\",\"xmlns:xlink\",\"http://www.w3.org/1999/xlink\"),this.__root.setAttribute(\"width\",this.width),this.__root.setAttribute(\"height\",this.height),this.__ids={},this.__defs=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"defs\"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,r){void 0===e&&(e={});var i,n,s=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",t),a=Object.keys(e);for(r&&(s.setAttribute(\"fill\",\"none\"),s.setAttribute(\"stroke\",\"none\")),i=0;i0){\"path\"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var r=this.__createElement(\"g\");e.appendChild(r),this.__currentElement=r}var i=this.__currentElement.getAttribute(\"transform\");i?i+=\" \":i=\"\",i+=t,this.__currentElement.setAttribute(\"transform\",i)},r.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(a(\"scale({x},{y})\",{x:t,y:e}))},r.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(a(\"rotate({angle},{cx},{cy})\",{angle:e,cx:0,cy:0}))},r.prototype.translate=function(t,e){this.__addTransform(a(\"translate({x},{y})\",{x:t,y:e}))},r.prototype.transform=function(t,e,r,i,n,s){this.__addTransform(a(\"matrix({a},{b},{c},{d},{e},{f})\",{a:t,b:e,c:r,d:i,e:n,f:s}))},r.prototype.beginPath=function(){var t;this.__currentDefaultPath=\"\",this.__currentPosition={},t=this.__createElement(\"path\",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},r.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;\"path\"===t.nodeName?t.setAttribute(\"d\",this.__currentDefaultPath):console.error(\"Attempted to apply path command to node\",t.nodeName)},r.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=\" \",this.__currentDefaultPath+=t},r.prototype.moveTo=function(t,e){\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(a(\"M {x} {y}\",{x:t,y:e}))},r.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand(\"Z\")},r.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},this.__currentDefaultPath.indexOf(\"M\")>-1?this.__addPathCommand(a(\"L {x} {y}\",{x:t,y:e})):this.__addPathCommand(a(\"M {x} {y}\",{x:t,y:e}))},r.prototype.bezierCurveTo=function(t,e,r,i,n,s){this.__currentPosition={x:n,y:s},this.__addPathCommand(a(\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\",{cp1x:t,cp1y:e,cp2x:r,cp2y:i,x:n,y:s}))},r.prototype.quadraticCurveTo=function(t,e,r,i){this.__currentPosition={x:r,y:i},this.__addPathCommand(a(\"Q {cpx} {cpy} {x} {y}\",{cpx:t,cpy:e,x:r,y:i}))};var l=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};r.prototype.arcTo=function(t,e,r,i,n){var s=this.__currentPosition&&this.__currentPosition.x,a=this.__currentPosition&&this.__currentPosition.y;if(void 0!==s&&void 0!==a){if(n<0)throw new Error(\"IndexSizeError: The radius provided (\"+n+\") is negative.\");if(s===t&&a===e||t===r&&e===i||0===n)this.lineTo(t,e);else{var o=l([s-t,a-e]),h=l([r-t,i-e]);if(o[0]*h[1]!=o[1]*h[0]){var c=o[0]*h[0]+o[1]*h[1],p=Math.acos(Math.abs(c)),_=l([o[0]+h[0],o[1]+h[1]]),u=n/Math.sin(p/2),d=t+u*_[0],g=e+u*_[1],m=[-o[1],o[0]],f=[h[1],-h[0]],y=function(t){var e=t[0];return t[1]>=0?Math.acos(e):-Math.acos(e)},v=y(m),b=y(f);this.lineTo(d+m[0]*n,g+m[1]*n),this.arc(d,g,n,v,b)}else this.lineTo(t,e)}}},r.prototype.stroke=function(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill stroke markers\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\")},r.prototype.fill=function(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke fill markers\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\")},r.prototype.rect=function(t,e,r,i){\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+r,e),this.lineTo(t+r,e+i),this.lineTo(t,e+i),this.lineTo(t,e),this.closePath()},r.prototype.fillRect=function(t,e,r,i){var n;n=this.__createElement(\"rect\",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement(\"fill\")},r.prototype.strokeRect=function(t,e,r,i){var n;n=this.__createElement(\"rect\",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement(\"stroke\")},r.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg().getAttribute(\"transform\"),e=this.__root.childNodes[1],r=e.childNodes,i=r.length-1;i>=0;i--)r[i]&&e.removeChild(r[i]);this.__currentElement=e,this.__groupStack=[],t&&this.__addTransform(t)},r.prototype.clearRect=function(t,e,r,i){if(0!==t||0!==e||r!==this.width||i!==this.height){var n,s=this.__closestGroupOrSvg();n=this.__createElement(\"rect\",{x:t,y:e,width:r,height:i,fill:\"#FFFFFF\"},!0),s.appendChild(n)}else this.__clearCanvas()},r.prototype.createLinearGradient=function(t,e,r,n){var s=this.__createElement(\"linearGradient\",{id:o(this.__ids),x1:t+\"px\",x2:r+\"px\",y1:e+\"px\",y2:n+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(s),new i(s,this)},r.prototype.createRadialGradient=function(t,e,r,n,s,a){var h=this.__createElement(\"radialGradient\",{id:o(this.__ids),cx:n+\"px\",cy:s+\"px\",r:a+\"px\",fx:t+\"px\",fy:e+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(h),new i(h,this)},r.prototype.__parseFont=function(){var t=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font),e={style:t[1]||\"normal\",size:t[4]||\"10px\",family:t[6]||\"sans-serif\",weight:t[3]||\"normal\",decoration:t[2]||\"normal\",href:null};return\"underline\"===this.__fontUnderline&&(e.decoration=\"underline\"),this.__fontHref&&(e.href=this.__fontHref),e},r.prototype.__wrapTextLink=function(t,e){if(t.href){var r=this.__createElement(\"a\");return r.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.href),r.appendChild(e),r}return e},r.prototype.__applyText=function(t,e,r,i){var n,s,a=this.__parseFont(),o=this.__closestGroupOrSvg(),l=this.__createElement(\"text\",{\"font-family\":a.family,\"font-size\":a.size,\"font-style\":a.style,\"font-weight\":a.weight,\"text-decoration\":a.decoration,x:e,y:r,\"text-anchor\":(n=this.textAlign,s={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"},s[n]||s.start),\"dominant-baseline\":h(this.textBaseline)},!0);l.appendChild(this.__document.createTextNode(t)),this.__currentElement=l,this.__applyStyleToCurrentElement(i),o.appendChild(this.__wrapTextLink(a,l))},r.prototype.fillText=function(t,e,r){this.__applyText(t,e,r,\"fill\")},r.prototype.strokeText=function(t,e,r){this.__applyText(t,e,r,\"stroke\")},r.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},r.prototype.arc=function(t,e,r,i,n,s){if(i!==n){(i%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(s?-1:1))%(2*Math.PI));var o=t+r*Math.cos(n),h=e+r*Math.sin(n),l=t+r*Math.cos(i),c=e+r*Math.sin(i),p=s?0:1,_=0,u=n-i;u<0&&(u+=2*Math.PI),_=s?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(l,c),this.__addPathCommand(a(\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",{rx:r,ry:r,xAxisRotation:0,largeArcFlag:_,sweepFlag:p,endX:o,endY:h})),this.__currentPosition={x:o,y:h}}},r.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\"clipPath\"),r=o(this.__ids),i=this.__createElement(\"g\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\"id\",r),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\"clip-path\",a(\"url(#{id})\",{id:r})),t.appendChild(i),this.__currentElement=i},r.prototype.drawImage=function(){var t,e,i,n,s,a,o,h,l,c,p,_,u,d,g=Array.prototype.slice.call(arguments),m=g[0],f=0,y=0;if(3===g.length)t=g[1],e=g[2],i=s=m.width,n=a=m.height;else if(5===g.length)t=g[1],e=g[2],i=g[3],n=g[4],s=m.width,a=m.height;else{if(9!==g.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);f=g[1],y=g[2],s=g[3],a=g[4],t=g[5],e=g[6],i=g[7],n=g[8]}o=this.__closestGroupOrSvg(),this.__currentElement;var v=\"translate(\"+t+\", \"+e+\")\";if(m instanceof r){if((h=m.getSvg().cloneNode(!0)).childNodes&&h.childNodes.length>1){for(l=h.childNodes[0];l.childNodes.length;)d=l.childNodes[0].getAttribute(\"id\"),this.__ids[d]=d,this.__defs.appendChild(l.childNodes[0]);if(c=h.childNodes[1]){var b,w=c.getAttribute(\"transform\");b=w?w+\" \"+v:v,c.setAttribute(\"transform\",b),o.appendChild(c)}}}else\"IMG\"===m.nodeName?((p=this.__createElement(\"image\")).setAttribute(\"width\",i),p.setAttribute(\"height\",n),p.setAttribute(\"preserveAspectRatio\",\"none\"),(f||y||s!==m.width||a!==m.height)&&((_=this.__document.createElement(\"canvas\")).width=i,_.height=n,(u=_.getContext(\"2d\")).drawImage(m,f,y,s,a,0,0,i,n),m=_),p.setAttribute(\"transform\",v),p.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",\"CANVAS\"===m.nodeName?m.toDataURL():m.getAttribute(\"src\")),o.appendChild(p)):\"CANVAS\"===m.nodeName&&((p=this.__createElement(\"image\")).setAttribute(\"width\",i),p.setAttribute(\"height\",n),p.setAttribute(\"preserveAspectRatio\",\"none\"),(_=this.__document.createElement(\"canvas\")).width=i,_.height=n,(u=_.getContext(\"2d\")).imageSmoothingEnabled=!1,u.mozImageSmoothingEnabled=!1,u.oImageSmoothingEnabled=!1,u.webkitImageSmoothingEnabled=!1,u.drawImage(m,f,y,s,a,0,0,i,n),m=_,p.setAttribute(\"transform\",v),p.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",m.toDataURL()),o.appendChild(p))},r.prototype.createPattern=function(t,e){var i,s=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),a=o(this.__ids);return s.setAttribute(\"id\",a),s.setAttribute(\"width\",t.width),s.setAttribute(\"height\",t.height),\"CANVAS\"===t.nodeName||\"IMG\"===t.nodeName?((i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\")).setAttribute(\"width\",t.width),i.setAttribute(\"height\",t.height),i.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",\"CANVAS\"===t.nodeName?t.toDataURL():t.getAttribute(\"src\")),s.appendChild(i),this.__defs.appendChild(s)):t instanceof r&&(s.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(s)),new n(s,this)},r.prototype.setLineDash=function(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null},r.prototype.drawFocusRing=function(){},r.prototype.createImageData=function(){},r.prototype.getImageData=function(){},r.prototype.putImageData=function(){},r.prototype.globalCompositeOperation=function(){},r.prototype.setTransform=function(){},\"object\"==typeof window&&(window.C2S=r),\"object\"==typeof e&&\"object\"==typeof e.exports&&(e.exports=r)}()},\n", - " function _(e,t,a){var r=e(113),n=e(279),s=e(215),i=e(224),_=e(225),o=e(280),c=e(184),g=function(e){function t(t,a,r,n,s,i){void 0===s&&(s={}),void 0===i&&(i={});var _=e.call(this)||this;return _.x_scale=t,_.y_scale=a,_.x_range=r,_.y_range=n,_.extra_x_ranges=s,_.extra_y_ranges=i,_._configure_scales(),_}return r.__extends(t,e),t.prototype.map_to_screen=function(e,t,a,r){return void 0===a&&(a=\"default\"),void 0===r&&(r=\"default\"),[this.xscales[a].v_compute(e),this.yscales[r].v_compute(t)]},t.prototype._get_ranges=function(e,t){var a={};if(a.default=e,null!=t)for(var r in t)a[r]=t[r];return a},t.prototype._get_scales=function(e,t,a){var r={};for(var g in t){var l=t[g];if(l instanceof o.DataRange1d||l instanceof _.Range1d){if(!(e instanceof i.LogScale||e instanceof s.LinearScale))throw new Error(\"Range \"+l.type+\" is incompatible is Scale \"+e.type);if(e instanceof n.CategoricalScale)throw new Error(\"Range \"+l.type+\" is incompatible is Scale \"+e.type)}if(l instanceof c.FactorRange&&!(e instanceof n.CategoricalScale))throw new Error(\"Range \"+l.type+\" is incompatible is Scale \"+e.type);e instanceof i.LogScale&&l instanceof o.DataRange1d&&(l.scale_hint=\"log\");var f=e.clone();f.setv({source_range:l,target_range:a}),r[g]=f}return r},t.prototype._configure_frame_ranges=function(){this._h_target=new _.Range1d({start:this._left.value,end:this._right.value}),this._v_target=new _.Range1d({start:this._bottom.value,end:this._top.value})},t.prototype._configure_scales=function(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._xscales=this._get_scales(this.x_scale,this._x_ranges,this._h_target),this._yscales=this._get_scales(this.y_scale,this._y_ranges,this._v_target)},t.prototype._update_scales=function(){for(var e in this._configure_frame_ranges(),this._xscales){this._xscales[e].target_range=this._h_target}for(var e in this._yscales){this._yscales[e].target_range=this._v_target}},t.prototype._set_geometry=function(t,a){e.prototype._set_geometry.call(this,t,a),this._update_scales()},Object.defineProperty(t.prototype,\"x_ranges\",{get:function(){return this._x_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"y_ranges\",{get:function(){return this._y_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"xscales\",{get:function(){return this._xscales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"yscales\",{get:function(){return this._yscales},enumerable:!0,configurable:!0}),t}(e(282).LayoutItem);a.CartesianFrame=g,g.__name__=\"CartesianFrame\"},\n", - " function _(t,e,c){var n=t(113),o=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.prototype.compute=function(e){return t.prototype.compute.call(this,this.source_range.synthetic(e))},e.prototype.v_compute=function(e){return t.prototype.v_compute.call(this,this.source_range.v_synthetic(e))},e}(t(215).LinearScale);c.CategoricalScale=o,o.__name__=\"CategoricalScale\"},\n", - " function _(t,i,n){var e=t(113),a=t(281),r=t(175),s=t(167),o=t(121),l=t(181),_=t(110),d=function(t){function i(i){var n=t.call(this,i)||this;return n._plot_bounds={},n.have_updated_interactively=!1,n}return e.__extends(i,t),i.init_DataRange1d=function(){this.define({start:[o.Number],end:[o.Number],range_padding:[o.Number,.1],range_padding_units:[o.PaddingUnits,\"percent\"],flipped:[o.Boolean,!1],follow:[o.StartEnd],follow_interval:[o.Number],default_span:[o.Number,2],only_visible:[o.Boolean,!1]}),this.internal({scale_hint:[o.String,\"auto\"]})},i.prototype.initialize=function(){t.prototype.initialize.call(this),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span},Object.defineProperty(i.prototype,\"min\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,\"max\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),i.prototype.computed_renderers=function(){var t=this.names,i=this.renderers;if(0==i.length)for(var n=0,e=this.plots;n0&&(i=i.filter(function(i){return _.includes(t,i.name)})),s.logger.debug(\"computed \"+i.length+\" renderers for DataRange1d \"+this.id);for(var o=0,l=i;ou&&(\"start\"==this.follow?a=e+h*u:\"end\"==this.follow&&(e=a-h*u)),[e,a]},i.prototype.update=function(t,i,n,e){if(!this.have_updated_interactively){var a=this.computed_renderers(),r=this._compute_plot_bounds(a,t);null!=e&&(r=this.adjust_bounds_for_aspect(r,e)),this._plot_bounds[n]=r;var s=this._compute_min_max(this._plot_bounds,i),o=s[0],l=s[1],_=this._compute_range(o,l),d=_[0],h=_[1];null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(d=this._initial_start):d=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(h=this._initial_end):h=this._initial_end);var u=[this.start,this.end],p=u[0],g=u[1];if(d!=p||h!=g){var f={};d!=p&&(f.start=d),h!=g&&(f.end=h),this.setv(f)}\"auto\"==this.bounds&&this.setv({bounds:[d,h]},{silent:!0}),this.change.emit()}},i.prototype.reset=function(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()},i}(a.DataRange);n.DataRange1d=d,d.__name__=\"DataRange1d\",d.init_DataRange1d()},\n", - " function _(n,a,e){var t=n(113),i=n(185),r=n(121),_=function(n){function a(a){return n.call(this,a)||this}return t.__extends(a,n),a.init_DataRange=function(){this.define({names:[r.Array,[]],renderers:[r.Array,[]]})},a}(i.Range);e.DataRange=_,_.__name__=\"DataRange\",_.init_DataRange()},\n", - " function _(a,o,t){var r=a(283);t.Sizeable=r.Sizeable;var e=a(284);t.Layoutable=e.Layoutable,t.LayoutItem=e.LayoutItem;var n=a(285);t.HStack=n.HStack,t.VStack=n.VStack,t.AnchorLayout=n.AnchorLayout;var c=a(286);t.Grid=c.Grid,t.Row=c.Row,t.Column=c.Column;var i=a(287);t.ContentBox=i.ContentBox,t.VariadicBox=i.VariadicBox},\n", - " function _(t,h,i){var e=Math.min,n=Math.max,o=function(){function t(t){void 0===t&&(t={}),this.width=null!=t.width?t.width:0,this.height=null!=t.height?t.height:0}return t.prototype.bounded_to=function(h){var i=h.width,e=h.height;return new t({width:this.width==1/0&&null!=i?i:this.width,height:this.height==1/0&&null!=e?e:this.height})},t.prototype.expanded_to=function(h){var i=h.width,e=h.height;return new t({width:i!=1/0?n(this.width,i):this.width,height:e!=1/0?n(this.height,e):this.height})},t.prototype.expand_to=function(t){var h=t.width,i=t.height;this.width=n(this.width,h),this.height=n(this.height,i)},t.prototype.narrowed_to=function(h){var i=h.width,n=h.height;return new t({width:e(this.width,i),height:e(this.height,n)})},t.prototype.narrow_to=function(t){var h=t.width,i=t.height;this.width=e(this.width,h),this.height=e(this.height,i)},t.prototype.grow_by=function(h){var i=h.left,e=h.right,n=h.top,o=h.bottom;return new t({width:this.width+i+e,height:this.height+n+o})},t.prototype.shrink_by=function(h){var i=h.left,e=h.right,o=h.top,r=h.bottom;return new t({width:n(this.width-i-e,0),height:n(this.height-o-r,0)})},t.prototype.map=function(h,i){return new t({width:h(this.width),height:(null!=i?i:h)(this.height)})},t}();i.Sizeable=o,o.__name__=\"Sizeable\"},\n", - " function _(i,t,e){var h=i(113),n=i(283),r=i(181),s=Math.min,o=Math.max,g=Math.round,u=function(){function i(){this._bbox=new r.BBox,this._inner_bbox=new r.BBox;var i=this;this._top={get value(){return i.bbox.top}},this._left={get value(){return i.bbox.left}},this._width={get value(){return i.bbox.width}},this._height={get value(){return i.bbox.height}},this._right={get value(){return i.bbox.right}},this._bottom={get value(){return i.bbox.bottom}},this._hcenter={get value(){return i.bbox.hcenter}},this._vcenter={get value(){return i.bbox.vcenter}}}return Object.defineProperty(i.prototype,\"bbox\",{get:function(){return this._bbox},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,\"inner_bbox\",{get:function(){return this._inner_bbox},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,\"sizing\",{get:function(){return this._sizing},enumerable:!0,configurable:!0}),i.prototype.set_sizing=function(i){var t=i.width_policy||\"fit\",e=i.width,h=null!=i.min_width?i.min_width:0,n=null!=i.max_width?i.max_width:1/0,r=i.height_policy||\"fit\",s=i.height,o=null!=i.min_height?i.min_height:0,g=null!=i.max_height?i.max_height:1/0,u=i.aspect,a=i.margin||{top:0,right:0,bottom:0,left:0},l=!1!==i.visible,_=i.halign||\"start\",d=i.valign||\"start\";this._sizing={width_policy:t,min_width:h,width:e,max_width:n,height_policy:r,min_height:o,height:s,max_height:g,aspect:u,margin:a,visible:l,halign:_,valign:d,size:{width:e,height:s},min_size:{width:h,height:o},max_size:{width:n,height:g}},this._init()},i.prototype._init=function(){},i.prototype._set_geometry=function(i,t){this._bbox=i,this._inner_bbox=t},i.prototype.set_geometry=function(i,t){this._set_geometry(i,t||i)},i.prototype.is_width_expanding=function(){return\"max\"==this.sizing.width_policy},i.prototype.is_height_expanding=function(){return\"max\"==this.sizing.height_policy},i.prototype.apply_aspect=function(i,t){var e=t.width,h=t.height,n=this.sizing.aspect;if(null!=n){var r=this.sizing,s=r.width_policy,o=r.height_policy;if(\"fixed\"!=s&&\"fixed\"!=o)if(s==o){var u=e,a=g(e/n),l=g(h*n),_=h;Math.abs(i.width-u)+Math.abs(i.height-a)<=Math.abs(i.width-l)+Math.abs(i.height-_)?(e=u,h=a):(e=l,h=_)}else!function(i,t){var e={max:4,fit:3,min:2,fixed:1};return e[i]>e[t]}(s,o)?e=g(h*n):h=g(e/n);else\"fixed\"==s?h=g(e/n):\"fixed\"==o&&(e=g(h*n))}return{width:e,height:h}},i.prototype.measure=function(i){var t=this;if(!this.sizing.visible)return{width:0,height:0};var e=function(i){return\"fixed\"==t.sizing.width_policy&&null!=t.sizing.width?t.sizing.width:i},h=function(i){return\"fixed\"==t.sizing.height_policy&&null!=t.sizing.height?t.sizing.height:i},r=new n.Sizeable(i).shrink_by(this.sizing.margin).map(e,h),s=this._measure(r),o=this.clip_size(s),g=e(o.width),u=h(o.height),a=this.apply_aspect(r,{width:g,height:u});return Object.assign(Object.assign({},s),a)},i.prototype.compute=function(i){void 0===i&&(i={});var t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),e=t.width,h=t.height,n=new r.BBox({left:0,top:0,width:e,height:h}),s=void 0;if(null!=t.inner){var o=t.inner,g=o.left,u=o.top,a=o.right,l=o.bottom;s=new r.BBox({left:g,top:u,right:e-a,bottom:h-l})}this.set_geometry(n,s)},Object.defineProperty(i.prototype,\"xview\",{get:function(){return this.bbox.xview},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,\"yview\",{get:function(){return this.bbox.yview},enumerable:!0,configurable:!0}),i.prototype.clip_width=function(i){return o(this.sizing.min_width,s(i,this.sizing.max_width))},i.prototype.clip_height=function(i){return o(this.sizing.min_height,s(i,this.sizing.max_height))},i.prototype.clip_size=function(i){var t=i.width,e=i.height;return{width:this.clip_width(t),height:this.clip_height(e)}},i}();e.Layoutable=u,u.__name__=\"Layoutable\";var a=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return h.__extends(t,i),t.prototype._measure=function(i){var t,e,h=this.sizing,n=h.width_policy,r=h.height_policy;if(i.width==1/0)t=null!=this.sizing.width?this.sizing.width:0;else if(\"fixed\"==n)t=null!=this.sizing.width?this.sizing.width:0;else if(\"min\"==n)t=null!=this.sizing.width?s(i.width,this.sizing.width):0;else if(\"fit\"==n)t=null!=this.sizing.width?s(i.width,this.sizing.width):i.width;else{if(\"max\"!=n)throw new Error(\"unrechable\");t=null!=this.sizing.width?o(i.width,this.sizing.width):i.width}if(i.height==1/0)e=null!=this.sizing.height?this.sizing.height:0;else if(\"fixed\"==r)e=null!=this.sizing.height?this.sizing.height:0;else if(\"min\"==r)e=null!=this.sizing.height?s(i.height,this.sizing.height):0;else if(\"fit\"==r)e=null!=this.sizing.height?s(i.height,this.sizing.height):i.height;else{if(\"max\"!=r)throw new Error(\"unrechable\");e=null!=this.sizing.height?o(i.height,this.sizing.height):i.height}return{width:t,height:e}},t}(u);e.LayoutItem=a,a.__name__=\"LayoutItem\";var l=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return h.__extends(t,i),t.prototype._measure=function(i){var t=this,e=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(e);return{width:function(){switch(t.sizing.width_policy){case\"fixed\":return null!=t.sizing.width?t.sizing.width:e.width;case\"min\":return e.width;case\"fit\":return h.width;case\"max\":return Math.max(e.width,h.width);default:throw new Error(\"unexpected\")}}(),height:function(){switch(t.sizing.height_policy){case\"fixed\":return null!=t.sizing.height?t.sizing.height:e.height;case\"min\":return e.height;case\"fit\":return h.height;case\"max\":return Math.max(e.height,h.height);default:throw new Error(\"unexpected\")}}()}},t}(u);e.ContentLayoutable=l,l.__name__=\"ContentLayoutable\"},\n", - " function _(t,e,r){var h=t(113),o=t(284),i=t(181),n=function(t){function e(){var e=t.apply(this,arguments)||this;return e.children=[],e}return h.__extends(e,t),e}(o.Layoutable);r.Stack=n,n.__name__=\"Stack\";var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return h.__extends(e,t),e.prototype._measure=function(t){for(var e=0,r=0,h=0,o=this.children;h0)for(var A=l(j.height/O.length),M=0,P=O;M0)for(var S=l(j.width/C.length),E=0,G=C;E0)for(g=0;gy?y:m,_--}}}u=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:f.size.width;for(var v=0,x=0;x0)for(x=0;xj?j:m,_--}}}var O=this._measure_cells(function(t,i){return{width:f.col_widths[i],height:f.row_heights[t]}}),B=O.row_heights,A=O.col_widths,M=O.size_hints;return{size:this._measure_totals(B,A),row_heights:B,col_widths:A,size_hints:M}},i.prototype._measure=function(t){return this._measure_grid(t).size},i.prototype._set_geometry=function(i,e){t.prototype._set_geometry.call(this,i,e);for(var n=this._state,r=n.nrows,o=n.ncols,s=n.rspacing,h=n.cspacing,u=this._measure_grid(i),p=u.row_heights,g=u.col_widths,_=u.size_hints,d=this._state.rows.map(function(t,i){return Object.assign(Object.assign({},t),{top:0,height:p[i],get bottom(){return this.top+this.height}})}),w=this._state.cols.map(function(t,i){return Object.assign(Object.assign({},t),{left:0,width:g[i],get right(){return this.left+this.width}})}),y=_.map(function(t,i){return Object.assign(Object.assign({},i),{outer:new a.BBox,inner:new a.BBox})}),m=0,v=this.absolute?i.top:0;m0?a.every(e,s.isBoolean)?(e.length!==n.get_length()&&r.logger.warn(\"BooleanFilter \"+this.id+\": length of booleans doesn't match data source\"),a.range(0,e.length).filter(function(n){return!0===e[n]})):(r.logger.warn(\"BooleanFilter \"+this.id+\": booleans should be array of booleans, defaulting to no filtering\"),null):(null!=e&&0==e.length?r.logger.warn(\"BooleanFilter \"+this.id+\": booleans is empty, defaulting to no filtering\"):r.logger.warn(\"BooleanFilter \"+this.id+\": booleans was not set, defaulting to no filtering\"),null)},e}(l.Filter);o.BooleanFilter=g,g.__name__=\"BooleanFilter\",g.init_BooleanFilter()},\n", - " function _(t,n,e){var i=t(113),r=t(166),l=t(121),o=t(109),a=t(110),f=t(167),u=function(t){function n(n){return t.call(this,n)||this}return i.__extends(n,t),n.init_Filter=function(){this.define({filter:[l.Array,null]})},n.prototype.compute_indices=function(t){var n=this.filter;return null!=n&&n.length>=0?o.isArrayOf(n,o.isBoolean)?a.range(0,n.length).filter(function(t){return!0===n[t]}):o.isArrayOf(n,o.isInteger)?n:(f.logger.warn(\"Filter \"+this.id+\": filter should either be array of only booleans or only integers, defaulting to no filtering\"),null):(f.logger.warn(\"Filter \"+this.id+\": filter was not set to be an array, defaulting to no filtering\"),null)},n}(r.Model);e.Filter=u,u.__name__=\"Filter\",u.init_Filter()},\n", - " function _(e,t,r){var i=e(113),n=e(294),s=e(121),o=e(125),u=e(127),c=function(t){function r(e){return t.call(this,e)||this}return i.__extends(r,t),r.init_CustomJSFilter=function(){this.define({args:[s.Any,{}],code:[s.String,\"\"],use_strict:[s.Boolean,!1]})},Object.defineProperty(r.prototype,\"names\",{get:function(){return o.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,\"values\",{get:function(){return o.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,\"func\",{get:function(){var e=this.use_strict?u.use_strict(this.code):this.code;return new(Function.bind.apply(Function,i.__spreadArrays([void 0],this.names,[\"source\",\"require\",\"exports\",e])))},enumerable:!0,configurable:!0}),r.prototype.compute_indices=function(r){return this.filter=this.func.apply(this,i.__spreadArrays(this.values,[r,e,{}])),t.prototype.compute_indices.call(this,r)},r}(n.Filter);r.CustomJSFilter=c,c.__name__=\"CustomJSFilter\",c.init_CustomJSFilter()},\n", - " function _(n,i,t){var r=n(113),e=n(294),u=n(121),o=n(167),l=n(110),c=function(n){function i(i){var t=n.call(this,i)||this;return t.indices=null,t}return r.__extends(i,n),i.init_GroupFilter=function(){this.define({column_name:[u.String],group:[u.String]})},i.prototype.compute_indices=function(n){var i=this,t=n.get_column(this.column_name);return null==t?(o.logger.warn(\"group filter: groupby column not found in data source\"),null):(this.indices=l.range(0,n.get_length()||0).filter(function(n){return t[n]===i.group}),0===this.indices.length&&o.logger.warn(\"group filter: group '\"+this.group+\"' did not match any values in column '\"+this.column_name+\"'\"),this.indices)},i}(e.Filter);t.GroupFilter=c,c.__name__=\"GroupFilter\",c.init_GroupFilter()},\n", - " function _(i,n,e){var t=i(113),r=i(294),l=i(121),s=i(167),d=i(109),o=i(110),u=function(i){function n(n){return i.call(this,n)||this}return t.__extends(n,i),n.init_IndexFilter=function(){this.define({indices:[l.Array,null]})},n.prototype.compute_indices=function(i){return null!=this.indices&&this.indices.length>=0?o.every(this.indices,d.isInteger)?this.indices:(s.logger.warn(\"IndexFilter \"+this.id+\": indices should be array of integers, defaulting to no filtering\"),null):(s.logger.warn(\"IndexFilter \"+this.id+\": indices was not set, defaulting to no filtering\"),null)},n}(r.Filter);e.IndexFilter=u,u.__name__=\"IndexFilter\",u.init_IndexFilter()},\n", - " function _(r,t,a){var e=r(208);a.BasicTickFormatter=e.BasicTickFormatter;var c=r(247);a.CategoricalTickFormatter=c.CategoricalTickFormatter;var i=r(251);a.DatetimeTickFormatter=i.DatetimeTickFormatter;var o=r(299);a.FuncTickFormatter=o.FuncTickFormatter;var m=r(264);a.LogTickFormatter=m.LogTickFormatter;var F=r(267);a.MercatorTickFormatter=F.MercatorTickFormatter;var k=r(300);a.NumeralTickFormatter=k.NumeralTickFormatter;var T=r(301);a.PrintfTickFormatter=T.PrintfTickFormatter;var v=r(209);a.TickFormatter=v.TickFormatter},\n", - " function _(t,e,r){var n=t(113),i=t(209),o=t(121),c=t(125),u=t(127),a=function(e){function r(t){return e.call(this,t)||this}return n.__extends(r,e),r.init_FuncTickFormatter=function(){this.define({args:[o.Any,{}],code:[o.String,\"\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(r.prototype,\"names\",{get:function(){return c.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,\"values\",{get:function(){return c.values(this.args)},enumerable:!0,configurable:!0}),r.prototype._make_func=function(){var t=this.use_strict?u.use_strict(this.code):this.code;return new(Function.bind.apply(Function,n.__spreadArrays([void 0,\"tick\",\"index\",\"ticks\"],this.names,[\"require\",\"exports\",t])))},r.prototype.doFormat=function(e,r){var i=this,o=this._make_func().bind({});return e.map(function(e,r,c){return o.apply(void 0,n.__spreadArrays([e,r,c],i.values,[t,{}]))})},r}(i.TickFormatter);r.FuncTickFormatter=a,a.__name__=\"FuncTickFormatter\",a.init_FuncTickFormatter()},\n", - " function _(n,r,t){var e=n(113),o=n(255),i=n(209),a=n(121),u=function(n){function r(r){return n.call(this,r)||this}return e.__extends(r,n),r.init_NumeralTickFormatter=function(){this.define({format:[a.String,\"0,0\"],language:[a.String,\"en\"],rounding:[a.RoundingFunction,\"round\"]})},Object.defineProperty(r.prototype,\"_rounding_fn\",{get:function(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}},enumerable:!0,configurable:!0}),r.prototype.doFormat=function(n,r){var t=this.format,e=this.language,i=this._rounding_fn;return n.map(function(n){return o.format(n,t,e,i)})},r}(i.TickFormatter);t.NumeralTickFormatter=u,u.__name__=\"NumeralTickFormatter\",u.init_NumeralTickFormatter()},\n", - " function _(t,r,n){var i=t(113),o=t(209),e=t(253),f=t(121),a=function(t){function r(r){return t.call(this,r)||this}return i.__extends(r,t),r.init_PrintfTickFormatter=function(){this.define({format:[f.String,\"%s\"]})},r.prototype.doFormat=function(t,r){var n=this;return t.map(function(t){return e.sprintf(n.format,t)})},r}(o.TickFormatter);n.PrintfTickFormatter=a,a.__name__=\"PrintfTickFormatter\",a.init_PrintfTickFormatter()},\n", - " function _(a,e,r){var v=a(303);r.AnnularWedge=v.AnnularWedge;var l=a(304);r.Annulus=l.Annulus;var t=a(305);r.Arc=t.Arc;var i=a(306);r.Bezier=i.Bezier;var n=a(307);r.Circle=n.Circle;var u=a(308);r.CenterRotatable=u.CenterRotatable;var g=a(309);r.Ellipse=g.Ellipse;var c=a(310);r.EllipseOval=c.EllipseOval;var A=a(182);r.Glyph=A.Glyph;var p=a(188);r.HArea=p.HArea;var s=a(311);r.HBar=s.HBar;var R=a(313);r.HexTile=R.HexTile;var d=a(314);r.Image=d.Image;var h=a(316);r.ImageRGBA=h.ImageRGBA;var m=a(317);r.ImageURL=m.ImageURL;var y=a(177);r.Line=y.Line;var B=a(319);r.MultiLine=B.MultiLine;var o=a(320);r.MultiPolygons=o.MultiPolygons;var G=a(321);r.Oval=G.Oval;var H=a(187);r.Patch=H.Patch;var I=a(322);r.Patches=I.Patches;var L=a(323);r.Quad=L.Quad;var P=a(324);r.Quadratic=P.Quadratic;var x=a(325);r.Ray=x.Ray;var C=a(326);r.Rect=C.Rect;var E=a(327);r.Segment=E.Segment;var M=a(328);r.Step=M.Step;var O=a(329);r.Text=O.Text;var Q=a(190);r.VArea=Q.VArea;var S=a(330);r.VBar=S.VBar;var T=a(331);r.Wedge=T.Wedge;var V=a(178);r.XYGlyph=V.XYGlyph},\n", - " function _(t,e,i){var r=t(113),s=t(178),n=t(186),a=t(183),_=t(121),h=t(111),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype._map_data=function(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new Float32Array(this._start_angle.length);for(var t=0,e=this._start_angle.length;t=A&&v.push([m,z])}for(var S=this.model.properties.direction.value(),D=[],V=0,b=v;V=M&&v.push([m,g])}return a.create_hit_test_result_from_hits(v)},r.prototype.draw_legend_for_index=function(i,r,t){var s=r.x0,e=r.y0,a=r.x1,n=r.y1,u=t+1,_=new Array(u);_[t]=(s+a)/2;var h=new Array(u);h[t]=(e+n)/2;var o=.5*Math.min(Math.abs(a-s),Math.abs(n-e)),d=new Array(u);d[t]=.4*o;var l=new Array(u);l[t]=.8*o,this._render(i,[t],{sx:_,sy:h,sinner_radius:d,souter_radius:l})},r}(e.XYGlyphView);t.AnnulusView=_,_.__name__=\"AnnulusView\";var h=function(i){function r(r){return i.call(this,r)||this}return s.__extends(r,i),r.init_Annulus=function(){this.prototype.default_view=_,this.mixins([\"line\",\"fill\"]),this.define({inner_radius:[n.DistanceSpec],outer_radius:[n.DistanceSpec]})},r}(e.XYGlyph);t.Annulus=h,h.__name__=\"Annulus\",h.init_Annulus()},\n", - " function _(i,e,t){var n=i(113),s=i(178),r=i(186),a=i(121),_=function(i){function e(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(e,i),e.prototype._map_data=function(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(i,e,t){var n=t.sx,s=t.sy,r=t.sradius,a=t._start_angle,_=t._end_angle;if(this.visuals.line.doit)for(var o=this.model.properties.direction.value(),c=0,l=e;c1?(p[e]=d,x[e]=d/o):(p[e]=d*o,x[e]=d),this._render(t,[e],{sx:_,sy:l,sw:p,sh:x,_angle:[0]})},i.prototype._bounds=function(t){var i=t.x0,e=t.x1,s=t.y0,h=t.y1;return{x0:i-this.max_w2,x1:e+this.max_w2,y0:s-this.max_h2,y1:h+this.max_h2}},i}(h.CenterRotatableView);e.EllipseOvalView=a,a.__name__=\"EllipseOvalView\";var n=function(t){function i(i){return t.call(this,i)||this}return s.__extends(i,t),i}(h.CenterRotatable);e.EllipseOval=n,n.__name__=\"EllipseOval\"},\n", - " function _(t,i,e){var s=t(113),h=t(312),r=t(121),n=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return s.__extends(i,t),i.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},i.prototype.scentery=function(t){return this.sy[t]},i.prototype._index_data=function(){return this._index_box(this._y.length)},i.prototype._lrtb=function(t){return[Math.min(this._left[t],this._right[t]),Math.max(this._left[t],this._right[t]),this._y[t]+.5*this._height[t],this._y[t]-.5*this._height[t]]},i.prototype._map_data=function(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);var t=this.sy.length;this.stop=new Float64Array(t),this.sbottom=new Float64Array(t);for(var i=0;i0){i=this._image[t];var n=this._image_shape[t];this._height[t]=n[0],this._width[t]=n[1]}else{var r=this._image[t];i=s.concat(r),this._height[t]=r.length,this._width[t]=r[0].length}var _=e.v_compute(i);this._set_image_data_from_buffer(t,_)}},t.prototype._render=function(e,t,a){var i=a.image_data,n=a.sx,r=a.sy,_=a.sw,s=a.sh,o=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1),e.globalAlpha=this.model.global_alpha;for(var h=0,l=t;h0){i=this._image[t].buffer;var n=this._image_shape[t];this._height[t]=n[0],this._width[t]=n[1]}else{var h=this._image[t],s=r.concat(h);i=new ArrayBuffer(4*s.length);for(var _=new Uint32Array(i),l=0,o=s.length;l0&&(_[l]=u)}return h.indices=o.keys(_).map(function(t){return parseInt(t,10)}),h.multiline_indices=_,h},e.prototype.get_interpolation_hit=function(t,e,i){var n=[this._xs[t][e],this._ys[t][e],this._xs[t][e+1],this._ys[t][e+1]],s=n[0],r=n[1],o=n[2],h=n[3];return a.line_interpolation(this.renderer,i,s,r,o,h)},e.prototype.draw_legend_for_index=function(t,e,i){a.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\"not implemented\")},e.prototype.scentery=function(){throw new Error(\"not implemented\")},e}(l.GlyphView);i.MultiLineView=u,u.__name__=\"MultiLineView\";var p=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_MultiLine=function(){this.prototype.default_view=u,this.coords([[\"xs\",\"ys\"]]),this.mixins([\"line\"])},e}(l.Glyph);i.MultiLine=p,p.__name__=\"MultiLine\",p.init_MultiLine()},\n", - " function _(t,i,e){var n=t(113),r=t(179),s=t(182),o=t(186),h=t(110),a=t(114),l=t(183),_=t(109),u=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(i,t),i.prototype._index_data=function(){for(var t=[],i=0,e=this._xs.length;i1)for(var o=1,a=this._xs[i][n].length;o1){for(var c=!1,x=1;x0;){var r=_.find_last_index(s,function(t){return h.isStrictNaN(t)}),o=void 0;r>=0?o=s.splice(r):(o=s,s=[]);var a=o.filter(function(t){return!h.isStrictNaN(t)});e[i].push(a)}}return e},e.prototype._index_data=function(){for(var t=this._build_discontinuous_object(this._xs),e=this._build_discontinuous_object(this._ys),i=[],n=0,r=this._xs.length;n=0,m=i-this.sy1[n]<=this.sh[n]&&i-this.sy1[n]>=0;m&&w&&p.push(n)}var M=a.create_empty_hit_test_result();return M.indices=p,M},s.prototype._map_dist_corner_for_data_side_length=function(t,s,i){for(var e=t.length,h=new Float64Array(e),r=new Float64Array(e),a=0;a1&&(e.stroke(),d=!1)}d?(e.lineTo(b,m),e.lineTo(g,w)):(e.beginPath(),e.moveTo(_[v],u[v]),d=!0),f=v}e.lineTo(_[h-1],u[h-1]),e.stroke()}},t.prototype.draw_legend_for_index=function(e,t,i){r.generic_line_legend(this.visuals,e,t,i)},t}(o.XYGlyphView);i.StepView=a,a.__name__=\"StepView\";var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.init_Step=function(){this.prototype.default_view=a,this.mixins([\"line\"]),this.define({mode:[s.StepMode,\"before\"]})},t}(o.XYGlyph);i.Step=l,l.__name__=\"Step\",l.init_Step()},\n", - " function _(t,e,s){var i=t(113),n=t(178),r=t(183),_=t(121),o=t(226),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._rotate_point=function(t,e,s,i,n){return[(t-s)*Math.cos(n)-(e-i)*Math.sin(n)+s,(t-s)*Math.sin(n)+(e-i)*Math.cos(n)+i]},e.prototype._text_bounds=function(t,e,s,i){return[[t,t+s,t+s,t,t],[e,e,e-i,e-i,e]]},e.prototype._render=function(t,e,s){var i=s.sx,n=s.sy,r=s._x_offset,_=s._y_offset,h=s._angle,a=s._text;this._sys=[],this._sxs=[];for(var u=0,l=e;uo[1]&&(n=o[1]);else{i=o[0],n=o[1];for(var _=0,s=this.plot_view.axis_views;_0||v>0)return{width:y>0?y:void 0,height:v>0?v:void 0}}return{}})},i.prototype.serializable_state=function(){return Object.assign(Object.assign({},t.prototype.serializable_state.call(this)),{bbox:this.layout.bbox.box,children:this.child_views.map(function(t){return t.serializable_state()})})},i}(_.DOMView);e.LayoutDOMView=d,d.__name__=\"LayoutDOMView\";var c=function(t){function i(i){return t.call(this,i)||this}return o.__extends(i,t),i.init_LayoutDOM=function(){this.define({width:[h.Number,null],height:[h.Number,null],min_width:[h.Number,null],min_height:[h.Number,null],max_width:[h.Number,null],max_height:[h.Number,null],margin:[h.Any,[0,0,0,0]],width_policy:[h.Any,\"auto\"],height_policy:[h.Any,\"auto\"],aspect_ratio:[h.Any,null],sizing_mode:[h.SizingMode,null],visible:[h.Boolean,!0],disabled:[h.Boolean,!1],align:[h.Any,\"start\"],background:[h.Color,null],css_classes:[h.Array,[]]})},i}(n.Model);e.LayoutDOM=c,c.__name__=\"LayoutDOM\",c.init_LayoutDOM()},\n", - " function _(t,n,i){var o=t(113),u=t(338),e=t(286),s=t(121),l=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(n,t),n.prototype._update_layout=function(){var t=this.child_views.map(function(t){return t.layout});this.layout=new e.Column(t),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())},n}(u.BoxView);i.ColumnView=l,l.__name__=\"ColumnView\";var _=function(t){function n(n){return t.call(this,n)||this}return o.__extends(n,t),n.init_Column=function(){this.prototype.default_view=l,this.define({rows:[s.Any,\"auto\"]})},n}(u.Box);i.Column=_,_.__name__=\"Column\",_.init_Column()},\n", - " function _(t,i,n){var o=t(113),e=t(339),r=t(286),s=t(121),l=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(i,t),i.prototype.connect_signals=function(){var i=this;t.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return i.rebuild()})},Object.defineProperty(i.prototype,\"child_models\",{get:function(){return this.model.children.map(function(t){return t[0]})},enumerable:!0,configurable:!0}),i.prototype._update_layout=function(){this.layout=new r.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(var t=0,i=this.model.children;tr?(this.wrapper_el.style.maxWidth=r-a.width+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxWidth=\"\",l.undisplay(this.scroll_el))}else{var n=this.header.bbox.height;s.height>n?(this.wrapper_el.style.maxHeight=n-a.height+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxHeight=\"\",l.undisplay(this.scroll_el))}for(var h=this.child_views,o=0,c=h;oi-1&&(t.model.active=i-1)}}),s.appendChild(n)}return s});this.headers_el=l.div({class:[d.bk_headers]},n),this.wrapper_el=l.div({class:d.bk_headers_wrapper},this.headers_el);var h=l.div({class:[_.bk_btn,_.bk_btn_default],disabled:\"\"},l.div({class:[u.bk_caret,c.bk_left]})),o=l.div({class:[_.bk_btn,_.bk_btn_default]},l.div({class:[u.bk_caret,c.bk_right]})),p=0,b=function(e){return function(){var i=t.model.tabs.length;0==(p=\"left\"==e?Math.max(p-1,0):Math.min(p+1,i-1))?h.setAttribute(\"disabled\",\"\"):h.removeAttribute(\"disabled\"),p==i-1?o.setAttribute(\"disabled\",\"\"):o.removeAttribute(\"disabled\");var a=l.children(t.headers_el).slice(0,p).map(function(e){return e.getBoundingClientRect()});if(s){var n=-r.sum(a.map(function(e){return e.width}));t.headers_el.style.left=n+\"px\"}else{var c=-r.sum(a.map(function(e){return e.height}));t.headers_el.style.top=c+\"px\"}}};h.addEventListener(\"click\",b(\"left\")),o.addEventListener(\"click\",b(\"right\")),this.scroll_el=l.div({class:_.bk_btn_group},h,o),this.header_el=l.div({class:[d.bk_tabs_header,c.bk_side(a)]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)},t.prototype.change_active=function(e){e!=this.model.active&&(this.model.active=e,null!=this.model.callback&&this.model.callback.execute(this.model))},t.prototype.on_active_change=function(){for(var e=this.model.active,t=l.children(this.headers_el),i=0,a=t;i .bk-btn {\\n flex-grow: 0;\\n -webkit-flex-grow: 0;\\n height: auto;\\n padding: 4px 4px;\\n}\\n.bk-root .bk-tabs-header .bk-headers-wrapper {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n overflow: hidden;\\n color: #666666;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper {\\n border-bottom: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper {\\n border-left: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper {\\n border-top: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper {\\n border-right: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-above,\\n.bk-root .bk-tabs-header.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers,\\n.bk-root .bk-tabs-header.bk-below .bk-headers {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-left,\\n.bk-root .bk-tabs-header.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers,\\n.bk-root .bk-tabs-header.bk-right .bk-headers {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header .bk-headers {\\n position: relative;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n}\\n.bk-root .bk-tabs-header .bk-tab {\\n padding: 4px 8px;\\n border: solid transparent;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.bk-root .bk-tabs-header .bk-tab:hover {\\n background-color: #f2f2f2;\\n}\\n.bk-root .bk-tabs-header .bk-tab.bk-active {\\n color: #4d4d4d;\\n background-color: white;\\n border-color: #e6e6e6;\\n}\\n.bk-root .bk-tabs-header .bk-tab .bk-close {\\n margin-left: 10px;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-tab {\\n border-width: 3px 1px 0px 1px;\\n border-radius: 4px 4px 0 0;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-tab {\\n border-width: 1px 3px 1px 0px;\\n border-radius: 0 4px 4px 0;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-tab {\\n border-width: 0px 1px 3px 1px;\\n border-radius: 0 0 4px 4px;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-tab {\\n border-width: 1px 0px 1px 3px;\\n border-radius: 4px 0 0 4px;\\n}\\n.bk-root .bk-close {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n vertical-align: middle;\\n background-image: url(\\'data:image/svg+xml;utf8,\\\\\\n \\\\\\n \\\\\\n \\\\\\n \\');\\n}\\n.bk-root .bk-close:hover {\\n background-image: url(\\'data:image/svg+xml;utf8,\\\\\\n \\\\\\n \\\\\\n \\\\\\n \\');\\n}\\n'),n.bk_tabs_header=\"bk-tabs-header\",n.bk_headers_wrapper=\"bk-headers-wrapper\",n.bk_headers=\"bk-headers\",n.bk_tab=\"bk-tab\",n.bk_close=\"bk-close\"},\n", - " function _(n,b,o){n(164),n(163).styles.append(\".bk-root .bk-btn {\\n height: 100%;\\n display: inline-block;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n cursor: pointer;\\n padding: 6px 12px;\\n font-size: 12px;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n outline: 0;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-btn:hover,\\n.bk-root .bk-btn:focus {\\n text-decoration: none;\\n}\\n.bk-root .bk-btn:active,\\n.bk-root .bk-btn.bk-active {\\n background-image: none;\\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n}\\n.bk-root .bk-btn[disabled] {\\n cursor: not-allowed;\\n pointer-events: none;\\n opacity: 0.65;\\n box-shadow: none;\\n}\\n.bk-root .bk-btn-default {\\n color: #333;\\n background-color: #fff;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-default:hover {\\n background-color: #f5f5f5;\\n border-color: #b8b8b8;\\n}\\n.bk-root .bk-btn-default.bk-active {\\n background-color: #ebebeb;\\n border-color: #adadad;\\n}\\n.bk-root .bk-btn-default[disabled],\\n.bk-root .bk-btn-default[disabled]:hover,\\n.bk-root .bk-btn-default[disabled]:focus,\\n.bk-root .bk-btn-default[disabled]:active,\\n.bk-root .bk-btn-default[disabled].bk-active {\\n background-color: #e6e6e6;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-primary {\\n color: #fff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-primary:hover {\\n background-color: #3681c1;\\n border-color: #2c699e;\\n}\\n.bk-root .bk-btn-primary.bk-active {\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n.bk-root .bk-btn-primary[disabled],\\n.bk-root .bk-btn-primary[disabled]:hover,\\n.bk-root .bk-btn-primary[disabled]:focus,\\n.bk-root .bk-btn-primary[disabled]:active,\\n.bk-root .bk-btn-primary[disabled].bk-active {\\n background-color: #506f89;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-success {\\n color: #fff;\\n background-color: #5cb85c;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-success:hover {\\n background-color: #4eb24e;\\n border-color: #409240;\\n}\\n.bk-root .bk-btn-success.bk-active {\\n background-color: #47a447;\\n border-color: #398439;\\n}\\n.bk-root .bk-btn-success[disabled],\\n.bk-root .bk-btn-success[disabled]:hover,\\n.bk-root .bk-btn-success[disabled]:focus,\\n.bk-root .bk-btn-success[disabled]:active,\\n.bk-root .bk-btn-success[disabled].bk-active {\\n background-color: #667b66;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-warning {\\n color: #fff;\\n background-color: #f0ad4e;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-warning:hover {\\n background-color: #eea43b;\\n border-color: #e89014;\\n}\\n.bk-root .bk-btn-warning.bk-active {\\n background-color: #ed9c28;\\n border-color: #d58512;\\n}\\n.bk-root .bk-btn-warning[disabled],\\n.bk-root .bk-btn-warning[disabled]:hover,\\n.bk-root .bk-btn-warning[disabled]:focus,\\n.bk-root .bk-btn-warning[disabled]:active,\\n.bk-root .bk-btn-warning[disabled].bk-active {\\n background-color: #c89143;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-danger {\\n color: #fff;\\n background-color: #d9534f;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-danger:hover {\\n background-color: #d5433e;\\n border-color: #bd2d29;\\n}\\n.bk-root .bk-btn-danger.bk-active {\\n background-color: #d2322d;\\n border-color: #ac2925;\\n}\\n.bk-root .bk-btn-danger[disabled],\\n.bk-root .bk-btn-danger[disabled]:hover,\\n.bk-root .bk-btn-danger[disabled]:focus,\\n.bk-root .bk-btn-danger[disabled]:active,\\n.bk-root .bk-btn-danger[disabled].bk-active {\\n background-color: #a55350;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-group {\\n height: 100%;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-btn-group > .bk-btn {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n}\\n.bk-root .bk-btn-group > .bk-btn + .bk-btn {\\n margin-left: -1px;\\n}\\n.bk-root .bk-btn-group > .bk-btn:first-child:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):last-child {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child) {\\n border-radius: 0;\\n}\\n.bk-root .bk-btn-group .bk-dropdown-toggle {\\n flex: 0 0 0;\\n -webkit-flex: 0 0 0;\\n padding: 6px 6px;\\n}\\n\"),o.bk_btn=\"bk-btn\",o.bk_btn_group=\"bk-btn-group\",o.bk_btn_default=\"bk-btn-default\",o.bk_btn_primary=\"bk-btn-primary\",o.bk_btn_success=\"bk-btn-success\",o.bk_btn_warning=\"bk-btn-warning\",o.bk_btn_danger=\"bk-btn-danger\",o.bk_btn_type=function(n){switch(n){case\"default\":return o.bk_btn_default;case\"primary\":return o.bk_btn_primary;case\"success\":return o.bk_btn_success;case\"warning\":return o.bk_btn_warning;case\"danger\":return o.bk_btn_danger}},o.bk_dropdown_toggle=\"bk-dropdown-toggle\"},\n", - " function _(n,o,r){n(164),n(163).styles.append(\".bk-root .bk-menu {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-menu.bk-above {\\n bottom: 100%;\\n}\\n.bk-root .bk-menu.bk-below {\\n top: 100%;\\n}\\n.bk-root .bk-menu > .bk-divider {\\n height: 1px;\\n margin: 7.5px 0;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-menu > :not(.bk-divider) {\\n padding: 6px 12px;\\n}\\n.bk-root .bk-menu > :not(.bk-divider):hover,\\n.bk-root .bk-menu > :not(.bk-divider).bk-active {\\n background-color: #e6e6e6;\\n}\\n.bk-root .bk-caret {\\n display: inline-block;\\n vertical-align: middle;\\n width: 0;\\n height: 0;\\n margin: 0 5px;\\n}\\n.bk-root .bk-caret.bk-down {\\n border-top: 4px solid;\\n}\\n.bk-root .bk-caret.bk-up {\\n border-bottom: 4px solid;\\n}\\n.bk-root .bk-caret.bk-down,\\n.bk-root .bk-caret.bk-up {\\n border-right: 4px solid transparent;\\n border-left: 4px solid transparent;\\n}\\n.bk-root .bk-caret.bk-left {\\n border-right: 4px solid;\\n}\\n.bk-root .bk-caret.bk-right {\\n border-left: 4px solid;\\n}\\n.bk-root .bk-caret.bk-left,\\n.bk-root .bk-caret.bk-right {\\n border-top: 4px solid transparent;\\n border-bottom: 4px solid transparent;\\n}\\n\"),r.bk_menu=\"bk-menu\",r.bk_caret=\"bk-caret\",r.bk_divider=\"bk-divider\"},\n", - " function _(t,i,n){var e=t(113),o=t(340),_=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return e.__extends(i,t),i}(o.ColumnView);n.WidgetBoxView=_,_.__name__=\"WidgetBoxView\";var u=function(t){function i(i){return t.call(this,i)||this}return e.__extends(i,t),i.init_WidgetBox=function(){this.prototype.default_view=_},i}(o.Column);n.WidgetBox=u,u.__name__=\"WidgetBox\",u.init_WidgetBox()},\n", - " function _(r,a,o){var p=r(351);o.CategoricalColorMapper=p.CategoricalColorMapper;var e=r(353);o.CategoricalMarkerMapper=e.CategoricalMarkerMapper;var C=r(354);o.CategoricalPatternMapper=C.CategoricalPatternMapper;var l=r(211);o.ContinuousColorMapper=l.ContinuousColorMapper;var M=r(212);o.ColorMapper=M.ColorMapper;var t=r(210);o.LinearColorMapper=t.LinearColorMapper;var i=r(355);o.LogColorMapper=i.LogColorMapper},\n", - " function _(t,r,o){var a=t(113),e=t(352),n=t(212),i=t(121),c=function(t){function r(r){return t.call(this,r)||this}return a.__extends(r,t),r.init_CategoricalColorMapper=function(){this.define({factors:[i.Array],start:[i.Number,0],end:[i.Number]})},r.prototype._v_compute=function(t,r,o,a){var n=a.nan_color;e.cat_v_compute(t,this.factors,o,r,this.start,this.end,n)},r}(n.ColorMapper);o.CategoricalColorMapper=c,c.__name__=\"CategoricalColorMapper\",c.init_CategoricalColorMapper()},\n", - " function _(n,t,e){var i=n(114),l=n(109);function r(n,t){if(n.length!=t.length)return!1;for(var e=0,i=n.length;e=e.length?c:e[g],u[a]=d},v=0,_=n.length;v<_;v++)a(v)}},\n", - " function _(r,e,t){var a=r(113),i=r(352),n=r(213),c=r(121),u=function(r){function e(e){return r.call(this,e)||this}return a.__extends(e,r),e.init_CategoricalMarkerMapper=function(){this.define({factors:[c.Array],markers:[c.Array],start:[c.Number,0],end:[c.Number],default_value:[c.MarkerType,\"circle\"]})},e.prototype.v_compute=function(r){var e=new Array(r.length);return i.cat_v_compute(r,this.factors,this.markers,e,this.start,this.end,this.default_value),e},e}(n.Mapper);t.CategoricalMarkerMapper=u,u.__name__=\"CategoricalMarkerMapper\",u.init_CategoricalMarkerMapper()},\n", - " function _(t,e,a){var r=t(113),n=t(352),i=t(213),p=t(121),c=function(t){function e(e){return t.call(this,e)||this}return r.__extends(e,t),e.init_CategoricalPatternMapper=function(){this.define({factors:[p.Array],patterns:[p.Array],start:[p.Number,0],end:[p.Number],default_value:[p.HatchPatternType,\" \"]})},e.prototype.v_compute=function(t){var e=new Array(t.length);return n.cat_v_compute(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e},e}(i.Mapper);a.CategoricalPatternMapper=c,c.__name__=\"CategoricalPatternMapper\",c.init_CategoricalPatternMapper()},\n", - " function _(o,l,n){var t=o(113),e=o(211),r=o(114),i=null!=Math.log1p?Math.log1p:function(o){return Math.log(1+o)},h=function(o){function l(l){return o.call(this,l)||this}return t.__extends(l,o),l.prototype._v_compute=function(o,l,n,t){for(var e=t.nan_color,h=t.low_color,a=t.high_color,u=n.length,s=null!=this.low?this.low:r.min(o),_=null!=this.high?this.high:r.max(o),f=u/(i(_)-i(s)),g=n.length-1,p=0,c=o.length;p_)l[p]=null!=a?a:n[g];else if(M!=_)if(Mg&&(m=g),l[p]=n[m]}else l[p]=n[g]}},l}(e.ContinuousColorMapper);n.LogColorMapper=h,h.__name__=\"LogColorMapper\"},\n", - " function _(r,a,t){!function(r){for(var a in r)t.hasOwnProperty(a)||(t[a]=r[a])}(r(357));var n=r(358);t.Marker=n.Marker;var e=r(359);t.Scatter=e.Scatter},\n", - " function _(e,t,o){var i=e(113),r=e(358),n=Math.sqrt(3);function s(e,t){e.moveTo(-t,t),e.lineTo(t,-t),e.moveTo(-t,-t),e.lineTo(t,t)}function c(e,t){e.moveTo(0,t),e.lineTo(0,-t),e.moveTo(-t,0),e.lineTo(t,0)}function l(e,t){e.moveTo(0,t),e.lineTo(t/1.5,0),e.lineTo(0,-t),e.lineTo(-t/1.5,0),e.closePath()}function a(e,t){var o=t*n,i=o/3;e.moveTo(-t,i),e.lineTo(t,i),e.lineTo(0,i-o),e.closePath()}function u(e,t,o,i,r){var n=.65*o;c(e,o),s(e,n),i.doit&&(i.set_vectorize(e,t),e.stroke())}function v(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function _(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),s(e,o),e.stroke())}function d(e,t,o,i,r){c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function f(e,t,o,i,r){l(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function T(e,t,o,i,r){l(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function z(e,t,o,i,r){!function(e,t){var o=t/2,i=n*o;e.moveTo(t,0),e.lineTo(o,-i),e.lineTo(-o,-i),e.lineTo(-t,0),e.lineTo(-o,i),e.lineTo(o,i),e.closePath()}(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function k(e,t,o,i,r){e.rotate(Math.PI),a(e,o),e.rotate(-Math.PI),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function h(e,t,o,i,r){var n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function m(e,t,o,i,r){var n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function C(e,t,o,i,r){var n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),s(e,o),e.stroke())}function q(e,t,o,i,r){a(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function p(e,t,o,i,r){!function(e,t){e.moveTo(-t,0),e.lineTo(t,0)}(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function x(e,t,o,i,r){s(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function M(e,t){var o,n=function(e){function o(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(o,e),o.initClass=function(){this.prototype._render_one=t},o}(r.MarkerView);n.initClass();var s=((o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.default_view=n},t}(r.Marker)).__name__=e,o);return s.initClass(),s}o.Asterisk=M(\"Asterisk\",u),o.CircleCross=M(\"CircleCross\",v),o.CircleX=M(\"CircleX\",_),o.Cross=M(\"Cross\",d),o.Dash=M(\"Dash\",p),o.Diamond=M(\"Diamond\",f),o.DiamondCross=M(\"DiamondCross\",T),o.Hex=M(\"Hex\",z),o.InvertedTriangle=M(\"InvertedTriangle\",k),o.Square=M(\"Square\",h),o.SquareCross=M(\"SquareCross\",m),o.SquareX=M(\"SquareX\",C),o.Triangle=M(\"Triangle\",q),o.X=M(\"X\",x),o.marker_funcs={asterisk:u,circle:function(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())},circle_cross:v,circle_x:_,cross:d,diamond:f,diamond_cross:T,hex:z,inverted_triangle:k,square:h,square_cross:m,square_x:C,triangle:q,dash:p,x:x}},\n", - " function _(e,t,r){var i=e(113),s=e(178),n=e(183),a=e(121),_=e(110),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype._render=function(e,t,r){for(var i=r.sx,s=r.sy,n=r._size,a=r._angle,_=0,h=t;_#grayscale\\\");\\n /* Firefox 10+, Firefox on Android */\\n filter: gray;\\n /* IE6-9 */\\n -webkit-filter: grayscale(100%);\\n /* Chrome 19+, Safari 6+, Safari 6+ iOS */\\n}\\n.bk-root .bk-logo-small {\\n width: 20px;\\n height: 20px;\\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);\\n}\\n.bk-root .bk-logo-notebook {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 5px;\\n}\\n\"),g.bk_logo=\"bk-logo\",g.bk_logo_notebook=\"bk-logo-notebook\",g.bk_logo_small=\"bk-logo-small\",g.bk_grey=\"bk-grey\"},\n", - " function _(t,e,i){var n=t(113),s=this&&this.__rest||function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s=0},i.prototype.can_redo=function(){return this.state.index=h.end&&(s=!0,h.end=d,(e||i)&&(h.start=d+c)),null!=p&&p<=h.start&&(s=!0,h.start=p,(e||i)&&(h.end=p-c))):(null!=d&&d>=h.start&&(s=!0,h.start=d,(e||i)&&(h.end=d+c)),null!=p&&p<=h.end&&(s=!0,h.end=p,(e||i)&&(h.start=p-c)))}}if(!(i&&s&&n))for(var v=0,g=t;v0&&_0&&_>n&&(l=(n-h)/(_-h)),l=Math.max(0,Math.min(1,l))}return l},i.prototype.update_range=function(t,e,i,n){void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!0),this.pause();var s=this.frame,r=s.x_ranges,a=s.y_ranges;if(null==t){for(var o in r){(h=r[o]).reset()}for(var o in a){(h=a[o]).reset()}this.update_dataranges()}else{var l=[];for(var o in r){var h=r[o];l.push([h,t.xrs[o]])}for(var o in a){h=a[o];l.push([h,t.yrs[o]])}i&&this._update_ranges_together(l),this._update_ranges_individually(l,e,i,n)}this.unpause()},i.prototype.reset_range=function(){this.update_range(null)},i.prototype._invalidate_layout=function(){var t=this;(function(){for(var e=0,i=t.model.side_panels;e=0&&it.model.lod_timeout&&e.interactive_stop(t.model),t.request_paint()},this.model.lod_timeout):e.interactive_stop(this.model)}for(var n in this.renderer_views){var s=this.renderer_views[n];if(null==this.range_update_timestamp||s instanceof l.GlyphRendererView&&s.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}var r=this.canvas_view.ctx,a=this.canvas.pixel_ratio;r.save(),r.scale(a,a),r.translate(.5,.5);var o=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(r,o),this._paint_empty(r,o),this.prepare_webgl(a,o),this.clear_webgl(),this.visuals.outline_line.doit){r.save(),this.visuals.outline_line.set_value(r);var h=o[0],_=o[1],u=o[2],d=o[3];h+u==this.layout._width.value&&(u-=1),_+d==this.layout._height.value&&(d-=1),r.strokeRect(h,_,u,d),r.restore()}this._paint_levels(r,[\"image\",\"underlay\",\"glyph\"],o,!0),this._paint_levels(r,[\"annotation\"],o,!1),this._paint_levels(r,[\"overlay\"],o,!1),null==this._initial_state_info.range&&this.set_initial_range(),r.restore()}},i.prototype._paint_levels=function(t,e,i,n){for(var s=0,r=e;s=0;i--)(_=t[i])&&(s=(o<3?_(s):o>3?_(n,e,s):_(n,e))||s);return o>3&&s&&Object.defineProperty(n,e,s),s};function o(t){return function(n){n.prototype.event_name=t}}var s=function(){function t(){}return t.prototype.to_json=function(){return{event_name:this.event_name,event_values:this._to_json()}},t.prototype._to_json=function(){var t=this.origin;return{model_id:null!=t?t.id:null}},t}();e.BokehEvent=s,s.__name__=\"BokehEvent\";var i=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(s);i.__name__=\"ButtonClick\",i=_([o(\"button_click\")],i),e.ButtonClick=i;var a=function(t){function n(n){var e=t.call(this)||this;return e.item=n,e}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.item;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{item:n})},n}(s);a.__name__=\"MenuItemClick\",a=_([o(\"menu_item_click\")],a),e.MenuItemClick=a;var u=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(s);e.UIEvent=u,u.__name__=\"UIEvent\";var l=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(u);l.__name__=\"LODStart\",l=_([o(\"lodstart\")],l),e.LODStart=l;var c=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(u);c.__name__=\"LODEnd\",c=_([o(\"lodend\")],c),e.LODEnd=c;var p=function(t){function n(n,e){var r=t.call(this)||this;return r.geometry=n,r.final=e,r}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.geometry,e=this.final;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{geometry:n,final:e})},n}(u);p.__name__=\"SelectionGeometry\",p=_([o(\"selectiongeometry\")],p),e.SelectionGeometry=p;var h=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(u);h.__name__=\"Reset\",h=_([o(\"reset\")],h),e.Reset=h;var f=function(t){function n(n,e,r,_){var o=t.call(this)||this;return o.sx=n,o.sy=e,o.x=r,o.y=_,o}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.sx,e=this.sy,r=this.x,_=this.y;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{sx:n,sy:e,x:r,y:_})},n}(u);e.PointEvent=f,f.__name__=\"PointEvent\";var y=function(t){function n(n,e,r,_,o,s){var i=t.call(this,n,e,r,_)||this;return i.sx=n,i.sy=e,i.x=r,i.y=_,i.delta_x=o,i.delta_y=s,i}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.delta_x,e=this.delta_y;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{delta_x:n,delta_y:e})},n}(f);y.__name__=\"Pan\",y=_([o(\"pan\")],y),e.Pan=y;var v=function(t){function n(n,e,r,_,o){var s=t.call(this,n,e,r,_)||this;return s.sx=n,s.sy=e,s.x=r,s.y=_,s.scale=o,s}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.scale;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{scale:n})},n}(f);v.__name__=\"Pinch\",v=_([o(\"pinch\")],v),e.Pinch=v;var d=function(t){function n(n,e,r,_,o){var s=t.call(this,n,e,r,_)||this;return s.sx=n,s.sy=e,s.x=r,s.y=_,s.rotation=o,s}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.rotation;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{rotation:n})},n}(f);d.__name__=\"Rotate\",d=_([o(\"rotate\")],d),e.Rotate=d;var m=function(t){function n(n,e,r,_,o){var s=t.call(this,n,e,r,_)||this;return s.sx=n,s.sy=e,s.x=r,s.y=_,s.delta=o,s}return r.__extends(n,t),n.prototype._to_json=function(){var n=this.delta;return Object.assign(Object.assign({},t.prototype._to_json.call(this)),{delta:n})},n}(f);m.__name__=\"MouseWheel\",m=_([o(\"wheel\")],m),e.MouseWheel=m;var x=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);x.__name__=\"MouseMove\",x=_([o(\"mousemove\")],x),e.MouseMove=x;var j=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);j.__name__=\"MouseEnter\",j=_([o(\"mouseenter\")],j),e.MouseEnter=j;var g=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);g.__name__=\"MouseLeave\",g=_([o(\"mouseleave\")],g),e.MouseLeave=g;var b=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);b.__name__=\"Tap\",b=_([o(\"tap\")],b),e.Tap=b;var O=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);O.__name__=\"DoubleTap\",O=_([o(\"doubletap\")],O),e.DoubleTap=O;var P=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);P.__name__=\"Press\",P=_([o(\"press\")],P),e.Press=P;var E=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);E.__name__=\"PressUp\",E=_([o(\"pressup\")],E),e.PressUp=E;var M=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);M.__name__=\"PanStart\",M=_([o(\"panstart\")],M),e.PanStart=M;var R=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);R.__name__=\"PanEnd\",R=_([o(\"panend\")],R),e.PanEnd=R;var S=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);S.__name__=\"PinchStart\",S=_([o(\"pinchstart\")],S),e.PinchStart=S;var k=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);k.__name__=\"PinchEnd\",k=_([o(\"pinchend\")],k),e.PinchEnd=k;var D=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);D.__name__=\"RotateStart\",D=_([o(\"rotatestart\")],D),e.RotateStart=D;var L=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n}(f);L.__name__=\"RotateEnd\",L=_([o(\"rotateend\")],L),e.RotateEnd=L},\n", - " function _(n,e,i){var o=(\"undefined\"!=typeof window?window.requestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(n){return n(Date.now()),-1};i.throttle=function(n,e){var i=null,t=0,u=!1,d=function(){t=Date.now(),i=null,u=!1,n()};return function(){var n=Date.now(),w=e-(n-t);w<=0&&!u?(null!=i&&clearTimeout(i),u=!0,o(d)):i||u||(i=setTimeout(function(){return o(d)},w))}}},\n", - " function _(e,t,i){var l=e(113),r=e(283),a=e(284),o=e(109),n=Math.PI/2,h=\"left\",s=\"center\",d={above:{parallel:0,normal:-n,horizontal:0,vertical:-n},below:{parallel:0,normal:n,horizontal:0,vertical:n},left:{parallel:-n,normal:0,horizontal:0,vertical:-n},right:{parallel:n,normal:0,horizontal:0,vertical:n}},c={above:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"alphabetic\",vertical:\"middle\"},below:{justified:\"bottom\",parallel:\"hanging\",normal:\"middle\",horizontal:\"hanging\",vertical:\"middle\"},left:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"},right:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"}},p={above:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},below:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},left:{justified:s,parallel:s,normal:\"right\",horizontal:\"right\",vertical:s},right:{justified:s,parallel:s,normal:h,horizontal:h,vertical:s}},b={above:\"right\",below:h,left:\"right\",right:h},_={above:h,below:\"right\",left:\"right\",right:h},m=function(e){function t(t,i){var l=e.call(this)||this;switch(l.side=t,l.obj=i,l.side){case\"above\":l._dim=0,l._normals=[0,-1];break;case\"below\":l._dim=0,l._normals=[0,1];break;case\"left\":l._dim=1,l._normals=[-1,0];break;case\"right\":l._dim=1,l._normals=[1,0];break;default:throw new Error(\"unreachable\")}return l.is_horizontal?l.set_sizing({width_policy:\"max\",height_policy:\"fixed\"}):l.set_sizing({width_policy:\"fixed\",height_policy:\"max\"}),l}return l.__extends(t,e),t.prototype._content_size=function(){return new r.Sizeable(this.get_oriented_size())},t.prototype.get_oriented_size=function(){var e=this.obj.get_size(),t=e.width,i=e.height;return!this.obj.rotate||this.is_horizontal?{width:t,height:i}:{width:i,height:t}},t.prototype.has_size_changed=function(){var e=this.get_oriented_size(),t=e.width,i=e.height;return this.is_horizontal?this.bbox.height!=i:this.bbox.width!=t},Object.defineProperty(t.prototype,\"dimension\",{get:function(){return this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"normals\",{get:function(){return this._normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"is_horizontal\",{get:function(){return 0==this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"is_vertical\",{get:function(){return 1==this._dim},enumerable:!0,configurable:!0}),t.prototype.apply_label_text_heuristics=function(e,t){var i,l,r=this.side;o.isString(t)?(i=c[r][t],l=p[r][t]):0===t?(i=\"whatever\",l=\"whatever\"):t<0?(i=\"middle\",l=b[r]):(i=\"middle\",l=_[r]),e.textBaseline=i,e.textAlign=l},t.prototype.get_label_angle_heuristic=function(e){return d[this.side][e]},t}(a.ContentLayoutable);i.SidePanel=m,m.__name__=\"SidePanel\"},\n", - " function _(t,e,n){var i=t(380),r=t(116),s=t(167),o=t(163),a=t(381),_=t(110),h=t(125),p=t(109),c=t(197),u=t(376),l=function(){function t(t,e,n){var s=this;this.plot_view=t,this.toolbar=e,this.hit_area=n,this.pan_start=new r.Signal(this,\"pan:start\"),this.pan=new r.Signal(this,\"pan\"),this.pan_end=new r.Signal(this,\"pan:end\"),this.pinch_start=new r.Signal(this,\"pinch:start\"),this.pinch=new r.Signal(this,\"pinch\"),this.pinch_end=new r.Signal(this,\"pinch:end\"),this.rotate_start=new r.Signal(this,\"rotate:start\"),this.rotate=new r.Signal(this,\"rotate\"),this.rotate_end=new r.Signal(this,\"rotate:end\"),this.tap=new r.Signal(this,\"tap\"),this.doubletap=new r.Signal(this,\"doubletap\"),this.press=new r.Signal(this,\"press\"),this.pressup=new r.Signal(this,\"pressup\"),this.move_enter=new r.Signal(this,\"move:enter\"),this.move=new r.Signal(this,\"move\"),this.move_exit=new r.Signal(this,\"move:exit\"),this.scroll=new r.Signal(this,\"scroll\"),this.keydown=new r.Signal(this,\"keydown\"),this.keyup=new r.Signal(this,\"keyup\"),this.hammer=new i(this.hit_area,{touchAction:\"auto\"}),this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",function(t){return s._mouse_move(t)}),this.hit_area.addEventListener(\"mouseenter\",function(t){return s._mouse_enter(t)}),this.hit_area.addEventListener(\"mouseleave\",function(t){return s._mouse_exit(t)}),this.hit_area.addEventListener(\"wheel\",function(t){return s._mouse_wheel(t)}),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this)}return t.prototype.destroy=function(){this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)},t.prototype.handleEvent=function(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)},t.prototype._configure_hammerjs=function(){var t=this;this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",function(e){return t._doubletap(e)}),this.hammer.on(\"tap\",function(e){return t._tap(e)}),this.hammer.on(\"press\",function(e){return t._press(e)}),this.hammer.on(\"pressup\",function(e){return t._pressup(e)}),this.hammer.get(\"pan\").set({direction:i.DIRECTION_ALL}),this.hammer.on(\"panstart\",function(e){return t._pan_start(e)}),this.hammer.on(\"pan\",function(e){return t._pan(e)}),this.hammer.on(\"panend\",function(e){return t._pan_end(e)}),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",function(e){return t._pinch_start(e)}),this.hammer.on(\"pinch\",function(e){return t._pinch(e)}),this.hammer.on(\"pinchend\",function(e){return t._pinch_end(e)}),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",function(e){return t._rotate_start(e)}),this.hammer.on(\"rotate\",function(e){return t._rotate(e)}),this.hammer.on(\"rotateend\",function(e){return t._rotate_end(e)})},t.prototype.register_tool=function(t){var e=this,n=t.model.event_type;null!=n&&(p.isString(n)?this._register_tool(t,n):n.forEach(function(n,i){return e._register_tool(t,n,i<1)}))},t.prototype._register_tool=function(t,e,n){void 0===n&&(n=!0);var i=t,r=i.model.id,o=function(t){return function(e){e.id==r&&t(e.e)}},a=function(t){return function(e){t(e.e)}};switch(e){case\"pan\":null!=i._pan_start&&i.connect(this.pan_start,o(i._pan_start.bind(i))),null!=i._pan&&i.connect(this.pan,o(i._pan.bind(i))),null!=i._pan_end&&i.connect(this.pan_end,o(i._pan_end.bind(i)));break;case\"pinch\":null!=i._pinch_start&&i.connect(this.pinch_start,o(i._pinch_start.bind(i))),null!=i._pinch&&i.connect(this.pinch,o(i._pinch.bind(i))),null!=i._pinch_end&&i.connect(this.pinch_end,o(i._pinch_end.bind(i)));break;case\"rotate\":null!=i._rotate_start&&i.connect(this.rotate_start,o(i._rotate_start.bind(i))),null!=i._rotate&&i.connect(this.rotate,o(i._rotate.bind(i))),null!=i._rotate_end&&i.connect(this.rotate_end,o(i._rotate_end.bind(i)));break;case\"move\":null!=i._move_enter&&i.connect(this.move_enter,o(i._move_enter.bind(i))),null!=i._move&&i.connect(this.move,o(i._move.bind(i))),null!=i._move_exit&&i.connect(this.move_exit,o(i._move_exit.bind(i)));break;case\"tap\":null!=i._tap&&i.connect(this.tap,o(i._tap.bind(i)));break;case\"press\":null!=i._press&&i.connect(this.press,o(i._press.bind(i))),null!=i._pressup&&i.connect(this.pressup,o(i._pressup.bind(i)));break;case\"scroll\":null!=i._scroll&&i.connect(this.scroll,o(i._scroll.bind(i)));break;default:throw new Error(\"unsupported event_type: \"+e)}n&&(null!=i._doubletap&&i.connect(this.doubletap,a(i._doubletap.bind(i))),null!=i._keydown&&i.connect(this.keydown,a(i._keydown.bind(i))),null!=i._keyup&&i.connect(this.keyup,a(i._keyup.bind(i))),c.is_mobile&&null!=i._scroll&&\"pinch\"==e&&(s.logger.debug(\"Registering scroll on touch screen\"),i.connect(this.scroll,o(i._scroll.bind(i)))))},t.prototype._hit_test_renderers=function(t,e){for(var n=this.plot_view.get_renderer_views(),i=0,r=_.reversed(n);i\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,n),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===r||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i-1}function b(t){return t.trim().split(/\\s+/g)}function P(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;ni[e]}):n.sort()),n}function w(t,e){for(var i,n,s=e[0].toUpperCase()+e.slice(1),a=0;a1&&!i.firstMultiple?i.firstMultiple=Q(e):1===s&&(i.firstMultiple=!1);var o=i.firstInput,a=i.firstMultiple,h=a?a.center:o.center,u=e.center=tt(n);e.timeStamp=l(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=rt(h,u),e.distance=nt(h,u),function(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Y&&s.eventType!==W||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y});e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}(i,e),e.offsetDirection=it(e.deltaX,e.deltaY);var p=et(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=c(p.x)>c(p.y)?p.x:p.y,e.scale=a?(f=a.pointers,v=n,nt(v[0],v[1],$)/nt(f[0],f[1],$)):1,e.rotation=a?function(t,e){return rt(e[1],e[0],$)+rt(t[1],t[0],$)}(a.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,s,o,a=t.lastInterval||e,h=e.timeStamp-a.timeStamp;if(e.eventType!=q&&(h>X||a.velocity===r)){var u=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,p=et(h,u,l);n=p.x,s=p.y,i=c(p.x)>c(p.y)?p.x:p.y,o=it(u,l),t.lastInterval=e}else i=a.velocity,n=a.velocityX,s=a.velocityY,o=a.direction;e.velocity=i,e.velocityX=n,e.velocityY=s,e.direction=o}(i,e);var f,v;var d=t.element;C(e.srcEvent.target,d)&&(d=e.srcEvent.target);e.target=d}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function Q(t){for(var e=[],i=0;i=c(e)?t<0?H:L:e<0?U:V}function nt(t,e,i){i||(i=B);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function rt(t,e,i){i||(i=B);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}J.prototype={handler:function(){},init:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(R(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&_(this.element,this.evEl,this.domHandler),this.evTarget&&_(this.target,this.evTarget,this.domHandler),this.evWin&&_(R(this.element),this.evWin,this.domHandler)}};var st={mousedown:Y,mousemove:F,mouseup:W},ot=\"mousedown\",at=\"mousemove mouseup\";function ht(){this.evEl=ot,this.evWin=at,this.pressed=!1,J.apply(this,arguments)}T(ht,J,{handler:function(t){var e=st[t.type];e&Y&&0===t.button&&(this.pressed=!0),e&F&&1!==t.which&&(e=W),this.pressed&&(e&W&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var ut={pointerdown:Y,pointermove:F,pointerup:W,pointercancel:q,pointerout:q},ct={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},lt=\"pointerdown\",pt=\"pointermove pointerup pointercancel\";function ft(){this.evEl=lt,this.evWin=pt,J.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(lt=\"MSPointerDown\",pt=\"MSPointerMove MSPointerUp MSPointerCancel\"),T(ft,J,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=ut[n],s=ct[t.pointerType]||t.pointerType,o=\"touch\"==s,a=P(e,t.pointerId,\"pointerId\");r&Y&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):r&(W|q)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var vt={touchstart:Y,touchmove:F,touchend:W,touchcancel:q},dt=\"touchstart\",mt=\"touchstart touchmove touchend touchcancel\";function gt(){this.evTarget=dt,this.evWin=mt,this.started=!1,J.apply(this,arguments)}T(gt,J,{handler:function(t){var e=vt[t.type];if(e===Y&&(this.started=!0),this.started){var i=function(t,e){var i=D(t.touches),n=D(t.changedTouches);e&(W|q)&&(i=x(i.concat(n),\"identifier\",!0));return[i,n]}.call(this,t,e);e&(W|q)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:\"touch\",srcEvent:t})}}});var Tt={touchstart:Y,touchmove:F,touchend:W,touchcancel:q},yt=\"touchstart touchmove touchend touchcancel\";function Et(){this.evTarget=yt,this.targetIds={},J.apply(this,arguments)}T(Et,J,{handler:function(t){var e=Tt[t.type],i=function(t,e){var i=D(t.touches),n=this.targetIds;if(e&(Y|F)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=D(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return C(t.target,h)}),e===Y)for(r=0;r-1&&n.splice(t,1)},It)}}T(_t,J,{handler:function(t,e,i){var n=\"touch\"==i.pointerType,r=\"mouse\"==i.pointerType;if(!(r&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(n)(function(t,e){t&Y?(this.primaryTouch=e.changedPointers[0].identifier,Ct.call(this,e)):t&(W|q)&&Ct.call(this,e)}).call(this,e,i);else if(r&&function(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i=Yt&&n(e.options.event+kt(i))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return Ut.prototype.attrTest.call(this,t)&&(this.state&Nt||!(this.state&Nt)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Ht(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),T(jt,Ut,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[xt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&Nt)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),T(Gt,qt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Pt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||t.eventType&(W|q)&&!r)this.reset();else if(t.eventType&Y)this.reset(),this._timer=p(function(){this.state=Ft,this.tryEmit()},e.time,this);else if(t.eventType&W)return Ft;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===Ft&&(t&&t.eventType&W?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=l(),this.manager.emit(this.options.event,this._input)))}}),T(Zt,Ut,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[xt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&Nt)}}),T(Bt,Ut,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:j|G,pointers:1},getTouchAction:function(){return Vt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(j|G)?e=t.overallVelocity:i&j?e=t.overallVelocityX:i&G&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&c(e)>this.options.velocity&&t.eventType&W},emit:function(t){var e=Ht(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),T($t,qt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Dt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance=2){this.map.setZoom(n);var s=this._get_projected_bounds(),a=s[0];s[1]-a<0&&this.map.setZoom(i)}this.unpause()}this._set_bokeh_ranges()},e.prototype._build_map=function(){var t=this,e=google.maps;this.map_types={satellite:e.MapTypeId.SATELLITE,terrain:e.MapTypeId.TERRAIN,roadmap:e.MapTypeId.ROADMAP,hybrid:e.MapTypeId.HYBRID};var o=this.model.map_options,i={center:new e.LatLng(o.lat,o.lng),zoom:o.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[o.map_type],scaleControl:o.scale_control,tilt:o.tilt};null!=o.styles&&(i.styles=JSON.parse(o.styles)),this.map=new e.Map(this.canvas_view.map_el,i),e.event.addListener(this.map,\"idle\",function(){return t._set_bokeh_ranges()}),e.event.addListener(this.map,\"bounds_changed\",function(){return t._set_bokeh_ranges()}),e.event.addListenerOnce(this.map,\"tilesloaded\",function(){return t._render_finished()}),this.connect(this.model.properties.map_options.change,function(){return t._update_options()}),this.connect(this.model.map_options.properties.styles.change,function(){return t._update_styles()}),this.connect(this.model.map_options.properties.lat.change,function(){return t._update_center(\"lat\")}),this.connect(this.model.map_options.properties.lng.change,function(){return t._update_center(\"lng\")}),this.connect(this.model.map_options.properties.zoom.change,function(){return t._update_zoom()}),this.connect(this.model.map_options.properties.map_type.change,function(){return t._update_map_type()}),this.connect(this.model.map_options.properties.scale_control.change,function(){return t._update_scale_control()}),this.connect(this.model.map_options.properties.tilt.change,function(){return t._update_tilt()})},e.prototype._render_finished=function(){this._tiles_loaded=!0,this.notify_finished()},e.prototype.has_finished=function(){return t.prototype.has_finished.call(this)&&!0===this._tiles_loaded},e.prototype._get_latlon_bounds=function(){var t=this.map.getBounds(),e=t.getNorthEast(),o=t.getSouthWest();return[o.lng(),e.lng(),o.lat(),e.lat()]},e.prototype._get_projected_bounds=function(){var t=this._get_latlon_bounds(),e=t[0],o=t[1],i=t[2],n=t[3],a=s.wgs84_mercator.forward([e,i]),p=a[0],l=a[1],_=s.wgs84_mercator.forward([o,n]);return[p,_[0],l,_[1]]},e.prototype._set_bokeh_ranges=function(){var t=this._get_projected_bounds(),e=t[0],o=t[1],i=t[2],n=t[3];this.frame.x_range.setv({start:e,end:o}),this.frame.y_range.setv({start:i,end:n})},e.prototype._update_center=function(t){var e=this.map.getCenter().toJSON();e[t]=this.model.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()},e.prototype._update_map_type=function(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})},e.prototype._update_scale_control=function(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})},e.prototype._update_tilt=function(){this.map.setOptions({tilt:this.model.map_options.tilt})},e.prototype._update_options=function(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()},e.prototype._update_styles=function(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})},e.prototype._update_zoom=function(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()},e.prototype._map_hook=function(t,e){var o=e[0],i=e[1],n=e[2],s=e[3];this.canvas_view.map_el.style.top=i+\"px\",this.canvas_view.map_el.style.left=o+\"px\",this.canvas_view.map_el.style.width=n+\"px\",this.canvas_view.map_el.style.height=s+\"px\",null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map()},e.prototype._paint_empty=function(t,e){var o=this.layout._width.value,i=this.layout._height.value,n=e[0],s=e[1],a=e[2],p=e[3];t.clearRect(0,0,o,i),t.beginPath(),t.moveTo(0,0),t.lineTo(0,i),t.lineTo(o,i),t.lineTo(o,0),t.lineTo(0,0),t.moveTo(n,s),t.lineTo(n+a,s),t.lineTo(n+a,s+p),t.lineTo(n,s+p),t.lineTo(n,s),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=this.model.border_fill_color,t.fill())},e}(a.PlotView);o.GMapPlotView=l,l.__name__=\"GMapPlotView\"},\n", - " function _(a,n,e){var g=a(281);e.DataRange=g.DataRange;var R=a(280);e.DataRange1d=R.DataRange1d;var r=a(184);e.FactorRange=r.FactorRange;var t=a(185);e.Range=t.Range;var v=a(225);e.Range1d=v.Range1d},\n", - " function _(e,r,d){var n=e(175);d.GlyphRenderer=n.GlyphRenderer;var R=e(192);d.GraphRenderer=R.GraphRenderer;var a=e(244);d.GuideRenderer=a.GuideRenderer;var G=e(160);d.Renderer=G.Renderer},\n", - " function _(a,e,c){var l=a(279);c.CategoricalScale=l.CategoricalScale;var r=a(215);c.LinearScale=r.LinearScale;var S=a(224);c.LogScale=S.LogScale;var i=a(216);c.Scale=i.Scale},\n", - " function _(n,o,e){!function(n){for(var o in n)e.hasOwnProperty(o)||(e[o]=n[o])}(n(195));var i=n(173);e.Selection=i.Selection},\n", - " function _(a,e,r){var o=a(388);r.ServerSentDataSource=o.ServerSentDataSource;var S=a(390);r.AjaxDataSource=S.AjaxDataSource;var t=a(170);r.ColumnDataSource=t.ColumnDataSource;var u=a(171);r.ColumnarDataSource=u.ColumnarDataSource;var D=a(191);r.CDSView=D.CDSView;var c=a(172);r.DataSource=c.DataSource;var v=a(392);r.GeoJSONDataSource=v.GeoJSONDataSource;var n=a(391);r.RemoteDataSource=n.RemoteDataSource},\n", - " function _(t,e,i){var a=t(113),n=function(t){function e(e){var i=t.call(this,e)||this;return i.initialized=!1,i}return a.__extends(e,t),e.prototype.destroy=function(){t.prototype.destroy.call(this)},e.prototype.setup=function(){var t=this;this.initialized||(this.initialized=!0,new EventSource(this.data_url).onmessage=function(e){t.load_data(JSON.parse(e.data),t.mode,t.max_size)})},e}(t(389).WebDataSource);i.ServerSentDataSource=n,n.__name__=\"ServerSentDataSource\"},\n", - " function _(t,a,e){var i=t(113),n=t(170),r=t(121),o=function(t){function a(a){return t.call(this,a)||this}return i.__extends(a,t),a.prototype.get_column=function(t){var a=this.data[t];return null!=a?a:[]},a.prototype.initialize=function(){t.prototype.initialize.call(this),this.setup()},a.prototype.load_data=function(t,a,e){var i,n=this.adapter;switch(i=null!=n?n.execute(this,{response:t}):t,a){case\"replace\":this.data=i;break;case\"append\":for(var r=this.data,o=0,c=this.columns();o1&&a.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");var h=e.coordinates[0];for(c=0;c1&&a.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),d.push(w[0])}for(_=d.reduce(o),c=0;c<_.length;c++){var v=_[c];i=v[0],s=v[1],u=v[2];t.xs[r][c]=i,t.ys[r][c]=s,t.zs[r][c]=l(u)}break;default:throw new Error(\"Invalid GeoJSON geometry type: \"+e.type)}},t.prototype.geojson_to_column_data=function(){var e,t=JSON.parse(this.geojson);switch(t.type){case\"GeometryCollection\":if(null==t.geometries)throw new Error(\"No geometries found in GeometryCollection\");if(0===t.geometries.length)throw new Error(\"geojson.geometries must have one or more items\");e=t.geometries;break;case\"FeatureCollection\":if(null==t.features)throw new Error(\"No features found in FeaturesCollection\");if(0==t.features.length)throw new Error(\"geojson.features must have one or more items\");e=t.features;break;default:throw new Error(\"Bokeh only supports type GeometryCollection and FeatureCollection at top level\")}for(var r=0,o=0,n=e;o=Math.pow(2,i)))&&!(e<0||e>=Math.pow(2,i))},e.prototype.parent_by_tile_xyz=function(t,e,i){var o=this.tile_xyz_to_quadkey(t,e,i),r=o.substring(0,o.length-1);return this.quadkey_to_tile_xyz(r)},e.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},e.prototype.get_resolution_by_extent=function(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]},e.prototype.get_level_by_extent=function(t,e,i){for(var o=(t[2]-t[0])/i,r=(t[3]-t[1])/e,n=Math.max(o,r),_=0,s=0,u=this._resolutions;su[s]){if(0==_)return 0;if(_>0)return _-1}_+=1}return _-1},e.prototype.get_closest_level_by_extent=function(t,e,i){var o=(t[2]-t[0])/i,r=(t[3]-t[1])/e,n=Math.max(o,r),_=this._resolutions.reduce(function(t,e){return Math.abs(e-n)h?(a=_-r,l*=p):(a*=h,l=s-n)}var y=(a-(_-r))/2,c=(l-(s-n))/2;return[r-y,n-c,_+y,s+c]},e.prototype.tms_to_wmts=function(t,e,i){return[t,Math.pow(2,i)-1-e,i]},e.prototype.wmts_to_tms=function(t,e,i){return[t,Math.pow(2,i)-1-e,i]},e.prototype.pixels_to_meters=function(t,e,i){var o=this.get_resolution(i);return[t*o-this.x_origin_offset,e*o-this.y_origin_offset]},e.prototype.meters_to_pixels=function(t,e,i){var o=this.get_resolution(i);return[(t+this.x_origin_offset)/o,(e+this.y_origin_offset)/o]},e.prototype.pixels_to_tile=function(t,e){var i=Math.ceil(t/this.tile_size);return[i=0===i?i:i-1,Math.max(Math.ceil(e/this.tile_size)-1,0)]},e.prototype.pixels_to_raster=function(t,e,i){return[t,(this.tile_size<=a;c--)for(var f=u;f<=p;f++)this.is_valid_tile(f,c,e)&&y.push([f,c,e,this.get_tile_meter_bounds(f,c,e)]);return this.sort_tiles_from_center(y,[u,a,p,h]),y},e.prototype.quadkey_to_tile_xyz=function(t){for(var e=0,i=0,o=t.length,r=o;r>0;r--){var n=1<0;r--){var n=1<0;)if(s=s.substring(0,s.length-1),t=(r=this.quadkey_to_tile_xyz(s))[0],e=r[1],i=r[2],t=(n=this.denormalize_xyz(t,e,i,_))[0],e=n[1],i=n[2],this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]},e.prototype.normalize_xyz=function(t,e,i){if(this.wrap_around){var o=Math.pow(2,i);return[(t%o+o)%o,e,i]}return[t,e,i]},e.prototype.denormalize_xyz=function(t,e,i,o){return[t+o*Math.pow(2,i),e,i]},e.prototype.denormalize_meters=function(t,e,i,o){return[t+2*o*Math.PI*6378137,e]},e.prototype.calculate_world_x_by_tile_xyz=function(t,e,i){return Math.floor(t/Math.pow(2,i))},e}(r.TileSource);i.MercatorTileSource=u,u.__name__=\"MercatorTileSource\",u.init_MercatorTileSource()},\n", - " function _(t,e,r){var i=t(113),n=t(166),o=t(121),a=function(t){function e(e){return t.call(this,e)||this}return i.__extends(e,t),e.init_TileSource=function(){this.define({url:[o.String,\"\"],tile_size:[o.Number,256],max_zoom:[o.Number,30],min_zoom:[o.Number,0],extra_url_vars:[o.Any,{}],attribution:[o.String,\"\"],x_origin_offset:[o.Number],y_origin_offset:[o.Number],initial_resolution:[o.Number]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.tiles=new Map,this._normalize_case()},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.change,function(){return e._clear_cache()})},e.prototype.string_lookup_replace=function(t,e){var r=t;for(var i in e){var n=e[i];r=r.replace(\"{\"+i+\"}\",n)}return r},e.prototype._normalize_case=function(){var t=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=t},e.prototype._clear_cache=function(){this.tiles=new Map},e.prototype.tile_xyz_to_key=function(t,e,r){return t+\":\"+e+\":\"+r},e.prototype.key_to_tile_xyz=function(t){var e=t.split(\":\").map(function(t){return parseInt(t)});return[e[0],e[1],e[2]]},e.prototype.sort_tiles_from_center=function(t,e){var r=e[0],i=e[1],n=e[2],o=e[3],a=(n-r)/2+r,c=(o-i)/2+i;t.sort(function(t,e){return Math.sqrt(Math.pow(a-t[0],2)+Math.pow(c-t[1],2))-Math.sqrt(Math.pow(a-e[0],2)+Math.pow(c-e[1],2))})},e.prototype.get_image_url=function(t,e,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",t.toString()).replace(\"{Y}\",e.toString()).replace(\"{Z}\",r.toString())},e}(n.Model);r.TileSource=a,a.__name__=\"TileSource\",a.init_TileSource()},\n", - " function _(r,e,t){var n=r(132);function o(r,e){return n.wgs84_mercator.forward([r,e])}function _(r,e){return n.wgs84_mercator.inverse([r,e])}t.geographic_to_meters=o,t.meters_to_geographic=_,t.geographic_extent_to_meters=function(r){var e=r[0],t=r[1],n=r[2],_=r[3],c=o(e,t),a=c[0],g=c[1],i=o(n,_);return[a,g,i[0],i[1]]},t.meters_extent_to_geographic=function(r){var e=r[0],t=r[1],n=r[2],o=r[3],c=_(e,t),a=c[0],g=c[1],i=_(n,o);return[a,g,i[0],i[1]]}},\n", - " function _(t,e,r){var _=t(113),i=function(t){function e(e){return t.call(this,e)||this}return _.__extends(e,t),e.prototype.get_image_url=function(t,e,r){var _=this.string_lookup_replace(this.url,this.extra_url_vars),i=this.tms_to_wmts(t,e,r),u=i[0],n=i[1],o=i[2],l=this.tile_xyz_to_quadkey(u,n,o);return _.replace(\"{Q}\",l)},e}(t(397).MercatorTileSource);r.QUADKEYTileSource=i,i.__name__=\"QUADKEYTileSource\"},\n", - " function _(e,t,i){var n=e(113),a=e(402),r=e(176),_=e(225),s=e(163),o=e(121),l=e(318),h=e(110),u=e(109),p=e(174),d=e(170),c=e(403),m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(){this._tiles=[],e.prototype.initialize.call(this)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()}),this.connect(this.model.tile_source.change,function(){return t.request_render()})},t.prototype.get_extent=function(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]},Object.defineProperty(t.prototype,\"map_plot\",{get:function(){return this.plot_model},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"map_canvas\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"map_frame\",{get:function(){return this.plot_view.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"x_range\",{get:function(){return this.map_plot.x_range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"y_range\",{get:function(){return this.map_plot.y_range},enumerable:!0,configurable:!0}),t.prototype._set_data=function(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0},t.prototype._update_attribution=function(){null!=this.attribution_el&&s.removeElement(this.attribution_el);var e=this.model.tile_source.attribution;if(u.isString(e)&&e.length>0){var t=this.plot_view,i=t.layout,n=t.frame,a=i._width.value-n._right.value,r=i._height.value-n._bottom.value,_=n._width.value;this.attribution_el=s.div({class:c.bk_tile_attribution,style:{position:\"absolute\",right:a+\"px\",bottom:r+\"px\",\"max-width\":_-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"7pt\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.events_el.appendChild(this.attribution_el),this.attribution_el.innerHTML=e,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}},t.prototype._map_data=function(){this.initial_extent=this.get_extent();var e=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value),t=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value,e);this.x_range.start=t[0],this.y_range.start=t[1],this.x_range.end=t[2],this.y_range.end=t[3],this.x_range instanceof _.Range1d&&(this.x_range.reset_start=t[0],this.x_range.reset_end=t[2]),this.y_range instanceof _.Range1d&&(this.y_range.reset_start=t[1],this.y_range.reset_end=t[3]),this._update_attribution()},t.prototype._create_tile=function(e,t,i,n,a){var r=this;void 0===a&&(a=!1);var _=this.model.tile_source.normalize_xyz(e,t,i),s=_[0],o=_[1],h=_[2],u={img:void 0,tile_coords:[e,t,i],normalized_coords:[s,o,h],quadkey:this.model.tile_source.tile_xyz_to_quadkey(e,t,i),cache_key:this.model.tile_source.tile_xyz_to_key(e,t,i),bounds:n,loaded:!1,finished:!1,x_coord:n[0],y_coord:n[3]},p=this.model.tile_source.get_image_url(s,o,h);new l.ImageLoader(p,{loaded:function(e){Object.assign(u,{img:e,loaded:!0}),a?(u.finished=!0,r.notify_finished()):r.request_render()},failed:function(){u.finished=!0}}),this.model.tile_source.tiles.set(u.cache_key,u),this._tiles.push(u)},t.prototype._enforce_aspect_ratio=function(){if(this._last_height!==this.map_frame._height.value||this._last_width!==this.map_frame._width.value){var e=this.get_extent(),t=this.model.tile_source.get_level_by_extent(e,this.map_frame._height.value,this.map_frame._width.value),i=this.model.tile_source.snap_to_zoom_level(e,this.map_frame._height.value,this.map_frame._width.value,t);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame._height.value,this._last_width=this.map_frame._width.value}},t.prototype.has_finished=function(){if(!e.prototype.has_finished.call(this))return!1;if(0===this._tiles.length)return!1;for(var t=0,i=this._tiles;tn&&(a=this.extent,o=n,l=!0),l&&(this.x_range.setv({x_range:{start:a[0],end:a[2]}}),this.y_range.setv({start:a[1],end:a[3]}),this.extent=a),this.extent=a;for(var u=t.get_tiles_by_extent(a,o),p=[],d=[],c=[],m=[],f=0,g=u;f0&&(u=u.filter(function(n){return t.includes(e,n.name)})),u}},\n", - " function _(t,o,e){var n=t(113),i=t(370),a=t(201),r=t(121),s=t(373),_=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(o,t),o.prototype._match_aspect=function(t,o,e){var n,i,a,r,s=e.bbox.aspect,_=e.bbox.h_range.end,l=e.bbox.h_range.start,u=e.bbox.v_range.end,p=e.bbox.v_range.start,h=Math.abs(t[0]-o[0]),c=Math.abs(t[1]-o[1]),m=0==c?0:h/c,v=(m>=s?[1,m/s]:[s/m,1])[0];return t[0]<=o[0]?(n=t[0],(i=t[0]+h*v)>_&&(i=_)):(i=t[0],(n=t[0]-h*v)u&&(a=u)):(a=t[1],(r=t[1]-h/s)o.end)&&(this.v_axis_only=!0),(es.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model)},n.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)},n.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\"pan\",{range:this.pan_info})},n.prototype._update=function(t,n){var e,i,o,s,a,r,_=this.plot_view.frame,l=t-this.last_dx,h=n-this.last_dy,d=_.bbox.h_range,p=d.start-l,u=d.end-l,c=_.bbox.v_range,f=c.start-h,v=c.end-h,y=this.model.dimensions;\"width\"!=y&&\"both\"!=y||this.v_axis_only?(e=d.start,i=d.end,o=0):(e=p,i=u,o=-l),\"height\"!=y&&\"both\"!=y||this.h_axis_only?(s=c.start,a=c.end,r=0):(s=f,a=v,r=-h),this.last_dx=t,this.last_dy=n;var m=_.xscales,b=_.yscales,x={};for(var g in m){var w=m[g].r_invert(e,i),P=w[0],T=w[1];x[g]={start:P,end:T}}var k={};for(var g in b){var V=b[g].r_invert(s,a);P=V[0],T=V[1];k[g]={start:P,end:T}}this.pan_info={xrs:x,yrs:k,sdx:o,sdy:r},this.plot_view.update_range(this.pan_info,!0)},n}(o.GestureToolView);e.PanToolView=r,r.__name__=\"PanToolView\";var _=function(t){function n(n){var e=t.call(this,n)||this;return e.tool_name=\"Pan\",e.event_type=\"pan\",e.default_order=10,e}return i.__extends(n,t),n.init_PanTool=function(){this.prototype.default_view=r,this.define({dimensions:[s.Dimensions,\"both\"]})},Object.defineProperty(n.prototype,\"tooltip\",{get:function(){return this._get_dim_tooltip(\"Pan\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,\"icon\",{get:function(){switch(this.dimensions){case\"both\":return a.bk_tool_icon_pan;case\"width\":return a.bk_tool_icon_xpan;case\"height\":return a.bk_tool_icon_ypan}},enumerable:!0,configurable:!0}),n}(o.GestureTool);e.PanTool=_,_.__name__=\"PanTool\",_.init_PanTool()},\n", - " function _(t,e,o){var l=t(113),i=t(426),a=t(233),n=t(163),s=t(121),c=t(110),_=t(373),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.prototype.initialize=function(){t.prototype.initialize.call(this),this.data={sx:[],sy:[]}},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return e._active_change()})},e.prototype._active_change=function(){this.model.active||this._clear_data()},e.prototype._keyup=function(t){t.keyCode==n.Keys.Enter&&this._clear_data()},e.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()},e.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},e.prototype._tap=function(t){var e=t.sx,o=t.sy;this.plot_view.frame.bbox.contains(e,o)&&(this.data.sx.push(e),this.data.sy.push(o),this.model.overlay.update({xs:c.copy(this.data.sx),ys:c.copy(this.data.sy)}))},e.prototype._do_select=function(t,e,o,l){var i={type:\"poly\",sx:t,sy:e};this._select(i,o,l)},e.prototype._emit_callback=function(t){var e=this.computed_renderers[0],o=this.plot_view.frame,l=o.xscales[e.x_range_name],i=o.yscales[e.y_range_name],a=l.v_invert(t.sx),n=i.v_invert(t.sy),s=Object.assign({x:a,y:n},t);null!=this.model.callback&&this.model.callback.execute(this.model,{geometry:s})},e}(i.SelectToolView);o.PolySelectToolView=r,r.__name__=\"PolySelectToolView\";var y=function(){return new a.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:{value:\"lightgrey\"},fill_alpha:{value:.5},line_color:{value:\"black\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},p=function(t){function e(e){var o=t.call(this,e)||this;return o.tool_name=\"Poly Select\",o.icon=_.bk_tool_icon_polygon_select,o.event_type=\"tap\",o.default_order=11,o}return l.__extends(e,t),e.init_PolySelectTool=function(){this.prototype.default_view=r,this.define({callback:[s.Any],overlay:[s.Instance,y]})},e}(i.SelectTool);o.PolySelectTool=p,p.__name__=\"PolySelectTool\",p.init_PolySelectTool()},\n", - " function _(t,e,i){var n=t(113),s=t(201),r=t(167),l=t(121),a=t(370),o=t(373);function _(t){switch(t){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return t}}function h(t,e,i,n){if(null==e)return!1;var s=i.compute(e);return Math.abs(t-s)s.right)&&(r=!1)}if(null!=s.bottom&&null!=s.top){var a=n.invert(e);(as.top)&&(r=!1)}return r}function d(t,e,i){var n=0;return t>=i.start&&t<=i.end&&(n+=1),e>=i.start&&e<=i.end&&(n+=1),n}function c(t,e,i,n){var s=e.compute(t),r=e.invert(s+i);return r>=n.start&&r<=n.end?r:t}function y(t,e,i){return t>e.start?(e.end=t,i):(e.end=e.start,e.start=t,_(i))}function f(t,e,i){return t=h&&(t.start=o,t.end=_)}i.flip_side=_,i.is_near=h,i.is_inside=u,i.sides_inside=d,i.compute_value=c,i.update_range_end_side=y,i.update_range_start_side=f,i.update_range=g;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.initialize=function(){t.prototype.initialize.call(this),this.side=0,this.model.update_overlay_from_ranges()},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return e.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return e.model.update_overlay_from_ranges()})},e.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_view.frame,r=n.xscales.default,l=n.yscales.default,a=this.model.overlay,o=a.left,_=a.right,d=a.top,c=a.bottom,y=this.model.overlay.properties.line_width.value()+s.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(h(t.sx,o,r,y)?this.side=1:h(t.sx,_,r,y)?this.side=2:u(t.sx,t.sy,r,l,a)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&h(t.sy,c,l,y)&&(this.side=4),0==this.side&&h(t.sy,d,l,y)?this.side=5:u(t.sx,t.sy,r,l,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},e.prototype._pan=function(t){var e=this.plot_view.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,s=this.model.x_range,r=this.model.y_range,l=e.xscales.default,a=e.yscales.default;if(null!=s)if(3==this.side||7==this.side)g(s,l,i,e.x_range);else if(1==this.side){var o=c(s.start,l,i,e.x_range);this.side=f(o,s,this.side)}else if(2==this.side){var _=c(s.end,l,i,e.x_range);this.side=y(_,s,this.side)}if(null!=r)if(6==this.side||7==this.side)g(r,a,n,e.y_range);else if(4==this.side){o=c(r.start,a,n,e.y_range);this.side=f(o,r,this.side)}else if(5==this.side){_=c(r.end,a,n,e.y_range);this.side=y(_,r,this.side)}this.last_dx=t.deltaX,this.last_dy=t.deltaY},e.prototype._pan_end=function(t){this.side=0},e}(a.GestureToolView);i.RangeToolView=v,v.__name__=\"RangeToolView\";var p=function(){return new s.BoxAnnotation({level:\"overlay\",render_mode:\"canvas\",fill_color:\"lightgrey\",fill_alpha:{value:.5},line_color:{value:\"black\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},m=function(t){function e(e){var i=t.call(this,e)||this;return i.tool_name=\"Range Tool\",i.icon=o.bk_tool_icon_range,i.event_type=\"pan\",i.default_order=1,i}return n.__extends(e,t),e.init_RangeTool=function(){this.prototype.default_view=v,this.define({x_range:[l.Instance,null],x_interaction:[l.Boolean,!0],y_range:[l.Instance,null],y_interaction:[l.Boolean,!0],overlay:[l.Instance,p]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null},e.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},e}(a.GestureTool);i.RangeTool=m,m.__name__=\"RangeTool\",m.init_RangeTool()},\n", - " function _(e,t,i){var s=e(113),n=e(426),o=e(121),a=e(373),r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s.__extends(t,e),t.prototype._tap=function(e){var t={type:\"point\",sx:e.sx,sy:e.sy},i=e.shiftKey;this._select(t,!0,i)},t.prototype._select=function(e,t,i){var s=this,n=this.model.callback;if(\"select\"==this.model.behavior){var o=this._computed_renderers_by_data_source();for(var a in o){var r=o[a],_=r[0].get_selection_manager(),l=r.map(function(e){return s.plot_view.renderer_views[e.id]});if(_.select(l,e,t,i)&&null!=n){var c=(y=this.plot_view.frame).xscales[r[0].x_range_name],p=y.yscales[r[0].y_range_name],v=c.invert(e.sx),u=p.invert(e.sy),h={geometries:Object.assign(Object.assign({},e),{x:v,y:u}),source:_.source};n.execute(this.model,h)}}this._emit_selection_event(e),this.plot_view.push_state(\"tap\",{selection:this.plot_view.get_selection()})}else for(var m=0,f=this.computed_renderers;m.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)},t.prototype._update_ranges=function(e){var t,n,o,r,i=this.plot_view.frame,a=i.bbox.h_range,s=i.bbox.v_range,l=[a.start,a.end],_=l[0],h=l[1],d=[s.start,s.end],u=d[0],p=d[1];switch(this.model.dimension){case\"height\":var c=Math.abs(p-u);t=_,n=h,o=u-c*e,r=p-c*e;break;case\"width\":var v=Math.abs(h-_);t=_-v*e,n=h-v*e,o=u,r=p;break;default:throw new Error(\"this shouldn't have happened\")}var f=i.xscales,m=i.yscales,w={};for(var b in f){var g=f[b].r_invert(t,n),y=g[0],P=g[1];w[b]={start:y,end:P}}var T={};for(var b in m){var W=m[b].r_invert(o,r);y=W[0],P=W[1];T[b]={start:y,end:P}}var x={xrs:w,yrs:T,factor:e};this.plot_view.push_state(\"wheel_pan\",{range:x}),this.plot_view.update_range(x,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)},t}(r.GestureToolView);n.WheelPanToolView=s,s.__name__=\"WheelPanToolView\";var l=function(e){function t(t){var n=e.call(this,t)||this;return n.tool_name=\"Wheel Pan\",n.icon=a.bk_tool_icon_wheel_pan,n.event_type=\"scroll\",n.default_order=12,n}return o.__extends(t,e),t.init_WheelPanTool=function(){this.prototype.default_view=s,this.define({dimension:[i.Dimension,\"width\"]}),this.internal({speed:[i.Number,.001]})},Object.defineProperty(t.prototype,\"tooltip\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimension)},enumerable:!0,configurable:!0}),t}(r.GestureTool);n.WheelPanTool=l,l.__name__=\"WheelPanTool\",l.init_WheelPanTool()},\n", - " function _(e,o,t){var i=e(113),n=e(370),l=e(416),s=e(121),_=e(197),r=e(373),a=function(e){function o(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(o,e),o.prototype._pinch=function(e){var o,t=e.sx,i=e.sy,n=e.scale;o=n>=1?20*(n-1):-20/n,this._scroll({type:\"wheel\",sx:t,sy:i,delta:o})},o.prototype._scroll=function(e){var o=this.plot_view.frame,t=o.bbox.h_range,i=o.bbox.v_range,n=e.sx,s=e.sy,_=this.model.dimensions,r=(\"width\"==_||\"both\"==_)&&t.start=0){var v=d.match(/\\$color(\\[.*\\])?:(\\w*)/),y=v[1],x=void 0===y?\"\":y,g=v[2],b=e.get_column(g);if(null==b){var w=_.span({},g+\" unknown\");m.appendChild(w);continue}var k=x.indexOf(\"hex\")>=0,T=x.indexOf(\"swatch\")>=0,H=u.isNumber(t)?b[t]:null;if(null==H){var C=_.span({},\"(null)\");m.appendChild(C);continue}k&&(H=h.color2hex(H));var G=_.span({},H);m.appendChild(G),T&&(G=_.span({class:f.bk_tooltip_color_block,style:{backgroundColor:H}},\" \"),m.appendChild(G))}else{(G=_.span()).innerHTML=c.replace_placeholders(d.replace(\"$~\",\"$data_\"),e,t,this.model.formatters,n),m.appendChild(G)}}return o},t}(o.InspectToolView);n.HoverToolView=b,b.__name__=\"HoverToolView\";var w=function(e){function t(t){var n=e.call(this,t)||this;return n.tool_name=\"Hover\",n.icon=y.bk_tool_icon_hover,n}return i.__extends(t,e),t.init_HoverTool=function(){this.prototype.default_view=b,this.define({tooltips:[p.Any,[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[p.Any,{}],renderers:[p.Any,\"auto\"],names:[p.Array,[]],mode:[p.HoverMode,\"mouse\"],point_policy:[p.PointPolicy,\"snap_to_data\"],line_policy:[p.LinePolicy,\"nearest\"],show_arrow:[p.Boolean,!0],anchor:[p.Anchor,\"center\"],attachment:[p.TooltipAttachment,\"horizontal\"],callback:[p.Any]})},t}(o.InspectTool);n.HoverTool=w,w.__name__=\"HoverTool\",w.init_HoverTool()},\n", - " function _(t,e,o){var n=t(113),i=t(121),r=t(116),c=t(166),l=t(364),u=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_ToolProxy=function(){this.define({tools:[i.Array,[]],active:[i.Boolean,!1],disabled:[i.Boolean,!1]})},Object.defineProperty(e.prototype,\"button_view\",{get:function(){return this.tools[0].button_view},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"event_type\",{get:function(){return this.tools[0].event_type},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"tooltip\",{get:function(){return this.tools[0].tooltip},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"tool_name\",{get:function(){return this.tools[0].tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"icon\",{get:function(){return this.tools[0].computed_icon},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"computed_icon\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"toggleable\",{get:function(){var t=this.tools[0];return t instanceof l.InspectTool&&t.toggleable},enumerable:!0,configurable:!0}),e.prototype.initialize=function(){t.prototype.initialize.call(this),this.do=new r.Signal0(this,\"do\")},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.do,function(){return e.doit()}),this.connect(this.properties.active.change,function(){return e.set_active()})},e.prototype.doit=function(){for(var t=0,e=this.tools;t0)if(\"multi\"==u)for(var w=0,T=z;w0&&this.actions.push(x(z))}for(var m in this.inspectors=[],i){(z=i[m]).length>0&&this.inspectors.push(x(z,!0))}for(var V in this.gestures){0!=(_=this.gestures[V]).tools.length&&(_.tools=r.sort_by(_.tools,function(t){return t.default_order}),\"pinch\"!=V&&\"scroll\"!=V&&\"multi\"!=V&&(_.tools[0].active=!0))}},o}(s.ToolbarBase);i.ProxyToolbar=p,p.__name__=\"ProxyToolbar\";var c=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return e.__extends(o,t),o.prototype.initialize=function(){this.model.toolbar.toolbar_location=this.model.toolbar_location,t.prototype.initialize.call(this)},Object.defineProperty(o.prototype,\"child_models\",{get:function(){return[this.model.toolbar]},enumerable:!0,configurable:!0}),o.prototype._update_layout=function(){this.layout=new h.ContentBox(this.child_views[0].el),this.model.toolbar.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})},o}(a.LayoutDOMView);i.ToolbarBoxView=c,c.__name__=\"ToolbarBoxView\";var u=function(t){function o(o){return t.call(this,o)||this}return e.__extends(o,t),o.init_ToolbarBox=function(){this.prototype.default_view=c,this.define({toolbar:[n.Instance],toolbar_location:[n.Location,\"right\"]})},o}(a.LayoutDOM);i.ToolbarBox=u,u.__name__=\"ToolbarBox\",u.init_ToolbarBox()},\n", - " function _(e,n,t){var d=e(106),i=e(163),o=e(442);t.index={},t.add_document_standalone=function(e,n,a,l){void 0===a&&(a={}),void 0===l&&(l=!1);var r={};function v(e){var d;e.id in a?d=a[e.id]:n.classList.contains(o.BOKEH_ROOT)?d=n:(d=i.div({class:o.BOKEH_ROOT}),n.appendChild(d));var l=function(e){var n=new e.default_view({model:e,parent:null});return t.index[e.id]=n,n}(e);l.renderTo(d),r[e.id]=l}for(var c=0,u=e.roots();c\");if(\"SCRIPT\"==r.tagName){var t=n.div({class:o.BOKEH_ROOT});n.replaceWith(r,t),r=t}return r}o.BOKEH_ROOT=t.bk_root,o._resolve_element=function(e){var r=e.elementid;return null!=r?l(r):document.body},o._resolve_root_elements=function(e){var r={};if(null!=e.roots)for(var o in e.roots)r[o]=l(e.roots[o]);return r}},\n", - " function _(n,o,t){var e=n(444),r=n(167),a=n(441);t._get_ws_url=function(n,o){var t,e=\"ws:\";return\"https:\"==window.location.protocol&&(e=\"wss:\"),null!=o?(t=document.createElement(\"a\")).href=o:t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),e+\"//\"+t.host+n+\"/ws\"};var i={};t.add_document_from_session=function(n,o,t,s,u){void 0===s&&(s={}),void 0===u&&(u=!1);var c=window.location.search.substr(1);return function(n,o,t){n in i||(i[n]={});var r=i[n];return o in r||(r[o]=e.pull_session(n,o,t)),r[o]}(n,o,c).then(function(n){return a.add_document_standalone(n.document,t,s,u)},function(n){throw r.logger.error(\"Failed to load Bokeh session \"+o+\": \"+n),n})}},\n", - " function _(e,n,o){var t=e(167),s=e(106),r=e(445),i=e(446),c=e(447);o.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",o.DEFAULT_SESSION_ID=\"default\";var l=0,_=function(){function e(e,n,s,r,c){void 0===e&&(e=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===n&&(n=o.DEFAULT_SESSION_ID),void 0===s&&(s=null),void 0===r&&(r=null),void 0===c&&(c=null),this.url=e,this.id=n,this.args_string=s,this._on_have_session_hook=r,this._on_closed_permanently_hook=c,this._number=l++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._pending_messages=[],this._receiver=new i.Receiver,t.logger.debug(\"Creating websocket \"+this._number+\" to '\"+this.url+\"' session '\"+this.id+\"'\")}return e.prototype.connect=function(){var e=this;if(this.closed_permanently)return Promise.reject(new Error(\"Cannot connect() a closed ClientConnection\"));if(null!=this.socket)return Promise.reject(new Error(\"Already connected\"));this._pending_replies={},this._current_handler=null;try{var n=this.url+\"?bokeh-protocol-version=1.0&bokeh-session-id=\"+this.id;return null!=this.args_string&&this.args_string.length>0&&(n+=\"&\"+this.args_string),this.socket=new WebSocket(n),new Promise(function(n,o){e.socket.binaryType=\"arraybuffer\",e.socket.onopen=function(){return e._on_open(n,o)},e.socket.onmessage=function(n){return e._on_message(n)},e.socket.onclose=function(n){return e._on_close(n)},e.socket.onerror=function(){return e._on_error(o)}})}catch(e){return t.logger.error(\"websocket creation failed to url: \"+this.url),t.logger.error(\" - \"+e),Promise.reject(e)}},e.prototype.close=function(){this.closed_permanently||(t.logger.debug(\"Permanently closing websocket connection \"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\"close method called on ClientConnection \"+this._number),this.session._connection_closed(),null!=this._on_closed_permanently_hook&&(this._on_closed_permanently_hook(),this._on_closed_permanently_hook=null))},e.prototype._schedule_reconnect=function(e){var n=this;setTimeout(function(){n.closed_permanently||t.logger.info(\"Websocket connection \"+n._number+\" disconnected, will not attempt to reconnect\")},e)},e.prototype.send=function(e){if(null==this.socket)throw new Error(\"not connected so cannot send \"+e);e.send(this.socket)},e.prototype.send_with_reply=function(e){var n=this;return new Promise(function(o,t){n._pending_replies[e.msgid()]=[o,t],n.send(e)}).then(function(e){if(\"ERROR\"===e.msgtype())throw new Error(\"Error reply \"+e.content.text);return e},function(e){throw e})},e.prototype._pull_doc_json=function(){var e=r.Message.create(\"PULL-DOC-REQ\",{});return this.send_with_reply(e).then(function(e){if(!(\"doc\"in e.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return e.content.doc},function(e){throw e})},e.prototype._repull_session_doc=function(){var e=this;null==this.session?t.logger.debug(\"Pulling session for first time\"):t.logger.debug(\"Repulling session\"),this._pull_doc_json().then(function(n){if(null==e.session)if(e.closed_permanently)t.logger.debug(\"Got new document after connection was already closed\");else{var o=s.Document.from_json(n),i=s.Document._compute_patch_since_json(n,o);if(i.events.length>0){t.logger.debug(\"Sending \"+i.events.length+\" changes from model construction back to server\");var l=r.Message.create(\"PATCH-DOC\",{},i);e.send(l)}e.session=new c.ClientSession(e,o,e.id);for(var _=0,h=e._pending_messages;_0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");var t=JSON.stringify(this.header),r=JSON.stringify(this.metadata),n=JSON.stringify(this.content);e.send(t),e.send(r),e.send(n)},e.prototype.msgid=function(){return this.header.msgid},e.prototype.msgtype=function(){return this.header.msgtype},e.prototype.reqid=function(){return this.header.reqid},e.prototype.problem=function(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"},e}();r.Message=s,s.__name__=\"Message\"},\n", - " function _(t,e,s){var r=t(445),_=function(){function t(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}return t.prototype.consume=function(t){this._current_consumer(t)},t.prototype._HEADER=function(t){this._assume_text(t),this.message=null,this._partial=null,this._fragments=[t],this._buf_header=null,this._current_consumer=this._METADATA},t.prototype._METADATA=function(t){this._assume_text(t),this._fragments.push(t),this._current_consumer=this._CONTENT},t.prototype._CONTENT=function(t){this._assume_text(t),this._fragments.push(t);var e=this._fragments.slice(0,3),s=e[0],_=e[1],i=e[2];this._partial=r.Message.assemble(s,_,i),this._check_complete()},t.prototype._BUFFER_HEADER=function(t){this._assume_text(t),this._buf_header=t,this._current_consumer=this._BUFFER_PAYLOAD},t.prototype._BUFFER_PAYLOAD=function(t){this._assume_binary(t),this._partial.assemble_buffer(this._buf_header,t),this._check_complete()},t.prototype._assume_text=function(t){if(t instanceof ArrayBuffer)throw new Error(\"Expected text fragment but received binary fragment\")},t.prototype._assume_binary=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")},t.prototype._check_complete=function(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER},t}();s.Receiver=_,_.__name__=\"Receiver\"},\n", - " function _(e,t,n){var o=e(106),i=e(445),r=e(167),s=function(){function e(e,t,n){var o=this;this._connection=e,this.document=t,this.id=n,this._document_listener=function(e){return o._document_changed(e)},this.document.on_change(this._document_listener),this.event_manager=this.document.event_manager,this.event_manager.session=this}return e.prototype.handle=function(e){var t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):r.logger.debug(\"Doing nothing with message \"+e.msgtype())},e.prototype.close=function(){this._connection.close()},e.prototype.send_event=function(e){var t=i.Message.create(\"EVENT\",{},JSON.stringify(e.to_json()));this._connection.send(t)},e.prototype._connection_closed=function(){this.document.remove_on_change(this._document_listener)},e.prototype.request_server_info=function(){var e=i.Message.create(\"SERVER-INFO-REQ\",{});return this._connection.send_with_reply(e).then(function(e){return e.content})},e.prototype.force_roundtrip=function(){return this.request_server_info().then(function(e){})},e.prototype._document_changed=function(e){if(e.setter_id!==this.id&&(!(e instanceof o.ModelChangedEvent)||e.attr in e.model.serializable_attributes())){var t=i.Message.create(\"PATCH-DOC\",{},this.document.create_json_patch([e]));this._connection.send(t)}},e.prototype._handle_patch=function(e){this.document.apply_json_patch(e.content,e.buffers,this.id)},e.prototype._handle_ok=function(e){r.logger.trace(\"Unhandled OK reply to \"+e.reqid())},e.prototype._handle_error=function(e){r.logger.error(\"Unhandled ERROR reply to \"+e.reqid()+\": \"+e.content.text)},e}();n.ClientSession=s,s.__name__=\"ClientSession\"},\n", - " function _(e,o,t){var n=e(106),r=e(446),s=e(167),i=e(125),a=e(441),l=e(442);function c(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);var t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function g(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){s.logger.info(\"Registering Jupyter comms for target \"+e);var n=Jupyter.notebook.kernel.comm_manager;try{n.register_target(e,function(t){s.logger.info(\"Registering Jupyter comms for target \"+e);var n=new r.Receiver;t.on_msg(c.bind(o,n))})}catch(e){s.logger.warn(\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \"+e+\")\")}}else if(o.roots()[0].id in t.kernels){s.logger.info(\"Registering JupyterLab comms for target \"+e);var i=t.kernels[o.roots()[0].id];try{i.registerCommTarget(e,function(t){s.logger.info(\"Registering JupyterLab comms for target \"+e);var n=new r.Receiver;t.onMsg=c.bind(o,n)})}catch(e){s.logger.warn(\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \"+e+\")\")}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}e(374),e(449),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=i.size(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");for(var t=n.Document.from_json(i.values(e)[0]),r=0,s=o;r0&&(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu())},t.prototype._update_completions=function(e){s.empty(this.menu);for(var t=0,n=e;t0&&this.menu.children[0].classList.add(r.bk_active)},t.prototype._show_menu=function(){var e=this;if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,s.display(this.menu);var t=function(n){var i=n.target;i instanceof HTMLElement&&!e.el.contains(i)&&(document.removeEventListener(\"click\",t),e._hide_menu())};document.addEventListener(\"click\",t)}},t.prototype._hide_menu=function(){this._open&&(this._open=!1,s.undisplay(this.menu))},t.prototype._menu_click=function(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())},t.prototype._menu_hover=function(e){if(e.target!=e.currentTarget&&e.target instanceof Element){var t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(r.bk_active),this._hover_index=u.clamp(e,0,t-1),this.menu.children[this._hover_index].classList.add(r.bk_active))},t.prototype._keydown=function(e){},t.prototype._keyup=function(e){switch(e.keyCode){case s.Keys.Enter:this.change_input();break;case s.Keys.Esc:this._hide_menu();break;case s.Keys.Up:this._bump_hover(this._hover_index-1);break;case s.Keys.Down:this._bump_hover(this._hover_index+1);break;default:var t=this.input_el.value;if(t.length *:not(:first-child) {\\n margin-left: 5px;\\n}\\n.bk-root .bk-input-group input[type=\"checkbox\"] + span,\\n.bk-root .bk-input-group input[type=\"radio\"] + span {\\n position: relative;\\n top: -2px;\\n margin-left: 3px;\\n}\\n'),t.bk_input=\"bk-input\",t.bk_input_group=\"bk-input-group\"},\n", - " 482: function _(t,n,i){var e=t(113),o=t(474),u=t(376),c=t(121),r=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e.__extends(n,t),n.prototype.click=function(){this.model.clicks=this.model.clicks+1,this.model.trigger_event(new u.ButtonClick),t.prototype.click.call(this)},n}(o.AbstractButtonView);i.ButtonView=r,r.__name__=\"ButtonView\";var l=function(t){function n(n){return t.call(this,n)||this}return e.__extends(n,t),n.init_Button=function(){this.prototype.default_view=r,this.define({clicks:[c.Number,0]}),this.override({label:\"Button\"})},n}(o.AbstractButton);i.Button=l,l.__name__=\"Button\",l.init_Button()},\n", - " 483: function _(t,e,o){var n=t(113),i=t(484),u=t(163),c=t(117),r=t(121),a=t(240),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),Object.defineProperty(e.prototype,\"active\",{get:function(){return new c.Set(this.model.active)},enumerable:!0,configurable:!0}),e.prototype.change_active=function(t){var e=this.active;e.toggle(t),this.model.active=e.values,null!=this.model.callback&&this.model.callback.execute(this.model)},e.prototype._update_active=function(){var t=this.active;this._buttons.forEach(function(e,o){u.classes(e).toggle(a.bk_active,t.has(o))})},e}(i.ButtonGroupView);o.CheckboxButtonGroupView=h,h.__name__=\"CheckboxButtonGroupView\";var l=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_CheckboxButtonGroup=function(){this.prototype.default_view=h,this.define({active:[r.Array,[]]})},e}(i.ButtonGroup);o.CheckboxButtonGroup=l,l.__name__=\"CheckboxButtonGroup\",l.init_CheckboxButtonGroup()},\n", - " 484: function _(t,n,e){var o=t(113),i=t(475),r=t(163),u=t(121),a=t(347),s=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(n,t),n.prototype.connect_signals=function(){var n=this;t.prototype.connect_signals.call(this);var e=this.model.properties;this.on_change(e.button_type,function(){return n.render()}),this.on_change(e.labels,function(){return n.render()}),this.on_change(e.active,function(){return n._update_active()})},n.prototype.render=function(){var n=this;t.prototype.render.call(this),this._buttons=this.model.labels.map(function(t,e){var o=r.div({class:[a.bk_btn,a.bk_btn_type(n.model.button_type)],disabled:n.model.disabled},t);return o.addEventListener(\"click\",function(){return n.change_active(e)}),o}),this._update_active();var e=r.div({class:a.bk_btn_group},this._buttons);this.el.appendChild(e)},n}(i.ControlView);e.ButtonGroupView=s,s.__name__=\"ButtonGroupView\";var _=function(t){function n(n){return t.call(this,n)||this}return o.__extends(n,t),n.init_ButtonGroup=function(){this.define({labels:[u.Array,[]],button_type:[u.ButtonType,\"default\"],callback:[u.Any]})},n}(i.Control);e.ButtonGroup=_,_.__name__=\"ButtonGroup\",_.init_ButtonGroup()},\n", - " 485: function _(e,t,n){var i=e(113),l=e(486),o=e(163),a=e(110),r=e(117),c=e(121),u=e(240),h=e(481),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){var t=this;e.prototype.render.call(this);var n=o.div({class:[h.bk_input_group,this.model.inline?u.bk_inline:null]});this.el.appendChild(n);for(var i=this.model,l=i.active,r=i.labels,c=function(e){var i=o.input({type:\"checkbox\",value:\"\"+e});i.addEventListener(\"change\",function(){return t.change_active(e)}),p.model.disabled&&(i.disabled=!0),a.includes(l,e)&&(i.checked=!0);var c=o.label({},i,o.span({},r[e]));n.appendChild(c)},p=this,s=0;sn||this._o.position.indexOf(\"right\")>-1&&a-e+t.offsetWidth>0)&&(a=a-e+t.offsetWidth),(this._o.reposition&&r+i>o+s||this._o.position.indexOf(\"top\")>-1&&r-i-t.offsetHeight>0)&&(r=r-i-t.offsetHeight),this.el.style.left=a+\"px\",this.el.style.top=r+\"px\"}};var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()})},e.prototype.render=function(){var e=this;null!=this._picker&&this._picker.destroy(),t.prototype.render.call(this),this.input_el=s.input({type:\"text\",class:r.bk_input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=new a({field:this.input_el,defaultDate:this._unlocal_date(new Date(this.model.value)),setDefaultDate:!0,minDate:null!=this.model.min_date?this._unlocal_date(new Date(this.model.min_date)):void 0,maxDate:null!=this.model.max_date?this._unlocal_date(new Date(this.model.max_date)):void 0,onSelect:function(t){return e._on_select(t)}}),this._root_element.appendChild(this._picker.el)},e.prototype._unlocal_date=function(t){var e=6e4*t.getTimezoneOffset();t.setTime(t.getTime()-e);var i=t.toISOString().substr(0,10).split(\"-\");return new Date(Number(i[0]),Number(i[1])-1,Number(i[2]))},e.prototype._on_select=function(t){this.model.value=t.toDateString(),this.change_input()},e}(o.InputWidgetView);i.DatePickerView=d,d.__name__=\"DatePickerView\";var h=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_DatePicker=function(){this.prototype.default_view=d,this.define({value:[l.Any,(new Date).toDateString()],min_date:[l.Any],max_date:[l.Any]})},e}(o.InputWidget);i.DatePicker=h,h.__name__=\"DatePicker\",h.init_DatePicker()},\n", - " 489: function _(e,t,n){var a=function(e,t,n,a){e.addEventListener(t,n,!!a)},i=function(e,t,n,a){e.removeEventListener(t,n,!!a)},s=function(e,t){return-1!==(\" \"+e.className+\" \").indexOf(\" \"+t+\" \")},o=function(e,t){s(e,t)||(e.className=\"\"===e.className?t:e.className+\" \"+t)},r=function(e,t){var n;e.className=(n=(\" \"+e.className+\" \").replace(\" \"+t+\" \",\" \")).trim?n.trim():n.replace(/^\\s+|\\s+$/g,\"\")},l=function(e){return/Array/.test(Object.prototype.toString.call(e))},h=function(e){return/Date/.test(Object.prototype.toString.call(e))&&!isNaN(e.getTime())},d=function(e){var t=e.getDay();return 0===t||6===t},u=function(e){\n", - " // solution lifted from date.js (MIT license): https://github.com/datejs/Datejs\n", - " return e%4==0&&e%100!=0||e%400==0},c=function(e,t){return[31,u(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]},f=function(e){h(e)&&e.setHours(0,0,0,0)},g=function(e,t){return e.getTime()===t.getTime()},m=function(e,t,n){var a,i;for(a in t)(i=void 0!==e[a])&&\"object\"==typeof t[a]&&null!==t[a]&&void 0===t[a].nodeName?h(t[a])?n&&(e[a]=new Date(t[a].getTime())):l(t[a])?n&&(e[a]=t[a].slice(0)):e[a]=m({},t[a],n):!n&&i||(e[a]=t[a]);return e},p=function(e,t,n){var a;document.createEvent?((a=document.createEvent(\"HTMLEvents\")).initEvent(t,!0,!1),a=m(a,n),e.dispatchEvent(a)):document.createEventObject&&(a=document.createEventObject(),a=m(a,n),e.fireEvent(\"on\"+t,a))},y=function(e){return e.month<0&&(e.year-=Math.ceil(Math.abs(e.month)/12),e.month+=12),e.month>11&&(e.year+=Math.floor(Math.abs(e.month)/12),e.month-=12),e},D={field:null,bound:void 0,ariaLabel:\"Use the arrow keys to pick a date\",position:\"bottom left\",reposition:!0,format:\"YYYY-MM-DD\",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:\"\",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:\"left\",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:\"Previous Month\",nextMonth:\"Next Month\",months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],weekdays:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],weekdaysShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"]},theme:null,events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null,keyboardInput:!0},b=function(e,t,n){for(t+=e.firstDay;t>=7;)t-=7;return n?e.i18n.weekdaysShort[t]:e.i18n.weekdays[t]},_=function(e){var t=[],n=\"false\";if(e.isEmpty){if(!e.showDaysInNextAndPreviousMonths)return'';t.push(\"is-outside-current-month\"),e.enableSelectionDaysInNextAndPreviousMonths||t.push(\"is-selection-disabled\")}return e.isDisabled&&t.push(\"is-disabled\"),e.isToday&&t.push(\"is-today\"),e.isSelected&&(t.push(\"is-selected\"),n=\"true\"),e.hasEvent&&t.push(\"has-event\"),e.isInRange&&t.push(\"is-inrange\"),e.isStartRange&&t.push(\"is-startrange\"),e.isEndRange&&t.push(\"is-endrange\"),'\"},v=function(e,t,n){return''+function(e){e.setHours(0,0,0,0);var t=e.getDate(),n=e.getDay(),a=function(e){return(e+7-1)%7};e.setDate(t+3-a(n));var i=new Date(e.getFullYear(),0,4),s=(e.getTime()-i.getTime())/864e5;return 1+Math.round((s-3+a(i.getDay()))/7)}(new Date(n,t,e))+\"\"},w=function(e,t,n,a){return''+(t?e.reverse():e).join(\"\")+\"\"},k=function(e,t,n,a,i,s){var o,r,h,d,u,c=e._o,f=n===c.minYear,g=n===c.maxYear,m='
',p=!0,y=!0;for(h=[],o=0;o<12;o++)h.push('\");for(d='
'+c.i18n.months[a]+'
\",l(c.yearRange)?(o=c.yearRange[0],r=c.yearRange[1]+1):(o=n-c.yearRange,r=1+n+c.yearRange),h=[];o=c.minYear&&h.push('\");return u='
'+n+c.yearSuffix+'
\",c.showMonthAfterYear?m+=u+d:m+=d+u,f&&(0===a||c.minMonth>=a)&&(p=!1),g&&(11===a||c.maxMonth<=a)&&(y=!1),0===t&&(m+='\"),t===e._o.numberOfMonths-1&&(m+='\"),m+\"
\"},M=function(e,t,n){return''+function(e){var t,n=[];for(e.showWeekNumber&&n.push(\"\"),t=0;t<7;t++)n.push('\");return\"\"+(e.isRTL?n.reverse():n).join(\"\")+\"\"}(e)+(\"\"+t.join(\"\")+\"\")+\"
'+b(e,t,!0)+\"
\"},x=function(e){var t=this,n=t.config(e);t._onMouseDown=function(e){if(t._v){var a=(e=e||window.event).target||e.srcElement;if(a)if(s(a,\"is-disabled\")||(!s(a,\"pika-button\")||s(a,\"is-empty\")||s(a.parentNode,\"is-disabled\")?s(a,\"pika-prev\")?t.prevMonth():s(a,\"pika-next\")&&t.nextMonth():(t.setDate(new Date(a.getAttribute(\"data-pika-year\"),a.getAttribute(\"data-pika-month\"),a.getAttribute(\"data-pika-day\"))),n.bound&&setTimeout(function(){t.hide(),n.blurFieldOnSelect&&n.field&&n.field.blur()},100))),s(a,\"pika-select\"))t._c=!0;else{if(!e.preventDefault)return e.returnValue=!1,!1;e.preventDefault()}}},t._onChange=function(e){var n=(e=e||window.event).target||e.srcElement;n&&(s(n,\"pika-select-month\")?t.gotoMonth(n.value):s(n,\"pika-select-year\")&&t.gotoYear(n.value))},t._onKeyChange=function(e){if(e=e||window.event,t.isVisible())switch(e.keyCode){case 13:case 27:n.field&&n.field.blur();break;case 37:t.adjustDate(\"subtract\",1);break;case 38:t.adjustDate(\"subtract\",7);break;case 39:t.adjustDate(\"add\",1);break;case 40:t.adjustDate(\"add\",7);break;case 8:case 46:t.setDate(null)}},t._parseFieldValue=function(){return n.parse?n.parse(n.field.value,n.format):new Date(Date.parse(n.field.value))},t._onInputChange=function(e){var n;e.firedBy!==t&&(n=t._parseFieldValue(),h(n)&&t.setDate(n),t._v||t.show())},t._onInputFocus=function(){t.show()},t._onInputClick=function(){t.show()},t._onInputBlur=function(){var e=document.activeElement;do{if(s(e,\"pika-single\"))return}while(e=e.parentNode);t._c||(t._b=setTimeout(function(){t.hide()},50)),t._c=!1},t._onClick=function(e){var a=(e=e||window.event).target||e.srcElement,i=a;if(a){do{if(s(i,\"pika-single\")||i===n.trigger)return}while(i=i.parentNode);t._v&&a!==n.trigger&&i!==n.trigger&&t.hide()}},t.el=document.createElement(\"div\"),t.el.className=\"pika-single\"+(n.isRTL?\" is-rtl\":\"\")+(n.theme?\" \"+n.theme:\"\"),a(t.el,\"mousedown\",t._onMouseDown,!0),a(t.el,\"touchend\",t._onMouseDown,!0),a(t.el,\"change\",t._onChange),n.keyboardInput&&a(document,\"keydown\",t._onKeyChange),n.field&&(n.container?n.container.appendChild(t.el):n.bound?document.body.appendChild(t.el):n.field.parentNode.insertBefore(t.el,n.field.nextSibling),a(n.field,\"change\",t._onInputChange),n.defaultDate||(n.defaultDate=t._parseFieldValue(),n.setDefaultDate=!0));var i=n.defaultDate;h(i)?n.setDefaultDate?t.setDate(i,!0):t.gotoDate(i):t.gotoDate(new Date),n.bound?(this.hide(),t.el.className+=\" is-bound\",a(n.trigger,\"click\",t._onInputClick),a(n.trigger,\"focus\",t._onInputFocus),a(n.trigger,\"blur\",t._onInputBlur)):this.show()};x.prototype={config:function(e){this._o||(this._o=m({},D,!0));var t=m(this._o,e,!0);t.isRTL=!!t.isRTL,t.field=t.field&&t.field.nodeName?t.field:null,t.theme=\"string\"==typeof t.theme&&t.theme?t.theme:null,t.bound=!!(void 0!==t.bound?t.field&&t.bound:t.field),t.trigger=t.trigger&&t.trigger.nodeName?t.trigger:t.field,t.disableWeekends=!!t.disableWeekends,t.disableDayFn=\"function\"==typeof t.disableDayFn?t.disableDayFn:null;var n=parseInt(t.numberOfMonths,10)||1;if(t.numberOfMonths=n>4?4:n,h(t.minDate)||(t.minDate=!1),h(t.maxDate)||(t.maxDate=!1),t.minDate&&t.maxDate&&t.maxDate100&&(t.yearRange=100);return t},toString:function(e){return e=e||this._o.format,h(this._d)?this._o.toString?this._o.toString(this._d,e):this._d.toDateString():\"\"},getDate:function(){return h(this._d)?new Date(this._d.getTime()):null},setDate:function(e,t){if(!e)return this._d=null,this._o.field&&(this._o.field.value=\"\",p(this._o.field,\"change\",{firedBy:this})),this.draw();if(\"string\"==typeof e&&(e=new Date(Date.parse(e))),h(e)){var n=this._o.minDate,a=this._o.maxDate;h(n)&&ea&&(e=a),this._d=new Date(e.getTime()),f(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),p(this._o.field,\"change\",{firedBy:this})),t||\"function\"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},clear:function(){this.setDate(null)},gotoDate:function(e){var t=!0;if(h(e)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),a=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),i=e.getTime();a.setMonth(a.getMonth()+1),a.setDate(a.getDate()-1),t=i=i&&(this._y=i,!isNaN(o)&&this._m>o&&(this._m=o));for(var l=0;l\";this.el.innerHTML=r,n.bound&&\"hidden\"!==n.field.type&&setTimeout(function(){n.trigger.focus()},1),\"function\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\"aria-label\",n.ariaLabel)}},adjustPosition:function(){var e,t,n,a,i,s,l,h,d,u,c,f;if(!this._o.container){if(this.el.style.position=\"absolute\",t=e=this._o.trigger,n=this.el.offsetWidth,a=this.el.offsetHeight,i=window.innerWidth||document.documentElement.clientWidth,s=window.innerHeight||document.documentElement.clientHeight,l=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,c=!0,f=!0,\"function\"==typeof e.getBoundingClientRect)h=(u=e.getBoundingClientRect()).left+window.pageXOffset,d=u.bottom+window.pageYOffset;else for(h=t.offsetLeft,d=t.offsetTop+t.offsetHeight;t=t.offsetParent;)h+=t.offsetLeft,d+=t.offsetTop;(this._o.reposition&&h+n>i||this._o.position.indexOf(\"right\")>-1&&h-n+e.offsetWidth>0)&&(h=h-n+e.offsetWidth,c=!1),(this._o.reposition&&d+a>s+l||this._o.position.indexOf(\"top\")>-1&&d-a-e.offsetHeight>0)&&(d=d-a-e.offsetHeight,f=!1),this.el.style.left=h+\"px\",this.el.style.top=d+\"px\",o(this.el,c?\"left-aligned\":\"right-aligned\"),o(this.el,f?\"bottom-aligned\":\"top-aligned\"),r(this.el,c?\"right-aligned\":\"left-aligned\"),r(this.el,f?\"top-aligned\":\"bottom-aligned\")}},render:function(e,t,n){var a=this._o,i=new Date,s=c(e,t),o=new Date(e,t,1).getDay(),r=[],l=[];f(i),a.firstDay>0&&(o-=a.firstDay)<0&&(o+=7);for(var u=0===t?11:t-1,m=11===t?0:t+1,p=0===t?e-1:e,y=11===t?e+1:e,D=c(p,u),b=s+o,k=b;k>7;)k-=7;b+=7-k;for(var x=!1,R=0,N=0;R=s+o,O=R-o+1,E=t,j=e,F=a.startRange&&g(a.startRange,S),W=a.endRange&&g(a.endRange,S),A=a.startRange&&a.endRange&&a.startRangea.maxDate||a.disableWeekends&&d(S)||a.disableDayFn&&a.disableDayFn(S),isEmpty:Y,isStartRange:F,isEndRange:W,isInRange:A,showDaysInNextAndPreviousMonths:a.showDaysInNextAndPreviousMonths,enableSelectionDaysInNextAndPreviousMonths:a.enableSelectionDaysInNextAndPreviousMonths};a.pickWholeWeek&&T&&(x=!0),l.push(_(L)),7==++N&&(a.showWeekNumber&&l.unshift(v(R-o,t,e)),r.push(w(l,a.isRTL,a.pickWholeWeek,x)),l=[],N=0,x=!1)}return M(a,r,n)},isVisible:function(){return this._v},show:function(){this.isVisible()||(this._v=!0,this.draw(),r(this.el,\"is-hidden\"),this._o.bound&&(a(document,\"click\",this._onClick),this.adjustPosition()),\"function\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var e=this._v;!1!==e&&(this._o.bound&&i(document,\"click\",this._onClick),this.el.style.position=\"static\",this.el.style.left=\"auto\",this.el.style.top=\"auto\",o(this.el,\"is-hidden\"),this._v=!1,void 0!==e&&\"function\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var e=this._o;this.hide(),i(this.el,\"mousedown\",this._onMouseDown,!0),i(this.el,\"touchend\",this._onMouseDown,!0),i(this.el,\"change\",this._onChange),e.keyboardInput&&i(document,\"keydown\",this._onKeyChange),e.field&&(i(e.field,\"change\",this._onInputChange),e.bound&&(i(e.trigger,\"click\",this._onInputClick),i(e.trigger,\"focus\",this._onInputFocus),i(e.trigger,\"blur\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t.exports=x},\n", - " 490: function _(n,o,t){n(164),n(163).styles.append('.bk-root {\\n @charset \"UTF-8\";\\n /*!\\n * Pikaday\\n * Copyright © 2014 David Bushell | BSD & MIT license | https://dbushell.com/\\n */\\n /*\\nclear child float (pika-lendar), using the famous micro clearfix hack\\nhttp://nicolasgallagher.com/micro-clearfix-hack/\\n*/\\n /* styling for abbr */\\n}\\n.bk-root .pika-single {\\n z-index: 9999;\\n display: block;\\n position: relative;\\n color: #333;\\n background: #fff;\\n border: 1px solid #ccc;\\n border-bottom-color: #bbb;\\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\\n}\\n.bk-root .pika-single:before,\\n.bk-root .pika-single:after {\\n content: \" \";\\n display: table;\\n}\\n.bk-root .pika-single:after {\\n clear: both;\\n}\\n.bk-root .pika-single.is-hidden {\\n display: none;\\n}\\n.bk-root .pika-single.is-bound {\\n position: absolute;\\n box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5);\\n}\\n.bk-root .pika-lendar {\\n float: left;\\n width: 240px;\\n margin: 8px;\\n}\\n.bk-root .pika-title {\\n position: relative;\\n text-align: center;\\n}\\n.bk-root .pika-label {\\n display: inline-block;\\n position: relative;\\n z-index: 9999;\\n overflow: hidden;\\n margin: 0;\\n padding: 5px 3px;\\n font-size: 14px;\\n line-height: 20px;\\n font-weight: bold;\\n background-color: #fff;\\n}\\n.bk-root .pika-title select {\\n cursor: pointer;\\n position: absolute;\\n z-index: 9998;\\n margin: 0;\\n left: 0;\\n top: 5px;\\n opacity: 0;\\n}\\n.bk-root .pika-prev,\\n.bk-root .pika-next {\\n display: block;\\n cursor: pointer;\\n position: relative;\\n outline: none;\\n border: 0;\\n padding: 0;\\n width: 20px;\\n height: 30px;\\n /* hide text using text-indent trick, using width value (it\\'s enough) */\\n text-indent: 20px;\\n white-space: nowrap;\\n overflow: hidden;\\n background-color: transparent;\\n background-position: center center;\\n background-repeat: no-repeat;\\n background-size: 75% 75%;\\n opacity: 0.5;\\n}\\n.bk-root .pika-prev:hover,\\n.bk-root .pika-next:hover {\\n opacity: 1;\\n}\\n.bk-root .pika-prev,\\n.bk-root .is-rtl .pika-next {\\n float: left;\\n background-image: url(\\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==\\');\\n}\\n.bk-root .pika-next,\\n.bk-root .is-rtl .pika-prev {\\n float: right;\\n background-image: url(\\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=\\');\\n}\\n.bk-root .pika-prev.is-disabled,\\n.bk-root .pika-next.is-disabled {\\n cursor: default;\\n opacity: 0.2;\\n}\\n.bk-root .pika-select {\\n display: inline-block;\\n}\\n.bk-root .pika-table {\\n width: 100%;\\n border-collapse: collapse;\\n border-spacing: 0;\\n border: 0;\\n}\\n.bk-root .pika-table th,\\n.bk-root .pika-table td {\\n width: 14.28571429%;\\n padding: 0;\\n}\\n.bk-root .pika-table th {\\n color: #999;\\n font-size: 12px;\\n line-height: 25px;\\n font-weight: bold;\\n text-align: center;\\n}\\n.bk-root .pika-button {\\n cursor: pointer;\\n display: block;\\n box-sizing: border-box;\\n -moz-box-sizing: border-box;\\n outline: none;\\n border: 0;\\n margin: 0;\\n width: 100%;\\n padding: 5px;\\n color: #666;\\n font-size: 12px;\\n line-height: 15px;\\n text-align: right;\\n background: #f5f5f5;\\n}\\n.bk-root .pika-week {\\n font-size: 11px;\\n color: #999;\\n}\\n.bk-root .is-today .pika-button {\\n color: #33aaff;\\n font-weight: bold;\\n}\\n.bk-root .is-selected .pika-button,\\n.bk-root .has-event .pika-button {\\n color: #fff;\\n font-weight: bold;\\n background: #33aaff;\\n box-shadow: inset 0 1px 3px #178fe5;\\n border-radius: 3px;\\n}\\n.bk-root .has-event .pika-button {\\n background: #005da9;\\n box-shadow: inset 0 1px 3px #0076c9;\\n}\\n.bk-root .is-disabled .pika-button,\\n.bk-root .is-inrange .pika-button {\\n background: #D5E9F7;\\n}\\n.bk-root .is-startrange .pika-button {\\n color: #fff;\\n background: #6CB31D;\\n box-shadow: none;\\n border-radius: 3px;\\n}\\n.bk-root .is-endrange .pika-button {\\n color: #fff;\\n background: #33aaff;\\n box-shadow: none;\\n border-radius: 3px;\\n}\\n.bk-root .is-disabled .pika-button {\\n pointer-events: none;\\n cursor: default;\\n color: #999;\\n opacity: 0.3;\\n}\\n.bk-root .is-outside-current-month .pika-button {\\n color: #999;\\n opacity: 0.3;\\n}\\n.bk-root .is-selection-disabled {\\n pointer-events: none;\\n cursor: default;\\n}\\n.bk-root .pika-button:hover,\\n.bk-root .pika-row.pick-whole-week:hover .pika-button {\\n color: #fff;\\n background: #ff8000;\\n box-shadow: none;\\n border-radius: 3px;\\n}\\n.bk-root .pika-table abbr {\\n border-bottom: none;\\n cursor: help;\\n}\\n')},\n", - " 491: function _(e,t,n){var r=e(113),i=e(252),a=e(492),_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.__extends(t,e),t}(a.AbstractRangeSliderView);n.DateRangeSliderView=_,_.__name__=\"DateRangeSliderView\";var o=function(e){function t(t){var n=e.call(this,t)||this;return n.behaviour=\"drag\",n.connected=[!1,!0,!1],n}return r.__extends(t,e),t.init_DateRangeSlider=function(){this.prototype.default_view=_,this.override({format:\"%d %b %Y\"})},t.prototype._formatter=function(e,t){return i(e,t)},t}(a.AbstractSlider);n.DateRangeSlider=o,o.__name__=\"DateRangeSlider\",o.init_DateRangeSlider()},\n", - " 492: function _(t,e,i){var l=t(113),r=t(493),n=t(121),o=t(163),s=t(110),a=t(119),c=t(475),d=t(494),h=\"bk-noUi-\",_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),Object.defineProperty(e.prototype,\"noUiSlider\",{get:function(){return this.slider_el.noUiSlider},enumerable:!0,configurable:!0}),e.prototype.initialize=function(){t.prototype.initialize.call(this),this._init_callback()},e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this);var i=this.model.properties,l=i.callback,r=i.callback_policy,n=i.callback_throttle;this.on_change([l,r,n],function(){return e._init_callback()});var o=this.model.properties,s=o.start,a=o.end,c=o.value,d=o.step,h=o.title;this.on_change([s,a,c,d],function(){var t=e._calc_to(),i=t.start,l=t.end,r=t.value,n=t.step;e.noUiSlider.updateOptions({range:{min:i,max:l},start:r,step:n})});var _=this.model.properties.bar_color;this.on_change(_,function(){e._set_bar_color()}),this.on_change([c,h],function(){return e._update_title()})},e.prototype._init_callback=function(){var t=this,e=this.model.callback,i=function(){null!=e&&e.execute(t.model),t.model.value_throttled=t.model.value};switch(this.model.callback_policy){case\"continuous\":this.callback_wrapper=i;break;case\"throttle\":this.callback_wrapper=a.throttle(i,this.model.callback_throttle);break;default:this.callback_wrapper=void 0}},e.prototype._update_title=function(){var t=this;o.empty(this.title_el);var e=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=e?\"none\":\"\",!e&&(0!=this.model.title.length&&(this.title_el.textContent=this.model.title+\": \"),this.model.show_value)){var i=this._calc_to().value.map(function(e){return t.model.pretty(e)}).join(\" .. \");this.title_el.appendChild(o.span({class:d.bk_slider_value},i))}},e.prototype._set_bar_color=function(){this.model.disabled||(this.slider_el.querySelector(\".bk-noUi-connect\").style.backgroundColor=this.model.bar_color)},e.prototype._keypress_handle=function(t,e){void 0===e&&(e=0);var i=this._calc_to(),l=i.start,r=i.value,n=i.end,o=i.step,s=2==r.length,a=l,c=n;switch(s&&0==e?c=r[1]:s&&1==e&&(a=r[0]),t.which){case 37:r[e]=Math.max(r[e]-o,a);break;case 39:r[e]=Math.min(r[e]+o,c);break;default:return}s?(this.model.value=r,this.model.properties.value.change.emit()):this.model.value=r[0],this.noUiSlider.set(r),null!=this.callback_wrapper&&this.callback_wrapper()},e.prototype.render=function(){var e=this;t.prototype.render.call(this);var i,l=this._calc_to(),n=l.start,a=l.end,c=l.value,_=l.step;if(this.model.tooltips){var u={to:function(t){return e.model.pretty(t)}};i=s.repeat(u,c.length)}else i=!1;if(null==this.slider_el){this.slider_el=o.div(),r.create(this.slider_el,{cssPrefix:h,range:{min:n,max:a},start:c,step:_,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:i,orientation:this.model.orientation,direction:this.model.direction}),this.noUiSlider.on(\"slide\",function(t,i,l){return e._slide(l)}),this.noUiSlider.on(\"change\",function(t,i,l){return e._change(l)}),this._set_keypress_handles();var p=function(t,l){i&&(e.slider_el.querySelectorAll(\".bk-noUi-handle\")[t].querySelector(\".bk-noUi-tooltip\").style.display=l?\"block\":\"\")};this.noUiSlider.on(\"start\",function(t,e){return p(e,!0)}),this.noUiSlider.on(\"end\",function(t,e){return p(e,!1)})}else this.noUiSlider.updateOptions({range:{min:n,max:a},start:c,step:_});this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=o.div({class:d.bk_slider_title}),this._update_title(),this.group_el=o.div({class:d.bk_input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)},e.prototype._slide=function(t){this.model.value=this._calc_from(t),null!=this.callback_wrapper&&this.callback_wrapper()},e.prototype._change=function(t){switch(this.model.value=this._calc_from(t),this.model.value_throttled=this.model.value,this.model.callback_policy){case\"mouseup\":case\"throttle\":null!=this.model.callback&&this.model.callback.execute(this.model)}},e}(c.ControlView);_.__name__=\"AbstractBaseSliderView\";var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(e):e},e.prototype._set_keypress_handles=function(){var t=this,e=this.slider_el.querySelector(\".bk-noUi-handle\");e.setAttribute(\"tabindex\",\"0\"),e.addEventListener(\"keydown\",function(e){return t._keypress_handle(e)})},e}(_);i.AbstractSliderView=u,u.__name__=\"AbstractSliderView\";var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e.prototype._set_keypress_handles=function(){var t=this,e=this.slider_el.querySelector(\".bk-noUi-handle-lower\"),i=this.slider_el.querySelector(\".bk-noUi-handle-upper\");e.setAttribute(\"tabindex\",\"0\"),e.addEventListener(\"keydown\",function(e){return t._keypress_handle(e,0)}),i.setAttribute(\"tabindex\",\"1\"),i.addEventListener(\"keydown\",function(e){return t._keypress_handle(e,1)})},e}(_);i.AbstractRangeSliderView=p,p.__name__=\"AbstractRangeSliderView\";var m=function(t){function e(e){var i=t.call(this,e)||this;return i.connected=!1,i}return l.__extends(e,t),e.init_AbstractSlider=function(){this.define({title:[n.String,\"\"],show_value:[n.Boolean,!0],start:[n.Any],end:[n.Any],value:[n.Any],value_throttled:[n.Any],step:[n.Number,1],format:[n.String],direction:[n.Any,\"ltr\"],tooltips:[n.Boolean,!0],callback:[n.Any],callback_throttle:[n.Number,200],callback_policy:[n.SliderCallbackPolicy,\"throttle\"],bar_color:[n.Color,\"#e6e6e6\"]})},e.prototype._formatter=function(t,e){return\"\"+t},e.prototype.pretty=function(t){return this._formatter(t,this.format)},e}(c.Control);i.AbstractSlider=m,m.__name__=\"AbstractSlider\",m.init_AbstractSlider()},\n", - " 493: function _(t,e,r){\n", - " /*! nouislider - 10.1.0 - 2017-07-28 17:11:18 */var n;n=function(){\"use strict\";var t=\"10.1.0\";function e(t){t.preventDefault()}function r(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function n(t,e,r){r>0&&(s(t,e),setTimeout(function(){a(t,e)},r))}function i(t){return Array.isArray(t)?t:[t]}function o(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function s(t,e){t.classList?t.classList.add(e):t.className+=\" \"+e}function a(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function l(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function u(t,e){return 100/(e-t)}function c(t,e){return 100*e/(t[1]-t[0])}function p(t,e){for(var r=1;t>=e[r];)r+=1;return r}function f(t,e,r){if(r>=t.slice(-1)[0])return 100;var n,i,o,s,a=p(r,t);return n=t[a-1],i=t[a],o=e[a-1],s=e[a],o+function(t,e){return c(t,t[0]<0?e+Math.abs(t[0]):e-t[0])}([n,i],r)/u(o,s)}function d(t,e,r,n){if(100===n)return n;var i,o,s=p(n,t);return r?n-(i=t[s-1])>((o=t[s])-i)/2?o:i:e[s-1]?t[s-1]+function(t,e){return Math.round(t/e)*e}(n-t[s-1],e[s-1]):n}function h(e,n,i){var o;if(\"number\"==typeof n&&(n=[n]),\"[object Array]\"!==Object.prototype.toString.call(n))throw new Error(\"noUiSlider (\"+t+\"): 'range' contains invalid value.\");if(!r(o=\"min\"===e?0:\"max\"===e?100:parseFloat(e))||!r(n[0]))throw new Error(\"noUiSlider (\"+t+\"): 'range' value isn't numeric.\");i.xPct.push(o),i.xVal.push(n[0]),o?i.xSteps.push(!isNaN(n[1])&&n[1]):isNaN(n[1])||(i.xSteps[0]=n[1]),i.xHighestCompleteStep.push(0)}function m(t,e,r){if(!e)return!0;r.xSteps[t]=c([r.xVal[t],r.xVal[t+1]],e)/u(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}function g(t,e,r){this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var n,i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&\"object\"==typeof i[0][0]?i.sort(function(t,e){return t[0][0]-e[0][0]}):i.sort(function(t,e){return t[0]-e[0]}),n=0;n=100)return t.slice(-1)[0];var n,i=p(r,e);return function(t,e){return e*(t[1]-t[0])/100+t[0]}([t[i-1],t[i]],(r-(n=e[i-1]))*u(n,e[i]))}(this.xVal,this.xPct,t)},g.prototype.getStep=function(t){return t=d(this.xPct,this.xSteps,this.snap,t)},g.prototype.getNearbySteps=function(t){var e=p(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e-0],step:this.xNumSteps[e-0],highestStep:this.xHighestCompleteStep[e-0]}}},g.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(o);return Math.max.apply(null,t)},g.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var v={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number};function b(e){if(function(t){return\"object\"==typeof t&&\"function\"==typeof t.to&&\"function\"==typeof t.from}(e))return!0;throw new Error(\"noUiSlider (\"+t+\"): 'format' requires 'to' and 'from' methods.\")}function S(e,n){if(!r(n))throw new Error(\"noUiSlider (\"+t+\"): 'step' is not numeric.\");e.singleStep=n}function w(e,r){if(\"object\"!=typeof r||Array.isArray(r))throw new Error(\"noUiSlider (\"+t+\"): 'range' is not an object.\");if(void 0===r.min||void 0===r.max)throw new Error(\"noUiSlider (\"+t+\"): Missing 'min' or 'max' in 'range'.\");if(r.min===r.max)throw new Error(\"noUiSlider (\"+t+\"): 'range' 'min' and 'max' cannot be equal.\");e.spectrum=new g(r,e.snap,e.singleStep)}function x(e,r){if(r=i(r),!Array.isArray(r)||!r.length)throw new Error(\"noUiSlider (\"+t+\"): 'start' option is incorrect.\");e.handles=r.length,e.start=r}function y(e,r){if(e.snap=r,\"boolean\"!=typeof r)throw new Error(\"noUiSlider (\"+t+\"): 'snap' option must be a boolean.\")}function E(e,r){if(e.animate=r,\"boolean\"!=typeof r)throw new Error(\"noUiSlider (\"+t+\"): 'animate' option must be a boolean.\")}function C(e,r){if(e.animationDuration=r,\"number\"!=typeof r)throw new Error(\"noUiSlider (\"+t+\"): 'animationDuration' option must be a number.\")}function N(e,r){var n,i=[!1];if(\"lower\"===r?r=[!0,!1]:\"upper\"===r&&(r=[!1,!0]),!0===r||!1===r){for(n=1;n=50)throw new Error(\"noUiSlider (\"+t+\"): 'padding' option must be less than half the range.\")}}function O(e,r){switch(r){case\"ltr\":e.dir=0;break;case\"rtl\":e.dir=1;break;default:throw new Error(\"noUiSlider (\"+t+\"): 'direction' option was not recognized.\")}}function k(e,r){if(\"string\"!=typeof r)throw new Error(\"noUiSlider (\"+t+\"): 'behaviour' must be a string containing options.\");var n=r.indexOf(\"tap\")>=0,i=r.indexOf(\"drag\")>=0,o=r.indexOf(\"fixed\")>=0,s=r.indexOf(\"snap\")>=0,a=r.indexOf(\"hover\")>=0;if(o){if(2!==e.handles)throw new Error(\"noUiSlider (\"+t+\"): 'fixed' behaviour must be used with 2 handles\");P(e,e.start[1]-e.start[0])}e.events={tap:n||s,drag:i,fixed:o,snap:s,hover:a}}function V(e,r){if(e.multitouch=r,\"boolean\"!=typeof r)throw new Error(\"noUiSlider (\"+t+\"): 'multitouch' option must be a boolean.\")}function F(e,r){if(!1!==r)if(!0===r){e.tooltips=[];for(var n=0;n-1?1:\"steps\"===e?2:0,!o&&a&&(h=0),c===S&&l||(i[f.toFixed(5)]=[c,h]),u=f}}),i}(n,r,o),a=e.format||{to:Math.round};return h=S.appendChild(F(s,i,a))}function j(){var t=c.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][o.ort];return 0===o.ort?t.width||c[e]:t.height||c[e]}function H(t,e,r,n){var i=function(i){return!S.hasAttribute(\"disabled\")&&(s=S,a=o.cssClasses.tap,(s.classList?!s.classList.contains(a):!new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&(!!(i=function(t,e,r){var n,i,s=0===t.type.indexOf(\"touch\"),a=0===t.type.indexOf(\"mouse\"),u=0===t.type.indexOf(\"pointer\");0===t.type.indexOf(\"MSPointer\")&&(u=!0);if(s&&o.multitouch){var c=function(t){return t.target===r||r.contains(t.target)};if(\"touchstart\"===t.type){var p=Array.prototype.filter.call(t.touches,c);if(p.length>1)return!1;n=p[0].pageX,i=p[0].pageY}else{var f=Array.prototype.find.call(t.changedTouches,c);if(!f)return!1;n=f.pageX,i=f.pageY}}else if(s){if(t.touches.length>1)return!1;n=t.changedTouches[0].pageX,i=t.changedTouches[0].pageY}e=e||l(U),(a||u)&&(n=t.clientX+e.x,i=t.clientY+e.y);return t.pageOffset=e,t.points=[n,i],t.cursor=a||u,t}(i,n.pageOffset,n.target||e))&&(!(t===v.start&&void 0!==i.buttons&&i.buttons>1)&&((!n.hover||!i.buttons)&&(b||i.preventDefault(),i.calcPoint=i.points[o.ort],void r(i,n))))));var s,a},s=[];return t.split(\" \").forEach(function(t){e.addEventListener(t,i,!!b&&{passive:!0}),s.push([t,i])}),s}function D(t){var e,r,n,i,s,a,u=100*(t-(e=c,r=o.ort,n=e.getBoundingClientRect(),i=e.ownerDocument,s=i.documentElement,a=l(i),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(a.x=0),r?n.top+a.y-s.clientTop:n.left+a.x-s.clientLeft))/j();return o.dir?100-u:u}function T(t,e,r,n){var i=r.slice(),o=[!t,t],s=[t,!t];n=n.slice(),t&&n.reverse(),n.length>1?n.forEach(function(t,r){var n=$(i,t,i[t]+e,o[r],s[r],!1);!1===n?e=0:(e=n-i[t],i[t]=n)}):o=s=[!0];var a=!1;n.forEach(function(t,n){a=K(t,r[t]+e,o[n],s[n])||a}),a&&n.forEach(function(t){R(\"update\",t),R(\"slide\",t)})}function R(t,e,r){Object.keys(N).forEach(function(n){var i=n.split(\".\")[0];t===i&&N[n].forEach(function(t){t.call(d,C.map(o.format.to),e,C.slice(),r||!1,w.slice())})})}function X(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&Y(t,e)}function B(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return Y(t,e);var r=(o.dir?-1:1)*(t.calcPoint-e.startCalcPoint);T(r>0,100*r/e.baseSize,e.locations,e.handleNumbers)}function Y(t,r){r.handle&&(a(r.handle,o.cssClasses.active),y-=1),r.listeners.forEach(function(t){P.removeEventListener(t[0],t[1])}),0===y&&(a(S,o.cssClasses.drag),J(),t.cursor&&(A.style.cursor=\"\",A.removeEventListener(\"selectstart\",e))),r.handleNumbers.forEach(function(t){R(\"change\",t),R(\"set\",t),R(\"end\",t)})}function _(t,r){var n;if(1===r.handleNumbers.length){var i=p[r.handleNumbers[0]];if(i.hasAttribute(\"disabled\"))return!1;n=i.children[0],y+=1,s(n,o.cssClasses.active)}t.stopPropagation();var a=[],l=H(v.move,P,B,{target:t.target,handle:n,listeners:a,startCalcPoint:t.calcPoint,baseSize:j(),pageOffset:t.pageOffset,handleNumbers:r.handleNumbers,buttonsProperty:t.buttons,locations:w.slice()}),u=H(v.end,P,Y,{target:t.target,handle:n,listeners:a,handleNumbers:r.handleNumbers}),c=H(\"mouseout\",P,X,{target:t.target,handle:n,listeners:a,handleNumbers:r.handleNumbers});a.push.apply(a,l.concat(u,c)),t.cursor&&(A.style.cursor=getComputedStyle(t.target).cursor,p.length>1&&s(S,o.cssClasses.drag),A.addEventListener(\"selectstart\",e,!1)),r.handleNumbers.forEach(function(t){R(\"start\",t)})}function I(t){t.stopPropagation();var e=D(t.calcPoint),r=function(t){var e=100,r=!1;return p.forEach(function(n,i){if(!n.hasAttribute(\"disabled\")){var o=Math.abs(w[i]-t);o1&&(n&&e>0&&(r=Math.max(r,t[e-1]+o.margin)),i&&e1&&o.limit&&(n&&e>0&&(r=Math.min(r,t[e-1]+o.limit)),i&&e50?-1:1,r=3+(p.length+e*t);p[t].childNodes[0].style.zIndex=r})}function K(t,e,r,n){return!1!==(e=$(w,t,e,r,n,!1))&&(function(t,e){w[t]=e,C[t]=E.fromStepping(e);var r=function(){p[t].style[o.style]=G(e),Q(t),Q(t+1)};window.requestAnimationFrame&&o.useRequestAnimationFrame?window.requestAnimationFrame(r):r()}(t,e),!0)}function Q(t){if(f[t]){var e=0,r=100;0!==t&&(e=w[t-1]),t!==f.length-1&&(r=w[t]),f[t].style[o.style]=G(e),f[t].style[o.styleOposite]=G(100-r)}}function Z(t,e){null!==t&&!1!==t&&(\"number\"==typeof t&&(t=String(t)),!1===(t=o.format.from(t))||isNaN(t)||K(e,E.toStepping(t),!1,!1))}function tt(t,e){var r=i(t),s=void 0===w[0];e=void 0===e||!!e,r.forEach(Z),o.animate&&!s&&n(S,o.cssClasses.tap,o.animationDuration),x.forEach(function(t){K(t,w[t],!0,!1)}),J(),x.forEach(function(t){R(\"update\",t),null!==r[t]&&e&&R(\"set\",t)})}function et(){var t=C.map(o.format.to);return 1===t.length?t[0]:t}function rt(t,e){N[t]=N[t]||[],N[t].push(e),\"update\"===t.split(\".\")[0]&&p.forEach(function(t,e){R(\"update\",e)})}if(S.noUiSlider)throw new Error(\"noUiSlider (\"+t+\"): Slider was already initialized.\");return function(t){s(t,o.cssClasses.target),0===o.dir?s(t,o.cssClasses.ltr):s(t,o.cssClasses.rtl),0===o.ort?s(t,o.cssClasses.horizontal):s(t,o.cssClasses.vertical),c=M(t,o.cssClasses.base)}(S),function(t,e){p=[],(f=[]).push(k(e,t[0]));for(var r=0;rr.stepAfter.startValue&&(i=r.stepAfter.startValue-n),o=n>r.thisStep.startValue?r.thisStep.step:!1!==r.stepBefore.step&&n-r.stepBefore.highestStep,100===t?i=null:0===t&&(o=null);var s=E.countStepDecimals();return null!==i&&!1!==i&&(i=Number(i.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,i]})},on:rt,off:function(t){var e=t&&t.split(\".\")[0],r=e&&t.substring(e.length);Object.keys(N).forEach(function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||delete N[t]})},get:et,set:tt,reset:function(t){tt(o.start,t)},__moveHandles:function(t,e,r){T(t,e,w,r)},options:u,updateOptions:function(t,e){var r=et(),n=[\"margin\",\"limit\",\"padding\",\"range\",\"animate\",\"snap\",\"step\",\"format\"];n.forEach(function(e){void 0!==t[e]&&(u[e]=t[e])});var i=q(u);n.forEach(function(e){void 0!==t[e]&&(o[e]=i[e])}),E=i.spectrum,o.margin=i.margin,o.limit=i.limit,o.padding=i.padding,o.pips&&z(o.pips),w=[],tt(t.start||r,e)},target:S,removePips:L,pips:z},(m=o.events).fixed||p.forEach(function(t,e){H(v.start,t.children[0],_,{handleNumbers:[e]})}),m.tap&&H(v.start,c,I,{}),m.hover&&H(v.move,c,W,{hover:!0}),m.drag&&f.forEach(function(t,e){if(!1!==t&&0!==e&&e!==f.length-1){var r=p[e-1],n=p[e],i=[t];s(t,o.cssClasses.draggable),m.fixed&&(i.push(r.children[0]),i.push(n.children[0])),i.forEach(function(t){H(v.start,t,_,{handles:[r,n],handleNumbers:[e-1,e]})})}}),tt(o.start),o.pips&&z(o.pips),o.tooltips&&(g=p.map(V),rt(\"update\",function(t,e,r){if(g[e]){var n=t[e];!0!==o.tooltips[e]&&(n=o.tooltips[e].to(r[e])),g[e].innerHTML=n}})),rt(\"update\",function(t,e,r,n,i){x.forEach(function(t){var e=p[t],n=$(w,t,0,!0,!0,!0),s=$(w,t,100,!0,!0,!0),a=i[t],l=o.ariaFormat.to(r[t]);e.children[0].setAttribute(\"aria-valuemin\",n.toFixed(1)),e.children[0].setAttribute(\"aria-valuemax\",s.toFixed(1)),e.children[0].setAttribute(\"aria-valuenow\",a.toFixed(1)),e.children[0].setAttribute(\"aria-valuetext\",l)})}),d}return{version:t,create:function(e,r){if(!e||!e.nodeName)throw new Error(\"noUiSlider (\"+t+\"): create requires a single element, got: \"+e);var n=T(e,q(r),r);return e.noUiSlider=n,n}}},\"function\"==typeof define&&define.amd?define([],n):\"object\"==typeof r?e.exports=n():window.noUiSlider=n()},\n", - " 494: function _(e,t,i){e(164),e(495),e(163).styles.append(\".bk-root .bk-slider-title {\\n white-space: nowrap;\\n}\\n.bk-root .bk-slider-value {\\n font-weight: 600;\\n}\\n\"),i.bk_slider_value=\"bk-slider-value\",i.bk_slider_title=\"bk-slider-title\",i.bk_input_group=\"bk-input-group\"},\n", - " 495: function _(n,o,t){n(164),n(163).styles.append('.bk-root {\\n /* Functional styling;\\n * These styles are required for noUiSlider to function.\\n * You don\\'t need to change these rules to apply your design.\\n */\\n /* Painting and performance;\\n * Browsers can paint handles in their own layer.\\n */\\n /* Slider size and handle placement;\\n */\\n /* Styling;\\n */\\n /* Handles and cursors;\\n */\\n /* Handle stripes;\\n */\\n /* Disabled state;\\n */\\n /* Base;\\n *\\n */\\n /* Values;\\n *\\n */\\n /* Markings;\\n *\\n */\\n /* Horizontal layout;\\n *\\n */\\n /* Vertical layout;\\n *\\n */\\n}\\n.bk-root .bk-noUi-target,\\n.bk-root .bk-noUi-target * {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n -webkit-user-select: none;\\n -ms-touch-action: none;\\n touch-action: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.bk-root .bk-noUi-target {\\n position: relative;\\n direction: ltr;\\n}\\n.bk-root .bk-noUi-base {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n z-index: 1;\\n /* Fix 401 */\\n}\\n.bk-root .bk-noUi-connect {\\n position: absolute;\\n right: 0;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n}\\n.bk-root .bk-noUi-origin {\\n position: absolute;\\n height: 0;\\n width: 0;\\n}\\n.bk-root .bk-noUi-handle {\\n position: relative;\\n z-index: 1;\\n}\\n.bk-root .bk-noUi-state-tap .bk-noUi-connect,\\n.bk-root .bk-noUi-state-tap .bk-noUi-origin {\\n -webkit-transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;\\n transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;\\n}\\n.bk-root .bk-noUi-state-drag * {\\n cursor: inherit !important;\\n}\\n.bk-root .bk-noUi-base,\\n.bk-root .bk-noUi-handle {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n}\\n.bk-root .bk-noUi-horizontal {\\n height: 18px;\\n}\\n.bk-root .bk-noUi-horizontal .bk-noUi-handle {\\n width: 34px;\\n height: 28px;\\n left: -17px;\\n top: -6px;\\n}\\n.bk-root .bk-noUi-vertical {\\n width: 18px;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-handle {\\n width: 28px;\\n height: 34px;\\n left: -6px;\\n top: -17px;\\n}\\n.bk-root .bk-noUi-target {\\n background: #FAFAFA;\\n border-radius: 4px;\\n border: 1px solid #D3D3D3;\\n box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;\\n}\\n.bk-root .bk-noUi-connect {\\n background: #3FB8AF;\\n border-radius: 4px;\\n box-shadow: inset 0 0 3px rgba(51, 51, 51, 0.45);\\n -webkit-transition: background 450ms;\\n transition: background 450ms;\\n}\\n.bk-root .bk-noUi-draggable {\\n cursor: ew-resize;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-draggable {\\n cursor: ns-resize;\\n}\\n.bk-root .bk-noUi-handle {\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #FFF;\\n cursor: default;\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;\\n}\\n.bk-root .bk-noUi-active {\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB;\\n}\\n.bk-root .bk-noUi-handle:before,\\n.bk-root .bk-noUi-handle:after {\\n content: \"\";\\n display: block;\\n position: absolute;\\n height: 14px;\\n width: 1px;\\n background: #E8E7E6;\\n left: 14px;\\n top: 6px;\\n}\\n.bk-root .bk-noUi-handle:after {\\n left: 17px;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-handle:before,\\n.bk-root .bk-noUi-vertical .bk-noUi-handle:after {\\n width: 14px;\\n height: 1px;\\n left: 6px;\\n top: 14px;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-handle:after {\\n top: 17px;\\n}\\n.bk-root [disabled] .bk-noUi-connect {\\n background: #B8B8B8;\\n}\\n.bk-root [disabled].bk-noUi-target,\\n.bk-root [disabled].bk-noUi-handle,\\n.bk-root [disabled] .bk-noUi-handle {\\n cursor: not-allowed;\\n}\\n.bk-root .bk-noUi-pips,\\n.bk-root .bk-noUi-pips * {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.bk-root .bk-noUi-pips {\\n position: absolute;\\n color: #999;\\n}\\n.bk-root .bk-noUi-value {\\n position: absolute;\\n white-space: nowrap;\\n text-align: center;\\n}\\n.bk-root .bk-noUi-value-sub {\\n color: #ccc;\\n font-size: 10px;\\n}\\n.bk-root .bk-noUi-marker {\\n position: absolute;\\n background: #CCC;\\n}\\n.bk-root .bk-noUi-marker-sub {\\n background: #AAA;\\n}\\n.bk-root .bk-noUi-marker-large {\\n background: #AAA;\\n}\\n.bk-root .bk-noUi-pips-horizontal {\\n padding: 10px 0;\\n height: 80px;\\n top: 100%;\\n left: 0;\\n width: 100%;\\n}\\n.bk-root .bk-noUi-value-horizontal {\\n -webkit-transform: translate3d(-50%, 50%, 0);\\n transform: translate3d(-50%, 50%, 0);\\n}\\n.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker {\\n margin-left: -1px;\\n width: 2px;\\n height: 5px;\\n}\\n.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-sub {\\n height: 10px;\\n}\\n.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-large {\\n height: 15px;\\n}\\n.bk-root .bk-noUi-pips-vertical {\\n padding: 0 10px;\\n height: 100%;\\n top: 0;\\n left: 100%;\\n}\\n.bk-root .bk-noUi-value-vertical {\\n -webkit-transform: translate3d(0, 50%, 0);\\n transform: translate3d(0, 50%, 0);\\n padding-left: 25px;\\n}\\n.bk-root .bk-noUi-marker-vertical.bk-noUi-marker {\\n width: 5px;\\n height: 2px;\\n margin-top: -1px;\\n}\\n.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-sub {\\n width: 10px;\\n}\\n.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-large {\\n width: 15px;\\n}\\n.bk-root .bk-noUi-tooltip {\\n display: block;\\n position: absolute;\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #fff;\\n color: #000;\\n padding: 5px;\\n text-align: center;\\n white-space: nowrap;\\n}\\n.bk-root .bk-noUi-horizontal .bk-noUi-tooltip {\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n left: 50%;\\n bottom: 120%;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-tooltip {\\n -webkit-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n top: 50%;\\n right: 120%;\\n}\\n.bk-root .bk-noUi-handle {\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n.bk-root .bk-noUi-handle.bk-noUi-active {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n.bk-root .bk-noUi-tooltip {\\n display: none;\\n white-space: nowrap;\\n}\\n.bk-root .bk-noUi-handle:hover .bk-noUi-tooltip {\\n display: block;\\n}\\n.bk-root .bk-noUi-horizontal {\\n width: 100%;\\n height: 10px;\\n}\\n.bk-root .bk-noUi-horizontal.bk-noUi-target {\\n margin: 5px 0px;\\n}\\n.bk-root .bk-noUi-horizontal .bk-noUi-handle {\\n width: 14px;\\n height: 18px;\\n left: -7px;\\n top: -5px;\\n}\\n.bk-root .bk-noUi-vertical {\\n width: 10px;\\n height: 100%;\\n}\\n.bk-root .bk-noUi-vertical.bk-noUi-target {\\n margin: 0px 5px;\\n}\\n.bk-root .bk-noUi-vertical .bk-noUi-handle {\\n width: 18px;\\n height: 14px;\\n left: -5px;\\n top: -7px;\\n}\\n.bk-root .bk-noUi-handle:after,\\n.bk-root .bk-noUi-handle:before {\\n display: none;\\n}\\n.bk-root .bk-noUi-connect {\\n box-shadow: none;\\n}\\n')},\n", - " 496: function _(t,e,i){var r=t(113),n=t(252),a=t(492),_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(a.AbstractSliderView);i.DateSliderView=_,_.__name__=\"DateSliderView\";var o=function(t){function e(e){var i=t.call(this,e)||this;return i.behaviour=\"tap\",i.connected=[!0,!1],i}return r.__extends(e,t),e.init_DateSlider=function(){this.prototype.default_view=_,this.override({format:\"%d %b %Y\"})},e.prototype._formatter=function(t,e){return n(t,e)},e}(a.AbstractSlider);i.DateSlider=o,o.__name__=\"DateSlider\",o.init_DateSlider()},\n", - " 497: function _(t,e,i){var n=t(113),r=t(498),_=t(121),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.model.text},e}(r.MarkupView);i.DivView=o,o.__name__=\"DivView\";var u=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_Div=function(){this.prototype.default_view=o,this.define({render_as_text:[_.Boolean,!1]})},e}(r.Markup);i.Div=u,u.__name__=\"Div\",u.init_Div()},\n", - " 498: function _(t,i,n){var e=t(113),s=t(282),o=t(163),r=t(121),a=t(534),l=t(499),u=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return e.__extends(i,t),i.prototype.connect_signals=function(){var i=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){i.render(),i.root.compute_layout()})},i.prototype._update_layout=function(){this.layout=new s.VariadicBox(this.el),this.layout.set_sizing(this.box_sizing())},i.prototype.render=function(){t.prototype.render.call(this);var i=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=o.div({class:l.bk_clearfix,style:i}),this.el.appendChild(this.markup_el)},i}(a.WidgetView);n.MarkupView=u,u.__name__=\"MarkupView\";var c=function(t){function i(i){return t.call(this,i)||this}return e.__extends(i,t),i.init_Markup=function(){this.define({text:[r.String,\"\"],style:[r.Any,{}]})},i}(a.Widget);n.Markup=c,c.__name__=\"Markup\",c.init_Markup()},\n", - " 499: function _(e,n,r){e(164),e(163).styles.append('.bk-root .bk-clearfix:before,\\n.bk-root .bk-clearfix:after {\\n content: \"\";\\n display: table;\\n}\\n.bk-root .bk-clearfix:after {\\n clear: both;\\n}\\n'),r.bk_clearfix=\"bk-clearfix\"},\n", - " 500: function _(e,t,i){var n=e(113),o=e(474),l=e(376),s=e(163),r=e(121),u=e(109),d=e(240),a=e(347),c=e(348),_=function(e){function t(){var t=e.apply(this,arguments)||this;return t._open=!1,t}return n.__extends(t,e),t.prototype.render=function(){var t=this;e.prototype.render.call(this);var i=s.div({class:[c.bk_caret,d.bk_down]});if(this.model.is_split){var n=this._render_button(i);n.classList.add(a.bk_dropdown_toggle),n.addEventListener(\"click\",function(){return t._toggle_menu()}),this.group_el.appendChild(n)}else this.button_el.appendChild(i);var o=this.model.menu.map(function(e,i){if(null==e)return s.div({class:c.bk_divider});var n=u.isString(e)?e:e[0],o=s.div({},n);return o.addEventListener(\"click\",function(){return t._item_click(i)}),o});this.menu=s.div({class:[c.bk_menu,d.bk_below]},o),this.el.appendChild(this.menu),s.undisplay(this.menu)},t.prototype._show_menu=function(){var e=this;if(!this._open){this._open=!0,s.display(this.menu);var t=function(i){var n=i.target;n instanceof HTMLElement&&!e.el.contains(n)&&(document.removeEventListener(\"click\",t),e._hide_menu())};document.addEventListener(\"click\",t)}},t.prototype._hide_menu=function(){this._open&&(this._open=!1,s.undisplay(this.menu))},t.prototype._toggle_menu=function(){this._open?this._hide_menu():this._show_menu()},t.prototype.click=function(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new l.ButtonClick),this.model.value=this.model.default_value,null!=this.model.callback&&this.model.callback.execute(this.model),e.prototype.click.call(this)):this._toggle_menu()},t.prototype._item_click=function(e){this._hide_menu();var t=this.model.menu[e];if(null!=t){var i=u.isString(t)?t:t[1];u.isString(i)?(this.model.trigger_event(new l.MenuItemClick(i)),this.model.value=i,null!=this.model.callback&&this.model.callback.execute(this.model)):(i.execute(this.model,{index:e}),null!=this.model.callback&&this.model.callback.execute(this.model))}},t}(o.AbstractButtonView);i.DropdownView=_,_.__name__=\"DropdownView\";var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.init_Dropdown=function(){this.prototype.default_view=_,this.define({split:[r.Boolean,!1],menu:[r.Array,[]],value:[r.String],default_value:[r.String]}),this.override({label:\"Dropdown\"})},Object.defineProperty(t.prototype,\"is_split\",{get:function(){return this.split||null!=this.default_value},enumerable:!0,configurable:!0}),t}(o.AbstractButton);i.Dropdown=h,h.__name__=\"Dropdown\",h.init_Dropdown()},\n", - " 501: function _(t,e,i){var n=t(113),l=t(121),o=t(534),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()}),this.connect(this.model.properties.width.change,function(){return e.render()})},e.prototype.render=function(){var t=this;this.dialogEl||(this.dialogEl=document.createElement(\"input\"),this.dialogEl.type=\"file\",this.dialogEl.multiple=!1,null!=this.model.accept&&\"\"!=this.model.accept&&(this.dialogEl.accept=this.model.accept),this.dialogEl.style.width=\"{this.model.width}px\",this.dialogEl.onchange=function(e){return t.load_file(e)},this.el.appendChild(this.dialogEl))},e.prototype.load_file=function(t){var e=this,i=new FileReader;this.model.filename=t.target.files[0].name,i.onload=function(t){return e.file(t)},i.readAsDataURL(t.target.files[0])},e.prototype.file=function(t){var e=t.target.result.split(\",\"),i=e[1],n=e[0].split(\":\")[1].split(\";\")[0];this.model.value=i,this.model.mime_type=n},e}(o.WidgetView);i.FileInputView=a,a.__name__=\"FileInputView\";var r=function(t){function e(e){return t.call(this,e)||this}return n.__extends(e,t),e.init_FileInput=function(){this.prototype.default_view=a,this.define({value:[l.String,\"\"],mime_type:[l.String,\"\"],filename:[l.String,\"\"],accept:[l.String,\"\"]})},e}(o.Widget);i.FileInput=r,r.__name__=\"FileInput\",r.init_FileInput()},\n", - " 502: function _(e,t,n){var i=e(113),r=e(163),l=e(109),o=e(117),s=e(121),c=e(480),u=e(481),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.value.change,function(){return t.render_selection()}),this.connect(this.model.properties.options.change,function(){return t.render()}),this.connect(this.model.properties.name.change,function(){return t.render()}),this.connect(this.model.properties.title.change,function(){return t.render()}),this.connect(this.model.properties.size.change,function(){return t.render()}),this.connect(this.model.properties.disabled.change,function(){return t.render()})},t.prototype.render=function(){var t=this;e.prototype.render.call(this);var n=this.model.options.map(function(e){var t,n;return l.isString(e)?t=n=e:(t=e[0],n=e[1]),r.option({value:t},n)});this.select_el=r.select({multiple:!0,class:u.bk_input,name:this.model.name,disabled:this.model.disabled},n),this.select_el.addEventListener(\"change\",function(){return t.change_input()}),this.group_el.appendChild(this.select_el),this.render_selection()},t.prototype.render_selection=function(){for(var e=new o.Set(this.model.value),t=0,n=Array.from(this.el.querySelectorAll(\"option\"));tu?d:-d;if(0!=h)return h}return 0})},e}();i.TableDataProvider=b,b.__name__=\"TableDataProvider\";var v=function(e){function t(){var t=e.apply(this,arguments)||this;return t._in_selection_update=!1,t._warned_not_reorderable=!1,t}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.source.streaming,function(){return t.updateGrid()}),this.connect(this.model.source.patching,function(){return t.updateGrid()}),this.connect(this.model.source.change,function(){return t.updateGrid()}),this.connect(this.model.source.properties.data.change,function(){return t.updateGrid()}),this.connect(this.model.source.selected.change,function(){return t.updateSelection()}),this.connect(this.model.source.selected.properties.indices.change,function(){return t.updateSelection()})},t.prototype._update_layout=function(){this.layout=new p.LayoutItem,this.layout.set_sizing(this.box_sizing())},t.prototype.update_position=function(){e.prototype.update_position.call(this),this.grid.resizeCanvas()},t.prototype.updateGrid=function(){var e=this;if(this.model.view.compute_indices(),this.data.constructor(this.model.source,this.model.view),this.model.sortable){var t=this.grid.getColumns(),i=this.grid.getSortColumns().map(function(i){return{sortCol:{field:t[e.grid.getColumnIndex(i.columnId)].field},sortAsc:i.sortAsc}});this.data.sort(i)}this.grid.invalidate(),this.grid.render()},t.prototype.updateSelection=function(){var e=this;if(!this._in_selection_update){var t=this.model.source.selected.indices.map(function(t){return e.data.index.indexOf(t)}).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;var i=this.grid.getViewport(),n=this.model.get_scroll_index(i,t);null!=n&&this.grid.scrollRowToTop(n)}},t.prototype.newIndexColumn=function(){return{id:d.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:g.bk_cell_index,headerCssClass:g.bk_header_index}},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(g.bk_data_table)},t.prototype.render=function(){var e,t=this,i=this.model.columns.map(function(e){return e.toColumn()});if(\"checkbox\"==this.model.selectable&&(e=new r({cssClass:g.bk_cell_select}),i.unshift(e.getColumnDefinition())),null!=this.model.index_position){var n=this.model.index_position,a=this.newIndexColumn();-1==n?i.push(a):n<-1?i.splice(n+1,0,a):i.splice(n,0,a)}var d=this.model.reorderable;!d||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(_.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),this._warned_not_reorderable=!0),d=!1);var u={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:d,forceFitColumns:this.model.fit_columns,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:!1,rowHeight:this.model.row_height};if(this.data=new b(this.model.source,this.model.view),this.grid=new l.Grid(this.el,this.data,i,u),this.grid.onSort.subscribe(function(e,n){t.model.sortable&&(i=n.sortCols,t.data.sort(i),t.grid.invalidate(),t.updateSelection(),t.grid.render(),t.model.header_row||t._hide_header(),t.model.update_sort_columns(i))}),!1!==this.model.selectable){this.grid.setSelectionModel(new o({selectActiveRow:null==e})),null!=e&&this.grid.registerPlugin(e);var h={dataItemColumnValueExtractor:function(e,t){var i=e[t.field];return c.isString(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new s(h)),this.grid.onSelectedRowsChanged.subscribe(function(e,i){t._in_selection_update||(t.model.source.selected.indices=i.rows.map(function(e){return t.data.index[e]}))}),this.updateSelection(),this.model.header_row||this._hide_header()}},t.prototype._hide_header=function(){for(var e=0,t=Array.from(this.el.querySelectorAll(\".slick-header-columns\"));e=0&&l0&&t-1 in e)}b.fn=b.prototype={jquery:\"3.4.1\",constructor:b,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return b.each(this,e)},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp($),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+$),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ne=function(e,t,n){var r=\"0x\"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=Z.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!N[e+\" \"]&&(!v||!v.test(e))&&(1!==T||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===T&&U.test(e)){for((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b),s=(h=a(e)).length;s--;)h[s]=\"#\"+c+\" \"+xe(h[s]);y=h.join(\",\"),m=ee.test(e)&&ye(t.parentNode)||t}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){N(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace(B,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le(function(t){return t=+t,le(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ce(function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce(function(e){h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\")}),ce(function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",$)}),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),n.matchesSelector&&g&&!N[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){N(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(F,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:le(function(e){var t=[],n=[],r=s(e.replace(B,\"$1\"));return r[b]?le(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:le(function(e){return function(t){return se(e,t).length>0}}),contains:le(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}}),lang:le(function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be(function(e){return e===t},s,!0),f=be(function(e){return P(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(B,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument===d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(A).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))}),ce(function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(e);b.find=C,b.expr=C.selectors,b.expr[\":\"]=b.expr.pseudos,b.uniqueSort=b.unique=C.uniqueSort,b.text=C.getText,b.isXMLDoc=C.isXML,b.contains=C.contains,b.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&b(e).is(n))break;r.push(e)}return r},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=b.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function D(e,t,n){return g(t)?b.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?b.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?b.grep(e,function(e){return u.call(t,e)>-1!==n}):b.filter(t,e,n)}b.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?b.find.matchesSelector(r,e)?[r]:[]:b.find.matches(e,b.grep(t,function(e){return 1===e.nodeType}))},b.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(b(e).filter(function(){for(t=0;t1?b.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\"string\"==typeof e&&S.test(e)?b(e):e||[],!1).length}});var j,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(b.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||j,\"string\"==typeof e){if(!(i=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof b?t[0]:t,b.merge(this,b.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&b.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(b):b.makeArray(e,this)}).prototype=b.fn,j=b(r);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}b.fn.extend({has:function(e){var t=b(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&b.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?u.call(b(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,\"parentNode\")},parentsUntil:function(e,t,n){return E(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return E(e,\"nextSibling\")},prevAll:function(e){return E(e,\"previousSibling\")},nextUntil:function(e,t,n){return E(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return E(e,\"previousSibling\",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(N(e,\"template\")&&(e=e.content||e),b.merge([],e.childNodes))}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=b.filter(r,i)),this.length>1&&(H[e]||b.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}});var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}b.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return b.each(e.match(P)||[],function(e,n){t[n]=!0}),t}(e):b.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?b.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},b.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",b.Callbacks(\"memory\"),b.Callbacks(\"memory\"),2],[\"resolve\",\"done\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return b.Deferred(function(t){b.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),e.setTimeout(c))}}return b.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:R,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:R)),n[2][3].add(a(0,e,g(r)?r:M))}).promise()},promise:function(e){return null!=e?b.extend(e,i):i}},o={};return b.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=b.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||g(i[n]&&i[n].then)))return a.then();for(;n--;)I(i[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},b.readyException=function(t){e.setTimeout(function(){throw t})};var $=b.Deferred();function F(){r.removeEventListener(\"DOMContentLoaded\",F),e.removeEventListener(\"load\",F),b.ready()}b.fn.ready=function(e){return $.then(e).catch(function(e){b.readyException(e)}),this},b.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==e&&--b.readyWait>0||$.resolveWith(r,[b]))}}),b.ready.then=$.then,\"complete\"===r.readyState||\"loading\"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(b.ready):(r.addEventListener(\"DOMContentLoaded\",F),e.addEventListener(\"load\",F));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(b(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),b.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,b.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){b.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:b.Callbacks(\"once memory\").add(function(){Y.remove(e,[t+\"queue\",n])})})}}),b.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&N(e,t)?b.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n)for(c=0;o=a[c++];)he.test(o.type||\"\")&&n.push(o);return f}me=r.createDocumentFragment().appendChild(r.createElement(\"div\")),(xe=r.createElement(\"input\")).setAttribute(\"type\",\"radio\"),xe.setAttribute(\"checked\",\"checked\"),xe.setAttribute(\"name\",\"t\"),me.appendChild(xe),h.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML=\"\",h.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return r.activeElement}catch(e){}}()==(\"focus\"===t)}function Ae(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return b().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=b.guid++)),e.each(function(){b.event.add(this,t,i,r,n)})}function De(e,t,n){n?(Y.set(e,t,!1),b.event.add(e,t,{namespace:!1,handler:function(e){var r,i,a=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(b.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=o.call(arguments),Y.set(this,t,a),r=n(this,t),this[t](),a!==(i=Y.get(this,t))||r?Y.set(this,t,!1):i={},a!==i)return e.stopImmediatePropagation(),e.preventDefault(),i.value}else a.length&&(Y.set(this,t,{value:b.event.trigger(b.extend(a[0],b.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&b.event.add(e,t,ke)}b.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&b.find.matchesSelector(re,i),n.guid||(n.guid=b.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==b&&b.event.triggered!==t.type?b.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=b.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=b.event.special[d]||{},c=b.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&b.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),b.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=b.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||b.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=b.event.fix(e),u=new Array(arguments.length),l=(Y.get(this,\"events\")||{})[s.type]||[],c=b.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:b.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,qe=/\\s*$/g;function Oe(e,t){return N(e,\"table\")&&N(11!==t.nodeType?t:t.firstChild,\"tr\")&&b(e).children(\"tbody\")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Re(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Y.hasData(e)&&(o=Y.access(e),a=Y.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n1&&\"string\"==typeof v&&!h.checkClone&&Le.test(v))return e.each(function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Ie(o,t,n,r)});if(p&&(o=(i=we(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=b.map(ve(i,\"script\"),Pe)).length;f\")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r0&&ye(a,!f&&ve(e,\"script\")),c},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),b.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return B(this,function(e){return void 0===e?b.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(b.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return B(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!h.boxSizingReliable()||n)&&\"border-box\"===b.css(e,\"boxSizing\",!1,r),o=i,a=_e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a=\"auto\"}return(!h.boxSizingReliable()&&i||\"auto\"===a||!parseFloat(a)&&\"inline\"===b.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===b.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=b.cssHooks[t]||b.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(b.cssNumber[s]?\"\":\"px\")),h.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Qe.test(t)||(t=Ge(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),\"normal\"===i&&t in Ke&&(i=Ke[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each([\"height\",\"width\"],function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Ye.test(b.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,r):se(e,Je,function(){return tt(e,t,r)})},set:function(e,n,r){var i,o=Fe(e),a=!h.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===b.css(e,\"boxSizing\",!1,o),u=r?et(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=b.css(e,t)),Ze(0,n,u)}}}),b.cssHooks.marginLeft=ze(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,\"marginLeft\"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),b.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(b.cssHooks[e+t].set=Ze)}),b.fn.extend({css:function(e,t){return B(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),b.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?\"\":\"px\")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=b.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||!b.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},b.fx=nt.prototype.init,b.fx.step={};var rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){it&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(st):e.setTimeout(st,b.fx.interval),b.fx.tick())}function ut(){return e.setTimeout(function(){rt=void 0}),rt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void b.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&\"radio\"===t&&N(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=dt[t]||b.find.attr;dt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=dt[a],dt[a]=i,i=null!=n(e,t,r)?a:null,dt[a]=o),i}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(\" \")}function yt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function mt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}b.fn.extend({prop:function(e,t){return B(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[b.propFix[e]||e]})}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=b.find.attr(e,\"tabindex\");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),h.optSelected||(b.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),b.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){b.propFix[this.toLowerCase()]=this}),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){b(this).addClass(e.call(this,t,yt(this)))});if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){b(this).removeClass(e.call(this,t,yt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,yt(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=mt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=yt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+vt(yt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var xt=/\\r/g;b.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,b(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=b.map(i,function(e){return null==e?\"\":e+\"\"})),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))})):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(xt,\"\"):null==n?\"\":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,\"value\");return null!=t?t:vt(b.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),b.each([\"radio\",\"checkbox\"],function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},h.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),h.focusin=\"onfocusin\"in e;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};b.extend(b.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,y=[i||r],m=f.call(t,\"type\")?t.type:t,x=f.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!bt.test(m+b.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),c=m.indexOf(\":\")<0&&\"on\"+m,(t=t[b.expando]?t:new b.Event(m,\"object\"==typeof t&&t)).isTrigger=o?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:b.makeArray(n,[t]),d=b.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!v(i)){for(l=d.delegateType||m,bt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)y.push(s),u=s;u===(i.ownerDocument||r)&&y.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=y[a++])&&!t.isPropagationStopped();)h=s,t.type=a>1?l:d.bindType||m,(p=(Y.get(s,\"events\")||{})[t.type]&&Y.get(s,\"handle\"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&V(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(y.pop(),n)||!V(i)||c&&g(i[m])&&!v(i)&&((u=i[c])&&(i[c]=null),b.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,wt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,wt),b.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),h.focusin||b.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}});var Tt=e.location,Ct=Date.now(),Et=/\\?/;b.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||b.error(\"Invalid XML: \"+t),n};var kt=/\\[\\]$/,St=/\\r?\\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Dt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,function(t,i){n||kt.test(e)?r(e,i):Dt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Dt(e+\"[\"+i+\"]\",t[i],n,r)}b.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join(\"&\")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,\"elements\");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(\":disabled\")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}}):{name:t.name,value:n.replace(St,\"\\r\\n\")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\\/\\//,Rt={},Mt={},It=\"*/\".concat(\"*\"),Wt=r.createElement(\"a\");function $t(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(g(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Mt;function a(s){var u;return i[s]=!0,b.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Bt(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}Wt.href=Tt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":It,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,b.ajaxSettings),t):Bt(b.ajaxSettings,e)},ajaxPrefilter:$t(Rt),ajaxTransport:$t(Mt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=b.ajaxSetup({},n),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?b(g):b.event,y=b.Deferred(),m=b.Callbacks(\"once memory\"),x=h.statusCode||{},w={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Ht.exec(a);)s[t[1].toLowerCase()+\" \"]=(s[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=s[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(y.promise(E),h.url=((t||h.url||Tt.href)+\"\").replace(Pt,Tt.protocol+\"//\"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==h.crossDomain){l=r.createElement(\"a\");try{l.href=h.url,l.href=l.href,h.crossDomain=Wt.protocol+\"//\"+Wt.host!=l.protocol+\"//\"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&\"string\"!=typeof h.data&&(h.data=b.param(h.data,h.traditional)),Ft(Rt,h,n,E),c)return E;for(p in(f=b.event&&h.global)&&0==b.active++&&b.event.trigger(\"ajaxStart\"),h.type=h.type.toUpperCase(),h.hasContent=!Ot.test(h.type),o=h.url.replace(qt,\"\"),h.hasContent?h.data&&h.processData&&0===(h.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(h.data=h.data.replace(jt,\"+\")):(d=h.url.slice(o.length),h.data&&(h.processData||\"string\"==typeof h.data)&&(o+=(Et.test(o)?\"&\":\"?\")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Lt,\"$1\"),d=(Et.test(o)?\"&\":\"?\")+\"_=\"+Ct+++d),h.url=o+d),h.ifModified&&(b.lastModified[o]&&E.setRequestHeader(\"If-Modified-Since\",b.lastModified[o]),b.etag[o]&&E.setRequestHeader(\"If-None-Match\",b.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",h.contentType),E.setRequestHeader(\"Accept\",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(\"*\"!==h.dataTypes[0]?\", \"+It+\"; q=0.01\":\"\"):h.accepts[\"*\"]),h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C=\"abort\",m.add(h.complete),E.done(h.success),E.fail(h.error),i=Ft(Mt,h,n,E)){if(E.readyState=1,f&&v.trigger(\"ajaxSend\",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort(\"timeout\")},h.timeout));try{c=!1,i.send(w,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,\"No Transport\");function k(t,n,r,s){var l,p,d,w,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||\"\",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(h,E,r)),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(h,w,E,l),l?(h.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(b.lastModified[o]=T),(T=E.getResponseHeader(\"etag\"))&&(b.etag[o]=T)),204===t||\"HEAD\"===h.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=w.state,p=w.data,l=!(d=w.error))):(d=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",l?y.resolveWith(g,[p,C,E]):y.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&v.trigger(l?\"ajaxSuccess\":\"ajaxError\",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(v.trigger(\"ajaxComplete\",[E,h]),--b.active||b.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,\"json\")},getScript:function(e,t){return b.get(e,void 0,t,\"script\")}}),b.each([\"get\",\"post\"],function(e,t){b[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}}),b._evalUrl=function(e,t){return b.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){b.globalEval(e,t)}})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=b(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){b(this).replaceWith(this.childNodes)}),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=b.ajaxSettings.xhr();h.cors=!!zt&&\"withCredentials\"in zt,h.ajax=zt=!!zt,b.ajaxTransport(function(t){var n,r;if(h.cors||zt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(_t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),b.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),b.ajaxTransport(\"script\",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,o){t=b(\"" - ], - "text/plain": [ - ":HeatMap [x,y] (z)" - ] - }, - "execution_count": 10, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "1220" - } - }, - "output_type": "execute_result" - } - ], - "source": [ - "import holoviews as hv\n", - "import numpy as np\n", - "\n", - "hv.extension(\"bokeh\")\n", - "\n", - "data = [\n", - " (f\"{li}: {multi.data.x[i]}\", f\"{lj}: {multi.data.x[j]}\", multi.cov[i, j])\n", - " for i, li in zip(range(len(multi.data)), multi.labels)\n", - " for j, lj in zip(range(len(multi.data)), multi.labels)\n", - "]\n", - "\n", - "hv.HeatMap(data).opts(\n", - " tools=[\"hover\"], width=800, height=800, invert_yaxis=True, xrotation=90\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('0', '0', 0.6694283706010116),\n", - " ('0', '1', -0.34706548972851037),\n", - " ('0', '2', -0.29602704211169945),\n", - " ('0', '3', -0.08842564354794222),\n", - " ('0', '4', -0.2649213364201005),\n", - " ('0', '5', -0.03318308266099492),\n", - " ('0', '6', -0.15674624219412128),\n", - " ('0', '7', -0.11635008260643312),\n", - " ('0', '8', 0.1565448035687286),\n", - " ('0', '9', 0.23625193353578275),\n", - " ('0', '0', -0.09805104735631788),\n", - " ('0', '1', -0.43856668830561424),\n", - " ('0', '2', 0.23970690514050488),\n", - " ('0', '3', 0.2913607024805115),\n", - " ('0', '4', 0.2839221863579571),\n", - " ('0', '5', -0.3271230531888133),\n", - " ('0', '6', -0.4952974106146011),\n", - " ('0', '7', 0.22867520149832105),\n", - " ('0', '8', -0.6255709215442288),\n", - " ('0', '9', 0.40204947727939916),\n", - " ('0', '10', 0.44311311733833353),\n", - " ('0', '11', 0.2413195363688674),\n", - " ('0', '12', 0.3950062047688285),\n", - " ('0', '13', 0.4466998444344927),\n", - " ('0', '14', 0.20433972113928855),\n", - " ('0', '15', 0.28570983636164227),\n", - " ('0', '16', -0.14749539642539763),\n", - " ('0', '17', 0.41354584128941996),\n", - " ('0', '18', -0.07421748155454519),\n", - " ('0', '19', 0.09205261181380217),\n", - " ('0', '0', 0.06538612489362364),\n", - " ('0', '1', 0.5373471237576648),\n", - " ('0', '2', -0.8597376504159377),\n", - " ('0', '3', -0.23837752150995914),\n", - " ('0', '4', -0.41481686485692254),\n", - " ('0', '5', -0.5527737093812749),\n", - " ('0', '6', 0.736084786536117),\n", - " ('0', '7', -0.10729891198216221),\n", - " ('0', '8', 0.36719170371517834),\n", - " ('0', '9', 0.31850108592918697),\n", - " ('0', '10', -0.06137349567097014),\n", - " ('0', '11', -0.42579388200212875),\n", - " ('0', '12', -0.4938399521372238),\n", - " ('0', '13', -0.34344997100320085),\n", - " ('0', '14', -0.31912526459811574),\n", - " ('0', '15', 0.17532107882911074),\n", - " ('0', '16', 0.28769835100555574),\n", - " ('0', '17', 0.0833772780617381),\n", - " ('0', '18', 0.3436635301180042),\n", - " ('0', '19', -0.2621885409184778),\n", - " ('0', '20', 0.04262701839871516),\n", - " ('0', '21', -0.14019297619398657),\n", - " ('0', '22', -0.34058472069961276),\n", - " ('0', '23', 0.1715120993138523),\n", - " ('0', '24', -0.2807116089133971),\n", - " ('0', '25', 0.06294095620171312),\n", - " ('0', '26', -0.9194151656152685),\n", - " ('0', '27', -0.4246891773046158),\n", - " ('0', '28', 0.1465836440528171),\n", - " ('0', '29', -0.4579909100304574),\n", - " ('1', '0', -0.3470654897284138),\n", - " ('1', '1', 1.6875958399225452),\n", - " ('1', '2', 0.8832738798719643),\n", - " ('1', '3', 0.3054457229415921),\n", - " ('1', '4', 0.6164849649849339),\n", - " ('1', '5', -0.0027100378725856593),\n", - " ('1', '6', 0.5248546145148683),\n", - " ('1', '7', 0.32606211408430713),\n", - " ('1', '8', -0.5090711779665805),\n", - " ('1', '9', -0.7768778388192186),\n", - " ('1', '0', 0.3596824521942158),\n", - " ('1', '1', 1.1179158154513034),\n", - " ('1', '2', -0.5875877014269135),\n", - " ('1', '3', -0.8422447056562852),\n", - " ('1', '4', -1.0350561621067291),\n", - " ('1', '5', 1.1085155284720598),\n", - " ('1', '6', 1.6317434982273398),\n", - " ('1', '7', -0.8597471701382429),\n", - " ('1', '8', 1.9694283376399662),\n", - " ('1', '9', -1.1596047534375535),\n", - " ('1', '10', -1.5002576698413679),\n", - " ('1', '11', -0.8121462314274506),\n", - " ('1', '12', -1.1351874739364443),\n", - " ('1', '13', -0.9943375217510445),\n", - " ('1', '14', -0.5257838313164374),\n", - " ('1', '15', -0.8319673927842043),\n", - " ('1', '16', 0.6693217484053848),\n", - " ('1', '17', -1.1355440917607262),\n", - " ('1', '18', 0.12461590623804404),\n", - " ('1', '19', -0.4635004329310197),\n", - " ('1', '0', 0.003174470937172845),\n", - " ('1', '1', -1.6694117912358721),\n", - " ('1', '2', 2.675246334891188),\n", - " ('1', '3', 0.759017226369472),\n", - " ('1', '4', 1.1526786445645985),\n", - " ('1', '5', 2.034181202909532),\n", - " ('1', '6', -2.1401613315932018),\n", - " ('1', '7', 0.24171827459535336),\n", - " ('1', '8', -1.1016429211748366),\n", - " ('1', '9', -0.8383800836903779),\n", - " ('1', '10', 0.07928585972025272),\n", - " ('1', '11', 1.4540653599636917),\n", - " ('1', '12', 1.2802733898687457),\n", - " ('1', '13', 1.02359796538228),\n", - " ('1', '14', 1.0059902849634164),\n", - " ('1', '15', -0.587160295693312),\n", - " ('1', '16', -0.8675934908091423),\n", - " ('1', '17', -0.2494561521781988),\n", - " ('1', '18', -1.1940593453858626),\n", - " ('1', '19', 0.6973136498311677),\n", - " ('1', '20', -0.022414010555974077),\n", - " ('1', '21', 0.4439502188051192),\n", - " ('1', '22', 0.9710324572568523),\n", - " ('1', '23', -0.39052688638946625),\n", - " ('1', '24', 0.8433933327394822),\n", - " ('1', '25', -0.31375695789856994),\n", - " ('1', '26', 3.006736572806648),\n", - " ('1', '27', 1.4980019016284543),\n", - " ('1', '28', -0.23343516672798198),\n", - " ('1', '29', 1.5503963830548568),\n", - " ('2', '0', -0.2960270421117463),\n", - " ('2', '1', 0.8832738798722858),\n", - " ('2', '2', 1.0526534847083255),\n", - " ('2', '3', 0.18396777049291818),\n", - " ('2', '4', 0.4867228968576204),\n", - " ('2', '5', -0.03668352590922701),\n", - " ('2', '6', 0.43404301979827115),\n", - " ('2', '7', 0.19208660790891682),\n", - " ('2', '8', -0.3651695272741708),\n", - " ('2', '9', -0.6120785762839235),\n", - " ('2', '0', 0.3041105731185948),\n", - " ('2', '1', 0.8818873335131373),\n", - " ('2', '2', -0.49684353242711504),\n", - " ('2', '3', -0.6572620604712602),\n", - " ('2', '4', -0.6631931521208788),\n", - " ('2', '5', 0.8871832183438491),\n", - " ('2', '6', 1.158762542303513),\n", - " ('2', '7', -0.5981791008733242),\n", - " ('2', '8', 1.449222044553153),\n", - " ('2', '9', -0.9237547507136622),\n", - " ('2', '10', -1.1499332427917972),\n", - " ('2', '11', -0.5491409142759652),\n", - " ('2', '12', -0.9339249313269802),\n", - " ('2', '13', -0.7884850189205763),\n", - " ('2', '14', -0.3963059288637978),\n", - " ('2', '15', -0.5837211987548214),\n", - " ('2', '16', 0.5839277464252629),\n", - " ('2', '17', -0.9899020088590145),\n", - " ('2', '18', 0.1609942514470233),\n", - " ('2', '19', -0.31536518635212507),\n", - " ('2', '0', 0.06303548162397764),\n", - " ('2', '1', -1.2929671816127761),\n", - " ('2', '2', 2.007902282581138),\n", - " ('2', '3', 0.48316506815115684),\n", - " ('2', '4', 0.937198072790502),\n", - " ('2', '5', 1.6290200186362427),\n", - " ('2', '6', -1.6240165577276708),\n", - " ('2', '7', 0.2419734105780164),\n", - " ('2', '8', -0.8666467908188299),\n", - " ('2', '9', -0.5826854792387127),\n", - " ('2', '10', 0.04138167795867541),\n", - " ('2', '11', 1.1070627865224314),\n", - " ('2', '12', 0.9694354467973909),\n", - " ('2', '13', 0.7892037988037308),\n", - " ('2', '14', 0.8179166160920583),\n", - " ('2', '15', -0.43772420303564347),\n", - " ('2', '16', -0.6482032771827206),\n", - " ('2', '17', -0.060931952811010937),\n", - " ('2', '18', -0.9233656076131664),\n", - " ('2', '19', 0.48109578185298096),\n", - " ('2', '20', -0.012728486814571869),\n", - " ('2', '21', 0.3291041280041595),\n", - " ('2', '22', 0.7629757156733264),\n", - " ('2', '23', -0.32339149101266496),\n", - " ('2', '24', 0.6350605036641508),\n", - " ('2', '25', -0.2610233320568511),\n", - " ('2', '26', 2.2970086185026206),\n", - " ('2', '27', 1.1418536396188794),\n", - " ('2', '28', -0.22687985901152055),\n", - " ('2', '29', 1.213393360808277),\n", - " ('3', '0', -0.08842564354809354),\n", - " ('3', '1', 0.30544572294206973),\n", - " ('3', '2', 0.18396777049317778),\n", - " ('3', '3', 0.5174492800524598),\n", - " ('3', '4', 0.1678832290588494),\n", - " ('3', '5', 0.02300330262903084),\n", - " ('3', '6', 0.13268017164426943),\n", - " ('3', '7', 0.02077444292952612),\n", - " ('3', '8', -0.06631397385402088),\n", - " ('3', '9', -0.12286479160818616),\n", - " ('3', '0', 0.08770659712667013),\n", - " ('3', '1', 0.180785544408412),\n", - " ('3', '2', -0.1817241403604486),\n", - " ('3', '3', -0.1812141101242772),\n", - " ('3', '4', -0.25077939124427256),\n", - " ('3', '5', 0.2232277143613565),\n", - " ('3', '6', 0.4008678209333294),\n", - " ('3', '7', -0.17566452539586216),\n", - " ('3', '8', 0.4453297146743877),\n", - " ('3', '9', -0.23933027759430495),\n", - " ('3', '10', -0.33351563699536574),\n", - " ('3', '11', -0.16344491355234525),\n", - " ('3', '12', -0.2055436191241317),\n", - " ('3', '13', -0.32306016763927314),\n", - " ('3', '14', -0.12448698577074441),\n", - " ('3', '15', -0.16976506932542584),\n", - " ('3', '16', 0.23335714282075057),\n", - " ('3', '17', -0.3209657587879076),\n", - " ('3', '18', -0.0013477890767841537),\n", - " ('3', '19', -0.034797284838724414),\n", - " ('3', '0', 0.027238590469149518),\n", - " ('3', '1', -0.41646325001693496),\n", - " ('3', '2', 0.6231623571043579),\n", - " ('3', '3', 0.20215395530305175),\n", - " ('3', '4', 0.31550684906712934),\n", - " ('3', '5', 0.5212546546033445),\n", - " ('3', '6', -0.511067247076606),\n", - " ('3', '7', 0.13038376198756924),\n", - " ('3', '8', -0.30622710426143757),\n", - " ('3', '9', -0.09211036572568085),\n", - " ('3', '10', 0.09218209342137124),\n", - " ('3', '11', 0.33770701320062474),\n", - " ('3', '12', 0.31266184351533405),\n", - " ('3', '13', 0.22636762752234815),\n", - " ('3', '14', 0.27228113474422516),\n", - " ('3', '15', -0.18501016874058623),\n", - " ('3', '16', -0.1823990011473078),\n", - " ('3', '17', -0.00020414417170123745),\n", - " ('3', '18', -0.3219320966273684),\n", - " ('3', '19', 0.04516834543399884),\n", - " ('3', '20', 0.02060319843348463),\n", - " ('3', '21', 0.0829227989588099),\n", - " ('3', '22', 0.26618219807769644),\n", - " ('3', '23', -0.13011706262823172),\n", - " ('3', '24', 0.23749274637878284),\n", - " ('3', '25', -0.03240653343054581),\n", - " ('3', '26', 0.7442170850553603),\n", - " ('3', '27', 0.35054431502764516),\n", - " ('3', '28', -0.10751919714031528),\n", - " ('3', '29', 0.36711739307954716),\n", - " ('4', '0', -0.26492133641999394),\n", - " ('4', '1', 0.6164849649847953),\n", - " ('4', '2', 0.48672289685731557),\n", - " ('4', '3', 0.16788322905850905),\n", - " ('4', '4', 0.8201175849464373),\n", - " ('4', '5', -0.009590666942492101),\n", - " ('4', '6', 0.25345511066542964),\n", - " ('4', '7', 0.16982890266025163),\n", - " ('4', '8', -0.19197509684687322),\n", - " ('4', '9', -0.44422370479668893),\n", - " ('4', '0', 0.12465688961022095),\n", - " ('4', '1', 0.601335279521733),\n", - " ('4', '2', -0.3300965732183976),\n", - " ('4', '3', -0.3919760422739059),\n", - " ('4', '4', -0.45027068953285415),\n", - " ('4', '5', 0.5562780427028218),\n", - " ('4', '6', 0.7638349362736198),\n", - " ('4', '7', -0.39221762382832903),\n", - " ('4', '8', 1.0431650423180578),\n", - " ('4', '9', -0.6027254795340097),\n", - " ('4', '10', -0.7610460250318282),\n", - " ('4', '11', -0.3943707412967999),\n", - " ('4', '12', -0.5356223080077859),\n", - " ('4', '13', -0.5596856524605145),\n", - " ('4', '14', -0.32036504819890094),\n", - " ('4', '15', -0.4965923346123848),\n", - " ('4', '16', 0.4460123352841381),\n", - " ('4', '17', -0.5604266629299766),\n", - " ('4', '18', -0.00906130808462155),\n", - " ('4', '19', -0.18763968999446146),\n", - " ('4', '0', 0.07341416514907337),\n", - " ('4', '1', -0.9442651967511847),\n", - " ('4', '2', 1.337076743803874),\n", - " ('4', '3', 0.3199446507520464),\n", - " ('4', '4', 0.5557422546698026),\n", - " ('4', '5', 1.1423424685597292),\n", - " ('4', '6', -1.0957976339692892),\n", - " ('4', '7', 0.19242182273510905),\n", - " ('4', '8', -0.6096165068673675),\n", - " ('4', '9', -0.40472564897281404),\n", - " ('4', '10', 0.009093290346967898),\n", - " ('4', '11', 0.7472004785970325),\n", - " ('4', '12', 0.6903250801800171),\n", - " ('4', '13', 0.5193291873191849),\n", - " ('4', '14', 0.524438131717509),\n", - " ('4', '15', -0.2623348272644497),\n", - " ('4', '16', -0.4312347596939978),\n", - " ('4', '17', -0.11671155917802342),\n", - " ('4', '18', -0.5946423511119447),\n", - " ('4', '19', 0.3795468529056175),\n", - " ('4', '20', -0.03219773009443642),\n", - " ('4', '21', 0.23401004490766686),\n", - " ('4', '22', 0.5194018625348763),\n", - " ('4', '23', -0.24440847783411465),\n", - " ('4', '24', 0.42822417420538494),\n", - " ('4', '25', -0.19408554855127086),\n", - " ('4', '26', 1.5224386870859141),\n", - " ('4', '27', 0.8138511581176409),\n", - " ('4', '28', -0.11223151464894604),\n", - " ('4', '29', 0.8151994636565925),\n", - " ('5', '0', -0.03318308266085436),\n", - " ('5', '1', -0.0027100378729460117),\n", - " ('5', '2', -0.03668352590951362),\n", - " ('5', '3', 0.02300330262890653),\n", - " ('5', '4', -0.009590666942711636),\n", - " ('5', '5', 0.47764835079274987),\n", - " ('5', '6', 0.004216278526132136),\n", - " ('5', '7', 0.06387629094519172),\n", - " ('5', '8', 0.02790567581582252),\n", - " ('5', '9', 0.0029157476525699124),\n", - " ('5', '0', 0.0727482268016379),\n", - " ('5', '1', -0.0005082099478295746),\n", - " ('5', '2', -0.014618172334146196),\n", - " ('5', '3', -0.01623504323068634),\n", - " ('5', '4', 0.01776510639548113),\n", - " ('5', '5', 0.033566184596233346),\n", - " ('5', '6', 0.0289085352772643),\n", - " ('5', '7', -0.011137117004724183),\n", - " ('5', '8', 0.049581640361805755),\n", - " ('5', '9', -0.005153403798783932),\n", - " ('5', '10', -0.018436959470236623),\n", - " ('5', '11', 0.03786051756308626),\n", - " ('5', '12', 0.06530691881327645),\n", - " ('5', '13', -0.024340955922842095),\n", - " ('5', '14', 0.023104635142243354),\n", - " ('5', '15', 0.020667688614150886),\n", - " ('5', '16', 0.013160152658020344),\n", - " ('5', '17', 0.01978529757956865),\n", - " ('5', '18', 0.07850864055489054),\n", - " ('5', '19', -0.021232248598690273),\n", - " ('5', '0', -0.08330042739060946),\n", - " ('5', '1', -0.033150824089565746),\n", - " ('5', '2', -0.0012426660722589132),\n", - " ('5', '3', -0.04783333959366651),\n", - " ('5', '4', 0.015233304942457107),\n", - " ('5', '5', -0.03255487426669406),\n", - " ('5', '6', 0.03078215881400501),\n", - " ('5', '7', 0.01677265761506522),\n", - " ('5', '8', -0.045411724513798164),\n", - " ('5', '9', -0.007303420365682301),\n", - " ('5', '10', -0.005560498455062442),\n", - " ('5', '11', 0.018880241502842586),\n", - " ('5', '12', -0.011474749686946985),\n", - " ('5', '13', -0.006974815679800158),\n", - " ('5', '14', -0.027165377887093722),\n", - " ('5', '15', 0.022605149257308967),\n", - " ('5', '16', -0.04853825886406829),\n", - " ('5', '17', -0.0038405898624167124),\n", - " ('5', '18', 0.09851614932982529),\n", - " ('5', '19', -0.043686058323937155),\n", - " ('5', '20', 0.035455596491915695),\n", - " ('5', '21', 0.046341797361861434),\n", - " ('5', '22', -0.04836713370206518),\n", - " ('5', '23', -0.039228173945130757),\n", - " ('5', '24', 0.04264010377636381),\n", - " ('5', '25', -0.0009822107528065162),\n", - " ('5', '26', 0.03939096331701417),\n", - " ('5', '27', 0.09694494962900116),\n", - " ('5', '28', 0.01641759711468499),\n", - " ('5', '29', 0.0010600515477752481),\n", - " ('6', '0', -0.15674624219401764),\n", - " ('6', '1', 0.5248546145147269),\n", - " ('6', '2', 0.43404301979796883),\n", - " ('6', '3', 0.13268017164394827),\n", - " ('6', '4', 0.25345511066545673),\n", - " ('6', '5', 0.00421627852636611),\n", - " ('6', '6', 0.6677065025375298),\n", - " ('6', '7', 0.10154461297547637),\n", - " ('6', '8', -0.1429063477624299),\n", - " ('6', '9', -0.34658462644148175),\n", - " ('6', '0', 0.21678161040271482),\n", - " ('6', '1', 0.4880007259488441),\n", - " ('6', '2', -0.23935613348876744),\n", - " ('6', '3', -0.35620592508982934),\n", - " ('6', '4', -0.4249168238592291),\n", - " ('6', '5', 0.5185177672528558),\n", - " ('6', '6', 0.7059497282486017),\n", - " ('6', '7', -0.3648692599787756),\n", - " ('6', '8', 0.8710422739369239),\n", - " ('6', '9', -0.6024386052300637),\n", - " ('6', '10', -0.6736358681491557),\n", - " ('6', '11', -0.3444934621099834),\n", - " ('6', '12', -0.5347836812066052),\n", - " ('6', '13', -0.42876121558694597),\n", - " ('6', '14', -0.14960144354622854),\n", - " ('6', '15', -0.3837331611209949),\n", - " ('6', '16', 0.3479299516692314),\n", - " ('6', '17', -0.5264355272005695),\n", - " ('6', '18', 0.08781633383089014),\n", - " ('6', '19', -0.15255224395911493),\n", - " ('6', '0', 0.030626688749944404),\n", - " ('6', '1', -0.7580265231708314),\n", - " ('6', '2', 1.1747027434365154),\n", - " ('6', '3', 0.32499085901750857),\n", - " ('6', '4', 0.5169196339318368),\n", - " ('6', '5', 0.8957980524415191),\n", - " ('6', '6', -1.0109013077379951),\n", - " ('6', '7', 0.12877954581791687),\n", - " ('6', '8', -0.5203399154092909),\n", - " ('6', '9', -0.39625323789170597),\n", - " ('6', '10', 0.043921251683639265),\n", - " ('6', '11', 0.634783131950314),\n", - " ('6', '12', 0.5422319714019189),\n", - " ('6', '13', 0.4394635607448159),\n", - " ('6', '14', 0.45602685352030387),\n", - " ('6', '15', -0.30242781299278304),\n", - " ('6', '16', -0.45014317578389285),\n", - " ('6', '17', -0.07740592215463225),\n", - " ('6', '18', -0.5095986185020558),\n", - " ('6', '19', 0.2928774336561092),\n", - " ('6', '20', 0.004772440696115057),\n", - " ('6', '21', 0.24342287754703695),\n", - " ('6', '22', 0.48241181704056807),\n", - " ('6', '23', -0.18780000839483624),\n", - " ('6', '24', 0.48151620687452534),\n", - " ('6', '25', -0.25477793967754925),\n", - " ('6', '26', 1.4133212108373958),\n", - " ('6', '27', 0.6899695744638612),\n", - " ('6', '28', -0.11492668159610617),\n", - " ('6', '29', 0.6886941555503594),\n", - " ('7', '0', -0.11635008260640779),\n", - " ('7', '1', 0.3260621140843011),\n", - " ('7', '2', 0.1920866079088489),\n", - " ('7', '3', 0.020774442929426047),\n", - " ('7', '4', 0.16982890266022305),\n", - " ('7', '5', 0.06387629094522494),\n", - " ('7', '6', 0.10154461297547476),\n", - " ('7', '7', 0.5139884883374253),\n", - " ('7', '8', -0.10611280888176992),\n", - " ('7', '9', -0.1673964642336993),\n", - " ('7', '0', 0.058327897954441724),\n", - " ('7', '1', 0.3740826568562363),\n", - " ('7', '2', -0.19356896688516795),\n", - " ('7', '3', -0.25948036266075175),\n", - " ('7', '4', -0.25616289425469185),\n", - " ('7', '5', 0.33610509949539225),\n", - " ('7', '6', 0.4870462970799675),\n", - " ('7', '7', -0.21940976814124663),\n", - " ('7', '8', 0.5628228555542533),\n", - " ('7', '9', -0.3257575366140777),\n", - " ('7', '10', -0.3705771806309301),\n", - " ('7', '11', -0.2155038245315142),\n", - " ('7', '12', -0.34198815653808556),\n", - " ('7', '13', -0.26642128072055066),\n", - " ('7', '14', -0.08040697755170981),\n", - " ('7', '15', -0.28469676623302015),\n", - " ('7', '16', 0.2370101566282859),\n", - " ('7', '17', -0.29955109015920217),\n", - " ('7', '18', -0.01792588177202561),\n", - " ('7', '19', -0.11106394259470989),\n", - " ('7', '0', 1.5827801588741055e-05),\n", - " ('7', '1', -0.45253995870978253),\n", - " ('7', '2', 0.7921148909909369),\n", - " ('7', '3', 0.214760053356414),\n", - " ('7', '4', 0.3241479407958978),\n", - " ('7', '5', 0.578529686485115),\n", - " ('7', '6', -0.6382081972066329),\n", - " ('7', '7', 0.12986247272885396),\n", - " ('7', '8', -0.27447037222146653),\n", - " ('7', '9', -0.21402089783529485),\n", - " ('7', '10', 0.03743149366100141),\n", - " ('7', '11', 0.43084918073394396),\n", - " ('7', '12', 0.3151071421424126),\n", - " ('7', '13', 0.3046089234713488),\n", - " ('7', '14', 0.34046524146572005),\n", - " ('7', '15', -0.13818341581148466),\n", - " ('7', '16', -0.26984373283629653),\n", - " ('7', '17', -0.026123121960573332),\n", - " ('7', '18', -0.3561405596785558),\n", - " ('7', '19', 0.1708299111285836),\n", - " ('7', '20', -0.010762692396281495),\n", - " ('7', '21', 0.17768960265930916),\n", - " ('7', '22', 0.3300425351800264),\n", - " ('7', '23', -0.14823758880831092),\n", - " ('7', '24', 0.23944257928448728),\n", - " ('7', '25', -0.09134002453090387),\n", - " ('7', '26', 0.8087844039084686),\n", - " ('7', '27', 0.4639993383060269),\n", - " ('7', '28', -0.05109685222721),\n", - " ('7', '29', 0.4467333255574364),\n", - " ('8', '0', 0.15654480356873562),\n", - " ('8', '1', -0.5090711779666922),\n", - " ('8', '2', -0.36516952727412383),\n", - " ('8', '3', -0.06631397385386338),\n", - " ('8', '4', -0.19197509684700792),\n", - " ('8', '5', 0.027905675815673762),\n", - " ('8', '6', -0.14290634776256467),\n", - " ('8', '7', -0.1061128088817841),\n", - " ('8', '8', 0.5969791883082822),\n", - " ('8', '9', 0.3312255003189684),\n", - " ('8', '0', -0.1930818376374815),\n", - " ('8', '1', -0.44566056463777204),\n", - " ('8', '2', 0.18238204769363806),\n", - " ('8', '3', 0.36775236126237326),\n", - " ('8', '4', 0.3919648258144232),\n", - " ('8', '5', -0.49969796540571604),\n", - " ('8', '6', -0.5700585187506373),\n", - " ('8', '7', 0.33303984810522713),\n", - " ('8', '8', -0.8056452077859841),\n", - " ('8', '9', 0.4404651054428467),\n", - " ('8', '10', 0.6360113105751998),\n", - " ('8', '11', 0.3047739356320369),\n", - " ('8', '12', 0.4899789784937419),\n", - " ('8', '13', 0.3901914174174953),\n", - " ('8', '14', 0.1670737999779875),\n", - " ('8', '15', 0.3771868434260319),\n", - " ('8', '16', -0.31996875134089453),\n", - " ('8', '17', 0.45097209548865497),\n", - " ('8', '18', 0.006069670539600781),\n", - " ('8', '19', 0.12141366706835416),\n", - " ('8', '0', -0.02531200775013055),\n", - " ('8', '1', 0.6143374402472045),\n", - " ('8', '2', -1.0608262828150778),\n", - " ('8', '3', -0.2751181460889641),\n", - " ('8', '4', -0.48223372740958914),\n", - " ('8', '5', -0.8226349749115137),\n", - " ('8', '6', 0.8569048459567756),\n", - " ('8', '7', -0.15514015402579556),\n", - " ('8', '8', 0.47910286163572813),\n", - " ('8', '9', 0.3326884920938944),\n", - " ('8', '10', -0.017848833588338612),\n", - " ('8', '11', -0.5188441337814315),\n", - " ('8', '12', -0.4460916307111776),\n", - " ('8', '13', -0.354219223780119),\n", - " ('8', '14', -0.3941025820941294),\n", - " ('8', '15', 0.28097373212566623),\n", - " ('8', '16', 0.3647299301597127),\n", - " ('8', '17', 0.0848613764227518),\n", - " ('8', '18', 0.5234125968921496),\n", - " ('8', '19', -0.2833399038501304),\n", - " ('8', '20', 0.04482371307943745),\n", - " ('8', '21', -0.11426170672736193),\n", - " ('8', '22', -0.35069629624184),\n", - " ('8', '23', 0.20733497469364218),\n", - " ('8', '24', -0.3292329292768531),\n", - " ('8', '25', 0.17269626722941953),\n", - " ('8', '26', -1.1611275664619003),\n", - " ('8', '27', -0.533880716774888),\n", - " ('8', '28', 0.11331518343552914),\n", - " ('8', '29', -0.6435832034329046),\n", - " ('9', '0', 0.23625193353582946),\n", - " ('9', '1', -0.7768778388195362),\n", - " ('9', '2', -0.6120785762838988),\n", - " ('9', '3', -0.12286479160791085),\n", - " ('9', '4', -0.44422370479701095),\n", - " ('9', '5', 0.002915747652252509),\n", - " ('9', '6', -0.34658462644177024),\n", - " ('9', '7', -0.16739646423379562),\n", - " ('9', '8', 0.33122550031899856),\n", - " ('9', '9', 0.966003365060538),\n", - " ('9', '0', -0.33203457720755014),\n", - " ('9', '1', -0.6931317583838953),\n", - " ('9', '2', 0.3904314690361626),\n", - " ('9', '3', 0.5052192540016379),\n", - " ('9', '4', 0.6043523151182039),\n", - " ('9', '5', -0.7596877056842286),\n", - " ('9', '6', -1.0243778638199474),\n", - " ('9', '7', 0.5173064419291669),\n", - " ('9', '8', -1.1946451369385376),\n", - " ('9', '9', 0.7010932994835891),\n", - " ('9', '10', 0.9547507959064442),\n", - " ('9', '11', 0.5159467506943287),\n", - " ('9', '12', 0.7363508501265201),\n", - " ('9', '13', 0.7280976015963366),\n", - " ('9', '14', 0.2957164969300622),\n", - " ('9', '15', 0.5320365770479834),\n", - " ('9', '16', -0.41864007190175045),\n", - " ('9', '17', 0.8073250611944025),\n", - " ('9', '18', 0.027912119411428182),\n", - " ('9', '19', 0.2188885042215379),\n", - " ('9', '0', -0.03175211267108113),\n", - " ('9', '1', 1.011840991312164),\n", - " ('9', '2', -1.6294464780167648),\n", - " ('9', '3', -0.41944619145773204),\n", - " ('9', '4', -0.7269674746100576),\n", - " ('9', '5', -1.3145176943579024),\n", - " ('9', '6', 1.2597238473092252),\n", - " ('9', '7', -0.10327143511923764),\n", - " ('9', '8', 0.7474113730936452),\n", - " ('9', '9', 0.5298111568522796),\n", - " ('9', '10', -0.08284752810797152),\n", - " ('9', '11', -0.8397091204289172),\n", - " ('9', '12', -0.7899534110995498),\n", - " ('9', '13', -0.603183513567608),\n", - " ('9', '14', -0.6263189818624201),\n", - " ('9', '15', 0.4408082079500822),\n", - " ('9', '16', 0.5850155623833755),\n", - " ('9', '17', 0.14974610813305753),\n", - " ('9', '18', 0.7286842863453376),\n", - " ('9', '19', -0.3803428951389113),\n", - " ('9', '20', 0.07935248198023435),\n", - " ('9', '21', -0.3043696333116176),\n", - " ('9', '22', -0.5990837143768147),\n", - " ('9', '23', 0.31163023840135917),\n", - " ('9', '24', -0.533900948910401),\n", - " ('9', '25', 0.19150301236885856),\n", - " ('9', '26', -1.8651045669196156),\n", - " ('9', '27', -0.989850692371619),\n", - " ('9', '28', 0.17702375842275034),\n", - " ('9', '29', -0.9619467327376359),\n", - " ('0', '0', -0.09805104735631788),\n", - " ('0', '1', 0.3596824521942158),\n", - " ('0', '2', 0.3041105731185948),\n", - " ('0', '3', 0.08770659712667013),\n", - " ('0', '4', 0.12465688961022095),\n", - " ('0', '5', 0.0727482268016379),\n", - " ('0', '6', 0.21678161040271482),\n", - " ('0', '7', 0.058327897954441724),\n", - " ('0', '8', -0.1930818376374815),\n", - " ('0', '9', -0.33203457720755014),\n", - " ('0', '0', 0.5009066611425934),\n", - " ('0', '1', 0.3679400148820529),\n", - " ('0', '2', -0.13932877717267947),\n", - " ('0', '3', -0.28924251206781615),\n", - " ('0', '4', -0.2727820818248629),\n", - " ('0', '5', 0.36901196402287245),\n", - " ('0', '6', 0.5006196589453403),\n", - " ('0', '7', -0.2462579612109378),\n", - " ('0', '8', 0.5916979281816346),\n", - " ('0', '9', -0.3267860204218111),\n", - " ('0', '10', -0.47078249682304696),\n", - " ('0', '11', -0.19642761534212402),\n", - " ('0', '12', -0.3457591125112995),\n", - " ('0', '13', -0.3811329160265889),\n", - " ('0', '14', -0.15006210192385014),\n", - " ('0', '15', -0.2636394391781026),\n", - " ('0', '16', 0.20198531564908623),\n", - " ('0', '17', -0.3112986051299373),\n", - " ('0', '18', 0.02130648379485934),\n", - " ('0', '19', -0.05982347401738888),\n", - " ('0', '0', -0.029118651992518955),\n", - " ('0', '1', -0.48044583988753436),\n", - " ('0', '2', 0.9096382985837312),\n", - " ('0', '3', 0.20670747864049632),\n", - " ('0', '4', 0.3685393618318121),\n", - " ('0', '5', 0.656180127412199),\n", - " ('0', '6', -0.6727889103786182),\n", - " ('0', '7', 0.18007175822012333),\n", - " ('0', '8', -0.36784575520140594),\n", - " ('0', '9', -0.25077350597943776),\n", - " ('0', '10', 0.00832240307708358),\n", - " ('0', '11', 0.47599576503471913),\n", - " ('0', '12', 0.4420662704423989),\n", - " ('0', '13', 0.2712597583572329),\n", - " ('0', '14', 0.34103192294979673),\n", - " ('0', '15', -0.17810320946886746),\n", - " ('0', '16', -0.23429093722459576),\n", - " ('0', '17', -0.060682048225492495),\n", - " ('0', '18', -0.4160295411815438),\n", - " ('0', '19', 0.22808129859461965),\n", - " ('0', '20', -0.05632524118960504),\n", - " ('0', '21', 0.09842885584583357),\n", - " ('0', '22', 0.28858846639323055),\n", - " ('0', '23', -0.15857971764609421),\n", - " ('0', '24', 0.2720352501223012),\n", - " ('0', '25', -0.08991602768257112),\n", - " ('0', '26', 0.9801192182298825),\n", - " ('0', '27', 0.4888570587971647),\n", - " ('0', '28', -0.07153806013841113),\n", - " ('0', '29', 0.5195861005890325),\n", - " ('1', '0', -0.43856668830561424),\n", - " ('1', '1', 1.1179158154513034),\n", - " ('1', '2', 0.8818873335131373),\n", - " ('1', '3', 0.180785544408412),\n", - " ('1', '4', 0.601335279521733),\n", - " ('1', '5', -0.0005082099478295746),\n", - " ('1', '6', 0.4880007259488441),\n", - " ('1', '7', 0.3740826568562363),\n", - " ('1', '8', -0.44566056463777204),\n", - " ('1', '9', -0.6931317583838953),\n", - " ('1', '0', 0.36794001488199857),\n", - " ('1', '1', 1.5931535473468417),\n", - " ('1', '2', -0.6082272492981659),\n", - " ('1', '3', -0.8116745934874956),\n", - " ('1', '4', -0.8292559527160592),\n", - " ('1', '5', 1.0634218512148401),\n", - " ('1', '6', 1.5102617552276325),\n", - " ('1', '7', -0.8082583687383974),\n", - " ('1', '8', 1.841970016099635),\n", - " ('1', '9', -1.0809603200265137),\n", - " ('1', '10', -1.4386175292563277),\n", - " ('1', '11', -0.6907215819242871),\n", - " ('1', '12', -1.1102411976161295),\n", - " ('1', '13', -1.079932589088123),\n", - " ('1', '14', -0.4770328630448947),\n", - " ('1', '15', -0.8031469561610247),\n", - " ('1', '16', 0.7573724617470885),\n", - " ('1', '17', -1.1220969653532034),\n", - " ('1', '18', 0.050701670914989394),\n", - " ('1', '19', -0.4091021969738403),\n", - " ('1', '0', -0.0003886019407769959),\n", - " ('1', '1', -1.6080738345999974),\n", - " ('1', '2', 2.50200927119725),\n", - " ('1', '3', 0.6424806478474844),\n", - " ('1', '4', 1.132060467244699),\n", - " ('1', '5', 1.9399087801452572),\n", - " ('1', '6', -2.0393577122118787),\n", - " ('1', '7', 0.25863811055808006),\n", - " ('1', '8', -1.010476022022635),\n", - " ('1', '9', -0.7160678969152178),\n", - " ('1', '10', 0.21074074153018907),\n", - " ('1', '11', 1.372945183586688),\n", - " ('1', '12', 1.1917404430620127),\n", - " ('1', '13', 0.9840279844275631),\n", - " ('1', '14', 0.9489007409847877),\n", - " ('1', '15', -0.5046191509545506),\n", - " ('1', '16', -0.7902234995955788),\n", - " ('1', '17', -0.17673936001476379),\n", - " ('1', '18', -1.1226703751275573),\n", - " ('1', '19', 0.6282308359442899),\n", - " ('1', '20', -0.15973637807236454),\n", - " ('1', '21', 0.4417809565060814),\n", - " ('1', '22', 0.9074043290603956),\n", - " ('1', '23', -0.43075490016984064),\n", - " ('1', '24', 0.7487618385792327),\n", - " ('1', '25', -0.28446406848824835),\n", - " ('1', '26', 2.8445901539849943),\n", - " ('1', '27', 1.4111212442157837),\n", - " ('1', '28', -0.2627998756514203),\n", - " ('1', '29', 1.5332049046606988),\n", - " ('2', '0', 0.23970690514050488),\n", - " ('2', '1', -0.5875877014269135),\n", - " ('2', '2', -0.49684353242711504),\n", - " ('2', '3', -0.1817241403604486),\n", - " ('2', '4', -0.3300965732183976),\n", - " ('2', '5', -0.014618172334146196),\n", - " ('2', '6', -0.23935613348876744),\n", - " ('2', '7', -0.19356896688516795),\n", - " ('2', '8', 0.18238204769363806),\n", - " ('2', '9', 0.3904314690361626),\n", - " ('2', '0', -0.13932877717255862),\n", - " ('2', '1', -0.6082272492979806),\n", - " ('2', '2', 0.6887273515358154),\n", - " ('2', '3', 0.4302246442699559),\n", - " ('2', '4', 0.46653521768154355),\n", - " ('2', '5', -0.5806075831217669),\n", - " ('2', '6', -0.7723536152375278),\n", - " ('2', '7', 0.41105177808814464),\n", - " ('2', '8', -0.9229149288740545),\n", - " ('2', '9', 0.5859844082307034),\n", - " ('2', '10', 0.7522447281759304),\n", - " ('2', '11', 0.37743758435927827),\n", - " ('2', '12', 0.5819420676163549),\n", - " ('2', '13', 0.4961027785161071),\n", - " ('2', '14', 0.2887539205853794),\n", - " ('2', '15', 0.421092966291686),\n", - " ('2', '16', -0.3703421187481206),\n", - " ('2', '17', 0.586858826662759),\n", - " ('2', '18', -0.01672338983807109),\n", - " ('2', '19', 0.17964869904643135),\n", - " ('2', '0', -0.043218236846704214),\n", - " ('2', '1', 0.8509148842496324),\n", - " ('2', '2', -1.2916618060696785),\n", - " ('2', '3', -0.34392390030270575),\n", - " ('2', '4', -0.5360462912052409),\n", - " ('2', '5', -1.014415049615829),\n", - " ('2', '6', 1.0605260392502718),\n", - " ('2', '7', -0.16811102637660294),\n", - " ('2', '8', 0.5253033756971952),\n", - " ('2', '9', 0.31985513248624464),\n", - " ('2', '10', -0.06620595480936194),\n", - " ('2', '11', -0.6947595990276654),\n", - " ('2', '12', -0.5514798654954918),\n", - " ('2', '13', -0.40404768514214645),\n", - " ('2', '14', -0.4643732974697067),\n", - " ('2', '15', 0.3060914014948063),\n", - " ('2', '16', 0.41540859022728144),\n", - " ('2', '17', 0.07990588015230232),\n", - " ('2', '18', 0.687472380862739),\n", - " ('2', '19', -0.22726228288990835),\n", - " ('2', '20', 0.010273115081721393),\n", - " ('2', '21', -0.2598333884158054),\n", - " ('2', '22', -0.44547198755268325),\n", - " ('2', '23', 0.28150142240934667),\n", - " ('2', '24', -0.39487844192682187),\n", - " ('2', '25', 0.19583695278666952),\n", - " ('2', '26', -1.4842330364208793),\n", - " ('2', '27', -0.6376518630711819),\n", - " ('2', '28', 0.16384933450733946),\n", - " ('2', '29', -0.732884263020091),\n", - " ('3', '0', 0.2913607024805115),\n", - " ('3', '1', -0.8422447056562852),\n", - " ('3', '2', -0.6572620604712602),\n", - " ('3', '3', -0.1812141101242772),\n", - " ('3', '4', -0.3919760422739059),\n", - " ('3', '5', -0.01623504323068634),\n", - " ('3', '6', -0.35620592508982934),\n", - " ('3', '7', -0.25948036266075175),\n", - " ('3', '8', 0.36775236126237326),\n", - " ('3', '9', 0.5052192540016379),\n", - " ('3', '0', -0.28924251206755586),\n", - " ('3', '1', -0.8116745934871408),\n", - " ('3', '2', 0.430224644269904),\n", - " ('3', '3', 1.061405326878078),\n", - " ('3', '4', 0.6493404741720559),\n", - " ('3', '5', -0.8342226876405272),\n", - " ('3', '6', -1.0999744876140278),\n", - " ('3', '7', 0.5933335102689653),\n", - " ('3', '8', -1.308608170945031),\n", - " ('3', '9', 0.7777899567339229),\n", - " ('3', '10', 1.0104865751315972),\n", - " ('3', '11', 0.5901698776702988),\n", - " ('3', '12', 0.7753160138336523),\n", - " ('3', '13', 0.7341070629153655),\n", - " ('3', '14', 0.3194394219726099),\n", - " ('3', '15', 0.6517856226913263),\n", - " ('3', '16', -0.5458066078578924),\n", - " ('3', '17', 0.7340885293556686),\n", - " ('3', '18', -0.042348876795835044),\n", - " ('3', '19', 0.2953981044138095),\n", - " ('3', '0', 0.0013798196275037478),\n", - " ('3', '1', 1.1182038766961446),\n", - " ('3', '2', -1.7599196454003316),\n", - " ('3', '3', -0.4385079412040118),\n", - " ('3', '4', -0.8039466863909119),\n", - " ('3', '5', -1.4262888827188231),\n", - " ('3', '6', 1.5521991124370393),\n", - " ('3', '7', -0.24435544785943236),\n", - " ('3', '8', 0.7642423034118762),\n", - " ('3', '9', 0.5508403844173873),\n", - " ('3', '10', -0.07060545759404646),\n", - " ('3', '11', -0.9408148230834061),\n", - " ('3', '12', -0.876834212545921),\n", - " ('3', '13', -0.7082900589494446),\n", - " ('3', '14', -0.6406533169050108),\n", - " ('3', '15', 0.4088835065056761),\n", - " ('3', '16', 0.6062803807889925),\n", - " ('3', '17', 0.10755829587458907),\n", - " ('3', '18', 0.8522248691155841),\n", - " ('3', '19', -0.3026515156398569),\n", - " ('3', '20', 0.05614435830475384),\n", - " ('3', '21', -0.23284350482975014),\n", - " ('3', '22', -0.6272644270808806),\n", - " ('3', '23', 0.28347539314621),\n", - " ('3', '24', -0.5541765616450377),\n", - " ('3', '25', 0.24229498344522793),\n", - " ('3', '26', -2.000315578821087),\n", - " ('3', '27', -1.0031362357501945),\n", - " ('3', '28', 0.23567303866929118),\n", - " ('3', '29', -1.027613758114985),\n", - " ('4', '0', 0.2839221863579571),\n", - " ('4', '1', -1.0350561621067291),\n", - " ('4', '2', -0.6631931521208788),\n", - " ('4', '3', -0.25077939124427256),\n", - " ('4', '4', -0.45027068953285415),\n", - " ('4', '5', 0.01776510639548113),\n", - " ('4', '6', -0.4249168238592291),\n", - " ('4', '7', -0.25616289425469185),\n", - " ('4', '8', 0.3919648258144232),\n", - " ('4', '9', 0.6043523151182039),\n", - " ('4', '0', -0.2727820818246439),\n", - " ('4', '1', -0.8292559527157728),\n", - " ('4', '2', 0.46653521768157746),\n", - " ('4', '3', 0.6493404741722195),\n", - " ('4', '4', 1.0781921925689428),\n", - " ('4', '5', -0.8278871129983767),\n", - " ('4', '6', -1.2564689433893752),\n", - " ('4', '7', 0.7106743418576468),\n", - " ('4', '8', -1.4988338205314593),\n", - " ('4', '9', 0.944574834758763),\n", - " ('4', '10', 1.1792329854818795),\n", - " ('4', '11', 0.6556454216308366),\n", - " ('4', '12', 0.8807404179599735),\n", - " ('4', '13', 0.8185507029892358),\n", - " ('4', '14', 0.3489195181221588),\n", - " ('4', '15', 0.6760898909862199),\n", - " ('4', '16', -0.5626868255573576),\n", - " ('4', '17', 0.9769348268602349),\n", - " ('4', '18', -0.08016973502267755),\n", - " ('4', '19', 0.3367006636126454),\n", - " ('4', '0', -0.024001713448837475),\n", - " ('4', '1', 1.2464733234011907),\n", - " ('4', '2', -1.9833544449711022),\n", - " ('4', '3', -0.4403778904165695),\n", - " ('4', '4', -0.9269050631065752),\n", - " ('4', '5', -1.5945467491126963),\n", - " ('4', '6', 1.685814085589),\n", - " ('4', '7', -0.21871266719455007),\n", - " ('4', '8', 0.9335391663955985),\n", - " ('4', '9', 0.570685212106918),\n", - " ('4', '10', -0.04647851145385046),\n", - " ('4', '11', -1.1030214052790548),\n", - " ('4', '12', -0.9714857349952761),\n", - " ('4', '13', -0.7413159502194755),\n", - " ('4', '14', -0.8528501658400797),\n", - " ('4', '15', 0.44330819024369966),\n", - " ('4', '16', 0.6994256126525393),\n", - " ('4', '17', 0.2103712674399363),\n", - " ('4', '18', 0.9672415002199929),\n", - " ('4', '19', -0.4683807739794317),\n", - " ('4', '20', 0.03525416017108503),\n", - " ('4', '21', -0.3470877074276273),\n", - " ('4', '22', -0.76610393216244),\n", - " ('4', '23', 0.38578285791939476),\n", - " ('4', '24', -0.7050107384832867),\n", - " ('4', '25', 0.27726551095440694),\n", - " ('4', '26', -2.2197836578882106),\n", - " ('4', '27', -1.1331522662759053),\n", - " ('4', '28', 0.24626353746189963),\n", - " ('4', '29', -1.2483224478845194),\n", - " ('5', '0', -0.3271230531888133),\n", - " ('5', '1', 1.1085155284720598),\n", - " ('5', '2', 0.8871832183438491),\n", - " ('5', '3', 0.2232277143613565),\n", - " ('5', '4', 0.5562780427028218),\n", - " ('5', '5', 0.033566184596233346),\n", - " ('5', '6', 0.5185177672528558),\n", - " ('5', '7', 0.33610509949539225),\n", - " ('5', '8', -0.49969796540571604),\n", - " ('5', '9', -0.7596877056842286),\n", - " ('5', '0', 0.36901196402244407),\n", - " ('5', '1', 1.0634218512142501),\n", - " ('5', '2', -0.5806075831216285),\n", - " ('5', '3', -0.8342226876404432),\n", - " ('5', '4', -0.827887112998039),\n", - " ('5', '5', 1.5902436769801351),\n", - " ('5', '6', 1.5546598529371538),\n", - " ('5', '7', -0.8388644695598927),\n", - " ('5', '8', 1.8749027089295944),\n", - " ('5', '9', -1.0485577767416119),\n", - " ('5', '10', -1.423435181800728),\n", - " ('5', '11', -0.7319554525863374),\n", - " ('5', '12', -1.072725133250661),\n", - " ('5', '13', -1.0206298900359556),\n", - " ('5', '14', -0.462265521396879),\n", - " ('5', '15', -0.8191048050551973),\n", - " ('5', '16', 0.6720264658048822),\n", - " ('5', '17', -1.1339191338449173),\n", - " ('5', '18', 0.05901908863539116),\n", - " ('5', '19', -0.46227635960032376),\n", - " ('5', '0', 0.020919391818580355),\n", - " ('5', '1', -1.4729212295901646),\n", - " ('5', '2', 2.5119930863893174),\n", - " ('5', '3', 0.6500490350650805),\n", - " ('5', '4', 1.1655840499622196),\n", - " ('5', '5', 2.0875492008005),\n", - " ('5', '6', -2.048682339439044),\n", - " ('5', '7', 0.2865463462322958),\n", - " ('5', '8', -1.0494789771149262),\n", - " ('5', '9', -0.7527232276753817),\n", - " ('5', '10', 0.12502936123344002),\n", - " ('5', '11', 1.4201044435431707),\n", - " ('5', '12', 1.240420767151919),\n", - " ('5', '13', 0.9758319491792798),\n", - " ('5', '14', 0.9087245891432558),\n", - " ('5', '15', -0.5993661615806187),\n", - " ('5', '16', -0.877710017541067),\n", - " ('5', '17', -0.21499115918909922),\n", - " ('5', '18', -1.1963529245617008),\n", - " ('5', '19', 0.6189163198216941),\n", - " ('5', '20', -0.026635406214655252),\n", - " ('5', '21', 0.45291705010483174),\n", - " ('5', '22', 0.9583658982234342),\n", - " ('5', '23', -0.45563873924353726),\n", - " ('5', '24', 0.831428431744152),\n", - " ('5', '25', -0.29709615216716706),\n", - " ('5', '26', 2.845442944612667),\n", - " ('5', '27', 1.3377003592800114),\n", - " ('5', '28', -0.32246358151660515),\n", - " ('5', '29', 1.4744826794909662),\n", - " ('6', '0', -0.4952974106146011),\n", - " ('6', '1', 1.6317434982273398),\n", - " ('6', '2', 1.158762542303513),\n", - " ('6', '3', 0.4008678209333294),\n", - " ('6', '4', 0.7638349362736198),\n", - " ('6', '5', 0.0289085352772643),\n", - " ('6', '6', 0.7059497282486017),\n", - " ('6', '7', 0.4870462970799675),\n", - " ('6', '8', -0.5700585187506373),\n", - " ('6', '9', -1.0243778638199474),\n", - " ('6', '0', 0.5006196589449686),\n", - " ('6', '1', 1.510261755227131),\n", - " ('6', '2', -0.7723536152375472),\n", - " ('6', '3', -1.099974487614242),\n", - " ('6', '4', -1.256468943389322),\n", - " ('6', '5', 1.5546598529376208),\n", - " ('6', '6', 2.5236581899028976),\n", - " ('6', '7', -1.11381619159708),\n", - " ('6', '8', 2.5551844929052177),\n", - " ('6', '9', -1.5298383259862351),\n", - " ('6', '10', -1.9706061544211488),\n", - " ('6', '11', -1.0564600517467329),\n", - " ('6', '12', -1.4486812201873793),\n", - " ('6', '13', -1.4500030978914875),\n", - " ('6', '14', -0.7333558340798453),\n", - " ('6', '15', -1.0991846393051248),\n", - " ('6', '16', 0.9242978251195973),\n", - " ('6', '17', -1.6146626055838347),\n", - " ('6', '18', 0.012461752702256952),\n", - " ('6', '19', -0.4833787865780471),\n", - " ('6', '0', 0.015006862642651282),\n", - " ('6', '1', -2.0686431108649344),\n", - " ('6', '2', 3.3260037130738884),\n", - " ('6', '3', 0.8760082886999729),\n", - " ('6', '4', 1.6088520372919408),\n", - " ('6', '5', 2.6937718268276276),\n", - " ('6', '6', -2.7811477511316727),\n", - " ('6', '7', 0.44660349319224213),\n", - " ('6', '8', -1.4063925055915878),\n", - " ('6', '9', -1.0491814589004367),\n", - " ...]" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0, 2, 2, 5, 5, 2, 5, 0, 2, 0, 7, 3, 1, 5, 7, 1, 4, 7, 5, 8, 1, 0,\n", - " 5, 8, 0, 7, 1, 3, 5, 3, 4, 0, 5, 9, 8, 3, 2, 8, 6, 7, 6, 8, 9, 6,\n", - " 4, 1, 3, 8, 1, 6, 8, 5, 5, 5, 3, 4, 7, 4, 8, 1, 8, 4, 8, 7, 8, 2,\n", - " 2, 0, 4, 1, 3, 1, 6, 4, 3, 2, 6, 7, 8, 7, 6, 5, 6, 8, 9, 3, 8, 8,\n", - " 4, 5, 3, 4, 1, 2, 7, 5, 8, 5, 2, 4])" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.random.randint(0, 10, 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "60" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(multi.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6,\n", - " 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3,\n", - " 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n", - " 21, 22, 23, 24, 25, 26, 27, 28, 29])" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi.data.x" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['A', 'B', 'C']" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi.names" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fig" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "x0, x1 = multi._slice(\"A\", \"B\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x0.start" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x0.stop" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6,\n", - " 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3,\n", - " 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n", - " 21, 22, 23, 24, 25, 26, 27, 28, 29])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi.data.x" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from scipy.linalg import cholesky, LinAlgError\n", - "from scipy.stats import multivariate_normal\n", - "\n", - "\n", - "class GaussianData(object):\n", - " \"\"\"Named multivariate gaussian data \n", - " \n", - " For CMB PS data, x will typically be l, and y will be power spectrum.\n", - " \"\"\"\n", - "\n", - " def __init__(self, name, x, y, cov):\n", - "\n", - " self.name = str(name)\n", - "\n", - " if not (len(x) == len(y) and cov.shape == (len(x), len(x))):\n", - " raise ValueError(\n", - " f\"Incompatible shapes! x={x.shape}, y={y.shape}, cov={cov.shape}\"\n", - " )\n", - "\n", - " self.x = x\n", - " self.y = y\n", - " self.cov = cov\n", - " try:\n", - " self.cholesky = cholesky(cov)\n", - " except LinAlgError:\n", - " raise ValueError(\"Covariance is not SPD!\")\n", - " self.norm = multivariate_normal(self.y, cov=self.cov)\n", - "\n", - " def __len__(self):\n", - " return len(self.x)\n", - "\n", - "\n", - "class MultiGaussianData(object):\n", - " \"\"\"\n", - " \n", - " Parameters\n", - " ----------\n", - " data_list : list\n", - " List of Data objects\n", - " \n", - " cross_covs : dictionary\n", - " Cross-covariances, keyed by (name1, name2) tuples.\n", - " \"\"\"\n", - "\n", - " def __init__(self, data_list, cross_covs=None):\n", - "\n", - " if cross_covs is None:\n", - " cross_covs = {}\n", - "\n", - " # Ensure all cross-covs are proper shape, and fill with zeros if not present\n", - " for d1 in data_list:\n", - " for d2 in data_list:\n", - " key = (d1.name, d2.name)\n", - "\n", - " if d1 == d2:\n", - " cross_covs[key] = d1.cov\n", - "\n", - " rev_key = (d2.name, d1.name)\n", - " if key in cross_covs:\n", - " cov = cross_covs[key]\n", - " if not cov.shape == (len(d1), len(d2)):\n", - " raise ValueError(\n", - " f\"Cross-covariance (for {d1.name} x {d2.name}) has wrong shape: {cov.shape}!\"\n", - " )\n", - " elif rev_key in cross_covs:\n", - " cross_covs[key] = cross_covs[rev_key].T\n", - " else:\n", - " cross_covs[key] = np.zeros((len(d1), len(d2)))\n", - "\n", - " self.data_list = data_list\n", - " self.lengths = [len(d) for d in data_list]\n", - " self.names = [d.name for d in data_list]\n", - " self.cross_covs = cross_covs\n", - "\n", - " self._data = None\n", - "\n", - " @property\n", - " def data(self):\n", - " if self._data is None:\n", - " self._assemble_data()\n", - " return self._data\n", - "\n", - " def _index_range(self, name):\n", - " if name not in self.names:\n", - " raise ValueError(f\"{name} not in {self.names}!\")\n", - "\n", - " i0 = 0\n", - " for n, length in zip(self.names, self.lengths):\n", - " if n == name:\n", - " i1 = i0 + length\n", - " break\n", - " i0 += length\n", - " return i0, i1\n", - "\n", - " def _slice(self, *names):\n", - " if isinstance(names, str):\n", - " names = [names]\n", - "\n", - " return np.s_[tuple(slice(*multi._index_range(n)) for n in names)]\n", - "\n", - " def _assemble_data(self):\n", - " x = np.concatenate([d.x for d in self.data_list])\n", - " y = np.concatenate([d.y for d in self.data_list])\n", - "\n", - " N = sum([len(d) for d in self.data_list])\n", - "\n", - " cov = np.zeros((N, N))\n", - " for n1 in self.names:\n", - " for n2 in self.names:\n", - " cov[self._slice(n1, n2)] = self.cross_covs[(n1, n2)]\n", - "\n", - " self._data = Data(\" + \".join(self.names), x, y, cov)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.datasets import make_spd_matrix\n", - "\n", - "name1 = \"A\"\n", - "n1 = 10\n", - "x1 = np.arange(n1)\n", - "y1 = np.random.random(n1)\n", - "\n", - "name2 = \"B\"\n", - "n2 = 20\n", - "x2 = np.arange(n2)\n", - "y2 = np.random.random(n2)\n", - "\n", - "name3 = \"C\"\n", - "n3 = 30\n", - "x3 = np.arange(n3)\n", - "y3 = np.random.random(n3)\n", - "\n", - "# Generate arbitrary covariance matrix, partition into parts\n", - "full_cov = make_spd_matrix(n1 + n2 + n3, random_state=1234)\n", - "cov1 = full_cov[:n1, :n1]\n", - "cov2 = full_cov[n1 : n1 + n2, n1 : n1 + n2]\n", - "cov3 = full_cov[n1 + n2 :, n1 + n2 :]\n", - "\n", - "data1 = GaussianData(name1, x1, y1, cov1)\n", - "data2 = GaussianData(name2, x2, y2, cov2)\n", - "data3 = GaussianData(name3, x3, y3, cov3)\n", - "\n", - "cross_cov = {\n", - " (name1, name2): full_cov[:n1, n1 : n1 + n2],\n", - " (name1, name3): full_cov[:n1, n1 + n2 :],\n", - " (name2, name3): full_cov[n1 : n1 + n2, n1 + n2 :],\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "multi = MultiGaussianData([data1, data2, data3], cross_cov)\n", - "\n", - "assert (multi.cross_covs[(name1, name2)] == multi.cross_covs[(name2, name1)].T).all()\n", - "assert (multi.cross_covs[(name1, name3)] == multi.cross_covs[(name3, name1)].T).all()\n", - "assert (multi.cross_covs[(name2, name3)] == multi.cross_covs[(name3, name2)].T).all()\n", - "\n", - "assert (multi.cross_covs[(name1, name1)] == data1.cov).all()\n", - "assert (multi.cross_covs[(name2, name2)] == data2.cov).all()\n", - "assert (multi.cross_covs[(name3, name3)] == data3.cov).all()" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(slice(0, 10, None), slice(10, 30, None))" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi._slice('A', 'B')" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(slice(10, 30, None), slice(30, 60, None))" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi._slice('B', 'C')" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0, 10)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi._index_range('A')" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(10, 30)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi._index_range('B')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(30, 60)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multi._index_range('C')" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(slice(0, 10, None), slice(10, 30, None))" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.s_[(slice(*multi._index_range('A')), slice(*multi._index_range('B')))]" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(slice(0, 10, None), slice(10, 30, None))" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.s_[tuple(slice(*multi._index_range(n)) for n in ['A', 'B'])]" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "from scipy.stats import multivariate_normal" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "norm1 = multivariate_normal(y1, cov=cov1)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys([('A', 'B'), ('B', 'A')])" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "assert \n", - "multi.cross_covs.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/dev/poisson.ipynb b/notebooks/dev/poisson.ipynb deleted file mode 100644 index 9270ae43..00000000 --- a/notebooks/dev/poisson.ipynb +++ /dev/null @@ -1,458 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext lab_black\n", - "\n", - "# Generate data with a toy poisson rate function\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "from functools import partial\n", - "\n", - "from scipy.integrate import quad\n", - "\n", - "x_min = 0\n", - "x_max = 10\n", - "\n", - "\n", - "def rate_density(x, a):\n", - " \"\"\"simple linear rate density\n", - " \"\"\"\n", - " return a * x\n", - "\n", - "\n", - "def n_expected(a):\n", - " return 0.5 * a * (x_max ** 2 - x_min ** 2) # integral(rate_density, x_min, x_max)\n", - "\n", - "\n", - "def generate_data(a, with_samples=False, unc=0.3, Nk=64):\n", - " # Generate total number\n", - " n = np.random.poisson(n_expected(a))\n", - "\n", - " # Generate x values according to rate density (normalized as PDF)\n", - " u = np.random.random(n)\n", - "\n", - " # From inverting CDF of above normalized density\n", - " x = np.sqrt(u * (x_max ** 2 - x_min ** 2) + x_min ** 2)\n", - "\n", - " if not with_samples:\n", - " return x\n", - " else:\n", - " return x[:, None] * (1 + np.random.normal(0, unc, size=(n, Nk)))" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([ 4., 13., 6., 5., 18., 19., 24., 19., 19., 18.]),\n", - " array([1.04662872, 1.93081703, 2.81500534, 3.69919365, 4.58338195,\n", - " 5.46757026, 6.35175857, 7.23594688, 8.12013519, 9.0043235 ,\n", - " 9.8885118 ]),\n", - " )" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "\n", - "a_true = 3\n", - "observations = generate_data(a_true)\n", - "plt.hist(observations)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from solike.poisson_data import PoissonData\n", - "\n", - "a_grid = np.arange(0.1, 10, 0.1)\n", - "\n", - "\n", - "def test_experiment(N=100, with_samples=False, Nk=64):\n", - " a_maxlikes = []\n", - " for i in range(N):\n", - " observations = generate_data(a_true, with_samples=with_samples, Nk=Nk)\n", - " if not with_samples:\n", - " catalog = pd.DataFrame({\"x\": observations})\n", - " data = PoissonData(\"toy\", catalog, [\"x\"])\n", - " else:\n", - " catalog = pd.DataFrame({\"x\": observations.mean(axis=1)})\n", - " samples = {\"x\": observations, \"prior\": np.ones(observations.shape)}\n", - " data = PoissonData(\"toy_samples\", catalog, [\"x\"], samples=samples)\n", - "\n", - " lnl = [data.loglike(partial(rate_density, a=a), n_expected(a)) for a in a_grid]\n", - " a_maxlike = a_grid[np.argmax(lnl)]\n", - "\n", - " a_maxlikes.append(a_maxlike)\n", - "\n", - " return np.mean(a_maxlikes)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "332 ms ± 5.39 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%timeit test_experiment()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "544 ms ± 37.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%timeit test_experiment(with_samples=True, Nk=64)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'lnl' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma_grid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlnl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxvline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma_true\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"r\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'lnl' is not defined" - ] - } - ], - "source": [ - "plt.plot(a_grid, lnl)\n", - "plt.axvline(a_true, color=\"r\")" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.9000000000000004" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_maxlike = a_grid[np.argmax(lnl)]\n", - "a_maxlike" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "from inspect import signature\n", - "\n", - "sig = signature(partial(rate_density, a=3))" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "mappingproxy({'x': , 'a': })" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sig.parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "256.5984406948778" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def other_rate_density(x):\n", - " return 2 * a * x\n", - "\n", - "\n", - "data.loglike(other_rate_density, 2 * n_expected)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "272.26799216577393" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def another_rate_density(x):\n", - " return 1 / 2 * a * x\n", - "\n", - "\n", - "data.loglike(another_rate_density, 0.5 * n_expected)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "x = np.random.random(10)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(10,)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x.ndim" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "from inspect import signature\n", - "\n", - "def myfunc(a, b, c=3):\n", - " return a + b\n", - "\n", - "sig = signature(myfunc)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "mappingproxy({'a': ,\n", - " 'b': ,\n", - " 'c': })" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sig.parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "par.name" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len([p for p in sig.parameters if )" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "par = sig.parameters['a']" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..2c8432d3 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,107 @@ +[project] +name = "soliket" +# version = "0.1.dev1" +dynamic = ['version'] +authors = [ + {name = "Simons Observatory"} +] +description = "Likelihood and Theory codes for the Simons Observatory." +readme = "README.rst" +requires-python = ">=3.8, <3.12" +license = {text = "MIT"} +dependencies = [ + "requests", + 'importlib-metadata; python_version<"3.8"', + "numpy", + "scipy", + "pandas", # to remove + "astropy", + "cobaya", + "sacc", + "fgspectra >= 1.1.0", + "pyccl >= 3.0; platform_system!='Windows'", + "pyhalomodel", + "scikit-learn", + "camb", + "getdist", + "syslibrary>=0.2.0", +] + +[project.urls] +Homepage = "https://github.com/simonsobs/SOLikeT/" +Documentation = "https://soliket.readthedocs.io/en/latest/" + +[build-system] +requires = ["setuptools>=64", "setuptools_scm>=8"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +zip-safe = false + +[tool.setuptools.packages.find] +include = [ + "soliket", + "soliket.bandpass", + "soliket.bias", + "soliket.cash", + "soliket.ccl", + "soliket.clusters", + "soliket.cosmopower", + "soliket.cross_correlation", + "soliket.foreground", + "soliket.gaussian", + "soliket.halo_model", + "soliket.lensing", + "soliket.mflike", + "soliket.poisson", + "soliket.ps", + "soliket.xcorr", + ] + +[tool.setuptools.package-data] +"*" = ['*.yaml', '*.fits', '*.txt', '*.pkl', '*.gz'] + +[tool.setuptools_scm] +version_file = "soliket/version.py" + +[project.optional-dependencies] +all = [ + "cosmopower", + "pyccl", + "tensorflow_probability<0.22", +] +docs = [ + "sphinx", + "sphinx_rtd_theme", +] + +[tool.flake8] +select = ["E713","E704","E703","E714","E741","E10","E11","E20","E22","E23","E25","E262","E27","E301","E302","E304","E9","F405","F406","F5","F6","F7","F8","E501","W191","F401","W1","W292","W293","W3"] +max-line-length = 90 +exclude = [".tox","build","cobaya_packages","test",".eggs"] + +[tool.coverage.run] +omit = [ + "soliket/tests/*", + "soliket/*/tests/*", + "*/soliket/tests/*", + "*/soliket/*/tests/*", +] + +[tool.coverage.report] +exclude_lines = [ + # Have to re-enable the standard pragma + "pragma: no cover", + # Don't complain about packages we have installed + "except ImportError", + "except ModuleNotFoundError", + # Don't complain if tests don't hit assertions + "raise AssertionError", + "raise NotImplementedError", + # Don't complain about script hooks + "def main\\(.*\\):", + # Ignore branches that don't pertain to this version of Python + "pragma: py{ignore_python_version}", + # Don't complain about IPython completion helper + "def _ipython_key_completions_", +] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 1ee7fe55..00000000 --- a/setup.cfg +++ /dev/null @@ -1,70 +0,0 @@ -[metadata] -name = soliket -author = simonsobs -version = 0.1.dev -description = "SO Likelihoods & Theories" -long_description = file: README.rst -url = https://github.com/simonsobs/SOLikeT/ -edit_on_github = True - -[options] -zip_safe = False -packages = find: -python_requires = >=3.8 -setup_requires = setuptools_scm -install_requires = - numpy - scipy - pandas - scikit-learn - astropy - camb - getdist - cobaya - sacc - fgspectra>=1.1.0 - syslibrary>=0.2.0 - pyhalomodel - -[options.package_data] -soliket = *.yaml,*.bibtex,clusters/data/*,clusters/data/selFn_equD56/*,lensing/data/*.txt,lensing/data/*.fits,mflike/*.yaml,tests/*.yaml,data/xcorr_simulated/*.txt,data/CosmoPower/CP_paper/CMB/*.pkl,tests/data/test_bandpass/*,cross_correlation/*.yaml,tests/data/*.fits,halo_model/*.yaml -testpaths = "soliket" -text_file_format = rst - -[options.extras_require] -all = - cosmopower - pyccl -docs = - sphinx - sphinx_rtd_theme - -[flake8] -select = E713,E704,E703,E714,E741,E10,E11,E20,E22,E23,E25,E262,E27,E301,E302,E304,E9, - F405,F406,F5,F6,F7,F8,E501,W191,F401,W1,W292,W293,W3 -max-line-length = 90 -exclude = .tox,build,cobaya_packages,test,.eggs - -[coverage:run] -omit = - soliket/tests/* - soliket/*/tests/* - */soliket/tests/* - */soliket/*/tests/* - -[coverage:report] -exclude_lines = - # Have to re-enable the standard pragma - pragma: no cover - # Don't complain about packages we have installed - except ImportError - except ModuleNotFoundError - # Don't complain if tests don't hit assertions - raise AssertionError - raise NotImplementedError - # Don't complain about script hooks - def main\(.*\): - # Ignore branches that don't pertain to this version of Python - pragma: py{ignore_python_version} - # Don't complain about IPython completion helper - def _ipython_key_completions_ diff --git a/setup.py b/setup.py index 275c10c8..4296ae2c 100644 --- a/setup.py +++ b/setup.py @@ -2,9 +2,9 @@ # Licensed under a 3-clause BSD style license - see LICENSE.rst # NOTE: The configuration for the package, including the name, version, and -# other information are set in the setup.cfg file. +# other information are set in the pyproject.toml file. -import os +import sys, os from setuptools import setup @@ -16,15 +16,38 @@ Note: running tests is no longer done using 'python setup.py test'. Instead you will need to run: tox -e test -If you don't already have tox-conda installed, you can install it with: - pip install tox-conda -If you only want to run part of the test suite, you can also pass pytest -args through directly following a '--': - tox -e test -- -k name_of_my_test +If you don't already have tox installed, you can install it with: + pip install tox +If you only want to run part of the test suite, you can also use pytest +directly with:: + pip install -e .[test] + pytest For more information, see: - https://github.com/simonsobs/SOLikeT#running-tests + https://soliket.readthedocs.io/en/latest/developers.html#checking-code-in-development """ +if 'test' in sys.argv: + print(TEST_HELP) + sys.exit(1) + +DOCS_HELP = """ +Note: building the documentation is no longer done using +'python setup.py build_docs'. Instead you will need to run: + tox -e build_docs +If you don't already have tox installed, you can install it with: + pip install tox +You can also build the documentation with Sphinx directly using:: + pip install -e .[docs] + cd docs + make html +For more information, see: + https://soliket.readthedocs.io/en/latest/developers.html#documentation +""" + +if 'build_docs' in sys.argv or 'build_sphinx' in sys.argv: + print(DOCS_HELP) + sys.exit(1) + VERSION_TEMPLATE = """ # Note that we need to fall back to the hard-coded version if either # setuptools_scm can't be imported or setuptools_scm can't determine the @@ -36,5 +59,5 @@ version = '{version}' """.lstrip() -setup(use_scm_version={'write_to': os.path.join('.', 'version.py'), +setup(use_scm_version={'write_to': os.path.join('soliket', 'version.py'), 'write_to_template': VERSION_TEMPLATE}) diff --git a/soliket/__init__.py b/soliket/__init__.py index 988b6308..1475b20d 100644 --- a/soliket/__init__.py +++ b/soliket/__init__.py @@ -1,18 +1,51 @@ -from .lensing import LensingLiteLikelihood, LensingLikelihood # noqa: F401 -from .gaussian import GaussianLikelihood, MultiGaussianLikelihood # noqa: F401 -# from .studentst import StudentstLikelihood # noqa: F401 -from .ps import PSLikelihood, BinnedPSLikelihood # noqa: F401 -from .mflike import MFLike # noqa: F401 -from .mflike import TheoryForge_MFLike # noqa F401 -from .cross_correlation import CrossCorrelationLikelihood, GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 -from .xcorr import XcorrLikelihood # noqa: F401 -from .foreground import Foreground # noqa F401 -from .bandpass import BandPass # noqa F401 -from .cosmopower import CosmoPower, CosmoPowerDerived # noqa F401 -from .ccl import CCL # noqa: F401 +from .bandpass import BandPass +from .bias import Bias, Linear_bias +from .ccl import CCL +from .clusters import ClusterLikelihood +from .cosmopower import CosmoPower, CosmoPowerDerived +from .cross_correlation import (CrossCorrelationLikelihood, + GalaxyKappaLikelihood, ShearKappaLikelihood) +from .foreground import Foreground +from .gaussian import GaussianLikelihood, MultiGaussianLikelihood +from .lensing import LensingLikelihood, LensingLiteLikelihood +from .mflike import MFLike, TheoryForge_MFLike +# from .studentst import StudentstLikelihood +from .ps import BinnedPSLikelihood, PSLikelihood +from .xcorr import XcorrLikelihood -try: - from .clusters import ClusterLikelihood # noqa: F401 -except ImportError: - print('Skipping cluster likelihood (is pyCCL installed?)') - pass +__all__ = [ + # bandpass + "BandPass", + # bias + "Bias", + "Linear_bias", + # ccl + "CCL", + # clusters + "ClusterLikelihood", + # cosmopower + "CosmoPower", + "CosmoPowerDerived", + # cross_correlation + "CrossCorrelationLikelihood", + "GalaxyKappaLikelihood", + "ShearKappaLikelihood", + # foreground + "Foreground", + # gaussian + "GaussianLikelihood", + "MultiGaussianLikelihood", + # lensing + "LensingLikelihood", + "LensingLiteLikelihood", + # mflike + "MFLike", + "TheoryForge_MFLike", + # studentst + # "StudentstLikelihood", + # ps + "BinnedPSLikelihood", + "PSLikelihood", + # xcorr + "XcorrLikelihood", +] diff --git a/soliket/BandPass.yaml b/soliket/bandpass/BandPass.yaml similarity index 100% rename from soliket/BandPass.yaml rename to soliket/bandpass/BandPass.yaml diff --git a/soliket/bandpass/__init__.py b/soliket/bandpass/__init__.py new file mode 100644 index 00000000..4fb3089b --- /dev/null +++ b/soliket/bandpass/__init__.py @@ -0,0 +1,5 @@ +from .bandpass import BandPass + +__all__ = [ + "BandPass", +] diff --git a/soliket/bandpass.py b/soliket/bandpass/bandpass.py similarity index 99% rename from soliket/bandpass.py rename to soliket/bandpass/bandpass.py index e6017a64..149a53b3 100644 --- a/soliket/bandpass.py +++ b/soliket/bandpass/bandpass.py @@ -86,16 +86,15 @@ """ -import numpy as np import os from typing import Optional +import numpy as np +from cobaya.log import LoggedError from cobaya.theory import Theory from cobaya.tools import are_different_params_lists -from cobaya.log import LoggedError - -from .constants import T_CMB, h_Planck, k_Boltzmann +from soliket.constants import T_CMB, h_Planck, k_Boltzmann # Converts from cmb units to brightness. # Numerical factors not included, it needs proper normalization when used. diff --git a/soliket/Bias.yaml b/soliket/bias/Bias.yaml similarity index 100% rename from soliket/Bias.yaml rename to soliket/bias/Bias.yaml diff --git a/soliket/Linear_bias.yaml b/soliket/bias/Linear_bias.yaml similarity index 100% rename from soliket/Linear_bias.yaml rename to soliket/bias/Linear_bias.yaml diff --git a/soliket/bias/__init__.py b/soliket/bias/__init__.py new file mode 100644 index 00000000..50292f5e --- /dev/null +++ b/soliket/bias/__init__.py @@ -0,0 +1,6 @@ +from .bias import Bias, Linear_bias + +__all__ = [ + "Bias", + "Linear_bias", +] diff --git a/soliket/bias.py b/soliket/bias/bias.py similarity index 99% rename from soliket/bias.py rename to soliket/bias/bias.py index 1f5da966..eab8494f 100644 --- a/soliket/bias.py +++ b/soliket/bias/bias.py @@ -26,8 +26,9 @@ function (have a look at the linear bias model for ideas). """ -import numpy as np from typing import Optional + +import numpy as np from cobaya.theory import Theory diff --git a/soliket/cash/__init__.py b/soliket/cash/__init__.py new file mode 100644 index 00000000..aede45da --- /dev/null +++ b/soliket/cash/__init__.py @@ -0,0 +1,9 @@ +from .cash import CashCLikelihood +from .cash_data import CashCData + +__all__ = [ + # cash + "CashCLikelihood", + # cash_data + "CashCData", +] diff --git a/soliket/cash.py b/soliket/cash/cash.py similarity index 99% rename from soliket/cash.py rename to soliket/cash/cash.py index 27ef2ef6..9d2e1efb 100644 --- a/soliket/cash.py +++ b/soliket/cash/cash.py @@ -1,7 +1,8 @@ -import numpy as np from typing import Optional +import numpy as np from cobaya.likelihood import Likelihood + from .cash_data import CashCData diff --git a/soliket/cash_data.py b/soliket/cash/cash_data.py similarity index 100% rename from soliket/cash_data.py rename to soliket/cash/cash_data.py diff --git a/soliket/CCL.yaml b/soliket/ccl/CCL.yaml similarity index 100% rename from soliket/CCL.yaml rename to soliket/ccl/CCL.yaml diff --git a/soliket/ccl/__init__.py b/soliket/ccl/__init__.py new file mode 100644 index 00000000..97f64c30 --- /dev/null +++ b/soliket/ccl/__init__.py @@ -0,0 +1,5 @@ +from .ccl import CCL + +__all__ = [ + "CCL", +] diff --git a/soliket/ccl.py b/soliket/ccl/ccl.py similarity index 100% rename from soliket/ccl.py rename to soliket/ccl/ccl.py diff --git a/soliket/clusters/__init__.py b/soliket/clusters/__init__.py index d790c894..c3262154 100644 --- a/soliket/clusters/__init__.py +++ b/soliket/clusters/__init__.py @@ -1 +1,5 @@ -from .clusters import ClusterLikelihood # noqa: F401 +from .clusters import ClusterLikelihood + +__all__ = [ + "ClusterLikelihood", +] diff --git a/soliket/clusters/clusters.py b/soliket/clusters/clusters.py index 7f0c201f..e83303cd 100644 --- a/soliket/clusters/clusters.py +++ b/soliket/clusters/clusters.py @@ -17,15 +17,16 @@ `_ p """ +import os + import numpy as np import pandas as pd -import os +import pyccl as ccl from scipy.interpolate import interp1d -import pyccl as ccl +from soliket.clusters import massfunc as mf +from soliket.poisson import PoissonLikelihood -from ..poisson import PoissonLikelihood -from . import massfunc as mf from .survey import SurveyData from .sz_utils import szutils diff --git a/soliket/clusters/massfunc.py b/soliket/clusters/massfunc.py index d5293523..0f944391 100644 --- a/soliket/clusters/massfunc.py +++ b/soliket/clusters/massfunc.py @@ -8,8 +8,10 @@ import numpy as np from scipy.interpolate import RegularGridInterpolator + +from soliket.constants import G_CGS, MPC2CM, MSUN_CGS + from .tinker import dn_dlogM -from ..constants import MSUN_CGS, G_CGS, MPC2CM np.seterr(divide='ignore', invalid='ignore') diff --git a/soliket/clusters/survey.py b/soliket/clusters/survey.py index 4024a566..33617028 100644 --- a/soliket/clusters/survey.py +++ b/soliket/clusters/survey.py @@ -8,15 +8,14 @@ """ import os -import numpy as np -from scipy import interpolate import astropy.io.fits as pyfits - +import astropy.table as atpy +import numpy as np +from astropy.io import fits # from astLib import astWCS from astropy.wcs import WCS -from astropy.io import fits -import astropy.table as atpy +from scipy import interpolate def read_clust_cat(fitsfile, qmin): diff --git a/soliket/clusters/sz_utils.py b/soliket/clusters/sz_utils.py index 26a017a2..a84f3035 100644 --- a/soliket/clusters/sz_utils.py +++ b/soliket/clusters/sz_utils.py @@ -9,11 +9,14 @@ import numpy as np from scipy import interpolate -# from astropy.cosmology import FlatLambdaCDM # from nemo import signals -from ..constants import MPC2CM, MSUN_CGS, G_CGS, C_M_S, T_CMB -from ..constants import h_Planck, k_Boltzmann, electron_mass_kg, elementary_charge +from soliket.constants import (C_M_S, G_CGS, MPC2CM, MSUN_CGS, T_CMB, + electron_mass_kg, elementary_charge, h_Planck, + k_Boltzmann) + +# from astropy.cosmology import FlatLambdaCDM + # from .clusters import C_KM_S as C_in_kms diff --git a/soliket/clusters/tinker.py b/soliket/clusters/tinker.py index 5f9fbba0..7b4d5803 100644 --- a/soliket/clusters/tinker.py +++ b/soliket/clusters/tinker.py @@ -5,10 +5,9 @@ """ -from builtins import zip import numpy as np -from scipy.interpolate import InterpolatedUnivariateSpline as iuSpline from scipy.integrate import simps +from scipy.interpolate import InterpolatedUnivariateSpline as iuSpline # Tinker stuff diff --git a/soliket/CosmoPower.yaml b/soliket/cosmopower/CosmoPower.yaml similarity index 92% rename from soliket/CosmoPower.yaml rename to soliket/cosmopower/CosmoPower.yaml index c31dd35c..aab494a3 100644 --- a/soliket/CosmoPower.yaml +++ b/soliket/cosmopower/CosmoPower.yaml @@ -1,7 +1,7 @@ stop_at_error: False # A path to the directory where cosmopower networks are stored (can be either relative or absolute). -network_path: soliket/data/CosmoPower/CP_paper/CMB +network_path: soliket/cosmopower/data/CP_paper/ # A dictionary of all networks and their settings. network_settings: diff --git a/soliket/CosmoPowerDerived.yaml b/soliket/cosmopower/CosmoPowerDerived.yaml similarity index 100% rename from soliket/CosmoPowerDerived.yaml rename to soliket/cosmopower/CosmoPowerDerived.yaml diff --git a/soliket/cosmopower/__init__.py b/soliket/cosmopower/__init__.py new file mode 100644 index 00000000..db8c19b0 --- /dev/null +++ b/soliket/cosmopower/__init__.py @@ -0,0 +1,6 @@ +from .cosmopower import CosmoPower, CosmoPowerDerived + +__all__ = [ + "CosmoPower", + "CosmoPowerDerived", +] diff --git a/soliket/cosmopower.py b/soliket/cosmopower/cosmopower.py old mode 100755 new mode 100644 similarity index 99% rename from soliket/cosmopower.py rename to soliket/cosmopower/cosmopower.py index 58ed565c..af30750c --- a/soliket/cosmopower.py +++ b/soliket/cosmopower/cosmopower.py @@ -91,20 +91,19 @@ information on how SOLikeT infers these values. """ import os +from typing import Iterable, Tuple + +import numpy as np +from cobaya.log import LoggedError +from cobaya.theories.cosmo import BoltzmannBase +from cobaya.theory import Theory try: - import cosmopower as cp # noqa F401 + import cosmopower as cp except ImportError: HAS_COSMOPOWER = False else: HAS_COSMOPOWER = True -import numpy as np - -from typing import Iterable, Tuple - -from cobaya.log import LoggedError -from cobaya.theory import Theory -from cobaya.theories.cosmo import BoltzmannBase class CosmoPower(BoltzmannBase): diff --git a/soliket/data/CosmoPower/CP_paper/CMB/cmb_EE_NN.pkl b/soliket/cosmopower/data/CP_paper/cmb_EE_NN.pkl similarity index 100% rename from soliket/data/CosmoPower/CP_paper/CMB/cmb_EE_NN.pkl rename to soliket/cosmopower/data/CP_paper/cmb_EE_NN.pkl diff --git a/soliket/data/CosmoPower/CP_paper/CMB/cmb_TE_PCAplusNN.pkl b/soliket/cosmopower/data/CP_paper/cmb_TE_PCAplusNN.pkl similarity index 100% rename from soliket/data/CosmoPower/CP_paper/CMB/cmb_TE_PCAplusNN.pkl rename to soliket/cosmopower/data/CP_paper/cmb_TE_PCAplusNN.pkl diff --git a/soliket/data/CosmoPower/CP_paper/CMB/cmb_TT_NN.pkl b/soliket/cosmopower/data/CP_paper/cmb_TT_NN.pkl similarity index 100% rename from soliket/data/CosmoPower/CP_paper/CMB/cmb_TT_NN.pkl rename to soliket/cosmopower/data/CP_paper/cmb_TT_NN.pkl diff --git a/soliket/cross_correlation/__init__.py b/soliket/cross_correlation/__init__.py index 1bc79b29..51085114 100644 --- a/soliket/cross_correlation/__init__.py +++ b/soliket/cross_correlation/__init__.py @@ -1 +1,8 @@ -from .cross_correlation import CrossCorrelationLikelihood, GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 +from .cross_correlation import (CrossCorrelationLikelihood, + GalaxyKappaLikelihood, ShearKappaLikelihood) + +__all__ = [ + "CrossCorrelationLikelihood", + "GalaxyKappaLikelihood", + "ShearKappaLikelihood", +] diff --git a/soliket/cross_correlation/cross_correlation.py b/soliket/cross_correlation/cross_correlation.py index 733917de..79f3316c 100644 --- a/soliket/cross_correlation/cross_correlation.py +++ b/soliket/cross_correlation/cross_correlation.py @@ -6,10 +6,10 @@ """ import numpy as np -from ..gaussian import GaussianData, GaussianLikelihood +import sacc from cobaya.log import LoggedError -import sacc +from soliket.gaussian import GaussianData, GaussianLikelihood class CrossCorrelationLikelihood(GaussianLikelihood): diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_binned_covmat.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_binned_covmat.txt deleted file mode 100644 index 29f1ab5c..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_binned_covmat.txt +++ /dev/null @@ -1,24 +0,0 @@ -1.729646874484810642e-17 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 3.606094848424114668e-18 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 1.636368853612458790e-18 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 9.713829818557594003e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 6.311533292207274567e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 4.902801492828760236e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 4.192069580840184671e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.614401655599662486e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.291658771284894329e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.170920414539706226e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.045209885907086770e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 2.941926558733682364e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 2.934699382635918944e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 2.907475353165981646e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 2.858056988427044816e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 2.938921165808316976e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.100525363682676475e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.210853219451452632e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.407641704223738755e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.688199864659586517e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.905521387010950782e-19 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 4.435322119086865235e-19 0.000000000000000000e+00 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 5.524504882874078760e-19 0.000000000000000000e+00 -0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 6.701074494766410411e-19 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_00_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_00_bandpowers.txt deleted file mode 100644 index 3cfcf865..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_00_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.984356928057898132e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.107394468494963703e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.857523318701153575e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.827491747295644723e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.506345331343814622e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.573753257459156110e-08 -6.200000000000000000e+02 7.200000000000000000e+02 1.996669575580852266e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.748265703113232040e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.419484534733495995e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.153398584737835415e-08 -1.020000000000000000e+03 1.120000000000000000e+03 8.855319101021316287e-09 -1.120000000000000000e+03 1.220000000000000000e+03 7.932649800259835463e-09 -1.220000000000000000e+03 1.320000000000000000e+03 8.095081236591330423e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.082582954431439671e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.136109605101378861e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.294569888116144105e-09 -1.620000000000000000e+03 1.720000000000000000e+03 5.133572054880966890e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.173160532010960208e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.289641046005709027e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.485226671382104738e-09 -2.020000000000000000e+03 2.120000000000000000e+03 4.101987108995440396e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.387242268965946437e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.207339471506727132e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.530808706282219483e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_01_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_01_bandpowers.txt deleted file mode 100644 index b5ee4814..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_01_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 2.001618306383567537e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.126830665947282277e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.829365775829961780e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.671461406267817605e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.487128483176692497e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.738730259049838757e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.082161677744051131e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.699726170250701136e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.339913769586927075e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.083900838726373931e-08 -1.020000000000000000e+03 1.120000000000000000e+03 1.005637819724339477e-08 -1.120000000000000000e+03 1.220000000000000000e+03 9.038111665086098129e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.719553334909560158e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.418869564462392644e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.545816516715018038e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.105812405200458983e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.913697096500616974e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.287232602471166131e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.651446034179292135e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.747322284968786324e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.372273021911632789e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.500871485223482722e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.771857881553660306e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.964589094541926192e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_02_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_02_bandpowers.txt deleted file mode 100644 index 6cd24e73..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_02_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.954604266484835686e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.102365539881991831e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.733053553147123621e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.711588488670215303e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.546220915173697325e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.594612662478394930e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.050211822394170572e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.574603162317677788e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.356816312987974583e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.071013457814500761e-08 -1.020000000000000000e+03 1.120000000000000000e+03 1.080175696768396261e-08 -1.120000000000000000e+03 1.220000000000000000e+03 7.925799992168690784e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.124168729896986387e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.589968062393711019e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.763099486306236230e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.217586016542364385e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.293821342588888932e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.687027671367391857e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.517711028495811288e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.820539630933142375e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.016854915665855634e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.581000992409087997e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.240323234941417013e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.704666775247023153e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_03_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_03_bandpowers.txt deleted file mode 100644 index 2b826cfe..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_03_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.924026023331423376e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.088317105176366289e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.012226116411484838e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.658393618843963307e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.492494915375053242e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.719284954610095007e-08 -6.200000000000000000e+02 7.200000000000000000e+02 1.994352192085092161e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.755211873231641498e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.376432339300796691e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.129398279126771853e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.967195025834000446e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.227344745094912965e-09 -1.220000000000000000e+03 1.320000000000000000e+03 8.332833208327954159e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.076972527691834656e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.354078601562885545e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.343721895691674876e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.488022755182705944e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.095223598604141297e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.111953889488231845e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.552652421303452759e-09 -2.020000000000000000e+03 2.120000000000000000e+03 4.023275583867717402e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.361134663169235015e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.864311350628584353e-09 -2.320000000000000000e+03 2.420000000000000000e+03 3.351245303128758279e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_04_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_04_bandpowers.txt deleted file mode 100644 index 8effb8a4..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_04_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.965495165929327123e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.121901697774177628e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.709912925768731684e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.741907818514134581e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.432016580055060005e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.526922575676362871e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.203395810644007969e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.692802955236926011e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.289630865322812371e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.225756766677118449e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.800899001947272941e-09 -1.120000000000000000e+03 1.220000000000000000e+03 7.674430776047971018e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.603408227169307794e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.773505851470368579e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.363338528761736614e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.411646294033443341e-09 -1.620000000000000000e+03 1.720000000000000000e+03 5.491906044546769929e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.966661391150689108e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.964735771778331690e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.075685101524618881e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.458920587895294731e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.682189125263947904e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.674310045636682154e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.871017453521912838e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_05_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_05_bandpowers.txt deleted file mode 100644 index d263f6d5..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_05_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.963033535700921016e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.082576200793411132e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.811851697009313036e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.661915604642847536e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.387495720804023874e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.567039571989335258e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.071903436610846758e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.775281429980792428e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.360237087280102835e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.184517055251609991e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.319424990259619486e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.492591362356690291e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.877045693519178538e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.473809297842232563e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.488000521535300065e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.686507377808339011e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.433320615707509187e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.216126910907947443e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.823872825317142309e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.547764588793964044e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.906937277112195058e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.578299448821282009e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.740025524466389425e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.767145043130977605e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_06_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_06_bandpowers.txt deleted file mode 100644 index 8756519e..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_06_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.965430701205186577e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.122797819902552964e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.851095921923319075e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.692386248913477885e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.433857237017070574e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.600752576929921612e-08 -6.200000000000000000e+02 7.200000000000000000e+02 1.987551135248993045e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.754162634810543712e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.350433787391766009e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.132450292119914275e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.151313164293573535e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.430933132964263812e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.818525496729641876e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.562878343437267179e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.476194113681117709e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.296379468175288974e-09 -1.620000000000000000e+03 1.720000000000000000e+03 5.314420055288791369e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.743298248339576171e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.294921927564533929e-09 -1.920000000000000000e+03 2.020000000000000000e+03 2.974521898360490769e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.599392476396248220e-09 -2.120000000000000000e+03 2.220000000000000000e+03 4.197628359815640719e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.764417620776418606e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.528790438942456005e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_07_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_07_bandpowers.txt deleted file mode 100644 index e75111ac..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_07_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.939968835089699342e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.104614141323517487e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.925043966906909399e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.775083067115993025e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.414541286751528720e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.696320907526028862e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.070065569219540101e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.617405659868146876e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.430413151840683572e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.161369921261343963e-08 -1.020000000000000000e+03 1.120000000000000000e+03 1.001370960562201040e-08 -1.120000000000000000e+03 1.220000000000000000e+03 8.349699448169141236e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.854936935869588367e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.760716795505376013e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.550313840280296954e-09 -1.520000000000000000e+03 1.620000000000000000e+03 4.987486968061948556e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.432612431105742709e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.481756989853624261e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.481481993464681802e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.762486120371958291e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.240055811808149223e-09 -2.120000000000000000e+03 2.220000000000000000e+03 4.617697586045830281e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.876675836382372445e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.322441674492715579e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_08_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_08_bandpowers.txt deleted file mode 100644 index f3015469..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_08_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.968646867733285693e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.117968283578425846e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.753889477659365371e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.747523888804280480e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.481549536280860986e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.565204341216335767e-08 -6.200000000000000000e+02 7.200000000000000000e+02 1.999730636909530351e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.737967367226969740e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.342941098480317444e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.116543594053320266e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.588501436219754750e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.755545719115783200e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.260844568930590517e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.942450120829319976e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.544570840532581098e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.136917747511057570e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.624343389384264312e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.447889533896760399e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.673652013827832822e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.516109563664945025e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.299735941344599735e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.354718327625765943e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.635526208468438874e-09 -2.320000000000000000e+03 2.420000000000000000e+03 1.511340100115885838e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_09_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_09_bandpowers.txt deleted file mode 100644 index 84ae238b..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_09_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.928293724704490987e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.164735374609122132e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.012792988531257461e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.770592189406176013e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.530498411249397491e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.644224678328069332e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.063634399110036786e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.575397820980811510e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.381326886170976051e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.262310346323429985e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.178744998476070711e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.044788407324125766e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.803074472047450562e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.994940818937702163e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.376750202543441965e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.439676631808345919e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.813655915923591203e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.605601881158613684e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.976596030303644349e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.813067764418118637e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.275699463016834238e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.432009545066880965e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.238017930695790865e-09 -2.320000000000000000e+03 2.420000000000000000e+03 3.272850817649063630e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_10_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_10_bandpowers.txt deleted file mode 100644 index 65261b84..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_10_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.932654121430917535e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.115835516655490851e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.742293888110283028e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.757670298244936260e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.420472646810306332e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.589171526750538563e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.125879334109010819e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.673262065879025053e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.353345245667870320e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.157128106760380727e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.921617453156359839e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.857448491964797505e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.859775929549032493e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.120328121077007623e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.034388741553501909e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.668067924960098887e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.636575528813538731e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.505485805315388816e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.719163457359087521e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.223554250185161557e-09 -2.020000000000000000e+03 2.120000000000000000e+03 4.237574101642581700e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.836601738203154229e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.541714666929743612e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.475942525604325760e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_11_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_11_bandpowers.txt deleted file mode 100644 index c6417e16..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_11_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.902618973682567955e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.124930056512838897e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.054228453965462530e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.620497260145330044e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.423758863466949179e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.534910920547711946e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.129682195372330608e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.748999988406422463e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.306754638496861878e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.119918522737458387e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.327639213647156632e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.648345208607565293e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.956832269083162620e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.185435621626753270e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.348927221450293222e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.143925068983090004e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.108574983604939410e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.513894216203716134e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.151364490964008660e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.131360356333779789e-09 -2.020000000000000000e+03 2.120000000000000000e+03 3.119571597846434764e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.353419061665044962e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.440758155003356459e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.480956995678019719e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_12_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_12_bandpowers.txt deleted file mode 100644 index 2373e39e..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_12_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.961385819554663951e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.086479429207137188e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.786042234212228089e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.747639188321115048e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.425905306057052827e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.645732089928839107e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.031953010993446239e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.643585041226238450e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.275927038539987884e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.165483028958343496e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.277196781988138015e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.117554790786785238e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.127036370976327471e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.449371899103259927e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.057966423454402434e-09 -1.520000000000000000e+03 1.620000000000000000e+03 4.815733384786980684e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.480321369028094828e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.940218854824193756e-09 -1.820000000000000000e+03 1.920000000000000000e+03 2.533620551582262461e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.117152609673468219e-09 -2.020000000000000000e+03 2.120000000000000000e+03 4.175488041661571322e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.445408761981777917e-09 -2.220000000000000000e+03 2.320000000000000000e+03 4.762447860395746583e-10 -2.320000000000000000e+03 2.420000000000000000e+03 2.711355081848912488e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_13_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_13_bandpowers.txt deleted file mode 100644 index b75c22f0..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_13_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.980464416065648566e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.104790300485385571e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.098644737976333553e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.704706207411596945e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.577896936812821398e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.703041393438855076e-08 -6.200000000000000000e+02 7.200000000000000000e+02 1.993399678623522889e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.692138101659659032e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.404112635849495915e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.179780414214678409e-08 -1.020000000000000000e+03 1.120000000000000000e+03 8.962333473646101667e-09 -1.120000000000000000e+03 1.220000000000000000e+03 9.827591573940982645e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.465525661107716092e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.129776270480974396e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.680781619710085687e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.567009285553086262e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.975651472412476817e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.840732952742210790e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.622806826957687161e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.632995176250030254e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.512690121704650552e-09 -2.120000000000000000e+03 2.220000000000000000e+03 2.338762054710187812e-09 -2.220000000000000000e+03 2.320000000000000000e+03 1.953460892856102897e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.922064475892109243e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_14_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_14_bandpowers.txt deleted file mode 100644 index a5b2b05a..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_14_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.938439982679556084e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.114399904119418750e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.036992674766263884e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.728600607847876654e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.473793298220360444e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.554572497330878177e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.077505143075178485e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.757010528546540761e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.335069881549384711e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.192428943515718546e-08 -1.020000000000000000e+03 1.120000000000000000e+03 1.010003067882803360e-08 -1.120000000000000000e+03 1.220000000000000000e+03 8.488237405054165403e-09 -1.220000000000000000e+03 1.320000000000000000e+03 6.774373060953046513e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.825846368827607676e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.430893096233345053e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.347807551929787561e-09 -1.620000000000000000e+03 1.720000000000000000e+03 5.286139942946514380e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.179983273472341424e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.090565474242096668e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.733078095028532343e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.085124062634330600e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.267657311918866780e-09 -2.220000000000000000e+03 2.320000000000000000e+03 1.870620103230325094e-09 -2.320000000000000000e+03 2.420000000000000000e+03 3.157341375200039777e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_15_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_15_bandpowers.txt deleted file mode 100644 index aa0c7289..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_15_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.984938000001559794e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.124130794153993280e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.795646481480215794e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.757291809373114283e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.658892987255447824e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.618362512048597094e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.006773960728545394e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.689493105618113568e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.431633509536903089e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.109928687759581423e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.380146542949112308e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.500120251169268894e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.721481291260189660e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.081255285860810048e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.281362249271798934e-09 -1.520000000000000000e+03 1.620000000000000000e+03 4.627760428570284698e-09 -1.620000000000000000e+03 1.720000000000000000e+03 3.795847861327895224e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.485003721832275520e-09 -1.820000000000000000e+03 1.920000000000000000e+03 4.055844651733873300e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.361101766283721661e-09 -2.020000000000000000e+03 2.120000000000000000e+03 4.130896839382583560e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.547468823549134709e-09 -2.220000000000000000e+03 2.320000000000000000e+03 4.094609852836126189e-09 -2.320000000000000000e+03 2.420000000000000000e+03 2.358058325905051712e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_16_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_16_bandpowers.txt deleted file mode 100644 index d1ecea36..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_16_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.931679405741621506e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.099614595673932106e-07 -2.200000000000000000e+02 3.200000000000000000e+02 7.029628888945527763e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.731280121637389236e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.416115609197067271e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.679783504710456081e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.164671834089574306e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.653063878514346390e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.323247209167755776e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.223235061252731375e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.746687380483784323e-09 -1.120000000000000000e+03 1.220000000000000000e+03 9.147997667826935329e-09 -1.220000000000000000e+03 1.320000000000000000e+03 6.948734698086109721e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.201925994555533059e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.182666549187736193e-09 -1.520000000000000000e+03 1.620000000000000000e+03 4.732579531782716064e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.115978808299906400e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.773089405658859535e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.072881654932229373e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.423819830629027159e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.147382699681707223e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.091757045632834581e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.102075756247051613e-09 -2.320000000000000000e+03 2.420000000000000000e+03 1.915242115831545756e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_17_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_17_bandpowers.txt deleted file mode 100644 index e796e1a1..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_17_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.891575034582600471e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.135687442946287777e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.917033661513168914e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.863075649897663594e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.285143751849721399e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.649672877977421827e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.107847651885531065e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.678489690253242963e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.369501702901446345e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.168092334547864241e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.542427891025725062e-09 -1.120000000000000000e+03 1.220000000000000000e+03 8.350573026480831734e-09 -1.220000000000000000e+03 1.320000000000000000e+03 6.350328255809522077e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.926641139931745699e-09 -1.420000000000000000e+03 1.520000000000000000e+03 6.446363447833194928e-09 -1.520000000000000000e+03 1.620000000000000000e+03 5.029338741435037281e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.942482673700548167e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.302046876651400625e-09 -1.820000000000000000e+03 1.920000000000000000e+03 5.290754718414583545e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.005291619634449148e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.520778951332425562e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.410313351856413962e-09 -2.220000000000000000e+03 2.320000000000000000e+03 1.648477304055144226e-09 -2.320000000000000000e+03 2.420000000000000000e+03 3.942363185530467663e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_18_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_18_bandpowers.txt deleted file mode 100644 index cc53f79f..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_18_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.971220119641323373e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.092677848443624444e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.820916579802510506e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.742811519622285170e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.455159409290434076e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.594460464693600283e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.023127019019318926e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.645903951164772843e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.246492507793035181e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.130915896702368713e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.526995246246109642e-09 -1.120000000000000000e+03 1.220000000000000000e+03 9.503084547899492737e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.232266738909684799e-09 -1.320000000000000000e+03 1.420000000000000000e+03 6.065339497909099905e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.254033422681772316e-09 -1.520000000000000000e+03 1.620000000000000000e+03 4.196522258180136517e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.551507571468414190e-09 -1.720000000000000000e+03 1.820000000000000000e+03 4.384628038431559619e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.616413487818825600e-09 -1.920000000000000000e+03 2.020000000000000000e+03 3.665941582140321424e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.618956082802407816e-09 -2.120000000000000000e+03 2.220000000000000000e+03 3.879910258792068994e-09 -2.220000000000000000e+03 2.320000000000000000e+03 2.689817534360669626e-09 -2.320000000000000000e+03 2.420000000000000000e+03 3.167068440536376151e-09 diff --git a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_19_bandpowers.txt b/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_19_bandpowers.txt deleted file mode 100644 index 750d0a6c..00000000 --- a/soliket/data/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109/simulated_clkk_SO_Apr17_mv_nlkk_deproj0_SENS1_fsky_16000_iterOn_20191109_sim_19_bandpowers.txt +++ /dev/null @@ -1,25 +0,0 @@ -# multipole bin left edge,multipole bin right edge,binned MV clkk -2.000000000000000000e+01 1.200000000000000000e+02 1.884416348345614029e-07 -1.200000000000000000e+02 2.200000000000000000e+02 1.114880850684014867e-07 -2.200000000000000000e+02 3.200000000000000000e+02 6.937064474633612062e-08 -3.200000000000000000e+02 4.200000000000000000e+02 4.537767342927763712e-08 -4.200000000000000000e+02 5.200000000000000000e+02 3.460653232560911630e-08 -5.200000000000000000e+02 6.200000000000000000e+02 2.490601393311444299e-08 -6.200000000000000000e+02 7.200000000000000000e+02 2.175019229104765547e-08 -7.200000000000000000e+02 8.200000000000000000e+02 1.640892285109588291e-08 -8.200000000000000000e+02 9.200000000000000000e+02 1.294611579426834918e-08 -9.200000000000000000e+02 1.020000000000000000e+03 1.222754437714611379e-08 -1.020000000000000000e+03 1.120000000000000000e+03 9.473127687806900373e-09 -1.120000000000000000e+03 1.220000000000000000e+03 7.666743929412851349e-09 -1.220000000000000000e+03 1.320000000000000000e+03 7.698574329130660757e-09 -1.320000000000000000e+03 1.420000000000000000e+03 7.122216251651847716e-09 -1.420000000000000000e+03 1.520000000000000000e+03 5.507927042580146390e-09 -1.520000000000000000e+03 1.620000000000000000e+03 6.191383527110156833e-09 -1.620000000000000000e+03 1.720000000000000000e+03 4.409133808816193151e-09 -1.720000000000000000e+03 1.820000000000000000e+03 3.153703433186249008e-09 -1.820000000000000000e+03 1.920000000000000000e+03 3.474552752375293599e-09 -1.920000000000000000e+03 2.020000000000000000e+03 4.277746949804231059e-09 -2.020000000000000000e+03 2.120000000000000000e+03 2.083628370082152422e-09 -2.120000000000000000e+03 2.220000000000000000e+03 1.979495810194282999e-09 -2.220000000000000000e+03 2.320000000000000000e+03 3.630141403246169057e-09 -2.320000000000000000e+03 2.420000000000000000e+03 1.739022256425650618e-09 diff --git a/soliket/Foreground.yaml b/soliket/foreground/Foreground.yaml similarity index 100% rename from soliket/Foreground.yaml rename to soliket/foreground/Foreground.yaml diff --git a/soliket/foreground/__init__.py b/soliket/foreground/__init__.py new file mode 100644 index 00000000..7d668e53 --- /dev/null +++ b/soliket/foreground/__init__.py @@ -0,0 +1,5 @@ +from .foreground import Foreground + +__all__ = [ + "Foreground", +] diff --git a/soliket/foreground.py b/soliket/foreground/foreground.py similarity index 100% rename from soliket/foreground.py rename to soliket/foreground/foreground.py index 47b46269..bb9fbac7 100644 --- a/soliket/foreground.py +++ b/soliket/foreground/foreground.py @@ -47,13 +47,13 @@ """ -import numpy as np import os from typing import Optional +import numpy as np +from cobaya.log import LoggedError from cobaya.theory import Theory from cobaya.tools import are_different_params_lists -from cobaya.log import LoggedError class Foreground(Theory): diff --git a/soliket/gaussian/__init__.py b/soliket/gaussian/__init__.py new file mode 100644 index 00000000..0c9fa540 --- /dev/null +++ b/soliket/gaussian/__init__.py @@ -0,0 +1,12 @@ +from .gaussian import CrossCov, GaussianLikelihood, MultiGaussianLikelihood +from .gaussian_data import GaussianData, MultiGaussianData + +__all__ = [ + # gaussian + "CrossCov", + "GaussianLikelihood", + "MultiGaussianLikelihood", + # gaussian_data + "GaussianData", + "MultiGaussianData", +] diff --git a/soliket/gaussian.py b/soliket/gaussian/gaussian.py similarity index 98% rename from soliket/gaussian.py rename to soliket/gaussian/gaussian.py index d945dd73..fa463102 100644 --- a/soliket/gaussian.py +++ b/soliket/gaussian/gaussian.py @@ -1,13 +1,14 @@ -import numpy as np from typing import Optional, Sequence -from cobaya.likelihood import Likelihood +import numpy as np from cobaya.input import merge_info +from cobaya.likelihood import Likelihood from cobaya.tools import recursive_update from cobaya.typing import empty_dict +from soliket.utils import get_likelihood + from .gaussian_data import GaussianData, MultiGaussianData -from .utils import get_likelihood class GaussianLikelihood(Likelihood): diff --git a/soliket/gaussian_data.py b/soliket/gaussian/gaussian_data.py similarity index 99% rename from soliket/gaussian_data.py rename to soliket/gaussian/gaussian_data.py index aed84aa9..3e7a89d7 100644 --- a/soliket/gaussian_data.py +++ b/soliket/gaussian/gaussian_data.py @@ -1,10 +1,11 @@ import numpy as np +from scipy.linalg import LinAlgError, cholesky + try: import holoviews as hv except ImportError: pass -from scipy.linalg import cholesky, LinAlgError def multivariate_normal_logpdf(theory, data, cov, inv_cov, log_det): diff --git a/soliket/halo_model/__init__.py b/soliket/halo_model/__init__.py index ed9b0f74..c54ba9bb 100644 --- a/soliket/halo_model/__init__.py +++ b/soliket/halo_model/__init__.py @@ -1 +1,6 @@ -from .halo_model import HaloModel, HaloModel_pyhm # noqa: F401 +from .halo_model import HaloModel, HaloModel_pyhm + +__all__ = [ + "HaloModel", + "HaloModel_pyhm" +] diff --git a/soliket/halo_model/halo_model.py b/soliket/halo_model/halo_model.py index 190a0e9a..6cb4719a 100644 --- a/soliket/halo_model/halo_model.py +++ b/soliket/halo_model/halo_model.py @@ -33,10 +33,10 @@ """ import numpy as np +import pyhalomodel as halo +from cobaya.theory import Theory # from cobaya.theories.cosmo.boltzmannbase import PowerSpectrumInterpolator from scipy.interpolate import RectBivariateSpline -from cobaya.theory import Theory -import pyhalomodel as halo class HaloModel(Theory): diff --git a/soliket/lensing/__init__.py b/soliket/lensing/__init__.py index d69562fc..aa26ae2d 100644 --- a/soliket/lensing/__init__.py +++ b/soliket/lensing/__init__.py @@ -1 +1,6 @@ -from .lensing import LensingLiteLikelihood, LensingLikelihood # noqa: F401 +from .lensing import LensingLikelihood, LensingLiteLikelihood + +__all__ = [ + "LensingLikelihood", + "LensingLiteLikelihood", +] diff --git a/soliket/lensing/lensing.py b/soliket/lensing/lensing.py index ccce6e28..d2eb6f9b 100644 --- a/soliket/lensing/lensing.py +++ b/soliket/lensing/lensing.py @@ -12,14 +12,17 @@ """ import os + import numpy as np import sacc from cobaya.likelihoods.base_classes import InstallableLikelihood -from cobaya.model import get_model from cobaya.log import LoggedError +from cobaya.model import get_model + +from soliket.ps import BinnedPSLikelihood + # from cobaya.install import NotInstalledError -from ..ps import BinnedPSLikelihood class LensingLikelihood(BinnedPSLikelihood, InstallableLikelihood): diff --git a/soliket/mflike/__init__.py b/soliket/mflike/__init__.py index bc60cb85..040bc7ab 100644 --- a/soliket/mflike/__init__.py +++ b/soliket/mflike/__init__.py @@ -1,2 +1,10 @@ -from .mflike import MFLike, TestMFLike # noqa F401 -from .theoryforge_MFLike import TheoryForge_MFLike # noqa F401 +from .mflike import MFLike, TestMFLike +from .theoryforge_MFLike import TheoryForge_MFLike + +__all__ = [ + # mflike + "MFLike", + "TestMFLike", + # theoryforge_MFLike + "TheoryForge_MFLike", +] diff --git a/soliket/mflike/mflike.py b/soliket/mflike/mflike.py index 695b9d6b..1591302f 100644 --- a/soliket/mflike/mflike.py +++ b/soliket/mflike/mflike.py @@ -31,7 +31,7 @@ from cobaya.likelihoods.base_classes import InstallableLikelihood from cobaya.log import LoggedError -from ..gaussian import GaussianData, GaussianLikelihood +from soliket.gaussian import GaussianData, GaussianLikelihood class MFLike(GaussianLikelihood, InstallableLikelihood): diff --git a/soliket/mflike/theoryforge_MFLike.py b/soliket/mflike/theoryforge_MFLike.py index 70246632..68ff36c9 100644 --- a/soliket/mflike/theoryforge_MFLike.py +++ b/soliket/mflike/theoryforge_MFLike.py @@ -53,12 +53,12 @@ """ -import numpy as np from typing import Optional +import numpy as np +from cobaya.log import LoggedError from cobaya.theory import Theory from cobaya.tools import are_different_params_lists -from cobaya.log import LoggedError class TheoryForge_MFLike(Theory): diff --git a/soliket/poisson/__init__.py b/soliket/poisson/__init__.py new file mode 100644 index 00000000..154e405d --- /dev/null +++ b/soliket/poisson/__init__.py @@ -0,0 +1,9 @@ +from .poisson import PoissonLikelihood +from .poisson_data import PoissonData + +__all__ = [ + # poisson + "PoissonLikelihood", + # poisson_data + "PoissonData", +] diff --git a/soliket/poisson.py b/soliket/poisson/poisson.py similarity index 99% rename from soliket/poisson.py rename to soliket/poisson/poisson.py index 0a4a0630..db2b8fdd 100644 --- a/soliket/poisson.py +++ b/soliket/poisson/poisson.py @@ -1,5 +1,4 @@ import pandas as pd - from cobaya.likelihood import Likelihood from .poisson_data import PoissonData diff --git a/soliket/poisson_data.py b/soliket/poisson/poisson_data.py similarity index 94% rename from soliket/poisson_data.py rename to soliket/poisson/poisson_data.py index e1ed72d9..c10bc572 100644 --- a/soliket/poisson_data.py +++ b/soliket/poisson/poisson_data.py @@ -26,8 +26,8 @@ def __init__(self, name, catalog, columns, samples=None): if samples is not None: for c in columns: if c not in samples: - raise ValueError("If providing samples, must have samples \ - for all columns: {}".format(columns)) + raise ValueError(f"If providing samples, must have samples \ + for all columns: {columns}") if "prior" not in samples: raise ValueError('Must provide value of interim prior \ diff --git a/soliket/ps/__init__.py b/soliket/ps/__init__.py new file mode 100644 index 00000000..a343b218 --- /dev/null +++ b/soliket/ps/__init__.py @@ -0,0 +1,6 @@ +from .ps import BinnedPSLikelihood, PSLikelihood + +__all__ = [ + "BinnedPSLikelihood", + "PSLikelihood", +] diff --git a/soliket/ps.py b/soliket/ps/ps.py similarity index 93% rename from soliket/ps.py rename to soliket/ps/ps.py index 17f87edb..cb97538f 100644 --- a/soliket/ps.py +++ b/soliket/ps/ps.py @@ -1,7 +1,7 @@ import numpy as np -from . import utils -from .gaussian import GaussianLikelihood +from soliket import utils +from soliket.gaussian import GaussianLikelihood class PSLikelihood(GaussianLikelihood): diff --git a/soliket/tests/__init__.py b/soliket/tests/__init__.py index e69de29b..62c1a1e1 100644 --- a/soliket/tests/__init__.py +++ b/soliket/tests/__init__.py @@ -0,0 +1,3 @@ +import soliket + +__all__ = ['soliket'] diff --git a/soliket/tests/conftest.py b/soliket/tests/conftest.py new file mode 100644 index 00000000..addd72db --- /dev/null +++ b/soliket/tests/conftest.py @@ -0,0 +1,24 @@ +import pytest + + +@pytest.fixture +def test_cosmology_params(): + params = {} + params["As"] = 2.15086031154146e-9 + params["ns"] = 0.9625356 + params["ombh2"] = 0.02219218 + params["omch2"] = 0.1203058 + params["H0"] = 67.02393 + params["tau"] = 0.06574325 + params["nnu"] = 3.04 + params["mnu"] = 0.06 + return params + + +@pytest.fixture +def evaluate_one_info(): + info = {} + info["likelihood"] = {"one": None} + info["sampler"] = {"evaluate": None} + info["debug"] = True + return info diff --git a/soliket/tests/data/dndz_hsc.txt b/soliket/tests/data/dndz_hsc.txt deleted file mode 100644 index fd28b248..00000000 --- a/soliket/tests/data/dndz_hsc.txt +++ /dev/null @@ -1,149 +0,0 @@ -0.000000000000000000e+00 1.717312571660589704e-02 -2.027027027027027140e-02 1.763316346054791955e-02 -4.054054054054054279e-02 2.008939032182324377e-02 -6.081081081081081419e-02 2.299589444800899385e-02 -8.108108108108108558e-02 2.669001603514108839e-02 -1.013513513513513570e-01 3.126469704753675333e-02 -1.216216216216216284e-01 3.659478594007423147e-02 -1.418918918918918859e-01 4.370654851184832546e-02 -1.621621621621621712e-01 5.337236477454972150e-02 -1.824324324324324564e-01 6.632167070157428401e-02 -2.027027027027027140e-01 8.430932611584171510e-02 -2.229729729729729715e-01 1.077754728239602861e-01 -2.432432432432432567e-01 1.397779435202035070e-01 -2.635135135135135420e-01 1.965091310599703656e-01 -2.837837837837837718e-01 3.074999323800876039e-01 -3.040540540540540571e-01 5.005200303818273522e-01 -3.243243243243243423e-01 7.450118782794016292e-01 -3.445945945945946276e-01 9.901738447246843933e-01 -3.648648648648649129e-01 1.114887253830985081e+00 -3.851351351351351426e-01 9.150125574113729954e-01 -4.054054054054054279e-01 7.776542554315230005e-01 -4.256756756756757132e-01 8.085433903613369333e-01 -4.459459459459459429e-01 9.619003418608551570e-01 -4.662162162162162282e-01 1.072726961442086457e+00 -4.864864864864865135e-01 1.083711883500872997e+00 -5.067567567567567988e-01 1.035454666728111706e+00 -5.270270270270270840e-01 9.983373990417324650e-01 -5.472972972972973693e-01 9.977226870175359696e-01 -5.675675675675675436e-01 1.021767135908300927e+00 -5.878378378378378288e-01 1.079135728691504426e+00 -6.081081081081081141e-01 1.151842092301125220e+00 -6.283783783783783994e-01 1.180504151074240005e+00 -6.486486486486486847e-01 1.203519472388659084e+00 -6.689189189189189699e-01 1.211193266932295565e+00 -6.891891891891892552e-01 1.131148202770952516e+00 -7.094594594594595405e-01 1.102914620307221760e+00 -7.297297297297298257e-01 1.131622686163653801e+00 -7.500000000000000000e-01 1.135671952133599172e+00 -7.702702702702702853e-01 1.085465897904200006e+00 -7.905405405405405705e-01 1.058388501542117943e+00 -8.108108108108108558e-01 1.054593274493660360e+00 -8.310810810810811411e-01 1.042267448141090735e+00 -8.513513513513514264e-01 1.018171043209183724e+00 -8.716216216216217116e-01 1.011960984426372390e+00 -8.918918918918918859e-01 1.008840690344773527e+00 -9.121621621621621712e-01 9.823394082285422657e-01 -9.324324324324324564e-01 9.468215410959733846e-01 -9.527027027027027417e-01 9.118018521769751805e-01 -9.729729729729730270e-01 8.498885504404658509e-01 -9.932432432432433123e-01 7.619918228371961311e-01 -1.013513513513513598e+00 6.856866705237878445e-01 -1.033783783783783772e+00 6.357363284343788834e-01 -1.054054054054054168e+00 6.146277623213816099e-01 -1.074324324324324342e+00 6.031481657231211324e-01 -1.094594594594594739e+00 5.996795921534650020e-01 -1.114864864864864913e+00 6.034266446796124894e-01 -1.135135135135135087e+00 6.037581910367924021e-01 -1.155405405405405483e+00 5.911472793820455873e-01 -1.175675675675675658e+00 5.632658411730474546e-01 -1.195945945945946054e+00 5.259137530657023163e-01 -1.216216216216216228e+00 4.983545176042707969e-01 -1.236486486486486625e+00 4.787377246768791395e-01 -1.256756756756756799e+00 4.638812112113736563e-01 -1.277027027027027195e+00 4.413421174440961825e-01 -1.297297297297297369e+00 4.248569576233027223e-01 -1.317567567567567544e+00 3.964342088725109070e-01 -1.337837837837837940e+00 3.707453081589309196e-01 -1.358108108108108114e+00 3.513566505420018249e-01 -1.378378378378378510e+00 3.368622471198079449e-01 -1.398648648648648685e+00 3.237299244119669628e-01 -1.418918918918919081e+00 3.060333785901406256e-01 -1.439189189189189255e+00 2.788115330069919628e-01 -1.459459459459459651e+00 2.436255201101665269e-01 -1.479729729729729826e+00 2.113176818760980069e-01 -1.500000000000000000e+00 1.791270068888305145e-01 -1.520270270270270396e+00 1.514616667627524671e-01 -1.540540540540540571e+00 1.273419025146568240e-01 -1.560810810810810967e+00 1.073004435323696160e-01 -1.581081081081081141e+00 9.228475101872986308e-02 -1.601351351351351537e+00 8.019973295360209586e-02 -1.621621621621621712e+00 7.061409833227438870e-02 -1.641891891891891886e+00 6.277359804237676866e-02 -1.662162162162162282e+00 5.631934713380055968e-02 -1.682432432432432456e+00 5.095099577571237520e-02 -1.702702702702702853e+00 4.639782482374249506e-02 -1.722972972972973027e+00 4.266693953656031796e-02 -1.743243243243243423e+00 3.935009284474501323e-02 -1.763513513513513598e+00 3.653348226786103103e-02 -1.783783783783783772e+00 3.405852315073774894e-02 -1.804054054054054168e+00 3.171889469442783216e-02 -1.824324324324324342e+00 2.968114258936884603e-02 -1.844594594594594739e+00 2.788111134565919580e-02 -1.864864864864864913e+00 2.614360961631573971e-02 -1.885135135135135309e+00 2.453006828358669789e-02 -1.905405405405405483e+00 2.310411549395682135e-02 -1.925675675675675880e+00 2.189969088470396230e-02 -1.945945945945946054e+00 2.062541871472067800e-02 -1.966216216216216228e+00 1.956622540764246104e-02 -1.986486486486486625e+00 1.859372689571858403e-02 -2.006756756756757021e+00 1.763480100063213180e-02 -2.027027027027027195e+00 1.672103975629231007e-02 -2.047297297297297369e+00 1.585089073769301027e-02 -2.067567567567567544e+00 1.517894420491255891e-02 -2.087837837837838162e+00 1.442926077633561663e-02 -2.108108108108108336e+00 1.387957696443262341e-02 -2.128378378378378510e+00 1.344229825216688989e-02 -2.148648648648648685e+00 1.270584004138715188e-02 -2.168918918918918859e+00 1.234019214324821520e-02 -2.189189189189189477e+00 1.181601741268240371e-02 -2.209459459459459651e+00 1.121125165572164385e-02 -2.229729729729729826e+00 1.106704636030049135e-02 -2.250000000000000000e+00 1.052921852363831318e-02 -2.270270270270270174e+00 1.027942889935332983e-02 -2.290540540540540793e+00 9.863963238686974597e-03 -2.310810810810810967e+00 9.615029390999750569e-03 -2.331081081081081141e+00 9.331071151374098829e-03 -2.351351351351351315e+00 9.132840910638680490e-03 -2.371621621621621934e+00 8.573854575828931956e-03 -2.391891891891892108e+00 8.573854575828931956e-03 -2.412162162162162282e+00 8.547205229998392287e-03 -2.432432432432432456e+00 8.365623313450526802e-03 -2.452702702702702631e+00 8.049765422922941852e-03 -2.472972972972973249e+00 7.921496075494305344e-03 -2.493243243243243423e+00 7.703992358035438755e-03 -2.513513513513513598e+00 7.269137575159456688e-03 -2.533783783783783772e+00 7.269137575159456688e-03 -2.554054054054054390e+00 7.269137575159456688e-03 -2.574324324324324564e+00 7.269137575159456688e-03 -2.594594594594594739e+00 7.269137575159456688e-03 -2.614864864864864913e+00 7.092463653044014937e-03 -2.635135135135135087e+00 6.758016907071060994e-03 -2.655405405405405705e+00 6.616779074824608031e-03 -2.675675675675675880e+00 6.616779074824608031e-03 -2.695945945945946054e+00 6.616779074824608031e-03 -2.716216216216216228e+00 6.429248354468548518e-03 -2.736486486486486847e+00 6.281134241615029916e-03 -2.756756756756757021e+00 6.464598866677712455e-03 -2.777027027027027195e+00 6.176391811890755840e-03 -2.797297297297297369e+00 5.979771356322566983e-03 -2.817567567567567544e+00 5.964420574489759375e-03 -2.837837837837838162e+00 5.964420574489759375e-03 -2.858108108108108336e+00 5.964420574489759375e-03 -2.878378378378378510e+00 5.964420574489759375e-03 -2.898648648648648685e+00 5.964420574489759375e-03 -2.918918918918919303e+00 5.964420574489759375e-03 -2.939189189189189477e+00 5.964420574489759375e-03 -2.959459459459459651e+00 5.964420574489759375e-03 -2.979729729729729826e+00 5.964420574489759375e-03 -3.000000000000000000e+00 5.964420574489759375e-03 diff --git a/soliket/tests/data/lcl_hsc.txt b/soliket/tests/data/lcl_hsc.txt deleted file mode 100644 index 2b96a995..00000000 --- a/soliket/tests/data/lcl_hsc.txt +++ /dev/null @@ -1,50 +0,0 @@ -2.000000000000000000e+01 7.424070306905103944e-01 -6.040816326530612201e+01 1.194624500832549563e+00 -1.008163265306122440e+02 1.160738544682777151e+00 -1.412244897959183731e+02 1.080175659525953513e+00 -1.816326530612244881e+02 9.978414636905049706e-01 -2.220408163265306030e+02 9.312244328198231447e-01 -2.624489795918367463e+02 8.818628382144134692e-01 -3.028571428571428328e+02 8.367624678031259089e-01 -3.432653061224489761e+02 8.026677781597431061e-01 -3.836734693877551194e+02 7.745843460392692892e-01 -4.240816326530612059e+02 7.518292730067992480e-01 -4.644897959183673493e+02 7.332559644576410740e-01 -5.048979591836734926e+02 7.153211576328640797e-01 -5.453061224489796359e+02 7.014980259953759179e-01 -5.857142857142856656e+02 6.906382748771309199e-01 -6.261224489795918089e+02 6.807993163741539178e-01 -6.665306122448979522e+02 6.694754057043452722e-01 -7.069387755102040956e+02 6.600933412213239038e-01 -7.473469387755102389e+02 6.498786458629587370e-01 -7.877551020408162685e+02 6.437621150459612585e-01 -8.281632653061224119e+02 6.385988542004016333e-01 -8.685714285714285552e+02 6.290343784920793269e-01 -9.089795918367346985e+02 6.261670263397178804e-01 -9.493877551020408418e+02 6.186813909156647640e-01 -9.897959183673469852e+02 6.071322169159575344e-01 -1.030204081632653015e+03 6.083284033392493129e-01 -1.070612244897959272e+03 6.018646719756913788e-01 -1.111020408163265301e+03 5.979754157628347500e-01 -1.151428571428571331e+03 5.931514694640508401e-01 -1.191836734693877588e+03 5.876224281864201870e-01 -1.232244897959183618e+03 5.841198508290095237e-01 -1.272653061224489875e+03 5.772694406100047360e-01 -1.313061224489795904e+03 5.766059255814877105e-01 -1.353469387755101934e+03 5.671226392524800763e-01 -1.393877551020408191e+03 5.669164530335901730e-01 -1.434285714285714221e+03 5.603023089513967658e-01 -1.474693877551020478e+03 5.565634654571747220e-01 -1.515102040816326507e+03 5.551384302634660983e-01 -1.555510204081632537e+03 5.462104778807601591e-01 -1.595918367346938794e+03 5.462104778807601591e-01 -1.636326530612244824e+03 5.393987112318527899e-01 -1.676734693877551081e+03 5.358574903043455961e-01 -1.717142857142857110e+03 5.349494517822211970e-01 -1.757551020408163140e+03 5.255045027279301451e-01 -1.797959183673469397e+03 5.255045027279301451e-01 -1.838367346938775427e+03 5.206200512025943583e-01 -1.878775510204081684e+03 5.151515151515155821e-01 -1.919183673469387713e+03 5.151376019306704857e-01 -1.959591836734693970e+03 5.071870320262832355e-01 -2.000000000000000000e+03 5.047985275751001311e-01 diff --git a/soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits b/soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits deleted file mode 100644 index 275bd27f..00000000 --- a/soliket/tests/data/unwise_g-so_kappa.sim.sacc.fits +++ /dev/null @@ -1,932 +0,0 @@ -SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T NMETA = 0 END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 24 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 3 / number of table fields TTYPE1 = 'id ' TFORM1 = 'D ' TTYPE2 = 'min ' TFORM2 = 'D ' TTYPE3 = 'max ' TFORM3 = 'D ' SACCTYPE= 'window ' SACCCLSS= 'TopHat ' EXTNAME = 'window:TopHat' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 24 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 3 / number of table fields TTYPE1 = 'id ' TFORM1 = 'D ' TTYPE2 = 'min ' TFORM2 = 'D ' TTYPE3 = 'max ' TFORM3 = 'D ' SACCTYPE= 'window ' SACCCLSS= 'LogTopHat' EXTNAME = 'window:LogTopHat' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 168 / length of dimension 1 NAXIS2 = 601 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'values ' TFORM1 = 'K ' TTYPE2 = 'weight ' TFORM2 = '20D ' TDIM2 = '(20) ' SACCTYPE= 'window ' SACCCLSS= 'Bandpower' SACCNAME= 5828661008 EXTNAME = 'window:Bandpower' END ????????? ? -? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? -? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? -? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?XXTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'name ' TFORM1 = 'D ' TTYPE2 = 'quantity' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'Misc ' EXTNAME = 'tracer:Misc' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'name ' TFORM1 = 'D ' TTYPE2 = 'quantity' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'Misc ' EXTNAME = 'tracer:Misc' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 3000 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'ell ' TFORM1 = 'K ' TTYPE2 = 'beam ' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'Map ' SACCNAME= 'ck_so ' SACCQTTY= 'cmb_convergence' EXTNAME = 'tracer:Map:ck_so:beam' MAP_UNIT= 'none ' SPIN = 0 END ??,?چ?>?\-? -D??5L:?>g& ? -?z` ?݋ ?2' ?-:d?G#?R%?L ?5[??g[?ð>?7?V?VS?bl?3d??ϗ?Қ?)yl?>]w?B% ?6N -!?"?#?ׯ[$?aM %?} &?Д8;'?ܠ(?ˆ)?,3*?7$W+?vV/,?-?=.?6/?Gp0?R1?E2?i1.3?%J 4?j15?m>6?7?t8?+59?9Y:?;?k0???~@?zAA?v|sB?rVC?n:GD?iE?ev"F?`^G?\p H?WAI?S)DJ?NmcK?I -.L?D xM??ֺ2[N?: -@O?5P?0xQ?+}R?&>]S? T?0U?hV?3;W? X?klY?bZ?a[?$\?A]?N^?Jl_?6T`? k?Hjgl?_um?f!n?y\nkgo?rB[hp?kpq?cr?\s?U6Uft?Melu?FNv?>hy\w?7$[-x?/vy?'#bEz?{? o|?_}?@F~?_??2\?}pY'?,Om?ЍW?X?ֶ?D1#?#LO?s?*?V/?q<?|]h?wt?vb?m<D?dd?Z0B?Qh-G?HMN?> C?5u?+hw?!y?k?<?b"?x?}1?rS?Wd?+uu?杖?/:?FX> -?#?[?ͥ6i?/Z5?~>?sy?hQ?^z?S"}?H" ?c?=8[?1 b?&B?|y?*_f?l?T˼?xh{?=Ɂl?֙p?YBf? H?K{&?f+?p0?j?SzF?w,-?jWm<?^'?RUɢ!?Ez?9tG*?,Sk? Rn ???FZ?$6?In?^M?bC?V?:,?E?c1?'Q?&j?v1?i:[U?[ƿ?N H?@]k?2$?$͹?[W?F??,;|?kl ?ЖR3?S'?b??*z ??z~N?kmI?\#܎?Mu??j3?08$/?!BR?;n?$!?&O? )?~"C?%?HF?DY?^l?!wH?xwW?h<"c?XA?INW?9,]_?)0?$? y??^?QV?zC?,?M?y W??u*?dk+?S6?B ?1P< -? ^@ ? ?~U ?dH?"N?Ϲ+?lк??vt?\?s=C?a]_a?OĀ?=O ?, >?? ΅?S?І.?љf5?Q?0 ?!?"?ud#?b3v$?PNz%?=UZ&?* '?<(?)? -_*?D+?&%,?B)-?| u.?/Ҍ/?~Ұ -0?keu1?W&.2?DZM3?07ڹ4? 5? O6?7?=8?ͱ 9?.:?;?\V?T}??@[@?+,pA?fA&B?SqC?0тD?}E?ĹF?G?ިH? 7|I?qc3J?[CnK?FL?13M?RtN?yO?"P?6Q?ƖR?y_S?W -/T?񅟎dU?o'%V?YtlW?Dv]cX?.-Y?Z?u[?ΏZJ\?Քa]?I[AMϠ?##?%? p?)Q?;N&?<~?-v?gQnJ?K?0?O[5?u<?~j?U?lo?ˋ?p?TXld ?8y?W8??M]?Ȝm?yP) ?E ?t`'?W?;J?7Y?Qc???b?揝K?K?rǞ'V?Up ?8E?7Լ?ΡI??pƗ)?)Z?E?ljO$?N_A?1j7K?<?)<?pj?产`x?#?~䤪?`&?B -. ?$?J?b^??f?㫼C?Q?nթ?PJ g?17w?.u?E|?y{>?⶜p?◯?x?YJ?:{?Zm?O?qݯ?p&?D?~?^)??T ??1??69?F X?FI+Q?`5?@+?R>?Hz2?R ?߾?ߞe?};U?]k@mr?<!?B?T09?ځv?޹**?ޘvc?w1) ?V?5q ?=J0 -?L ?ѥ 6 ?ݰ@! ?ݎ@?mG=U?K ?* @z?Xg)?b?ĽpH?ܢ׳j?܀V?^۶/y? .?Y=;/?0?C1?ذZvn82?،s]3?hS#~4?Dʉ}5? ϛ`W6?Ĉ[ 7?ةP8?״}K9?אBuSQ:?kѶ;?G -~?&`<??ֵ@?֐pA?l!.B?GTKKC?"wD?<E?؍F?ճdG?Վc*'H?i5I?C0J?B,K?L_LL?\M?Ԯ`9N?ԈO?c3RXP?=*jQ?wER?>S?-T?Ӧ)mU?Ӏ*V?Z[W?3EX? b.Y?HZ?=ko[?Қ٠\?tm]?M^?']"_?i\`? Y\a?ѳLVb?ь|ggc?e0vd?> -|e?48f?E(Ug?x;˚h?ТGi?{&j?Sqk?,S(l?m?_Q~n?ϵ>^o?ώ,pNp?fzTq?> r?xs?M\t? |pu?Ο:v?vDձw?Nx?&&y?ew4z?%{?ͭ%|?ͅ<}?\M~?4&o? ?h?̺ ?̑9M?hV8dH??bX2?_ɭ?K_q?' R?˚ʃ8?q_&?H[7?~?@?x?ʢkmfE?x$H?O`T?%NbE?y,?ѕdaO?ɧk?}*?Sx:?)b7?-p? ?Ȫ$?Ȁ/.~h?U+<?+5+@?xv??ǫEE?ǀfH?U -?*K?f?Z?Ʃ1?~?SZq?(R?S?YR?ť%?z^N_?NȐ?#"˻I?l+?˧*b?ğO?smv?G„??٠U?ó?×}F?k7<?>j?{W7?q`}?¹Y2,?Œ=P?`C? -?3?ӟA?Y}? -~u?P8?S?%š?Ѻ5?˛&?UO3?p?C_??"?rƸ?;ޖ?ᅪ` -?_2?1? i3?'8#?ᄄ1 M?z*B?L?i?f(?rE'd?s'?dW)?6??MS?#DH?J}B?{Ӎ?Mn?+,?E?P]?ﻑJ$^?b4H\:?3s?ئi?Ԓ?ﺥ=#?und?Fa¯?o?Fm?ﹷ?﹇nD]?X%?(Pz?k?uVg?︘pi?h[$"?85?*?׻?﷧f?w}?F?B?r?ﶴt?ﶄ"?STn?"q?3?U?﵏6}?^Ьp?-izݔ?55 ?’ -?ﴙ  ?h8 ?6 ?@Ѭ?ӭ[?ﳢ ??pU"e?>? \{G?}?ﲨ}]?v-%#?De"??z?ﱮ7i?{+?I -MW?R?䌰9?ﰱ&?W ?LZ"!?C"? -R#?ﯴ.W$?﯁<%?N;&?)A'?#(?﮴h[)?ﮁ*?NC5+?,?pыf-?ﭳ(a.?נּ^r/?L B0? Z1?L"@2?בּ|K93?}4?IK5?"6?ᛕ%47?﫭{8?yK>9?E O":?͆;?]kC?>?? -A*!@?Ւme A?褐Ҵ B?lZ_C?7'D?8 E?:®vF?礼,G?c!/H?-kI?얆J?V|K?留]L?XN7M?#dN?킡NoO?醴hHP?廬9NQ?L}?QR?S?T?索@BgU?tV?> -X"W?ƬX?қxY?卵`nWZ?f_[?/n\?PK]?e^?K-0_?U`?6a?Nb?c?zAd?CtIe? z^f?Jjg?Zh?g7Vi?0F^j?Vk?D?l??Flm?RNn?@n'go?KVp?Y;q?tKr?< -us?4t?Ȅ|{u?ҍ}v?\8w?$9x?ݖYy?\z?|{?CWK|? ^y}?%~?f?a ?).nӼ?zo?C{?~䥧j?Fo? 6x.? Ӓf??aظܪ?(?e?A?|9M?CBk? >?10?i?\?#!?R%V?s^m?ut%?;n?w\j?Y.V?+?=?R폒??BX??iYR?.ʌ?0??~'H?C? "?7q?=%e?X2??Td?bx?kl"?0 b?hD?10{?}?B?jJ%?ʲ?H?S%?.?8x߅?2?c)?&Ϣ?•?}נ~?r)d1?5>?QcL?/?:?CQ??"?PjK?Pnٗx?}l?|OT?k?\K-???o]?g,59?)N?>s?uS?q1-?3dӶ?4?ڬ+?y ?<z9?ˁ? -+??C쌖?O??B?ʔ?J{D? C9?y]8q?ϰ?P8r??ҹ@J?!j?TN?ހv?N?j?Xôg??J??[e?Z]?ܛ/ǚ?c?]eŻ??y?v]oy?v?vsr?v1"Xg?u7 ?uR$!?uiIq"?u'D|#?t"k$?t:%?t_:&?tmd'?sّ6Į(?sU$)?sSx{*?sH1+?r̓@,?rYIg-?rGz.?r"9/?q}A0?q}G=1?q9mU2?plU3?p~k4?pn5?p+!Ծ,6?o\?7?o$i8?o_f9?o_w:?nתK;?n?m[??m*@?m>NA?lޱ8B?l^C?lpϯkD?l,0E?k炬CF?kOG?k]BH?kEI?j.^J?j2GK?jJ'gL?j zM?iDžTN?izyO?i5_[P?h@$Q?h%R?he'}eS?hdVAT?g -U?gcV?gN=rW?g?&X?fǻY?f}0~Z?f7=q|[?e:\?e(?2S]?eetH^?e3}_?dؔ};`?dDQ a?dKmb?duԎc?c8d?cxiMe?c1ˬ=f?beg?bbxm%h?b]qi?b}j?ak?aֿl?aA8Xm?`Aln?`Po?`lTpp?`% 8q?_ݶr?_Ophs?_Ngt?_UoYIu?^ -v?^x:V w?^0i"x?]Wy?]Fz?]X[{?] |?\}?\q~?\8?[9l?[gJT?[`?[71?ZQ?ZՊ?Z>J&?YI'r?Y1?YdMuw?YXk?XҭP?Xuy?X@$4U?W?W;L?We`?WZ ?V&9?V8-?V@a?U??Uo5d?Uc?U?K?TЏ?Tc?T=U?S&OU?S9v?S_=?S2?R)D?R?R6\?Qkݕ?Q ?QWv?Q 5?P¯?PxL_?P-u ?Ou?Ou?OM+`ڤ?OIQi?NW?NlW7?N!G.>?M'J?M#U?M?#?Lml-?L.?L]<?L)6?KƟfւ?K{bh?K/\UM?J?J ?JL?J5?I(?Ih#ڣ?I?HT?H?H7v_?G%~K?GI4?GRT?Go ?FF\?Fl>?F&?E?m?Es5?E9Ƃ7?D쮋Q?D -?DRF\'?D>?Cl|<?Ck6c;?C -~?BЛ?B7+<?B5Ö*?A@ .?A?AM So?@\?@}?@cZ?@4<????z0,??+)76?>=S?>gW?>Ayg?=0Ӽ?=؋f?=Vq#D?=??!rc x??!z_z@?!'+LA? q+>B? C? +Ͼ,D?s:E?72F?/츣KG?IR*H?I?3IsEJ?@:K? hL?6}M?!ҤN?zO?9c(P?{IQ?ד\R?;S?N2eT?vWU?zq?a]?၈ -?#, ???fH? ?ߩ*n^?J%#N?0?ލפ?.=E ?]P:?pn?qj -?ܲe{,?SJ?!5#?۔G?54~; ?N -?v-} ?w, ?ٷ ?XfO?n~W?ؙgV?9_q?ٕu?y?!?ֹإ?Yh?Ʃ?ՙ?9t/?4&?x?v?Ӹf 3?W9?v7?Җ ?5"M&!?-"?tjmp#?0$?в]%?Q&?DE'?ϏbE(?.:#)?;*?lH1+? Q,?ͩP-?HJ.?G/?̅Y#W0?#op1?-,r2?`[3@3?Z4?ʜ5?;&M6?@J7?wL8?H9?ȳ7=:?Q 0;?SK? -??e@?$RA?Š.KB?> -moC?g~sD?x E?MF?ó'oG?PJ - -H?_!.I?Še""J?'\bK?ERL?a #SM?%%N?O?7XbXP?6Q?pB -R? XS?|T?E2|U?BV?~FiW?sX?':2Y?ScqZ?"(O[?#vh4\?'NRS]?^?^Н_?U`?Qxa?1b?̮͗c?i%yd?.e?Õf?;wgg?ćMh?r?i? HLj?p|k?Cl?ޖWm?y9n?&lo?cxp?J58q?m;]r?l9s?Ut?a1u?Ox Tv?a#w?` x?(Vy?=z?SRLtT{?|?@}?!%a~?ʨ?U>q?ﰊF?A?#\?.?V?sD? <5f?#f4? 5G?Vs?Ͽ?}jy?"\?z?TX?/F?j?¥??<?Qa?SS?`?_(?č?L -?|x?}Y?[7?P?G?>?wmu???,??pi?כi?o?\w;?'̑?6^.l?Β2?f3 `???HĚB?,,xP?%Nu|?[~+-?<?>?!3'?R'?Od?g?}\߃?Cd#?%"?An?آyv?oPFv?֔?)m?3@a?y?_߼?8"?O?"CHw?Q?O ?:?{?ë?n?9I?94?hp?۷?6.?'fH??Q\ǻ?0?zA?h̐6?0g?8o+3?^x?a]})?MK??@Y?oX?F5S?ڤ[ߦ?nb $?H[?T?*c?0Eg?Q /?~G?~yA5?xX1ɦ?x' ?w❖?w>"?v?O;B?vc틸?u^|?u\?uEp"%?tթ ?t?. -?s6{ ?sdj' ?r ?r ?rD^?q_!?q>q?p}|}?pbO?o~?ov\?oqj8y?n YC?n:D&?m,?m]?l!?l:9|?l?ke?k3F?jhZ ?jV Oz!?i 9wM"?iw&#?i"$?h)%?h* n&?g: -'?gK(?f܄!)?fm9*?eX+?e -x(,?ep!b-?dF.?d?9`/?cOk0?c_}1?b[P2?b3?b`x4?aF5?a/6?`oZG7?`O<#8?_&9?_n:?^N;?^{?]8{B?[yq'C?[TD?Z#WE?Z&~F?Y+G?YDԛH?Xӄ"TI?XbV+J?W(K?WѺ]L?Wz~}M?VbN?V+fuO?U!@P?UHУQ?T8TjR?TeK¢S?Sp5T?SAU?S7wV?RS"W?R,'_yX?Q)+Y?QH1/Z?PB[?Pc!\?O*-]?Of\^?O _?NAa`?N(J=a?Mֈb?MCHBc?Lгd?L^ޭe?K^#Df?KxJg?K嚎h?J@i?J l^j?Ik?I:l?Hm?HS3n?G=do?Gmxҩup?F/dq?FءAr?FsTs?EO }t?E,Iu?DVv?DEWw?Cѭ]x?C]"y?B0z?Bv]{?B}(J|?A}?Am~?@?@2pۮ??Kip??J9c?>K?>a?=,:\?=x%?=J;C?<ģ?<1SM%?;I?;1K)?:%F?:HZ{T?9ӂ|?9^^A?8-?8t -?7Rsv?7}(Z?7SϬ?6}?6*?5Q76?5@"sk?4ʳv?4U74?3߭ĹT?3j0Pe?2p ?2~K?2n ?1/-?1SDu?0i{]?01rx?/m?/E[Z?.:⊿?.Y  ?-ј?-l~?,1 ?,_?, []uC?+ۺ9U?+Nv?*H?*/ ?)TD?)A1?(ʿ֧F?(S?'K?'eD?&U?&w?&?%f!?%K;N?$zB?$##a?#?6<?#4ʵQO?"HC?"EJ?!?!Vp,? ޸q? f? ?w>k[?Oun?SJ?I{?2N2? ~t?"?.=?Mͻ?=d?ŊT?ML|b?ԐN?[?a ?j3`?IIO?y4!t?_wζ?}K -?y?o?(?mC?*G?_5 ??k闒?/;k?xhDX? j? Ѫ? -X? ">? y? ^? "{3 ? -HL2? -.h? ]? 9_B(?`?Dd?i?Ok{?m)?Z!]?h^r?dv~?ͬU?n7?\u?y ?tx?i3??'?Jƴ?\j?db* ?= GA -?#T ?F= ?,ԙ ?Um?5o!?;l?=T?!2?FAw?T'?NZ5?RT&?V=P?A7>?]똻E?ᮛ>?edIxL? L?lh?5aK?sŽ?(8t ?zh!?߅"?26y#?p7X$?򇠘J%? -&?kW'?p(?)?&*?b+?/>,?Fj6 -?!^.? @/?'Iv0?ڛB%1?,^|+2?3?1>uf4?곚(5?5gp6?+7?:_Y8?輆sa9?>P5,:?;?BQf:?[1??J%̉@?A?MΐB?5UC?P4wD?SRE?S*VF?L-`?U6a?h`e>hb?]c?hM6[d?1e?hf?%g?gJh?:j{i?f!+j?pmk?eRl?rm?d1rn??Cbo?c>Gp?#,q?b;r?<s?`[U3t?lq(u?^qk\v?h۲w?\S;/x?0oy?Zʑz?k{?Wzi|?#5a}?T?~?N=?Q1.?E/?N?Я?KU?ɖgB@?G(l?}?D -7?LT7?@? Z?;Pl??7 ?RH?3^?T(?.@I\??)HE?fZ?$$w%?sD???*aL?ME?c3?l,? h03?W@?9]g?z?k?} t?@aS?vʖ?vC?o{?xn6%?h ?F-I?a8?}?ZZ?H'?Ri?|d.?J5?|R ?Bh F?H_ ?:K ?z?1?F43?(;?xL?3?vY?„?A? j??m?<?[?umZ?r!?kjβX?V*t?a4*?c?VBxE?уN`?L.&??A^פ?휻Ro?6[L C?훰wq?+$`?횥vf?+ ?홙&R?UR?혎<?NX?헂S-{?K;?v60??i?㫷?]cd?]#?P !??m?C(6w?푽=?6D?퐰5?)Zh؂?폢c?ؚ?펕*?#ޗ?퍇6jW?<?!y]?kg'N?^ $?\m?T-?N?ơ//m??4G?퇷i F?05|W?톨Gy?!?텙W0??턉٥?D ?z(?=dJ ?jE] ?Aw ?Z/O ?44 ?I* ?># ?9l ?~y ?~(LI ?}T} -?} FY ?|ZI ?|G ?{~. ?zx ?zlw*+ ?yK ?y[? ?xd p ?xI|" ?w ?w7Y ?vx ?v%^.~ ?u76`a ?u ?tÄs ?tvGd ?swV ?rf ?rdE0AF ?q- ?qQ:pj !?pǢwT "?p=Z #?oL $?o* %?n[ &?nt0 '?m - (?m )?ly *?kq +?kdڷ ,?jܼ| -?jPQ .?irKN /?i<+= 0?h -X 1?h'vSk 2?g ( 3?g^9 4?f "> 5?eveM 6?er) 7?d+n3 8?d]s6XD 9?cҮ :?cGN ;?b" ?a? ??` 'x @?` A?_zǙ B?^ C?^dQ4C D?]R` E?]MӐ F?\B4g G?\6. H?[ON I?[1_ J?Z*T K?Z L?Y|AI M?XkQ N?XeL(T O?Wuy P?WM_ Q?V R?V5 S?U T?U U?Th/ V?T;+3 W?Sy:Ǣ X?R嶄 Y?R`h,2 Z?Q Ф [?QG \?P% ]?P.rt ^?O+M _?Os `?Nu a?M" b?MoRU c?L.A d?LU_V{ e?K6 f?K;γS g?JB h?J!¤cT i?Iϫ j?I8/ k?HzTl l?Gw5 m?G_̘ - n?Fve< o?FE -O p?E -? q?E*)] r?Dl s?D t?Cn8 u?B0* v?Bf V w?AD$ x?AJs@h y?@B z?@.]W {?? |??I }?>G^ ~?= ?=hbae ?<. ?@` ? -՜R ? -^a ? ŋ ?Mk ?a ?  ? -#?*ps -$?BS -%?ެVI -&?Q` -'?݀ -(? -)?Sހ -*?۽'W -+?'G] -,?ڑ=p --? -.?dÀ -/?0 -0?7O: -1?סBfo -2? -M -3?t%~s -4?݅ -5?F -6?԰"t -7?_i[ -8?ӂM -9?J -:?T9 -;?ѽ|z4 -?MV -??aD -@?vl. -A?3?9o -B?͛_ -C? -D?mRX+o -E? -F?>z>V% -G?ʦ -H?s - -I?w4R -J?> -K?Hc -L?ǰ -M? -N?ƁHo -O?n -P?Qtp -Q?ĹE -R?!L^ -S?É9 -T?|H -U?Y\S -V?1+1` -W?( -X?e9 -Y?i(? -Z?`Y -[?ǩ -\?/9JC -]?콖@ -^?44 -_?e> -`? -a?4W' -b?캛  -c?1 -d?j -e?9 -f?8T8 -g?췟d! -h?i -i?mb -j?P? -k?;2V(^ -l?촢~ -m?x* -n?o -o?G2 -p? -s?pN: -t?3 -u?=M -v?쮣w -w? -J- -x?pe -y? -z?= -{?쫣99 -|? X*E -}?okd -~?s? -?;pP -?쨡a{ -?G6ȣ -?m!` -?b&c -?8 -?쥞k٬ -?t$ -?i7 -?Oj -?4ȣ -?좚X -?M$ -?e4v} -?ʑ: -?/i -?쟕( -?c/ -?_fm2 -?Ķ -?t:^8 -?s;Q5 -?r -?r`܈rJ -?qÉ -?q$Kj -?p{E -?o6 -?oJL| -?nN9 -?n A -?mopC -?l -?l2} -?k0ƂP -?jE -?jW$ -?iy9 -?i - -?h{=1 -?g܅D -?g=< -?f -?f_+= -?ea5c -?dF=t2 -?d#K= -?cEޠ -?b5~ -?bFIL -?am, -?a -?`hM -?_;T -?_)[ -?^D -?]!| + -?]Ke: -?\.J -?\ +Ӷ -?[m -?Zn ?Z- ?Y ^ ?XLvm ?XNRp ?W1 ?W ?Vn ?Uˌ ?U.է ?T<^ -?Sk) ?SN ?Rd ?R+h ?Qm&H ?P͖YB ?P-;k ?O嶳 ?NeA ?NK ?Mc(W ?M -ѵ ?Lj5T ?KɎ_ ?K(ͻ ?J ?IV ?IF} ?H ?H ?GcH ?Fʳ ?F!9 !?E "?DߍG #?D>cw $?C.r8 %?Bs &?BZl '?AN$ (?AwW )?@vC *?? J] +??3|d ,?>cP -?=h9 .?=NƗݺ /?<8J 0?< b 1?;i 2?:Ӭh 3?:%%r 4?9: 5?8+Q 6?8@3. 7?70i1 8?6"W 9?6Z :?5K` ;?5U ?3.G=" ??2̖ @?1.s- A?1G~ B?0EE C?0 D?/`1B E?. F?.N G?-xCB H?,ՈΈ I?,2Âmp J?+| K?*= L?*J3 M?)Cr=Q N?)H O?(aB P?'2!8 Q?'Lg R?&w S?%dP= T?%12B U?$@K V?# W?#G` X?".]A Y?"@ Z?!]BBH [? +l \? +ec| ]?r< ^?Α _?+8> `?} a?^ b?? c?  d?$h e?T4, c f?8 g? 2.b h?h!˃ i? j? k?{ l?t m?3.= n?F o?% p?Fgd q? l` r?26 s?X[ t?Y u?6 v?j8s w?,D x?!q(] y? | z? c {? 35o |? ]k }? -.[ ~? -D4_L ? / ? j ?U ?} ? -n ?ez ?6 ? ?u ?,*+ ?*/B ?E ?ª+E ?:5 ?f ?P ?IMs ? ? ?XA3/ ?03| ? NϹ ?fb ?l 3J ?k$ ?t_a ?I ?()[R' ?K ?-q ?5gI ??, ?3= ?B_: ?!5 ?& ?O/]Y ?. ?2~ ?[uz` ?U ? ?g]f ?j ?Ġ8" ?rn ? ?% ?~xD ?0| ?/ ?y ? ?:ֹ ?W$. ? ?DĹsXTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 3000 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'ell ' TFORM1 = 'K ' TTYPE2 = 'beam ' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'Map ' SACCNAME= 'ck_so ' SACCQTTY= 'cmb_convergence' EXTNAME = 'tracer:Map:ck_so:beam' MAP_UNIT= 'none ' SPIN = 0 END ??,?چ?>?\-? -D??5L:?>g& ? -?z` ?݋ ?2' ?-:d?G#?R%?L ?5[??g[?ð>?7?V?VS?bl?3d??ϗ?Қ?)yl?>]w?B% ?6N -!?"?#?ׯ[$?aM %?} &?Д8;'?ܠ(?ˆ)?,3*?7$W+?vV/,?-?=.?6/?Gp0?R1?E2?i1.3?%J 4?j15?m>6?7?t8?+59?9Y:?;?k0???~@?zAA?v|sB?rVC?n:GD?iE?ev"F?`^G?\p H?WAI?S)DJ?NmcK?I -.L?D xM??ֺ2[N?: -@O?5P?0xQ?+}R?&>]S? T?0U?hV?3;W? X?klY?bZ?a[?$\?A]?N^?Jl_?6T`? k?Hjgl?_um?f!n?y\nkgo?rB[hp?kpq?cr?\s?U6Uft?Melu?FNv?>hy\w?7$[-x?/vy?'#bEz?{? o|?_}?@F~?_??2\?}pY'?,Om?ЍW?X?ֶ?D1#?#LO?s?*?V/?q<?|]h?wt?vb?m<D?dd?Z0B?Qh-G?HMN?> C?5u?+hw?!y?k?<?b"?x?}1?rS?Wd?+uu?杖?/:?FX> -?#?[?ͥ6i?/Z5?~>?sy?hQ?^z?S"}?H" ?c?=8[?1 b?&B?|y?*_f?l?T˼?xh{?=Ɂl?֙p?YBf? H?K{&?f+?p0?j?SzF?w,-?jWm<?^'?RUɢ!?Ez?9tG*?,Sk? Rn ???FZ?$6?In?^M?bC?V?:,?E?c1?'Q?&j?v1?i:[U?[ƿ?N H?@]k?2$?$͹?[W?F??,;|?kl ?ЖR3?S'?b??*z ??z~N?kmI?\#܎?Mu??j3?08$/?!BR?;n?$!?&O? )?~"C?%?HF?DY?^l?!wH?xwW?h<"c?XA?INW?9,]_?)0?$? y??^?QV?zC?,?M?y W??u*?dk+?S6?B ?1P< -? ^@ ? ?~U ?dH?"N?Ϲ+?lк??vt?\?s=C?a]_a?OĀ?=O ?, >?? ΅?S?І.?љf5?Q?0 ?!?"?ud#?b3v$?PNz%?=UZ&?* '?<(?)? -_*?D+?&%,?B)-?| u.?/Ҍ/?~Ұ -0?keu1?W&.2?DZM3?07ڹ4? 5? O6?7?=8?ͱ 9?.:?;?\V?T}??@[@?+,pA?fA&B?SqC?0тD?}E?ĹF?G?ިH? 7|I?qc3J?[CnK?FL?13M?RtN?yO?"P?6Q?ƖR?y_S?W -/T?񅟎dU?o'%V?YtlW?Dv]cX?.-Y?Z?u[?ΏZJ\?Քa]?I[AMϠ?##?%? p?)Q?;N&?<~?-v?gQnJ?K?0?O[5?u<?~j?U?lo?ˋ?p?TXld ?8y?W8??M]?Ȝm?yP) ?E ?t`'?W?;J?7Y?Qc???b?揝K?K?rǞ'V?Up ?8E?7Լ?ΡI??pƗ)?)Z?E?ljO$?N_A?1j7K?<?)<?pj?产`x?#?~䤪?`&?B -. ?$?J?b^??f?㫼C?Q?nթ?PJ g?17w?.u?E|?y{>?⶜p?◯?x?YJ?:{?Zm?O?qݯ?p&?D?~?^)??T ??1??69?F X?FI+Q?`5?@+?R>?Hz2?R ?߾?ߞe?};U?]k@mr?<!?B?T09?ځv?޹**?ޘvc?w1) ?V?5q ?=J0 -?L ?ѥ 6 ?ݰ@! ?ݎ@?mG=U?K ?* @z?Xg)?b?ĽpH?ܢ׳j?܀V?^۶/y? .?Y=;/?0?C1?ذZvn82?،s]3?hS#~4?Dʉ}5? ϛ`W6?Ĉ[ 7?ةP8?״}K9?אBuSQ:?kѶ;?G -~?&`<??ֵ@?֐pA?l!.B?GTKKC?"wD?<E?؍F?ճdG?Վc*'H?i5I?C0J?B,K?L_LL?\M?Ԯ`9N?ԈO?c3RXP?=*jQ?wER?>S?-T?Ӧ)mU?Ӏ*V?Z[W?3EX? b.Y?HZ?=ko[?Қ٠\?tm]?M^?']"_?i\`? Y\a?ѳLVb?ь|ggc?e0vd?> -|e?48f?E(Ug?x;˚h?ТGi?{&j?Sqk?,S(l?m?_Q~n?ϵ>^o?ώ,pNp?fzTq?> r?xs?M\t? |pu?Ο:v?vDձw?Nx?&&y?ew4z?%{?ͭ%|?ͅ<}?\M~?4&o? ?h?̺ ?̑9M?hV8dH??bX2?_ɭ?K_q?' R?˚ʃ8?q_&?H[7?~?@?x?ʢkmfE?x$H?O`T?%NbE?y,?ѕdaO?ɧk?}*?Sx:?)b7?-p? ?Ȫ$?Ȁ/.~h?U+<?+5+@?xv??ǫEE?ǀfH?U -?*K?f?Z?Ʃ1?~?SZq?(R?S?YR?ť%?z^N_?NȐ?#"˻I?l+?˧*b?ğO?smv?G„??٠U?ó?×}F?k7<?>j?{W7?q`}?¹Y2,?Œ=P?`C? -?3?ӟA?Y}? -~u?P8?S?%š?Ѻ5?˛&?UO3?p?C_??"?rƸ?;ޖ?ᅪ` -?_2?1? i3?'8#?ᄄ1 M?z*B?L?i?f(?rE'd?s'?dW)?6??MS?#DH?J}B?{Ӎ?Mn?+,?E?P]?ﻑJ$^?b4H\:?3s?ئi?Ԓ?ﺥ=#?und?Fa¯?o?Fm?ﹷ?﹇nD]?X%?(Pz?k?uVg?︘pi?h[$"?85?*?׻?﷧f?w}?F?B?r?ﶴt?ﶄ"?STn?"q?3?U?﵏6}?^Ьp?-izݔ?55 ?’ -?ﴙ  ?h8 ?6 ?@Ѭ?ӭ[?ﳢ ??pU"e?>? \{G?}?ﲨ}]?v-%#?De"??z?ﱮ7i?{+?I -MW?R?䌰9?ﰱ&?W ?LZ"!?C"? -R#?ﯴ.W$?﯁<%?N;&?)A'?#(?﮴h[)?ﮁ*?NC5+?,?pыf-?ﭳ(a.?נּ^r/?L B0? Z1?L"@2?בּ|K93?}4?IK5?"6?ᛕ%47?﫭{8?yK>9?E O":?͆;?]kC?>?? -A*!@?Ւme A?褐Ҵ B?lZ_C?7'D?8 E?:®vF?礼,G?c!/H?-kI?얆J?V|K?留]L?XN7M?#dN?킡NoO?醴hHP?廬9NQ?L}?QR?S?T?索@BgU?tV?> -X"W?ƬX?қxY?卵`nWZ?f_[?/n\?PK]?e^?K-0_?U`?6a?Nb?c?zAd?CtIe? z^f?Jjg?Zh?g7Vi?0F^j?Vk?D?l??Flm?RNn?@n'go?KVp?Y;q?tKr?< -us?4t?Ȅ|{u?ҍ}v?\8w?$9x?ݖYy?\z?|{?CWK|? ^y}?%~?f?a ?).nӼ?zo?C{?~䥧j?Fo? 6x.? Ӓf??aظܪ?(?e?A?|9M?CBk? >?10?i?\?#!?R%V?s^m?ut%?;n?w\j?Y.V?+?=?R폒??BX??iYR?.ʌ?0??~'H?C? "?7q?=%e?X2??Td?bx?kl"?0 b?hD?10{?}?B?jJ%?ʲ?H?S%?.?8x߅?2?c)?&Ϣ?•?}נ~?r)d1?5>?QcL?/?:?CQ??"?PjK?Pnٗx?}l?|OT?k?\K-???o]?g,59?)N?>s?uS?q1-?3dӶ?4?ڬ+?y ?<z9?ˁ? -+??C쌖?O??B?ʔ?J{D? C9?y]8q?ϰ?P8r??ҹ@J?!j?TN?ހv?N?j?Xôg??J??[e?Z]?ܛ/ǚ?c?]eŻ??y?v]oy?v?vsr?v1"Xg?u7 ?uR$!?uiIq"?u'D|#?t"k$?t:%?t_:&?tmd'?sّ6Į(?sU$)?sSx{*?sH1+?r̓@,?rYIg-?rGz.?r"9/?q}A0?q}G=1?q9mU2?plU3?p~k4?pn5?p+!Ծ,6?o\?7?o$i8?o_f9?o_w:?nתK;?n?m[??m*@?m>NA?lޱ8B?l^C?lpϯkD?l,0E?k炬CF?kOG?k]BH?kEI?j.^J?j2GK?jJ'gL?j zM?iDžTN?izyO?i5_[P?h@$Q?h%R?he'}eS?hdVAT?g -U?gcV?gN=rW?g?&X?fǻY?f}0~Z?f7=q|[?e:\?e(?2S]?eetH^?e3}_?dؔ};`?dDQ a?dKmb?duԎc?c8d?cxiMe?c1ˬ=f?beg?bbxm%h?b]qi?b}j?ak?aֿl?aA8Xm?`Aln?`Po?`lTpp?`% 8q?_ݶr?_Ophs?_Ngt?_UoYIu?^ -v?^x:V w?^0i"x?]Wy?]Fz?]X[{?] |?\}?\q~?\8?[9l?[gJT?[`?[71?ZQ?ZՊ?Z>J&?YI'r?Y1?YdMuw?YXk?XҭP?Xuy?X@$4U?W?W;L?We`?WZ ?V&9?V8-?V@a?U??Uo5d?Uc?U?K?TЏ?Tc?T=U?S&OU?S9v?S_=?S2?R)D?R?R6\?Qkݕ?Q ?QWv?Q 5?P¯?PxL_?P-u ?Ou?Ou?OM+`ڤ?OIQi?NW?NlW7?N!G.>?M'J?M#U?M?#?Lml-?L.?L]<?L)6?KƟfւ?K{bh?K/\UM?J?J ?JL?J5?I(?Ih#ڣ?I?HT?H?H7v_?G%~K?GI4?GRT?Go ?FF\?Fl>?F&?E?m?Es5?E9Ƃ7?D쮋Q?D -?DRF\'?D>?Cl|<?Ck6c;?C -~?BЛ?B7+<?B5Ö*?A@ .?A?AM So?@\?@}?@cZ?@4<????z0,??+)76?>=S?>gW?>Ayg?=0Ӽ?=؋f?=Vq#D?=??!rc x??!z_z@?!'+LA? q+>B? C? +Ͼ,D?s:E?72F?/츣KG?IR*H?I?3IsEJ?@:K? hL?6}M?!ҤN?zO?9c(P?{IQ?ד\R?;S?N2eT?vWU?zq?a]?၈ -?#, ???fH? ?ߩ*n^?J%#N?0?ލפ?.=E ?]P:?pn?qj -?ܲe{,?SJ?!5#?۔G?54~; ?N -?v-} ?w, ?ٷ ?XfO?n~W?ؙgV?9_q?ٕu?y?!?ֹإ?Yh?Ʃ?ՙ?9t/?4&?x?v?Ӹf 3?W9?v7?Җ ?5"M&!?-"?tjmp#?0$?в]%?Q&?DE'?ϏbE(?.:#)?;*?lH1+? Q,?ͩP-?HJ.?G/?̅Y#W0?#op1?-,r2?`[3@3?Z4?ʜ5?;&M6?@J7?wL8?H9?ȳ7=:?Q 0;?SK? -??e@?$RA?Š.KB?> -moC?g~sD?x E?MF?ó'oG?PJ - -H?_!.I?Še""J?'\bK?ERL?a #SM?%%N?O?7XbXP?6Q?pB -R? XS?|T?E2|U?BV?~FiW?sX?':2Y?ScqZ?"(O[?#vh4\?'NRS]?^?^Н_?U`?Qxa?1b?̮͗c?i%yd?.e?Õf?;wgg?ćMh?r?i? HLj?p|k?Cl?ޖWm?y9n?&lo?cxp?J58q?m;]r?l9s?Ut?a1u?Ox Tv?a#w?` x?(Vy?=z?SRLtT{?|?@}?!%a~?ʨ?U>q?ﰊF?A?#\?.?V?sD? <5f?#f4? 5G?Vs?Ͽ?}jy?"\?z?TX?/F?j?¥??<?Qa?SS?`?_(?č?L -?|x?}Y?[7?P?G?>?wmu???,??pi?כi?o?\w;?'̑?6^.l?Β2?f3 `???HĚB?,,xP?%Nu|?[~+-?<?>?!3'?R'?Od?g?}\߃?Cd#?%"?An?آyv?oPFv?֔?)m?3@a?y?_߼?8"?O?"CHw?Q?O ?:?{?ë?n?9I?94?hp?۷?6.?'fH??Q\ǻ?0?zA?h̐6?0g?8o+3?^x?a]})?MK??@Y?oX?F5S?ڤ[ߦ?nb $?H[?T?*c?0Eg?Q /?~G?~yA5?xX1ɦ?x' ?w❖?w>"?v?O;B?vc틸?u^|?u\?uEp"%?tթ ?t?. -?s6{ ?sdj' ?r ?r ?rD^?q_!?q>q?p}|}?pbO?o~?ov\?oqj8y?n YC?n:D&?m,?m]?l!?l:9|?l?ke?k3F?jhZ ?jV Oz!?i 9wM"?iw&#?i"$?h)%?h* n&?g: -'?gK(?f܄!)?fm9*?eX+?e -x(,?ep!b-?dF.?d?9`/?cOk0?c_}1?b[P2?b3?b`x4?aF5?a/6?`oZG7?`O<#8?_&9?_n:?^N;?^{?]8{B?[yq'C?[TD?Z#WE?Z&~F?Y+G?YDԛH?Xӄ"TI?XbV+J?W(K?WѺ]L?Wz~}M?VbN?V+fuO?U!@P?UHУQ?T8TjR?TeK¢S?Sp5T?SAU?S7wV?RS"W?R,'_yX?Q)+Y?QH1/Z?PB[?Pc!\?O*-]?Of\^?O _?NAa`?N(J=a?Mֈb?MCHBc?Lгd?L^ޭe?K^#Df?KxJg?K嚎h?J@i?J l^j?Ik?I:l?Hm?HS3n?G=do?Gmxҩup?F/dq?FءAr?FsTs?EO }t?E,Iu?DVv?DEWw?Cѭ]x?C]"y?B0z?Bv]{?B}(J|?A}?Am~?@?@2pۮ??Kip??J9c?>K?>a?=,:\?=x%?=J;C?<ģ?<1SM%?;I?;1K)?:%F?:HZ{T?9ӂ|?9^^A?8-?8t -?7Rsv?7}(Z?7SϬ?6}?6*?5Q76?5@"sk?4ʳv?4U74?3߭ĹT?3j0Pe?2p ?2~K?2n ?1/-?1SDu?0i{]?01rx?/m?/E[Z?.:⊿?.Y  ?-ј?-l~?,1 ?,_?, []uC?+ۺ9U?+Nv?*H?*/ ?)TD?)A1?(ʿ֧F?(S?'K?'eD?&U?&w?&?%f!?%K;N?$zB?$##a?#?6<?#4ʵQO?"HC?"EJ?!?!Vp,? ޸q? f? ?w>k[?Oun?SJ?I{?2N2? ~t?"?.=?Mͻ?=d?ŊT?ML|b?ԐN?[?a ?j3`?IIO?y4!t?_wζ?}K -?y?o?(?mC?*G?_5 ??k闒?/;k?xhDX? j? Ѫ? -X? ">? y? ^? "{3 ? -HL2? -.h? ]? 9_B(?`?Dd?i?Ok{?m)?Z!]?h^r?dv~?ͬU?n7?\u?y ?tx?i3??'?Jƴ?\j?db* ?= GA -?#T ?F= ?,ԙ ?Um?5o!?;l?=T?!2?FAw?T'?NZ5?RT&?V=P?A7>?]똻E?ᮛ>?edIxL? L?lh?5aK?sŽ?(8t ?zh!?߅"?26y#?p7X$?򇠘J%? -&?kW'?p(?)?&*?b+?/>,?Fj6 -?!^.? @/?'Iv0?ڛB%1?,^|+2?3?1>uf4?곚(5?5gp6?+7?:_Y8?輆sa9?>P5,:?;?BQf:?[1??J%̉@?A?MΐB?5UC?P4wD?SRE?S*VF?L-`?U6a?h`e>hb?]c?hM6[d?1e?hf?%g?gJh?:j{i?f!+j?pmk?eRl?rm?d1rn??Cbo?c>Gp?#,q?b;r?<s?`[U3t?lq(u?^qk\v?h۲w?\S;/x?0oy?Zʑz?k{?Wzi|?#5a}?T?~?N=?Q1.?E/?N?Я?KU?ɖgB@?G(l?}?D -7?LT7?@? Z?;Pl??7 ?RH?3^?T(?.@I\??)HE?fZ?$$w%?sD???*aL?ME?c3?l,? h03?W@?9]g?z?k?} t?@aS?vʖ?vC?o{?xn6%?h ?F-I?a8?}?ZZ?H'?Ri?|d.?J5?|R ?Bh F?H_ ?:K ?z?1?F43?(;?xL?3?vY?„?A? j??m?<?[?umZ?r!?kjβX?V*t?a4*?c?VBxE?уN`?L.&??A^פ?휻Ro?6[L C?훰wq?+$`?횥vf?+ ?홙&R?UR?혎<?NX?헂S-{?K;?v60??i?㫷?]cd?]#?P !??m?C(6w?푽=?6D?퐰5?)Zh؂?폢c?ؚ?펕*?#ޗ?퍇6jW?<?!y]?kg'N?^ $?\m?T-?N?ơ//m??4G?퇷i F?05|W?톨Gy?!?텙W0??턉٥?D ?z(?=dJ ?jE] ?Aw ?Z/O ?44 ?I* ?># ?9l ?~y ?~(LI ?}T} -?} FY ?|ZI ?|G ?{~. ?zx ?zlw*+ ?yK ?y[? ?xd p ?xI|" ?w ?w7Y ?vx ?v%^.~ ?u76`a ?u ?tÄs ?tvGd ?swV ?rf ?rdE0AF ?q- ?qQ:pj !?pǢwT "?p=Z #?oL $?o* %?n[ &?nt0 '?m - (?m )?ly *?kq +?kdڷ ,?jܼ| -?jPQ .?irKN /?i<+= 0?h -X 1?h'vSk 2?g ( 3?g^9 4?f "> 5?eveM 6?er) 7?d+n3 8?d]s6XD 9?cҮ :?cGN ;?b" ?a? ??` 'x @?` A?_zǙ B?^ C?^dQ4C D?]R` E?]MӐ F?\B4g G?\6. H?[ON I?[1_ J?Z*T K?Z L?Y|AI M?XkQ N?XeL(T O?Wuy P?WM_ Q?V R?V5 S?U T?U U?Th/ V?T;+3 W?Sy:Ǣ X?R嶄 Y?R`h,2 Z?Q Ф [?QG \?P% ]?P.rt ^?O+M _?Os `?Nu a?M" b?MoRU c?L.A d?LU_V{ e?K6 f?K;γS g?JB h?J!¤cT i?Iϫ j?I8/ k?HzTl l?Gw5 m?G_̘ - n?Fve< o?FE -O p?E -? q?E*)] r?Dl s?D t?Cn8 u?B0* v?Bf V w?AD$ x?AJs@h y?@B z?@.]W {?? |??I }?>G^ ~?= ?=hbae ?<. ?@` ? -՜R ? -^a ? ŋ ?Mk ?a ?  ? -#?*ps -$?BS -%?ެVI -&?Q` -'?݀ -(? -)?Sހ -*?۽'W -+?'G] -,?ڑ=p --? -.?dÀ -/?0 -0?7O: -1?סBfo -2? -M -3?t%~s -4?݅ -5?F -6?԰"t -7?_i[ -8?ӂM -9?J -:?T9 -;?ѽ|z4 -?MV -??aD -@?vl. -A?3?9o -B?͛_ -C? -D?mRX+o -E? -F?>z>V% -G?ʦ -H?s - -I?w4R -J?> -K?Hc -L?ǰ -M? -N?ƁHo -O?n -P?Qtp -Q?ĹE -R?!L^ -S?É9 -T?|H -U?Y\S -V?1+1` -W?( -X?e9 -Y?i(? -Z?`Y -[?ǩ -\?/9JC -]?콖@ -^?44 -_?e> -`? -a?4W' -b?캛  -c?1 -d?j -e?9 -f?8T8 -g?췟d! -h?i -i?mb -j?P? -k?;2V(^ -l?촢~ -m?x* -n?o -o?G2 -p? -s?pN: -t?3 -u?=M -v?쮣w -w? -J- -x?pe -y? -z?= -{?쫣99 -|? X*E -}?okd -~?s? -?;pP -?쨡a{ -?G6ȣ -?m!` -?b&c -?8 -?쥞k٬ -?t$ -?i7 -?Oj -?4ȣ -?좚X -?M$ -?e4v} -?ʑ: -?/i -?쟕( -?c/ -?_fm2 -?Ķ -?t:^8 -?s;Q5 -?r -?r`܈rJ -?qÉ -?q$Kj -?p{E -?o6 -?oJL| -?nN9 -?n A -?mopC -?l -?l2} -?k0ƂP -?jE -?jW$ -?iy9 -?i - -?h{=1 -?g܅D -?g=< -?f -?f_+= -?ea5c -?dF=t2 -?d#K= -?cEޠ -?b5~ -?bFIL -?am, -?a -?`hM -?_;T -?_)[ -?^D -?]!| + -?]Ke: -?\.J -?\ +Ӷ -?[m -?Zn ?Z- ?Y ^ ?XLvm ?XNRp ?W1 ?W ?Vn ?Uˌ ?U.է ?T<^ -?Sk) ?SN ?Rd ?R+h ?Qm&H ?P͖YB ?P-;k ?O嶳 ?NeA ?NK ?Mc(W ?M -ѵ ?Lj5T ?KɎ_ ?K(ͻ ?J ?IV ?IF} ?H ?H ?GcH ?Fʳ ?F!9 !?E "?DߍG #?D>cw $?C.r8 %?Bs &?BZl '?AN$ (?AwW )?@vC *?? J] +??3|d ,?>cP -?=h9 .?=NƗݺ /?<8J 0?< b 1?;i 2?:Ӭh 3?:%%r 4?9: 5?8+Q 6?8@3. 7?70i1 8?6"W 9?6Z :?5K` ;?5U ?3.G=" ??2̖ @?1.s- A?1G~ B?0EE C?0 D?/`1B E?. F?.N G?-xCB H?,ՈΈ I?,2Âmp J?+| K?*= L?*J3 M?)Cr=Q N?)H O?(aB P?'2!8 Q?'Lg R?&w S?%dP= T?%12B U?$@K V?# W?#G` X?".]A Y?"@ Z?!]BBH [? +l \? +ec| ]?r< ^?Α _?+8> `?} a?^ b?? c?  d?$h e?T4, c f?8 g? 2.b h?h!˃ i? j? k?{ l?t m?3.= n?F o?% p?Fgd q? l` r?26 s?X[ t?Y u?6 v?j8s w?,D x?!q(] y? | z? c {? 35o |? ]k }? -.[ ~? -D4_L ? / ? j ?U ?} ? -n ?ez ?6 ? ?u ?,*+ ?*/B ?E ?ª+E ?:5 ?f ?P ?IMs ? ? ?XA3/ ?03| ? NϹ ?fb ?l 3J ?k$ ?t_a ?I ?()[R' ?K ?-q ?5gI ??, ?3= ?B_: ?!5 ?& ?O/]Y ?. ?2~ ?[uz` ?U ? ?g]f ?j ?Ġ8" ?rn ? ?% ?~xD ?0| ?/ ?y ? ?:ֹ ?W$. ? ?DĹsXTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 401 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'z ' TFORM1 = 'D ' TTYPE2 = 'nz ' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'NZ ' SACCNAME= 'gc_unwise' SACCQTTY= 'galaxy_density' EXTNAME = 'tracer:NZ:gc_unwise' HIERARCH META_ngal = 1.0 END ?zG{? >?zG{?)U}?Q??+M?Gz?ҧ6?ۅQ?ʜğ?(\)?b??-z?p -=q?#X1?zG? e-?޸Q??~v?\(\???ho -?QR?tڿ? -=p?()?\(?)22?GzH?? .?ᙙ?V@?Q?&?=p ->??s?\(?غ.t?Gz?.pu?333333?J )?Q?Pe? -=p?w]퉚?(\)? B?zG{?2-(??;s T?Q?f4S?p -=q?gmOn?\(?8E?zG?(A?fffffg?%U!ӎ?Q?&|? -=p -?&6?\(\?oG?zG? ??T?QR?I)? -=p?6?\(?g!0Q?GzH? ?`?\(?9<:?Gz?~ϯ?333333? -?Q?(S_? -=p?Kp^b ?(\)?ĎC2?zG{?d]??*?Q?UHl?p -=q?Ŗn#pO?\(?(˙?zG?H?fffffg?VƊ+?Q?ƕ}.JD? -=p -?c?\(\?Ȥv?zG?NW C??NjV6,8?(\)?N4t?QR??zG{?=kLM? -=p?wkq??ȱ 1?\(?7[?Q?"+?GzH?YńE?p -=q?ɐ;?񙙙? A?\(?qǥ?Q?1Hk?zG?ff[?=p ->?ʙ*?fffffg?չ0J?\(?6?Q?0yL?Gz?a? -=p -?˒ZY?333333? ]ݼ?\(\?ڶd?Q?w!?zG?M(ӆJ? -=p?z->??̦2)?(\)?1H?QR?/X?zG{?'ǯB? -=p?Q&ل O??z5?\(?͢j?Q? -E%P}?GzH?KHq?p -=q?DA???̜!/=?fffffg?(C?\(?|?Q?1nYH?Gz?Qi? -=p -?qY>?333333?ϐS?\(\?Ϯ?Q?SR?zG?Ye6? -=p?ݦ].??0Jc?(\)?HC+?QR?+C?zG{?8mRKA? -=p?E~X??QOF{?\(?]Hǩ?Q?he6?GzH?tKs>?p -=q?Vx ??Њm?\(?ДY ?Q?ОG?zG?Шx%?=p ->?вnI?fffffg?лF'??y?(\)? /$?QR?Dz?zG{?hS]? -=p?^O8Ψ??#`V/?\(?(kZ?Q?,X?GzH?08:q?p -=q?4o??8z0[y?\(?;?Q??+?zG?Bk?ي?=p ->?D¬*N?fffffg?G5 -?\(?Ijo ?Q?Ka?Qf@QR?Pht@ffffff?Ov%@zG{?NQ@\(?M\\٢@ -=p?K› @Q?Ic@?G}<@Gz?E5@\(?CV@ -=p -?@ @Q?={@333333?:W0@GzH?7uy1@\(\?4o@p -=q?0*@Q?-+5pT@?)CH@zG?%.x#@\(? @ -=p?~*ʡ@Q?m@?/@zG?-2g,@(\)? >Uo@=p ->?͊Q@QR?_8@fffffg?ђI@zG{? -;!Ls@\(?#jX@ -=p?O޵\@Q?6k@?ڈ -=@Gz?RĈ)@\(?c7@ -=p -?ƚIA@Q?п/@333333?и.@GzH?бh^@\(\?Ъ @p -=q?Т a@Q?Кs@?ГE1v@zG?ЋiR:@\(?Ѓn7o@ -=p?{S:c@Q?s)H@?j~t^@zG?bIzd@(\)?YA('@=p ->?Qjn@QR?H5E@fffffg??Jy@zG{?6DC2/@\(?-"؃@ -=p?#}#@Q?e@?K@Gz?* @\(?@ -=p -?f+y@Q?ԼT@333333?$ @GzH?Ϭܕ @\(\?Ϙ@p -=q?τDQq@Q?o@?ZU@zG?FZ@\(?1o@ -=p?F @Q?qŬ@?^ -@zG?=@(\)?jiC?@=p ->?ίrIdׁ@QR?ΙUx^@fffffg?΃+F@@zG{?lꐲ@\(?V/JӦ@ -=p??@Q?(ä#@?~@Gz?u@\(?Q3@ -=p -?uvN@Q?͵@333333?͝a@GzH?͆ Lp@\(\?nYpHC@p -=q?V{uZ@Q?>@?&:N@zG?w@\(?p,@ -=p?-D@Q?j@?̭fh@zG?̔k{<@(\)?|Ls@=p ->?c4"@QR?JW/]@fffffg?2r:\ @zG{?1Bn@\(?=ՌfC@ -=p?9±@Q?%c@?˵&@Gz?˛i@\(?˂zY&@ -=p -?i?h@ Q?O̜@ 333333?6{G'@ GzH? OM@ \(\?$Ž@ p -=q?@ Q?c@ ?ʶTz>@ zG?ʝj @ \(?ʃfmki@ -=p?iƙU@ Q?O9M@ -?6P[@ -zG?I@ -(\)?p=@ -=p ->?wHH@ -QR?άx@ -fffffg?ɴw@ -zG{?ɚӌ4@ -\(?ɀGc@ - -=p?f/pm@ -Q?Lv-@ -?2PG@ -Gz?{@ -\(?9@ -=p -?黙W@ Q?\@ 333333?Ȱ݃?@ GzH?Ȗ]@ \(\?| M@ p -=q?bĥ@ Q?Hz,@ ?.|@ zG?cU@ \(?wD@ -=p?,'S@ Q?ƷW@ ?ǬSS@ zG?ǒyץ@ (\)?x"$@ =p ->?^ߥu'@ QR?DYw@ fffffg?+  @ zG{?()@ \(?Jd@ -=p?r @ Q?à*@ ?ƩѕU@ Gz?Ɛ 5@ \(?vNB@ -=p -?\yZ@ Q?B唦G@ 333333?)?v4@QR?ŮOcI^@fffffg?Ĭ9!@zG{?ēv@\(?z6p@ -=p?aW@Q?H"C@?/ҹ@Gz?@\(?B3@"@ -=p -?{H*@Q? c@333333?ôL0b@GzH?ÛӦ8@\(\?ÃAfJ;@p -=q?jTKU@Q?Rn"S|@?:@zG?!O9@\(? HN"@ -=p?wwv@Q?_@?U!<XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 401 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'z ' TFORM1 = 'D ' TTYPE2 = 'nz ' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'NZ ' SACCNAME= 'gc_unwise' SACCQTTY= 'galaxy_density' EXTNAME = 'tracer:NZ:gc_unwise' HIERARCH META_ngal = 1.0 END ?zG{? >?zG{?)U}?Q??+M?Gz?ҧ6?ۅQ?ʜğ?(\)?b??-z?p -=q?#X1?zG? e-?޸Q??~v?\(\???ho -?QR?tڿ? -=p?()?\(?)22?GzH?? .?ᙙ?V@?Q?&?=p ->??s?\(?غ.t?Gz?.pu?333333?J )?Q?Pe? -=p?w]퉚?(\)? B?zG{?2-(??;s T?Q?f4S?p -=q?gmOn?\(?8E?zG?(A?fffffg?%U!ӎ?Q?&|? -=p -?&6?\(\?oG?zG? ??T?QR?I)? -=p?6?\(?g!0Q?GzH? ?`?\(?9<:?Gz?~ϯ?333333? -?Q?(S_? -=p?Kp^b ?(\)?ĎC2?zG{?d]??*?Q?UHl?p -=q?Ŗn#pO?\(?(˙?zG?H?fffffg?VƊ+?Q?ƕ}.JD? -=p -?c?\(\?Ȥv?zG?NW C??NjV6,8?(\)?N4t?QR??zG{?=kLM? -=p?wkq??ȱ 1?\(?7[?Q?"+?GzH?YńE?p -=q?ɐ;?񙙙? A?\(?qǥ?Q?1Hk?zG?ff[?=p ->?ʙ*?fffffg?չ0J?\(?6?Q?0yL?Gz?a? -=p -?˒ZY?333333? ]ݼ?\(\?ڶd?Q?w!?zG?M(ӆJ? -=p?z->??̦2)?(\)?1H?QR?/X?zG{?'ǯB? -=p?Q&ل O??z5?\(?͢j?Q? -E%P}?GzH?KHq?p -=q?DA???̜!/=?fffffg?(C?\(?|?Q?1nYH?Gz?Qi? -=p -?qY>?333333?ϐS?\(\?Ϯ?Q?SR?zG?Ye6? -=p?ݦ].??0Jc?(\)?HC+?QR?+C?zG{?8mRKA? -=p?E~X??QOF{?\(?]Hǩ?Q?he6?GzH?tKs>?p -=q?Vx ??Њm?\(?ДY ?Q?ОG?zG?Шx%?=p ->?вnI?fffffg?лF'??y?(\)? /$?QR?Dz?zG{?hS]? -=p?^O8Ψ??#`V/?\(?(kZ?Q?,X?GzH?08:q?p -=q?4o??8z0[y?\(?;?Q??+?zG?Bk?ي?=p ->?D¬*N?fffffg?G5 -?\(?Ijo ?Q?Ka?Qf@QR?Pht@ffffff?Ov%@zG{?NQ@\(?M\\٢@ -=p?K› @Q?Ic@?G}<@Gz?E5@\(?CV@ -=p -?@ @Q?={@333333?:W0@GzH?7uy1@\(\?4o@p -=q?0*@Q?-+5pT@?)CH@zG?%.x#@\(? @ -=p?~*ʡ@Q?m@?/@zG?-2g,@(\)? >Uo@=p ->?͊Q@QR?_8@fffffg?ђI@zG{? -;!Ls@\(?#jX@ -=p?O޵\@Q?6k@?ڈ -=@Gz?RĈ)@\(?c7@ -=p -?ƚIA@Q?п/@333333?и.@GzH?бh^@\(\?Ъ @p -=q?Т a@Q?Кs@?ГE1v@zG?ЋiR:@\(?Ѓn7o@ -=p?{S:c@Q?s)H@?j~t^@zG?bIzd@(\)?YA('@=p ->?Qjn@QR?H5E@fffffg??Jy@zG{?6DC2/@\(?-"؃@ -=p?#}#@Q?e@?K@Gz?* @\(?@ -=p -?f+y@Q?ԼT@333333?$ @GzH?Ϭܕ @\(\?Ϙ@p -=q?τDQq@Q?o@?ZU@zG?FZ@\(?1o@ -=p?F @Q?qŬ@?^ -@zG?=@(\)?jiC?@=p ->?ίrIdׁ@QR?ΙUx^@fffffg?΃+F@@zG{?lꐲ@\(?V/JӦ@ -=p??@Q?(ä#@?~@Gz?u@\(?Q3@ -=p -?uvN@Q?͵@333333?͝a@GzH?͆ Lp@\(\?nYpHC@p -=q?V{uZ@Q?>@?&:N@zG?w@\(?p,@ -=p?-D@Q?j@?̭fh@zG?̔k{<@(\)?|Ls@=p ->?c4"@QR?JW/]@fffffg?2r:\ @zG{?1Bn@\(?=ՌfC@ -=p?9±@Q?%c@?˵&@Gz?˛i@\(?˂zY&@ -=p -?i?h@ Q?O̜@ 333333?6{G'@ GzH? OM@ \(\?$Ž@ p -=q?@ Q?c@ ?ʶTz>@ zG?ʝj @ \(?ʃfmki@ -=p?iƙU@ Q?O9M@ -?6P[@ -zG?I@ -(\)?p=@ -=p ->?wHH@ -QR?άx@ -fffffg?ɴw@ -zG{?ɚӌ4@ -\(?ɀGc@ - -=p?f/pm@ -Q?Lv-@ -?2PG@ -Gz?{@ -\(?9@ -=p -?黙W@ Q?\@ 333333?Ȱ݃?@ GzH?Ȗ]@ \(\?| M@ p -=q?bĥ@ Q?Hz,@ ?.|@ zG?cU@ \(?wD@ -=p?,'S@ Q?ƷW@ ?ǬSS@ zG?ǒyץ@ (\)?x"$@ =p ->?^ߥu'@ QR?DYw@ fffffg?+  @ zG{?()@ \(?Jd@ -=p?r @ Q?à*@ ?ƩѕU@ Gz?Ɛ 5@ \(?vNB@ -=p -?\yZ@ Q?B唦G@ 333333?)?v4@QR?ŮOcI^@fffffg?Ĭ9!@zG{?ēv@\(?z6p@ -=p?aW@Q?H"C@?/ҹ@Gz?@\(?B3@"@ -=p -?{H*@Q? c@333333?ôL0b@GzH?ÛӦ8@\(\?ÃAfJ;@p -=q?jTKU@Q?Rn"S|@?:@zG?!O9@\(? HN"@ -=p?wwv@Q?_@?U!<XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 50 / length of dimension 1 NAXIS2 = 60 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 6 / number of table fields TTYPE1 = 'tracer_0' TFORM1 = '9A ' TTYPE2 = 'tracer_1' TFORM2 = '9A ' TTYPE3 = 'value ' TFORM3 = 'D ' TTYPE4 = 'window_ind' TFORM4 = 'K ' TTYPE5 = 'ell ' TFORM5 = 'D ' TTYPE6 = 'window ' TFORM6 = 'K ' NTRACER = 2 SACCTYPE= 'data ' SACCNAME= 'cl_00 ' EXTNAME = 'data:cl_00' END ck_sock_so>4;Y@.[jOck_sock_so>E߼@F[jOck_sock_so>]K2>@R[jOck_sock_so>?`~n@Z@[jOck_sock_so>xנA<@`[jOck_sock_so>}B-N^J@d[jOck_sock_so>x^C@h`[jOck_sock_so>u^Y@l [jOck_sock_so>r @o[jOck_sock_so>p`BG @q[jOck_sock_so>m l@k -@s[jOck_sock_so>iﯗ @u[jOck_sock_so>gE^. @wp[jOck_sock_so>ds @yP[jOck_sock_so>bFizB@{0[jOck_sock_so>a4@}[jOck_sock_so>_P@~[jOck_sock_so>\U@h[jOck_sock_so>Z0yY@X[jOck_sock_so>XE@H[jOgc_unwiseck_so>~WT@.[jOgc_unwiseck_so>\@F[jOgc_unwiseck_so>F^]@R[jOgc_unwiseck_so>zcB@Z@[jOgc_unwiseck_so>uk<@`[jOgc_unwiseck_so>qʸW9@d[jOgc_unwiseck_so>nb[Q@h`[jOgc_unwiseck_so>iۛӢN*@l [jOgc_unwiseck_so>fr?rD@o[jOgc_unwiseck_so>c+| @q[jOgc_unwiseck_so>aX[ -@s[jOgc_unwiseck_so>]&{ @u[jOgc_unwiseck_so>ZP @wp[jOgc_unwiseck_so>Wm @yP[jOgc_unwiseck_so>TyJ@{0[jOgc_unwiseck_so>RO!@}[jOgc_unwiseck_so>P|O@~[jOgc_unwiseck_so>NMU@h[jOgc_unwiseck_so>L4Kv@X[jOgc_unwiseck_so>I7E@H[jOgc_unwisegc_unwise>@.[jOgc_unwisegc_unwise>-j"@F[jOgc_unwisegc_unwise> 3^_@R[jOgc_unwisegc_unwise>@qۦ @Z@[jOgc_unwisegc_unwise>[$@`[jOgc_unwisegc_unwise>Iv5@d[jOgc_unwisegc_unwise>@h`[jOgc_unwisegc_unwise>3˯@l [jOgc_unwisegc_unwise>s1@o[jOgc_unwisegc_unwise>cDJ @q[jOgc_unwisegc_unwise>~ry6l -@s[jOgc_unwisegc_unwise>}v= @u[jOgc_unwisegc_unwise>|=ޠ @wp[jOgc_unwisegc_unwise>{w @yP[jOgc_unwisegc_unwise>{j䦡@{0[jOgc_unwisegc_unwise>z\@}[jOgc_unwisegc_unwise>zGq/b @~[jOgc_unwisegc_unwise>z>8 E@h[jOgc_unwisegc_unwise>y+s@X[jOgc_unwisegc_unwise>yY".;@H[jOXTENSION= 'IMAGE ' / Image extension BITPIX = -64 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 60 NAXIS2 = 60 PCOUNT = 0 / number of parameters GCOUNT = 1 / number of groups EXTNAME = 'covariance' SACCTYPE= 'cov ' SACCCLSS= 'full ' SIZE = 60 END :<[G9}F<>ԍ <'-PA<6gՙP<78< ]Mm<1gV؃& <13K<@<+JzZ<+ }&b+<Ab8 <%ZVs<%<|kY9< yPe:<~ɼn<^\"?ԍ jrlo;HQ <k -ܷ^<;bg;ލ2M< [ -s<9oPS;T<*/<86 \ No newline at end of file diff --git a/soliket/tests/test_bandpass.py b/soliket/tests/test_bandpass.py index e82d4340..4616a3b5 100644 --- a/soliket/tests/test_bandpass.py +++ b/soliket/tests/test_bandpass.py @@ -1,17 +1,12 @@ import numpy as np - from cobaya.model import get_model -from ..constants import T_CMB, h_Planck, k_Boltzmann +from soliket.constants import T_CMB, h_Planck, k_Boltzmann -info = {"params": { +bandpass_params = { "bandint_shift_LAT_93": 0.0, "bandint_shift_LAT_145": 0.0, "bandint_shift_LAT_225": 0.0 -}, - "likelihood": {"one": None}, - "sampler": {"evaluate": None}, - "debug": True } bands = {"LAT_93_s0": {"nu": [93], "bandpass": [1.]}, @@ -31,29 +26,31 @@ def test_bandpass_import(): from soliket.bandpass import BandPass # noqa F401 -def test_bandpass_model(): +def test_bandpass_model(evaluate_one_info): from soliket.bandpass import BandPass - info["theory"] = {"bandpass": { + evaluate_one_info["params"] = bandpass_params + evaluate_one_info["theory"] = {"bandpass": { "external": BandPass, }, } - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) # noqa F841 -def test_bandpass_read_from_sacc(): +def test_bandpass_read_from_sacc(evaluate_one_info): from soliket.bandpass import BandPass # testing the default read_from_sacc - info["theory"] = { + evaluate_one_info["params"] = bandpass_params + evaluate_one_info["theory"] = { "bandpass": {"external": BandPass}, } - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) model.add_requirements({"bandint_freqs": {"bands": bands} }) - model.logposterior(info['params']) # force computation of model + model.logposterior(evaluate_one_info['params']) # force computation of model lhood = model.likelihood['one'] @@ -62,15 +59,19 @@ def test_bandpass_read_from_sacc(): bandint_freqs = np.empty_like(exp_ch, dtype=float) for ifr, fr in enumerate(exp_ch): bandpar = 'bandint_shift_' + fr - bandint_freqs[ifr] = np.asarray(bands[fr + "_s0"]["nu"]) + info["params"][bandpar] + bandint_freqs[ifr] = ( + np.asarray(bands[fr + "_s0"]["nu"]) + evaluate_one_info["params"][bandpar] + ) assert np.allclose(bandint_freqs, bandpass) -def test_bandpass_top_hat(): +def test_bandpass_top_hat(evaluate_one_info): from soliket.bandpass import BandPass + # now testing top-hat construction - info["theory"].update({ + evaluate_one_info["params"] = bandpass_params + evaluate_one_info["theory"] = { "bandpass": {"external": BandPass, "top_hat_band": { "nsteps": 3, @@ -78,20 +79,20 @@ def test_bandpass_top_hat(): "external_bandpass": {}, "read_from_sacc": {}, }, - }) + } - model = get_model(info) + model = get_model(evaluate_one_info) model.add_requirements({"bandint_freqs": {"bands": bands} }) - model.logposterior(info['params']) # force computation of model + model.logposterior(evaluate_one_info['params']) # force computation of model lhood = model.likelihood['one'] bandpass = lhood.provider.get_bandint_freqs() bandint_freqs = [] - nsteps = info["theory"]["bandpass"]["top_hat_band"]["nsteps"] - bandwidth = info["theory"]["bandpass"]["top_hat_band"]["bandwidth"] + nsteps = evaluate_one_info["theory"]["bandpass"]["top_hat_band"]["nsteps"] + bandwidth = evaluate_one_info["theory"]["bandpass"]["top_hat_band"]["bandwidth"] for ifr, fr in enumerate(exp_ch): bandpar = 'bandint_shift_' + fr bd = bands[f"{fr}_s0"] @@ -99,8 +100,8 @@ def test_bandpass_top_hat(): fr = nu_ghz @ bp / bp.sum() bandlow = fr * (1 - bandwidth * .5) bandhigh = fr * (1 + bandwidth * .5) - nub = np.linspace(bandlow + info["params"][bandpar], - bandhigh + info["params"][bandpar], + nub = np.linspace(bandlow + evaluate_one_info["params"][bandpar], + bandhigh + evaluate_one_info["params"][bandpar], nsteps, dtype=float) tranb = _cmb2bb(nub) tranb_norm = np.trapz(_cmb2bb(nub), nub) @@ -109,14 +110,16 @@ def test_bandpass_top_hat(): assert np.allclose(bandint_freqs, bandpass) -def test_bandpass_external_file(request): - from soliket.bandpass import BandPass +def test_bandpass_external_file(request, evaluate_one_info): import os + from soliket.bandpass import BandPass + filepath = os.path.join(request.config.rootdir, "soliket/tests/data/") # now testing reading from external file - info["theory"].update({ + evaluate_one_info["params"] = bandpass_params + evaluate_one_info["theory"] = { "bandpass": {"external": BandPass, "data_folder": f"{filepath}", "top_hat_band": {}, @@ -124,21 +127,21 @@ def test_bandpass_external_file(request): "path": "test_bandpass"}, "read_from_sacc": {}, }, - }) + } - model = get_model(info) + model = get_model(evaluate_one_info) model.add_requirements({"bandint_freqs": {"bands": bands} }) - model.logposterior(info['params']) # force computation of model + model.logposterior(evaluate_one_info['params']) # force computation of model lhood = model.likelihood['one'] bandpass = lhood.provider.get_bandint_freqs() path = os.path.normpath(os.path.join( - info["theory"]["bandpass"]["data_folder"], - info["theory"]["bandpass"]["external_bandpass"]["path"])) + evaluate_one_info["theory"]["bandpass"]["data_folder"], + evaluate_one_info["theory"]["bandpass"]["external_bandpass"]["path"])) arrays = os.listdir(path) external_bandpass = [] @@ -149,7 +152,7 @@ def test_bandpass_external_file(request): bandint_freqs = [] for expc, nu_ghz, bp in external_bandpass: bandpar = "bandint_shift_" + expc - nub = nu_ghz + info["params"][bandpar] + nub = nu_ghz + evaluate_one_info["params"][bandpar] if not hasattr(bp, "__len__"): bandint_freqs.append(nub) bandint_freqs = np.asarray(bandint_freqs) diff --git a/soliket/tests/test_bias.py b/soliket/tests/test_bias.py index d10aec69..97e6bbab 100644 --- a/soliket/tests/test_bias.py +++ b/soliket/tests/test_bias.py @@ -1,52 +1,45 @@ import numpy as np - from cobaya.model import get_model -info = {"params": { - "b_lin": 1.1, - "H0": 70., - "ombh2": 0.0245, - "omch2": 0.1225, - "ns": 0.96, - "As": 2.2e-9, - "tau": 0.05 - }, - "likelihood": {"one": None}, - "sampler": {"evaluate": None}, - "debug": True - } +bias_params = { + "b_lin": 1.1 +} def test_bias_import(): - from soliket.bias import Bias # noqa F401 + from soliket.bias import Bias # noqa F401 def test_linear_bias_import(): - from soliket.bias import Linear_bias # noqa F401 + from soliket.bias import Linear_bias # noqa F401 -def test_linear_bias_model(): +def test_linear_bias_model(evaluate_one_info, test_cosmology_params): from soliket.bias import Linear_bias - info["theory"] = { + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["params"].update(bias_params) + evaluate_one_info["theory"] = { "camb": None, "linear_bias": {"external": Linear_bias} } - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) # noqa F841 -def test_linear_bias_compute_grid(): +def test_linear_bias_compute_grid(evaluate_one_info, test_cosmology_params): from soliket.bias import Linear_bias - info["theory"] = { - "camb": None, - "linear_bias": {"external": Linear_bias} - } + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["params"].update(bias_params) + evaluate_one_info["theory"] = { + "camb": None, + "linear_bias": {"external": Linear_bias} + } - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) model.add_requirements({"Pk_grid": {"z": 0., "k_max": 10., "nonlinear": False, "vars_pairs": ('delta_tot', 'delta_tot') @@ -55,7 +48,7 @@ def test_linear_bias_compute_grid(): "Pk_gm_grid": None }) - model.logposterior(info['params']) # force computation of model + model.logposterior(evaluate_one_info['params']) # force computation of model lhood = model.likelihood['one'] @@ -65,5 +58,5 @@ def test_linear_bias_compute_grid(): Pk_gg = lhood.provider.get_Pk_gg_grid() Pk_gm = lhood.provider.get_Pk_gm_grid() - assert np.allclose(Pk_mm_lin * info["params"]["b_lin"]**2., Pk_gg) - assert np.allclose(Pk_mm_lin * info["params"]["b_lin"], Pk_gm) + assert np.allclose(Pk_mm_lin * evaluate_one_info["params"]["b_lin"]**2., Pk_gg) + assert np.allclose(Pk_mm_lin * evaluate_one_info["params"]["b_lin"], Pk_gm) diff --git a/soliket/tests/test_cash.py b/soliket/tests/test_cash.py index d9995209..1a202a35 100644 --- a/soliket/tests/test_cash.py +++ b/soliket/tests/test_cash.py @@ -1,7 +1,7 @@ import numpy as np +from cobaya.theory import Theory from soliket.cash import CashCData -from cobaya.theory import Theory class cash_theory_calculator(Theory): @@ -23,11 +23,12 @@ def toy_data(): def test_cash_import(): - from soliket.cash import CashCLikelihood # noqa F401 + from soliket.cash import CashCLikelihood # noqa F401 def test_cash_read_data(request): import os + from soliket.cash import CashCLikelihood cash_data_path = os.path.join(request.config.rootdir, @@ -40,6 +41,7 @@ def test_cash_read_data(request): def test_cash_logp(request): import os + from soliket.cash import CashCLikelihood params = {"cash_test_logp": 20} diff --git a/soliket/tests/test_ccl.py b/soliket/tests/test_ccl.py index cf372deb..fc5fadad 100644 --- a/soliket/tests/test_ccl.py +++ b/soliket/tests/test_ccl.py @@ -2,8 +2,8 @@ Check that CCL works correctly. """ import numpy as np -from cobaya.model import get_model from cobaya.likelihood import Likelihood +from cobaya.model import get_model class CheckLike(Likelihood): @@ -18,18 +18,8 @@ def logp(self, **params_values): def get_requirements(self): return {"CCL": None} -fiducial_params = { - "ombh2": 0.0224, - "omch2": 0.122, - "cosmomc_theta": 104e-4, - "tau": 0.065, - "ns": 0.9645, - "logA": 3.07, - "As": {"value": "lambda logA: 1e-10*np.exp(logA)"} -} -info_dict = { - "params": fiducial_params, +ccl_like_and_theory = { "likelihood": { "checkLike": {"external": CheckLike} }, @@ -44,27 +34,33 @@ def get_requirements(self): } -def test_ccl_import(request): +def test_ccl_import(): """ Test whether we can import pyCCL. """ - import pyccl # noqa F401 + import pyccl # noqa F401 -def test_ccl_cobaya(request): +def test_ccl_cobaya(evaluate_one_info, test_cosmology_params): """ Test whether we can call CCL from cobaya. """ - model = get_model(info_dict) + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(ccl_like_and_theory) + + model = get_model(evaluate_one_info) model.loglikes() -def test_ccl_distances(request): +def test_ccl_distances(evaluate_one_info, test_cosmology_params): """ Test whether the calculated angular diameter distance & luminosity distances in CCL have the correct relation. """ - model = get_model(info_dict) + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(ccl_like_and_theory) + + model = get_model(evaluate_one_info) model.loglikes({}) cosmo = model.provider.get_CCL()["cosmo"] @@ -77,11 +73,14 @@ def test_ccl_distances(request): assert np.allclose(da * (1.0 + z) ** 2.0, dl) -def test_ccl_pk(request): +def test_ccl_pk(evaluate_one_info, test_cosmology_params): """ Test whether non-linear Pk > linear Pk in expected regimes. """ - model = get_model(info_dict) + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(ccl_like_and_theory) + + model = get_model(evaluate_one_info) model.loglikes({}) cosmo = model.provider.get_CCL()["cosmo"] diff --git a/soliket/tests/test_clusters.py b/soliket/tests/test_clusters.py index 1daf9c21..7d4f84e6 100644 --- a/soliket/tests/test_clusters.py +++ b/soliket/tests/test_clusters.py @@ -1,20 +1,7 @@ import numpy as np - from cobaya.model import get_model -fiducial_params = { - "ombh2": 0.02225, - "omch2": 0.1198, - "H0": 67.3, - "tau": 0.06, - "As": 2.2e-9, - "ns": 0.96, - "mnu": 0.06, - "nnu": 3.046, -} - -info_fiducial = { - "params": fiducial_params, +clusters_like_and_theory = { "likelihood": {"soliket.ClusterLikelihood": {"stop_at_error": True}}, "theory": { "camb": { @@ -32,27 +19,36 @@ } -def test_clusters_model(): +def test_clusters_model(evaluate_one_info, test_cosmology_params): - model_fiducial = get_model(info_fiducial) # noqa F841 + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(clusters_like_and_theory) + model_fiducial = get_model(evaluate_one_info) # noqa F841 -def test_clusters_loglike(): - model_fiducial = get_model(info_fiducial) +def test_clusters_loglike(evaluate_one_info, test_cosmology_params): + + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(clusters_like_and_theory) + + model_fiducial = get_model(evaluate_one_info) lnl = model_fiducial.loglikes({})[0] - assert np.isclose(lnl, -854.89406321, rtol=1.e-3, atol=1.e-5) + assert np.isclose(lnl, -847.22462272, rtol=1.e-3, atol=1.e-5) + +def test_clusters_n_expected(evaluate_one_info, test_cosmology_params): -def test_clusters_n_expected(): + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info.update(clusters_like_and_theory) - model_fiducial = get_model(info_fiducial) + model_fiducial = get_model(evaluate_one_info) lnl = model_fiducial.loglikes({})[0] like = model_fiducial.likelihood["soliket.ClusterLikelihood"] - assert np.isfinite(lnl) + assert np.isclose(lnl, -847.22462272, rtol=1.e-3, atol=1.e-5) assert like._get_n_expected() > 40 diff --git a/soliket/tests/test_cosmopower.py b/soliket/tests/test_cosmopower.py index 5fcd2357..fc017527 100644 --- a/soliket/tests/test_cosmopower.py +++ b/soliket/tests/test_cosmopower.py @@ -2,12 +2,12 @@ Check that CosmoPower gives the correct Planck CMB power spectrum. """ import os -import pytest -import numpy as np +import numpy as np +import pytest from cobaya.model import get_model -from soliket.cosmopower import HAS_COSMOPOWER +from soliket.cosmopower.cosmopower import HAS_COSMOPOWER fiducial_params = { "ombh2": 0.0224, @@ -66,18 +66,22 @@ } +@pytest.mark.skipif(not HAS_COSMOPOWER, reason='test requires cosmopower') +def test_cosmopower_import(request): + from soliket.cosmopower import CosmoPower # noqa F401 + + @pytest.mark.skipif(not HAS_COSMOPOWER, reason='test requires cosmopower') def test_cosmopower_theory(request): info_dict['theory']['soliket.CosmoPower']['network_path'] = \ - os.path.join(request.config.rootdir, 'soliket/data/CosmoPower/CP_paper/CMB') - + os.path.join(request.config.rootdir, 'soliket/cosmopower/data/CP_paper') model_fiducial = get_model(info_dict) # noqa F841 @pytest.mark.skipif(not HAS_COSMOPOWER, reason='test requires cosmopower') def test_cosmopower_loglike(request): info_dict['theory']['soliket.CosmoPower']['network_path'] = \ - os.path.join(request.config.rootdir, 'soliket/data/CosmoPower/CP_paper/CMB') + os.path.join(request.config.rootdir, 'soliket/cosmopower/data/CP_paper') model_cp = get_model(info_dict) logL_cp = float(model_cp.loglikes({})[0]) @@ -98,7 +102,7 @@ def test_cosmopower_against_camb(request): "stop_at_error": True, "extra_args": {'lmax': camb_cls['ell'].max()}, 'network_path': os.path.join(request.config.rootdir, - 'soliket/data/CosmoPower/CP_paper/CMB'), + 'soliket/cosmopower/data/CP_paper'), "network_settings": { "tt": { "type": "NN", diff --git a/soliket/tests/test_cross_correlation.py b/soliket/tests/test_cross_correlation.py index bda961b4..20ca2b2c 100644 --- a/soliket/tests/test_cross_correlation.py +++ b/soliket/tests/test_cross_correlation.py @@ -1,102 +1,97 @@ -import numpy as np import os -from soliket.ccl import CCL + +import numpy as np from cobaya.model import get_model +from soliket.ccl import CCL gammakappa_sacc_file = 'soliket/tests/data/des_s-act_kappa.toy-sim.sacc.fits' gkappa_sacc_file = 'soliket/tests/data/gc_cmass-actdr4_kappa.sacc.fits' -cosmo_params = {"Omega_c": 0.25, "Omega_b": 0.05, "h": 0.67, "n_s": 0.96} - -info = { - "params": { - "omch2": cosmo_params["Omega_c"] * cosmo_params["h"] ** 2.0, - "ombh2": cosmo_params["Omega_b"] * cosmo_params["h"] ** 2.0, - "H0": cosmo_params["h"] * 100, - "ns": cosmo_params["n_s"], - "As": 2.2e-9, - "tau": 0, - # "b1": 1, - # "s1": 0.4, - }, - "theory": {"camb": None, "ccl": {"external": CCL, "nonlinear": False}}, - "debug": False, - "stop_at_error": True, +cross_correlation_params = { + "b1": 1.0, + "s1": 0.4, +} +cross_correlation_theory = { + "camb": None, + "ccl": {"external": CCL, "nonlinear": False}, } def test_galaxykappa_import(): - from soliket.cross_correlation import GalaxyKappaLikelihood # noqa F401 + from soliket.cross_correlation import GalaxyKappaLikelihood # noqa F401 def test_shearkappa_import(): - from soliket.cross_correlation import ShearKappaLikelihood # noqa F401 + from soliket.cross_correlation import ShearKappaLikelihood # noqa F401 -def test_galaxykappa_model(request): +def test_galaxykappa_model(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import GalaxyKappaLikelihood - info["params"]["b1"] = 2. - info["params"]["s1"] = 0.4 + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["params"].update(cross_correlation_params) + evaluate_one_info["theory"] = cross_correlation_theory - info["likelihood"] = { + evaluate_one_info["likelihood"] = { "GalaxyKappaLikelihood": {"external": GalaxyKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gkappa_sacc_file)}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) # noqa F841 -def test_shearkappa_model(request): +def test_shearkappa_model(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - # clear out the galaxykappa params if they've been added - info["params"].pop("b1", None) - info["params"].pop("s1", None) + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file)}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) # noqa F841 -def test_galaxykappa_like(request): +def test_galaxykappa_like(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import GalaxyKappaLikelihood - info["params"]["b1"] = 2. - info["params"]["s1"] = 0.4 + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["params"].update(cross_correlation_params) + evaluate_one_info["theory"] = cross_correlation_theory - info["likelihood"] = { + evaluate_one_info["likelihood"] = { "GalaxyKappaLikelihood": {"external": GalaxyKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gkappa_sacc_file), "use_spectra": [('gc_cmass', 'ck_actdr4')]}} - model = get_model(info) + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isclose(loglikes[0], 174.013, atol=0.2, rtol=0.0) + assert np.isclose(loglikes[0], 173.69192885580344, atol=0.2, rtol=0.0) -def test_shearkappa_like(request): +def test_shearkappa_like(request, evaluate_one_info): from soliket.cross_correlation import ShearKappaLikelihood + evaluate_one_info["theory"] = cross_correlation_theory + rootdir = request.config.rootdir cs82_file = "soliket/tests/data/cs82_gs-planck_kappa_binned.sim.sacc.fits" test_datapath = os.path.join(rootdir, cs82_file) - info["likelihood"] = { + evaluate_one_info["likelihood"] = { "ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": test_datapath} } @@ -104,48 +99,54 @@ def test_shearkappa_like(request): # Cosmological parameters for the test data, digitized from # Fig. 3 and Eq. 8 of Hall & Taylor (2014). # See https://github.com/simonsobs/SOLikeT/pull/58 for validation plots - info['params'] = {"omch2": 0.118, # Planck + lensing + WP + highL - "ombh2": 0.0222, - "H0": 68.0, - "ns": 0.962, - "As": 2.1e-9, - "tau": 0.094, - "mnu": 0.0, - "nnu": 3.046} + evaluate_one_info['params'] = { + "omch2": 0.118, # Planck + lensing + WP + highL + "ombh2": 0.0222, + "H0": 68.0, + "ns": 0.962, + "As": 2.1e-9, + "tau": 0.094, + "mnu": 0.0, + "nnu": 3.046 + } - model = get_model(info) + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() assert np.isclose(loglikes, 637.64473666) -def test_shearkappa_tracerselect(request): +def test_shearkappa_tracerselect(request, evaluate_one_info, test_cosmology_params): - from soliket.cross_correlation import ShearKappaLikelihood import copy + from soliket.cross_correlation import ShearKappaLikelihood + + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + rootdir = request.config.rootdir test_datapath = os.path.join(rootdir, gammakappa_sacc_file) - info["likelihood"] = { + evaluate_one_info["likelihood"] = { "ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": test_datapath, 'use_spectra': 'all'} } - info_onebin = copy.deepcopy(info) + info_onebin = copy.deepcopy(evaluate_one_info) info_onebin['likelihood']['ShearKappaLikelihood']['use_spectra'] = \ [('gs_des_bin1', 'ck_act')] - info_twobin = copy.deepcopy(info) + info_twobin = copy.deepcopy(evaluate_one_info) info_twobin['likelihood']['ShearKappaLikelihood']['use_spectra'] = \ [ ('gs_des_bin1', 'ck_act'), ('gs_des_bin3', 'ck_act'), ] - model = get_model(info) + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() lhood = model.likelihood['ShearKappaLikelihood'] @@ -171,16 +172,18 @@ def test_shearkappa_tracerselect(request): lhood_twobin.data.y) -def test_shearkappa_hartlap(request): +def test_shearkappa_hartlap(request, evaluate_one_info): from soliket.cross_correlation import ShearKappaLikelihood + evaluate_one_info["theory"] = cross_correlation_theory + rootdir = request.config.rootdir cs82_file = "soliket/tests/data/cs82_gs-planck_kappa_binned.sim.sacc.fits" test_datapath = os.path.join(rootdir, cs82_file) - info["likelihood"] = { + evaluate_one_info["likelihood"] = { "ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": test_datapath} } @@ -188,7 +191,7 @@ def test_shearkappa_hartlap(request): # Cosmological parameters for the test data, digitized from # Fig. 3 and Eq. 8 of Hall & Taylor (2014). # See https://github.com/simonsobs/SOLikeT/pull/58 for validation plots - info['params'] = {"omch2": 0.118, # Planck + lensing + WP + highL + evaluate_one_info['params'] = {"omch2": 0.118, # Planck + lensing + WP + highL "ombh2": 0.0222, "H0": 68.0, "ns": 0.962, @@ -198,113 +201,136 @@ def test_shearkappa_hartlap(request): "mnu": 0.0, "nnu": 3.046} - model = get_model(info) + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - info["likelihood"]["ShearKappaLikelihood"]["ncovsims"] = 5 + evaluate_one_info["likelihood"]["ShearKappaLikelihood"]["ncovsims"] = 5 - model = get_model(info) + model = get_model(evaluate_one_info) loglikes_hartlap, derived = model.loglikes() assert np.isclose(np.abs(loglikes - loglikes_hartlap), 0.0010403, rtol=1.e-5, atol=1.e-5) -def test_shearkappa_deltaz(request): +def test_shearkappa_deltaz(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file), "z_nuisance_mode": "deltaz"}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -7910.043704938653, atol=0.2, rtol=0.0) -def test_shearkappa_m(request): +def test_shearkappa_m(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file), "m_nuisance_mode": True}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -3737.5531377692337, atol=0.2, rtol=0.0) -def test_shearkappa_ia_nla_noevo(request): +def test_shearkappa_ia_nla_noevo(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file), "ia_mode": 'nla-noevo'}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -111712.15660832982, atol=0.2, rtol=0.0) -def test_shearkappa_ia_nla(request): +def test_shearkappa_ia_nla(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file), "ia_mode": 'nla'}} - info["params"]["eta_IA"] = 1.7 + evaluate_one_info["params"]["eta_IA"] = 1.7 - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -114145.55021412153, atol=0.2, rtol=0.0) -def test_shearkappa_ia_perbin(request): +def test_shearkappa_ia_perbin(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file), "ia_mode": 'nla-perbin'}} - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -100164.38521295182, atol=0.2, rtol=0.0) -def test_shearkappa_hmcode(request): +def test_shearkappa_hmcode(request, evaluate_one_info, test_cosmology_params): from soliket.cross_correlation import ShearKappaLikelihood - info["likelihood"] = {"ShearKappaLikelihood": + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = cross_correlation_theory + + evaluate_one_info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, "datapath": os.path.join(request.config.rootdir, gammakappa_sacc_file)}} - info["theory"] = {"camb": {'extra_args': {'halofit_version': 'mead2020_feedback', - 'HMCode_logT_AGN': 7.8}}, - "ccl": {"external": CCL, "nonlinear": False}} + evaluate_one_info["theory"] = { + "camb": { + 'extra_args': { + 'halofit_version': 'mead2020_feedback', 'HMCode_logT_AGN': 7.8 + } + }, + "ccl": {"external": CCL, "nonlinear": False} + } - model = get_model(info) # noqa F841 + model = get_model(evaluate_one_info) loglikes, derived = model.loglikes() - assert np.isfinite(loglikes) + assert np.isclose(loglikes[0], -20679.897354035915, atol=0.2, rtol=0.0) diff --git a/soliket/tests/test_foreground.py b/soliket/tests/test_foreground.py index e8edd432..b3557614 100644 --- a/soliket/tests/test_foreground.py +++ b/soliket/tests/test_foreground.py @@ -1,208 +1,220 @@ -import numpy as np import os +import numpy as np from cobaya.model import get_model -info = {"params": { - "a_tSZ": 3.3044404448917724, - "a_kSZ": 1.6646620740058649, - "a_p": 6.912474322461401, - "beta_p": 2.077474196171309, - "a_c": 4.88617700670901, - "beta_c": 2.2030316332596014, - "a_s": 3.099214100532393, - "T_d": 9.60, - "a_gtt": 0, - "a_gte": 0, - "a_gee": 0, - "a_psee": 0, - "a_pste": 0, - "xi": 0, - }, - "likelihood": {"one": None}, - "sampler": {"evaluate": None}, - "debug": True - } +foreground_params = { + "a_tSZ": 3.3044404448917724, + "a_kSZ": 1.6646620740058649, + "a_p": 6.912474322461401, + "beta_p": 2.077474196171309, + "a_c": 4.88617700670901, + "beta_c": 2.2030316332596014, + "a_s": 3.099214100532393, + "T_d": 9.60, + "a_gtt": 0, + "a_gte": 0, + "a_gee": 0, + "a_psee": 0, + "a_pste": 0, + "xi": 0, +} def test_foreground_import(): - from soliket.foreground import Foreground # noqa F401 + from soliket.foreground import Foreground # noqa F401 -def test_foreground_model(): +def test_foreground_model(evaluate_one_info): from soliket.foreground import Foreground - info["theory"] = {"foreground": {"external": Foreground}, - } - model = get_model(info) # noqa F841 - + evaluate_one_info["params"] = foreground_params + evaluate_one_info["theory"] = { + "foreground": {"external": Foreground}, + } + model = get_model(evaluate_one_info) # noqa F841 -def test_foreground_compute(): - from soliket.foreground import Foreground +def test_foreground_compute(evaluate_one_info): from soliket.bandpass import BandPass + from soliket.foreground import Foreground - info["theory"] = { - "foreground": {"external": Foreground}, - "bandpass": {"external": BandPass}, - } - - info["foregrounds"] = { - "normalisation": {"nu_0": 150.0, - "ell_0": 3000, - "T_CMB": 2.725 - }, - - "components": {"tt": ["kSZ", "tSZ_and_CIB", - "cibp", "dust", "radio"], - "te": ["radio", "dust"], - "ee": ["radio", "dust"] - }, - } - - info["spectra"] = { - "polarizations": ["tt", "te", "ee"], - "lmin": 2, - "lmax": 9000, - "exp_ch": ["LAT_93", "LAT_145", "LAT_225"], - "eff_freqs": [93, 145, 225] - } - - nu_0 = info["foregrounds"]["normalisation"]["nu_0"] - ell_0 = info["foregrounds"]["normalisation"]["ell_0"] - ell = np.arange(info["spectra"]["lmin"], info["spectra"]["lmax"] + 1) - requested_cls = info["spectra"]["polarizations"] - components = info["foregrounds"]["components"] - exp_ch = info["spectra"]["exp_ch"] - eff_freqs = np.asarray(info["spectra"]["eff_freqs"]) - bands = {f"{expc}_s0": {'nu': [eff_freqs[iexpc]], 'bandpass': [1.]} - for iexpc, expc in enumerate(exp_ch)} - - model = get_model(info) # noqa F841 - model.add_requirements({"fg_dict": { - "requested_cls": requested_cls, - "ell": ell, - "exp_ch": exp_ch, - "bands": bands}, - }) - - model.logposterior(info['params']) # force computation of model - - lhood = model.likelihood['one'] + evaluate_one_info["params"] = foreground_params + + evaluate_one_info["theory"] = { + "foreground": {"external": Foreground}, + "bandpass": {"external": BandPass}, + } + + evaluate_one_info["foregrounds"] = { + "normalisation": {"nu_0": 150.0, "ell_0": 3000, "T_CMB": 2.725}, + "components": { + "tt": ["kSZ", "tSZ_and_CIB", "cibp", "dust", "radio"], + "te": ["radio", "dust"], + "ee": ["radio", "dust"], + }, + } + + evaluate_one_info["spectra"] = { + "polarizations": ["tt", "te", "ee"], + "lmin": 2, + "lmax": 9000, + "exp_ch": ["LAT_93", "LAT_145", "LAT_225"], + "eff_freqs": [93, 145, 225], + } + + nu_0 = evaluate_one_info["foregrounds"]["normalisation"]["nu_0"] + ell_0 = evaluate_one_info["foregrounds"]["normalisation"]["ell_0"] + ell = np.arange( + evaluate_one_info["spectra"]["lmin"], evaluate_one_info["spectra"]["lmax"] + 1 + ) + requested_cls = evaluate_one_info["spectra"]["polarizations"] + components = evaluate_one_info["foregrounds"]["components"] + exp_ch = evaluate_one_info["spectra"]["exp_ch"] + eff_freqs = np.asarray(evaluate_one_info["spectra"]["eff_freqs"]) + bands = { + f"{expc}_s0": {"nu": [eff_freqs[iexpc]], "bandpass": [1.0]} + for iexpc, expc in enumerate(exp_ch) + } + + model = get_model(evaluate_one_info) + model.add_requirements( + { + "fg_dict": { + "requested_cls": requested_cls, + "ell": ell, + "exp_ch": exp_ch, + "bands": bands, + }, + } + ) + + model.logposterior(evaluate_one_info["params"]) # force computation of model + + lhood = model.likelihood["one"] fg_model = lhood.provider.get_fg_dict() - fg_model_test = get_fg(exp_ch, eff_freqs, ell, ell_0, nu_0, requested_cls, components) + fg_model_test = get_fg( + exp_ch, eff_freqs, ell, ell_0, nu_0, requested_cls, components, evaluate_one_info + ) for k in fg_model_test.keys(): assert np.allclose(fg_model[k], fg_model_test[k]) -def get_fg(freqs, bandint_freqs, ell, ell_0, nu_0, requested_cls, components): - +def get_fg( + freqs, bandint_freqs, ell, ell_0, nu_0, requested_cls, components, evaluate_one_info +): from fgspectra import cross as fgc from fgspectra import frequency as fgf from fgspectra import power as fgp - template_path = os.path.join(os.path.dirname(os.path.abspath(fgp.__file__)), - 'data') - cibc_file = os.path.join(template_path, 'cl_cib_Choi2020.dat') + template_path = os.path.join(os.path.dirname(os.path.abspath(fgp.__file__)), "data") + cibc_file = os.path.join(template_path, "cl_cib_Choi2020.dat") ksz = fgc.FactorizedCrossSpectrum(fgf.ConstantSED(), fgp.kSZ_bat()) cibp = fgc.FactorizedCrossSpectrum(fgf.ModifiedBlackBody(), fgp.PowerLaw()) radio = fgc.FactorizedCrossSpectrum(fgf.PowerLaw(), fgp.PowerLaw()) tsz = fgc.FactorizedCrossSpectrum(fgf.ThermalSZ(), fgp.tSZ_150_bat()) - cibc = fgc.FactorizedCrossSpectrum(fgf.CIB(), - fgp.PowerSpectrumFromFile(cibc_file)) + cibc = fgc.FactorizedCrossSpectrum(fgf.CIB(), fgp.PowerSpectrumFromFile(cibc_file)) dust = fgc.FactorizedCrossSpectrum(fgf.ModifiedBlackBody(), fgp.PowerLaw()) tSZ_and_CIB = fgc.SZxCIB_Choi2020() - ell_clp = ell * (ell + 1.) - ell_0clp = ell_0 * (ell_0 + 1.) + ell_clp = ell * (ell + 1.0) + ell_0clp = ell_0 * (ell_0 + 1.0) fg_component_list = {s: components[s] for s in requested_cls} model = {} - model["tt", "kSZ"] = info["params"]["a_kSZ"] * ksz({"nu": bandint_freqs}, - {"ell": ell, - "ell_0": ell_0}) - - model["tt", "cibp"] = info["params"]["a_p"] * cibp({"nu": bandint_freqs, - "nu_0": nu_0, - "temp": info["params"]["T_d"], - "beta": info["params"]["beta_p"]}, - {"ell": ell_clp, - "ell_0": ell_0clp, - "alpha": 1}) - - model["tt", "radio"] = info["params"]["a_s"] * radio({"nu": bandint_freqs, - "nu_0": nu_0, - "beta": -0.5 - 2.}, - {"ell": ell_clp, - "ell_0": ell_0clp, - "alpha": 1}) - - model["tt", "tSZ"] = info["params"]["a_tSZ"] * tsz({"nu": bandint_freqs, - "nu_0": nu_0}, - {"ell": ell, - "ell_0": ell_0}) - - model["tt", "cibc"] = info["params"]["a_c"] * cibc({"nu": bandint_freqs, - "nu_0": nu_0, - "temp": info["params"]["T_d"], - "beta": info["params"]["beta_c"]}, - {"ell": ell, - "ell_0": ell_0}) - - model["tt", "dust"] = info["params"]["a_gtt"] * dust({"nu": bandint_freqs, - "nu_0": nu_0, - "temp": 19.6, - "beta": 1.5}, - {"ell": ell, - "ell_0": 500., - "alpha": -0.6}) - - model["tt", "tSZ_and_CIB"] = \ - tSZ_and_CIB({'kwseq': ({'nu': bandint_freqs, 'nu_0': nu_0}, - {'nu': bandint_freqs, 'nu_0': nu_0, - 'temp': info["params"]['T_d'], - 'beta': info["params"]["beta_c"]})}, - {'kwseq': ({'ell': ell, 'ell_0': ell_0, - 'amp': info["params"]['a_tSZ']}, - {'ell': ell, 'ell_0': ell_0, - 'amp': info["params"]['a_c']}, - {'ell': ell, 'ell_0': ell_0, - 'amp': - info["params"]['xi'] \ - * np.sqrt(info["params"]['a_tSZ'] * - info["params"]['a_c'])})}) - - model["ee", "radio"] = info["params"]["a_psee"] * radio({"nu": bandint_freqs, - "nu_0": nu_0, - "beta": -0.5 - 2.}, - {"ell": ell_clp, - "ell_0": ell_0clp, - "alpha": 1}) - - model["ee", "dust"] = info["params"]["a_gee"] * dust({"nu": bandint_freqs, - "nu_0": nu_0, - "temp": 19.6, - "beta": 1.5}, - {"ell": ell, - "ell_0": 500., - "alpha": -0.4}) - - model["te", "radio"] = info["params"]["a_pste"] * radio({"nu": bandint_freqs, - "nu_0": nu_0, - "beta": -0.5 - 2.}, - {"ell": ell_clp, - "ell_0": ell_0clp, - "alpha": 1}) - - model["te", "dust"] = info["params"]["a_gte"] * dust({"nu": bandint_freqs, - "nu_0": nu_0, - "temp": 19.6, - "beta": 1.5}, - {"ell": ell, - "ell_0": 500., - "alpha": -0.4}) + model["tt", "kSZ"] = evaluate_one_info["params"]["a_kSZ"] * ksz( + {"nu": bandint_freqs}, {"ell": ell, "ell_0": ell_0} + ) + + model["tt", "cibp"] = evaluate_one_info["params"]["a_p"] * cibp( + { + "nu": bandint_freqs, + "nu_0": nu_0, + "temp": evaluate_one_info["params"]["T_d"], + "beta": evaluate_one_info["params"]["beta_p"], + }, + {"ell": ell_clp, "ell_0": ell_0clp, "alpha": 1}, + ) + + model["tt", "radio"] = evaluate_one_info["params"]["a_s"] * radio( + {"nu": bandint_freqs, "nu_0": nu_0, "beta": -0.5 - 2.0}, + {"ell": ell_clp, "ell_0": ell_0clp, "alpha": 1}, + ) + + model["tt", "tSZ"] = evaluate_one_info["params"]["a_tSZ"] * tsz( + {"nu": bandint_freqs, "nu_0": nu_0}, {"ell": ell, "ell_0": ell_0} + ) + + model["tt", "cibc"] = evaluate_one_info["params"]["a_c"] * cibc( + { + "nu": bandint_freqs, + "nu_0": nu_0, + "temp": evaluate_one_info["params"]["T_d"], + "beta": evaluate_one_info["params"]["beta_c"], + }, + {"ell": ell, "ell_0": ell_0}, + ) + + model["tt", "dust"] = evaluate_one_info["params"]["a_gtt"] * dust( + {"nu": bandint_freqs, "nu_0": nu_0, "temp": 19.6, "beta": 1.5}, + {"ell": ell, "ell_0": 500.0, "alpha": -0.6}, + ) + + model["tt", "tSZ_and_CIB"] = tSZ_and_CIB( + { + "kwseq": ( + {"nu": bandint_freqs, "nu_0": nu_0}, + { + "nu": bandint_freqs, + "nu_0": nu_0, + "temp": evaluate_one_info["params"]["T_d"], + "beta": evaluate_one_info["params"]["beta_c"], + }, + ) + }, + { + "kwseq": ( + { + "ell": ell, + "ell_0": ell_0, + "amp": evaluate_one_info["params"]["a_tSZ"], + }, + {"ell": ell, "ell_0": ell_0, "amp": evaluate_one_info["params"]["a_c"]}, + { + "ell": ell, + "ell_0": ell_0, + "amp": -evaluate_one_info["params"]["xi"] + * np.sqrt( + evaluate_one_info["params"]["a_tSZ"] + * evaluate_one_info["params"]["a_c"] + ), + }, + ) + }, + ) + + model["ee", "radio"] = evaluate_one_info["params"]["a_psee"] * radio( + {"nu": bandint_freqs, "nu_0": nu_0, "beta": -0.5 - 2.0}, + {"ell": ell_clp, "ell_0": ell_0clp, "alpha": 1}, + ) + + model["ee", "dust"] = evaluate_one_info["params"]["a_gee"] * dust( + {"nu": bandint_freqs, "nu_0": nu_0, "temp": 19.6, "beta": 1.5}, + {"ell": ell, "ell_0": 500.0, "alpha": -0.4}, + ) + + model["te", "radio"] = evaluate_one_info["params"]["a_pste"] * radio( + {"nu": bandint_freqs, "nu_0": nu_0, "beta": -0.5 - 2.0}, + {"ell": ell_clp, "ell_0": ell_0clp, "alpha": 1}, + ) + + model["te", "dust"] = evaluate_one_info["params"]["a_gte"] * dust( + {"nu": bandint_freqs, "nu_0": nu_0, "temp": 19.6, "beta": 1.5}, + {"ell": ell, "ell_0": 500.0, "alpha": -0.4}, + ) fg_dict = {} for c1, f1 in enumerate(freqs): diff --git a/soliket/tests/test_gaussian.py b/soliket/tests/test_gaussian.py index 8d23cdd8..1b0517ef 100644 --- a/soliket/tests/test_gaussian.py +++ b/soliket/tests/test_gaussian.py @@ -2,7 +2,7 @@ import numpy as np from sklearn.datasets import make_spd_matrix -from soliket.gaussian import GaussianData, MultiGaussianData, CrossCov +from soliket.gaussian import CrossCov, GaussianData, MultiGaussianData def toy_data(): diff --git a/soliket/tests/test_halo_model.py b/soliket/tests/test_halo_model.py index 0896df3b..c5b1308d 100644 --- a/soliket/tests/test_halo_model.py +++ b/soliket/tests/test_halo_model.py @@ -1,69 +1,59 @@ import numpy as np - from cobaya.model import get_model -info = {"params": { - "H0": 70., - "ombh2": 0.05 * 0.7 * 0.7, - "omch2": 0.25 * 0.7 * 0.7, - "ns": 0.96, - "As": 2.e-9, - "mnu": 0.0, - "tau": 0.05 - }, - "likelihood": {"one": None}, - "sampler": {"evaluate": None}, - "debug": True - } - def test_halomodel_import(): - from soliket.halo_model import HaloModel # noqa F401 + from soliket.halo_model import HaloModel # noqa F401 def test_pyhalomodel_import(): - from soliket.halo_model import HaloModel_pyhm # noqa F401 + from soliket.halo_model import HaloModel_pyhm # noqa F401 -def test_pyhalomodel_model(): - +def test_pyhalomodel_model(evaluate_one_info, test_cosmology_params): from soliket.halo_model import HaloModel_pyhm - info["theory"] = { - "camb": {'stop_at_error': True}, - "halo_model": {"external": HaloModel_pyhm, - "stop_at_error": True} + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = { + "camb": {"stop_at_error": True}, + "halo_model": {"external": HaloModel_pyhm, "stop_at_error": True}, } - model = get_model(info) # noqa F841 - + model = get_model(evaluate_one_info) # noqa F841 -def test_pyhalomodel_compute_mm_grid(): +def test_pyhalomodel_compute_mm_grid(evaluate_one_info, test_cosmology_params): from soliket.halo_model import HaloModel_pyhm - info["theory"] = { - "camb": None, - "halo_model": {"external": HaloModel_pyhm} + evaluate_one_info["params"] = test_cosmology_params + evaluate_one_info["theory"] = { + "camb": None, + "halo_model": {"external": HaloModel_pyhm}, } - model = get_model(info) # noqa F841 - model.add_requirements({"Pk_grid": {"z": 0., "k_max": 10., - "nonlinear": False, - "vars_pairs": ('delta_tot', 'delta_tot') - }, - "Pk_mm_grid": None, - }) + model = get_model(evaluate_one_info) + model.add_requirements( + { + "Pk_grid": { + "z": 0.0, + "k_max": 10.0, + "nonlinear": False, + "vars_pairs": ("delta_tot", "delta_tot"), + }, + "Pk_mm_grid": None, + } + ) - model.logposterior(info['params']) # force computation of model + model.logposterior(evaluate_one_info["params"]) # force computation of model - lhood = model.likelihood['one'] + lhood = model.likelihood["one"] Pk_mm_hm = lhood.provider.get_Pk_mm_grid() - k, z, Pk_mm_lin = lhood.provider.get_Pk_grid(var_pair=('delta_tot', 'delta_tot'), - nonlinear=False) + k, z, Pk_mm_lin = lhood.provider.get_Pk_grid( + var_pair=("delta_tot", "delta_tot"), nonlinear=False + ) assert np.all(np.isfinite(Pk_mm_hm)) # this number derives from the Pk[m-m] # calculated in demo-basic.ipynb of the pyhalomodel repo - assert np.isclose(Pk_mm_hm[0, k > 1.e-4][0], 3273.591586683341, rtol=1.e-3) + assert np.isclose(Pk_mm_hm[0, k > 1.0e-4][0], 3836.7570936793963, rtol=1.0e-3) diff --git a/soliket/tests/test_lensing.py b/soliket/tests/test_lensing.py index 5e9e41fc..123d6c8d 100644 --- a/soliket/tests/test_lensing.py +++ b/soliket/tests/test_lensing.py @@ -1,6 +1,5 @@ import numpy as np from cobaya.model import get_model - from cobaya.tools import resolve_packages_path packages_path = resolve_packages_path() @@ -22,7 +21,7 @@ def test_lensing_import(request): - from soliket.lensing import LensingLikelihood # noqa F401 + from soliket.lensing import LensingLikelihood # noqa F401 def test_lensing_like(request): @@ -61,9 +60,10 @@ def test_lensing_ccl_limber(request): no_set_global=True, ) - from soliket.lensing import LensingLikelihood from copy import deepcopy + from soliket.lensing import LensingLikelihood + info_dict = deepcopy(info) # Neutrino mass put to 0 as far as it is not included in the ccl wrapper info_dict['params']["mnu"] = 0 diff --git a/soliket/tests/test_lensing_lite.py b/soliket/tests/test_lensing_lite.py index ace9f52e..7fde5a25 100644 --- a/soliket/tests/test_lensing_lite.py +++ b/soliket/tests/test_lensing_lite.py @@ -1,8 +1,7 @@ -import pytest import numpy as np - -from cobaya.yaml import yaml_load +import pytest from cobaya.model import get_model +from cobaya.yaml import yaml_load try: import classy # noqa F401 diff --git a/soliket/tests/test_mflike.py b/soliket/tests/test_mflike.py index 4688393e..25d58212 100644 --- a/soliket/tests/test_mflike.py +++ b/soliket/tests/test_mflike.py @@ -2,26 +2,17 @@ Make sure that this returns the same result as original mflike.MFLike from LAT_MFlike repo """ import os -import unittest -from packaging.version import Version import camb -import soliket # noqa -from soliket.mflike import TestMFLike - +import numpy as np +import pytest from cobaya.tools import resolve_packages_path +from packaging.version import Version -packages_path = resolve_packages_path() +import soliket +from soliket.mflike import TestMFLike -cosmo_params = { - "cosmomc_theta": 0.0104085, - "As": 2.0989031673191437e-09, - "ombh2": 0.02237, - "omch2": 0.1200, - "ns": 0.9649, - "Alens": 1.0, - "tau": 0.0544, -} +packages_path = resolve_packages_path() nuisance_params = { "a_tSZ": 3.3044404448917724, @@ -58,22 +49,23 @@ if Version(camb.__version__) >= Version('1.4'): - chi2s = {"tt": 545.1257, - "te": 137.4146, - "ee": 167.9850, - "tt-te-et-ee": 790.5121} + chi2s = {"tt": 544.9017, + "te": 136.6051, + "ee": 166.1897, + "tt-te-et-ee": 787.9529} else: - chi2s = {"tt": 544.9745, - "te-et": 152.6807, - "ee": 168.0953, - "tt-te-et-ee": 790.4124} + chi2s = {"tt": 544.8797, + "te-et": 151.8197, + "ee": 166.2835, + "tt-te-et-ee": 787.9843} pre = "test_data_sacc_" -class MFLikeTest(unittest.TestCase): +class Test_mflike: - def setUp(self): + @classmethod + def setup_class(cls): from cobaya.install import install install( @@ -85,17 +77,16 @@ def setUp(self): no_set_global=True, ) - - def test_mflike(self): + @pytest.mark.usefixtures("test_cosmology_params") + def test_mflike(self, test_cosmology_params): # As of now, there is not a mechanism # in soliket to ensure there is .loglike that can be called like this # w/out cobaya - camb_cosmo = cosmo_params.copy() lmax = 9000 - camb_cosmo.update({"lmax": lmax, "lens_potential_accuracy": 1}) - pars = camb.set_params(**camb_cosmo) + test_cosmology_params.update({"lmax": lmax, "lens_potential_accuracy": 1}) + pars = camb.set_params(**test_cosmology_params) results = camb.get_results(pars) powers = results.get_cmb_power_spectra(pars, CMB_unit="muK") cl_dict = {k: powers["total"][:, v] for @@ -148,9 +139,12 @@ def test_mflike(self): loglike = my_mflike.loglike(dlobs_dict) - self.assertAlmostEqual(-2 * (loglike - my_mflike.logp_const), chi2, 2) + assert np.isclose( + -2 * (loglike - my_mflike.logp_const), chi2, atol=1e-2, rtol=0.0 + ) - def test_cobaya(self): + @pytest.mark.usefixtures("test_cosmology_params") + def test_cobaya(self, test_cosmology_params): info = { "likelihood": { @@ -172,7 +166,7 @@ def test_cobaya(self): }, "theory": {"camb": {"extra_args": {"lens_potential_accuracy": 1}, "stop_at_error": True}}, - "params": cosmo_params, + "params": test_cosmology_params, "modules": packages_path, "debug": True, } @@ -185,4 +179,5 @@ def test_cobaya(self): model = get_model(info) my_mflike = model.likelihood["soliket.mflike.TestMFLike"] chi2 = -2 * (model.loglikes(nuisance_params)[0] - my_mflike.logp_const) - self.assertAlmostEqual(chi2[0], chi2s["tt-te-et-ee"], 2) + + assert np.isclose(chi2[0], chi2s["tt-te-et-ee"], atol=1e-2, rtol=0.0) diff --git a/soliket/tests/test_multi.py b/soliket/tests/test_multi.py index f39e9ab5..a00d66cb 100644 --- a/soliket/tests/test_multi.py +++ b/soliket/tests/test_multi.py @@ -1,11 +1,12 @@ import numpy as np -from soliket.tests.test_mflike import cosmo_params, nuisance_params from cobaya.tools import resolve_packages_path +from soliket.tests.test_mflike import nuisance_params + packages_path = resolve_packages_path() -def test_multi(): +def test_multi(test_cosmology_params): lensing_options = {"theory_lmax": 5000} pre = "test_data_sacc_" @@ -19,10 +20,10 @@ def test_multi(): fg_params = {"a_tSZ": {"prior": {"min": 3.0, "max": 3.6}}, "a_kSZ": {"prior": {"min": 1.4, "max": 1.8}}} - mflike_params = {**cosmo_params, **nuisance_params} + mflike_params = {**test_cosmology_params, **nuisance_params} mflike_params.update(fg_params) - lensing_params = {**cosmo_params} + lensing_params = {**test_cosmology_params} info = { "likelihood": { @@ -71,7 +72,7 @@ def test_multi(): logp_a = model.loglikes(fg_values_a, cached=False)[0].sum() logp_b = model.loglikes(fg_values_b, cached=False)[0].sum() d_logp = logp_b - logp_a - assert np.isfinite(d_logp) + assert np.isclose(d_logp, 0.0052275, rtol=1e-5) model1_logp_a = model1.loglikes(fg_values_a, cached=False)[0].sum() model2_logp_a = model2.loglikes({}, cached=False)[0].sum() @@ -83,4 +84,4 @@ def test_multi(): d_logp2 = model2_logp_b - model2_logp_a d_logp_sum = d_logp1 + d_logp2 - assert np.isclose(d_logp, d_logp_sum) + assert np.isclose(d_logp, d_logp_sum, rtol=1e-5) diff --git a/soliket/tests/test_poisson.py b/soliket/tests/test_poisson.py index 67633fa4..2cfec387 100644 --- a/soliket/tests/test_poisson.py +++ b/soliket/tests/test_poisson.py @@ -1,8 +1,9 @@ +from functools import partial + import numpy as np import pandas as pd -from functools import partial -from soliket.poisson_data import PoissonData +from soliket.poisson import PoissonData x_min = 0 x_max = 10 diff --git a/soliket/tests/test_ps.py b/soliket/tests/test_ps.py index e2754ea8..34d159f8 100644 --- a/soliket/tests/test_ps.py +++ b/soliket/tests/test_ps.py @@ -3,12 +3,9 @@ import numpy as np from sklearn.datasets import make_spd_matrix -# from scipy.stats import multivariate_normal - -from soliket.gaussian import GaussianData, CrossCov -from soliket import MultiGaussianLikelihood -from soliket import PSLikelihood +from soliket import MultiGaussianLikelihood, PSLikelihood +from soliket.gaussian import CrossCov, GaussianData from soliket.utils import get_likelihood diff --git a/soliket/tests/test_runs.py b/soliket/tests/test_runs.py index 0e21c2ea..e3cd5c70 100644 --- a/soliket/tests/test_runs.py +++ b/soliket/tests/test_runs.py @@ -1,8 +1,9 @@ import pkgutil + import pytest -from cobaya.yaml import yaml_load from cobaya.run import run from cobaya.tools import resolve_packages_path +from cobaya.yaml import yaml_load packages_path = resolve_packages_path() diff --git a/soliket/tests/test_xcorr.py b/soliket/tests/test_xcorr.py index 29256661..77df8c12 100644 --- a/soliket/tests/test_xcorr.py +++ b/soliket/tests/test_xcorr.py @@ -1,10 +1,9 @@ # pytest -k xcorr -v --pdb . -import pytest import numpy as np - -from cobaya.yaml import yaml_load +import pytest from cobaya.model import get_model +from cobaya.yaml import yaml_load def get_demo_xcorr_model(theory): diff --git a/soliket/utils.py b/soliket/utils.py index a53fb5d7..de923fb1 100644 --- a/soliket/utils.py +++ b/soliket/utils.py @@ -7,11 +7,10 @@ from importlib import import_module -from scipy.stats import binned_statistic as binnedstat import numpy as np - from cobaya.likelihood import Likelihood from cobaya.likelihoods.one import one +from scipy.stats import binned_statistic as binnedstat def binner(ls, cls, bin_edges): diff --git a/soliket/xcorr/__init__.py b/soliket/xcorr/__init__.py index 4a2c7a5d..d59314ef 100644 --- a/soliket/xcorr/__init__.py +++ b/soliket/xcorr/__init__.py @@ -1 +1,5 @@ -from .xcorr import XcorrLikelihood # noqa F401 +from .xcorr import XcorrLikelihood + +__all__ = [ + "XcorrLikelihood", +] diff --git a/soliket/xcorr/limber.py b/soliket/xcorr/limber.py index c6c83ed6..c3b18195 100644 --- a/soliket/xcorr/limber.py +++ b/soliket/xcorr/limber.py @@ -6,7 +6,8 @@ """ import numpy as np -from ..constants import C_HMPC + +from soliket.constants import C_HMPC oneover_chmpc = 1. / C_HMPC diff --git a/soliket/xcorr/xcorr.py b/soliket/xcorr/xcorr.py index 371d1734..6134119c 100644 --- a/soliket/xcorr/xcorr.py +++ b/soliket/xcorr/xcorr.py @@ -10,11 +10,11 @@ import numpy as np import sacc - from scipy.interpolate import InterpolatedUnivariateSpline as Spline -from ..gaussian import GaussianData, GaussianLikelihood -from .. import utils +from soliket import utils +from soliket.gaussian import GaussianData, GaussianLikelihood + from .limber import do_limber diff --git a/tox.ini b/tox.ini index 5f3e5c18..5369e072 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,6 @@ envlist = codestyle [testenv] - conda_env = soliket-tests.yml conda_setup_args= --override-channels @@ -47,8 +46,8 @@ extras = commands = pip freeze all: cobaya-install planck_2018_highl_plik.TTTEEE_lite_native --no-set-global - !cov: pytest -v --rootdir={toxinidir} --pyargs soliket {posargs} - cov: pytest -v --rootdir={toxinidir} --pyargs soliket --cov soliket --cov-report=xml --cov-config={toxinidir}/setup.cfg {posargs} + !cov: pytest -vv --rootdir={toxinidir} --pyargs {toxinidir}/soliket/ {posargs} + cov: pytest -vv --rootdir={toxinidir} --pyargs {toxinidir}/soliket/ --cov soliket --cov-report=xml --cov-config={toxinidir}/pyproject.toml {posargs} [testenv:codestyle] skip_install = true @@ -58,6 +57,12 @@ description = check code style, e.g. with flake8 deps = flake8 commands = flake8 +[flake8] +select = E713,E704,E703,E714,E741,E10,E11,E20,E22,E23,E25,E27,E301,E302,E304,E9, + F405,F406,F5,F6,F7,F8,E501 +max-line-length = 90 +exclude = .tox,build,cobaya_packages,test,.eggs + [testenv:docs] skip_install = true changedir = docs