{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Graphical model assessment: Q-Q plots\n", "\n", "**[Dataset download](https://s3.amazonaws.com/bebi103.caltech.edu/data/singer_transcript_counts.csv)**\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd, {\n", " iopub: {\n", " output: function(msg) {\n", " var id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", "\n", " \n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

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

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

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

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };var element = document.getElementById(\"1001\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n return false;\n }\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.4.0.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var 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 var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import scipy.optimize\n", "import scipy.stats as st\n", "\n", "import bebi103\n", "\n", "import bokeh_catplot\n", "\n", "import bokeh.io\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Graphical model assessment\n", "\n", "Thus far, we have not been terribly principled in how we have assessed models. By **model assessment**, I mean some metric, quantitative or qualitative, or how well matched the proposed generative model and the actual (unknown) generative model are. In my opinion, many of the most effective methods are graphical, meaning that we make plots of data generated from the theoretical generative model along with the measured data. We will cover a few effective ways of generating these graphics, starting with Q-Q plots." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Q-Q plots\n", "\n", "**[Q-Q plots](https://en.wikipedia.org/wiki/Q–Q_plot)** (the \"Q\" stands for \"quantile) are convenient ways to graphically compare two probability distributions. In our case, we wish to compare the measured distribution to the theoretical one parametrized by the MLE. There are many ways to generate Q-Q plots, and many of the descriptions out there are kind of convoluted. Here is a procedure/description I like for $N$ total empirical samples.\n", "\n", "1. Sort your samples from lowest to highest.\n", "2. Draw $N$ samples from the theoretical distribution and sort them.\n", "3. Plot your samples against the samples from the theoretical distribution.\n", "\n", "If the plotted points fall on a straight line of slope one and intercept zero (\"the diagonal\"), the distributions are the same. Deviations from the diagonal highlight differences in the distributions.\n", "\n", "I actually like to generate many many samples from the theoretical distribution and then plot the 95% confidence region of the Q-Q plot.\n", "\n", "This plot gives a feel of how plausible it is that the observed data were drawn out of the theoretical distribution. Let's do this with a Negative Binomial distribution with our measured mRNA transcripts using the MLE to parametrize the theoretical distribution. We will do it for the Rex1 gene (which obviously shows bimodality).\n", "\n", "As a reminder, here is the ECDF of that data set." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"75033b1a-9c89-41e1-aa70-b7a25590ac52\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1011\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1015\",\"type\":\"Grid\"},{\"id\":\"1020\",\"type\":\"Grid\"},{\"id\":\"1046\",\"type\":\"Legend\"}],\"left\":[{\"id\":\"1016\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":400,\"renderers\":[{\"id\":\"1037\",\"type\":\"GlyphRenderer\"},{\"id\":\"1052\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1040\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1027\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1003\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1007\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1005\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1009\",\"type\":\"LinearScale\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1048\",\"type\":\"ColumnDataSource\"}},\"id\":\"1053\",\"type\":\"CDSView\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1017\",\"type\":\"BasicTicker\"}},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"ECDF\",\"formatter\":{\"id\":\"1042\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1017\",\"type\":\"BasicTicker\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1042\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1021\",\"type\":\"PanTool\"},{\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"id\":\"1024\",\"type\":\"SaveTool\"},{\"id\":\"1025\",\"type\":\"ResetTool\"},{\"id\":\"1026\",\"type\":\"HelpTool\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"data\":{\"Nanog\":[39,33,68,88,41,103,27,15,153,127,73,5,64,104,202,216,51,293,4,1,5,143,77,27,156,0,100,101,33,120,101,57,97,121,228,79,48,0,34,107,110,408,231,153,138,10,137,69,174,61,32,84,67,141,24,94,246,80,69,11,20,10,13,44,68,251,127,74,156,44,61,33,39,175,128,24,67,274,78,49,4,143,193,82,10,176,86,107,130,149,31,40,177,37,145,1,86,113,115,139,68,83,64,94,117,26,108,120,84,2,144,62,55,12,21,39,33,14,103,78,82,46,47,79,1,6,24,116,104,63,59,132,125,153,85,104,52,140,128,22,35,2,162,236,140,14,3,132,120,30,84,200,74,154,81,77,59,88,80,10,175,19,124,60,87,194,29,119,67,8,38,94,28,22,66,6,90,77,92,118,171,29,32,11,77,37,198,134,14,227,190,40,1,50,65,19,64,154,65,25,71,129,114,123,156,8,132,136,80,162,53,87,72,64,19,134,10,65,109,96,105,21,20,116,239,0,83,263,67,0,29,66,191,30,196,49,186,181,104,127,66,11,19,155,252,160,38,41,6,195,55,24,94,11,66,73,263,168,128,18,58,72,105,118,23,212,76,32,29,104,2,76,148,187,141,3,8,74,104],\"Prdm14\":[0,5,0,1,0,0,0,2,1,3,1,1,3,14,16,11,1,15,0,0,0,1,0,0,7,0,4,6,0,12,4,0,7,17,1,8,2,0,0,1,4,24,31,3,3,0,1,1,5,0,3,1,7,1,5,1,7,1,1,0,0,0,0,3,9,32,3,15,4,4,0,1,6,3,3,1,2,19,8,1,0,11,3,6,0,12,0,12,5,9,2,7,21,0,5,0,1,2,3,1,1,5,0,0,13,0,4,2,3,0,13,27,0,2,1,1,0,0,3,6,5,2,3,7,2,0,0,6,0,0,1,25,12,7,1,6,0,4,3,1,0,1,20,10,7,0,0,0,5,0,12,0,2,1,0,0,7,3,1,0,8,0,15,5,4,6,0,2,1,0,12,4,6,0,3,0,9,8,12,7,13,1,0,1,11,3,11,27,6,32,0,6,0,0,5,0,2,3,2,1,2,2,6,6,1,1,3,0,0,3,4,7,6,3,0,22,0,18,1,5,0,1,1,18,3,0,4,15,3,0,0,0,18,1,0,1,16,12,1,8,5,0,0,17,4,8,0,0,0,8,1,1,10,0,5,0,0,0,15,0,8,5,6,5,1,0,1,0,1,9,0,6,5,19,6,1,4,4,0],\"Rest\":[34,91,70,54,54,68,74,60,96,35,50,51,43,50,74,125,62,130,95,31,67,90,62,39,68,40,65,78,60,94,99,55,69,41,102,65,42,76,114,84,106,182,68,86,63,24,103,96,75,60,70,79,74,74,44,104,97,30,58,17,34,44,28,49,65,246,104,108,91,144,40,80,57,82,85,51,39,98,88,65,13,140,85,76,21,80,60,137,91,70,12,53,65,33,59,59,72,110,138,105,83,104,62,57,110,51,106,92,59,33,108,53,34,94,48,64,93,53,77,83,56,48,88,54,75,46,29,42,79,64,57,92,125,37,44,112,52,125,152,18,34,16,53,72,103,35,75,62,134,83,94,67,84,80,57,80,29,87,130,32,142,78,92,74,155,159,61,74,94,59,91,112,68,27,32,78,162,89,162,92,100,40,37,5,107,31,91,153,94,129,98,108,8,53,95,39,65,68,75,83,45,90,87,78,117,36,82,61,129,103,55,43,40,56,27,87,53,72,89,109,124,49,31,48,82,70,82,121,65,11,170,103,62,46,106,94,82,95,91,64,58,66,26,67,79,118,26,109,25,54,51,53,52,12,70,62,116,85,101,92,134,74,46,73,30,137,107,59,46,86,15,62,82,148,77,91,92,82,98],\"Rex1\":[11,172,261,178,129,97,16,29,118,133,152,8,125,172,245,265,202,291,14,40,56,160,120,52,239,11,151,76,122,290,98,170,218,171,131,89,32,8,214,219,172,353,331,235,209,8,297,239,192,238,124,163,148,151,40,205,331,218,150,61,76,128,11,166,96,362,160,247,204,266,98,145,61,136,111,15,80,250,169,155,6,163,174,227,69,221,167,174,155,195,38,135,244,98,182,10,191,131,255,288,137,238,103,131,166,17,284,264,86,8,260,81,19,121,9,126,8,6,110,194,118,122,122,159,23,12,163,192,302,157,62,206,104,140,129,126,160,140,258,30,99,6,98,170,254,9,11,154,145,11,90,203,186,144,68,166,94,186,201,113,176,18,156,31,173,166,108,245,191,113,72,157,51,147,108,11,420,190,151,153,198,154,48,11,95,23,134,326,124,105,233,217,3,94,144,47,177,241,54,102,142,204,89,81,124,7,265,100,204,102,116,142,210,140,29,155,6,90,96,142,281,118,5,116,271,19,321,226,201,8,17,179,289,25,262,227,194,98,130,116,42,79,15,193,276,143,93,242,32,153,111,53,47,6,252,78,205,217,215,13,191,116,132,125,63,186,97,100,54,137,4,158,166,180,195,144,67,120,280],\"__ECDF\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[279]},\"__dummy_cat\":[\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \"],\"__label\":[\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278]},\"selected\":{\"id\":\"1072\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1073\",\"type\":\"UnionRenderers\"}},\"id\":\"1048\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1061\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1062\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"Rex1\"},\"y\":{\"field\":\"__ECDF\"}},\"id\":\"1051\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":0.5,\"fill_color\":\"#1f77b3\",\"line_alpha\":0,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Patch\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Patch\"},{\"attributes\":{\"data_source\":{\"id\":\"1034\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1035\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1036\",\"type\":\"Patch\"},\"selection_glyph\":null,\"view\":{\"id\":\"1038\",\"type\":\"CDSView\"}},\"id\":\"1037\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1045\",\"type\":\"BoxAnnotation\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1034\",\"type\":\"ColumnDataSource\"}},\"id\":\"1038\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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AAAAAACAaUAAAAAAAIBpQAAAAAAAYGlAAAAAAABgaUAAAAAAAEBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAACBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAGBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAEBoQAAAAAAAIGhAAAAAAAAgaEAAAAAAAABoQAAAAAAAAGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAwGdAAAAAAADAZ0AAAAAAAEBnQAAAAAAAQGdAAAAAAADAZkAAAAAAAMBmQAAAAAAAgGZAAAAAAACAZkAAAAAAAGBmQAAAAAAAYGZAAAAAAABAZkAAAAAAAEBmQAAAAAAAIGZAAAAAAAAgZkAAAAAAAABmQAAAAAAAAGZAAAAAAADAZUAAAAAAAMBlQAAAAAAAoGVAAAAAAACgZUAAAAAAAIBlQAAAAAAAgGVAAAAAAABgZUAAAAAAAGBlQAAAAAAAQGVAAAAAAABAZUAAAAAAACBlQAAAAAAAIGVAAAAAAADgZEAAAAAAAOBkQAAAAAAAwGRAAAAAAADAZEAAAAAAAGBkQAAAAAAAYGRAAAAAAAAAZEAAAAAAAABkQAAAAAAA4GNAAAAAAADgY0AAAAAAAMBjQAAAAAAAwGNAAAAAAACgY0AAAAAAAKBjQAAAAAAAgGNAAAAAAACAY0AAAAAAAGBjQAAAAAAAYGNAAAAAAABAY0AAAAAAAEBjQAAAAAAAIGNAAAAAAAAgY0AAAAAAAABjQAAAAAAAAGNAAAAAAADgYkAAAAAAAOBiQAAAAAAAwGJAAAAAAADAYkAAAAAAAIBiQAAAAAAAgGJAAAAAAABgYkAAAAAAAGBiQAAAAAAAIGJAAAAAAAAgYkAAAAAAAABiQAAAAAAAAGJAAAAAAADgYUAAAAAAAOBhQAAAAAAAwGFAAAAAAADAYUAAAAAAAIBhQAAAAAAAgGFAAAAAAAAgYUAAAAAAACBhQAAAAAAAAGFAAAAAAAAAYUAAAAAAAOBgQAAAAAAA4GBAAAAAAADAYEAAAAAAAMBgQAAAAAAAoGBAAAAAAACgYEAAAAAAAIBgQAAAAAAAgGBAAAAAAABgYEAAAAAAAGBgQAAAAAAAQGBAAAAAAABAYEAAAAAAACBgQAAAAAAAIGBAAAAAAAAAYEAAAAAAAABgQAAAAAAAgF9AAAAAAACAX0AAAAAAAEBfQAAAAAAAQF9AAAAAAAAAX0AAAAAAAABfQAAAAAAAgF5AAAAAAACAXkAAAAAAAEBeQAAAAAAAQF5AAAAAAAAAXkAAAAAAAABeQAAAAAAAgF1AAAAAAACAXUAAAAAAAABdQAAAAAAAAF1AAAAAAABAXEAAAAAAAEBcQAAAAAAAwFtAAAAAAADAW0AAAAAAAIBbQAAAAAAAgFtAAAAAAAAAW0AAAAAAAABbQAAAAAAAQFpAAAAAAABAWkAAAAAAAABaQAAAAAAAAFpAAAAAAADAWUAAAAAAAMBZQAAAAAAAgFlAAAAAAACAWUAAAAAAAABZQAAAAAAAAFlAAAAAAADAWEAAAAAAAMBYQAAAAAAAgFhAAAAAAACAWEAAAAAAAEBYQAAAAAAAQFhAAAAAAAAAWEAAAAAAAABYQAAAAAAAwFdAAAAAAADAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAABAV0AAAAAAAEBXQAAAAAAAgFZAAAAAAACAVkAAAAAAAEBWQAAAAAAAQFZAAAAAAACAVUAAAAAAAIBVQAAAAAAAQFRAAAAAAABAVEAAAAAAAABUQAAAAAAAAFRAAAAAAADAU0AAAAAAAMBTQAAAAAAAgFNAAAAAAACAU0AAAAAAAABTQAAAAAAAAFNAAAAAAAAAUkAAAAAAAABSQAAAAAAAQFFAAAAAAABAUUAAAAAAAABRQAAAAAAAAFFAAAAAAADAUEAAAAAAAMBQQAAAAAAAgE9AAAAAAACAT0AAAAAAAABPQAAAAAAAAE9AAAAAAACATkAAAAAAAIBOQAAAAAAAAExAAAAAAAAATEAAAAAAAABLQAAAAAAAAEtAAAAAAACASkAAAAAAAIBKQAAAAAAAAEpAAAAAAAAASkAAAAAAAIBJQAAAAAAAgElAAAAAAAAASEAAAAAAAABIQAAAAAAAgEdAAAAAAACAR0AAAAAAAABFQAAAAAAAAEVAAAAAAAAAREAAAAAAAABEQAAAAAAAAENAAAAAAAAAQ0AAAAAAAABAQAAAAAAAAEBAAAAAAAAAP0AAAAAAAAA/QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAOUAAAAAAAAA5QAAAAAAAADdAAAAAAAAAN0AAAAAAAAAzQAAAAAAAADNAAAAAAAAAMkAAAAAAAAAyQAAAAAAAADFAAAAAAAAAMUAAAAAAAAAwQAAAAAAAADBAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALEAAAAAAAAAqQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAoQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAkQAAAAAAAACRAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABBAAAAAAAAACEAAAAAAAAAIQA==\",\"dtype\":\"float64\",\"shape\":[704]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[704]}},\"selected\":{\"id\":\"1061\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1062\",\"type\":\"UnionRenderers\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\" \"},\"renderers\":[{\"id\":\"1037\",\"type\":\"GlyphRenderer\"},{\"id\":\"1052\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1047\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"Rex1 mRNA count\",\"formatter\":{\"id\":\"1044\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1012\",\"type\":\"BasicTicker\"}},\"id\":\"1011\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{\"items\":[{\"id\":\"1047\",\"type\":\"LegendItem\"}],\"visible\":false},\"id\":\"1046\",\"type\":\"Legend\"},{\"attributes\":{\"ticker\":{\"id\":\"1012\",\"type\":\"BasicTicker\"}},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1045\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"1048\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1050\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1051\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"1053\",\"type\":\"CDSView\"}},\"id\":\"1052\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"1003\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1073\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b3\"},\"line_color\":{\"value\":\"#1f77b3\"},\"x\":{\"field\":\"Rex1\"},\"y\":{\"field\":\"__ECDF\"}},\"id\":\"1050\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1072\",\"type\":\"Selection\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n", " var render_items = [{\"docid\":\"75033b1a-9c89-41e1-aa70-b7a25590ac52\",\"roots\":{\"1002\":\"fc2baa8d-3947-4e4f-84f3-3520e5219f4a\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " 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": "1002" } }, "output_type": "display_data" } ], "source": [ "df = pd.read_csv(\"../data/singer_transcript_counts.csv\", comment=\"#\")\n", "\n", "p = bokeh_catplot.ecdf(\n", " data=df, val=\"Rex1\", x_axis_label=\"Rex1 mRNA count\", conf_int=True\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Likelihood calculators\n", "\n", "In this and the following parts of this lesson, we will need the functions we have written to perform maximum likelihood estimation for a Negative Binomial distribution and for a mixture of two Negative Binomials. These are copied directly from previous lessons and the previous section of this lesson, so you do not need to focus on this rather long code cell." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def log_like_iid_nbinom(params, n):\n", " \"\"\"Log likelihood for i.i.d. NBinom measurements, parametrized\n", " by alpha, b=1/beta.\"\"\"\n", " alpha, b = params\n", "\n", " if alpha <= 0 or b <= 0:\n", " return -np.inf\n", "\n", " return np.sum(st.nbinom.logpmf(n, alpha, 1/(1+b)))\n", "\n", "\n", "def mle_iid_nbinom(n):\n", " \"\"\"Perform maximum likelihood estimates for parameters for i.i.d.\n", " NBinom measurements, parametrized by alpha, b=1/beta\"\"\"\n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", "\n", " res = scipy.optimize.minimize(\n", " fun=lambda params, n: -log_like_iid_nbinom(params, n),\n", " x0=np.array([3, 3]),\n", " args=(n,),\n", " method='Powell'\n", " )\n", "\n", " if res.success:\n", " return res.x\n", " else:\n", " raise RuntimeError('Convergence failed with message', res.message)\n", " \n", "\n", "def initial_guess_mix(n, w_guess):\n", " \"\"\"Generate initial guess for mixture model.\"\"\"\n", " n_low = n[n < np.percentile(n, 100*w_guess)]\n", " n_high = n[n >= np.percentile(n, 100*w_guess)]\n", " \n", " alpha1, b1 = mle_iid_nbinom(n_low)\n", " alpha2, b2 = mle_iid_nbinom(n_high)\n", " \n", " return alpha1, b1, alpha2, b2\n", "\n", "\n", "def log_like_mix(alpha1, b1, alpha2, b2, w, n):\n", " \"\"\"Log-likeihood of binary Negative Binomial mixture model.\"\"\"\n", " # Fix nonidentifieability be enforcing values of w\n", " if w < 0 or w > 1:\n", " return -np.inf\n", " \n", " # Physical bounds on parameters\n", " if alpha1 < 0 or alpha2 < 0 or b1 < 0 or b2 < 0:\n", " return -np.inf\n", "\n", " logx1 = st.nbinom.logpmf(n, alpha1, 1/(1+b1))\n", " logx2 = st.nbinom.logpmf(n, alpha2, 1/(1+b2))\n", "\n", " # Multipliers for log-sum-exp\n", " lse_coeffs = np.tile([w, 1-w], [len(n), 1]).transpose()\n", "\n", " # log-likelihood for each measurement\n", " log_likes = scipy.special.logsumexp(np.vstack([logx1, logx2]), axis=0, b=lse_coeffs)\n", " \n", " return np.sum(log_likes)\n", "\n", "\n", "def mle_mix(n, w_guess):\n", " \"\"\"Obtain MLE estimate for parameters for binary mixture \n", " of Negative Binomials.\"\"\"\n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", "\n", " res = scipy.optimize.minimize(\n", " fun=lambda params, n: -log_like_mix(*params, n),\n", " x0=[*initial_guess_mix(n, w_guess), w_guess],\n", " args=(n,),\n", " method='Powell',\n", " tol=1e-6,\n", " )\n", "\n", " if res.success:\n", " return res.x\n", " else:\n", " raise RuntimeError('Convergence failed with message', res.message) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now carry out the MLE for both models." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Load in data\n", "df = pd.read_csv(\"../data/singer_transcript_counts.csv\", comment=\"#\")\n", "n = df['Rex1'].values\n", "\n", "# Single Negative Binomial MLE\n", "alpha, b = mle_iid_nbinom(n)\n", "\n", "# Mixture model MLE\n", "alpha1, b1, alpha2, b2, w = mle_mix(n, 0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Constructing the Q-Q plot\n", "\n", "We will first construct a Q-Q plot for the single Negative-Binomial case. The function `bebi103.viz.qqplot()` generates Q-Q plots. To construct the Q-Q plot, we make draws out of the theoretical distribution, so it needs a function to draw samples out of the generative distribution. The call signature must be `gen_fun(*args, size)`. Let's write a function to draw out of a single Negative Binomial with our $\\alpha$, $b$ parametrization." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "rg = np.random.default_rng()\n", "\n", "def draw_neg_binom(alpha, b, size=1):\n", " return rg.negative_binomial(alpha, 1 / (1 + b), size=size)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With that in place, we can call `bebi103.viz.qqplot()` to generate the plot." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"1bc0962b-4100-4e49-8e8d-9b61e1fb52a1\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1149\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1153\",\"type\":\"Grid\"},{\"id\":\"1158\",\"type\":\"Grid\"}],\"frame_height\":275,\"frame_width\":350,\"left\":[{\"id\":\"1154\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1175\",\"type\":\"GlyphRenderer\"},{\"id\":\"1180\",\"type\":\"GlyphRenderer\"},{\"id\":\"1185\",\"type\":\"GlyphRenderer\"},{\"id\":\"1190\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1204\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1165\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1141\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1145\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1143\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1147\",\"type\":\"LinearScale\"}},\"id\":\"1140\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1150\",\"type\":\"BasicTicker\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1204\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1155\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1211\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"ticker\":{\"id\":\"1150\",\"type\":\"BasicTicker\"}},\"id\":\"1153\",\"type\":\"Grid\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1155\",\"type\":\"BasicTicker\"}},\"id\":\"1158\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":0,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1174\",\"type\":\"Patch\"},{\"attributes\":{\"source\":{\"id\":\"1187\",\"type\":\"ColumnDataSource\"}},\"id\":\"1191\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"transcript counts\",\"formatter\":{\"id\":\"1206\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1155\",\"type\":\"BasicTicker\"}},\"id\":\"1154\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1210\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1212\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1213\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1182\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1183\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1184\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1186\",\"type\":\"CDSView\"}},\"id\":\"1185\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1179\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1159\",\"type\":\"PanTool\"},{\"id\":\"1160\",\"type\":\"WheelZoomTool\"},{\"id\":\"1161\",\"type\":\"BoxZoomTool\"},{\"id\":\"1162\",\"type\":\"SaveTool\"},{\"id\":\"1163\",\"type\":\"ResetTool\"},{\"id\":\"1164\",\"type\":\"HelpTool\"}]},\"id\":\"1165\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"HelpTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1209\",\"type\":\"BoxAnnotation\"}},\"id\":\"1161\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1206\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1182\",\"type\":\"ColumnDataSource\"}},\"id\":\"1186\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1209\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1216\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[0,420],\"y\":[0,420]},\"selected\":{\"id\":\"1216\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1217\",\"type\":\"UnionRenderers\"}},\"id\":\"1187\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis_label\":\"transcript counts\",\"formatter\":{\"id\":\"1208\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1150\",\"type\":\"BasicTicker\"}},\"id\":\"1149\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420,420,362,353,331,331,326,321,302,297,291,290,289,288,284,281,280,276,271,266,265,265,264,262,261,260,258,255,254,252,250,247,245,245,244,242,241,239,239,238,238,235,233,227,227,226,221,219,218,218,217,217,215,214,210,209,206,205,205,204,204,204,203,202,201,201,198,195,195,194,194,193,192,192,191,191,191,190,186,186,186,182,180,179,178,177,176,174,174,173,172,172,172,171,170,170,169,167,166,166,166,166,166,163,163,163,160,160,160,159,158,157,157,156,155,155,155,154,154,153,153,152,151,151,151,150,148,147,145,145,144,144,144,143,142,142,142,140,140,140,137,137,136,135,134,133,132,131,131,131,130,129,129,128,126,126,125,125,124,124,124,122,122,122,121,120,120,118,118,118,116,116,116,116,113,113,111,111,110,108,108,105,104,103,102,102,100,100,99,98,98,98,98,98,97,97,96,96,95,94,94,93,90,90,89,89,86,81,81,80,79,78,76,76,72,69,68,67,63,62,61,61,56,54,54,53,52,51,48,47,47,42,40,40,38,32,32,31,30,29,29,25,23,23,19,19,18,17,17,16,15,15,14,13,12,11,11,11,11,11,11,11,10,9,9,8,8,8,8,8,8,7,6,6,6,6,6,5,4,3],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[558]}},\"selected\":{\"id\":\"1210\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1211\",\"type\":\"UnionRenderers\"}},\"id\":\"1172\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1189\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1183\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[279]}},\"selected\":{\"id\":\"1214\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1215\",\"type\":\"UnionRenderers\"}},\"id\":\"1182\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1208\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1184\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null},\"id\":\"1141\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"1177\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1178\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1179\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1181\",\"type\":\"CDSView\"}},\"id\":\"1180\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.5,\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1188\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[279]}},\"selected\":{\"id\":\"1212\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1213\",\"type\":\"UnionRenderers\"}},\"id\":\"1177\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1217\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1178\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1214\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1187\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1188\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1189\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1191\",\"type\":\"CDSView\"}},\"id\":\"1190\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1172\",\"type\":\"ColumnDataSource\"}},\"id\":\"1176\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":0.5,\"fill_color\":\"#1f77b4\",\"line_alpha\":0,\"line_color\":\"#1f77b4\",\"line_width\":0,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1173\",\"type\":\"Patch\"},{\"attributes\":{\"source\":{\"id\":\"1177\",\"type\":\"ColumnDataSource\"}},\"id\":\"1181\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1145\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"1172\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1173\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1174\",\"type\":\"Patch\"},\"selection_glyph\":null,\"view\":{\"id\":\"1176\",\"type\":\"CDSView\"}},\"id\":\"1175\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1215\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null},\"id\":\"1143\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1140\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n", " var render_items = [{\"docid\":\"1bc0962b-4100-4e49-8e8d-9b61e1fb52a1\",\"roots\":{\"1140\":\"9ef3486f-1a76-4cbf-9bf7-823b938feb07\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " 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": "1140" } }, "output_type": "display_data" } ], "source": [ "p = bebi103.viz.qqplot(\n", " data=n,\n", " gen_fun=draw_neg_binom,\n", " args=(alpha, b),\n", " x_axis_label=\"transcript counts\",\n", " y_axis_label=\"transcript counts\",\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clearly, the generative model cannot produce the observed transcript bounds, since the Q-Q plot shows strong separation of the generative quantiles from the observed quantiles." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Q-Q plot for the mixture model\n", "\n", "We can also make a Q-Q plot for the mixture model. We need to write a function to generate data out of the mixture model. As we did in a previous lesson, we first randomly choose a cell type with weight $w$, and then draw out of a Negative Binomial distribution with parameters corresponding to that cell type." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def draw_mix(alpha1, b1, alpha2, b2, w, size):\n", " \"\"\"Draw samples from Negative Binomial binary mixture model.\"\"\"\n", " n = np.empty(size)\n", " for i in range(size):\n", " low_cell_type = rg.uniform() < w\n", "\n", " if low_cell_type:\n", " n[i] = rg.negative_binomial(alpha1, 1 / (1 + b1))\n", " else:\n", " n[i] = rg.negative_binomial(alpha2, 1 / (1 + b2))\n", "\n", " return n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can make the Q-Q plot!" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"0fec4cdb-7c3d-4ef5-989f-1bd846732c96\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1317\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1321\",\"type\":\"Grid\"},{\"id\":\"1326\",\"type\":\"Grid\"}],\"frame_height\":275,\"frame_width\":350,\"left\":[{\"id\":\"1322\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1343\",\"type\":\"GlyphRenderer\"},{\"id\":\"1348\",\"type\":\"GlyphRenderer\"},{\"id\":\"1353\",\"type\":\"GlyphRenderer\"},{\"id\":\"1358\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1387\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1333\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1309\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1313\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1311\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1315\",\"type\":\"LinearScale\"}},\"id\":\"1308\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"transcript counts\",\"formatter\":{\"id\":\"1389\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1323\",\"type\":\"BasicTicker\"}},\"id\":\"1322\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"1350\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1351\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1352\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1354\",\"type\":\"CDSView\"}},\"id\":\"1353\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1389\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"1340\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1341\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1342\",\"type\":\"Patch\"},\"selection_glyph\":null,\"view\":{\"id\":\"1344\",\"type\":\"CDSView\"}},\"id\":\"1343\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1395\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1391\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1318\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[279]}},\"selected\":{\"id\":\"1395\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1396\",\"type\":\"UnionRenderers\"}},\"id\":\"1345\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"transcript counts\",\"formatter\":{\"id\":\"1391\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1318\",\"type\":\"BasicTicker\"}},\"id\":\"1317\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"1345\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1346\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1347\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1349\",\"type\":\"CDSView\"}},\"id\":\"1348\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1330\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"1355\",\"type\":\"ColumnDataSource\"}},\"id\":\"1359\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1347\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1396\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1399\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1340\",\"type\":\"ColumnDataSource\"}},\"id\":\"1344\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null},\"id\":\"1309\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1400\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1387\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1352\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.5,\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1356\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1332\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1393\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1345\",\"type\":\"ColumnDataSource\"}},\"id\":\"1349\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":4,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1357\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[279]}},\"selected\":{\"id\":\"1397\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1398\",\"type\":\"UnionRenderers\"}},\"id\":\"1350\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1392\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null},\"id\":\"1311\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"1355\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1356\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1357\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1359\",\"type\":\"CDSView\"}},\"id\":\"1358\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1350\",\"type\":\"ColumnDataSource\"}},\"id\":\"1354\",\"type\":\"CDSView\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1323\",\"type\":\"BasicTicker\"}},\"id\":\"1326\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[0,420],\"y\":[0,420]},\"selected\":{\"id\":\"1399\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1400\",\"type\":\"UnionRenderers\"}},\"id\":\"1355\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1397\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[3,4,5,6,6,6,6,6,7,8,8,8,8,8,8,9,9,10,11,11,11,11,11,11,11,12,13,14,15,15,16,17,17,18,19,19,23,23,25,29,29,30,31,32,32,38,40,40,42,47,47,48,51,52,53,54,54,56,61,61,62,63,67,68,69,72,76,76,78,79,80,81,81,86,89,89,90,90,93,94,94,95,96,96,97,97,98,98,98,98,98,99,100,100,102,102,103,104,105,108,108,110,111,111,113,113,116,116,116,116,118,118,118,120,120,121,122,122,122,124,124,124,125,125,126,126,128,129,129,130,131,131,131,132,133,134,135,136,137,137,140,140,140,142,142,142,143,144,144,144,145,145,147,148,150,151,151,151,152,153,153,154,154,155,155,155,156,157,157,158,159,160,160,160,163,163,163,166,166,166,166,166,167,169,170,170,171,172,172,172,173,174,174,176,177,178,179,180,182,186,186,186,190,191,191,191,192,192,193,194,194,195,195,198,201,201,202,203,204,204,204,205,205,206,209,210,214,215,217,217,218,218,219,221,226,227,227,233,235,238,238,239,239,241,242,244,245,245,247,250,252,254,255,258,260,261,262,264,265,265,266,271,276,280,281,284,288,289,290,291,297,302,321,326,331,331,353,362,420,420,362,353,331,331,326,321,302,297,291,290,289,288,284,281,280,276,271,266,265,265,264,262,261,260,258,255,254,252,250,247,245,245,244,242,241,239,239,238,238,235,233,227,227,226,221,219,218,218,217,217,215,214,210,209,206,205,205,204,204,204,203,202,201,201,198,195,195,194,194,193,192,192,191,191,191,190,186,186,186,182,180,179,178,177,176,174,174,173,172,172,172,171,170,170,169,167,166,166,166,166,166,163,163,163,160,160,160,159,158,157,157,156,155,155,155,154,154,153,153,152,151,151,151,150,148,147,145,145,144,144,144,143,142,142,142,140,140,140,137,137,136,135,134,133,132,131,131,131,130,129,129,128,126,126,125,125,124,124,124,122,122,122,121,120,120,118,118,118,116,116,116,116,113,113,111,111,110,108,108,105,104,103,102,102,100,100,99,98,98,98,98,98,97,97,96,96,95,94,94,93,90,90,89,89,86,81,81,80,79,78,76,76,72,69,68,67,63,62,61,61,56,54,54,53,52,51,48,47,47,42,40,40,38,32,32,31,30,29,29,25,23,23,19,19,18,17,17,16,15,15,14,13,12,11,11,11,11,11,11,11,10,9,9,8,8,8,8,8,8,7,6,6,6,6,6,5,4,3],\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[558]}},\"selected\":{\"id\":\"1393\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1394\",\"type\":\"UnionRenderers\"}},\"id\":\"1340\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1328\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1392\",\"type\":\"BoxAnnotation\"}},\"id\":\"1329\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1398\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1313\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1331\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":0.5,\"fill_color\":\"#1f77b4\",\"line_alpha\":0,\"line_color\":\"#1f77b4\",\"line_width\":0,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1341\",\"type\":\"Patch\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1346\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1315\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":0,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1342\",\"type\":\"Patch\"},{\"attributes\":{\"ticker\":{\"id\":\"1318\",\"type\":\"BasicTicker\"}},\"id\":\"1321\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1327\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1394\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1327\",\"type\":\"PanTool\"},{\"id\":\"1328\",\"type\":\"WheelZoomTool\"},{\"id\":\"1329\",\"type\":\"BoxZoomTool\"},{\"id\":\"1330\",\"type\":\"SaveTool\"},{\"id\":\"1331\",\"type\":\"ResetTool\"},{\"id\":\"1332\",\"type\":\"HelpTool\"}]},\"id\":\"1333\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1351\",\"type\":\"Line\"}],\"root_ids\":[\"1308\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n", " var render_items = [{\"docid\":\"0fec4cdb-7c3d-4ef5-989f-1bd846732c96\",\"roots\":{\"1308\":\"b3f7d0ad-1c4d-4018-a640-82003a0f292d\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " 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": "1308" } }, "output_type": "display_data" } ], "source": [ "p = bebi103.viz.qqplot(\n", " data=n,\n", " gen_fun=draw_mix,\n", " args=(alpha1, b1, alpha2, b2, w),\n", " x_axis_label=\"transcript counts\",\n", " y_axis_label=\"transcript counts\",\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Q-Q plot shows a much strong agreement between the theoretical distribution and the observed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPython 3.7.5\n", "IPython 7.9.0\n", "\n", "numpy 1.17.4\n", "pandas 0.24.2\n", "scipy 1.3.1\n", "bokeh 1.4.0\n", "bokeh_catplot 0.1.6\n", "bebi103 0.0.45\n", "jupyterlab 1.2.3\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p numpy,pandas,scipy,bokeh,bokeh_catplot,bebi103,jupyterlab" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 4 }