{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# `isochrones`\n", "\n", "https://github.com/timothydmorton/isochrones\n", "\n", "Stellar model grid interpolation and star-property fitting" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## What?\n", "\n", "Use grids of stellar models to...\n", "\n", "- Infer physical properties of exoplanet host stars\n", "- Model potential transiting planet false positive scenarios\n", "- Characterize visual binary systems\n", "- Infer properties of star clusters\n", "\n", "...conditioned on observations (broadband photometry, spectroscopy, asteroseismology, parallax, etc.)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Why?\n", "\n", "* **Fundamental task in observational astronomy (what is this star, given these observations?)**\n", "* Reinvented probably hundreds of times with ad hoc algorithms\n", "* Lack of clarity in the literature" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Kepler-22 (Borucki et al. 2012):\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## How?\n", "\n", "Precomputed model grids (e.g. the MIST models) contain tables of observable and theoretical properties of stars as a function of various gridded parameters. These grids can be organized in different ways, e.g.\n", "\n", "- Isochrones: Grids in age and [Fe/H], each isochrone contains a range of masses*\n", "- Evolutionary Tracks: Grids in mass and [Fe/H], each track has a range of ages*\n", "\n", "**The MIST and Dartmouth grids define and use a quantity called EEP (equivalent evolutionary phase), which allows for regular gridding in the third dimension, and thus can serve as a proxy for mass (in isochrone grids) or age (in the evolutionary track grids).*" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Inference\n", "\n", "Observed properties, e.g.: \n", "\n", "$$ \\mathbf x = \\{\\bar J, \\bar H, \\bar K, \\bar \\pi\\}$$\n", "\n", "Parameters of model (single star):\n", "\n", "$$\\mathbf \\theta = \\{EEP, T, [Fe/H], d, AV \\}~~~\\mathrm{[using~isochrone~grids]} $$ \n", "or\n", "$$\\mathbf \\theta = \\{M, EEP, [Fe/H], d, AV \\}~~~\\mathrm{[using~evolution~track~grids]} $$ \n", "\n", "\n", "Incorporate uncertainties in likelihood:\n", "\n", "$$p(\\mathbf x~|~\\mathbf \\theta) \\propto \\prod ...$$ \n", "\n", "Computation of likelihood requires prediction of $x_i$ at arbitrary $\\theta$ → **Requires interpolation**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Implementation" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "-" } }, "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", " \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", "
EEPlog10_isochrone_age_yrinitial_massstar_masslog_Tefflog_glog_L[Fe/H]_init[Fe/H]HJKdm_deep
fehlog10_isochrone_age_yrEEP
-4.05.035355.00.1000000.1000003.6170113.350571-0.489734-4.0-3.907513.9023314.4469393.7187560.000688
36365.00.1028850.1028853.6180393.347798-0.472691-4.0-3.907513.8629694.4071423.6809070.000681
37375.00.1071470.1071473.6195563.343658-0.447471-4.0-3.907513.8046454.3481863.6248380.000322
38385.00.1113790.1113793.6210623.339612-0.422498-4.0-3.907513.7468574.2898243.569300-0.000029
39395.00.1155810.1155813.6225553.335660-0.397776-4.0-3.907513.6896364.2321033.514316-0.000027
\n", "
" ], "text/plain": [ " EEP log10_isochrone_age_yr initial_mass \\\n", "feh log10_isochrone_age_yr EEP \n", "-4.0 5.0 35 35 5.0 0.100000 \n", " 36 36 5.0 0.102885 \n", " 37 37 5.0 0.107147 \n", " 38 38 5.0 0.111379 \n", " 39 39 5.0 0.115581 \n", "\n", " star_mass log_Teff log_g log_L \\\n", "feh log10_isochrone_age_yr EEP \n", "-4.0 5.0 35 0.100000 3.617011 3.350571 -0.489734 \n", " 36 0.102885 3.618039 3.347798 -0.472691 \n", " 37 0.107147 3.619556 3.343658 -0.447471 \n", " 38 0.111379 3.621062 3.339612 -0.422498 \n", " 39 0.115581 3.622555 3.335660 -0.397776 \n", "\n", " [Fe/H]_init [Fe/H] H J \\\n", "feh log10_isochrone_age_yr EEP \n", "-4.0 5.0 35 -4.0 -3.90751 3.902331 4.446939 \n", " 36 -4.0 -3.90751 3.862969 4.407142 \n", " 37 -4.0 -3.90751 3.804645 4.348186 \n", " 38 -4.0 -3.90751 3.746857 4.289824 \n", " 39 -4.0 -3.90751 3.689636 4.232103 \n", "\n", " K dm_deep \n", "feh log10_isochrone_age_yr EEP \n", "-4.0 5.0 35 3.718756 0.000688 \n", " 36 3.680907 0.000681 \n", " 37 3.624838 0.000322 \n", " 38 3.569300 -0.000029 \n", " 39 3.514316 -0.000027 " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from isochrones import get_ichrone\n", "\n", "mist = get_ichrone('mist', bands='JHK') # Downloads & reorganizes appropriate data into ~/.isochrones (or $ISOCHRONES)\n", "mist.df.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Custom linear interpolation" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mist.interp" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "(15, 107, 1711, 13)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mist.interp.grid.shape # filled-in regular grid (nan-padded)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "(array([-4. , -3.5 , -3. , -2.5 , -2. , -1.75, -1.5 , -1.25, -1. ,\n", " -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 ]),\n", " array([ 5. , 5.05, 5.1 , 5.15, 5.2 , 5.25, 5.3 , 5.35, 5.4 ,\n", " 5.45, 5.5 , 5.55, 5.6 , 5.65, 5.7 , 5.75, 5.8 , 5.85,\n", " 5.9 , 5.95, 6. , 6.05, 6.1 , 6.15, 6.2 , 6.25, 6.3 ,\n", " 6.35, 6.4 , 6.45, 6.5 , 6.55, 6.6 , 6.65, 6.7 , 6.75,\n", " 6.8 , 6.85, 6.9 , 6.95, 7. , 7.05, 7.1 , 7.15, 7.2 ,\n", " 7.25, 7.3 , 7.35, 7.4 , 7.45, 7.5 , 7.55, 7.6 , 7.65,\n", " 7.7 , 7.75, 7.8 , 7.85, 7.9 , 7.95, 8. , 8.05, 8.1 ,\n", " 8.15, 8.2 , 8.25, 8.3 , 8.35, 8.4 , 8.45, 8.5 , 8.55,\n", " 8.6 , 8.65, 8.7 , 8.75, 8.8 , 8.85, 8.9 , 8.95, 9. ,\n", " 9.05, 9.1 , 9.15, 9.2 , 9.25, 9.3 , 9.35, 9.4 , 9.45,\n", " 9.5 , 9.55, 9.6 , 9.65, 9.7 , 9.75, 9.8 , 9.85, 9.9 ,\n", " 9.95, 10. , 10.05, 10.1 , 10.15, 10.2 , 10.25, 10.3 ]),\n", " array([0.000e+00, 1.000e+00, 2.000e+00, ..., 1.708e+03, 1.709e+03,\n", " 1.710e+03]))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mist.interp.index_columns # feh, log(age), eep" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "4.675354869524186" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pars = [0.01, 9.54, 300.3]\n", "mist.interp(pars, 'log_g')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Comparison with SciPy" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "from scipy.interpolate import RegularGridInterpolator\n", "\n", "# Construct SciPy regular grid interpolator for logg\n", "points = mist.interp.index_columns\n", "values = mist.interp.grid[:, :, :, 5] # logg is column 5\n", "fn = RegularGridInterpolator(points, values)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "array([4.67535487])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pars = [0.01, 9.54, 300.3]\n", "fn(pars)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1000 loops, best of 3: 233 µs per loop\n" ] } ], "source": [ "%timeit fn(pars)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "4.675354869524186" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mist.interp(pars, 'log_g')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The slowest run took 7.54 times longer than the fastest. This could mean that an intermediate result is being cached.\n", "100000 loops, best of 3: 3.14 µs per loop\n" ] } ], "source": [ "# convenience function for mist.interp(pars, 'log_g'), with different args\n", "%timeit mist.logg(*pars[::-1]) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Slightly slower than SciPy for vectorized calculations, however" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The slowest run took 38.58 times longer than the fastest. This could mean that an intermediate result is being cached.\n", "100 loops, best of 3: 4.01 ms per loop\n" ] } ], "source": [ "import numpy as np\n", "\n", "N = 10000\n", "%timeit mist.interp([np.ones(N)*0.01, np.ones(N)*9.54, np.ones(N)*300.3], 'log_g')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The slowest run took 4.49 times longer than the fastest. This could mean that an intermediate result is being cached.\n", "100 loops, best of 3: 2.84 ms per loop\n" ] } ], "source": [ "%timeit fn(np.array([np.ones(N)*0.01, np.ones(N)*9.54, np.ones(N)*300.3]).T)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## `isochrones` in action" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " ╚═ J=(10.52, 0.02) @(0.00, 0 [99.00])\n", " ╚═ H=(10.21, 0.02) @(0.00, 0 [99.00])\n", " ╚═ K=(10.15, 0.02) @(0.00, 0 [99.00])\n", " ╚═ 0_0, Teff=(5642, 50.0), feh=(-0.27, 0.08), logg=(4.443, 0.028)\n" ] } ], "source": [ "from isochrones import StarModel\n", "from isochrones import get_ichrone\n", "\n", "mist = get_ichrone('mist', bands='JHK')\n", "\n", "props = dict(Teff=(5642, 50.0), feh=(-0.27, 0.08), logg=(4.443, 0.028), \n", " J=(10.523, 0.02), H=(10.211, 0.02), K=(10.152, 0.02))\n", "\n", "# Single star model\n", "mod = StarModel(mist, **props)\n", "mod.print_ascii()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['eep_0_0', 'age_0', 'feh_0', 'distance_0', 'AV_0']" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod.param_names" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "-18017.52528798864" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = [300, 9.5, 0.1, 300, 0.1]\n", "mod.lnpost(p)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000 loops, best of 3: 69 µs per loop\n" ] } ], "source": [ "%timeit mod.lnpost(p)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "mod.fit(basename='kep22') # Defaults to using MultiNest if available" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "-" } }, "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", " \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", " \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", "
H_mag_0_0J_mag_0_0K_mag_0_0Teff_0_0age_0_0eep_0_0logL_0_0logg_0_0mass_0_0radius_0_0age_0feh_0distance_0AV_0H_magJ_magK_maglnprob
count5579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.0000005579.000000
mean10.08611810.52152910.0192205524.68223010.010334376.499030-0.2077554.4714290.8016750.86228710.010334-0.257740181.9155140.46560210.08611810.52152910.019220-28.092010
std0.0515320.0450430.06133069.6704160.21265524.9093150.0565610.0516700.0372570.0442980.2126550.05531711.9413280.2875420.0515320.0450430.0613301.529346
min9.92584810.3745959.8331695302.6576967.871956218.690774-0.4065774.2319800.7149260.7379857.871956-0.469178147.5232520.0000199.92584810.3745959.833169-38.173356
25%10.05020910.4893269.9751105475.9475509.903934357.461768-0.2449264.4305330.7703040.8314569.903934-0.295358173.5487070.21024210.05020910.4893269.975110-28.906821
50%10.08536410.52005910.0204645520.59627310.005578374.654613-0.2051874.4779090.8029640.86317210.005578-0.256505181.5664800.44973210.08536410.52005910.020464-27.817836
75%10.12150710.55178910.0631305571.16698010.181017399.478333-0.1696694.5082760.8314190.88871910.181017-0.219341189.8795760.71441410.12150710.55178910.063130-26.974134
max10.30466510.71480610.2538325791.24361410.299848436.8667050.0517474.6077770.9082941.13130810.299848-0.065353241.2778210.99955810.30466510.71480610.253832-25.453424
\n", "
" ], "text/plain": [ " H_mag_0_0 J_mag_0_0 K_mag_0_0 Teff_0_0 age_0_0 \\\n", "count 5579.000000 5579.000000 5579.000000 5579.000000 5579.000000 \n", "mean 10.086118 10.521529 10.019220 5524.682230 10.010334 \n", "std 0.051532 0.045043 0.061330 69.670416 0.212655 \n", "min 9.925848 10.374595 9.833169 5302.657696 7.871956 \n", "25% 10.050209 10.489326 9.975110 5475.947550 9.903934 \n", "50% 10.085364 10.520059 10.020464 5520.596273 10.005578 \n", "75% 10.121507 10.551789 10.063130 5571.166980 10.181017 \n", "max 10.304665 10.714806 10.253832 5791.243614 10.299848 \n", "\n", " eep_0_0 logL_0_0 logg_0_0 mass_0_0 radius_0_0 \\\n", "count 5579.000000 5579.000000 5579.000000 5579.000000 5579.000000 \n", "mean 376.499030 -0.207755 4.471429 0.801675 0.862287 \n", "std 24.909315 0.056561 0.051670 0.037257 0.044298 \n", "min 218.690774 -0.406577 4.231980 0.714926 0.737985 \n", "25% 357.461768 -0.244926 4.430533 0.770304 0.831456 \n", "50% 374.654613 -0.205187 4.477909 0.802964 0.863172 \n", "75% 399.478333 -0.169669 4.508276 0.831419 0.888719 \n", "max 436.866705 0.051747 4.607777 0.908294 1.131308 \n", "\n", " age_0 feh_0 distance_0 AV_0 H_mag \\\n", "count 5579.000000 5579.000000 5579.000000 5579.000000 5579.000000 \n", "mean 10.010334 -0.257740 181.915514 0.465602 10.086118 \n", "std 0.212655 0.055317 11.941328 0.287542 0.051532 \n", "min 7.871956 -0.469178 147.523252 0.000019 9.925848 \n", "25% 9.903934 -0.295358 173.548707 0.210242 10.050209 \n", "50% 10.005578 -0.256505 181.566480 0.449732 10.085364 \n", "75% 10.181017 -0.219341 189.879576 0.714414 10.121507 \n", "max 10.299848 -0.065353 241.277821 0.999558 10.304665 \n", "\n", " J_mag K_mag lnprob \n", "count 5579.000000 5579.000000 5579.000000 \n", "mean 10.521529 10.019220 -28.092010 \n", "std 0.045043 0.061330 1.529346 \n", "min 10.374595 9.833169 -38.173356 \n", "25% 10.489326 9.975110 -28.906821 \n", "50% 10.520059 10.020464 -27.817836 \n", "75% 10.551789 10.063130 -26.974134 \n", "max 10.714806 10.253832 -25.453424 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod.samples.describe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Generate a corner plot with `mod.corner_physical()`:\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Binary star model (unresolved)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " ╚═ J=(10.52, 0.02) @(0.00, 0 [99.00])\n", " ╚═ H=(10.21, 0.02) @(0.00, 0 [99.00])\n", " ╚═ K=(10.15, 0.02) @(0.00, 0 [99.00])\n", " ╠═ 0_0, Teff=(5642, 50.0), feh=(-0.27, 0.08), logg=(4.443, 0.028)\n", " ╚═ 0_1\n" ] } ], "source": [ "mod2 = StarModel(mist, N=2, **props)\n", "mod2.print_ascii()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['eep_0_0', 'eep_0_1', 'age_0', 'feh_0', 'distance_0', 'AV_0']" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod2.param_names" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "→ Can also do triple systems, resolved binaries, partially resolved binaries, etc." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting demo_star/star.ini\n" ] } ], "source": [ "%%file demo_star/star.ini\n", "\n", "Teff = 4135, 98.0\n", "feh = -0.46, 0.16\n", "logg = 4.711, 0.1\n", "\n", "[twomass]\n", "J = 13.513, 0.02\n", "H = 12.845, 0.02\n", "K = 12.693, 0.02\n", "\n", "[NIRC2]\n", "resolution = 0.1\n", "separation_1 = 0.6\n", "PA_1 = 100\n", "K_1 = 3.66, 0.05\n", "H_1 = 3.77, 0.03\n", "J_1 = 3.74, 0.05\n", "separation_2 = 1.2\n", "PA_2 = 200\n", "K_2 = 5.1, 0.1\n", "H_2 = 5.2, 0.1\n", "J_2 = 5.15, 0.1\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " ╚═ twomass H=(12.85, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass J=(13.51, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass K=(12.69, 0.02) @(0.00, 0 [4.00])\n", " ╠═ NIRC2 delta-H=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ 0_0, Teff=[4135.0, 98.0], feh=[-0.46, 0.16], logg=[4.711, 0.1]\n", " ╠═ NIRC2 delta-H=(3.77, 0.03) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(3.74, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(3.66, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ 0_1\n", " ╚═ NIRC2 delta-H=(5.20, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-J=(5.15, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-K=(5.10, 0.10) @(1.20, 200 [0.10])\n", " ╚═ 0_2\n" ] } ], "source": [ "mod3 = StarModel.from_ini(mist, 'demo_star')\n", "mod3.print_ascii()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "['eep_0_0', 'eep_0_1', 'eep_0_2', 'age_0', 'feh_0', 'distance_0', 'AV_0']" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod3.param_names" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " ╚═ twomass H=(12.85, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass J=(13.51, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass K=(12.69, 0.02) @(0.00, 0 [4.00])\n", " ╠═ NIRC2 delta-H=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╠═ 0_0, Teff=[4135.0, 98.0], feh=[-0.46, 0.16], logg=[4.711, 0.1]\n", " ║ ╚═ 0_1\n", " ╠═ NIRC2 delta-H=(3.77, 0.03) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(3.74, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(3.66, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ 0_2\n", " ╚═ NIRC2 delta-H=(5.20, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-J=(5.15, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-K=(5.10, 0.10) @(1.20, 200 [0.10])\n", " ╚═ 0_3\n" ] } ], "source": [ "mod4 = StarModel.from_ini(mist, 'demo_star', N=[2,1,1])\n", "mod4.print_ascii()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['eep_0_0',\n", " 'eep_0_1',\n", " 'eep_0_2',\n", " 'eep_0_3',\n", " 'age_0',\n", " 'feh_0',\n", " 'distance_0',\n", " 'AV_0']" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod4.param_names" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " ╚═ twomass H=(12.85, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass J=(13.51, 0.02) @(0.00, 0 [4.00])\n", " ╚═ twomass K=(12.69, 0.02) @(0.00, 0 [4.00])\n", " ╠═ NIRC2 delta-H=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(0.00, 0.01) @(0.00, 0 [0.10])\n", " ║ ╠═ 0_0, Teff=[4135.0, 98.0], feh=[-0.46, 0.16], logg=[4.711, 0.1]\n", " ║ ╚═ 0_1\n", " ╠═ NIRC2 delta-H=(3.77, 0.03) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-J=(3.74, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ NIRC2 delta-K=(3.66, 0.05) @(0.60, 100 [0.10])\n", " ║ ╚═ 1_0\n", " ╚═ NIRC2 delta-H=(5.20, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-J=(5.15, 0.10) @(1.20, 200 [0.10])\n", " ╚═ NIRC2 delta-K=(5.10, 0.10) @(1.20, 200 [0.10])\n", " ╚═ 1_1\n" ] } ], "source": [ "mod5 = StarModel.from_ini(mist, 'demo_star', N=[2,1,1], index=[0,1,1])\n", "mod5.print_ascii()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['eep_0_0',\n", " 'eep_0_1',\n", " 'age_0',\n", " 'feh_0',\n", " 'distance_0',\n", " 'AV_0',\n", " 'eep_1_0',\n", " 'eep_1_1',\n", " 'age_1',\n", " 'feh_1',\n", " 'distance_1',\n", " 'AV_1']" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod5.param_names" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Validating Transiting Exoplanets" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Morton et al. (2016)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Morton et al. (2016)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " \n", "Morton et al. (2016)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Fitting Clusters (new/in progress)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Simulate observations of a cluster" ] }, { "cell_type": "code", "execution_count": 28, "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", " \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", "
g_magi_magr_magis_binarydistancemass_primass_seceep_prieep_secg_mag_uncr_mag_unci_mag_uncparallaxparallax_unc
011.10826011.21878011.134044False506.9309331.5224920.000000330.5760730.0000000.010.010.011.9726550.2
112.05586611.74028911.802680True497.9355721.1544921.101586310.891508306.9564180.010.010.012.0082920.2
210.94948711.10711610.986414False492.1068521.5455980.000000331.8522030.0000000.010.010.012.0320790.2
311.71760311.59440311.595706True496.1801441.3443260.779982320.758217274.4939430.010.010.012.0153970.2
49.7169409.9703379.830586True496.5568381.7229751.682122341.327839339.2918120.010.010.012.0138680.2
\n", "
" ], "text/plain": [ " g_mag i_mag r_mag is_binary distance mass_pri mass_sec \\\n", "0 11.108260 11.218780 11.134044 False 506.930933 1.522492 0.000000 \n", "1 12.055866 11.740289 11.802680 True 497.935572 1.154492 1.101586 \n", "2 10.949487 11.107116 10.986414 False 492.106852 1.545598 0.000000 \n", "3 11.717603 11.594403 11.595706 True 496.180144 1.344326 0.779982 \n", "4 9.716940 9.970337 9.830586 True 496.556838 1.722975 1.682122 \n", "\n", " eep_pri eep_sec g_mag_unc r_mag_unc i_mag_unc parallax \\\n", "0 330.576073 0.000000 0.01 0.01 0.01 1.972655 \n", "1 310.891508 306.956418 0.01 0.01 0.01 2.008292 \n", "2 331.852203 0.000000 0.01 0.01 0.01 2.032079 \n", "3 320.758217 274.493943 0.01 0.01 0.01 2.015397 \n", "4 341.327839 339.291812 0.01 0.01 0.01 2.013868 \n", "\n", " parallax_unc \n", "0 0.2 \n", "1 0.2 \n", "2 0.2 \n", "3 0.2 \n", "4 0.2 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from isochrones import get_ichrone\n", "from isochrones.cluster import SimulatedCluster\n", "\n", "mist = get_ichrone('mist')\n", "\n", "N = 50\n", "cluster_pars = [8.84, -0.2, 500, 0.03, -3, 0.3, 0.3]\n", "stars = SimulatedCluster(N, *cluster_pars, bands='gri', mass_range=(1, 2.5), phot_unc=0.01)\n", "stars.df.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Make a model" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "['age', 'feh', 'distance', 'AV', 'alpha', 'gamma', 'fB']" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from isochrones.cluster import StarClusterModel\n", "model = StarClusterModel(mist, stars, eep_bounds=(200, 700), minq=0.5)\n", "model.param_names" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ p(M_1) \\propto M_1^\\alpha;~~ p(q = M_2/M_1) \\propto q^\\gamma$$" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "isinstance(model, StarModel)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "-681.5029030315609" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.lnpost(cluster_pars)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 loop, best of 3: 617 ms per loop\n" ] } ], "source": [ "%timeit model.lnpost(cluster_pars)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "→ Yikes! What's going on here?" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", " \"\\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) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };\n", "\n", " var js_urls = [];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " /* BEGIN bokeh.min.js */\n", " /*!\n", " * Copyright (c) 2012, Anaconda, Inc.\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(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(148),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\"Model '\"+t+\"' does not exist. This could be due to a widget\\n or a custom model not being registered before first usage.\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\"Model '\"+n+\"' was already registered\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(326),a=t(14),l=t(50),h=t(269),c=t(270),u=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",o.DEFAULT_SESSION_ID=\"default\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new c.Receiver,a.logger.debug(\"Creating websocket \"+this._number+\" to '\"+this.url+\"' session '\"+this.id+\"'\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\"Cannot connect() a closed ClientConnection\"));if(null!=this.socket)return s.Promise.reject(new Error(\"Already connected\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\"?bokeh-protocol-version=1.0&bokeh-session-id=\"+this.id;return null!=this.args_string&&0=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return tthis.x1&&(t=this.x1),ethis.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\"function\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,c=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return ia[e][0]&&t\"'`])/g,function(t){switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}})},i.use_strict=function(t){return\"'use strict';\\n\"+t}},function(t,e,i){i.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\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(385),n=t(357),o=t(386),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\"%d\";case!(.1\");if(\"SCRIPT\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\"bk-root\",n.inject_css=function(t){var e=r.link({href:t,rel:\"stylesheet\",type:\"text/css\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(50),f=t(14),r=t(25),v=t(38),m=t(44),g=t(55),y=t(54),b=t(51),n=t(55);i.add_document_standalone=n.add_document_standalone;var o=t(54);i.add_document_from_session=o.add_document_from_session;var s=t(53);i.embed_items_notebook=s.embed_items_notebook;var a=t(51);i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_items=function(t,e,i,n){r.defer(function(){return function(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;athis.sleft&&tthis.stop&&el||(_[r].push(c[d]),_[o].push(0));for(var d=0,f=u.length;dl||(p[r].push(u[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],c)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\"vertical\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(58);i.Annotation=n.Annotation;var r=t(59);i.Arrow=r.Arrow;var o=t(60);i.ArrowHead=o.ArrowHead;var s=t(60);i.OpenHead=s.OpenHead;var a=t(60);i.NormalHead=a.NormalHead;var l=t(60);i.TeeHead=l.TeeHead;var h=t(60);i.VeeHead=h.VeeHead;var c=t(61);i.Band=c.Band;var u=t(62);i.BoxAnnotation=u.BoxAnnotation;var _=t(63);i.ColorBar=_.ColorBar;var p=t(65);i.Label=p.Label;var d=t(66);i.LabelSet=d.LabelSet;var f=t(67);i.Legend=f.Legend;var v=t(68);i.LegendItem=v.LegendItem;var m=t(69);i.PolyAnnotation=m.PolyAnnotation;var g=t(70);i.Slope=g.Slope;var y=t(71);i.Span=y.Span;var b=t(72);i.TextAnnotation=b.TextAnnotation;var x=t(73);i.Title=x.Title;var w=t(74);i.ToolbarPanel=w.ToolbarPanel;var k=t(75);i.Tooltip=k.Tooltip;var S=t(76);i.Whisker=S.Whisker},function(t,e,i){var n=t(387),r=t(72),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\"css\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\"rad\":t=-this.model.angle;break;case\"deg\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\"unreachable code\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\"data\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\"data\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\"Label\",this.prototype.default_view=s,this.mixins([\"text\",\"line:border_\",\"fill:background_\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\"data\"],y:[o.Number],y_units:[o.SpatialUnits,\"data\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\"rad\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\"default\"],y_range_name:[o.String,\"default\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(387),r=t(72),o=t(190),c=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(var e=0,i=this._text.length;eh(a-l)?(n=u(c(o,s),a),r=c(u(o,s),l)):(n=c(o,s),r=u(o,s)),[n,r]}throw new Error(\"user bounds '\"+e+\"' not understood\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"rule_coords\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"tick_coords\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],c=[[],[]],u=[i.min,i.max],_=u[0],p=u[1],d=0;dp||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;dp||(c[t].push(l[d]),c[e].push(this.loc));return{major:h,minor:c}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"loc\",{get:function(){if(null!=this.fixed_location){if(C.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\"unexpected\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\"left\":case\"below\":return n.start;case\"right\":case\"above\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(387),r=t(77),o=t(198),s=t(103),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,c=[[],[]],u=0,_=0;_=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var c=0,u=t.length;ct.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;st.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.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}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\"edge\"),void 0===r&&(r=!1);var a=e.length;if(\"center\"==n){var l=g.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h=a.length?l:a[n],s[t]=r},h=this,i=0,n=o.length;il.end;if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\"auto\"!=l.bounds){var _=l.bounds,p=_[0],d=_[1],f=Math.abs(h.end-h.start);c?(null!=p&&p>=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p+f)),null!=d&&d<=h.start&&(r=!0,h.start=d,(e||i)&&(h.end=d-f))):(null!=p&&p>=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p+f)),null!=d&&d<=h.end&&(r=!0,h.end=d,(e||i)&&(h.start=d-f)))}}if(!(i&&r&&n))for(var v=0,m=t;vn.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof C.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],c=l[1],u=l[2],_=l[3];h+u==this.canvas._width.value&&(u-=1),c+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,c,u,_)}s.restore(),this._paint_levels(s,[\"image\",\"underlay\",\"glyph\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\"annotation\"],l,!0),this._paint_levels(s,[\"overlay\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;ou&&(\"start\"==this.follow?r=n+c*u:\"end\"==this.follow&&(n=r-c*u)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),c=h[0],u=h[1];null!=this._initial_start&&(\"log\"==this.scale_hint?0this.end},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(387),r=t(179),P=t(126),o=t(189),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(171),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},f={fill:{fill_alpha:.2},line:{}},h=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return n.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\"fill\"),r=N.includes(i.mixins,\"line\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\"auto\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\"auto\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var c=e(d);this.decimated_glyph=this.build_glyph_view(c),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(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=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,e),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 r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);ov?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;xi?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;ar.end)&&(this.v_axis_only=!0),(io.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.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})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,c=e-this.last_dy,u=l.bbox.h_range,_=u.start-h,p=u.end-h,d=l.bbox.v_range,f=d.start-c,v=d.end-c,m=this.model.dimensions;\"width\"!=m&&\"both\"!=m||this.v_axis_only?(i=u.start,n=u.end,r=0):(i=_,n=p,r=-h),\"height\"!=m&&\"both\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-c),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],T=k[1];b[x]={start:S,end:T}}var C={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],T=E[1];C[A]={start:S,end:T}}this.pan_info={xrs:b,yrs:C,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Pan\",e.event_type=\"pan\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\"PanTool\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\"both\"]})},Object.defineProperty(t.prototype,\"tooltip\",{get:function(){return this._get_dim_tooltip(\"Pan\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"icon\",{get:function(){switch(this.dimensions){case\"both\":return\"bk-tool-icon-pan\";case\"width\":return\"bk-tool-icon-xpan\";case\"height\":return\"bk-tool-icon-ypan\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(387),n=t(243),r=t(69),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.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()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\"poly\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var c=function(){return new r.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]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Poly Select\",e.icon=\"bk-tool-icon-polygon-select\",e.event_type=\"tap\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\"PolySelectTool\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,c]})},t}(n.SelectTool);(i.PolySelectTool=u).initClass()},function(t,e,i){var n=t(387),_=t(62),r=t(14),o=t(15),s=t(238);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(ar.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.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_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,c=s.bottom,u=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,u)?this.side=1:p(t.sx,l,r,u)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,c,o,u)&&(this.side=4),0==this.side&&p(t.sy,h,o,u)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var c=function(){return new _.BoxAnnotation({level:\"overlay\",render_mode:\"css\",fill_color:\"lightgrey\",fill_alpha:{value:.5},line_color:{value:\"black\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Range Tool\",e.icon=\"bk-tool-icon-range\",e.event_type=\"pan\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\"RangeTool\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,c]})},t.prototype.initialize=function(){i.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},t.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)},t}(s.GestureTool);(i.RangeTool=u).initClass()},function(t,e,i){var y=t(387),n=t(238),o=t(176),r=t(258),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\"computed_renderers\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;ee.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.xthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(ethis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(ethis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\"after\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\"before\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\"center\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(387),r=t(57),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\"Transform\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\"function\"!=typeof WeakMap&&t(337),\"function\"!=typeof Set&&t(327),Number.isInteger||(Number.isInteger=function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\"can't convert \"+this+\" to object\");var e=\"\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\"repeat count must be non-negative\");if(t==1/0)throw new RangeError(\"repeat count must be less than infinity\");if(t=Math.floor(t),0==e.length||0==t)return\"\";if(e.length*t>=1<<28)throw new RangeError(\"repeat count must not overflow maximum string size\");for(var i=\"\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\"function\"==typeof t||\"[object Function]\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:u,sweepFlag:c,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\"clipPath\"),i=l(this.__ids),n=this.__createElement(\"g\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\"id\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\"clip-path\",f(\"url(#{id})\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,c,u,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\"translate(\"+t+\", \"+e+\")\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):u(this,\"__redo__\",l(\"c\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var c=t^e,u=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(c|(i=l^l>>1));return((u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1))<<1|(c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(n>>4!=3)throw new Error(\"Got v\"+(n>>4)+\" data when expected v3.\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,tthis.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\"Added \"+(this._pos>>2)+\" items when expected \"+this.numItems+\".\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r>1],a=r-1,l=o+1;;){for(;e[++a]s;);if(l<=a)break;T(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),c=o;c>2];ithis._boxes[c+2]||e>this._boxes[c+3]||(o<4*this.numItems?(void 0===r||r(u))&&l.push(u):(a.push(u),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\"object\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\n", " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", " * http://hammerjs.github.io/\n", " *\n", " * Copyright (c) 2016 Jorik Tangelder;\n", " * Licensed under the MIT license */\n", " !function(o,a,t,x){\"use strict\";var s,l=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],e=a.createElement(\"div\"),i=\"function\",h=Math.round,w=Math.abs,k=Date.now;function c(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(u(t,i[e],i),!0)}function u(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;ie[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;ow(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):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,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(Dw(c.y)?c.x:c.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\"mousedown\",st=\"mousemove mouseup\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\"pen\",4:\"mouse\",5:\"kinect\"},ct=\"pointerdown\",ut=\"pointermove pointerup pointercancel\";function _t(){this.evEl=ct,this.evWin=ut,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ct=\"MSPointerDown\",ut=\"MSPointerMove MSPointerUp MSPointerCancel\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=C(e,t.pointerId,\"pointerId\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\"touchstart\",this.evWin=\"touchstart touchmove touchend touchcancel\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\"identifier\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\"touchstart touchmove touchend touchcancel\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;re.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},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)}}),d(It,Ot,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\"auto\"]},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&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=c(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance=\";case n.Eq:return\"==\"}}()+\" 0\"},Object.defineProperty(t.prototype,\"id\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"expression\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"op\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"strength\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(353),c=t(356),u=t(347),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=u.createMap(c.Variable.Compare),r=0,o=t.length;r>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o=Math.pow(10,12)&&!z||O?(C+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N=Math.pow(10,9)&&!z||M?(C+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N=Math.pow(10,6)&&!z||E?(C+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N=Math.pow(10,3)&&!z||A)&&(C+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,c,u,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),u=a*(1-e)*l,_=s*l,v=0;v++,c=i/Math.sqrt(1-e*_*_),h=e*c/(c+(y=r*u+w*_-c*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*u-(p=a*(1-h)*l)*_,u=p,_=d,1e-24>>0).toString(8);break;case\"s\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\"t\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?c=\"\":(c=h?\"+\":\"-\",i=i.toString().replace(d.sign,\"\")),a=o[4]?\"0\"===o[4]?\"0\":o[4].charAt(1):\" \",l=o[6]-(c+i).length,s=o[6]&&0=u[n][e]&&u[n][u[n].clock]>o[u[n].clock]&&(s=u[n])}return s&&((a=/^(.*)\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\"UTC\"==t.zone?e:(t.entry=r(t,\"posix\",e),e+t.entry.offset+t.entry.save)}function u(t,e){return\"UTC\"==t.zone?e:(t.entry=i=r(t,\"wallclock\",e),0<(n=e-i.wallclock)&&ns[0]&&e[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\"bk-bs-active\");var e=h.ul({class:[\"bk-bs-nav\",\"bk-bs-nav-tabs\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\"bk-bs-tab-pane\"})});s[this.model.active].classList.add(\"bk-bs-active\");var n=h.div({class:\"bk-bs-tab-content\"},s);this.el.appendChild(n),e.addEventListener(\"click\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\"bk-bs-active\"),s[n].classList.remove(\"bk-bs-active\"),o[i].classList.add(\"bk-bs-active\"),s[i].classList.add(\"bk-bs-active\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\".\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\".\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\"margin\",\"limit\",\"padding\",\"range\",\"animate\",\"snap\",\"step\",\"format\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\"update\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\"update\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\"aria-valuemin\",n.toFixed(1)),e.children[0].setAttribute(\"aria-valuemax\",i.toFixed(1)),e.children[0].setAttribute(\"aria-valuenow\",r.toFixed(1)),e.children[0].setAttribute(\"aria-valuetext\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\"noUiSlider (\"+$+\"): create requires a single element, got: \"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\"object\"==typeof n?e.exports=i():window.noUiSlider=i()},428:function(i,r,o){\n", " /*!\n", " * Pikaday\n", " *\n", " * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n", " */\n", " !function(t,e){\"use strict\";var n;if(\"object\"==typeof o){try{n=i(\"moment\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\"use strict\";var o=\"function\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\"on\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\"on\"+e,n)},l=function(t,e){return-1!==(\" \"+t.className+\" \").indexOf(\" \"+e+\" \")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\"object\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\"HTMLEvents\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\"on\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11';e.push(\"is-outside-current-month\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\"is-selection-disabled\")}return t.isDisabled&&e.push(\"is-disabled\"),t.isToday&&e.push(\"is-today\"),t.isSelected&&(e.push(\"is-selected\"),n=\"true\"),t.hasEvent&&e.push(\"has-event\"),t.isInRange&&e.push(\"is-inrange\"),t.isStartRange&&e.push(\"is-startrange\"),t.isEndRange&&e.push(\"is-endrange\"),'\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='
',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('\");for(u='
'+d.i18n.months[i]+'
\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s=d.minYear&&l.push('\");return c='
'+n+d.yearSuffix+'
\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='\"),e===t._o.numberOfMonths-1&&(f+='\"),f+=\"
\"},Y=function(t,e,n){return''+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\"\"),e=0;e<7;e++)n.push('\");return\"\"+(t.isRTL?n.reverse():n).join(\"\")+\"\"}(t)+\"\"+e.join(\"\")+\"
'+p(t,e,!0)+\"
\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\"is-disabled\")||(!l(e,\"pika-button\")||l(e,\"is-empty\")||l(e.parentNode,\"is-disabled\")?l(e,\"pika-prev\")?i.prevMonth():l(e,\"pika-next\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\"data-pika-year\"),e.getAttribute(\"data-pika-month\"),e.getAttribute(\"data-pika-day\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\"pika-select\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\"pika-select-month\")?i.gotoMonth(e.value):l(e,\"pika-select-year\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\"subtract\",1);break;case 38:i.adjustDate(\"subtract\",7);break;case 39:i.adjustDate(\"add\",1);break;case 40:i.adjustDate(\"add\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\"pika-single\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\"pika-select\")&&(e.onchange||(e.setAttribute(\"onchange\",\"return;\"),a(e,\"change\",i._onChange)));do{if(l(n,\"pika-single\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\"div\"),i.el.className=\"pika-single\"+(r.isRTL?\" is-rtl\":\"\")+(r.theme?\" \"+r.theme:\"\"),a(i.el,\"mousedown\",i._onMouseDown,!0),a(i.el,\"touchend\",i._onMouseDown,!0),a(i.el,\"change\",i._onChange),r.keyboardInput&&a(c,\"keydown\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\"change\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\" is-bound\",a(r.trigger,\"click\",i._onInputClick),a(r.trigger,\"focus\",i._onInputFocus),a(r.trigger,\"blur\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\"string\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\"function\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\"pika-title-\"+Math.random().toString(36).replace(/[^a-z]+/g,\"\").substr(0,2);for(var l=0;l'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\"\";this.el.innerHTML=a,n.bound&&\"hidden\"!==n.field.type&&u(function(){n.trigger.focus()},1),\"function\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\"aria-label\",\"Use the arrow keys to pick a date\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\"absolute\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\"function\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&ri.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\"\")),a.push((v=l,g=i.isRTL,''+(g?v.reverse():v).join(\"\")+\"\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\"is-hidden\",t.className=(n=(\" \"+t.className+\" \").replace(\" \"+e+\" \",\" \")).trim?n.trim():n.replace(/^\\s+|\\s+$/g,\"\"),this._o.bound&&(a(c,\"click\",this._onClick),this.adjustPosition()),\"function\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\"click\",this._onClick),this.el.style.position=\"static\",this.el.style.left=\"auto\",this.el.style.top=\"auto\",t=this.el,l(t,e=\"is-hidden\")||(t.className=\"\"===t.className?e:t.className+\" \"+e),this._v=!1,void 0!==n&&\"function\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\"mousedown\",this._onMouseDown,!0),i(this.el,\"touchend\",this._onMouseDown,!0),i(this.el,\"change\",this._onChange),t.keyboardInput&&i(c,\"keydown\",this._onKeyChange),t.field&&(i(t.field,\"change\",this._onInputChange),t.bound&&(i(t.trigger,\"click\",this._onInputClick),i(t.trigger,\"focus\",this._onInputFocus),i(t.trigger,\"blur\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\n", " //# sourceMappingURL=bokeh-widgets.min.js.map\n", " /* END bokeh-widgets.min.js */\n", " },\n", " \n", " function(Bokeh) {\n", " /* BEGIN bokeh-tables.min.js */\n", " /*!\n", " * Copyright (c) 2012, Anaconda, Inc.\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(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\"models/widgets/tables/cell_editors\":429,\"models/widgets/tables/cell_formatters\":430,\"models/widgets/tables/data_table\":431,\"models/widgets/tables/index\":432,\"models/widgets/tables/main\":433,\"models/widgets/tables/table_column\":434,\"models/widgets/tables/table_widget\":435,\"models/widgets/widget\":436},433);throw new Error(\"Cannot find Bokeh. You have to load it prior to loading plugins.\")})({429:function(e,t,n){var o=e(387),r=e(15),i=e(5),l=e(6),s=e(57),a=e(431),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\"emptyValue\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\"bk-cell-editor\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\"keydown\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){this.args.grid.getData().setField(e[a.DTINDEX_NAME],this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"CellEditor\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\"emptyValue\",{get:function(){return\"\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\"text\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"StringEditor\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"TextEditor\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e/g,\">\")},t}(r.Model),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"StringFormatter\",this.define({font_style:[o.FontStyle,\"normal\"],text_align:[o.TextAlign,\"left\"],text_color:[o.Color]})},t.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\"\":\"\"+n);switch(i){case\"bold\":a.style.fontWeight=\"bold\";break;case\"italic\":a.style.fontStyle=\"italic\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},t}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(){return null!==c&&c.apply(this,arguments)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\"NumberFormatter\",this.define({format:[o.String,\"0,0\"],language:[o.String,\"en\"],rounding:[o.String,\"round\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"BooleanFormatter\",this.define({icon:[o.String,\"check\"]})},t.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\"\"},t}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(){return null!==l&&l.apply(this,arguments)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\"DateFormatter\",this.define({format:[o.String,\"ISO-8601\"]})},e.prototype.getFormat=function(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"HTMLTemplateFormatter\",this.define({template:[o.String,\"<%= value %>\"]})},t.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\"\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},t}(i);(n.HTMLTemplateFormatter=m).initClass()},431:function(e,t,i){var o=e(387),s=e(443).Grid,a=e(441).RowSelectionModel,c=e(440).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(435),f=e(436);i.DTINDEX_NAME=\"__bkdt_internal_index__\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\"special name \"+i.DTINDEX_NAME+\" cannot be used as a data table column\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n+~]|\"+F+\")\"+F+\"*\"),O=new RegExp(\"=\"+F+\"*([^\\\\]'\\\"]*?)\"+F+\"*\\\\]\",\"g\"),z=new RegExp(W),X=new RegExp(\"^\"+I+\"$\"),U={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+W),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+F+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+F+\"*(?:([+-]|)\"+F+\"*(\\\\d+)|))\"+F+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+_+\")$\",\"i\"),needsContext:new RegExp(\"^\"+F+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+F+\"*((?:-\\\\d)?\\\\d*)\"+F+\"*\\\\)|)(?=[^-]|$)\",\"i\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Q=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,J=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+F+\"?|(\"+F+\")|.)\",\"ig\"),ee=function(e,t,n){var o=\"0x\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){A.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\"string\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\" \"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\"id\"))?s=s.replace(te,ne):t.setAttribute(\"id\",s=E),c=h(e),i=c.length;i--;)c[i]=\"#\"+s+\" \"+ve(c[i]);u=c.join(\",\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\"id\")}}}return g(e.replace(V,\"$1\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\" \")>C.cacheLength&&delete e[o.shift()];return e[t+\" \"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\"|\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function fe(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),f.attributes=ae(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\"id\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\"id\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\"*\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&m.push(\"[*^$]=\"+F+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||m.push(\"\\\\[\"+F+\"*(?:value|\"+_+\")\"),e.querySelectorAll(\"[id~=\"+E+\"-]\").length||m.push(\"~=\"),e.querySelectorAll(\":checked\").length||m.push(\":checked\"),e.querySelectorAll(\"a#\"+E+\"+*\").length||m.push(\".#.+[+~]\")}),ae(function(e){e.innerHTML=\"\";var t=R.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&m.push(\"name\"+F+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&m.push(\":enabled\",\":disabled\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&m.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),m.push(\",.*:\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\"*\"),u.call(e,\"[s!='']:x\"),s.push(\"!=\",W)}),m=m.length&&new RegExp(m.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\"='$1']\"),f.matchesSelector&&S&&!T[t+\" \"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===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]||ie.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]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&z.test(n)&&(t=h(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(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\" \"];return t||(t=new RegExp(\"(^|\"+F+\")\"+e+\"(\"+F+\"|$)\"))&&p(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\"!=\"===o:!o||(t+=\"\",\"=\"===o?t===r:\"!=\"===o?t!==r:\"^=\"===o?r&&0===t.indexOf(r):\"*=\"===o?r&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||ce(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||ce(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\"disabled\")})||ce(_,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\":\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,P=/^.[^:#\\[\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\"string\"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||N,\"string\"==typeof e){if(!(o=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:A.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,N=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function _(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]+)/i,ae=/^$|\\/(?:java|ecma)script/i,ce={option:[1,\"\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;nx\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\"string\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\"\").match(F)||[\"\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\"\").split(\".\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\".\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\"\").match(F)||[\"\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\"\").split(\".\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\"**\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\"handle events\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\"events\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,ke=/\\s*$/g;function Ne(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&E(\">tbody\",e)[0]||e}function Ae(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o\").prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",r=function(e){o.remove(),r=null,e&&t(\"error\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\?(?=&|$)|\\?\\?/;E.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=qt.pop()||E.expando+\"_\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\"json jsonp\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ot.test(e.data)&&\"data\");if(l||\"jsonp\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\"$1\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+o),e.converters[\"script json\"]=function(){return i||E.error(o+\" was not called\"),i[0]},e.dataTypes[0]=\"json\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\"script\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\"\").body).innerHTML=\"
\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\"\"),(o=t.createElement(\"base\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\" \");return-1\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\"position\"),u=E(e),d={};\"static\"===c&&(e.style.position=\"relative\"),s=u.offset(),i=E.css(e,\"top\"),a=E.css(e,\"left\"),(\"absolute\"===c||\"fixed\"===c)&&-1<(i+a).indexOf(\"auto\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\"using\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\"fixed\"===E.css(n,\"position\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\"html\")||(o=e.offset()),o={top:o.top+E.css(e[0],\"borderTopWidth\",!0),left:o.left+E.css(e[0],\"borderLeftWidth\",!0)}),{top:t.top-o.top-E.css(n,\"marginTop\",!0),left:t.left-o.left-E.css(n,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\"static\"===E.css(e,\"position\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,r){var i=\"pageYOffset\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\"top\",\"left\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\"px\":t})}),E.each({Height:\"height\",Width:\"width\"},function(l,s){E.each({padding:\"inner\"+l,content:s,\"\":\"outer\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\"boolean\"!=typeof e),r=o||(!0===e||!0===t?\"margin\":\"border\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\"outer\")?e[\"inner\"+l]:e.document.documentElement[\"client\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\"scroll\"+l],o[\"scroll\"+l],e.body[\"offset\"+l],o[\"offset\"+l],o[\"client\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},438:function(e,t,n){\n", " /*!\n", " * jquery.event.drag - v 2.3.0\n", " * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n", " * Open Source MIT License - http://threedubmedia.com/code/license\n", " */\n", " var f=e(444);f.fn.drag=function(e,t,n){var o=\"string\"==typeof e?e:\"\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\"drag\")&&(o=\"drag\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\":input\",handle:null,relative:!1,drop:!0,click:!1},datakey:\"dragdata\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\"touchstart mousedown\",g.init,e),this.attachEvent&&this.attachEvent(\"ondragstart\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\"touchstart mousedown\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\"ondragstart\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t\",a.toolTip):l.updateColumnHeader(a.columnId,\"\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\":checkbox\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\":checkbox\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\":checked\")){for(var n=[],o=0;o\":\"\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t\",toolTip:a.toolTip,field:\"sel\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},441:function(e,t,n){var v=e(444),w=e(442);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\"(\"+this.fromRow+\":\"+this.fromCell+\")\":\"(\"+this.fromRow+\":\"+this.fromCell+\" - \"+this.toRow+\":\"+this.toCell+\")\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\"slick-edit-preclick\"}},443:function _(require,module,exports){\n", " /**\n", " * @license\n", " * (c) 2009-2016 Michael Leibman\n", " * michael{dot}leibman{at}gmail{dot}com\n", " * http://github.com/mleibman/slickgrid\n", " *\n", " * Distributed under MIT license.\n", " * All rights reserved.\n", " *\n", " * SlickGrid v2.3\n", " *\n", " * NOTES:\n", " * Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\n", " * This increases the speed dramatically, but can only be done safely because there are no event handlers\n", " * or data associated with any cell/row DOM nodes. Cell editors must make sure they implement .destroy()\n", " * and do proper cleanup.\n", " */\n", " var $=require(444),Slick=require(442),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(438),$.fn.drop||require(439);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\"flashing\",selectedCellCssClass:\"selected\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\"new-row\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\"\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\"slickgrid_\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\"slick-sort-indicator\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\"absolute\",visibility:\"hidden\",display:\"block\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\"SlickGrid requires a valid container, \"+container+\" does not exist in the DOM.\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;et.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\"overflow\",\"hidden\").css(\"outline\",0).addClass(uid).addClass(\"ui-widget\"),/relative|absolute|fixed/.test($container.css(\"position\"))||$container.css(\"position\",\"relative\"),$focusSink=$(\"
\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\"
\").appendTo($container),$preHeaderPanel=$(\"
\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\"
\").appendTo($container),($headers=$(\"
\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\"
\").appendTo($container),$headerRow=$(\"
\").appendTo($headerRowScroller),$headerRowSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($headerRowScroller),$topPanelScroller=$(\"
\").appendTo($container),$topPanel=$(\"
\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\"
\").appendTo($container)).css(\"overflow-y\",options.autoHeight?\"hidden\":\"auto\"),$canvas=$(\"
\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\"
\").appendTo($container),$footerRow=$(\"
\").appendTo($footerRowScroller),$footerRowSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\"slick-sort-indicator-numbered\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\"width\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\"selectstart.ui\",function(e){return $(e.target).is(\"input,textarea\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\"resize.slickgrid\",resizeCanvas),$viewport.on(\"scroll\",handleScroll),$headerScroller.on(\"contextmenu\",handleHeaderContextMenu).on(\"click\",handleHeaderClick).on(\"mouseenter\",\".slick-header-column\",handleHeaderMouseEnter).on(\"mouseleave\",\".slick-header-column\",handleHeaderMouseLeave),$headerRowScroller.on(\"scroll\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\"scroll\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\"scroll\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\"keydown\",handleKeyDown),$canvas.on(\"keydown\",handleKeyDown).on(\"click\",handleClick).on(\"dblclick\",handleDblClick).on(\"contextmenu\",handleContextMenu).on(\"draginit\",handleDragInit).on(\"dragstart\",{distance:3},handleDragStart).on(\"drag\",handleDrag).on(\"dragend\",handleDragEnd).on(\"mouseenter\",\".slick-cell\",handleMouseEnter).on(\"mouseleave\",\".slick-cell\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\"mousewheel\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\":visible\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\"
\").appendTo(\"body\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;nviewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\"unselectable\",\"on\").css(\"MozUserSelect\",\"none\").on(\"selectstart.ui\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\"
\").appendTo(document.body);;){var o=2*e;if(n.css(\"height\",o),t\").html(\"\"+o.name+\"\").width(o.width-headerColumnWidthDiff).attr(\"id\",\"\"+uid+o.id).attr(\"title\",o.toolTip||\"\").data(\"column\",o).addClass(o.headerCssClass||\"\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\"mouseenter\",e).on(\"mouseleave\",t),o.sortable&&(r.addClass(\"slick-header-sortable\"),r.append(\"\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\"
\").data(\"column\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\"
\").data(\"column\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\"function\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\"slick-resizable-handle\")){var t=$(e.target).closest(\".slick-header-column\");if(t.length){var n=t.data(\"column\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l\").appendTo(e).on(\"dragstart\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\"slick-header-column-active\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s
\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\"border-box\"!=n.css(\"box-sizing\")&&\"border-box\"!=n.css(\"-moz-box-sizing\")&&\"border-box\"!=n.css(\"-webkit-box-sizing\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\"
\").appendTo($canvas);n=$(\"\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\"border-box\"!=n.css(\"box-sizing\")&&\"border-box\"!=n.css(\"-moz-box-sizing\")&&\"border-box\"!=n.css(\"-webkit-box-sizing\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\"\n", "\n", "\n", "
\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "function HoloViewsWidget() {\n", "}\n", "\n", "HoloViewsWidget.prototype.init_slider = function(init_val){\n", " if(this.load_json) {\n", " this.from_json()\n", " } else {\n", " this.update_cache();\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.populate_cache = function(idx){\n", " this.cache[idx].innerHTML = this.frames[idx];\n", " if (this.embed) {\n", " delete this.frames[idx];\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.process_error = function(msg){\n", "}\n", "\n", "HoloViewsWidget.prototype.from_json = function() {\n", " var data_url = this.json_path + this.id + '.json';\n", " $.getJSON(data_url, $.proxy(function(json_data) {\n", " this.frames = json_data;\n", " this.update_cache();\n", " this.update(0);\n", " }, this));\n", "}\n", "\n", "HoloViewsWidget.prototype.dynamic_update = function(current){\n", " if (current === undefined) {\n", " return\n", " }\n", " this.current = current;\n", " if (this.comm) {\n", " var msg = {comm_id: this.id+'_client', content: current}\n", " this.comm.send(msg);\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.update_cache = function(force){\n", " var frame_len = Object.keys(this.frames).length;\n", " for (var i=0; i 0) {\n", " that.time = Date.now();\n", " that.dynamic_update(that.queue[that.queue.length-1]);\n", " that.queue = [];\n", " } else {\n", " that.wait = false;\n", " }\n", " if ((msg.msg_type == \"Ready\") && msg.content) {\n", " console.log(\"Python callback returned following output:\", msg.content);\n", " } else if (msg.msg_type == \"Error\") {\n", " console.log(\"Python failed with the following traceback:\", msg['traceback'])\n", " }\n", " }\n", " var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\n", " return comm\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.process_msg = function(msg) {\n", "}\n", "\n", "function SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\n", " this.frames = frames;\n", " this.id = id;\n", " this.plot_id = plot_id;\n", " this.slider_ids = slider_ids;\n", " this.keyMap = keyMap\n", " this.current_frame = 0;\n", " this.current_vals = dim_vals;\n", " this.load_json = load_json;\n", " this.mode = mode;\n", " this.notFound = notFound;\n", " this.cached = cached;\n", " this.dynamic = dynamic;\n", " this.cache = {};\n", " this.json_path = json_path;\n", " this.init_slider(this.current_vals[0]);\n", " this.queue = [];\n", " this.wait = false;\n", " if (!this.cached || this.dynamic) {\n", " this.comm = this.init_comms();\n", " }\n", "}\n", "\n", "SelectionWidget.prototype = new HoloViewsWidget;\n", "\n", "\n", "SelectionWidget.prototype.get_key = function(current_vals) {\n", " var key = \"(\";\n", " for (var i=0; i Date.now()))) {\n", " this.queue.push(key);\n", " return\n", " }\n", " this.queue = [];\n", " this.time = Date.now();\n", " this.current_frame = key;\n", " this.wait = true;\n", " this.dynamic_update(key)\n", " } else if (key !== undefined) {\n", " this.update(key)\n", " }\n", "}\n", "\n", "\n", "/* Define the ScrubberWidget class */\n", "function ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\n", " this.slider_id = \"_anim_slider\" + id;\n", " this.loop_select_id = \"_anim_loop_select\" + id;\n", " this.id = id;\n", " this.plot_id = plot_id;\n", " this.interval = interval;\n", " this.current_frame = 0;\n", " this.direction = 0;\n", " this.dynamic = dynamic;\n", " this.timer = null;\n", " this.load_json = load_json;\n", " this.mode = mode;\n", " this.cached = cached;\n", " this.frames = frames;\n", " this.cache = {};\n", " this.length = num_frames;\n", " this.json_path = json_path;\n", " document.getElementById(this.slider_id).max = this.length - 1;\n", " this.init_slider(0);\n", " this.wait = false;\n", " this.queue = [];\n", " if (!this.cached || this.dynamic) {\n", " this.comm = this.init_comms()\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype = new HoloViewsWidget;\n", "\n", "ScrubberWidget.prototype.set_frame = function(frame){\n", " this.current_frame = frame;\n", " var widget = document.getElementById(this.slider_id);\n", " if (widget === null) {\n", " this.pause_animation();\n", " return\n", " }\n", " widget.value = this.current_frame;\n", " if (this.dynamic || !this.cached) {\n", " if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n", " this.queue.push(frame);\n", " return\n", " }\n", " this.queue = [];\n", " this.time = Date.now();\n", " this.wait = true;\n", " this.dynamic_update(frame)\n", " } else {\n", " this.update(frame)\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.get_loop_state = function(){\n", " var button_group = document[this.loop_select_id].state;\n", " for (var i = 0; i < button_group.length; i++) {\n", " var button = button_group[i];\n", " if (button.checked) {\n", " return button.value;\n", " }\n", " }\n", " return undefined;\n", "}\n", "\n", "\n", "ScrubberWidget.prototype.next_frame = function() {\n", " this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\n", "}\n", "\n", "ScrubberWidget.prototype.previous_frame = function() {\n", " this.set_frame(Math.max(0, this.current_frame - 1));\n", "}\n", "\n", "ScrubberWidget.prototype.first_frame = function() {\n", " this.set_frame(0);\n", "}\n", "\n", "ScrubberWidget.prototype.last_frame = function() {\n", " this.set_frame(this.length - 1);\n", "}\n", "\n", "ScrubberWidget.prototype.slower = function() {\n", " this.interval /= 0.7;\n", " if(this.direction > 0){this.play_animation();}\n", " else if(this.direction < 0){this.reverse_animation();}\n", "}\n", "\n", "ScrubberWidget.prototype.faster = function() {\n", " this.interval *= 0.7;\n", " if(this.direction > 0){this.play_animation();}\n", " else if(this.direction < 0){this.reverse_animation();}\n", "}\n", "\n", "ScrubberWidget.prototype.anim_step_forward = function() {\n", " if(this.current_frame < this.length - 1){\n", " this.next_frame();\n", " }else{\n", " var loop_state = this.get_loop_state();\n", " if(loop_state == \"loop\"){\n", " this.first_frame();\n", " }else if(loop_state == \"reflect\"){\n", " this.last_frame();\n", " this.reverse_animation();\n", " }else{\n", " this.pause_animation();\n", " this.last_frame();\n", " }\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.anim_step_reverse = function() {\n", " if(this.current_frame > 0){\n", " this.previous_frame();\n", " } else {\n", " var loop_state = this.get_loop_state();\n", " if(loop_state == \"loop\"){\n", " this.last_frame();\n", " }else if(loop_state == \"reflect\"){\n", " this.first_frame();\n", " this.play_animation();\n", " }else{\n", " this.pause_animation();\n", " this.first_frame();\n", " }\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.pause_animation = function() {\n", " this.direction = 0;\n", " if (this.timer){\n", " clearInterval(this.timer);\n", " this.timer = null;\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.play_animation = function() {\n", " this.pause_animation();\n", " this.direction = 1;\n", " var t = this;\n", " if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\n", "}\n", "\n", "ScrubberWidget.prototype.reverse_animation = function() {\n", " this.pause_animation();\n", " this.direction = -1;\n", " var t = this;\n", " if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\n", "}\n", "\n", "function extend(destination, source) {\n", " for (var k in source) {\n", " if (source.hasOwnProperty(k)) {\n", " destination[k] = source[k];\n", " }\n", " }\n", " return destination;\n", "}\n", "\n", "function update_widget(widget, values) {\n", " if (widget.hasClass(\"ui-slider\")) {\n", " widget.slider('option', {\n", " min: 0,\n", " max: values.length-1,\n", " dim_vals: values,\n", " value: 0,\n", " dim_labels: values\n", " })\n", " widget.slider('option', 'slide').call(widget, event, {value: 0})\n", " } else {\n", " widget.empty();\n", " for (var i=0; i\", {\n", " value: i,\n", " text: values[i]\n", " }))\n", " };\n", " widget.data('values', values);\n", " widget.data('value', 0);\n", " widget.trigger(\"change\");\n", " };\n", "}\n", "\n", "function init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\n", " dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\n", " // Slider JS Block START\n", " function loadcssfile(filename){\n", " var fileref=document.createElement(\"link\")\n", " fileref.setAttribute(\"rel\", \"stylesheet\")\n", " fileref.setAttribute(\"type\", \"text/css\")\n", " fileref.setAttribute(\"href\", filename)\n", " document.getElementsByTagName(\"head\")[0].appendChild(fileref)\n", " }\n", " loadcssfile(\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\");\n", " /* Check if jQuery and jQueryUI have been loaded\n", " otherwise load with require.js */\n", " var jQuery = window.jQuery,\n", " // check for old versions of jQuery\n", " oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\.[0-4](\\.|$)/),\n", " jquery_path = '',\n", " paths = {},\n", " noConflict;\n", " var jQueryUI = jQuery.ui;\n", " // check for jQuery\n", " if (!jQuery || oldjQuery) {\n", " // load if it's not available or doesn't meet min standards\n", " paths.jQuery = jQuery;\n", " noConflict = !!oldjQuery;\n", " } else {\n", " // register the current jQuery\n", " define('jquery', [], function() { return jQuery; });\n", " }\n", " if (!jQueryUI) {\n", " paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\n", " } else {\n", " define('jQueryUI', [], function() { return jQuery.ui; });\n", " }\n", " paths.underscore = UNDERSCORE_CDN.slice(null, -3);\n", " var jquery_require = {\n", " paths: paths,\n", " shim: {\n", " \"jQueryUI\": {\n", " exports:\"$\",\n", " deps: ['jquery']\n", " },\n", " \"underscore\": {\n", " exports: '_'\n", " }\n", " }\n", " }\n", " require.config(jquery_require);\n", " require([\"jQueryUI\", \"underscore\"], function(jUI, _){\n", " if (noConflict) $.noConflict(true);\n", " var vals = values;\n", " if (dynamic && vals.constructor === Array) {\n", " var default_value = parseFloat(value);\n", " var min = parseFloat(vals[0]);\n", " var max = parseFloat(vals[vals.length-1]);\n", " var wstep = step;\n", " var wlabels = [default_value];\n", " var init_label = default_value;\n", " } else {\n", " var min = 0;\n", " if (dynamic) {\n", " var max = Object.keys(vals).length - 1;\n", " var init_label = labels[value];\n", " var default_value = values[value];\n", " } else {\n", " var max = vals.length - 1;\n", " var init_label = labels[value];\n", " var default_value = value;\n", " }\n", " var wstep = 1;\n", " var wlabels = labels;\n", " }\n", " function adjustFontSize(text) {\n", " var width_ratio = (text.parent().width()/8)/text.val().length;\n", " var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\n", " text.css('font-size', size);\n", " }\n", " var slider = $('#_anim_widget'+id+'_'+dim);\n", " slider.slider({\n", " animate: \"fast\",\n", " min: min,\n", " max: max,\n", " step: wstep,\n", " value: default_value,\n", " dim_vals: vals,\n", " dim_labels: wlabels,\n", " next_vals: next_vals,\n", " slide: function(event, ui) {\n", " var vals = slider.slider(\"option\", \"dim_vals\");\n", " var next_vals = slider.slider(\"option\", \"next_vals\");\n", " var dlabels = slider.slider(\"option\", \"dim_labels\");\n", " if (dynamic) {\n", " var dim_val = ui.value;\n", " if (vals.constructor === Array) {\n", " var label = ui.value;\n", " } else {\n", " var label = dlabels[ui.value];\n", " }\n", " } else {\n", " var dim_val = vals[ui.value];\n", " var label = dlabels[ui.value];\n", " }\n", " var text = $('#textInput'+id+'_'+dim);\n", " text.val(label);\n", " adjustFontSize(text);\n", " HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\n", " if (Object.keys(next_vals).length > 0) {\n", " var new_vals = next_vals[dim_val];\n", " var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n", " update_widget(next_widget, new_vals);\n", " }\n", " }\n", " });\n", " slider.keypress(function(event) {\n", " if (event.which == 80 || event.which == 112) {\n", " var start = slider.slider(\"option\", \"value\");\n", " var stop = slider.slider(\"option\", \"max\");\n", " for (var i=start; i<=stop; i++) {\n", " var delay = i*delay;\n", " $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n", " var val = {value:i};\n", " slider.slider('value',i);\n", " slider.slider(\"option\", \"slide\")(null, val);\n", " }, slider), delay);}, slider)(i);\n", " }\n", " }\n", " if (event.which == 82 || event.which == 114) {\n", " var start = slider.slider(\"option\", \"value\");\n", " var stop = slider.slider(\"option\", \"min\");\n", " var count = 0;\n", " for (var i=start; i>=stop; i--) {\n", " var delay = count*delay;\n", " count = count + 1;\n", " $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n", " var val = {value:i};\n", " slider.slider('value',i);\n", " slider.slider(\"option\", \"slide\")(null, val);\n", " }, slider), delay);}, slider)(i);\n", " }\n", " }\n", " });\n", " var textInput = $('#textInput'+id+'_'+dim)\n", " textInput.val(init_label);\n", " adjustFontSize(textInput);\n", " });\n", "}\n", "\n", "function init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\n", " var widget = $(\"#_anim_widget\"+id+'_'+dim);\n", " widget.data('values', vals)\n", " for (var i=0; i\", {\n", " value: val,\n", " text: labels[i]\n", " }));\n", " };\n", " widget.data(\"next_vals\", next_vals);\n", " widget.val(value);\n", " widget.on('change', function(event, ui) {\n", " if (dynamic) {\n", " var dim_val = parseInt(this.value);\n", " } else {\n", " var dim_val = $.data(this, 'values')[this.value];\n", " }\n", " var next_vals = $.data(this, \"next_vals\");\n", " if (Object.keys(next_vals).length > 0) {\n", " var new_vals = next_vals[dim_val];\n", " var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n", " update_widget(next_widget, new_vals);\n", " }\n", " var widgets = HoloViews.index[plot_id]\n", " if (widgets) {\n", " widgets.set_frame(dim_val, dim_idx);\n", " }\n", " });\n", "}\n", "\n", "\n", "if (window.HoloViews === undefined) {\n", " window.HoloViews = {}\n", " window.PyViz = window.HoloViews\n", "} else if (window.PyViz === undefined) {\n", " window.PyViz = window.HoloViews\n", "}\n", "\n", "\n", "var _namespace = {\n", " init_slider: init_slider,\n", " init_dropdown: init_dropdown,\n", " comms: {},\n", " comm_status: {},\n", " index: {},\n", " plot_index: {},\n", " kernels: {},\n", " receivers: {}\n", "}\n", "\n", "for (var k in _namespace) {\n", " if (!(k in window.HoloViews)) {\n", " window.HoloViews[k] = _namespace[k];\n", " }\n", "}\n", "\n", "var JS_MIME_TYPE = 'application/javascript';\n", "var HTML_MIME_TYPE = 'text/html';\n", "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", "var CLASS_NAME = 'output';\n", "\n", "/**\n", " * Render data to the DOM node\n", " */\n", "function render(props, node) {\n", " var div = document.createElement(\"div\");\n", " var script = document.createElement(\"script\");\n", " node.appendChild(div);\n", " node.appendChild(script);\n", "}\n", "\n", "/**\n", " * Handle when a new output is added\n", " */\n", "function handle_add_output(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", " if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\n", " return\n", " }\n", " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", " if (id !== undefined) {\n", " var nchildren = toinsert.length;\n", " toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\n", " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", " output_area._hv_plot_id = id;\n", " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", " HoloViews.plot_index[id] = Bokeh.index[id];\n", " } else {\n", " HoloViews.plot_index[id] = null;\n", " }\n", " }\n", "}\n", "\n", "/**\n", " * Handle when an output is cleared or removed\n", " */\n", "function handle_clear_output(event, handle) {\n", " var id = handle.cell.output_area._hv_plot_id;\n", " if ((id === undefined) || !(id in HoloViews.plot_index)) { return; }\n", " var comm = window.HoloViews.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", " if (comm !== null) {\n", " comm.send({event_type: 'delete', 'id': id});\n", " }\n", " delete HoloViews.plot_index[id];\n", " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", " window.Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "}\n", "\n", "/**\n", " * Handle kernel restart event\n", " */\n", "function handle_kernel_cleanup(event, handle) {\n", " delete HoloViews.comms[\"hv-extension-comm\"];\n", " window.HoloViews.plot_index = {}\n", "}\n", "\n", "/**\n", " * Handle update_display_data messages\n", " */\n", "function handle_update_output(event, handle) {\n", " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", " handle_add_output(event, handle)\n", "}\n", "\n", "function register_renderer(events, OutputArea) {\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[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " events.on('output_added.OutputArea', handle_add_output);\t\n", " events.on('output_updated.OutputArea', handle_update_output);\n", " events.on('clear_output.CodeCell', handle_clear_output);\n", " events.on('delete.Cell', handle_clear_output);\n", " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", "\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " safe: true,\n", " index: 0\n", " });\n", "}\n", "\n", "if (window.Jupyter !== undefined) {\n", " try {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " } catch(err) {\n", " }\n", "}\n", "\n", "// Define Bokeh specific subclasses\n", "function BokehSelectionWidget() {\n", " SelectionWidget.apply(this, arguments);\n", "}\n", "\n", "function BokehScrubberWidget() {\n", " ScrubberWidget.apply(this, arguments);\n", "}\n", "\n", "// Let them inherit from the baseclasses\n", "BokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\n", "BokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n", "\n", "// Define methods to override on widgets\n", "var BokehMethods = {\n", " update_cache : function(){\n", " for (var index in this.frames) {\n", " this.frames[index] = JSON.parse(this.frames[index]);\n", " }\n", " },\n", " update : function(current){\n", " if (current === undefined) {\n", " return;\n", " }\n", " var data = this.frames[current];\n", " if (data !== undefined) {\n", " if (data.root in HoloViews.plot_index) {\n", " var doc = HoloViews.plot_index[data.root].model.document;\n", " } else {\n", " var doc = Bokeh.index[data.root].model.document;\n", " }\n", " doc.apply_json_patch(data.content);\n", " }\n", " },\n", " init_comms: function() {\n", " if (Bokeh.protocol !== undefined) {\n", " this.receiver = new Bokeh.protocol.Receiver()\n", " } else {\n", " this.receiver = null;\n", " }\n", " return HoloViewsWidget.prototype.init_comms.call(this);\n", " },\n", " process_msg : function(msg) {\n", " if (this.plot_id in HoloViews.plot_index) {\n", " var doc = HoloViews.plot_index[this.plot_id].model.document;\n", " } else {\n", " var doc = Bokeh.index[this.plot_id].model.document;\n", " }\n", " if (this.receiver === null) { return }\n", " var receiver = this.receiver;\n", " if (msg.buffers.length > 0) {\n", " receiver.consume(msg.buffers[0].buffer)\n", " } else {\n", " receiver.consume(msg.content.data)\n", " }\n", " const comm_msg = receiver.message;\n", " if ((comm_msg != null) && (doc != null)) {\n", " doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\n", " }\n", " }\n", "}\n", "\n", "// Extend Bokeh widgets with backend specific methods\n", "extend(BokehSelectionWidget.prototype, BokehMethods);\n", "extend(BokehScrubberWidget.prototype, BokehMethods);\n", "\n", "window.HoloViews.BokehSelectionWidget = BokehSelectionWidget\n", "window.HoloViews.BokehScrubberWidget = BokehScrubberWidget\n", "\n", " function JupyterCommManager() {\n", " }\n", "\n", " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " comm_manager.register_target(comm_id, function(comm) {\n", " comm.on_msg(msg_handler);\n", " });\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", " comm.onMsg = msg_handler;\n", " });\n", " }\n", " }\n", "\n", " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", " if (comm_id in window.PyViz.comms) {\n", " return window.PyViz.comms[comm_id];\n", " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", " if (msg_handler) {\n", " comm.on_msg(msg_handler);\n", " }\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", " comm.open();\n", " if (msg_handler) {\n", " comm.onMsg = msg_handler;\n", " }\n", " }\n", "\n", " window.PyViz.comms[comm_id] = comm;\n", " return comm;\n", " }\n", "\n", " window.PyViz.comm_manager = new JupyterCommManager();\n", " " ], "application/vnd.holoviews_load.v0+json": "function HoloViewsWidget() {\n}\n\nHoloViewsWidget.prototype.init_slider = function(init_val){\n if(this.load_json) {\n this.from_json()\n } else {\n this.update_cache();\n }\n}\n\nHoloViewsWidget.prototype.populate_cache = function(idx){\n this.cache[idx].innerHTML = this.frames[idx];\n if (this.embed) {\n delete this.frames[idx];\n }\n}\n\nHoloViewsWidget.prototype.process_error = function(msg){\n}\n\nHoloViewsWidget.prototype.from_json = function() {\n var data_url = this.json_path + this.id + '.json';\n $.getJSON(data_url, $.proxy(function(json_data) {\n this.frames = json_data;\n this.update_cache();\n this.update(0);\n }, this));\n}\n\nHoloViewsWidget.prototype.dynamic_update = function(current){\n if (current === undefined) {\n return\n }\n this.current = current;\n if (this.comm) {\n var msg = {comm_id: this.id+'_client', content: current}\n this.comm.send(msg);\n }\n}\n\nHoloViewsWidget.prototype.update_cache = function(force){\n var frame_len = Object.keys(this.frames).length;\n for (var i=0; i 0) {\n that.time = Date.now();\n that.dynamic_update(that.queue[that.queue.length-1]);\n that.queue = [];\n } else {\n that.wait = false;\n }\n if ((msg.msg_type == \"Ready\") && msg.content) {\n console.log(\"Python callback returned following output:\", msg.content);\n } else if (msg.msg_type == \"Error\") {\n console.log(\"Python failed with the following traceback:\", msg['traceback'])\n }\n }\n var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\n return comm\n }\n}\n\nHoloViewsWidget.prototype.process_msg = function(msg) {\n}\n\nfunction SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\n this.frames = frames;\n this.id = id;\n this.plot_id = plot_id;\n this.slider_ids = slider_ids;\n this.keyMap = keyMap\n this.current_frame = 0;\n this.current_vals = dim_vals;\n this.load_json = load_json;\n this.mode = mode;\n this.notFound = notFound;\n this.cached = cached;\n this.dynamic = dynamic;\n this.cache = {};\n this.json_path = json_path;\n this.init_slider(this.current_vals[0]);\n this.queue = [];\n this.wait = false;\n if (!this.cached || this.dynamic) {\n this.comm = this.init_comms();\n }\n}\n\nSelectionWidget.prototype = new HoloViewsWidget;\n\n\nSelectionWidget.prototype.get_key = function(current_vals) {\n var key = \"(\";\n for (var i=0; i Date.now()))) {\n this.queue.push(key);\n return\n }\n this.queue = [];\n this.time = Date.now();\n this.current_frame = key;\n this.wait = true;\n this.dynamic_update(key)\n } else if (key !== undefined) {\n this.update(key)\n }\n}\n\n\n/* Define the ScrubberWidget class */\nfunction ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\n this.slider_id = \"_anim_slider\" + id;\n this.loop_select_id = \"_anim_loop_select\" + id;\n this.id = id;\n this.plot_id = plot_id;\n this.interval = interval;\n this.current_frame = 0;\n this.direction = 0;\n this.dynamic = dynamic;\n this.timer = null;\n this.load_json = load_json;\n this.mode = mode;\n this.cached = cached;\n this.frames = frames;\n this.cache = {};\n this.length = num_frames;\n this.json_path = json_path;\n document.getElementById(this.slider_id).max = this.length - 1;\n this.init_slider(0);\n this.wait = false;\n this.queue = [];\n if (!this.cached || this.dynamic) {\n this.comm = this.init_comms()\n }\n}\n\nScrubberWidget.prototype = new HoloViewsWidget;\n\nScrubberWidget.prototype.set_frame = function(frame){\n this.current_frame = frame;\n var widget = document.getElementById(this.slider_id);\n if (widget === null) {\n this.pause_animation();\n return\n }\n widget.value = this.current_frame;\n if (this.dynamic || !this.cached) {\n if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n this.queue.push(frame);\n return\n }\n this.queue = [];\n this.time = Date.now();\n this.wait = true;\n this.dynamic_update(frame)\n } else {\n this.update(frame)\n }\n}\n\nScrubberWidget.prototype.get_loop_state = function(){\n var button_group = document[this.loop_select_id].state;\n for (var i = 0; i < button_group.length; i++) {\n var button = button_group[i];\n if (button.checked) {\n return button.value;\n }\n }\n return undefined;\n}\n\n\nScrubberWidget.prototype.next_frame = function() {\n this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\n}\n\nScrubberWidget.prototype.previous_frame = function() {\n this.set_frame(Math.max(0, this.current_frame - 1));\n}\n\nScrubberWidget.prototype.first_frame = function() {\n this.set_frame(0);\n}\n\nScrubberWidget.prototype.last_frame = function() {\n this.set_frame(this.length - 1);\n}\n\nScrubberWidget.prototype.slower = function() {\n this.interval /= 0.7;\n if(this.direction > 0){this.play_animation();}\n else if(this.direction < 0){this.reverse_animation();}\n}\n\nScrubberWidget.prototype.faster = function() {\n this.interval *= 0.7;\n if(this.direction > 0){this.play_animation();}\n else if(this.direction < 0){this.reverse_animation();}\n}\n\nScrubberWidget.prototype.anim_step_forward = function() {\n if(this.current_frame < this.length - 1){\n this.next_frame();\n }else{\n var loop_state = this.get_loop_state();\n if(loop_state == \"loop\"){\n this.first_frame();\n }else if(loop_state == \"reflect\"){\n this.last_frame();\n this.reverse_animation();\n }else{\n this.pause_animation();\n this.last_frame();\n }\n }\n}\n\nScrubberWidget.prototype.anim_step_reverse = function() {\n if(this.current_frame > 0){\n this.previous_frame();\n } else {\n var loop_state = this.get_loop_state();\n if(loop_state == \"loop\"){\n this.last_frame();\n }else if(loop_state == \"reflect\"){\n this.first_frame();\n this.play_animation();\n }else{\n this.pause_animation();\n this.first_frame();\n }\n }\n}\n\nScrubberWidget.prototype.pause_animation = function() {\n this.direction = 0;\n if (this.timer){\n clearInterval(this.timer);\n this.timer = null;\n }\n}\n\nScrubberWidget.prototype.play_animation = function() {\n this.pause_animation();\n this.direction = 1;\n var t = this;\n if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\n}\n\nScrubberWidget.prototype.reverse_animation = function() {\n this.pause_animation();\n this.direction = -1;\n var t = this;\n if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\n}\n\nfunction extend(destination, source) {\n for (var k in source) {\n if (source.hasOwnProperty(k)) {\n destination[k] = source[k];\n }\n }\n return destination;\n}\n\nfunction update_widget(widget, values) {\n if (widget.hasClass(\"ui-slider\")) {\n widget.slider('option', {\n min: 0,\n max: values.length-1,\n dim_vals: values,\n value: 0,\n dim_labels: values\n })\n widget.slider('option', 'slide').call(widget, event, {value: 0})\n } else {\n widget.empty();\n for (var i=0; i\", {\n value: i,\n text: values[i]\n }))\n };\n widget.data('values', values);\n widget.data('value', 0);\n widget.trigger(\"change\");\n };\n}\n\nfunction init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\n dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\n // Slider JS Block START\n function loadcssfile(filename){\n var fileref=document.createElement(\"link\")\n fileref.setAttribute(\"rel\", \"stylesheet\")\n fileref.setAttribute(\"type\", \"text/css\")\n fileref.setAttribute(\"href\", filename)\n document.getElementsByTagName(\"head\")[0].appendChild(fileref)\n }\n loadcssfile(\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\");\n /* Check if jQuery and jQueryUI have been loaded\n otherwise load with require.js */\n var jQuery = window.jQuery,\n // check for old versions of jQuery\n oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\.[0-4](\\.|$)/),\n jquery_path = '',\n paths = {},\n noConflict;\n var jQueryUI = jQuery.ui;\n // check for jQuery\n if (!jQuery || oldjQuery) {\n // load if it's not available or doesn't meet min standards\n paths.jQuery = jQuery;\n noConflict = !!oldjQuery;\n } else {\n // register the current jQuery\n define('jquery', [], function() { return jQuery; });\n }\n if (!jQueryUI) {\n paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\n } else {\n define('jQueryUI', [], function() { return jQuery.ui; });\n }\n paths.underscore = UNDERSCORE_CDN.slice(null, -3);\n var jquery_require = {\n paths: paths,\n shim: {\n \"jQueryUI\": {\n exports:\"$\",\n deps: ['jquery']\n },\n \"underscore\": {\n exports: '_'\n }\n }\n }\n require.config(jquery_require);\n require([\"jQueryUI\", \"underscore\"], function(jUI, _){\n if (noConflict) $.noConflict(true);\n var vals = values;\n if (dynamic && vals.constructor === Array) {\n var default_value = parseFloat(value);\n var min = parseFloat(vals[0]);\n var max = parseFloat(vals[vals.length-1]);\n var wstep = step;\n var wlabels = [default_value];\n var init_label = default_value;\n } else {\n var min = 0;\n if (dynamic) {\n var max = Object.keys(vals).length - 1;\n var init_label = labels[value];\n var default_value = values[value];\n } else {\n var max = vals.length - 1;\n var init_label = labels[value];\n var default_value = value;\n }\n var wstep = 1;\n var wlabels = labels;\n }\n function adjustFontSize(text) {\n var width_ratio = (text.parent().width()/8)/text.val().length;\n var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\n text.css('font-size', size);\n }\n var slider = $('#_anim_widget'+id+'_'+dim);\n slider.slider({\n animate: \"fast\",\n min: min,\n max: max,\n step: wstep,\n value: default_value,\n dim_vals: vals,\n dim_labels: wlabels,\n next_vals: next_vals,\n slide: function(event, ui) {\n var vals = slider.slider(\"option\", \"dim_vals\");\n var next_vals = slider.slider(\"option\", \"next_vals\");\n var dlabels = slider.slider(\"option\", \"dim_labels\");\n if (dynamic) {\n var dim_val = ui.value;\n if (vals.constructor === Array) {\n var label = ui.value;\n } else {\n var label = dlabels[ui.value];\n }\n } else {\n var dim_val = vals[ui.value];\n var label = dlabels[ui.value];\n }\n var text = $('#textInput'+id+'_'+dim);\n text.val(label);\n adjustFontSize(text);\n HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\n if (Object.keys(next_vals).length > 0) {\n var new_vals = next_vals[dim_val];\n var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n update_widget(next_widget, new_vals);\n }\n }\n });\n slider.keypress(function(event) {\n if (event.which == 80 || event.which == 112) {\n var start = slider.slider(\"option\", \"value\");\n var stop = slider.slider(\"option\", \"max\");\n for (var i=start; i<=stop; i++) {\n var delay = i*delay;\n $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n var val = {value:i};\n slider.slider('value',i);\n slider.slider(\"option\", \"slide\")(null, val);\n }, slider), delay);}, slider)(i);\n }\n }\n if (event.which == 82 || event.which == 114) {\n var start = slider.slider(\"option\", \"value\");\n var stop = slider.slider(\"option\", \"min\");\n var count = 0;\n for (var i=start; i>=stop; i--) {\n var delay = count*delay;\n count = count + 1;\n $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n var val = {value:i};\n slider.slider('value',i);\n slider.slider(\"option\", \"slide\")(null, val);\n }, slider), delay);}, slider)(i);\n }\n }\n });\n var textInput = $('#textInput'+id+'_'+dim)\n textInput.val(init_label);\n adjustFontSize(textInput);\n });\n}\n\nfunction init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\n var widget = $(\"#_anim_widget\"+id+'_'+dim);\n widget.data('values', vals)\n for (var i=0; i\", {\n value: val,\n text: labels[i]\n }));\n };\n widget.data(\"next_vals\", next_vals);\n widget.val(value);\n widget.on('change', function(event, ui) {\n if (dynamic) {\n var dim_val = parseInt(this.value);\n } else {\n var dim_val = $.data(this, 'values')[this.value];\n }\n var next_vals = $.data(this, \"next_vals\");\n if (Object.keys(next_vals).length > 0) {\n var new_vals = next_vals[dim_val];\n var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n update_widget(next_widget, new_vals);\n }\n var widgets = HoloViews.index[plot_id]\n if (widgets) {\n widgets.set_frame(dim_val, dim_idx);\n }\n });\n}\n\n\nif (window.HoloViews === undefined) {\n window.HoloViews = {}\n window.PyViz = window.HoloViews\n} else if (window.PyViz === undefined) {\n window.PyViz = window.HoloViews\n}\n\n\nvar _namespace = {\n init_slider: init_slider,\n init_dropdown: init_dropdown,\n comms: {},\n comm_status: {},\n index: {},\n plot_index: {},\n kernels: {},\n receivers: {}\n}\n\nfor (var k in _namespace) {\n if (!(k in window.HoloViews)) {\n window.HoloViews[k] = _namespace[k];\n }\n}\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n HoloViews.plot_index[id] = Bokeh.index[id];\n } else {\n HoloViews.plot_index[id] = null;\n }\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n if ((id === undefined) || !(id in HoloViews.plot_index)) { return; }\n var comm = window.HoloViews.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete HoloViews.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n window.Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete HoloViews.comms[\"hv-extension-comm\"];\n window.HoloViews.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\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[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\t\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n\n// Define Bokeh specific subclasses\nfunction BokehSelectionWidget() {\n SelectionWidget.apply(this, arguments);\n}\n\nfunction BokehScrubberWidget() {\n ScrubberWidget.apply(this, arguments);\n}\n\n// Let them inherit from the baseclasses\nBokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\nBokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n\n// Define methods to override on widgets\nvar BokehMethods = {\n update_cache : function(){\n for (var index in this.frames) {\n this.frames[index] = JSON.parse(this.frames[index]);\n }\n },\n update : function(current){\n if (current === undefined) {\n return;\n }\n var data = this.frames[current];\n if (data !== undefined) {\n if (data.root in HoloViews.plot_index) {\n var doc = HoloViews.plot_index[data.root].model.document;\n } else {\n var doc = Bokeh.index[data.root].model.document;\n }\n doc.apply_json_patch(data.content);\n }\n },\n init_comms: function() {\n if (Bokeh.protocol !== undefined) {\n this.receiver = new Bokeh.protocol.Receiver()\n } else {\n this.receiver = null;\n }\n return HoloViewsWidget.prototype.init_comms.call(this);\n },\n process_msg : function(msg) {\n if (this.plot_id in HoloViews.plot_index) {\n var doc = HoloViews.plot_index[this.plot_id].model.document;\n } else {\n var doc = Bokeh.index[this.plot_id].model.document;\n }\n if (this.receiver === null) { return }\n var receiver = this.receiver;\n if (msg.buffers.length > 0) {\n receiver.consume(msg.buffers[0].buffer)\n } else {\n receiver.consume(msg.content.data)\n }\n const comm_msg = receiver.message;\n if ((comm_msg != null) && (doc != null)) {\n doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\n }\n }\n}\n\n// Extend Bokeh widgets with backend specific methods\nextend(BokehSelectionWidget.prototype, BokehMethods);\nextend(BokehScrubberWidget.prototype, BokehMethods);\n\nwindow.HoloViews.BokehSelectionWidget = BokehSelectionWidget\nwindow.HoloViews.BokehScrubberWidget = BokehScrubberWidget\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n }\n\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n\n window.PyViz.comm_manager = new JupyterCommManager();\n " }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import holoviews as hv\n", "hv.extension('bokeh')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('b973b33d-465b-4c8b-89fe-36399cb9f0e7')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"40b70e01-6663-47ff-a9b1-bd5cd5867747\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"93af3436-9270-4d3c-96d2-12d4053d3fa2\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ffbf9039-34ec-4989-a6d2-23e223c47592\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"0baaa86a-3c5a-4547-be0d-bcec0738b1ec\",\"type\":\"Circle\"},\"nonselection_glyph\":{\"id\":\"f9c1ed59-6021-496e-a870-2733d1810dfd\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"a5b59d83-a065-4d95-80ee-c1f9d8f10046\",\"type\":\"CDSView\"}},\"id\":\"f3668601-e00b-4caf-b385-538e56d24418\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"c4e2a751-4eb5-48b6-aa0d-59c98d39dc1b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"975dfbd2-40b8-4ab5-ac4a-b392fc542b57\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"c5fd51e8-b66f-4e9b-871c-49f5b2025a12\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"c5fd51e8-b66f-4e9b-871c-49f5b2025a12\",\"type\":\"BoxAnnotation\"}},\"id\":\"9eaaac72-7d0d-45bf-a833-ca1a8674d515\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"1f6aa62b-b572-4f0d-a7ef-10fb90b84dde\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"93af3436-9270-4d3c-96d2-12d4053d3fa2\",\"type\":\"ColumnDataSource\"}},\"id\":\"a5b59d83-a065-4d95-80ee-c1f9d8f10046\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"end\":9.41935704802025,\"reset_end\":9.41935704802025,\"reset_start\":13.550032206349389,\"start\":13.550032206349389},\"id\":\"959d1b09-1c7e-43b2-9462-e24bddbc17f0\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"4d7d7916-213a-4f14-b62b-e386539b513c\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"end\":0.8790042461462928,\"reset_end\":0.8790042461462928,\"reset_start\":-0.3701054672390516,\"start\":-0.3701054672390516},\"id\":\"064f0a0e-da25-4f0d-aa55-28e75dbe4018\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"renderers\":[{\"id\":\"8bab429e-d118-4065-8351-383a033387ec\",\"type\":\"GlyphRenderer\"}],\"tooltips\":[[\"g-i\",\"@{g_hyphen_minus_i}\"],[\"g_mag\",\"@{g_mag}\"],[\"i_mag\",\"@{i_mag}\"],[\"r_mag\",\"@{r_mag}\"],[\"is_binary\",\"@{is_binary}\"],[\"distance\",\"@{distance}\"],[\"mass_pri\",\"@{mass_pri}\"],[\"mass_sec\",\"@{mass_sec}\"],[\"eep_pri\",\"@{eep_pri}\"],[\"eep_sec\",\"@{eep_sec}\"],[\"g_mag_unc\",\"@{g_mag_unc}\"],[\"r_mag_unc\",\"@{r_mag_unc}\"],[\"i_mag_unc\",\"@{i_mag_unc}\"],[\"parallax\",\"@{parallax}\"],[\"parallax_unc\",\"@{parallax_unc}\"],[\"i\",\"@{i}\"],[\"r-i\",\"@{r_hyphen_minus_i}\"]]},\"id\":\"df00b202-5247-4a1b-b06e-6ca1878c1fae\",\"type\":\"HoverTool\"},{\"attributes\":{\"below\":[{\"id\":\"1afbf753-0654-4f35-8013-43a9d91661cd\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"3ffad60f-b288-42a5-b7ef-8e4037bbd17d\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"1afbf753-0654-4f35-8013-43a9d91661cd\",\"type\":\"LinearAxis\"},{\"id\":\"fa63c123-4dd0-4d28-97af-8a5b34927e25\",\"type\":\"Grid\"},{\"id\":\"3ffad60f-b288-42a5-b7ef-8e4037bbd17d\",\"type\":\"LinearAxis\"},{\"id\":\"fd5160e6-64e9-4cf0-953d-5fc812efd356\",\"type\":\"Grid\"},{\"id\":\"eb9c3820-de1c-4a40-a951-957ebcd74b58\",\"type\":\"BoxAnnotation\"},{\"id\":\"8bab429e-d118-4065-8351-383a033387ec\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"4f7acbbc-4f0b-4aba-8550-acbbbf59c0af\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"a30266ca-8fea-4aa9-b92c-11f3bd2221a0\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"064f0a0e-da25-4f0d-aa55-28e75dbe4018\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"7513e24f-370e-4d78-9d52-ed1aa9f81b76\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"959d1b09-1c7e-43b2-9462-e24bddbc17f0\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"a28e45a7-4982-44e8-bebf-760eadad9d02\",\"type\":\"LinearScale\"}},\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"data\":{\"distance\":{\"__ndarray__\":\"SKIV77nEfkCKct+6//Z/QJcooOsFJX9A/c2ynJ42f0DigBLtBxl/QET9j37I5n5AZG92mggvf0Du5PCEjYl/QPhRZa5ZHX9Aszm42jXCf0BOA0iNY0Z/QNkteBFPLX9Ac/Xidorpf0CuYISrPW1/QN17OyNXbX9ACSDBvN2Bf0AO136KYFZ/QPBY43x0in9AXTzfZV8Wf0B5lnNp/UZ/QDMKFkXp5n9A6MMJdXB6f0Cd7jfjV41+QPTGf4zh8X5AgvROORPafkDOZeEXJ/1+QDF1V2/3fH9AAjycNxuzf0BhhPHNLjR/QCp3Ba5CQX9AC84ZA98vf0BEhhrV9hV/QBWZcwGSBH9AIiGao+pLf0D79qbIp7x+QKHRQ29UQH9AxZ/oE3aQfkBbdIAOPQd/QHUpUha8Kn9ALvhiY2lhf0DERUZUq91/QOulRx2DKX9AgIAOrACzf0Bpdd59Og5/QLtAmPdCB39AAk9gkg8cf0AIcZ2bN79+QJ4J79ChqH9AAYNemRC/fkBQk72ZbIZ/QA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_pri\":{\"__ndarray__\":\"YgmFR0WxckBDhBiEhqByQDXQymjUI3NA6vqJdlOjc0ABJRpmDX1zQO2hhBuyXHRAo0hfVrq5dEDkjofLetN0QDoN+A5Hl3JAo4AyAUzTc0D64BPIGaBzQCoK2JROAHRALngRZLn3c0AMSajH+n11QAwsxW4g2nNAeGU/4IcSc0ATADU0kftzQCBwDKieinNAhWTvK5/Ec0C0qBauJoh0QK67eszf03JAT9BTcU4FdECxcEAEZWdzQDagKK8rvnJAnlyoBG3PdkDMUwAUuxZ0QCOYBJ0J9YRAL7vNsqxzc0DDv1d06OJzQOLwsaCQE3NADQQSXwoEc0CRdhK6l7x0QOgL7w30tXRAJw5LTMKFc0Dcj6pHLZ9yQO+5Nol1EnRA/GVpUF31hEC5AxBjtLZ0QB3lHtsnlnNAoauIxBYjdEBJyre9PO9yQAnf8pFtdXRAf/9RkB3gckDMv2MFCjpzQJwCTPxwVHNAwmTb24mxdEAPiBaok8t0QHrtKDTmc3NARBw1vkLUdUAUMbeVcudzQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4R0vOljNwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAInh6A6HZXJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9b2SmxCrcUC4t0bw6F9xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlOI1/0HsbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZsj/1n/nJAvO9uG7PCcUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA49JB8Zb3BAAAAAAAAAAADAogYz3EV0QAAAAAAAAAAAAAAAAAAAAABJTEa/WwxvQHmc37YVs3FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIx+nZFxo21AAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]},\"g-i\":{\"__ndarray__\":\"wNvkGRKV3D/gkEDXMALdP4CAkdixTtg/wD/u3hTxzz8gVOX8dhLUPwAavpobjZW/wNn3k1PJwr8AAdBBbofEv+BD9CsYwt4/wC7jL+1jyj9A2rWD4TzQP8Cug8/ju8g/QHrLEL4ywz/AwOimfRvUv0DBriKv6cM/AF9GEPvE3D+AjubGq37HPyA+Kpo3FtE/AB9aylYyyD8AIpmW7/q2v4CrbLsgVt0/wAFY1B4QwD/AYt1hDxXUPwC6qHEqa9s/AMM+PP8r17+AX9Xcdli1P3DKR4PNIOw/wGJv5O2j0j+ANphQyfrCP8BbJJZtRdc/QGfBToRv3j/AOyQlxIDEv8CFAqSwaMO/ALJEMUOg0T/g1aLiaHrfP4BJnPy3T7k/cFaIqVKK6z8AzOqAkq+rv0B9/OYUBtA/ANga3ZoKsT8AjhdE243cPwD8F+djypA/gKZ/LNeX2j+Am6/3tWDVP4Ag+Vf5e9U/AB3a1SEVwL8Aye5iSvrFv+BM4J3mGdE/oDN3186v17/Acw8bjunDPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_hyphen_minus_i\":{\"__ndarray__\":\"wNvkGRKV3D/gkEDXMALdP4CAkdixTtg/wD/u3hTxzz8gVOX8dhLUPwAavpobjZW/wNn3k1PJwr8AAdBBbofEv+BD9CsYwt4/wC7jL+1jyj9A2rWD4TzQP8Cug8/ju8g/QHrLEL4ywz/AwOimfRvUv0DBriKv6cM/AF9GEPvE3D+AjubGq37HPyA+Kpo3FtE/AB9aylYyyD8AIpmW7/q2v4CrbLsgVt0/wAFY1B4QwD/AYt1hDxXUPwC6qHEqa9s/AMM+PP8r17+AX9Xcdli1P3DKR4PNIOw/wGJv5O2j0j+ANphQyfrCP8BbJJZtRdc/QGfBToRv3j/AOyQlxIDEv8CFAqSwaMO/ALJEMUOg0T/g1aLiaHrfP4BJnPy3T7k/cFaIqVKK6z8AzOqAkq+rv0B9/OYUBtA/ANga3ZoKsT8AjhdE243cPwD8F+djypA/gKZ/LNeX2j+Am6/3tWDVP4Ag+Vf5e9U/AB3a1SEVwL8Aye5iSvrFv+BM4J3mGdE/oDN3186v17/Acw8bjunDPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_mag\":{\"__ndarray__\":\"LhdIHKPPKkDiCETSnRkrQGy9ChDMBipAECqAsKnRKEApbrjYsSEpQPIl3EV8yCZAs60oc6n+JUDPNh54wuElQOIhxiD6FCtA2krZc/5qKECSDDZx+9soQAp2lrAxcCdANf+taegMKEDVmqmclZQkQOOR3om7QChAQynRwgWvKUC17hkT28cnQIz34KPyFylALVIsmK50KEAmlSI0bmgmQNqJghuXySpAoRQ2hXbIJ0Doakf4OFwpQOCqDQakvypAyWILI7/YIkCW+U8c1WsnQJP6BJPN+iJAiHiRAjZbKUBt8LsxsSMoQEWX05ECuyhALlZbPN+4KUAINK/javElQLXJgJ5XASZA9SkVGW4dKUDfCtPF/QErQJFD2vEbcCdAKzCN97XWIkCCvgRL6vIkQMtZ1mG87yhAU0WCqKpdJ0CJnsdl+IYqQFiEyaZihSZAVa91k4aiKkB/0trW3ckpQBW8W22LnClAHQ3XD/UUJkDTVroEN8klQKHlcNQkUylAg4YsjRjbI0DfEE11kyIoQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"i\":{\"__ndarray__\":\"UPB4i/rqKUBbBIpLjDEqQGgxRoFWRClAEXEEXeVRKECIQ9EgHoEoQP+EqdNC0yZAGo14wc5JJkDTdiUx4DMmQMN/Zl/pHipAH74Zv24BKEDAXRhlFFooQE9nWCFCDSdATNFqcR3AJ0Db4OCJcTUlQN7WU80U8SdAS/ZO6t3IKEB7VP5j4GknQJulD+dAjyhAsekCPeUTKEBqx08TZJYmQH4kpxXm3ilAmrTkCTaIJ0DSfzh9kLsoQBBlgLJK5ClA4VjtHB+SI0DXTpYuJEEnQOx90LrAOCFAcv1tkxbGKECTj3kMxtcnQGd0IiXXAChA9ErlGWPFKED3xEP0bUMmQMzTEGH6TiZAZQSL/2uQKEAw9L1+KgYqQP4K4YF8PSdAxKr0zBAeIUBOqYXdmQ4lQOF1nrqLbyhAow/IcpU7J0AZ4qaLiaIpQFr41XT9fCZAIbIR2sfNKUCjVR0n2B4pQBHzm6Kr8ChAkXUul0lVJkD3EUYuICEmQDrjgZ9VyihAIEDoA5eYJEAQ0+A87dInQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"i_mag\":{\"__ndarray__\":\"UPB4i/rqKUBbBIpLjDEqQGgxRoFWRClAEXEEXeVRKECIQ9EgHoEoQP+EqdNC0yZAGo14wc5JJkDTdiUx4DMmQMN/Zl/pHipAH74Zv24BKEDAXRhlFFooQE9nWCFCDSdATNFqcR3AJ0Db4OCJcTUlQN7WU80U8SdAS/ZO6t3IKEB7VP5j4GknQJulD+dAjyhAsekCPeUTKEBqx08TZJYmQH4kpxXm3ilAmrTkCTaIJ0DSfzh9kLsoQBBlgLJK5ClA4VjtHB+SI0DXTpYuJEEnQOx90LrAOCFAcv1tkxbGKECTj3kMxtcnQGd0IiXXAChA9ErlGWPFKED3xEP0bUMmQMzTEGH6TiZAZQSL/2uQKEAw9L1+KgYqQP4K4YF8PSdAxKr0zBAeIUBOqYXdmQ4lQOF1nrqLbyhAow/IcpU7J0AZ4qaLiaIpQFr41XT9fCZAIbIR2sfNKUCjVR0n2B4pQBHzm6Kr8ChAkXUul0lVJkD3EUYuICEmQDrjgZ9VyihAIEDoA5eYJEAQ0+A87dInQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"i_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"is_binary\":[false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,false,false,false,false,true,true,false,false,false,false,true,false,true,false,false,true,true,false,false,false,false,false,true,false,false],\"mass_pri\":{\"__ndarray__\":\"18GGfC5P8D8pGyNf5yHwP4nQu12rfvE/HAWOYzxi8z9WZM3TFcnyPy2EvEt08/Y/YcG5f7ao+D9cBCaqoyP5Pxcz5/23CPA/3Yw6nXww9D93X2hGGFTzP/Z4kJIZEPU/bUsAEm7r9D/3gq1L3mD8P6khN+AJVvQ/15X2ig5O8T+M6Vr1cPn0PzK/B/yFA/M/dM+2ci/z8z+WHda/r8j3P1lD3ACWn/A/x6w7E79A9T+kkyqHxl7yPyanV6VDa/A/tgHlUFR+AEAC6/YWvcX1PwaR0lVCyAJAckAkuc6V8j+22K2FcoT0P3PwPfbrUPE/eXkGrLwe8T988VTL87X4P92xFOhEl/g/BnQiQCDw8j9jvUdFOB7wPymWnQCUsvU/s/m05WnKAkBeaCzBvZr4P9gzh2FoL/M/KuldyUn79T9hYNq9huLwP65f+s2TZfc/48lsD8298D8iqr4ricjxP0MxD6NSHPI/RC1jzt2C+D/xOq7z7P34P3yfAA8Dl/I/eB7jxgYT/j9INrneDZ30Pw==\",\"dtype\":\"float64\",\"shape\":[50]},\"mass_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqu0lACIbkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0ejg3eJe8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXai6Io916z+ktqys1wXqPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9ILTfzVf2j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7GnepDPE/i4iTnv3t6z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIT5SwAag+U/AAAAAAAAAABwwPRAs5H2PwAAAAAAAAAAAAAAAAAAAACswm0vZ3ThPxS8G0SLnOs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJpAWnOKktg/AAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]},\"parallax\":{\"__ndarray__\":\"OSG0mhpAAEBhACq9zEj/P2BHZ+DbDQBAeNE29M4EAEAuaI3ADBQAQGy+WLUxLgBA5nydi7QIAEAfYIs7XrX/Px+nAlzREQBAqi3mzsx8/z/uvwSIdvn/P8flUp+XCQBARTN0N/5V/z+bxXEP79H/PwsKNkbV0f8/zV5GlBq9/z+CeBpWJun/P48QWgl2tP8/n2k0uGwVAEAuM+Y92fj/P0uIMneTWP8/tTqDlpfE/z8KQWjIj10AQPUqby1kKABAOJj659s0AECnJVejgyIAQHQBitwKwv8/GUDfkc2L/z9/2gIxDwYAQK96wqC1/v8/8OACUEYIAEB3MUfSohUAQHbyVd2nHgBAZgC4ytDz/z8bAbL2XkQAQPyX4Yqp//8/EumHZeRbAEDyed0BRR0AQPSST7bqCgBAzZAvwu3d/z9AkUPOqmH/P/QJkNWLCwBAm4aZ/OeL/z8T8Ct+pBkAQLRoDfBBHQBAAVtw4HsSAEBsMsb9A0MAQDAhz249lv8/ffSCnxhDAEAOrmPPg7j/Pw==\",\"dtype\":\"float64\",\"shape\":[50]},\"parallax_unc\":{\"__ndarray__\":\"mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_hyphen_minus_i\":{\"__ndarray__\":\"gC8DPqnwsz+AtyKCl265PwChLlX127U/AJhBRWGogz8A6mDAadacPwCwNqOhebG/gJhXJoWkuL+AyQIySn6+vwANtgqi0r4/AHq/aGxqkT8AKxBtPsimPwBQMYtmk2G/AJBJYcEjmL/AL/BO+NzFvwA4bk6uA3+/ADDtdwZetT8AIMjcROxvPwCydUSIF5E/AMCmjUAkdj+Ahvy52Be3vwDDOe6qRrQ/ABwAWuZKk78ADP96wiepPwDTQV5unqw/gHn7r42jx78AKipwW/Cfv0A1Y7jQgMo/ACa3SvKLqD8ABsURhoGQvwAHlgOCjqc/AF5sq2RstD8A2KTsaZC7v4CTvTyhcri/AEXHvCQ6oD+A8N0kKSyzPwCY5Ok8aI6/QCCXx7nkxz8AjwuMn1CuvwDQoxr+uGE/ACYhewk3mL+AhGNcGIC5P4Bg6FJZibG/AIU0vnU+sj+Ao04sOxawPwB9a1ANiqs/gEE81Vn6vL+ADbYvjKe9vwDA+Ue9Wok/gAnYLHsqyL8AWPvplYuTvw==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_mag\":{\"__ndarray__\":\"r/b03dsSKkDKSY56aWQqQKqO8GsOcClAd8FVdc9WKED9c7FViY8oQJ8XY5BPsCZA6d0rt4UYJkBAccGc4/YlQN3re6OOXCpA3B1O9SMKKEDrbYWj3HAoQDq07+ooDCdAhCy6kAu0J0AcIKWo/d0kQBcJilc07SdAq9A+95nzKED9IEwo32snQHTgMavMlyhAiZ4UxakWKEBdztthNGgmQASYg2tzBypAjLS3lpB+J0DefrM/uNQoQOOm3iDpACpA+2ot5pAzI0DCOd4ALDEnQMEKsv3DoiFAmLS4haLeKEAQrXBJhc8nQG4KJqdlGChAsCM84zvuKEBHe2ogTQwmQKVYlx4VHiZAqstHJKagKEARsAfRgiwqQNiRpnLiNSdARQcTtKN9IUC/nfk9SfAkQB4ggEqncChAEH8K7nkvJ0AiqV+8idUpQJknMMLqWSZAKxuOxUTyKUDq8nWdBD8pQI5e7K81DClADv2D41QbJkDcpeYV0eUlQKrh006s0ChA+t80F+03JEBk1etxJ8knQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"707bb54f-fed4-4aa0-b8fa-b1a968a62904\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"4d7d7916-213a-4f14-b62b-e386539b513c\",\"type\":\"UnionRenderers\"}},\"id\":\"3e129986-a9cc-4bfe-bdca-fa5b3b018b21\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"4f7acbbc-4f0b-4aba-8550-acbbbf59c0af\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"7513e24f-370e-4d78-9d52-ed1aa9f81b76\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"r-i\"},\"y\":{\"field\":\"r_mag\"}},\"id\":\"0baaa86a-3c5a-4547-be0d-bcec0738b1ec\",\"type\":\"Circle\"},{\"attributes\":{\"toolbar\":{\"id\":\"8beeae8c-8f35-4344-96c1-4e7138ecd4c5\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"33fc3481-d0e6-4881-a2d1-fcc5a28ebea4\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"df00b202-5247-4a1b-b06e-6ca1878c1fae\",\"type\":\"HoverTool\"},{\"id\":\"8d645554-ee74-4100-a1d2-8d51b03dc35d\",\"type\":\"SaveTool\"},{\"id\":\"3a8bb59f-52c5-4182-8208-5534666ef94c\",\"type\":\"PanTool\"},{\"id\":\"818acfc9-077b-4194-949b-39369838e37f\",\"type\":\"WheelZoomTool\"},{\"id\":\"7c8f5ccf-f844-4ff9-ba0f-a281377d522d\",\"type\":\"BoxZoomTool\"},{\"id\":\"be5124cd-5d09-4ec3-83aa-454ec50a6bed\",\"type\":\"ResetTool\"}]},\"id\":\"a30266ca-8fea-4aa9-b92c-11f3bd2221a0\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"7184ec29-de72-4c10-b0f9-7e15df0203e5\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1b083df3-d45f-4863-88e0-3d4d13f423cd\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1eb65896-0f4a-4105-bd4b-5473e3f5eae4\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44b492bf-b7a3-4190-94e0-f639c1b97588\",\"type\":\"BasicTicker\"}},\"id\":\"fa63c123-4dd0-4d28-97af-8a5b34927e25\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"3141c34a-e3e4-4993-b49f-181450102e09\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"a28e45a7-4982-44e8-bebf-760eadad9d02\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"g-i\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"97908d09-dbe4-4d7a-bf5c-4465c509633b\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44b492bf-b7a3-4190-94e0-f639c1b97588\",\"type\":\"BasicTicker\"}},\"id\":\"1afbf753-0654-4f35-8013-43a9d91661cd\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"r-i\"},\"y\":{\"field\":\"r_mag\"}},\"id\":\"f9c1ed59-6021-496e-a870-2733d1810dfd\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"81b2e4c9-c02d-46a5-bfde-19785ce307ec\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"44b492bf-b7a3-4190-94e0-f639c1b97588\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"g_mag\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"4226e8f4-ff26-4a22-8394-555f797274a5\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"f12a5a5a-838b-4460-a01c-95660fda37c8\",\"type\":\"BasicTicker\"}},\"id\":\"3ffad60f-b288-42a5-b7ef-8e4037bbd17d\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"397378ae-dc2c-4dde-ab22-b7a86403945c\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"97908d09-dbe4-4d7a-bf5c-4465c509633b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"f12a5a5a-838b-4460-a01c-95660fda37c8\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"f12a5a5a-838b-4460-a01c-95660fda37c8\",\"type\":\"BasicTicker\"}},\"id\":\"fd5160e6-64e9-4cf0-953d-5fc812efd356\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"8d645554-ee74-4100-a1d2-8d51b03dc35d\",\"type\":\"SaveTool\"},{\"attributes\":{\"tools\":[{\"id\":\"df00b202-5247-4a1b-b06e-6ca1878c1fae\",\"type\":\"HoverTool\"},{\"id\":\"8d645554-ee74-4100-a1d2-8d51b03dc35d\",\"type\":\"SaveTool\"},{\"id\":\"3a8bb59f-52c5-4182-8208-5534666ef94c\",\"type\":\"PanTool\"},{\"id\":\"818acfc9-077b-4194-949b-39369838e37f\",\"type\":\"WheelZoomTool\"},{\"id\":\"7c8f5ccf-f844-4ff9-ba0f-a281377d522d\",\"type\":\"BoxZoomTool\"},{\"id\":\"be5124cd-5d09-4ec3-83aa-454ec50a6bed\",\"type\":\"ResetTool\"},{\"id\":\"b0256d0c-1097-4545-a5aa-bddd5281bf97\",\"type\":\"HoverTool\"},{\"id\":\"7184ec29-de72-4c10-b0f9-7e15df0203e5\",\"type\":\"SaveTool\"},{\"id\":\"81b2e4c9-c02d-46a5-bfde-19785ce307ec\",\"type\":\"PanTool\"},{\"id\":\"1eb65896-0f4a-4105-bd4b-5473e3f5eae4\",\"type\":\"WheelZoomTool\"},{\"id\":\"9eaaac72-7d0d-45bf-a833-ca1a8674d515\",\"type\":\"BoxZoomTool\"},{\"id\":\"975dfbd2-40b8-4ab5-ac4a-b392fc542b57\",\"type\":\"ResetTool\"}]},\"id\":\"8beeae8c-8f35-4344-96c1-4e7138ecd4c5\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"eb9c3820-de1c-4a40-a951-957ebcd74b58\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"children\":[{\"id\":\"33fc3481-d0e6-4881-a2d1-fcc5a28ebea4\",\"type\":\"ToolbarBox\"},{\"id\":\"bf98c7d8-8244-48a4-b498-8734433ed02a\",\"type\":\"Column\"}]},\"id\":\"b973b33d-465b-4c8b-89fe-36399cb9f0e7\",\"type\":\"Column\"},{\"attributes\":{\"source\":{\"id\":\"3e129986-a9cc-4bfe-bdca-fa5b3b018b21\",\"type\":\"ColumnDataSource\"}},\"id\":\"f84ace91-0073-4ee3-af37-af4ca4c24ec7\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3a8bb59f-52c5-4182-8208-5534666ef94c\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"818acfc9-077b-4194-949b-39369838e37f\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4226e8f4-ff26-4a22-8394-555f797274a5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"eb9c3820-de1c-4a40-a951-957ebcd74b58\",\"type\":\"BoxAnnotation\"}},\"id\":\"7c8f5ccf-f844-4ff9-ba0f-a281377d522d\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"be5124cd-5d09-4ec3-83aa-454ec50a6bed\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"84330dc9-6152-46be-98d1-fb21f015a641\",\"type\":\"Selection\"},{\"attributes\":{\"children\":[{\"id\":\"cbb1ee0f-c153-4a9d-a37c-10410f7bcd63\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"6148bb4f-bb4e-40a6-b4aa-7fd8b42ebec5\",\"type\":\"Row\"},{\"attributes\":{\"callback\":null,\"end\":8.74538958294182,\"reset_end\":8.74538958294182,\"reset_start\":13.196117238873644,\"start\":13.196117238873644},\"id\":\"14f2c1dd-6c99-4bd1-b346-7367046ea92c\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"707bb54f-fed4-4aa0-b8fa-b1a968a62904\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"renderers\":[{\"id\":\"f3668601-e00b-4caf-b385-538e56d24418\",\"type\":\"GlyphRenderer\"}],\"tooltips\":[[\"r-i\",\"@{r_hyphen_minus_i}\"],[\"r_mag\",\"@{r_mag}\"],[\"g_mag\",\"@{g_mag}\"],[\"i_mag\",\"@{i_mag}\"],[\"is_binary\",\"@{is_binary}\"],[\"distance\",\"@{distance}\"],[\"mass_pri\",\"@{mass_pri}\"],[\"mass_sec\",\"@{mass_sec}\"],[\"eep_pri\",\"@{eep_pri}\"],[\"eep_sec\",\"@{eep_sec}\"],[\"g_mag_unc\",\"@{g_mag_unc}\"],[\"r_mag_unc\",\"@{r_mag_unc}\"],[\"i_mag_unc\",\"@{i_mag_unc}\"],[\"parallax\",\"@{parallax}\"],[\"parallax_unc\",\"@{parallax_unc}\"],[\"i\",\"@{i}\"],[\"g-i\",\"@{g_hyphen_minus_i}\"]]},\"id\":\"b0256d0c-1097-4545-a5aa-bddd5281bf97\",\"type\":\"HoverTool\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"baf18eec-6eb1-4d61-ae94-20785d85a195\",\"type\":\"BasicTicker\"}},\"id\":\"ffb39d67-58cb-4b4a-b8ee-9710c5e62be3\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"end\":0.20705613139436174,\"reset_end\":0.20705613139436174,\"reset_start\":-0.1887964219059306,\"start\":-0.1887964219059306},\"id\":\"63abe86f-9832-4a51-98c2-cb2808ea9d6b\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"3e129986-a9cc-4bfe-bdca-fa5b3b018b21\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"397378ae-dc2c-4dde-ab22-b7a86403945c\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1f6aa62b-b572-4f0d-a7ef-10fb90b84dde\",\"type\":\"Circle\"},\"nonselection_glyph\":{\"id\":\"3141c34a-e3e4-4993-b49f-181450102e09\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"f84ace91-0073-4ee3-af37-af4ca4c24ec7\",\"type\":\"CDSView\"}},\"id\":\"8bab429e-d118-4065-8351-383a033387ec\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"85155b65-f1bf-4152-91f5-13aa9ae77716\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"0f68cde1-7f5e-44a5-a89b-122a83334283\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"85155b65-f1bf-4152-91f5-13aa9ae77716\",\"type\":\"LinearAxis\"},{\"id\":\"ffb39d67-58cb-4b4a-b8ee-9710c5e62be3\",\"type\":\"Grid\"},{\"id\":\"0f68cde1-7f5e-44a5-a89b-122a83334283\",\"type\":\"LinearAxis\"},{\"id\":\"87d3f96d-8342-474c-ae4c-44b46b534edf\",\"type\":\"Grid\"},{\"id\":\"c5fd51e8-b66f-4e9b-871c-49f5b2025a12\",\"type\":\"BoxAnnotation\"},{\"id\":\"f3668601-e00b-4caf-b385-538e56d24418\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"e9b2ac9c-b9d4-4535-8949-e35b579e7a24\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"03f4e1f0-d10d-4aeb-8bb8-2d55799d784f\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"63abe86f-9832-4a51-98c2-cb2808ea9d6b\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"ee72e9ff-abd8-4c32-8cf0-034fd16cf700\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"14f2c1dd-6c99-4bd1-b346-7367046ea92c\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"92d71357-bad5-46e5-9e61-67abebc18b69\",\"type\":\"LinearScale\"}},\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"e9b2ac9c-b9d4-4535-8949-e35b579e7a24\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"data\":{\"distance\":{\"__ndarray__\":\"SKIV77nEfkCKct+6//Z/QJcooOsFJX9A/c2ynJ42f0DigBLtBxl/QET9j37I5n5AZG92mggvf0Du5PCEjYl/QPhRZa5ZHX9Aszm42jXCf0BOA0iNY0Z/QNkteBFPLX9Ac/Xidorpf0CuYISrPW1/QN17OyNXbX9ACSDBvN2Bf0AO136KYFZ/QPBY43x0in9AXTzfZV8Wf0B5lnNp/UZ/QDMKFkXp5n9A6MMJdXB6f0Cd7jfjV41+QPTGf4zh8X5AgvROORPafkDOZeEXJ/1+QDF1V2/3fH9AAjycNxuzf0BhhPHNLjR/QCp3Ba5CQX9AC84ZA98vf0BEhhrV9hV/QBWZcwGSBH9AIiGao+pLf0D79qbIp7x+QKHRQ29UQH9AxZ/oE3aQfkBbdIAOPQd/QHUpUha8Kn9ALvhiY2lhf0DERUZUq91/QOulRx2DKX9AgIAOrACzf0Bpdd59Og5/QLtAmPdCB39AAk9gkg8cf0AIcZ2bN79+QJ4J79ChqH9AAYNemRC/fkBQk72ZbIZ/QA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_pri\":{\"__ndarray__\":\"YgmFR0WxckBDhBiEhqByQDXQymjUI3NA6vqJdlOjc0ABJRpmDX1zQO2hhBuyXHRAo0hfVrq5dEDkjofLetN0QDoN+A5Hl3JAo4AyAUzTc0D64BPIGaBzQCoK2JROAHRALngRZLn3c0AMSajH+n11QAwsxW4g2nNAeGU/4IcSc0ATADU0kftzQCBwDKieinNAhWTvK5/Ec0C0qBauJoh0QK67eszf03JAT9BTcU4FdECxcEAEZWdzQDagKK8rvnJAnlyoBG3PdkDMUwAUuxZ0QCOYBJ0J9YRAL7vNsqxzc0DDv1d06OJzQOLwsaCQE3NADQQSXwoEc0CRdhK6l7x0QOgL7w30tXRAJw5LTMKFc0Dcj6pHLZ9yQO+5Nol1EnRA/GVpUF31hEC5AxBjtLZ0QB3lHtsnlnNAoauIxBYjdEBJyre9PO9yQAnf8pFtdXRAf/9RkB3gckDMv2MFCjpzQJwCTPxwVHNAwmTb24mxdEAPiBaok8t0QHrtKDTmc3NARBw1vkLUdUAUMbeVcudzQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4R0vOljNwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAInh6A6HZXJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9b2SmxCrcUC4t0bw6F9xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlOI1/0HsbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZsj/1n/nJAvO9uG7PCcUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA49JB8Zb3BAAAAAAAAAAADAogYz3EV0QAAAAAAAAAAAAAAAAAAAAABJTEa/WwxvQHmc37YVs3FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIx+nZFxo21AAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_hyphen_minus_i\":{\"__ndarray__\":\"wNvkGRKV3D/gkEDXMALdP4CAkdixTtg/wD/u3hTxzz8gVOX8dhLUPwAavpobjZW/wNn3k1PJwr8AAdBBbofEv+BD9CsYwt4/wC7jL+1jyj9A2rWD4TzQP8Cug8/ju8g/QHrLEL4ywz/AwOimfRvUv0DBriKv6cM/AF9GEPvE3D+AjubGq37HPyA+Kpo3FtE/AB9aylYyyD8AIpmW7/q2v4CrbLsgVt0/wAFY1B4QwD/AYt1hDxXUPwC6qHEqa9s/AMM+PP8r17+AX9Xcdli1P3DKR4PNIOw/wGJv5O2j0j+ANphQyfrCP8BbJJZtRdc/QGfBToRv3j/AOyQlxIDEv8CFAqSwaMO/ALJEMUOg0T/g1aLiaHrfP4BJnPy3T7k/cFaIqVKK6z8AzOqAkq+rv0B9/OYUBtA/ANga3ZoKsT8AjhdE243cPwD8F+djypA/gKZ/LNeX2j+Am6/3tWDVP4Ag+Vf5e9U/AB3a1SEVwL8Aye5iSvrFv+BM4J3mGdE/oDN3186v17/Acw8bjunDPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_mag\":{\"__ndarray__\":\"LhdIHKPPKkDiCETSnRkrQGy9ChDMBipAECqAsKnRKEApbrjYsSEpQPIl3EV8yCZAs60oc6n+JUDPNh54wuElQOIhxiD6FCtA2krZc/5qKECSDDZx+9soQAp2lrAxcCdANf+taegMKEDVmqmclZQkQOOR3om7QChAQynRwgWvKUC17hkT28cnQIz34KPyFylALVIsmK50KEAmlSI0bmgmQNqJghuXySpAoRQ2hXbIJ0Doakf4OFwpQOCqDQakvypAyWILI7/YIkCW+U8c1WsnQJP6BJPN+iJAiHiRAjZbKUBt8LsxsSMoQEWX05ECuyhALlZbPN+4KUAINK/javElQLXJgJ5XASZA9SkVGW4dKUDfCtPF/QErQJFD2vEbcCdAKzCN97XWIkCCvgRL6vIkQMtZ1mG87yhAU0WCqKpdJ0CJnsdl+IYqQFiEyaZihSZAVa91k4aiKkB/0trW3ckpQBW8W22LnClAHQ3XD/UUJkDTVroEN8klQKHlcNQkUylAg4YsjRjbI0DfEE11kyIoQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"i\":{\"__ndarray__\":\"UPB4i/rqKUBbBIpLjDEqQGgxRoFWRClAEXEEXeVRKECIQ9EgHoEoQP+EqdNC0yZAGo14wc5JJkDTdiUx4DMmQMN/Zl/pHipAH74Zv24BKEDAXRhlFFooQE9nWCFCDSdATNFqcR3AJ0Db4OCJcTUlQN7WU80U8SdAS/ZO6t3IKEB7VP5j4GknQJulD+dAjyhAsekCPeUTKEBqx08TZJYmQH4kpxXm3ilAmrTkCTaIJ0DSfzh9kLsoQBBlgLJK5ClA4VjtHB+SI0DXTpYuJEEnQOx90LrAOCFAcv1tkxbGKECTj3kMxtcnQGd0IiXXAChA9ErlGWPFKED3xEP0bUMmQMzTEGH6TiZAZQSL/2uQKEAw9L1+KgYqQP4K4YF8PSdAxKr0zBAeIUBOqYXdmQ4lQOF1nrqLbyhAow/IcpU7J0AZ4qaLiaIpQFr41XT9fCZAIbIR2sfNKUCjVR0n2B4pQBHzm6Kr8ChAkXUul0lVJkD3EUYuICEmQDrjgZ9VyihAIEDoA5eYJEAQ0+A87dInQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"i_mag\":{\"__ndarray__\":\"UPB4i/rqKUBbBIpLjDEqQGgxRoFWRClAEXEEXeVRKECIQ9EgHoEoQP+EqdNC0yZAGo14wc5JJkDTdiUx4DMmQMN/Zl/pHipAH74Zv24BKEDAXRhlFFooQE9nWCFCDSdATNFqcR3AJ0Db4OCJcTUlQN7WU80U8SdAS/ZO6t3IKEB7VP5j4GknQJulD+dAjyhAsekCPeUTKEBqx08TZJYmQH4kpxXm3ilAmrTkCTaIJ0DSfzh9kLsoQBBlgLJK5ClA4VjtHB+SI0DXTpYuJEEnQOx90LrAOCFAcv1tkxbGKECTj3kMxtcnQGd0IiXXAChA9ErlGWPFKED3xEP0bUMmQMzTEGH6TiZAZQSL/2uQKEAw9L1+KgYqQP4K4YF8PSdAxKr0zBAeIUBOqYXdmQ4lQOF1nrqLbyhAow/IcpU7J0AZ4qaLiaIpQFr41XT9fCZAIbIR2sfNKUCjVR0n2B4pQBHzm6Kr8ChAkXUul0lVJkD3EUYuICEmQDrjgZ9VyihAIEDoA5eYJEAQ0+A87dInQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"i_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"is_binary\":[false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,false,false,false,false,true,true,false,false,false,false,true,false,true,false,false,true,true,false,false,false,false,false,true,false,false],\"mass_pri\":{\"__ndarray__\":\"18GGfC5P8D8pGyNf5yHwP4nQu12rfvE/HAWOYzxi8z9WZM3TFcnyPy2EvEt08/Y/YcG5f7ao+D9cBCaqoyP5Pxcz5/23CPA/3Yw6nXww9D93X2hGGFTzP/Z4kJIZEPU/bUsAEm7r9D/3gq1L3mD8P6khN+AJVvQ/15X2ig5O8T+M6Vr1cPn0PzK/B/yFA/M/dM+2ci/z8z+WHda/r8j3P1lD3ACWn/A/x6w7E79A9T+kkyqHxl7yPyanV6VDa/A/tgHlUFR+AEAC6/YWvcX1PwaR0lVCyAJAckAkuc6V8j+22K2FcoT0P3PwPfbrUPE/eXkGrLwe8T988VTL87X4P92xFOhEl/g/BnQiQCDw8j9jvUdFOB7wPymWnQCUsvU/s/m05WnKAkBeaCzBvZr4P9gzh2FoL/M/KuldyUn79T9hYNq9huLwP65f+s2TZfc/48lsD8298D8iqr4ricjxP0MxD6NSHPI/RC1jzt2C+D/xOq7z7P34P3yfAA8Dl/I/eB7jxgYT/j9INrneDZ30Pw==\",\"dtype\":\"float64\",\"shape\":[50]},\"mass_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqu0lACIbkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0ejg3eJe8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXai6Io916z+ktqys1wXqPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9ILTfzVf2j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7GnepDPE/i4iTnv3t6z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIT5SwAag+U/AAAAAAAAAABwwPRAs5H2PwAAAAAAAAAAAAAAAAAAAACswm0vZ3ThPxS8G0SLnOs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJpAWnOKktg/AAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]},\"parallax\":{\"__ndarray__\":\"OSG0mhpAAEBhACq9zEj/P2BHZ+DbDQBAeNE29M4EAEAuaI3ADBQAQGy+WLUxLgBA5nydi7QIAEAfYIs7XrX/Px+nAlzREQBAqi3mzsx8/z/uvwSIdvn/P8flUp+XCQBARTN0N/5V/z+bxXEP79H/PwsKNkbV0f8/zV5GlBq9/z+CeBpWJun/P48QWgl2tP8/n2k0uGwVAEAuM+Y92fj/P0uIMneTWP8/tTqDlpfE/z8KQWjIj10AQPUqby1kKABAOJj659s0AECnJVejgyIAQHQBitwKwv8/GUDfkc2L/z9/2gIxDwYAQK96wqC1/v8/8OACUEYIAEB3MUfSohUAQHbyVd2nHgBAZgC4ytDz/z8bAbL2XkQAQPyX4Yqp//8/EumHZeRbAEDyed0BRR0AQPSST7bqCgBAzZAvwu3d/z9AkUPOqmH/P/QJkNWLCwBAm4aZ/OeL/z8T8Ct+pBkAQLRoDfBBHQBAAVtw4HsSAEBsMsb9A0MAQDAhz249lv8/ffSCnxhDAEAOrmPPg7j/Pw==\",\"dtype\":\"float64\",\"shape\":[50]},\"parallax_unc\":{\"__ndarray__\":\"mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"r-i\":{\"__ndarray__\":\"gC8DPqnwsz+AtyKCl265PwChLlX127U/AJhBRWGogz8A6mDAadacPwCwNqOhebG/gJhXJoWkuL+AyQIySn6+vwANtgqi0r4/AHq/aGxqkT8AKxBtPsimPwBQMYtmk2G/AJBJYcEjmL/AL/BO+NzFvwA4bk6uA3+/ADDtdwZetT8AIMjcROxvPwCydUSIF5E/AMCmjUAkdj+Ahvy52Be3vwDDOe6qRrQ/ABwAWuZKk78ADP96wiepPwDTQV5unqw/gHn7r42jx78AKipwW/Cfv0A1Y7jQgMo/ACa3SvKLqD8ABsURhoGQvwAHlgOCjqc/AF5sq2RstD8A2KTsaZC7v4CTvTyhcri/AEXHvCQ6oD+A8N0kKSyzPwCY5Ok8aI6/QCCXx7nkxz8AjwuMn1CuvwDQoxr+uGE/ACYhewk3mL+AhGNcGIC5P4Bg6FJZibG/AIU0vnU+sj+Ao04sOxawPwB9a1ANiqs/gEE81Vn6vL+ADbYvjKe9vwDA+Ue9Wok/gAnYLHsqyL8AWPvplYuTvw==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_hyphen_minus_i\":{\"__ndarray__\":\"gC8DPqnwsz+AtyKCl265PwChLlX127U/AJhBRWGogz8A6mDAadacPwCwNqOhebG/gJhXJoWkuL+AyQIySn6+vwANtgqi0r4/AHq/aGxqkT8AKxBtPsimPwBQMYtmk2G/AJBJYcEjmL/AL/BO+NzFvwA4bk6uA3+/ADDtdwZetT8AIMjcROxvPwCydUSIF5E/AMCmjUAkdj+Ahvy52Be3vwDDOe6qRrQ/ABwAWuZKk78ADP96wiepPwDTQV5unqw/gHn7r42jx78AKipwW/Cfv0A1Y7jQgMo/ACa3SvKLqD8ABsURhoGQvwAHlgOCjqc/AF5sq2RstD8A2KTsaZC7v4CTvTyhcri/AEXHvCQ6oD+A8N0kKSyzPwCY5Ok8aI6/QCCXx7nkxz8AjwuMn1CuvwDQoxr+uGE/ACYhewk3mL+AhGNcGIC5P4Bg6FJZibG/AIU0vnU+sj+Ao04sOxawPwB9a1ANiqs/gEE81Vn6vL+ADbYvjKe9vwDA+Ue9Wok/gAnYLHsqyL8AWPvplYuTvw==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_mag\":{\"__ndarray__\":\"r/b03dsSKkDKSY56aWQqQKqO8GsOcClAd8FVdc9WKED9c7FViY8oQJ8XY5BPsCZA6d0rt4UYJkBAccGc4/YlQN3re6OOXCpA3B1O9SMKKEDrbYWj3HAoQDq07+ooDCdAhCy6kAu0J0AcIKWo/d0kQBcJilc07SdAq9A+95nzKED9IEwo32snQHTgMavMlyhAiZ4UxakWKEBdztthNGgmQASYg2tzBypAjLS3lpB+J0DefrM/uNQoQOOm3iDpACpA+2ot5pAzI0DCOd4ALDEnQMEKsv3DoiFAmLS4haLeKEAQrXBJhc8nQG4KJqdlGChAsCM84zvuKEBHe2ogTQwmQKVYlx4VHiZAqstHJKagKEARsAfRgiwqQNiRpnLiNSdARQcTtKN9IUC/nfk9SfAkQB4ggEqncChAEH8K7nkvJ0AiqV+8idUpQJknMMLqWSZAKxuOxUTyKUDq8nWdBD8pQI5e7K81DClADv2D41QbJkDcpeYV0eUlQKrh006s0ChA+t80F+03JEBk1etxJ8knQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"r_mag_unc\":{\"__ndarray__\":\"exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEP3sUrkfheoQ/exSuR+F6hD97FK5H4XqEPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"84330dc9-6152-46be-98d1-fb21f015a641\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1b083df3-d45f-4863-88e0-3d4d13f423cd\",\"type\":\"UnionRenderers\"}},\"id\":\"93af3436-9270-4d3c-96d2-12d4053d3fa2\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"f123c02e-443c-4c56-874d-3176adb5d7f6\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"b0256d0c-1097-4545-a5aa-bddd5281bf97\",\"type\":\"HoverTool\"},{\"id\":\"7184ec29-de72-4c10-b0f9-7e15df0203e5\",\"type\":\"SaveTool\"},{\"id\":\"81b2e4c9-c02d-46a5-bfde-19785ce307ec\",\"type\":\"PanTool\"},{\"id\":\"1eb65896-0f4a-4105-bd4b-5473e3f5eae4\",\"type\":\"WheelZoomTool\"},{\"id\":\"9eaaac72-7d0d-45bf-a833-ca1a8674d515\",\"type\":\"BoxZoomTool\"},{\"id\":\"975dfbd2-40b8-4ab5-ac4a-b392fc542b57\",\"type\":\"ResetTool\"}]},\"id\":\"03f4e1f0-d10d-4aeb-8bb8-2d55799d784f\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"baf18eec-6eb1-4d61-ae94-20785d85a195\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"92d71357-bad5-46e5-9e61-67abebc18b69\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"r-i\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"f123c02e-443c-4c56-874d-3176adb5d7f6\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"baf18eec-6eb1-4d61-ae94-20785d85a195\",\"type\":\"BasicTicker\"}},\"id\":\"85155b65-f1bf-4152-91f5-13aa9ae77716\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":2.449489742783178},\"x\":{\"field\":\"r-i\"},\"y\":{\"field\":\"r_mag\"}},\"id\":\"ffbf9039-34ec-4989-a6d2-23e223c47592\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57585c01-1719-46a2-becd-e1b052b4f417\",\"type\":\"BasicTicker\"}},\"id\":\"87d3f96d-8342-474c-ae4c-44b46b534edf\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"57585c01-1719-46a2-becd-e1b052b4f417\",\"type\":\"BasicTicker\"},{\"attributes\":{\"children\":[{\"id\":\"6148bb4f-bb4e-40a6-b4aa-7fd8b42ebec5\",\"type\":\"Row\"}]},\"id\":\"bf98c7d8-8244-48a4-b498-8734433ed02a\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"ee72e9ff-abd8-4c32-8cf0-034fd16cf700\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"r_mag\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"c4e2a751-4eb5-48b6-aa0d-59c98d39dc1b\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"881f0147-c581-484c-acc1-620e8a35ceb8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57585c01-1719-46a2-becd-e1b052b4f417\",\"type\":\"BasicTicker\"}},\"id\":\"0f68cde1-7f5e-44a5-a89b-122a83334283\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"b973b33d-465b-4c8b-89fe-36399cb9f0e7\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"40b70e01-6663-47ff-a9b1-bd5cd5867747\",\"roots\":{\"b973b33d-465b-4c8b-89fe-36399cb9f0e7\":\"555f4a99-1a56-44e2-bab1-197e3ebe3775\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Layout\n", " .Points.I :Points [g-i,g_mag] (g_mag,i_mag,r_mag,is_binary,distance,mass_pri,mass_sec,eep_pri,eep_sec,g_mag_unc,r_mag_unc,i_mag_unc,parallax,parallax_unc,i,g-i,r-i)\n", " .Points.II :Points [r-i,r_mag] (g_mag,i_mag,r_mag,is_binary,distance,mass_pri,mass_sec,eep_pri,eep_sec,g_mag_unc,r_mag_unc,i_mag_unc,parallax,parallax_unc,i,g-i,r-i)" ] }, "execution_count": 34, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "b973b33d-465b-4c8b-89fe-36399cb9f0e7" } }, "output_type": "execute_result" } ], "source": [ "%%opts Points [width=400, height=400, tools=['hover']]\n", "from isochrones.cluster import StarCatalog\n", "import pandas as pd\n", "\n", "df = pd.read_hdf('overview/small-test-cluster.h5')\n", "test_stars = StarCatalog(df, bands='gri', props=['parallax'])\n", "test_stars.hr" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('cdfaa53c-db29-4bc6-9153-10451300a771')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"e0f088d6-1706-4b7c-a58f-09ba5150293d\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"end\":1.3324240170934925,\"reset_end\":1.3324240170934925,\"reset_start\":-0.4542818629065071,\"start\":-0.4542818629065071},\"id\":\"7d69766d-0c1d-4083-90f5-818f1903e846\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"6478aa3e-2e11-4625-be27-96140c71658f\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"end\":8.262815277815434,\"reset_end\":8.262815277815434,\"reset_start\":13.550032206349389,\"start\":13.550032206349389},\"id\":\"9be8b2eb-ea5f-4e8c-98a7-314b5531e334\",\"type\":\"Range1d\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9c0bd046-eb2d-4ae4-93b4-d64993bebdee\",\"type\":\"BasicTicker\"}},\"id\":\"0fffe86a-e321-4b96-8555-31d12b4c76a5\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Simulated data\"},\"renderers\":[{\"id\":\"f8e13f65-5c9e-46c0-9811-0cb0f2da7086\",\"type\":\"GlyphRenderer\"}]},\"id\":\"7aa1eddf-7b77-4f50-9cd7-f3e22558f827\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis_label\":\"g-i\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"6b5ed830-8c03-43ea-b35c-eb5a54ce79fa\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9c0bd046-eb2d-4ae4-93b4-d64993bebdee\",\"type\":\"BasicTicker\"}},\"id\":\"37daad67-65dc-4a16-996f-b03222b28b0e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"b773b561-9644-4b26-a6a9-c26775f9e824\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ed42b8de-a971-4c47-bc53-ed4df83109b5\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"5cd43638-711e-44e0-9642-46a1be65b332\",\"type\":\"Circle\"},\"nonselection_glyph\":{\"id\":\"a8df879e-87e6-4a86-bf31-e9875abc4a6e\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"03b97636-eaff-40be-8fa1-73e40c9fe444\",\"type\":\"CDSView\"}},\"id\":\"f8e13f65-5c9e-46c0-9811-0cb0f2da7086\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"9c0bd046-eb2d-4ae4-93b4-d64993bebdee\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"g_mag\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"16182686-7c93-481d-96ac-4aaa21158a95\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"39e280ad-0dfa-441d-87fb-37efcaa2b0ea\",\"type\":\"BasicTicker\"}},\"id\":\"318bdec6-a333-4ffb-8388-502df8b9fb9f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"5cd43638-711e-44e0-9642-46a1be65b332\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"39e280ad-0dfa-441d-87fb-37efcaa2b0ea\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2c3e7b03-e6a1-4e6e-80c4-80044dfc01d4\",\"type\":\"Selection\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"39e280ad-0dfa-441d-87fb-37efcaa2b0ea\",\"type\":\"BasicTicker\"}},\"id\":\"6d315102-d267-4dc9-ba19-972d2451fada\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#30a2da\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"a8df879e-87e6-4a86-bf31-e9875abc4a6e\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"b773b561-9644-4b26-a6a9-c26775f9e824\",\"type\":\"ColumnDataSource\"}},\"id\":\"03b97636-eaff-40be-8fa1-73e40c9fe444\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"data\":{\"distance\":{\"__ndarray__\":\"SKIV77nEfkCKct+6//Z/QJcooOsFJX9A/c2ynJ42f0DigBLtBxl/QET9j37I5n5AZG92mggvf0Du5PCEjYl/QPhRZa5ZHX9Aszm42jXCf0BOA0iNY0Z/QNkteBFPLX9Ac/Xidorpf0CuYISrPW1/QN17OyNXbX9ACSDBvN2Bf0AO136KYFZ/QPBY43x0in9AXTzfZV8Wf0B5lnNp/UZ/QDMKFkXp5n9A6MMJdXB6f0Cd7jfjV41+QPTGf4zh8X5AgvROORPafkDOZeEXJ/1+QDF1V2/3fH9AAjycNxuzf0BhhPHNLjR/QCp3Ba5CQX9AC84ZA98vf0BEhhrV9hV/QBWZcwGSBH9AIiGao+pLf0D79qbIp7x+QKHRQ29UQH9AxZ/oE3aQfkBbdIAOPQd/QHUpUha8Kn9ALvhiY2lhf0DERUZUq91/QOulRx2DKX9AgIAOrACzf0Bpdd59Og5/QLtAmPdCB39AAk9gkg8cf0AIcZ2bN79+QJ4J79ChqH9AAYNemRC/fkBQk72ZbIZ/QA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_pri\":{\"__ndarray__\":\"YgmFR0WxckBDhBiEhqByQDXQymjUI3NA6vqJdlOjc0ABJRpmDX1zQO2hhBuyXHRAo0hfVrq5dEDkjofLetN0QDoN+A5Hl3JAo4AyAUzTc0D64BPIGaBzQCoK2JROAHRALngRZLn3c0AMSajH+n11QAwsxW4g2nNAeGU/4IcSc0ATADU0kftzQCBwDKieinNAhWTvK5/Ec0C0qBauJoh0QK67eszf03JAT9BTcU4FdECxcEAEZWdzQDagKK8rvnJAnlyoBG3PdkDMUwAUuxZ0QCOYBJ0J9YRAL7vNsqxzc0DDv1d06OJzQOLwsaCQE3NADQQSXwoEc0CRdhK6l7x0QOgL7w30tXRAJw5LTMKFc0Dcj6pHLZ9yQO+5Nol1EnRA/GVpUF31hEC5AxBjtLZ0QB3lHtsnlnNAoauIxBYjdEBJyre9PO9yQAnf8pFtdXRAf/9RkB3gckDMv2MFCjpzQJwCTPxwVHNAwmTb24mxdEAPiBaok8t0QHrtKDTmc3NARBw1vkLUdUAUMbeVcudzQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"eep_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4R0vOljNwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAInh6A6HZXJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9b2SmxCrcUC4t0bw6F9xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlOI1/0HsbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZsj/1n/nJAvO9uG7PCcUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA49JB8Zb3BAAAAAAAAAAADAogYz3EV0QAAAAAAAAAAAAAAAAAAAAABJTEa/WwxvQHmc37YVs3FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIx+nZFxo21AAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]},\"g-i\":{\"__ndarray__\":\"wNvkGRKV3D/gkEDXMALdP4CAkdixTtg/wD/u3hTxzz8gVOX8dhLUPwAavpobjZW/wNn3k1PJwr8AAdBBbofEv+BD9CsYwt4/wC7jL+1jyj9A2rWD4TzQP8Cug8/ju8g/QHrLEL4ywz/AwOimfRvUv0DBriKv6cM/AF9GEPvE3D+AjubGq37HPyA+Kpo3FtE/AB9aylYyyD8AIpmW7/q2v4CrbLsgVt0/wAFY1B4QwD/AYt1hDxXUPwC6qHEqa9s/AMM+PP8r17+AX9Xcdli1P3DKR4PNIOw/wGJv5O2j0j+ANphQyfrCP8BbJJZtRdc/QGfBToRv3j/AOyQlxIDEv8CFAqSwaMO/ALJEMUOg0T/g1aLiaHrfP4BJnPy3T7k/cFaIqVKK6z8AzOqAkq+rv0B9/OYUBtA/ANga3ZoKsT8AjhdE243cPwD8F+djypA/gKZ/LNeX2j+Am6/3tWDVP4Ag+Vf5e9U/AB3a1SEVwL8Aye5iSvrFv+BM4J3mGdE/oDN3186v17/Acw8bjunDPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_hyphen_minus_i\":{\"__ndarray__\":\"wNvkGRKV3D/gkEDXMALdP4CAkdixTtg/wD/u3hTxzz8gVOX8dhLUPwAavpobjZW/wNn3k1PJwr8AAdBBbofEv+BD9CsYwt4/wC7jL+1jyj9A2rWD4TzQP8Cug8/ju8g/QHrLEL4ywz/AwOimfRvUv0DBriKv6cM/AF9GEPvE3D+AjubGq37HPyA+Kpo3FtE/AB9aylYyyD8AIpmW7/q2v4CrbLsgVt0/wAFY1B4QwD/AYt1hDxXUPwC6qHEqa9s/AMM+PP8r17+AX9Xcdli1P3DKR4PNIOw/wGJv5O2j0j+ANphQyfrCP8BbJJZtRdc/QGfBToRv3j/AOyQlxIDEv8CFAqSwaMO/ALJEMUOg0T/g1aLiaHrfP4BJnPy3T7k/cFaIqVKK6z8AzOqAkq+rv0B9/OYUBtA/ANga3ZoKsT8AjhdE243cPwD8F+djypA/gKZ/LNeX2j+Am6/3tWDVP4Ag+Vf5e9U/AB3a1SEVwL8Aye5iSvrFv+BM4J3mGdE/oDN3186v17/Acw8bjunDPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"g_mag\":{\"__ndarray__\":\"LhdIHKPPKkDiCETSnRkrQGy9ChDMBipAECqAsKnRKEApbrjYsSEpQPIl3EV8yCZAs60oc6n+JUDPNh54wuElQOIhxiD6FCtA2krZc/5qKECSDDZx+9soQAp2lrAxcCdANf+taegMKEDVmqmclZQkQOOR3om7QChAQynRwgWvKUC17hkT28cnQIz34KPyFylALVIsmK50KEAmlSI0bmgmQNqJghuXySpAoRQ2hXbIJ0Doakf4OFwpQOCqDQakvypAyWILI7/YIkCW+U8c1WsnQJP6BJPN+iJAiHiRAjZbKUBt8LsxsSMoQEWX05ECuyhALlZbPN+4KUAINK/javElQLXJgJ5XASZA9SkVGW4dKUDfCtPF/QErQJFD2vEbcCdAKzCN97XWIkCCvgRL6vIkQMtZ1mG87yhAU0WCqKpdJ0CJnsdl+IYqQFiEyaZihSZAVa91k4aiKkB/0trW3ckpQBW8W22LnClAHQ3XD/UUJkDTVroEN8klQKHlcNQkUylAg4YsjRjbI0DfEE11kyIoQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"is_binary\":[false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,false,false,false,false,true,true,false,false,false,false,true,false,true,false,false,true,true,false,false,false,false,false,true,false,false],\"mass_pri\":{\"__ndarray__\":\"18GGfC5P8D8pGyNf5yHwP4nQu12rfvE/HAWOYzxi8z9WZM3TFcnyPy2EvEt08/Y/YcG5f7ao+D9cBCaqoyP5Pxcz5/23CPA/3Yw6nXww9D93X2hGGFTzP/Z4kJIZEPU/bUsAEm7r9D/3gq1L3mD8P6khN+AJVvQ/15X2ig5O8T+M6Vr1cPn0PzK/B/yFA/M/dM+2ci/z8z+WHda/r8j3P1lD3ACWn/A/x6w7E79A9T+kkyqHxl7yPyanV6VDa/A/tgHlUFR+AEAC6/YWvcX1PwaR0lVCyAJAckAkuc6V8j+22K2FcoT0P3PwPfbrUPE/eXkGrLwe8T988VTL87X4P92xFOhEl/g/BnQiQCDw8j9jvUdFOB7wPymWnQCUsvU/s/m05WnKAkBeaCzBvZr4P9gzh2FoL/M/KuldyUn79T9hYNq9huLwP65f+s2TZfc/48lsD8298D8iqr4ricjxP0MxD6NSHPI/RC1jzt2C+D/xOq7z7P34P3yfAA8Dl/I/eB7jxgYT/j9INrneDZ30Pw==\",\"dtype\":\"float64\",\"shape\":[50]},\"mass_sec\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqu0lACIbkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0ejg3eJe8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXai6Io916z+ktqys1wXqPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9ILTfzVf2j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7GnepDPE/i4iTnv3t6z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIT5SwAag+U/AAAAAAAAAABwwPRAs5H2PwAAAAAAAAAAAAAAAAAAAACswm0vZ3ThPxS8G0SLnOs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJpAWnOKktg/AAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"2c3e7b03-e6a1-4e6e-80c4-80044dfc01d4\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"9a71218a-a3f7-4d54-accb-1148312ca702\",\"type\":\"UnionRenderers\"}},\"id\":\"b773b561-9644-4b26-a6a9-c26775f9e824\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"data\":{\"EEP\":{\"__ndarray__\":\"AAAAAADAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAAEBzQAAAAAAAYHNAAAAAAACAc0AAAAAAAKBzQAAAAAAAwHNAAAAAAADgc0AAAAAAAAB0QAAAAAAAIHRAAAAAAABAdEAAAAAAAGB0QAAAAAAAgHRAAAAAAACgdEAAAAAAAMB0QAAAAAAA4HRAAAAAAAAAdUAAAAAAACB1QAAAAAAAQHVAAAAAAABgdUAAAAAAAIB1QAAAAAAAoHVAAAAAAADAdUAAAAAAAOB1QAAAAAAAAHZAAAAAAAAgdkAAAAAAAEB2QAAAAAAAYHZAAAAAAACAdkAAAAAAAKB2QAAAAAAAwHZAAAAAAADgdkAAAAAAAAB3QAAAAAAAIHdAAAAAAABAd0AAAAAAAGB3QAAAAAAAgHdAAAAAAACgd0AAAAAAAMB3QAAAAAAA4HdAAAAAAAAAeEAAAAAAACB4QAAAAAAAQHhAAAAAAABgeEAAAAAAAIB4QAAAAAAAoHhAAAAAAADAeEAAAAAAAOB4QAAAAAAAAHlAAAAAAAAgeUAAAAAAAEB5QAAAAAAAYHlAAAAAAACAeUAAAAAAAKB5QAAAAAAAwHlAAAAAAADgeUAAAAAAAAB6QAAAAAAAIHpAAAAAAABAekAAAAAAAGB6QAAAAAAAgHpAAAAAAACgekAAAAAAAMB6QAAAAAAA4HpAAAAAAAAAe0AAAAAAACB7QAAAAAAAQHtAAAAAAABge0AAAAAAAIB7QAAAAAAAoHtAAAAAAADAe0AAAAAAAOB7QAAAAAAAAHxAAAAAAAAgfEAAAAAAAEB8QAAAAAAAYHxAAAAAAACAfEAAAAAAAKB8QAAAAAAAwHxAAAAAAADgfEAAAAAAAAB9QAAAAAAAIH1AAAAAAABAfUAAAAAAAGB9QAAAAAAAgH1AAAAAAACgfUAAAAAAAMB9QAAAAAAA4H1AAAAAAAAAfkAAAAAAACB+QAAAAAAAQH5AAAAAAABgfkAAAAAAAIB+QAAAAAAAoH5AAAAAAADAfkAAAAAAAOB+QAAAAAAAAH9AAAAAAAAgf0AAAAAAAEB/QAAAAAAAYH9AAAAAAACAf0AAAAAAAKB/QAAAAAAAwH9AAAAAAADgf0AAAAAAAACAQAAAAAAAEIBAAAAAAAAggEAAAAAAADCAQAAAAAAAQIBAAAAAAABQgEAAAAAAAGCAQAAAAAAAcIBAAAAAAACAgEAAAAAAAJCAQAAAAAAAoIBAAAAAAACwgEAAAAAAAMCAQAAAAAAA0IBAAAAAAADggEAAAAAAAPCAQAAAAAAAAIFAAAAAAAAQgUAAAAAAACCBQAAAAAAAMIFAAAAAAABAgUAAAAAAAFCBQAAAAAAAYIFAAAAAAABwgUAAAAAAAICBQAAAAAAAkIFAAAAAAACggUAAAAAAALCBQAAAAAAAwIFAAAAAAADQgUAAAAAAAOCBQAAAAAAA8IFAAAAAAAAAgkAAAAAAABCCQAAAAAAAIIJAAAAAAAAwgkAAAAAAAECCQAAAAAAAUIJAAAAAAABggkAAAAAAAHCCQAAAAAAAgIJAAAAAAACQgkAAAAAAAKCCQAAAAAAAsIJAAAAAAADAgkAAAAAAANCCQAAAAAAA4IJAAAAAAADwgkAAAAAAAACDQAAAAAAAEINAAAAAAAAgg0AAAAAAADCDQAAAAAAAQINAAAAAAABQg0AAAAAAAGCDQAAAAAAAcINAAAAAAACAg0AAAAAAAJCDQAAAAAAAoINAAAAAAACwg0AAAAAAAMCDQAAAAAAA0INAAAAAAADgg0AAAAAAAPCDQAAAAAAAAIRAAAAAAAAQhEAAAAAAACCEQAAAAAAAMIRAAAAAAABAhEAAAAAAAFCEQAAAAAAAYIRAAAAAAABwhEAAAAAAAICEQAAAAAAAkIRAAAAAAACghEAAAAAAALCEQAAAAAAAwIRAAAAAAADQhEAAAAAAAOCEQAAAAAAA8IRAAAAAAAAAhUAAAAAAABCFQAAAAAAAIIVAAAAAAAAwhUAAAAAAAECFQAAAAAAAUIVAAAAAAABghUAAAAAAAHCFQAAAAAAAgIVAAAAAAACQhUAAAAAAAKCFQAAAAAAAsIVAAAAAAADAhUAAAAAAANCFQA==\",\"dtype\":\"float64\",\"shape\":[200]},\"M\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"R\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"Teff\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"g-i\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"g_hyphen_minus_i\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"g_mag\":{\"__ndarray__\":\"7GuscDrLKkA0dbeoz5EqQGrX07p8VSpARIMAGIAQKkCbZH4KhMkpQNDFUFVrhilAckCCCo0kKUB+jCEPYNkoQCOeM/yzhChA/2sk72ovKEByIxgG3dgnQMWrmEmFWydAJUd5J0gVJ0AmfIlNaM4mQE095zvjfCZAUF04UfQ5JkByRLKY7PYlQNHi22cEtSVAGOOWK8B7JUA1L2tIKjklQDinG7Pf/SRA7PfyMiLAJEA1Jzwc5YUkQMIoHXkLTSRArYSgw6kQJEB02Q4kJNUjQFzoNuCkmyNAR+4wgPxyI0A2ymriY1QjQB3hRQPOOSNA5yMuYv0fI0CgU1ttnwUjQA7/Uapg7CJAKzYUbpHTIkDf5z/+3rsiQHq9lHeOpCJA3iGQzpqPIkBMVxgxz3oiQFz2xv4ZZiJA2w0aO4pUIkCZ/ugFFkMiQGD6c56cMiJAwfhdKd8iIkApcjrpqhIiQLSqUxWyAiJA+6cPdTPyIUD+sBVc8twhQKDRUy3kxSFA/xhP0Xy3IUDBzCGwPK0hQF1DSwxppSFAZIOKDNCeIUDr66NaDpkhQMHzDFPrkyFAO9zAPfyOIUDymmRfOoohQGbAh0JjhSFAdoswbX6AIUB+b2TChXshQN5WTayQdiFAbqyPCj1yIUCYeCRER3AhQLziIc0BcyFAKitJCM15IUCTZFtoDIMhQJqQDIKJiyFAdiVqeJaQIUDKxxz78Y4hQDzKKRBZhCFAwUO5Q6Z0IUA61QRYrmQhQNTn4rDdViFA8MMtHo9LIUAJ1tEuX0IhQAzfGTLwOiFA/goqTgs1IUDUQvfcoTAhQAgObWKmLSFAu4kd9yQrIUA6DgPwWyohQGwRd9NiKyFAc3BJywEuIUAxq0r3dzIhQA3xZtJ4OCFAPxKoHpY/IUCPU9zH7UchQFpqgDwyUSFAFWhrlXRbIUDZ6fNQjGYhQLnc0LxiciFAIAWeJw1/IUCd5Y7Lo4whQHwXDd4pmyFATLJueWWqIUCc5CtnPbohQIIQY277yiFAttHsuf3cIUCf4kXaTvAhQNgM2OQMBSJAiq+cm2sbIkDrNDr2zzMiQKQ/UgkhTiJAtk/Ea1lqIkB30UNsYYgiQFe1JeQTqCJA18uJEjHJIkAdImtWeOsiQGAynMWXDiNASttx40MyI0AAKucOPFYjQFskj5X/eSNAswOzpAGcI0DTRbQkCrojQHRW1rlD0iNARRWgW0/dI0CKU+PubtkjQOwliY/GzCNARjeEtSS6I0BYMA4UxqQjQPqybvUsjiNA1UdQJN52I0Bkh/y2AV8jQDrrqgXIRiNAANd8jFEuI0CuXTlZnxUjQBHOOLHd/CJA2z4zNA3kIkBuI+3yHMsiQMspYBlQsiJAfRYNpH6ZIkCdN3wCwIAiQCaDI9sFaCJAIlOVe1NPIkB6/eIPvzYiQEZTQchTHiJAsc+p3w0GIkCzBQTN8+0hQFcSSRz41SFAQ782dSq+IUCrJEujgqYhQKjwEO4UjyFAIpJ4PtV3IUBvNTqTpWAhQN0UYsrESSFAycnAaw4zIUABVlzpoBwhQAHnNZ5OBiFA3/HxjFfwIECnE9RzrNogQLWpz6JixSBA1HgnAY+wIEAFViOI3psgQAKdoBKphyBAgDZeuY+GIEDxbc3yeZkgQPHTctl4riBA5scZ/I3EIEBJk2+cYtsgQOxa40IB8yBA5Xt8i0kLIUAxn/OtGyQhQKDr39tCPSFAgBodbrxWIUB36eDSwXAhQBG21fUGiyFAPCcthBulIUClg34xTr4hQGH6Sh9r2CFAuASKX3vzIUBhhlc2yQ4iQPnEYNxCKiJAViVkvOpFIkCFTWCkjmEiQHcTBYU0fSJAeffc1gGZIkC7jNo+jbQiQHRVc1XdzyJAd8ix27XqIkAfSXcHEAUjQHBILLRmHiNAkZ9YKkk2I0DwPR/PpUsjQGgxlWRrWyNAFlAgLXdHI0Dz2zZqujkjQEXhI4oPGCNAqLkqHZfSIkDcY92QWq8iQMjodHEvlyJA/Af5r49+IkDlkb8OqFwiQBqx+b/tRiJAt+jDkTwKIkBEI0jNneUhQNemQuCeziFAnI2J5arIIUCOOSZQlsghQC2ijp3T1CFA+DPRtK/NIUAoL+QxMLwhQA==\",\"dtype\":\"float64\",\"shape\":[200]},\"logL\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"logg\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":{\"id\":\"c638f0db-c826-4ace-823f-72d9cc798119\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"d78c58bd-b3de-438d-a16a-d5b141980ad0\",\"type\":\"UnionRenderers\"}},\"id\":\"97fc398f-ddd2-4613-a924-d9eb91cac508\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"click_policy\":\"mute\",\"items\":[{\"id\":\"7aa1eddf-7b77-4f50-9cd7-f3e22558f827\",\"type\":\"LegendItem\"},{\"id\":\"960fc19d-1334-4448-aac4-4c75fd8c1511\",\"type\":\"LegendItem\"}],\"plot\":{\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c874ce61-895b-488b-b0de-bbd28cb39c27\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"34221b61-31f1-4177-b531-fc1e3d7e5462\",\"type\":\"SaveTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#fc4f30\"},\"line_color\":{\"value\":\"#fc4f30\"},\"size\":{\"units\":\"screen\",\"value\":2},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"61fb4149-0559-4c20-8ec4-a75f5ba2bd9e\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"#30a2da\"},\"line_color\":{\"value\":\"#30a2da\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"ed42b8de-a971-4c47-bc53-ed4df83109b5\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"ff7687de-9cf1-495d-bf6a-3933d6a36b7f\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#fc4f30\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#fc4f30\"},\"size\":{\"units\":\"screen\",\"value\":2},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"a19a3da7-1335-4a57-afef-60486cba90ef\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"f56d1156-c6b2-4bb6-aaee-1f80e8aa73e3\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"97fc398f-ddd2-4613-a924-d9eb91cac508\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"61fb4149-0559-4c20-8ec4-a75f5ba2bd9e\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"6548566a-acab-4f55-b42a-4f2b93c15eee\",\"type\":\"Circle\"},\"nonselection_glyph\":{\"id\":\"a19a3da7-1335-4a57-afef-60486cba90ef\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"6c817be5-710e-422b-8bc8-e988f470e0fb\",\"type\":\"CDSView\"}},\"id\":\"04c294da-3e58-46ce-a297-bbb6fd7cfc54\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"bbe2c6b7-4b4f-429c-bfef-b450cbcc314a\",\"type\":\"BoxAnnotation\"}},\"id\":\"a735595b-c280-4ce3-8578-d5af68cc54e5\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"9c86c45a-b3b8-4a54-91b5-a57de96cfce6\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"bbe2c6b7-4b4f-429c-bfef-b450cbcc314a\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#fc4f30\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#fc4f30\"},\"size\":{\"units\":\"screen\",\"value\":2},\"x\":{\"field\":\"g-i\"},\"y\":{\"field\":\"g_mag\"}},\"id\":\"6548566a-acab-4f55-b42a-4f2b93c15eee\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"9a71218a-a3f7-4d54-accb-1148312ca702\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"97fc398f-ddd2-4613-a924-d9eb91cac508\",\"type\":\"ColumnDataSource\"}},\"id\":\"6c817be5-710e-422b-8bc8-e988f470e0fb\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"renderers\":[{\"id\":\"f8e13f65-5c9e-46c0-9811-0cb0f2da7086\",\"type\":\"GlyphRenderer\"}],\"tooltips\":[[\"g-i\",\"@{g_hyphen_minus_i}\"],[\"g_mag\",\"@{g_mag}\"],[\"is_binary\",\"@{is_binary}\"],[\"distance\",\"@{distance}\"],[\"mass_pri\",\"@{mass_pri}\"],[\"mass_sec\",\"@{mass_sec}\"],[\"eep_pri\",\"@{eep_pri}\"],[\"eep_sec\",\"@{eep_sec}\"]]},\"id\":\"f49e629b-a39c-4126-973e-b12294c94c13\",\"type\":\"HoverTool\"},{\"attributes\":{\"callback\":null,\"renderers\":[{\"id\":\"04c294da-3e58-46ce-a297-bbb6fd7cfc54\",\"type\":\"GlyphRenderer\"}],\"tooltips\":[[\"g-i\",\"@{g_hyphen_minus_i}\"],[\"g_mag\",\"@{g_mag}\"],[\"EEP\",\"@{EEP}\"],[\"M\",\"@{M}\"],[\"R\",\"@{R}\"],[\"Teff\",\"@{Teff}\"],[\"logL\",\"@{logL}\"],[\"logg\",\"@{logg}\"]]},\"id\":\"83fc30d5-d74c-44f6-9804-46dc87704fa6\",\"type\":\"HoverTool\"},{\"attributes\":{\"label\":{\"value\":\"Model isochrone\"},\"renderers\":[{\"id\":\"04c294da-3e58-46ce-a297-bbb6fd7cfc54\",\"type\":\"GlyphRenderer\"}]},\"id\":\"960fc19d-1334-4448-aac4-4c75fd8c1511\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"c638f0db-c826-4ace-823f-72d9cc798119\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"37daad67-65dc-4a16-996f-b03222b28b0e\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"318bdec6-a333-4ffb-8388-502df8b9fb9f\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":500,\"plot_width\":500,\"renderers\":[{\"id\":\"37daad67-65dc-4a16-996f-b03222b28b0e\",\"type\":\"LinearAxis\"},{\"id\":\"0fffe86a-e321-4b96-8555-31d12b4c76a5\",\"type\":\"Grid\"},{\"id\":\"318bdec6-a333-4ffb-8388-502df8b9fb9f\",\"type\":\"LinearAxis\"},{\"id\":\"6d315102-d267-4dc9-ba19-972d2451fada\",\"type\":\"Grid\"},{\"id\":\"bbe2c6b7-4b4f-429c-bfef-b450cbcc314a\",\"type\":\"BoxAnnotation\"},{\"id\":\"c874ce61-895b-488b-b0de-bbd28cb39c27\",\"type\":\"Legend\"},{\"id\":\"f8e13f65-5c9e-46c0-9811-0cb0f2da7086\",\"type\":\"GlyphRenderer\"},{\"id\":\"04c294da-3e58-46ce-a297-bbb6fd7cfc54\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"d40cdd31-f560-4a41-8a74-fa7e57c94756\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"552bbd09-eb3b-4165-a32b-0a45167366db\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"7d69766d-0c1d-4083-90f5-818f1903e846\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"eded716a-6ff2-475b-af24-06667640280f\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"9be8b2eb-ea5f-4e8c-98a7-314b5531e334\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"6478aa3e-2e11-4625-be27-96140c71658f\",\"type\":\"LinearScale\"}},\"id\":\"cdfaa53c-db29-4bc6-9153-10451300a771\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"6b5ed830-8c03-43ea-b35c-eb5a54ce79fa\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"d78c58bd-b3de-438d-a16a-d5b141980ad0\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"16182686-7c93-481d-96ac-4aaa21158a95\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"d40cdd31-f560-4a41-8a74-fa7e57c94756\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"eded716a-6ff2-475b-af24-06667640280f\",\"type\":\"LinearScale\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"f49e629b-a39c-4126-973e-b12294c94c13\",\"type\":\"HoverTool\"},{\"id\":\"83fc30d5-d74c-44f6-9804-46dc87704fa6\",\"type\":\"HoverTool\"},{\"id\":\"34221b61-31f1-4177-b531-fc1e3d7e5462\",\"type\":\"SaveTool\"},{\"id\":\"ff7687de-9cf1-495d-bf6a-3933d6a36b7f\",\"type\":\"PanTool\"},{\"id\":\"f56d1156-c6b2-4bb6-aaee-1f80e8aa73e3\",\"type\":\"WheelZoomTool\"},{\"id\":\"a735595b-c280-4ce3-8578-d5af68cc54e5\",\"type\":\"BoxZoomTool\"},{\"id\":\"9c86c45a-b3b8-4a54-91b5-a57de96cfce6\",\"type\":\"ResetTool\"}]},\"id\":\"552bbd09-eb3b-4165-a32b-0a45167366db\",\"type\":\"Toolbar\"}],\"root_ids\":[\"cdfaa53c-db29-4bc6-9153-10451300a771\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"e0f088d6-1706-4b7c-a58f-09ba5150293d\",\"roots\":{\"cdfaa53c-db29-4bc6-9153-10451300a771\":\"aedd14a4-0bf0-48b4-a8f0-dd2db0513799\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Overlay\n", " .Points.Simulated_data :Points [g-i,g_mag] (is_binary,distance,mass_pri,mass_sec,eep_pri,eep_sec)\n", " .Points.Model_isochrone :Points [g-i,g_mag] (EEP,M,R,Teff,logL,logg,g-i)" ] }, "execution_count": 35, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "cdfaa53c-db29-4bc6-9153-10451300a771" } }, "output_type": "execute_result" } ], "source": [ "%%opts Points [width=500, height=500, tools=['hover']]\n", "data = hv.Points(test_stars.ds, kdims=['g-i', 'g_mag'], \n", " vdims=['is_binary', 'distance', \n", " 'mass_pri', 'mass_sec', \n", " 'eep_pri', 'eep_sec'], label='Simulated data').options(size=5)\n", "model = mist.hr_isochrone('g', 'i', *cluster_pars[:4], mineep=300, maxeep=700, thin=2, label='Model isochrone').options(size=2)\n", "data * model" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## In the real world!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Price-Whelan et al., submitted." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Price-Whelan et al., submitted." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Price-Whelan et al., submitted." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## TODO for `isochrones`\n", "\n", "* Implement evolution-track grid interpolation in addition to isochrone grids ✓\n", "* Improve treatment of extinction (currently not correct for broad bands/large extinctions) ✓\n", "* Refine/polish cluster fitting, including background model\n", "* Try different multimodal samplers (currently requires MultiNest)\n", "* Implement wrappers for more model grids" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Science to-do\n", "\n", "* Fit Gaia co-moving clusters; infer close binary fraction as function of age?\n", "* Validate binary-star fitting using Gaia eclipsing binaries --- can we discover binaries with just photometry + parallax? \n", "* Test stellar model grids vis-a-vis Gaia RGB data-driven linear model results (Hogg)\n", "* Incorporate gyrochronology models into likelihood (Ruth)\n", "* Look for Cas A birth cluster (Wolfgang)\n", "* [*Insert your ideas here*]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }