{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pairs bootstrap and correlation\n", "\n", "[Dataset download](https://s3.amazonaws.com/bebi103.caltech.edu/data/bee_sperm.csv)\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "editable": true, "nbsphinx": "hidden", "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "# Colab setup ------------------\n", "import os, sys, subprocess\n", "if \"google.colab\" in sys.modules:\n", " cmd = \"pip install --upgrade bebi103 watermark\"\n", " process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " stdout, stderr = process.communicate()\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": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "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", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " 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(\"fbbe1030-6c18-41e0-9a2d-5df5ae77f8e2\");\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.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.2.1.min.js\", \"https://unpkg.com/@holoviz/panel@1.2.3/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(\"fbbe1030-6c18-41e0-9a2d-5df5ae77f8e2\")).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(\"fbbe1030-6c18-41e0-9a2d-5df5ae77f8e2\");\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.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.2.1.min.js\", \"https://unpkg.com/@holoviz/panel@1.2.3/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(\"fbbe1030-6c18-41e0-9a2d-5df5ae77f8e2\")).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", "\n", "import numba\n", "\n", "import bebi103\n", "\n", "import bokeh\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "We continue our analysis of the [drone sperm quality data set](https://s3.amazonaws.com/bebi103.caltech.edu/data/bee_sperm.csv). Let's load it and remind ourselves of the content." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SpecimenTreatmentEnvironmentTreatmentNCSSSample IDColonyCageSampleSperm Volume per 500 ulQuantityViabilityRaw (%)QualityAge (d)InfertilAliveSpermQuantity MillionsAlive Sperm MillionsDead Sperm Millions
0227ControlCage1C2-1-12112150000215000096.726381461675696.72638114020796172.15002.0796170.070383
1228ControlCage1C2-1-22122287500228750096.349807976059596.34980814022040012.28752.2040010.083499
2229ControlCage1C2-1-3213875008750098.7598.750000140864060.08750.0864060.001094
3230ControlCage1C2-1-42141875000187500093.287420833694193.28742114017491391.87501.7491390.125861
4231ControlCage1C2-1-52151587500158750097.792506105006197.79250614015524561.58751.5524560.035044
\n", "
" ], "text/plain": [ " Specimen Treatment Environment TreatmentNCSS Sample ID Colony Cage \\\n", "0 227 Control Cage 1 C2-1-1 2 1 \n", "1 228 Control Cage 1 C2-1-2 2 1 \n", "2 229 Control Cage 1 C2-1-3 2 1 \n", "3 230 Control Cage 1 C2-1-4 2 1 \n", "4 231 Control Cage 1 C2-1-5 2 1 \n", "\n", " Sample Sperm Volume per 500 ul Quantity ViabilityRaw (%) Quality \\\n", "0 1 2150000 2150000 96.7263814616756 96.726381 \n", "1 2 2287500 2287500 96.3498079760595 96.349808 \n", "2 3 87500 87500 98.75 98.750000 \n", "3 4 1875000 1875000 93.2874208336941 93.287421 \n", "4 5 1587500 1587500 97.7925061050061 97.792506 \n", "\n", " Age (d) Infertil AliveSperm Quantity Millions Alive Sperm Millions \\\n", "0 14 0 2079617 2.1500 2.079617 \n", "1 14 0 2204001 2.2875 2.204001 \n", "2 14 0 86406 0.0875 0.086406 \n", "3 14 0 1749139 1.8750 1.749139 \n", "4 14 0 1552456 1.5875 1.552456 \n", "\n", " Dead Sperm Millions \n", "0 0.070383 \n", "1 0.083499 \n", "2 0.001094 \n", "3 0.125861 \n", "4 0.035044 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(os.path.join(data_path, \"bee_sperm.csv\"), comment='#')\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation\n", "\n", "We might wish to investigate how two measured quantities are correlated. For example, if the number of dead sperm and the number of alive sperm are closely correlated, this would mean that a given drone produces some quantity of sperm and some fraction tend to be dead. Let's take a look at this." ] }, { "cell_type": "code", "execution_count": 4, "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 = {\"a85dc130-06a3-4181-8e3e-c1d9fc8e4255\":{\"version\":\"3.2.1\",\"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\":\"LogScale\",\"id\":\"p1011\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LogScale\",\"id\":\"p1012\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1009\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1039\",\"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\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAATAAAAFAAAABYAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAAngAAAJ8AAACgAAAAoQAAAKIAAACjAAAApAAAAKUAAACmAAAApwAAAKgAAACpAAAAqgAAAKsAAACsAAAArQAAAK4AAACvAAAAsAAAALIAAACzAAAAtAAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM8AAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Specimen\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4wAAAOQAAADlAAAA5gAAAOcAAADoAAAA6QAAAOoAAADrAAAA9AAAAO0AAADuAAAA7wAAAPAAAADxAAAA8gAAAPcAAAD/AAAA+AAAAPoAAAD7AAAA/AAAAP0AAAD+AAAApwAAAKgAAACpAAAAqgAAAKsAAACsAAAArQAAAK4AAAB/AAAAgAAAAIEAAACCAAAAgwAAAIQAAACGAAAARwAAAEYAAABFAAAARAAAAC8AAADHAAAAugAAADsAAADEAAAAPQAAAIUAAAAyAAAAQQAAAD4AAABCAAAArwAAALAAAACxAAAAMAAAALIAAACzAAAAnQAAAKYAAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAACkAAAC5AAAAbAAAAOAAAADZAAAAMwAAAHUAAAB0AAAAcwAAAHEAAABwAAAAbwAAAG4AAABtAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAKgAAAFsAAAA0AAAAtAAAALUAAAC2AAAAtwAAAFoAAAA6AAAAAgEAANwAAADdAAAA3gAAAN8AAADaAAAAVgAAAMgAAADKAAAA2wAAAMsAAADMAAAAzQAAAM4AAABqAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFUAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Treatment\",{\"type\":\"ndarray\",\"array\":[\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\",\"Control\"],\"shape\":[131],\"dtype\":\"object\",\"order\":\"little\"}],[\"Environment\",{\"type\":\"ndarray\",\"array\":[\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\"],\"shape\":[131],\"dtype\":\"object\",\"order\":\"little\"}],[\"TreatmentNCSS\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sample ID\",{\"type\":\"ndarray\",\"array\":[\"C2-1-1\",\"C2-1-2\",\"C2-1-3\",\"C2-1-4\",\"C2-1-5\",\"C2-1-6\",\"C2-1-7\",\"C2-1-8\",\"C2-1-9\",\"C2-2-10\",\"C2-2-2\",\"C2-2-3\",\"C2-2-4\",\"C2-2-5\",\"C2-2-6\",\"C2-2-7\",\"C2-3-1\",\"C2-3-10\",\"C2-3-2\",\"C2-3-4\",\"C2-3-6\",\"C2-3-7\",\"C2-3-8\",\"C2-3-9\",\"C5-1-1\",\"C5-1-2\",\"C5-1-3\",\"C5-1-4\",\"C5-1-5\",\"C5-1-6\",\"C5-1-7\",\"C5-1-8\",\"C5-2-1\",\"C5-2-2\",\"C5-2-3\",\"C5-2-4\",\"C5-2-5\",\"C5-2-6\",\"C5-2-7\",\"C5-3-1\",\"C5-3-2\",\"C5-3-3\",\"C5-3-4\",\"C26-1-1\",\"C26-1-10\",\"C26-1-2\",\"C26-1-3\",\"C26-1-4\",\"C26-1-5\",\"C26-1-8\",\"C26-1-9\",\"C26-2-1\",\"C26-2-2\",\"C26-2-3\",\"C26-2-4\",\"C26-2-5\",\"C26-2-6\",\"C26-2-7\",\"C26-2-8\",\"C26-2-9\",\"C26-3-1\",\"C26-3-10\",\"C26-3-2\",\"C26-3-3\",\"C26-3-4\",\"C26-3-5\",\"C26-3-6\",\"C26-3-7\",\"C26-3-8\",\"C26-3-9\",\"51-1-5\",\"C51-1-1\",\"c51-1-3\",\"C51-1-4\",\"C51-1-6\",\"C51-1-7\",\"C51-2-1\",\"C51-2-2\",\"C51-2-3\",\"C51-2-5\",\"C51-2-6\",\"C51-2-7\",\"C51-2-8\",\"C51-2-9\",\"77-1-1\",\"77-1-2\",\"77-1-3\",\"77-1-4\",\"77-1-5\",\"77-1-6\",\"77-1-7\",\"77-1-8\",\"77-1-9\",\"77-2-1\",\"77-2-2\",\"77-2-3\",\"77-2-4\",\"77-2-5\",\"77-2-6\",\"77-3-5\",\"C77-3-1\",\"C77-3-10\",\"C77-3-2\",\"C77-3-3\",\"C77-3-4\",\"C77-3-6\",\"C77-3-8\",\"C77-3-9\",\"C80-1-1\",\"C80-1-6\",\"C80-1-7\",\"C80-1-8\",\"C80-1-9\",\"C80-2-1\",\"C80-2-10\",\"C80-2-2\",\"C80-2-4\",\"C80-2-5\",\"C80-2-6\",\"C80-2-7\",\"C80-2-8\",\"C80-2-9\",\"C80-1-3\",\"C80-3-1\",\"C80-3-2\",\"C80-3-3\",\"C80-3-4\",\"C80-3-5\",\"C80-3-6\",\"C80-3-7\",\"C80-3-9\"],\"shape\":[131],\"dtype\":\"object\",\"order\":\"little\"}],[\"Colony\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Cage\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABgAAAAYAAAAGAAAABgAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFwAAABcAAAAXAAAAFwAAABcAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sample\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAEAAAAKAAAAAgAAAAQAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAAAQAAAAIAAAADAAAABAAAAAEAAAAKAAAAAgAAAAMAAAAEAAAABQAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAoAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAUAAAABAAAAAwAAAAQAAAAGAAAABwAAAAEAAAACAAAAAwAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABQAAAAEAAAAKAAAAAgAAAAMAAAAEAAAABgAAAAgAAAAJAAAAAQAAAAYAAAAHAAAACAAAAAkAAAABAAAACgAAAAIAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAADAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAkAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sperm Volume per 500 ul\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"cM4gAIznIgDMVQEAOJwcACw5GABArCcAFBI0AMQZJwDMVQEAzFUBAOijDwDgZzUAYBgjAFS1HgC0YykApHgfANTPJAAIRRcArOkFAMROMwAA1DAA/IA3AGiJCQBADQMAAAk9AAh6IwDETjMARMoUAAgZSACQbygA1AQxALxzNABkaxwAQHcbAEjoAQDAxi0AwMYtAKRDEwDw6CYA1M8kABRzDwCYfzMARGk5ADzDRgDAxi0A6NgbAFSAEgAQVSIAZKAoABTdJwAgCyAAlFgJAGgoLgCIlCkAZAEEAOxgIQBEnkUA6A0oAHySAABUHzcAWAgYAIiUKQDkGwoAkG8oAMz0JQAkXhkAGPsUAEhSGgB0ViYA/OESAGTVNABEyhQAMMEdALQuHQDc9ysA8OgmAJgVGwAU3ScAhHY8APgkAQAEXDYAsNsjALB6SACghgEA2Iw2AMihLAAgQCwAFHMPAABqGABggjsAHE4OAHybPQCMshYAHIMaANQEMQCM5yIAtM1BAEzaHwDcQAsA0HwrAOyVLQBQ+AwAZApBAOxgIQAQii4ATNofADzvFQDgkwQAjH0KAKC9YACA0DsAYC80AGDjFgBgKEoA1AQxAMR6AgAIry8AQHAxAFSAEgC8CRwAAGoYAEB3GwCkQxMAtGMpAFS1HgBI6AEAmKsCAPwWHwAIry8AvD4oAKCGAQA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Quantity\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"cM4gAIznIgDMVQEAOJwcACw5GABArCcAFBI0AMQZJwDMVQEAzFUBAOijDwDgZzUAYBgjAFS1HgC0YykApHgfANTPJAAIRRcArOkFAMROMwAA1DAA/IA3AGiJCQBADQMAAAk9AAh6IwDETjMARMoUAAgZSACQbygA1AQxALxzNABkaxwAQHcbAEjoAQDAxi0AwMYtAKRDEwDw6CYA1M8kABRzDwCYfzMARGk5ADzDRgDAxi0A6NgbAFSAEgAQVSIAZKAoABTdJwAgCyAAlFgJAGgoLgCIlCkAZAEEAOxgIQBEnkUA6A0oAHySAABUHzcAWAgYAIiUKQDkGwoAkG8oAMz0JQAkXhkAGPsUAEhSGgB0ViYA/OESAGTVNABEyhQAMMEdALQuHQDc9ysA8OgmAJgVGwAU3ScAhHY8APgkAQAEXDYAsNsjALB6SACghgEA2Iw2AMihLAAgQCwAFHMPAABqGABggjsAHE4OAHybPQCMshYAHIMaANQEMQCM5yIAtM1BAEzaHwDcQAsA0HwrAOyVLQBQ+AwAZApBAOxgIQAQii4ATNofADzvFQDgkwQAjH0KAKC9YACA0DsAYC80AGDjFgBgKEoA1AQxAMR6AgAIry8AQHAxAFSAEgC8CRwAAGoYAEB3GwCkQxMAtGMpAFS1HgBI6AEAmKsCAPwWHwAIry8AvD4oAKCGAQA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"ViabilityRaw (%)\",{\"type\":\"ndarray\",\"array\":[\"96.7263814616756\",\"96.3498079760595\",\"98.75\",\"93.2874208336941\",\"97.7925061050061\",\"99.3110435663627\",\"96.9269279143752\",\"90.4013147346481\",\"97.3765432098765\",\"50\",\"97.4219443359481\",\"98.952595402898\",\"99.4550724637681\",\"96.8066378066378\",\"96.0334578275755\",\"89.8484848484848\",\"95.86426295\",\"98.83415435\",\"94.53596009\",\"96.92763298\",\"97.1678744\",\"94.02554961\",\"96.9047619\",\"92.06349206\",\"44.99212781\",\"90.58405696\",\"89.99798133\",\"77.63426433\",\"69.88498509\",\"99.25925926\",\"94.2715963\",\"94.2715963\",\"85.14155715\",\"84.92303589\",\"87.52340007\",\"86.91854637\",\"74.41948449\",\"90.65708784\",\"73.1876968\",\"44.9921278052127\",\"90.58405696164\",\"89.9979813278077\",\"77.6342643312626\",\"91.9125976104989\",\"78.308227886686\",\"81.25\",\"95.8436217383421\",\"75.7647208495557\",\"90.7178691961338\",\"78.4963132\",\"82.8133985826395\",\"82.4236141825151\",\"82.6329934229224\",\"79.3020312966259\",\"57.06521739\",\"82.42361418\",\"82.63299342\",\"81.6004584\",\"76.65909502\",\"83.55252183\",\"92.82808489\",\"76.14945911\",\"94.86235763\",\"88.04723817\",\"96.61498027\",\"75.933258\",\"73.73289924\",\"73.12553419\",\"94.24075725\",\"82.15099624\",\"89.2028260615428\",\"95.48021298\",\"90.8822649\",\"94.2353021005149\",\"95.7894736842105\",\"94.2545160570919\",\"84.57685325\",\"68.13048201\",\"89.28510289\",\"93.18261985\",\"86.62051698\",\"68.11131927\",\"89.04786069\",\"89.28510289\",\"99.1367521367521\",\"93.9600358113647\",\"93.3635651629073\",\"95.4214202677118\",\"94.6368791994235\",\"95.8969476248909\",\"99.3381527123421\",\"97.0712056970515\",\"75.3854905188791\",\"94.7614218403692\",\"99.0450658816933\",\"95.8885240609407\",\"98.264714204867\",\"99.5522388059701\",\"99.2513368983957\",\"79.53735548\",\"93.2874208336941\",\"76.1494591090057\",\"88.53378146\",\"89.70654852\",\"95.41407625\",\"98.64723637\",\"79.5373554799784\",\"98.6472363704961\",\"92.59090909\",\"96.411837266676\",\"96.9592550235536\",\"81.403220240878\",\"55.997149465823\",\"90.2362153123023\",\"90.6450318327302\",\"79.5\",\"94.3878045434769\",\"84.6659612601236\",\"84.6659612601236\",\"88.5826202980786\",\"85.176268629771\",\"93.4463051568315\",\"96.4067365144407\",\"97.3741737829884\",\"98.4761904761905\",\"99.4047619047619\",\"99.4047619047619\",\"99.3095238095238\",\"87.3829853415464\",\"77.0825689110135\",\"32.5\"],\"shape\":[131],\"dtype\":\"object\",\"order\":\"little\"}],[\"Quality\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"UJSrCH0uWECNQ/5AYxZYQAAAAAAAsFhA7zlaGmVSV0BruIZruHJYQC1KRiPo01hAbH91yVI7WEDbLf8jr5lWQNT8sEgZWFhAAAAAAAAASUBK6NAiAVtYQBRxtVL3vFhAbUxB6B/dWEB/zi30nzNYQNnOTCwkAlhAM9lkk012VkA/WYwVUPdXQDxE7chitVhAuKCMK02iV0Cg8rdWXjtYQHt1RHS+SlhACdjUmqKBV0CtynSe5zlYQF1QAEEQBFdAeLNIC/5+RkDgjHEwYaVWQJeXFe3ef1ZAo5dqyZdoU0DZv4CYo3hRQKa4JrSX0FhAvI1y1WGRV0C8jXLVYZFXQPVwuEUPSVVAZCUgBRM7VUDx1wFjf+FVQJzAtnbJulVArG551diaUkCO2Se6DapWQBZkcDkDTFJAn2s+C/5+RkCtT3MwYaVWQPk8E+3ef1ZAs/JryZdoU0AJ4M7/Z/pWQAVCdQG6k1NAAAAAAABQVEDvFwjm/fVXQE/aty/x8FJA1QykkfGtVkCupHCYw59TQCnD7bgOtFRAiwGpfhybVEA6gtj2gqhUQBxYE3tU01NAGpceC1mITEAzTqZ+HJtUQO1e1faCqFRA8aYR6W1mVEDQ9uCcLipTQEWLhYRc41RAJzfEV/80V0CDYvG8kAlTQJeTDt4wt1dAd9E+8wUDVkB11TTWWydYQL4uw3+6+1JADMQ20uduUkAcJY7ACEhSQJjBGJFoj1dAnSci7KmJVECURika+0xWQL4NOc+73ldAKPoyB3e4VkAQmYowD49XQCevobyG8ldAEGG3/UmQV0DY1eQp6yRVQKVqN9FZCFFA4yIxID9SVkBt1ioLsEtXQJ3t2Yy2p1VAIgTc2h8HUUAYlEgmEENWQOMiMSA/UlZAicAIjMDIWEA3Mws6cX1XQLcp0aZEV1dAZuy2jPjaV0C0QfmgwqhXQGfIApdn+VdACCRGS6TVWEABCFeijkRYQD7gbOCr2FJAIrarIruwV0BxAgJc4sJYQMPcBZTd+FdAMCzZE/GQWEBRzm7hV+NYQM+4W+cV0FhASjs9CGTiU0DvOVoaZVJXQDRR8LyQCVNAUHq2eSkiVkD7m0gXOG1WQDjzqzmA2ldAonsYUmypWEBaNT0IZOJTQAAEGVJsqVhAYh1cdNElV0Bw6bGKWxpYQO6rLm9kPVhAAOpEXM5ZVECCd/yXov9LQMhJ1CYej1ZAIZ2YM0ipVkAAAAAAAOBTQE7eJcrRmFdAkCj6G58qVUCQKPobnypVQO+OpaZJJVZAVws4/EdLVUAoKIFDkFxXQCjnlvgHGlhAKz2YdvJXWEDpeZ7neZ5YQJ7neZ7n2VhAnud5nufZWEA8z/M8z9NYQIIy89SC2FVACR4dz0hFU0AAAAAAAEBAQA==\"},\"shape\":[131],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Age (d)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Infertil\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"AliveSperm\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gbsfAGGhIQCGUQEAk7AaAEiwFwBHZicAb3gyAPVYIwDUTAEA5qoAAK48DwCs2DQAauciAEm6HQBrvycAxUYcABVKIwCU/xYA9pYFADe7MQD7cS8AEzA0ANY9CQA+zwIABXYbAN8iIAAGLS4A5iMQALFiMgDiIigA+zUuAIpyMQBhMhgAJlMXAFyrAQDEyScACBEiAOF2EQAuehwA+48QAKv+DQD3WC4AHZIsAC4KQQC+2CMAPKAWAHe7EQACAxoAA9skAJxKHwBJiRoADLQHAEAkJgBU+SAAJEkCAAiDGwAShzkAPK8gAEtwAABeDi4AGk8WAMCpHwDvlgkAQ5ojAOGrJAA2QxMAQ3gPAGc/EwA3ISQAKoMPAAchLwC12RMArAobAAqAGwDtHSoAoqwkADfoFgDEKBsAAvw1AP4QAQAfFi8AaGwYAI2KQADFXAEAShQ2AKvvKQBXUCkA/b0OAM4aFwBMETkA3zUOAJHNOwBPHBEAjx8ZAP6MMAApeCEAYalAAMi1HwBKKwsAvpYiAJGGKgBm4AkAOJU5AFrxHQCxZywA/WsfADVyEQAFhAQAkrYJAP5EXQDi/jkA9noqABXRDADI6kIA424sAKP4AQDyAS0AidspAA6qDwA51hgAhMsUAHGqGQBvkhIAek0oAIk9HgBf5QEAhqcCAAfgHgDeqikAnAUfAPR+AAA=\"},\"shape\":[131],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Quantity Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"MzMzMzMzAUDNzMzMzEwCQGZmZmZmZrY/AAAAAAAA/j9mZmZmZmb5P83MzMzMzARAzczMzMxMC0AAAAAAAIAEQGZmZmZmZrY/ZmZmZmZmtj9mZmZmZmbwPwAAAAAAAAxAZmZmZmZmAkCamZmZmRkAQDMzMzMzswVAAAAAAACAAEDNzMzMzEwDQGZmZmZmZvg/zczMzMzM2D9mZmZmZuYKQJqZmZmZmQlAmpmZmZkZDUAAAAAAAADkP5qZmZmZmck/AAAAAAAAEECamZmZmZkCQGZmZmZm5gpAzczMzMzM9T9mZmZmZuYSQDMzMzMzMwVAMzMzMzOzCUAAAAAAAIALQM3MzMzMzP0/zczMzMzM/D8AAAAAAADAPwAAAAAAAAhAAAAAAAAACEAzMzMzMzP0P2ZmZmZmZgRAzczMzMxMA0AzMzMzMzPwPwAAAAAAAAtAmpmZmZkZDkDNzMzMzIwSQAAAAAAAAAhAMzMzMzMz/T9mZmZmZmbzPwAAAAAAAAJAzczMzMxMBUBmZmZmZuYEQM3MzMzMzABAmpmZmZmZ4z8zMzMzMzMIQM3MzMzMzAVAzczMzMzM0D8AAAAAAIABQAAAAAAAQBJAAAAAAAAABUAzMzMzMzOjP2ZmZmZm5gxAMzMzMzMz+T/NzMzMzMwFQDMzMzMzM+U/MzMzMzMzBUBmZmZmZuYDQJqZmZmZmfo/AAAAAAAA9j+amZmZmZn7P5qZmZmZGQRAzczMzMzM8z8zMzMzM7MLQM3MzMzMzPU/MzMzMzMz/z+amZmZmZn+P1pkO99PDQdAZmZmZmZmBEBmZmZmZmb8P2ZmZmZm5gRAMzMzMzOzD0AzMzMzMzOzPwAAAAAAgAxAzczMzMzMAkAAAAAAAAATQJqZmZmZmbk/mpmZmZmZDEBmZmZmZmYHQDMzMzMzMwdAMzMzMzMz8D+amZmZmZn5PzMzMzMzMw9AAAAAAAAA7j9mZmZmZiYQQM3MzMzMzPc/zczMzMzM+z8zMzMzM7MJQM3MzMzMTAJAAAAAAABAEUAzMzMzM7MAQJqZmZmZmec/zczMzMzMBkBmZmZmZuYHQDMzMzMzM+s/zczMzMwMEUAAAAAAAIABQGZmZmZmZghAMzMzMzOzAEAAAAAAAAD3PzMzMzMzM9M/AAAAAAAA5j9cj8L1KFwZQFyPwvUoXA9AXI/C9ShcC0AAAAAAAAD4P3E9CtejcBNAMzMzMzOzCUDNzMzMzMzEPwAAAAAAAAlA7FG4HoXrCUBmZmZmZmbzP2ZmZmZmZv0/mpmZmZmZ+T/NzMzMzMz8PzMzMzMzM/Q/MzMzMzOzBUCamZmZmRkAQAAAAAAAAMA/ZmZmZmZmxj/NzMzMzEwAQAAAAAAAAAlAmpmZmZkZBUCamZmZmZm5Pw==\"},\"shape\":[131],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Alive Sperm Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"IqXZPA6jAEB0z7pGy6EBQPGcLSC0HrY/wocSLXn8+z/jqUca3Nb4P/1pozodqARA3+LhPQd2CkCR1hh0QogCQLwGfentz7U/ZmZmZmZmpj9TWRR2UfTvP9ttF5rrtAtADLJl+bpMAkC4zr9d9iv/P8b4MHvZ1gRAZmZmZmam/T//If32dYACQK8I/reSHfg/8Sprm+Jx1z8dVyO70hIKQOkLIef93whAVrq7zoZcC0B1IVZ/hGHjPyDxK9Zwkcc/z6Chf4LL/D/NVl7yP9kAQHPzjeieNQhAvCGNCpzs8D9CIQIOoWoKQEIJM23/CgVAXwfOGVE6CEDvAE9auOwJQClbJO1GX/k/61Ij9DN1+D+cNA2K5gG8P5vo81FG3ARAOpUMAFXcAUAczvxqDlDyP/W4b7VO3P0/rvAuF/Fd8T9sPUM4ZlntP0Xaxp+oTAhAU84Xey9eB0Az3eukvgwRQA4SonxBywJAlNxhE5m59z/4VblQ+ZfyPzm4dMx5Rvs/Yr8n1qlSA0BNEkvK3WcAQAaFQZlG0/s/TZ6ymq4n4D8vGFxzR/8DQAt72uGvSQFAtyqJ7IMswz/CoiJOJ9n8PwxZ3eo5KQ5AzR39L9ciAUDqtG6D2m+dPyk900uMJQhADw72JoZk9z8zw0ZZv5kAQKDf929eHOQ/198SgH+qAkBrmQzH8zkDQFDCTNu/MvQ/JNQMqaI48D8C8bp+wS70PxUDJJpA8QJAG2ZoPBFE8D+sG++OjLUIQIj3HFiO0PQ/NnLdlPJa/D+8dJMYBNb8P+xq8pTVFAZAtRoS91g6A0AIrYcvEwX4P2U4ns+Aevw/LGSuDKpNDEDowHKEDOSxP6uVCb/UrwhA9kTXhR+c+T/mAwKdSesQQOz6Bbth27Y/NxYUBmVaDEDvqZz2lPwFQB0c7E0MqQVAPWTKh6Dq7j9D4h5LHzr4P3qNXaJ66w1AzLT9KyvN7T+vCz84n1oPQEg0gSIW8fE/A9AoXfpX+j/ni70XX3QJQB6NQ/0ujAFAiJ0pdF7zEECa7+AnDqAAQBKHbCBdbOc/aOvgYG8iAkDU0XE1sksGQErSNZNvtuQ/fLd546QwDkDZWl8ktGX/PyUhkbbxRwdAEW3H1F15AED9oC5SKEvyPxDqIoWy8NI/Ewt8Rbde5D9Q5EnSNXMYQDaSBOEKaA5A2iCTjJxFBkAPe6GA7eDqP18M5US7ihFADTSfc7dLB0DCvwgaM4nAPx6LbVLRmAdAeh1xyAbyBUBQyM7b2GzwPyWS6GUUC/o/A1slWBzO9T8tr1xvm+n6P0USvYxiefM/ajNOQ1QhBUAYIxKFlrX/P5BOXfksz78/JlRweEFExj9bs5WX/C8AQMnJxK2C2AVABYpYxLBDAECkcD0K16OgPw==\"},\"shape\":[131],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Dead Sperm Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"GsIxy54Esj8Rqz/CMGC1P0pdMo6R7FE/8MFrlzYcwD91kNeDSfGhP+xnsRTJV5I/yT1d3bHYuj/2lnK+2HvPP1H1K50Pz2I/ZmZmZmZmpj8vbw7Xag+bP0yJJHoZxaI/5lq0AG2riT+7RzZXzXOwP5xNRwA3i7s/zczMzMzMyj+0WfW52oq5P9ttF5rrNJI/uB0aFqOulT8p6WFodXK6Pwu2EU92M7c/PPTdrSzRyz9n0TsVcM+TP9BDbRtGQZA/mC8vwD6aAUDDLLRzmgXMP5qXw+47htU/Q6z+CMOA0z8VV5V9V8T2P7b4FADjGZQ/PL1SliGOxz8P8Q9bejTJP4/GoX4XttE/huelYmNe0T8hW5avy/CPPyy7YHDNHdk/GavN/6uO6D9uUWaDTDK+P68nui784OU/66hqgqg79T/QRxlxAWi4P9wtyQG7mtU/Gy0Heqjt6j+Y+Q5+4gDYP8i3dw360uQ/fVpFf2jm1T/cDaK1os2pP46PFmcMc+E/stZQai+izz9lUG1wIvrhP1BSYAFMGdc/Yto391ePuz8SbFz/rs/gPwZHyatzDOI/xt0gWivavD/3dHXHYpvYP9CbilQYW+k/lBEXgEbp3j/6Yu/FF+2BP/SkTGpoA+M/SFLSw9DqvD9nJhjONczkPzI5tTNMbaE/5ZoCmZ1F1D9enznrU461PyVdM/lmm9k/ca/MW3Ud1z9eonprYKvdP1FoWfePhcI/jzUjg9xFzD84vCAiNe3XP6io+pXOh68/5geu8gTCxj/TTWIQWDm8P8MtH0lJD78/G7tE9dbAwj955XrbTIXRP9AoXfqXpOo/OngmNEks2z+3JAfsavJ0P6hSswdagd4/SKmEJ/T65z/O4O8Xs6XgP2/1nPS+8YU/ELHBwkmanz9xx5v8Fp3GP1xxcVRuosg/miLA6V28pz9kdavnpPe1P5ZbWg2Je8Q/7ZklAWpqeT/II7iRskW+PxNiLqnabtc/n8w/+iZNtz8FptO6DWqfP+j1J/G5E7g/8Z2Y9WIosz+zmUNSCyWDP+FDiZY8nnY/lIWvr3Wp4j8fSUkPQ6vJP6WD9X8O88k/7RD/sKVH3z81KQXdXtLMPxVUVP1K58E/3BDjNa/qnD8LfEW3XtPSP9hIEoQroHA/yk4/qIsUqj+RYRVvZB7NP8akv5fCg74/Crq9pDFa5D/xhF5/Eh/lPx8RUyKJXt4/L/mf/N070z8rNBDLZg6hPyNOJ9nqcsY/kKM5svLL3z+38LxUbMzHPwqi7gOQ2so/svShC+pbzj/12QHXFTO+P9IdxM4UOqc/L/mf/N07sj/ABkSIK2efPyi4WFGDaUg/OiAJ+3YSUT/BcRk3NdCMP7ix2ZHqO9k/Uz4EVaNX4z9I4XoUrkexPw==\"},\"shape\":[131],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1040\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1041\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1036\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1037\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"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_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1038\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"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_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1053\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1044\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1045\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1046\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"LwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARgAAAEcAAABIAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGEAAABiAAAAgAAAAIEAAACCAAAAgwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAA1wAAANgAAADZAAAA2gAAANsAAADcAAAA3QAAAN4AAADfAAAA4AAAAOEAAADiAAAA4wAAAOUAAADmAAAA6AAAAOkAAADqAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Specimen\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"EAAAABMAAAARAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAIQAAAGgAAAAiAAAAIwAAACQAAAAUAAAAZQAAAGcAAABjAAAAJgAAAGIAAAAlAAAAJwAAAFwAAABdAAAALQAAACwAAACHAAAAQAAAAEMAAAAuAAAAPwAAAJwAAAA8AAAAVwAAADgAAAA3AAAANgAAADUAAAAxAAAAWQAAAFgAAAA5AAAASAAAAEkAAABKAAAASwAAAIkAAACIAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAYQAAAGYAAABfAAAAYAAAAGQAAACKAAAAkwAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAlAAAAJYAAACXAAAAmQAAAJoAAACbAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Treatment\",{\"type\":\"ndarray\",\"array\":[\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\",\"Pesticide\"],\"shape\":[84],\"dtype\":\"object\",\"order\":\"little\"}],[\"Environment\",{\"type\":\"ndarray\",\"array\":[\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\",\"Cage\"],\"shape\":[84],\"dtype\":\"object\",\"order\":\"little\"}],[\"TreatmentNCSS\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sample ID\",{\"type\":\"ndarray\",\"array\":[\"P9-1-1\",\"P9-1-10\",\"P9-1-2\",\"P9-1-3\",\"P9-1-4\",\"P9-1-5\",\"P9-1-6\",\"P9-1-7\",\"P9-1-8\",\"P9-2-1\",\"P9-2-10\",\"P9-2-4\",\"P9-2-5\",\"P9-2-6\",\"P9-2-7\",\"P9-2-8\",\"P9-2-9\",\"P9-3-1\",\"P9-3-2\",\"P9-3-3\",\"P9-3-4\",\"P9-3-6\",\"P9-3-7\",\"P9-3-8\",\"P10-1-1\",\"P10-1-2\",\"P10-1-3\",\"P10-1-4\",\"P10-1-5\",\"P10-1-6\",\"P10-1-7\",\"P10-1-8\",\"P10-2-1\",\"P10-2-10\",\"P10-2-2\",\"P10-2-3\",\"P10-2-4\",\"P10-2-5\",\"P10-2-6\",\"P10-2-7\",\"P10-2-8\",\"P10-2-9\",\"P10-3-1\",\"P10-3-2\",\"P10-3-3\",\"P10-3-4\",\"P10-3-6\",\"P10-3-7\",\"P27-2-1\",\"P27-2-2\",\"P27-2-3\",\"P27-2-4\",\"P27-2-5\",\"P27-2-6\",\"P27-3-1\",\"P27-3-2\",\"P27-3-3\",\"P27-3-4\",\"P27-3-5\",\"P84-1-1\",\"P84-1-10\",\"P84-1-2\",\"P84-1-3\",\"P84-1-4\",\"P84-1-5\",\"P84-1-6\",\"P84-1-7\",\"P84-1-8\",\"P84-1-9\",\"P84-2-1\",\"P84-2-2\",\"P84-2-3\",\"P84-2-4\",\"P84-2-5\",\"P84-2-6\",\"P84-2-7\",\"P84-2-8\",\"P84-2-9\",\"P84-3-1\",\"P84-3-3\",\"P84-3-4\",\"P84-3-6\",\"P84-3-7\",\"P84-3-8\"],\"shape\":[84],\"dtype\":\"object\",\"order\":\"little\"}],[\"Colony\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Cage\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEQAAABEAAAARAAAAEQAAABEAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sample\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAoAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAAAQAAAAoAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAABAAAAAgAAAAMAAAAEAAAABgAAAAcAAAAIAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAABAAAACgAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAYAAAAHAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAIAAAADAAAABAAAAAUAAAABAAAACgAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAAAQAAAAMAAAAEAAAABgAAAAcAAAAIAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Sperm Volume per 500 ul\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"LAQMAHBkCABUtR4AtMQEAKgAJQDY7REA3KojABwZAgAYmjkABPIdAAwCKQC4gRYANBQXAOz2CABgTS8AlFgJAHBkCAAcgxoAtMQEAJRYCQDkUBYAfJIAABSoGwDIAggArL02AHTAPgDQfCsA+I4ZAET/IAA4ZxAAdOwNAGiJCQCQpDQAyDcUACxuJADIoSwA0BITAIRBMABwZAgARMoUAMihLAAY+xQA3KojAPRwLAB8MSUAPCQiALhMCgCkQxMAVEsGAMQZJwD4wyUAqGo9AKweEgCwphcAxOQaAESVCABY0wsA4JMEAFSAEgDwfg4AzPQlAGjzIQBwziAANLM7AIgqEQAkKQ0AyDcUAGQ2EABovhUAIHU4AOz2CABo8yEAaCguAOgNKACg8BkAiPUEAGRrHABkoCgAECAWAEzaHwDgZzUA/BYfAETKFAB07A0A\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Quantity\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"LAQMAHBkCABUtR4AtMQEAKgAJQDY7REA3KojABwZAgAYmjkABPIdAAwCKQC4gRYANBQXAOz2CABgTS8AlFgJAHBkCAAcgxoAtMQEAJRYCQDkUBYAfJIAABSoGwDIAggArL02AHTAPgDQfCsA+I4ZAET/IAA4ZxAAdOwNAGiJCQCQpDQAyDcUACxuJADIoSwA0BITAIRBMABwZAgARMoUAMihLAAY+xQA3KojAPRwLAB8MSUAPCQiALhMCgCkQxMAVEsGAMQZJwD4wyUAqGo9AKweEgCwphcAxOQaAESVCABY0wsA4JMEAFSAEgDwfg4AzPQlAGjzIQBwziAANLM7AIgqEQAkKQ0AyDcUAGQ2EABovhUAIHU4AOz2CABo8yEAaCguAOgNKACg8BkAiPUEAGRrHABkoCgAECAWAEzaHwDgZzUA/BYfAETKFAB07A0A\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"ViabilityRaw (%)\",{\"type\":\"ndarray\",\"array\":[\"85.25\",\"96.225240761533\",\"94.2555474050981\",\"64.6849816849817\",\"93.3688363420629\",\"91.1901154401154\",\"84.2298005331373\",\"50\",\"91.6445716674518\",\"91.6640169952838\",\"96.6798007811359\",\"94.5610812944981\",\"76.7901234567901\",\"92.8202433478271\",\"85.8696381925479\",\"83.3974358974359\",\"84.7125031830914\",\"80\",\"65.952380952381\",\"96.4028944911298\",\"98.0307692307692\",\"85.8057628645864\",\"82.98892351\",\"83.4890585\",\"69.2921732632089\",\"88.518651277272\",\"84.16351963\",\"62.2375256322625\",\"75.1795366795367\",\"90.2558852558852\",\"85.8187854451692\",\"47.11523769\",\"75.6472364126538\",\"36.9047619047619\",\"65.4363416721234\",\"22.1805903212349\",\"57.3331249910197\",\"67.0888753308092\",\"80.0878127537372\",\"87.2134857760681\",\"64.3360623353885\",\"69.760989010989\",\"80\",\"65.95238095\",\"96.40289449\",\"98.03076923\",\"83.5136233\",\"73.08722493\",\"83.6744779029035\",\"81.6703153532941\",\"46.1562090691409\",\"89.9080085911287\",\"92.0062575842632\",\"90.2943843441025\",\"97.3668128654971\",\"56.3148298863249\",\"73.70943059\",\"97.66666667\",\"97.8498168498169\",\"94.75378837\",\"66.92073161\",\"90.53494335\",\"80.79433733\",\"95.95850119\",\"90.34776335\",\"77.48158506\",\"71.94325159\",\"65.69637256\",\"87.3019119\",\"64.31235797\",\"91.78991597\",\"71.89373408\",\"63.04550956\",\"81.4469142\",\"82.85464668\",\"84.95384615\",\"87.83734442\",\"96.06106241\",\"71.19408369\",\"80.02419964\",\"88.2474712\",\"89.91779766\",\"86.33333333\",\"83.9286198\"],\"shape\":[84],\"dtype\":\"object\",\"order\":\"little\"}],[\"Quality\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAABQVUCqIDpYag5YQFbegONakFdAvtZrvdYrUEAir74Dm1dXQKlw89kqzFZAZZtLDbUOVUAAAAAAAABJQI7ohalA6VZA264jQX/qVkCIsSLbgStYQBGRhMHoo1dA0q35YZEyU0B0a/TdfjRXQCEW8yaod1VAl2/5lm/ZVEAaa/OmmS1VQAAAAAAAAFRA0/M8z/N8UEAHyfkFyRlYQB34gR/4gVhAtu5nnpFzVUCEbNWFSr9UQCzVBbxM31RA3I9897JSUUBceiCVMSFWQKjGCRt3ClVAvENrPWceT0C5wmmHfctSQI5jjWxgkFZAUlwR+2Z0VUCG6M4bwI5HQDhIRlJs6VJAPM/zPM9zQkC66Z4F7VtQQJOt0yo7LjZAePT21qOqTEDKzycisMVQQEVeYrmeBVRA6pc+wKnNVUBO+pgLghVQQAq0QAu0cFFAAAAAAAAAVEBXZTrP83xQQHiS+AXJGVhAriSBH/iBWECs/UI03+BUQL1v3xeVRVJAGLZdpSrrVEDpGV5y5mpUQD6mpaj+E0dAodgQ0Bx6VkDL8DWGZgBXQPqXbjHXklZA+UOr3HlXWEDQyIBYTChMQD+1j09nbVJA7T6uqqpqWEBqYzZmY3ZYQFRQkxE+sFdA+1VGRO26UECdXQiDPKJWQOOVPWzWMlRAiQ5gFVj9V0DVvzXBQZZWQE28JErSXlNAzbzqO178UUAJwjZekWxQQHwxSoZS01VA4HJIrP0TUEA9b7b7jfJWQOw6bfAy+VFAfO3bQdOFT0CNRwQ+mlxUQAoP/YeytlRAmOq40As9VUDW2AwNl/VVQMJ9T3LoA1hAK0//3WvMUUAAmKV8jAFUQOyscZHWD1ZA54JlMr16VkATwVFVVZVVQMLavYFu+1RA\"},\"shape\":[84],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Age (d)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Infertil\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"AliveSperm\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"bz4KAFYTCAC88RwAnBUDAIKMIgB7WRAA5woeAI4MAQD+yTQA+nIbAH2lJwBXSBUA6rgRACZSCABGnigAWcsHAP4bBwCwNRUAFSUDAIMCCQBk4BUAsX0AAK7zFgAtsAYAYO4lAAmMNwDEmSQALugPAJ3OGAAKzg4A+PILAEZ+BACl0icAHHYHALTWFwBO5gkAeO8KANVfIACiuAYAuyESAOW2HADtog4AsIgcAF9PHQD82iMAHnghAASaCABmFA4ARUQFAAHvHwBebhEA7Tc3AN6rEAAKWxUAei8aAGLVBABwtwgAiHgEAH0aEgBAvA0AjWYZAMK8HgB2gRoAiEk5AFyCDwB2MgoAoIsOAKemCgCU+xIAJU8kAIE6CACTaBgAthkdAH2fIAAQfhUAgzYEAIL2GAC5BicAesAPAGl9GQAVIS8Ai/QbAOPyEQCYrwsA\"},\"shape\":[84],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Quantity Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"MzMzMzMz6T+amZmZmZnhP5qZmZmZGQBAAAAAAAAA1D9mZmZmZmYDQM3MzMzMzPI/MzMzMzOzAkCamZmZmZnBPzMzMzMzMw5AZmZmZmZm/z8AAAAAAIAFQJqZmZmZmfc/MzMzMzMz+D/NzMzMzMziP83MzMzMzAhAmpmZmZmZ4z+amZmZmZnhP83MzMzMzPs/AAAAAAAA1D+amZmZmZnjP2ZmZmZmZvc/MzMzMzMzoz8AAAAAAAD9P83MzMzMzOA/MzMzMzOzDEAzMzMzM3MQQM3MzMzMzAZAzczMzMzM+j/NzMzMzEwBQDMzMzMzM/E/MzMzMzMz7T8AAAAAAADkP5qZmZmZmQtAMzMzMzMz9T+amZmZmRkDQGZmZmZmZgdAAAAAAAAA9D/NzMzMzEwJQJqZmZmZmeE/zczMzMzM9T9mZmZmZmYHQAAAAAAAAPY/MzMzMzOzAkDNzMzMzEwHQAAAAAAAgANAZmZmZmbmAUCamZmZmZnlPzMzMzMzM/Q/ZmZmZmZm2j8AAAAAAIAEQM3MzMzMzANAmpmZmZkZEEAAAAAAAADzP83MzMzMzPg/MzMzMzMz/D8AAAAAAADiP83MzMzMzOg/MzMzMzMz0z9mZmZmZmbzP2ZmZmZmZu4/ZmZmZmbmA0DNzMzMzMwBQDMzMzMzMwFAzczMzMxMD0AAAAAAAADyP5qZmZmZmes/MzMzMzMz9T8AAAAAAADxP83MzMzMzPY/mpmZmZmZDUDNzMzMzMziP83MzMzMzAFAMzMzMzMzCEAAAAAAAAAFQDMzMzMzM/s/zczMzMzM1D/NzMzMzMz9P83MzMzMTAVAMzMzMzMz9z8zMzMzM7MAQAAAAAAAAAxAzczMzMxMAEDNzMzMzMz1PzMzMzMzM+0/\"},\"shape\":[84],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Alive Sperm Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"vsCsUKR75T9FnbmHhO/gP1u0AG2rWf4/AFKbOLnfyT84ZW6+ER0CQP2Es1vLJPE/YK+w4H6A/z+amZmZmZmxP2ak3lM5rQtANUBpqFHI/D9cr+lBQckEQFR0JJf/UPY/9wZfmEyV8j+wcf27PnPhP8OayqKwSwVALxSwHYxY4D/biCe7mdHdPz0K16NwPfY/dSFWf4Rhyj9dwMsMG+XiPzhnRGlv8PY/juVd9YB5oD9k5ZfBGBH4Pyf5Eb9iDdw/5IV0eAjjA0BtcY3PZB8NQHHJcad0MANAtMpMaf2t8D+f46PFGQP6Pz81XrpJDO8//Bu0Vx8P6T+4zOmymNjSPxU42Qbu4ARAkLsIU5RL3z/D1mzlJf/4P5p4B3jSwuQ/sg5HV+nu5j9hTzv8NfkAQMuBHmrbMNw/x0j2CDUD8z9Robq5+Bv+P8+8HHbfse4/7FG4HoXr/T8Ni1HX2rv+P83km21uzAJA323eOCmMAUAFbAcj9gniP5lnJa34hu0/+RG/Yg0X1j/tSWBzDr4AQFT/IJIhR/I/Pudu10vzDEDEW+ffLnvxP/KWqx+bZPY/2uGvyRp1+z+gppat9UXUPxr5vOKpR+I/jZduEoPA0j9uaqD5nPvyPwNbJVgczuw/OgMjL2ui+j/X+bfLfh0AQA6eCU0Sy/s/LxnHSPYIDkD1MLQ6OUPwP3lcVIuIYuU/7UYf8wGB7j/HYptUNFbmP9Bf6BGj5/M/NL4vLlUJA0D9E1ysqEHhP2OXqN4amPk/6Z51jZaD/j9IwVPIlRoBQC4B+KdUifY/2lTdI5ur0T8+y/Pg7iz6P7x0kxgEdgRAQj9Tr1uE8D8m32xzY7r6P/xx++WTtQhAcRsN4C1Q/T8kRPmCFtLyP8+fNqrTgeg/\"},\"shape\":[84],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Dead Sperm Millions\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"q5MzFHe8vT+Piv87okKVP4XtJ2N8mL0//1vJjo1AvD/gEoB/SpXEP/p8lBEXgLo/GtzWFp6X1z+amZmZmZmxP2x2pPrOL9Q/hzHp76XwxD+MFMrC19e2P2FUUiegibQ/8rBQa5p31j/IsfUM4ZilP0uQEVDhCNw/UitM32sIuj9hqS7gZYa1Pz0K16NwPdY/Fr1TAfc8uz+JJ7uZ0Y+WP5LLf0i/fZ0/Jm2q7pHNdT9uaqD5nLvTP8uBHmrbMLY/n1p9dVWg8T/Kp8e2DDjeP98a2CrB4tw/MgQAx5495D/0a+un/yzhPzeJQWDl0Lo/3Vz8bU+QwD9IMxZNZyfVPxKGAUuu4uo/ngjiPJzA6j/huIybGmjqP0CIZMixNQJATvG4qBYR4T/X+iKhLafwP6DFUiRfCbw/LiC0Hr5Mxj98KxIT1LDwP2KGxhNBnNo/7FG4HoXr3T8ZHZCEfbvvP1Fmg0wycrY/2SH+YUuPpj+kbJG0G328P5z9gXLbvtU/tVGdDmQ9sT+asP1kjA/eP0aaeAd4UvU/pl8i3jr/2T+7Q4oBEk24P9WuCWmNQcM/FytqMA3Dpz/AstKkFHTPP8pOP6iLFMo/eekmMQisfD8N/n4xW7KaPzG2EOSghKk/JZNTO8NU6j9eL00R4PTKP2Ahc2VQbdo/4jlbQGg9xD+38LxUbMy7P4T0FDlE3Mg/8z6O5sjK1z9xOslWl1PXP+RnI9dNKcc/zLbT1ogg9T/8jAsHQrKoP2wE4nX9AuQ/fsfw2M/i8T++9WG9USvfPxXI7Cx6p9I/lL97R40JqT90DMhe7/7MPwwCK4cW2bo/xM9/D1672j8AHebLC7DaPyJwJNBgU9o/QfFjzF1Lyj9GRZxOstXHP5BN8iN+xcI/\"},\"shape\":[84],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1054\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1055\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1050\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1051\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1052\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Alive Sperm Millions\"},\"y\":{\"type\":\"field\",\"field\":\"Dead Sperm Millions\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7f0e\"},\"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\"},{\"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\",\"bottom_units\":\"canvas\",\"top_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\":\"LogAxis\",\"id\":\"p1018\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"LogTicker\",\"id\":\"p1019\",\"attributes\":{\"num_minor_ticks\":10,\"mantissas\":[1,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"LogTickFormatter\",\"id\":\"p1020\"},\"axis_label\":\"dead sperm (millions)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1021\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LogAxis\",\"id\":\"p1013\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"LogTicker\",\"id\":\"p1014\",\"attributes\":{\"num_minor_ticks\":10,\"mantissas\":[1,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"LogTickFormatter\",\"id\":\"p1015\"},\"axis_label\":\"alive sperm (millions)\",\"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\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1042\",\"attributes\":{\"location\":\"bottom_right\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1043\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Control\"},\"renderers\":[{\"id\":\"p1039\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1056\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Pesticide\"},\"renderers\":[{\"id\":\"p1053\"}]}}]}}],\"frame_width\":300,\"frame_height\":300}}],\"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\":\"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\":\"a85dc130-06a3-4181-8e3e-c1d9fc8e4255\",\"roots\":{\"p1002\":\"f90cd5f3-a55b-408f-9881-cc7ceb6868b1\"},\"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": [ "# Set up plot on log scale\n", "p = bokeh.plotting.figure(\n", " frame_height=300,\n", " frame_width=300,\n", " x_axis_label=\"alive sperm (millions)\",\n", " y_axis_label=\"dead sperm (millions)\",\n", " x_axis_type=\"log\",\n", " y_axis_type=\"log\",\n", ")\n", "\n", "# Only use values greater than zero for log scale\n", "inds = (df[\"Alive Sperm Millions\"] > 0) & (df[\"Dead Sperm Millions\"] > 0)\n", "\n", "# Populate glyphs\n", "for color, (treatment, g) in zip(\n", " bokeh.palettes.Category10_3, df.loc[inds, :].groupby(\"Treatment\")\n", "):\n", " p.circle(\n", " source=g,\n", " x=\"Alive Sperm Millions\",\n", " y=\"Dead Sperm Millions\",\n", " color=color,\n", " legend_label=treatment,\n", " )\n", "\n", "p.legend.location = \"bottom_right\"\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There seems to be some correlation (on a log scale), but it is difficult to tell. We can compute the correlation with the **bivariate correlation coefficient**, also known as the Pearson correlation. It is the plug-in estimate of the correlation between variables (in this case alive and dead sperm). The **correlation** is the covariance divided by the geometric mean of the individual variances\n", "\n", "The bivariate correlation coefficient is implemented with `np.corrcoef()`, but we will code our own and JIT it for speed." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "@numba.njit\n", "def bivariate_r(x, y):\n", " \"\"\"\n", " Compute plug-in estimate for the bivariate correlation coefficient.\n", " \"\"\"\n", " return (\n", " np.sum((x - np.mean(x)) * (y - np.mean(y)))\n", " / np.std(x)\n", " / np.std(y)\n", " / np.sqrt(len(x))\n", " / np.sqrt(len(y))\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it to compute the bivariate correlation coefficient for the logarithm of alive and dead sperm." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5219944217488051" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bivariate_r(\n", " np.log(df.loc[inds, \"Alive Sperm Millions\"].values),\n", " np.log(df.loc[inds, \"Dead Sperm Millions\"].values),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pairs bootstrap confidence intervals\n", "\n", "How can we get a confidence interval on a correlation coefficient? We can again apply the bootstrap, but this time, the replicate is a *pair* of data, in this case a dead sperm count/alive sperm count pair. The process of drawing pairs of data points from an experiment and then computing bootstrap replicates from them is called **pairs bootstrap**. Let's code it up for this example with the bivariate correlation.\n", "\n", "Our strategy in coding up the pairs bootstrap is to draw bootstrap samples of the *indices* of measurement and use those indices to select the pairs." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "@numba.njit\n", "def draw_bs_sample(data):\n", " \"\"\"Draw a bootstrap sample from a 1D data set.\"\"\"\n", " return np.random.choice(data, size=len(data))\n", "\n", "\n", "@numba.njit\n", "def draw_bs_pairs(x, y):\n", " \"\"\"Draw a pairs bootstrap sample.\"\"\"\n", " inds = np.arange(len(x))\n", " bs_inds = draw_bs_sample(inds)\n", " \n", " return x[bs_inds], y[bs_inds]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With our pairs sampling function in place, we can write a function to compute replicates." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "@numba.njit\n", "def draw_bs_pairs_reps_bivariate(x, y, size=1):\n", " \"\"\"\n", " Draw bootstrap pairs replicates.\n", " \"\"\"\n", " out = np.empty(size)\n", "\n", " for i in range(size):\n", " out[i] = bivariate_r(*draw_bs_pairs(x, y))\n", "\n", " return out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can put it all together to compute confidence intervals on the correlation. To start, we extract all of the relevant measurements as Numpy arrays to allow for faster resampling (and that's what our Numba'd functions require)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Extract NumPy arrays (only use values greater than zero for logs)\n", "inds = (df[\"Alive Sperm Millions\"] > 0) & (df[\"Dead Sperm Millions\"] > 0)\n", "\n", "alive_ctrl = df.loc[\n", " (inds) & (df[\"Treatment\"] == \"Control\"), \"Alive Sperm Millions\"\n", "].values\n", "\n", "alive_pest = df.loc[\n", " (inds) & (df[\"Treatment\"] == \"Pesticide\"), \"Alive Sperm Millions\"\n", "].values\n", "\n", "dead_ctrl = df.loc[\n", " (inds) & (df[\"Treatment\"] == \"Control\"), \"Dead Sperm Millions\"\n", "].values\n", "\n", "dead_pest = df.loc[\n", " (inds) & (df[\"Treatment\"] == \"Pesticide\"), \"Dead Sperm Millions\"\n", "].values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compute the bootstrap replicates using our `draw_bs_pairs_reps_bivariate()` function." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Get reps\n", "bs_reps_ctrl = draw_bs_pairs_reps_bivariate(\n", " np.log(alive_ctrl), np.log(dead_ctrl), size=10000\n", ")\n", "\n", "bs_reps_pest = draw_bs_pairs_reps_bivariate(\n", " np.log(alive_pest), np.log(dead_pest), size=10000\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And from the replicates, we can compute and print the 95% confidence interval." ] }, { "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 = {\"d7f719e3-8ef1-4222-b219-514fdc8fd9cc\":{\"version\":\"3.2.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1087\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1089\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p1096\",\"attributes\":{\"factors\":[\"treated\",\"control\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1097\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p1098\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1094\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1122\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1116\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1117\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1118\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.5837436831990352]],[\"y\",[\"control\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1123\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1124\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1119\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1120\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"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\":\"p1121\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"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\":\"p1131\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1125\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1126\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1127\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"L8OavSEI3D+Xn+wbs1DmPw==\"},\"shape\":[2],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",[\"control\",\"control\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1132\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1133\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1128\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1129\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":3}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1130\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":3}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1140\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1134\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1135\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1136\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.5003151118075055]],[\"y\",[\"treated\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1141\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1142\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1137\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1138\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"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\":\"p1139\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":5},\"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\":\"p1149\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1143\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1144\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1145\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"8rJb51Af0j9td3k6xWDlPw==\"},\"shape\":[2],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",[\"treated\",\"treated\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1150\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1151\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1146\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":3}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1147\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":3}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1148\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":3}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1095\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1109\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1110\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1111\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1112\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_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\":\"p1113\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1114\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1115\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p1104\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p1105\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p1106\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1107\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1099\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1100\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1101\"},\"axis_label\":\"bivariate correlation of logs\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1102\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1103\",\"attributes\":{\"axis\":{\"id\":\"p1099\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1108\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1104\"}}}],\"frame_width\":450,\"frame_height\":100}}],\"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\":\"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\":\"d7f719e3-8ef1-4222-b219-514fdc8fd9cc\",\"roots\":{\"p1087\":\"a79e0e28-6cc2-4111-939a-a78a0e12e0e3\"},\"root_ids\":[\"p1087\"]}];\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": "p1087" } }, "output_type": "display_data" } ], "source": [ "# Get the confidence intervals\n", "conf_int_ctrl = np.percentile(bs_reps_ctrl, [2.5, 97.5])\n", "conf_int_pest = np.percentile(bs_reps_pest, [2.5, 97.5])\n", "\n", "# Plot confidence intervals\n", "summaries = [\n", " dict(\n", " label=\"control\",\n", " estimate=bivariate_r(np.log(alive_ctrl), np.log(dead_ctrl)),\n", " conf_int=conf_int_ctrl,\n", " ),\n", " dict(\n", " label=\"treated\",\n", " estimate=bivariate_r(np.log(alive_pest), np.log(dead_pest)),\n", " conf_int=conf_int_pest,\n", " ),\n", "]\n", "\n", "bokeh.io.show(\n", " bebi103.viz.confints(summaries, x_axis_label=\"bivariate correlation of logs\")\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see a clear correlation in both samples, with a wide, but positive, confidence interval. Note that we did this analysis on a log scale, since the data span several orders of magnitude." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 12, "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.24.3\n", "pandas : 2.0.3\n", "numba : 0.57.0\n", "bokeh : 3.2.1\n", "bebi103 : 0.1.17\n", "jupyterlab: 4.0.6\n", "\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p numpy,pandas,numba,bokeh,bebi103,jupyterlab" ] } ], "metadata": { "anaconda-cloud": {}, "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 }