{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Gaussian process hyperparameters by optimization\n", "\n", "[Data set download](https://s3.amazonaws.com/bebi103.caltech.edu/data/wolfenden_arrhenius.csv)\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden", "tags": [] }, "outputs": [], "source": [ "# Colab setup ------------------\n", "import os, shutil, sys, subprocess, urllib.request\n", "if \"google.colab\" in sys.modules:\n", " cmd = \"pip install --upgrade iqplot colorcet bebi103 arviz cmdstanpy watermark\"\n", " process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " stdout, stderr = process.communicate()\n", " from cmdstanpy.install_cmdstan import latest_version\n", " cmdstan_version = latest_version()\n", " cmdstan_url = f\"https://github.com/stan-dev/cmdstan/releases/download/v{cmdstan_version}/\"\n", " fname = f\"colab-cmdstan-{cmdstan_version}.tgz\"\n", " urllib.request.urlretrieve(cmdstan_url + fname, fname)\n", " shutil.unpack_archive(fname)\n", " os.environ[\"CMDSTAN\"] = f\"./cmdstan-{cmdstan_version}\"\n", " data_path = \"https://s3.amazonaws.com/bebi103.caltech.edu/data/\"\n", "else:\n", " data_path = \"../data/\"\n", "# ------------------------------" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " function drop(id) {\n", " const view = Bokeh.index.get_by_id(id)\n", " if (view != null) {\n", " view.model.document.clear()\n", " Bokeh.index.delete(view)\n", " }\n", " }\n", "\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", "\n", " // Clean up Bokeh references\n", " if (id != null) {\n", " drop(id)\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim()\n", " drop(id)\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

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

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

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

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"b9477c11-9a47-4a2a-95f4-96dea7881f84\");\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 function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.0.min.js\", \"https://unpkg.com/@holoviz/panel@1.3.1/dist/panel.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"b9477c11-9a47-4a2a-95f4-96dea7881f84\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import scipy.optimize\n", "import scipy.stats as st\n", "\n", "import cmdstanpy\n", "import arviz as az\n", "\n", "import bebi103\n", "\n", "import bokeh.io\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "In the previous lesson we introduced Gaussian processes (GPs) with particular emphasis on the following model where the data consist of centered-and-scaled measurements $\\mathbf{y}$ acquired at positions $\\mathbf{X} = (\\mathbf{x}_1, \\mathbf{x}_2, \\ldots)$.\n", "\n", "\\begin{align}\n", "&\\theta_k \\sim \\text{some hyperprior}\\\\[1em]\n", "&\\boldsymbol{\\sigma} \\sim \\text{some prior}\\\\[1em]\n", "&f \\mid \\mathbf{X}, \\theta_k \\sim \\text{GP}(\\mathbf{0}, k(\\mathbf{x}, \\mathbf{x}' ; \\theta_k)),\\\\[1em]\n", "&\\mathbf{y} \\mid \\mathbf{X}, f, \\boldsymbol{\\sigma} \\sim \\mathrm{MultiNorm}(f(\\mathbf{X}), \\mathrm{diag}(\\boldsymbol{\\sigma}^2)).\n", "\\end{align}\n", "\n", "We learned that we can marginalize out $f$, giving a simpler model\n", "\n", "\\begin{align}\n", "&\\theta_k \\sim \\text{some hyperprior}\\\\[1em]\n", "&\\boldsymbol{\\sigma} \\sim \\text{some prior}\\\\[1em]\n", "&\\mathbf{y} \\mid \\mathbf{X}, \\boldsymbol{\\sigma}, \\theta_k \\sim \\mathrm{MultiNorm}(\\mathbf{0}, \\mathsf{K}_\\mathbf{y}),\n", "\\end{align}\n", "\n", "where $\\mathsf{K}_\\mathbf{y} = \\mathsf{K}(\\mathbf{X}, \\mathbf{X}'; \\theta_k) + \\mathrm{diag}(\\boldsymbol{\\sigma}^2)$, where $\\mathsf{K}(\\mathbf{X}, \\mathbf{X}';\\theta_k)$ is the covariance matrix produced by the kernel $k(\\mathbf{x}, \\mathbf{x}' ; \\theta_k)$. This likelihood and prior together define the posterior distribution of this model. The parameters that remain to be determined are $\\theta_k$ and $\\boldsymbol{\\sigma}$. In this lesson, we will use an optimization approach to obtain MAP estimates for these parameters.\n", "\n", "To start with, we will use the same data set as last time from [Wolfenden and Snider](https://dx.doi.org/10.1021/ar000058i), which can be downloaded [here](https://s3.amazonaws.com/bebi103.caltech.edu/data/wolfenden_arrhenius.csv)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(os.path.join(data_path, 'wolfenden_arrhenius.csv'))\n", "df['T (K)'] = 1000 / df['1000/T (1/K)']\n", "df['k (1/s)'] = np.exp(df['ln k (1/s)'])\n", "\n", "T = df[\"T (K)\"].values\n", "k = df[\"k (1/s)\"].values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While we're at it, we should center and scale and also set up the points at which we want to evaluate the functions generated by the posterior Gaussian process." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "k_scaled = (k - k.mean()) / k.std()\n", "T_scaled = (T - T.mean()) / T.std()\n", "\n", "# Sample at 250 points\n", "Nstar = 250\n", "\n", "# Set up xstar\n", "T_range = T_scaled.max() - T_scaled.min()\n", "xstar = np.linspace(\n", " T_scaled.min() - 0.05 * T_range, T_scaled.max() + 0.05 * T_range, Nstar\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Priors for hyperparameters\n", "\n", "Before we can proceed with inference, we need to first stipulate which kernel we will use and the hyperpriors for its hyperparameters. We will use a squared exponential kernel, which has hyperparameters $\\rho$ (a length scale) and $\\alpha$ (a marginal deviation). That is, $\\theta_k = (\\alpha, \\rho)$.\n", "\n", "In choosing the priors for these hyperparameters, it is important to use domain knowledge about what kinds of functions might describe the data (remembering that the data are centered and scaled!). Specifically, $\\alpha$ quantifies how large of an amplitude the the function has and $\\rho$ quantifies how wiggly the function is.\n", "\n", "For $\\alpha$, a Half-Normal prior is usually reasonable, capturing functions that do not vary much and those that do. For centered and scaled data that I suspect are free of extreme outliers, I usually chose $\\alpha \\sim \\text{HalfNorm}(2)$, but you can be more generous on the tail of your prior if you suspect their may be outliers.\n", "\n", "Choosing a prior for the length scale $\\rho$ is a bit trickier. Specifically, we do not want $\\rho$ to be too small, since this would result in a very wiggly function that would just contort itself to go right through all of the data and leave the parameter $\\sigma$ to be irrelevant. So, it is wise to use a prior that pushes $\\rho$ away from zero. An [Inverse Gamma distribution](https://distribution-explorer.github.io/continuous/inverse_gamma.html) works well for this purpose. You can choose parametrizations for it that sufficiently push the length scale away from zero, and its heavy tail can readily encompass longer lengths scales. You should think carefully about your choice, keeping in mind whether or not you centered and scaled the x-data. As a generic Inverse Gamma prior for centered and scaled x-data that varied on a linear scale before I centered and scaled it, I use InvGamma(0.5, 2). But you should think carefully about your prior for your specific application every time and make sure you choose wise priors for *your* modeling problem.\n", "\n", "Finally, I will choose a Half-Normal prior for $\\sigma$, giving a complete model of\n", "\n", "\\begin{align}\n", "&\\alpha \\sim \\text{HalfNorm}(2)\\\\[1em]\n", "&\\rho \\sim \\text{InvGamma}(0.5, 2)\\\\[1em]\n", "&\\sigma \\sim \\text{HalfNorm}(0.1)\\\\[1em]\n", "&\\mathbf{y} \\mid \\mathbf{X}, \\sigma, \\alpha, \\rho \\sim \\mathrm{MultiNorm}(\\mathbf{0}, \\mathsf{K}_\\mathbf{y}),\n", "\\end{align}\n", "\n", "where $\\mathsf{K}_\\mathbf{y}$ is constructed from an SE kernel parametrized by $\\alpha$ and $\\rho$, with $\\sigma$ added to its diagonal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing the MAP with SciPy\n", "\n", "As we did in early lessons, we can use SciPy to compute the maximal a posteriori probability parameter values of $\\alpha$, $\\rho$, and $\\sigma$. We proceed exactly as we did in the early lessons, first by coding up the log prior." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def log_prior(sigma, alpha, rho):\n", " \"\"\"Log prior for homoscedastic error and GP hyperparameters\"\"\"\n", " # Choose 1e-6 as upper bound for sigma to protect against\n", " # singular covariance matrix\n", " if sigma <= 1e-6 or alpha <= 0 or rho <= 0:\n", " return -np.inf\n", "\n", " lp = st.halfnorm.logpdf(sigma, 0, 1)\n", " lp += st.halfnorm.logpdf(alpha, 0, 2)\n", " lp += st.invgamma.logpdf(rho, 2, loc=0, scale=10)\n", "\n", " return lp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we define the log likelihood. To compute it, we first need to compute the covariance matrix $\\mathsf{K}_\\mathbf{y}$ using the SE kernel. This is accomplished using the `bebi103.gp.cov_exp_quad()` function. We then add $\\sigma^2$ to the diagonal of that matrix. The log likelihood is given by the log PDF of the Multinormal distribution with zero mean and covariance $\\mathsf{K}_\\mathbf{y}$ evaluated at the measured data points." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def log_likelihood(x, y, sigma, alpha, rho):\n", " \"\"\"Normal log likelihood for centered and scaled GP.\"\"\"\n", " diag_to_add = sigma ** 2 * np.eye(len(x))\n", " Ky = bebi103.gp.cov_exp_quad(x, alpha=alpha, rho=rho) + diag_to_add\n", " \n", " return st.multivariate_normal.logpdf(y, np.zeros_like(x), Ky)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we code up the log posterior and negative log posterior to enable optimization." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def log_posterior(params, x, y):\n", " \"\"\"Log posterior for GP with normal likelihood.\"\"\"\n", " sigma, alpha, rho = params\n", "\n", " lp = log_prior(sigma, alpha, rho)\n", " if lp == -np.inf:\n", " return lp\n", "\n", " return lp + log_likelihood(x, y, sigma, alpha, rho)\n", "\n", "\n", "def neg_log_posterior(params, x, y):\n", " return -log_posterior(params, x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now ready to optimize. We provide an initial guess for the parameters $\\sigma$, $\\alpha$, and $\\rho$, specify the centered-and-scaled temperature and rate constant values for arguments, and then minimize the log posterior." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "α = 1.5887, ρ = 2.5791, σ = 0.0886\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/bois/miniconda3/envs/bebi103_build/lib/python3.11/site-packages/scipy/optimize/_optimize.py:2489: RuntimeWarning: invalid value encountered in scalar multiply\n", " tmp2 = (x - v) * (fx - fw)\n" ] } ], "source": [ "# Initial guess\n", "params_0 = np.ones(3)\n", "\n", "# Perform optimization\n", "args = (T_scaled, k_scaled)\n", "res = scipy.optimize.minimize(neg_log_posterior, params_0, args=args, method=\"powell\")\n", "\n", "# Extract results\n", "sigma, alpha, rho = res.x\n", "\n", "# Show results\n", "print(\"α = {0:.4f}, ρ = {1:.4f}, σ = {2:.4f}\".format(alpha, rho, sigma))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Excellent! We can now make a plot of the nonparametric functions coming from the posterior GP with our optimal parameters. First, we compute $\\mathbf{m}_*$ and $\\mathsf{\\Sigma}_*$ for the values of temperature, $T_*$, that we want. We again use the `gp.posterior_mean_cov()` function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "mstar, Sigmastar = bebi103.gp.posterior_mean_cov(\n", " T_scaled, k_scaled, xstar, sigma=sigma, rho=rho, alpha=rho\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, to make the plot, we compute the theoretical credible interval and then uncenter and unscale for plotting." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"0469c0c1-a174-4f4c-b125-d0c76134df36\":{\"version\":\"3.3.0\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1002\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1003\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1004\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1011\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1012\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1009\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1036\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1030\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1031\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1032\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1037\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1038\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1033\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1034\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1035\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1045\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1039\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1040\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1041\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1046\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1047\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1042\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.3,\"hatch_color\":\"orange\",\"hatch_alpha\":0.3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1043\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.1,\"hatch_color\":\"orange\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1044\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.2,\"hatch_color\":\"orange\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1057\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1048\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1049\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1050\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"1000/T (1/K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/vg27rJc/j86Aw6SI5r+PyDmj2/jLv8/ZhNUbNWc/z9mE1Rs1Zz/P1Zznq70TgBARzSNDj+RAEDWSZUxLOoAQOz+pST0IQFAoAjQ2l5wAUA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ln k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"oKpBtYqeEsAcGcsISvYSwOwePvKkURPAXR21T4YpFMBPOH+7rlgUwLLb/8QfoBXAJHeYwZfqFsDA+xW5w0wYwColYnwf8hjAAbGgH2XDGcA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"T (K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Ks3HDMh3gEDFiyABuFaAQPUJEKjHCIBAUvlsXQeif0BS+WxdB6J/QIDotbO0qH5ACsWq5wcufkBPkdOgXY99QEjCMIUfL31Aud2lfuSrfEA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4uhEBeZ8gz9Q0X9BM+OBP4q2XFxdXIA/WYQTmXmAej869/QGHk95P726YoXmYXI/jATFgMifaj/BO07l39ZiP6NiuGKxB2A//o+RalsiWj8=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1058\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1059\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1054\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1055\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1056\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1010\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1023\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1024\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1025\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1026\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1027\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1028\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1029\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1018\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1019\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1020\"},\"axis_label\":\"k (1/s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1021\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1013\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1014\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1015\"},\"axis_label\":\"T (K)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1016\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1017\",\"attributes\":{\"axis\":{\"id\":\"p1013\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1022\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1018\"}}}],\"frame_width\":350,\"frame_height\":250}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"toggle_value1\",\"properties\":[{\"name\":\"active_icons\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"options\",\"kind\":\"Any\",\"default\":{\"type\":\"map\",\"entries\":[[\"favorite\",\"heart\"]]}},{\"name\":\"value\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_reactions\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_base_url\",\"kind\":\"Any\",\"default\":\"https://tabler-icons.io/static/tabler-icons/icons/\"}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"value\",\"kind\":\"Any\",\"default\":null},{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n", " const render_items = [{\"docid\":\"0469c0c1-a174-4f4c-b125-d0c76134df36\",\"roots\":{\"p1002\":\"bf3453dc-f3c5-40ed-8a8f-d3a793708009\"},\"root_ids\":[\"p1002\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" } ], "source": [ "# Bound of credible interval\n", "high = mstar + 1.96 * np.sqrt(np.diag(Sigmastar))\n", "low = mstar - 1.96 * np.sqrt(np.diag(Sigmastar))\n", "\n", "# Uncenter/scale\n", "Tstar = T.std() * xstar + T.mean()\n", "kstar = k.std() * mstar + k.mean()\n", "low = k.std() * low + k.mean()\n", "high = k.std() * high + k.mean()\n", "\n", "# Make plot\n", "p = bokeh.plotting.figure(\n", " frame_height=250, frame_width=350, x_axis_label=\"T (K)\", y_axis_label=\"k (1/s)\"\n", ")\n", "p.line(Tstar, kstar, line_width=2, color=\"orange\")\n", "p = bebi103.viz.fill_between(\n", " Tstar,\n", " high,\n", " Tstar,\n", " low,\n", " show_line=False,\n", " patch_kwargs=dict(color=\"orange\", alpha=0.3),\n", " p=p,\n", ")\n", "p.circle(source=df, x=\"T (K)\", y=\"k (1/s)\")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, remember that the line in the plot is the most probable function *for the MAP values of the hyperparameters and* $\\sigma$. The envelope is *not* posterior predictive of data sets. However, we can sample out of the generative model for the posterior with fixed parameters $\\alpha$, $\\rho$, and $\\sigma$ specified by our MAP estimates." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior predictive samples\n", "\n", "To sample out of a posterior predictive distribution $f(\\tilde{y} \\mid y)$ for a fixed set of hyperparameters and $\\sigma$, we need to draw a sample of a function out of the posterior GP, and then draw samples from a Normal distribution that has a mean given by the function and a standard deviation of $\\sigma$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"ac9516f3-be48-4250-a5eb-0587d1150c20\":{\"version\":\"3.3.0\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1002\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1003\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1004\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1011\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1012\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1009\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1036\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1030\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1031\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1032\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1037\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1038\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1033\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1034\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1035\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1045\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1039\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1040\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1041\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1046\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1047\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1042\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.3,\"hatch_color\":\"orange\",\"hatch_alpha\":0.3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1043\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.1,\"hatch_color\":\"orange\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1044\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.2,\"hatch_color\":\"orange\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1057\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1048\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1049\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1050\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"1000/T (1/K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/vg27rJc/j86Aw6SI5r+PyDmj2/jLv8/ZhNUbNWc/z9mE1Rs1Zz/P1Zznq70TgBARzSNDj+RAEDWSZUxLOoAQOz+pST0IQFAoAjQ2l5wAUA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ln k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"oKpBtYqeEsAcGcsISvYSwOwePvKkURPAXR21T4YpFMBPOH+7rlgUwLLb/8QfoBXAJHeYwZfqFsDA+xW5w0wYwColYnwf8hjAAbGgH2XDGcA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"T (K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Ks3HDMh3gEDFiyABuFaAQPUJEKjHCIBAUvlsXQeif0BS+WxdB6J/QIDotbO0qH5ACsWq5wcufkBPkdOgXY99QEjCMIUfL31Aud2lfuSrfEA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4uhEBeZ8gz9Q0X9BM+OBP4q2XFxdXIA/WYQTmXmAej869/QGHk95P726YoXmYXI/jATFgMifaj/BO07l39ZiP6NiuGKxB2A//o+RalsiWj8=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1058\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1059\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1054\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1055\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1056\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1075\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1069\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1070\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1071\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1076\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1077\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1072\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":3},\"line_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.5},\"fill_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.5},\"hatch_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.5}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1073\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":3},\"line_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1074\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":3},\"line_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"tomato\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1010\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1023\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1024\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1025\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1026\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1027\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1028\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1029\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1018\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1019\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1020\"},\"axis_label\":\"k (1/s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1021\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1013\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1014\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1015\"},\"axis_label\":\"T (K)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1016\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1017\",\"attributes\":{\"axis\":{\"id\":\"p1013\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1022\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1018\"}}}],\"frame_width\":350,\"frame_height\":250}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"toggle_value1\",\"properties\":[{\"name\":\"active_icons\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"options\",\"kind\":\"Any\",\"default\":{\"type\":\"map\",\"entries\":[[\"favorite\",\"heart\"]]}},{\"name\":\"value\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_reactions\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_base_url\",\"kind\":\"Any\",\"default\":\"https://tabler-icons.io/static/tabler-icons/icons/\"}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"value\",\"kind\":\"Any\",\"default\":null},{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n", " const render_items = [{\"docid\":\"ac9516f3-be48-4250-a5eb-0587d1150c20\",\"roots\":{\"p1002\":\"cdc8061b-a760-4de3-b28c-420e388cbb21\"},\"root_ids\":[\"p1002\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" } ], "source": [ "# Sample function\n", "rg = np.random.default_rng()\n", "\n", "def draw_gp_ppc(mstar, Sigmastar, sigma, y_mean, y_std):\n", " \"\"\"Draw a GP posterior predictive sample of centered \n", " and scaled data that is then uncentered and unscaled.\"\"\"\n", " # Draw nonparametric function\n", " f = np.random.multivariate_normal(mstar, Sigmastar)\n", "\n", " # Draw data\n", " y = rg.normal(f, sigma)\n", " \n", " # Uncenter and unscale\n", " return y_std * y + y_mean\n", "\n", "k_ppc = draw_gp_ppc(mstar, Sigmastar, sigma, k.mean(), k.std())\n", "\n", "# Overlay new data on plot\n", "p.circle(Tstar, k_ppc, color='tomato', alpha=0.5, size=3)\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can generate many of these samples and them make a posterior predictive plot. Note, though, that this is not a *full* posterior predictive plot. Rather, we are *fixing* $\\alpha$, $\\rho$, and $\\sigma$ to their MAP values and are then drawing the nonparameteric function that serves as the location parameter for the Normal likelihood." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"4b9f0e25-7e1a-400d-9a15-e19a0010cb65\":{\"version\":\"3.3.0\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1089\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1090\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1091\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1098\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1099\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1096\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1123\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1117\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1118\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1119\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1124\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1125\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1120\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"#9ecae1\"}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1121\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"#9ecae1\",\"fill_alpha\":0.1,\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1122\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"#9ecae1\",\"fill_alpha\":0.2,\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1132\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1126\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1127\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1128\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1133\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1134\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1129\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"#6baed6\"}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1130\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"#6baed6\",\"fill_alpha\":0.1,\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1131\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"#6baed6\",\"fill_alpha\":0.2,\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1141\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1135\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1136\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1137\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1142\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1143\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1138\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#084594\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1139\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#084594\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1140\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#084594\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1150\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1144\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1145\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1146\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ud2lfuSrfEBIwjCFHy99QE+R06Bdj31ACsWq5wcufkCA6LWztKh+QFL5bF0Hon9AUvlsXQeif0D1CRCoxwiAQMWLIAG4VoBAKs3HDMh3gEA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/o+RalsiWj+jYrhisQdgP8E7TuXf1mI/jATFgMifaj+9umKF5mFyP1mEE5l5gHo/Ovf0Bh5PeT+KtlxcXVyAP1DRf0Ez44E/4uhEBeZ8gz8=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1151\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1152\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1147\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1148\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1149\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1097\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1110\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1111\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1112\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1113\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1114\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1115\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1116\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1105\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1106\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1107\"},\"axis_label\":\"y\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1108\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1100\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1101\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1102\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1103\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1104\",\"attributes\":{\"axis\":{\"id\":\"p1100\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1109\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1105\"}}}],\"frame_width\":400,\"frame_height\":325}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"toggle_value1\",\"properties\":[{\"name\":\"active_icons\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"options\",\"kind\":\"Any\",\"default\":{\"type\":\"map\",\"entries\":[[\"favorite\",\"heart\"]]}},{\"name\":\"value\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_reactions\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_base_url\",\"kind\":\"Any\",\"default\":\"https://tabler-icons.io/static/tabler-icons/icons/\"}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"value\",\"kind\":\"Any\",\"default\":null},{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n", " const render_items = [{\"docid\":\"4b9f0e25-7e1a-400d-9a15-e19a0010cb65\",\"roots\":{\"p1089\":\"fb84b9f4-9ec5-4f91-a96a-5053f876a4b2\"},\"root_ids\":[\"p1089\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1089" } }, "output_type": "display_data" } ], "source": [ "k_ppc = np.array(\n", " [draw_gp_ppc(mstar, Sigmastar, sigma, k.mean(), k.std()) for _ in range(1000)]\n", ")\n", "\n", "bokeh.io.show(\n", " bebi103.viz.predictive_regression(k_ppc, Tstar, data=np.stack((T, k)).transpose(),)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior predictive plot looks good!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Obtaining hyperpriors by optimizing with Stan\n", "\n", "While we have not discussed it thus far, Stan does have functionality to find MAP parameters by optimization. It may be easier to code you model in Stan and then use its optimizer. This can be the case for GP-based models. The Stan code for the model we have been considering is\n", "\n", "```stan\n", "data {\n", " int N;\n", " array[N] real x;\n", " vector[N] y;\n", "}\n", "\n", "\n", "parameters {\n", " real alpha;\n", " real rho;\n", " real sigma;\n", "}\n", "\n", "\n", "model {\n", " alpha ~ normal(0.0, 2.0);\n", " rho ~ inv_gamma(0.5, 2.0);\n", " sigma ~ normal(0.0, 1.0);\n", "\n", " matrix[N, N] Ky = gp_exp_quad_cov(x, alpha, rho)\n", " + diag_matrix(rep_vector(square(sigma), N));\n", " matrix[N, N] Ly = cholesky_decompose(Ky);\n", "\n", " y ~ multi_normal_cholesky(rep_vector(0, N), Ly);\n", "}\n", "```\n", "\n", "Note that we use the Cholesky decomposition, as it is more numerically stable. Note also that the construction of the covariance matrix and its Cholesky decomposition are in the `model` block instead of `transformed parameters` because we do not need nor want them stored as output.\n", "\n", "To find the MAP parameters, we simple compile the model and then use the `optimize()` method." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "with bebi103.stan.disable_logging():\n", " sm = cmdstanpy.CmdStanModel(stan_file=\"gp_kinetics_no_ppc.stan\")\n", " \n", " data = dict(N=len(T_scaled), x=T_scaled, y=k_scaled)\n", "\n", " res = sm.optimize(data=data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting object has the optimal parameters presented in a dictionary, Numpy array, or Pandas data frame. In this case, the dictionary is easiest to use." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "OrderedDict([('lp__', 7.79106),\n", " ('alpha', 1.40338),\n", " ('rho', 2.25658),\n", " ('sigma', 0.0893148)])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res.optimized_params_dict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The \"parameter\" `lp__` is the value of the log posterior at the MAP. The remaining entries are the MAP parameter values, which you can see are close to what we got using SciPy, but differ slightly. This is because Stan does transformations of variables to handle constraints, and with the new transformed variables, the tolerance may be hit with different parameter values. We can verify that it gives the same result by again plotting the resulting nonparametric function." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"af22cd83-3a97-47e2-8122-fc5c6aac0626\":{\"version\":\"3.3.0\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1161\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1162\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1163\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1170\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1171\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1168\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1195\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1189\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1190\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1191\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1196\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1197\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1192\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1193\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1194\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1204\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1198\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1199\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1200\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"tMJJdwC5YD/JCW20o6dgPzvQKm6gl2A/vRRpRfiIYD/WjRLdrHtgP36S7Ni/b2A/UXoj3DJlYD/FpoSHB1xgP7cXXXc/VGA/s5PzQNxNYD/xw5Vv30hgP/ZXMIFKRWA/Y5dr4h5DYD85Y0fqXUJgP+xNNNUIQ2A/UTWqvyBFYD/48ECgpkhgP9rfU0GbTWA/6aw+Ov9TYD+/Kkfo0ltgP0imTmcWZWA/ozFrislvYD8O8I/U63tgP73icHF8iWA/SoXTLnqYYD/Xu4B246hgP8/dDUm2umA/WcKxOfDNYD/98VZrjuJgP34BFo+N+GA/Xho65OkPYT9oZeY5nyhhP0MMZvKoQmE/QCwiCAJeYT/skSoUpXphP7P9L1aMmGE/ly7CvbG3YT+iZ5n0DthhP8SVq2md+WE/KZ/IXFYcYj9kLnjqMkBiP8X41BcsZWI/Q1Um3jqLYj8zev81WLJiP3aStCF92mI/wB//tqIDYz8RJLUnwi1jP8xbgMnUWGM/+MGLHNSEYz8XICbRubFjP13pXsx/32M/Ve+oKyAOZD9xS5JHlT1kP+J5pLXZbWQ/2T+BSeieZD8uS1IVvNBkP+JgoWlQA2U/k6Wu1KA2ZT/db1khqWplPwTDrlVln2U/c/cusdHUZT8Ua9qq6gpmP44uE++sQWY/Mg9gXRV5Zj8vkBsGIbFmP4LiFyjN6WY/QnA/LhcjZz/DRDit/FxnPyJuD2F7l2c/NVnwKpHSZz+sZesOPA5oP9T9zTF6Smg/DvkN10mHaD+SXsleqcRoP90y20OXAmk/Va4FGhJBaT+VtzGMGIBpP2hhw1qpv2k/3PACWsP/aT/Kv5lwZUBqP2UiIpaOgWo/+JvJ0T3Daj9wRAQ5cgVrP6OHUO4qSGs/STQKIGeLaz/24EsHJs9rP/qb3eZmE2w/dwwwCilYbD8z6WLEa51sPyz5VW8u42w/aavDanApbT9seGQbMXBtP0YzGupvt20/no4iQyz/bT/QKlCVZUduPxxvSVEbkG4/G5rM6EzZbj8RgfjN+SJvPyx2mXIhbW8/I9Z5R8O3bz8S99pdbwFwP1FjCZ45J3A/GtIrGUBNcD+r9FSCgnNwP4CadYoAmnA/1tUM4LnAcD8vIdkurudwP3+Oih/dDnE/SAJ2V0Y2cT+JiEl46V1xP1LYwR/GhXE/PyFh59utcT+WQydkKtZxP2adSyax/nE/6pf4uG8ncj8cLAmiZVByPwWQyGGSeXI/ylG0cvWicj9gGUFJjsxyP4xYolNc9nI/RCiV+V4gcz+LpS6clUpzP9IBrpX/dHM/0qBSOZyfcz9XezbTaspzP0kLLahq9XM/pAen9ZogdD8MIpvx+kt0P578c8qJd3Q/xZADp0ajdD+WLHymMM90P7Yfb+BG+3Q/vETRZIgndT+2cwU89FN1P2Xb7GaJgHU/qGP93katdT95+F2WK9p1P3a8CHg2B3Y/LBTzZ2Y0dj8JaztDumF2P/6HXOAwj3Y/L15mD8m8dj8cHzyagep2P7hf10RZGHc/IySQzU5Gdz8LlmntYHR3P+8uY1iOonc/zSTOvdXQdz/+2abINf93P20j8h+tLXg/JC4eZzpceD+m1GY+3Ip4PyVBPUORuXg/ha6yEFjoeD/OL+Y/Lxd5P41jdWgVRnk/iwLwIAl1eT9MQk7/CKR5PxsHapkT03k/6PZ6hScCej8ybZVaQzF6PzKALLFlYHo/OieXI42Pej8KuJhOuL56P7n17NHl7Xo/EebXUBQdez+4urlyQkx7PxIhp+Nue3s/7U4GVZiqez9NLDF+vdl7P1AFHR3dCHw/nCgI9/U3fD+g8C3ZBmd8P7qlgZkOlnw/catwFwzFfD88fKw8/vN8PzDa/P3jIn0/4agaXLxRfT8S1ZNkhoB9PxSZuDJBr30/0GaS8OvdfT9EoeTXhQx+P74mNzMOO34/EpnqXoRpfj+GC1bK55d+PxmH7fg3xn4/MqBwg3T0fj+w2x8ZnSJ/P1Jx94CxUH8/VEntmrF+fz92yS9hnax/P8Y/Yul02n8/lpHpMhwEgD//3VMT9BqAP4rhe03CMYA/k3zpKIdIgD/i0pT9Ql+AP28QSDT2dYA/01bqRqGMgD9PGq/ARKOAP5bdJD7huYA/Ef4dbXfQgD/QOm4MCOeAP/Sfd+uT/YA/SuOB6RsUgT9wrdf0oCqBP7lGpgkkQYE/OB6dMKZXgT+ePEx9KG6BPzFcQgyshIE/4ovtADKbgT8+eUODu7GBP+DfOL1JyIE/phQS2N3egT8by5j5ePWBP0tERUEcDII/a4lqxcgigj/EQnaQfzmCP3P6VJ5BUII/ngML2g9ngj+Y85Ab632CPxJ6ACbUlII/3sQbpsurgj8cXTYx0sKCP6AMg0To2YI/DNHGRA7xgj/mhG1+RAiDP3zx+SWLH4M/r2bIWOI2gz9QGxkeSk6DP/s/VmjCZYM/0hOJFkt9gz+QSPH145SDPzhvssOMrIM/QCCMLkXEgz/UtZLYDNyDPzbx31jj84M/2Eo0PcgLhD9ORIMLuyOEP4d7ZkO7O4Q/xZl0X8hThD8wYXrW4WuEP88ilRwHhIQ/wMEupDechD+lA9zecrSEP1KIHj64zIQ/9QQMNAflhD9Ru9wzX/2EPz4tY7K/FYU/MDFvJiguhT/exTlv0xyDP8gslAsHEoM/VOm2pOoGgz+qTvpXfvuCP7azFUPC74I/sNp9hLbjgj9u2Nc7W9eCP46kgoqwyoI/WVQ5lLa9gj+j789/bbCCPxSNDHjVooI/y/ydrO6Ugj8ZzzBTuYaCP3naoqg1eII/noFU8mNpgj//CZZ/RFqCP0ETLqvXSoI/4PT03B07gj+YVX+LFyuCPxbA0D3FGoI/2ooNjScKgj977SEmP/mBP1fyUssM6IE/yAOtVZHWgT8FXEO2zcSBP1asM/fCsoE/wuNhPHKggT9YWuHD3I2BP9R4AuYDe4E/yZj+FOlngT9Huj7cjVSBP6giPd/zQIE/aGYF2BwtgT9G01mVChmBP1dpiPi+BIE/byr88jvwgD+Yr5mDg9uAP4VB97OXxoA/ykGBlXqxgD+db5s+LpyAP+i2zse0hoA/gKwRSRBxgD/E4DfXQluAP+b2kYFORYA/LgnGTzUvgD8Xa+U/+RiAP/C4wkScAoA/ANYRiUDYfz+I+SQvDqt/PwJJ/A6lfX8/NhP7nAhQfz+cAbMtPCJ/P4yfTfVC9H4/al5MByDGfj8uTJRW1pd+PzQCu7VoaX4/ipKK19k6fj/iC7NPLAx+PwLdoJNi3X0//jpw+36ufT+ad/bCg399P8xI2wpzUH0/Wp282U4hfT9eeVgdGfJ8P+8xuavTwnw/+cBgRICTfD8XynCRIGR8PxQ4zSi2NHw/Cvg3jUIFfD+sl2Qvx9V7P4YAA29Fpns/9LzAm752ez+2e0D2M0d7P8euB7GmF3s/71li8Rfoej/9Lz3QiLh6P0hK9lr6iHo/Ec0klG1Zej/I31d04yl6P4hlzepc+nk/TOsg3trKeT9fQvMsXpt5Py4/i67na3k/3xNwM3g8eT+gtf2FEA15P8nA82qx3Xg/c0D/oVuueD+/uD/mD394PwzWx+7OT3g/mAQab5kgeD9xSqEXcPF3P4KaJpZTwnc/XNNClkSTdz+Aps3BQ2R3P2B6ScFRNXc/wnBMPG8Gdz8Hn+bZnNd2Pzx9BUHbqHY/to3UGCt6dj+bQBsJjUt2P8jul7oBHXY/BuhX14nudT+aawwLJsB1P4ZtXAPXkXU/LvcycJ1jdT+/BAoEejV1P9KYMXRtB3U/d+USeXjZdD+7TG/Om6t0P0cAmzPYfXQ/Owyzay5QdD+on849nyJ0P2JOK3Ur9XM/sjFU4dPHcz9Ur0NWmZpzP73Cf6x8bXM/dq0wwX5Acz/i8jF2oBNzP9mBHbLi5nI/th5RYEa6cj9s3e1wzI1yP7fc0dh1YXI/VDOMkUM1cj/YLkuZNglyP8H6xPJP3XE/DdwapZCxcT8LIre7+YVxPxcDJkaMWnE/IJ/pV0kvcT80WUkIMgRxP+7UHHJH2XA//c6Ss4qucD9GHfTt/INwP9wbY0WfWXA/Gs6X4HIvcD8S+5joeAVwP7YK5RBlt28/MJ/S2UFkbz8wuFmIihFvP1PtDXtBv24/dioTEmltbj+yR3auAxxuP7LogrETy20/SNwWfJt6bT+JUvNtnSptPzkXDOUb22w/sv7UPBmMbD/8oo3Nlz1sP8F2i+uZ72s/Oj2C5iGiaz9MwsoIMlVrP5TEp5bMCGs/GuWIzfO8aj9qUUvjqXFqP8D1dwXxJmo/3c9+WMvcaT9Y8u72OpNpP1bvqvBBSmk/9esYSuIBaT/fCk77HbpoPyBdNO/2cmg/TNyqAm8saD9zmp4DiOZnP3ltHLBDoWc/C1lataNcZz8nzreuqRhnPzvesyRX1WY/rIDYi62SZj9q+plDrlBmPyVbKZVaD2Y/TDE5srPOZT+RWbOzuo5lP2v6XphwT2U/Z8B1Q9YQZT8+VCd77NJkPwE9CuezlWQ/Ymh5Di1ZZD/0od1WWB1kP36W4gE24mM/ke6WK8anYz9hoXfICG5jPwynZqP9NGM/kcmNW6T8Yj/UsC5i/MRiPwLdYfgEjmI/rvrGLL1XYj/upSnZIyJiP/m8HqA37WE/RVef6va4YT+AoKflX4VhP9k44X9wUmE/DR5iZyYgYT/ZwYoHf+5gP+iTD4d3vWA/4gg8xgyNYD9e9X5dO11gP4G2UZz/LWA/AqAaEav+Xz/M64O8caJfP4TtTCBKR18/WuRqkSrtXj++eRzYCJRePyQ1XDXaO14/yEIpapPkXT9A08XAKI5dP2Z5ARiOOF0/zMma8LbjXD+c97R8lo9cP9ajTrEfPFw/9K6TWUXpWz/CrNEr+pZbP5R5wd8wRVs/5lvGRdzzWj8Yr7Fe76JaPxozjHNdUlo/2pXdLBoCWj9uYeaoGbJZP9KoQ5BQYlk/pp98KLQSWT+IiwlkOsNYP5R7eO/Zc1g/wFltO4okWD8u/VaDQ9VXP1zaz9D+hVc/iNy9+7U2Vz8EqV6nY+dWPyaOhDwDmFY/IshZ4ZBIVj8UyAxvCflVP+jxzmVqqVU/pJ2R37FZVT/8OuqB3glVP4QvgG/vuVQ/mLRdOeRpVD9wPXHQvBlUP3gBgXd5yVM/tNTEtRp5Uz9Ylk5KoShTP7hjXSAO2FI/2I+tRGKHUj8gJs7bnjZSP8gWfRnF5VE/WCgFOdaUUT8EzZN200NRP0SDeQm+8lA/tAlFH5ehUD/QIKjXX1BQP3CFJ4Iy/k8/gJXzq4hbTz+gdkT1w7hOPw==\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1205\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1206\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1201\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.3,\"hatch_color\":\"orange\",\"hatch_alpha\":0.3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1202\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.1,\"hatch_color\":\"orange\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1203\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"orange\",\"fill_alpha\":0.2,\"hatch_color\":\"orange\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1213\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1207\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1208\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1209\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"3nZVpv7AWD9Ix63bPtZYPxxhkL/K7Fg/5Ngp16MEWT8SNOWeyx1ZP844T4pDOFk/rPz5Aw1UWT/Qv2BtKXFZP6gBzB6aj1k/GvQ1Z2CvWT/2Gi+MfdBZPzJdw8ny8lk/bEJfUsEWWj+ql7VO6jtaP8pdpd1uYlo/tg0gFFCKWj9uNRD9jrNaPyBpQJks3lo/Io5C3ykKWz9AjFe7hzdbPxhRVw9HZls/wjKZsmiWWz9Qw9xx7cdbP2zyMg/W+ls/6qTnQSMvXD9irmu21WRcPzIrPw7um1w/Eljc32zUXD9UvqK2Ug5dPwLgwhKgSV0/oE4qaVWGXT+eL3Ajc8RdPwg1wp/5A14/AhPSMOlEXj+SWcMdQodePzbfGaIEy14/fo2o7TAQXz8MsYAkx1ZfP8bU4V7Hnl8/6v0pqTHoXz+yQOMBgxlgP/CmkjGiP2A/C17TV3ZmYD8O78di/41gP4Otfjo9tmA/5GfrwC/fYD+5WOHR1ghhP2BgDUMyM2E/5YHw40FeYT/eptp9BYphP6an5dN8tmE/OKHwoqfjYT/yhpuhhRFiP/QIQ4AWQGI/+bz86FlvYj9hj5N/T59iPwyFhOH2z2I/2L37pU8BYz/3ytFdWTNjPzxLiZMTZmM/iNVMy32ZYz8sLu2Cl81jPy3M3zFgAmQ/vaU9Sdc3ZD9cUcIz/G1kP91ty1XOpGQ//V5YDU3cZD9zVAqydxRlPy6gJJVNTWU/Tl+NAc6GZT9Jbs47+MBlPwuwFoLL+2U/hp87DEc3Zj+lPbsLanNmP8I+vqszsGY/f5gaEaPtZj/3VlZatytnP57Gqp9vamc/YOwH88qpZz8cUxhgyOlnP8UoRexmKmg/Nqi6lqVraD8G3mxYg61oP4m2HCT/72g/t15d5hczaT+5+5mFzHZpP3GvG+Ibu2k/8esP1gQAaj9jII81hkVqP6uuo86ei2o/KzlRaU3Saj+jO5zHkBlrP934kaVnYWs/1LhQudCpaz+nVBCzyvJrP7AWKz1UPGw/9uQm/GuGbD/kxb6OENFsP5Om7I1AHG0/lHzzjPpnbT9zrmkZPbRtP2TRQ7sGAW4/KK/f9FVObj+WnQ9DKZxuP34jJh1/6m4/pOgB9VU5bz+p9Bk3rIhvP243ikqA2G8/AjCQSGgUcD8of7SzzTxwP+R1XpJvZXA/ZoKnDU2OcD/EEh1MZbdwP2W5x3G34HA/wHUyoEIKcT/kH3L2BTRxP2P5LJEAXnE/3l+iijGIcT8PorL6l7JxPxP75vYy3XE/eql5kgEIcj8YMF7eAjNyP/evSek1XnI/D2u7v5mJcj+HYQVsLbVyP7UTVfbv4HI/IGC8ZOAMcz9LhTq7/ThzP3U+xftGZXM/vwBSJruRcz+SVt84Wb5zP0hZfi8g63M/n0VcBA8YdD+0LsyvJEV0PwHOUChgcnQ/JW2mYsCfdD+d68xRRM10PxTgEefq+nQ/S9IaErModT9Tke/Am1Z1P4qfBOCjhHU/OblFWsqydT9zcyAZDuF1P1PzjgRuD3Y/V7ciA+k9dj/Yfg/6fWx2P9Y/Ns0rm3Y/ijcwX/HJdj9DDFqRzfh2PwkF30O/J3c/11PEVcVWdz8WdPSk3oV3P8uYSg4KtXc/xi6ebUbkdz9Cb86dkhN4P9IBznjtQng/pK+u11VyeD/0JK2SyqF4PzLAPIFK0Xg/gXITetQAeT8apjVTZzB5P7I7AuIBYHk/U4k++6KPeT/KaiJzSb95P8tbZB307nk/dphFzaEeej/1S55VUU56Pw/E6YgBfno/6qxSObGtej/+Vr84X916P0T+3VgKDXs/Fhwxa7E8ez+auxtBU2x7P5jS7avum3s/5J7wfILLez82BXOFDft7P7v11ZaOKnw/YMyYggRafD9UuWUabol8P08hHjDKuHw/HgbnlRfofD9sZzUeVRd9PxOk2puBRn0/B9gQ4pt1fT/uOIfEoqR9P7BqbheV030/idSEr3ECfj/e6yJiNzF+P/16RwXlX34/WuGjb3mOfj9YS6h487x+PxHij/hR634/nfNsyJMZfz+oDTXCt0d/PzYSzcC8dX8//z4VoKGjfz8VKvU8ZdF/P1+wZ3UG/38/ZWxDFEIWgD/Q1Eub7iyAPx/3ikCIQ4A/sfZfdQ5agD8dCdGrgHCAP4pBkVbehoA/XVIG6SadgD8LSU7XWbOAP7g9RZZ2yYA/Q/qKm3zfgD9UmIhda/WAPy4UdlNCC4E/d9Vf9QAhgT/7LCy8pjaBP9bGoCEzTIE/7hJooKVhgT9snxa0/XaBP6RoMNk6jIE/BBwujVyhgT+UToJOYraBPzGnnpxLy4E/E/n49xfggT86VRDixvSBP8IIct1XCYI/fZG+bcodgj99gq4XHjKCP+pYF2FSRoI/7UPw0GZagj+s3FbvWm6CP2LOk0UugoI/O28fXuCVgj9oSabEcKmCP3yTDQbfvII/Zpl3sCrQgj+YE0hTU+OCP1ZtKH9Y9oI/SPsLxjkJgz/KHzS79huDPx5cNPOOLoM/cFP2AwJBgz+AuL2ET1ODP5oqLA53ZYM/DgBFOnh3gz9I/nCkUomDP/L9gekFm4M/in22p5Gsgz9iIL1+9b2DP2IZuA8xz4M/i4NA/UPggz8OpmnrLfGDPzElxH/uAYQ/jh1hYYUShD8=\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1214\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1215\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1210\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1211\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1212\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1222\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1216\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1217\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1218\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[500],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1223\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1224\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1219\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_alpha\":0,\"line_width\":0,\"fill_color\":\"tomato\",\"fill_alpha\":0.3,\"hatch_color\":\"tomato\",\"hatch_alpha\":0.3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1220\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_alpha\":0.1,\"line_width\":0,\"fill_color\":\"tomato\",\"fill_alpha\":0.1,\"hatch_color\":\"tomato\",\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1221\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"tomato\",\"line_alpha\":0.2,\"line_width\":0,\"fill_color\":\"tomato\",\"fill_alpha\":0.2,\"hatch_color\":\"tomato\",\"hatch_alpha\":0.2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1234\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1225\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1226\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1227\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"1000/T (1/K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/vg27rJc/j86Aw6SI5r+PyDmj2/jLv8/ZhNUbNWc/z9mE1Rs1Zz/P1Zznq70TgBARzSNDj+RAEDWSZUxLOoAQOz+pST0IQFAoAjQ2l5wAUA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ln k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"oKpBtYqeEsAcGcsISvYSwOwePvKkURPAXR21T4YpFMBPOH+7rlgUwLLb/8QfoBXAJHeYwZfqFsDA+xW5w0wYwColYnwf8hjAAbGgH2XDGcA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"T (K)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Ks3HDMh3gEDFiyABuFaAQPUJEKjHCIBAUvlsXQeif0BS+WxdB6J/QIDotbO0qH5ACsWq5wcufkBPkdOgXY99QEjCMIUfL31Aud2lfuSrfEA=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"k (1/s)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4uhEBeZ8gz9Q0X9BM+OBP4q2XFxdXIA/WYQTmXmAej869/QGHk95P726YoXmYXI/jATFgMifaj/BO07l39ZiP6NiuGKxB2A//o+RalsiWj8=\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1235\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1236\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1231\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1232\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1233\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"T (K)\"},\"y\":{\"type\":\"field\",\"field\":\"k (1/s)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1169\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1182\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1183\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1184\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1185\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1186\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1187\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1188\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1177\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1178\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1179\"},\"axis_label\":\"k (1/s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1180\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1172\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1173\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1174\"},\"axis_label\":\"T (K)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1175\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1176\",\"attributes\":{\"axis\":{\"id\":\"p1172\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1181\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1177\"}}}],\"frame_width\":350,\"frame_height\":250}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"toggle_value1\",\"properties\":[{\"name\":\"active_icons\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"options\",\"kind\":\"Any\",\"default\":{\"type\":\"map\",\"entries\":[[\"favorite\",\"heart\"]]}},{\"name\":\"value\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_reactions\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"_base_url\",\"kind\":\"Any\",\"default\":\"https://tabler-icons.io/static/tabler-icons/icons/\"}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"value\",\"kind\":\"Any\",\"default\":null},{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n", " const render_items = [{\"docid\":\"af22cd83-3a97-47e2-8122-fc5c6aac0626\",\"roots\":{\"p1161\":\"b48aa532-9773-4043-aef2-2be6bc646f71\"},\"root_ids\":[\"p1161\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1161" } }, "output_type": "display_data" } ], "source": [ "# Plot Numpy result\n", "p = bokeh.plotting.figure(\n", " frame_height=250, frame_width=350, x_axis_label=\"T (K)\", y_axis_label=\"k (1/s)\"\n", ")\n", "p.line(Tstar, kstar, line_width=2, color=\"orange\")\n", "p = bebi103.viz.fill_between(\n", " Tstar,\n", " high,\n", " Tstar,\n", " low,\n", " show_line=False,\n", " patch_kwargs=dict(color=\"orange\", alpha=0.3),\n", " p=p,\n", ")\n", "\n", "# Plot Stan result\n", "sigma, alpha, rho = res.optimized_params_pd[[\"sigma\", \"alpha\", \"rho\"]].values.flatten()\n", "mstar, Sigmastar = bebi103.gp.posterior_mean_cov(\n", " T_scaled, k_scaled, xstar, sigma=sigma, rho=rho, alpha=rho\n", ")\n", "\n", "high = mstar + 1.96 * np.sqrt(np.diag(Sigmastar))\n", "low = mstar - 1.96 * np.sqrt(np.diag(Sigmastar))\n", "\n", "Tstar = T.std() * xstar + T.mean()\n", "kstar = k.std() * mstar + k.mean()\n", "low = k.std() * low + k.mean()\n", "high = k.std() * high + k.mean()\n", "\n", "p.line(Tstar, kstar, line_width=2, color=\"tomato\")\n", "p = bebi103.viz.fill_between(\n", " Tstar,\n", " high,\n", " Tstar,\n", " low,\n", " show_line=False,\n", " patch_kwargs=dict(color=\"tomato\", alpha=0.3),\n", " p=p,\n", ")\n", "\n", "# Plot data\n", "p.circle(source=df, x=\"T (K)\", y=\"k (1/s)\")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results almost exactly overlap." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "bebi103.stan.clean_cmdstan()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python implementation: CPython\n", "Python version : 3.11.5\n", "IPython version : 8.15.0\n", "\n", "numpy : 1.26.2\n", "scipy : 1.11.4\n", "pandas : 2.1.4\n", "cmdstanpy : 1.2.0\n", "arviz : 0.17.0\n", "bokeh : 3.3.0\n", "bebi103 : 0.1.20\n", "jupyterlab: 4.0.10\n", "\n", "cmdstan : 2.34.0\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p numpy,scipy,pandas,cmdstanpy,arviz,bokeh,bebi103,jupyterlab\n", "print(\"cmdstan :\", bebi103.stan.cmdstan_version())" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }