Created
January 25, 2024 20:23
-
-
Save eric-czech/3324f845b45788ed819d65ee45e11855 to your computer and use it in GitHub Desktop.
UK Biobank sgkit GWAS POC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from dask.distributed import Client\n", | |
| "import gcsfs\n", | |
| "import sgkit\n", | |
| "import xarray as xr\n", | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import dask.array as da\n", | |
| "import dask\n", | |
| "from sgkit.typing import ArrayLike\n", | |
| "from xarray import Dataset, DataArray\n", | |
| "from sgkit_bgen.bgen_reader import unpack_variables\n", | |
| "xr.set_options(display_style='text')\n", | |
| "fs = gcsfs.GCSFileSystem()\n", | |
| "\n", | |
| "# client = Client()\n", | |
| "# client" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "\n", | |
| " <div class=\"bk-root\">\n", | |
| " <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n", | |
| " <span id=\"1001\">Loading BokehJS ...</span>\n", | |
| " </div>" | |
| ] | |
| }, | |
| "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", | |
| " 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", | |
| " 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", | |
| " \"<div style='background-color: #fdd'>\\n\"+\n", | |
| " \"<p>\\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", | |
| " \"</p>\\n\"+\n", | |
| " \"<ul>\\n\"+\n", | |
| " \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n", | |
| " \"<li>use INLINE resources instead, as so:</li>\\n\"+\n", | |
| " \"</ul>\\n\"+\n", | |
| " \"<code>\\n\"+\n", | |
| " \"from bokeh.resources import INLINE\\n\"+\n", | |
| " \"output_notebook(resources=INLINE)\\n\"+\n", | |
| " \"</code>\\n\"+\n", | |
| " \"</div>\"}};\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", | |
| " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\": \"kLr4fYcqcSpbuI95brIH3vnnYCquzzSxHPU6XGQCIkQRGJwhg0StNbj1eegrHs12\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\": \"xIGPmVtaOm+z0BqfSOMn4lOR6ciex448GIKG4eE61LsAvmGj48XcMQZtKcE/UXZe\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\": \"Dc9u1wF/0zApGIWoBbH77iWEHtdmkuYWG839Uzmv8y8yBLXebjO9ZnERsde5Ln/P\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\": \"cT9JaBz7GiRXdENrJLZNSC6eMNF3nh3fa5fTF51Svp+ukxPdwcU5kGXGPBgDCa2j\"};\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", | |
| " if (url in hashes) {\n", | |
| " element.crossOrigin = \"anonymous\";\n", | |
| " element.integrity = \"sha384-\" + hashes[url];\n", | |
| " }\n", | |
| " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", | |
| " document.head.appendChild(element);\n", | |
| " }\n", | |
| " };\n", | |
| "\n", | |
| " function inject_raw_css(css) {\n", | |
| " const element = document.createElement(\"style\");\n", | |
| " element.appendChild(document.createTextNode(css));\n", | |
| " document.body.appendChild(element);\n", | |
| " }\n", | |
| "\n", | |
| " \n", | |
| " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.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 \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\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 \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\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 const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\": \"kLr4fYcqcSpbuI95brIH3vnnYCquzzSxHPU6XGQCIkQRGJwhg0StNbj1eegrHs12\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\": \"xIGPmVtaOm+z0BqfSOMn4lOR6ciex448GIKG4eE61LsAvmGj48XcMQZtKcE/UXZe\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\": \"Dc9u1wF/0zApGIWoBbH77iWEHtdmkuYWG839Uzmv8y8yBLXebjO9ZnERsde5Ln/P\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.min.js\": \"cT9JaBz7GiRXdENrJLZNSC6eMNF3nh3fa5fTF51Svp+ukxPdwcU5kGXGPBgDCa2j\"};\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 if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.1.1.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": [ | |
| "from dask.diagnostics import ProgressBar, Profiler, ResourceProfiler, visualize\n", | |
| "from bokeh.io import output_notebook\n", | |
| "output_notebook()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "#genotypes_path = 'rs-ukb/prep-data/gt-imputation/ukb_chrXY.zarr'\n", | |
| "genotypes_path = 'rs-ukb/prep-data/gt-imputation/ukb_chr21.zarr'" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def load_genotype_ds() -> Dataset:\n", | |
| " store = gcsfs.mapping.GCSMap(genotypes_path, gcs=fs, check=True, create=False)\n", | |
| " ds = xr.open_zarr(store, consolidated=True)\n", | |
| " ds = unpack_variables(ds, dtype='float16') \n", | |
| "\n", | |
| " # Workaround for https://github.com/pydata/xarray/issues/4386\n", | |
| " ds['call_genotype_probability_mask'] = ds['call_genotype_probability_mask'].astype(bool)\n", | |
| " return ds\n", | |
| "\n", | |
| "\n", | |
| "def load_sample_qc() -> Dataset:\n", | |
| " store = gcsfs.mapping.GCSMap('rs-ukb/prep-data/main/ukb_sample_qc.zarr', gcs=fs, check=True, create=False)\n", | |
| " ds = xr.open_zarr(store, consolidated=True)\n", | |
| " ds = ds.rename_vars(dict(eid='id'))\n", | |
| " ds = ds.rename_vars({v: f'sample_{v}' for v in ds})\n", | |
| " if 'sample_sex' in ds:\n", | |
| " # Rename to avoid conflict with bgen field\n", | |
| " ds = ds.rename_vars({'sample_sex': 'sample_qc_sex'})\n", | |
| " return ds\n", | |
| "\n", | |
| "def apply_sample_qc(ds: Dataset) -> Dataset:\n", | |
| " # See: https://github.com/Nealelab/UK_Biobank_GWAS#imputed-v3-sample-qc\n", | |
| " filters = {\n", | |
| " 'no_aneuploidy': ds.sample_sex_chromosome_aneuploidy.isnull(),\n", | |
| " 'in_pca': ds.sample_used_in_genetic_principal_components == 1,\n", | |
| " # 1001 = White/British, 1002 = Mixed/Irish\n", | |
| " 'in_ethnic_groups': ds.sample_ethnic_background.isin([1001, 1002])\n", | |
| " }\n", | |
| " print('Sample QC filter summary:')\n", | |
| " for k, v in filters.items():\n", | |
| " print(f'\\t{k}: {v.to_series().value_counts().to_dict()}')\n", | |
| " mask = np.stack([v.values for v in filters.values()], axis=1)\n", | |
| " mask = np.all(mask, axis=1)\n", | |
| " assert len(mask) == ds.dims['samples']\n", | |
| " print(f'\\toverall: {pd.Series(mask).value_counts().to_dict()}')\n", | |
| " return ds.sel(samples=mask)\n", | |
| "\n", | |
| "\n", | |
| "SAMPLE_QC_COLS = [\n", | |
| " 'sample_id',\n", | |
| " 'sample_qc_sex',\n", | |
| " 'sample_genetic_sex',\n", | |
| " 'sample_age_at_recruitment',\n", | |
| " 'sample_principal_component',\n", | |
| " 'sample_ethnic_background',\n", | |
| " 'sample_genotype_measurement_batch',\n", | |
| " 'sample_genotype_measurement_plate',\n", | |
| " 'sample_genotype_measurement_well'\n", | |
| "]\n", | |
| "\n", | |
| "def sample_qc(ds: Dataset) -> Dataset:\n", | |
| " ds_sqc = load_sample_qc()\n", | |
| " ds_sqc = apply_sample_qc(ds_sqc)\n", | |
| " ds_sqc = ds_sqc[SAMPLE_QC_COLS]\n", | |
| " ds = (\n", | |
| " ds.assign_coords(samples=lambda ds: ds.sample_id).merge(\n", | |
| " ds_sqc.assign_coords(samples=lambda ds: ds.sample_id).compute(),\n", | |
| " join='inner',\n", | |
| " compat='override'\n", | |
| " )\n", | |
| " )\n", | |
| " return ds.reset_index('samples').reset_coords(drop=True)\n", | |
| "\n", | |
| "\n", | |
| "def variant_genotype_counts(ds: Dataset) -> DataArray:\n", | |
| " gti = ds['call_genotype_probability'].argmax(dim='genotypes')\n", | |
| " gti = gti.astype('uint8').expand_dims('genotypes', axis=-1)\n", | |
| " gti = gti == da.arange(ds.dims['genotypes'], dtype='uint8')\n", | |
| " return gti.sum(dim='samples', dtype='uint32')\n", | |
| "\n", | |
| "\n", | |
| "def variant_qc(ds):\n", | |
| " # Order: het, hom_ref, hom_alt\n", | |
| " ds['variant_genotype_counts'] = variant_genotype_counts(ds)[:, [1, 0, 2]]\n", | |
| " # Hack to add ploidy dim \n", | |
| " # TODO: allow ploidy to be passed in\n", | |
| " ds['dummy'] = xr.DataArray(da.empty((ds.dims['variants'], ds.dims['samples'], 2)), dims=('variants', 'samples', 'ploidy'))\n", | |
| " ds['variant_hwe_p_value'] = sgkit.hardy_weinberg_test(ds, genotype_counts='variant_genotype_counts')['variant_hwe_p_value']\n", | |
| " ds = ds.drop_vars('dummy')\n", | |
| " \n", | |
| " # Add stdev to filter on as well\n", | |
| " ds['variant_dosage_std'] = ds['call_dosage'].astype('float32').std(dim='samples')\n", | |
| " return ds\n", | |
| "\n", | |
| "\n", | |
| "TRAIT_ID_COLS = [\n", | |
| " '50', # Height (https://biobank.ctsu.ox.ac.uk/crystal/field.cgi?id=50)\n", | |
| " '23098' # Weight (https://biobank.ctsu.ox.ac.uk/crystal/field.cgi?id=23098)\n", | |
| "]\n", | |
| "\n", | |
| "def load_traits():\n", | |
| " df = pd.read_csv('gs://rs-ukb/prep-data/main/phenotypes.v01.subset01.1.tsv', sep='\\t')\n", | |
| " ds = (\n", | |
| " df[['userId']].rename(columns={'userId': 'id'})\n", | |
| " .rename_axis('samples', axis='rows')\n", | |
| " .to_xarray().drop('samples')\n", | |
| " )\n", | |
| " ds['trait'] = xr.DataArray(\n", | |
| " df[TRAIT_ID_COLS].values,\n", | |
| " dims=('samples', 'traits')\n", | |
| " )\n", | |
| " # TODO: Decide how to partition phenotypes based on presence,\n", | |
| " # or process them individually\n", | |
| " ds['trait_imputed'] = ds.trait.pipe(lambda x: x.where(x.notnull(), x.mean(dim='samples')))\n", | |
| " ds['trait_names'] = xr.DataArray(\n", | |
| " np.array(['height', 'weight'], dtype='S'),\n", | |
| " dims=['traits']\n", | |
| " )\n", | |
| " ds = ds.rename_vars({v: f'sample_{v}' for v in ds})\n", | |
| " return ds\n", | |
| "\n", | |
| "def add_traits(ds: Dataset) -> Dataset:\n", | |
| " ds_tr = load_traits()\n", | |
| " ds = (\n", | |
| " ds.assign_coords(samples=lambda ds: ds.sample_id).merge(\n", | |
| " ds_tr.assign_coords(samples=lambda ds: ds.sample_id),\n", | |
| " join='left',\n", | |
| " compat='override'\n", | |
| " )\n", | |
| " )\n", | |
| " return ds.reset_index('samples').reset_coords(drop=True)\n", | |
| "\n", | |
| "def add_covariates(ds: Dataset, npc: int = 10) -> Dataset:\n", | |
| " covariates = np.column_stack((\n", | |
| " ds['sample_genetic_sex'],\n", | |
| " ds['sample_age_at_recruitment'],\n", | |
| " ds['sample_principal_component'][:, :npc]\n", | |
| " ))\n", | |
| " assert np.all(np.isfinite(covariates))\n", | |
| " ds['sample_covariate'] = xr.DataArray(covariates, dims=('samples', 'covariates'))\n", | |
| " ds['sample_covariate'] = ds.sample_covariate.pipe(\n", | |
| " lambda x: (x - x.mean(dim='samples')) / x.std(dim='samples')\n", | |
| " )\n", | |
| " assert np.all(np.isfinite(ds.sample_covariate))\n", | |
| " return ds\n", | |
| "\n", | |
| "def load_gwas_ds() -> Dataset:\n", | |
| " ds = load_genotype_ds()\n", | |
| " ds = sample_qc(ds)\n", | |
| " ds = variant_qc(ds)\n", | |
| " ds = add_covariates(ds)\n", | |
| " ds = add_traits(ds)\n", | |
| " ds = ds[[v for v in sorted(ds)]]\n", | |
| " return ds\n", | |
| " " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Sample QC filter summary:\n", | |
| "\tno_aneuploidy: {True: 501854, False: 651}\n", | |
| "\tin_pca: {True: 407127, False: 95378}\n", | |
| "\tin_ethnic_groups: {True: 455793, False: 46712}\n", | |
| "\toverall: {True: 365941, False: 136564}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<pre><xarray.Dataset>\n", | |
| "Dimensions: (alleles: 2, covariates: 12, genotypes: 3, principal_components: 40, samples: 365941, traits: 2, variants: 1261158)\n", | |
| "Dimensions without coordinates: alleles, covariates, genotypes, principal_components, samples, traits, variants\n", | |
| "Data variables:\n", | |
| " call_dosage (variants, samples) float16 dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " call_dosage_mask (variants, samples) int8 dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " call_genotype_probability (variants, samples, genotypes) float16 dask.array<chunksize=(10432, 8409, 1), meta=np.ndarray>\n", | |
| " call_genotype_probability_mask (variants, samples) bool dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " sample_age_at_recruitment (samples) float64 41.0 46.0 ... 51.0 67.0\n", | |
| " sample_covariate (samples, covariates) float64 1.077 .....\n", | |
| " sample_ethnic_background (samples) float64 1.001e+03 ... 1.001e+03\n", | |
| " sample_genetic_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_genotype_measurement_batch (samples) float64 1.0 1.0 ... -7.0 -1.0\n", | |
| " sample_genotype_measurement_plate (samples) |S13 b'SMP4_0012258' ... b'S...\n", | |
| " sample_genotype_measurement_well (samples) |S3 b'A01' b'A02' ... b'B05'\n", | |
| " sample_id (samples) int32 dask.array<chunksize=(45812,), meta=np.ndarray>\n", | |
| " sample_principal_component (samples, principal_components) float64 ...\n", | |
| " sample_qc_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_sex (samples) uint8 dask.array<chunksize=(182025,), meta=np.ndarray>\n", | |
| " sample_trait (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_imputed (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_names (traits) |S6 b'height' b'weight'\n", | |
| " variant_allele (variants, alleles) |S101 dask.array<chunksize=(19706, 1), meta=np.ndarray>\n", | |
| " variant_contig (variants) int16 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_contig_name (variants) |S2 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_dosage_std (variants) float32 dask.array<chunksize=(10432,), meta=np.ndarray>\n", | |
| " variant_genotype_counts (variants, genotypes) uint32 dask.array<chunksize=(10432, 3), meta=np.ndarray>\n", | |
| " variant_hwe_p_value (variants) float64 dask.array<chunksize=(10432,), meta=np.ndarray>\n", | |
| " variant_id (variants) |S115 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| " variant_info (variants) float32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_maf (variants) float32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_minor_allele (variants) |S101 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| " variant_position (variants) int32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_rsid (variants) |S115 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " contig_index: 20\n", | |
| " contig_name: 21\n", | |
| " contigs: ['21']</pre>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.Dataset>\n", | |
| "Dimensions: (alleles: 2, covariates: 12, genotypes: 3, principal_components: 40, samples: 365941, traits: 2, variants: 1261158)\n", | |
| "Dimensions without coordinates: alleles, covariates, genotypes, principal_components, samples, traits, variants\n", | |
| "Data variables:\n", | |
| " call_dosage (variants, samples) float16 dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " call_dosage_mask (variants, samples) int8 dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " call_genotype_probability (variants, samples, genotypes) float16 dask.array<chunksize=(10432, 8409, 1), meta=np.ndarray>\n", | |
| " call_genotype_probability_mask (variants, samples) bool dask.array<chunksize=(10432, 8409), meta=np.ndarray>\n", | |
| " sample_age_at_recruitment (samples) float64 41.0 46.0 ... 51.0 67.0\n", | |
| " sample_covariate (samples, covariates) float64 1.077 .....\n", | |
| " sample_ethnic_background (samples) float64 1.001e+03 ... 1.001e+03\n", | |
| " sample_genetic_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_genotype_measurement_batch (samples) float64 1.0 1.0 ... -7.0 -1.0\n", | |
| " sample_genotype_measurement_plate (samples) |S13 b'SMP4_0012258' ... b'S...\n", | |
| " sample_genotype_measurement_well (samples) |S3 b'A01' b'A02' ... b'B05'\n", | |
| " sample_id (samples) int32 dask.array<chunksize=(45812,), meta=np.ndarray>\n", | |
| " sample_principal_component (samples, principal_components) float64 ...\n", | |
| " sample_qc_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_sex (samples) uint8 dask.array<chunksize=(182025,), meta=np.ndarray>\n", | |
| " sample_trait (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_imputed (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_names (traits) |S6 b'height' b'weight'\n", | |
| " variant_allele (variants, alleles) |S101 dask.array<chunksize=(19706, 1), meta=np.ndarray>\n", | |
| " variant_contig (variants) int16 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_contig_name (variants) |S2 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_dosage_std (variants) float32 dask.array<chunksize=(10432,), meta=np.ndarray>\n", | |
| " variant_genotype_counts (variants, genotypes) uint32 dask.array<chunksize=(10432, 3), meta=np.ndarray>\n", | |
| " variant_hwe_p_value (variants) float64 dask.array<chunksize=(10432,), meta=np.ndarray>\n", | |
| " variant_id (variants) |S115 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| " variant_info (variants) float32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_maf (variants) float32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_minor_allele (variants) |S101 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| " variant_position (variants) int32 dask.array<chunksize=(157645,), meta=np.ndarray>\n", | |
| " variant_rsid (variants) |S115 dask.array<chunksize=(9853,), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " contig_index: 20\n", | |
| " contig_name: 21\n", | |
| " contigs: ['21']" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds = load_gwas_ds()\n", | |
| "ds" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table>\n", | |
| "<tr>\n", | |
| "<td>\n", | |
| "<table>\n", | |
| " <thead>\n", | |
| " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr><th> Bytes </th><td> 2.77 TB </td> <td> 571.72 MB </td></tr>\n", | |
| " <tr><th> Shape </th><td> (1261158, 365941, 3) </td> <td> (10432, 9134, 3) </td></tr>\n", | |
| " <tr><th> Count </th><td> 74537 Tasks </td><td> 5324 Chunks </td></tr>\n", | |
| " <tr><th> Type </th><td> float16 </td><td> numpy.ndarray </td></tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</td>\n", | |
| "<td>\n", | |
| "<svg width=\"156\" height=\"164\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"71\" />\n", | |
| " <line x1=\"10\" y1=\"2\" x2=\"80\" y2=\"72\" />\n", | |
| " <line x1=\"10\" y1=\"3\" x2=\"80\" y2=\"73\" />\n", | |
| " <line x1=\"10\" y1=\"4\" x2=\"80\" y2=\"74\" />\n", | |
| " <line x1=\"10\" y1=\"5\" x2=\"80\" y2=\"75\" />\n", | |
| " <line x1=\"10\" y1=\"6\" x2=\"80\" y2=\"76\" />\n", | |
| " <line x1=\"10\" y1=\"7\" x2=\"80\" y2=\"77\" />\n", | |
| " <line x1=\"10\" y1=\"7\" x2=\"80\" y2=\"78\" />\n", | |
| " <line x1=\"10\" y1=\"8\" x2=\"80\" y2=\"79\" />\n", | |
| " <line x1=\"10\" y1=\"10\" x2=\"80\" y2=\"80\" />\n", | |
| " <line x1=\"10\" y1=\"11\" x2=\"80\" y2=\"81\" />\n", | |
| " <line x1=\"10\" y1=\"12\" x2=\"80\" y2=\"82\" />\n", | |
| " <line x1=\"10\" y1=\"13\" x2=\"80\" y2=\"83\" />\n", | |
| " <line x1=\"10\" y1=\"14\" x2=\"80\" y2=\"84\" />\n", | |
| " <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n", | |
| " <line x1=\"10\" y1=\"16\" x2=\"80\" y2=\"86\" />\n", | |
| " <line x1=\"10\" y1=\"17\" x2=\"80\" y2=\"87\" />\n", | |
| " <line x1=\"10\" y1=\"18\" x2=\"80\" y2=\"88\" />\n", | |
| " <line x1=\"10\" y1=\"19\" x2=\"80\" y2=\"89\" />\n", | |
| " <line x1=\"10\" y1=\"20\" x2=\"80\" y2=\"90\" />\n", | |
| " <line x1=\"10\" y1=\"21\" x2=\"80\" y2=\"91\" />\n", | |
| " <line x1=\"10\" y1=\"22\" x2=\"80\" y2=\"92\" />\n", | |
| " <line x1=\"10\" y1=\"23\" x2=\"80\" y2=\"93\" />\n", | |
| " <line x1=\"10\" y1=\"24\" x2=\"80\" y2=\"94\" />\n", | |
| " <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"95\" />\n", | |
| " <line x1=\"10\" y1=\"26\" x2=\"80\" y2=\"96\" />\n", | |
| " <line x1=\"10\" y1=\"27\" x2=\"80\" y2=\"97\" />\n", | |
| " <line x1=\"10\" y1=\"28\" x2=\"80\" y2=\"98\" />\n", | |
| " <line x1=\"10\" y1=\"29\" x2=\"80\" y2=\"99\" />\n", | |
| " <line x1=\"10\" y1=\"30\" x2=\"80\" y2=\"100\" />\n", | |
| " <line x1=\"10\" y1=\"31\" x2=\"80\" y2=\"101\" />\n", | |
| " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"102\" />\n", | |
| " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" />\n", | |
| " <line x1=\"10\" y1=\"33\" x2=\"80\" y2=\"104\" />\n", | |
| " <line x1=\"10\" y1=\"35\" x2=\"80\" y2=\"105\" />\n", | |
| " <line x1=\"10\" y1=\"36\" x2=\"80\" y2=\"106\" />\n", | |
| " <line x1=\"10\" y1=\"37\" x2=\"80\" y2=\"107\" />\n", | |
| " <line x1=\"10\" y1=\"38\" x2=\"80\" y2=\"108\" />\n", | |
| " <line x1=\"10\" y1=\"39\" x2=\"80\" y2=\"109\" />\n", | |
| " <line x1=\"10\" y1=\"40\" x2=\"80\" y2=\"110\" />\n", | |
| " <line x1=\"10\" y1=\"41\" x2=\"80\" y2=\"111\" />\n", | |
| " <line x1=\"10\" y1=\"42\" x2=\"80\" y2=\"112\" />\n", | |
| " <line x1=\"10\" y1=\"43\" x2=\"80\" y2=\"113\" />\n", | |
| " <line x1=\"10\" y1=\"43\" x2=\"80\" y2=\"114\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"43\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"44\" />\n", | |
| " <line x1=\"11\" y1=\"1\" x2=\"11\" y2=\"44\" />\n", | |
| " <line x1=\"11\" y1=\"1\" x2=\"11\" y2=\"45\" />\n", | |
| " <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"45\" />\n", | |
| " <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"46\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"46\" />\n", | |
| " <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"47\" />\n", | |
| " <line x1=\"14\" y1=\"4\" x2=\"14\" y2=\"48\" />\n", | |
| " <line x1=\"15\" y1=\"5\" x2=\"15\" y2=\"48\" />\n", | |
| " <line x1=\"15\" y1=\"5\" x2=\"15\" y2=\"49\" />\n", | |
| " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"49\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"50\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"17\" y2=\"51\" />\n", | |
| " <line x1=\"18\" y1=\"8\" x2=\"18\" y2=\"51\" />\n", | |
| " <line x1=\"18\" y1=\"8\" x2=\"18\" y2=\"52\" />\n", | |
| " <line x1=\"19\" y1=\"9\" x2=\"19\" y2=\"52\" />\n", | |
| " <line x1=\"19\" y1=\"9\" x2=\"19\" y2=\"53\" />\n", | |
| " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"53\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"54\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"21\" y2=\"55\" />\n", | |
| " <line x1=\"22\" y1=\"12\" x2=\"22\" y2=\"55\" />\n", | |
| " <line x1=\"22\" y1=\"12\" x2=\"22\" y2=\"56\" />\n", | |
| " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"56\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"57\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"24\" y2=\"58\" />\n", | |
| " <line x1=\"25\" y1=\"15\" x2=\"25\" y2=\"58\" />\n", | |
| " <line x1=\"25\" y1=\"15\" x2=\"25\" y2=\"59\" />\n", | |
| " <line x1=\"26\" y1=\"16\" x2=\"26\" y2=\"59\" />\n", | |
| " <line x1=\"26\" y1=\"16\" x2=\"26\" y2=\"60\" />\n", | |
| " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"60\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"61\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"62\" />\n", | |
| " <line x1=\"29\" y1=\"19\" x2=\"29\" y2=\"62\" />\n", | |
| " <line x1=\"29\" y1=\"19\" x2=\"29\" y2=\"63\" />\n", | |
| " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"63\" />\n", | |
| " <line x1=\"31\" y1=\"21\" x2=\"31\" y2=\"64\" />\n", | |
| " <line x1=\"31\" y1=\"21\" x2=\"31\" y2=\"65\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"65\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"32\" y2=\"66\" />\n", | |
| " <line x1=\"33\" y1=\"23\" x2=\"33\" y2=\"66\" />\n", | |
| " <line x1=\"33\" y1=\"23\" x2=\"33\" y2=\"67\" />\n", | |
| " <line x1=\"34\" y1=\"24\" x2=\"34\" y2=\"67\" />\n", | |
| " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"68\" />\n", | |
| " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"69\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"69\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"70\" />\n", | |
| " <line x1=\"37\" y1=\"27\" x2=\"37\" y2=\"70\" />\n", | |
| " <line x1=\"38\" y1=\"28\" x2=\"38\" y2=\"71\" />\n", | |
| " <line x1=\"38\" y1=\"28\" x2=\"38\" y2=\"72\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"72\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"73\" />\n", | |
| " <line x1=\"40\" y1=\"30\" x2=\"40\" y2=\"73\" />\n", | |
| " <line x1=\"40\" y1=\"30\" x2=\"40\" y2=\"74\" />\n", | |
| " <line x1=\"41\" y1=\"31\" x2=\"41\" y2=\"74\" />\n", | |
| " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"75\" />\n", | |
| " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"76\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"76\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"43\" y2=\"77\" />\n", | |
| " <line x1=\"44\" y1=\"34\" x2=\"44\" y2=\"77\" />\n", | |
| " <line x1=\"45\" y1=\"35\" x2=\"45\" y2=\"78\" />\n", | |
| " <line x1=\"45\" y1=\"35\" x2=\"45\" y2=\"79\" />\n", | |
| " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"79\" />\n", | |
| " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"80\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"80\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"81\" />\n", | |
| " <line x1=\"48\" y1=\"38\" x2=\"48\" y2=\"81\" />\n", | |
| " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"82\" />\n", | |
| " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"83\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"83\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"50\" y2=\"84\" />\n", | |
| " <line x1=\"51\" y1=\"41\" x2=\"51\" y2=\"84\" />\n", | |
| " <line x1=\"52\" y1=\"42\" x2=\"52\" y2=\"85\" />\n", | |
| " <line x1=\"52\" y1=\"42\" x2=\"52\" y2=\"86\" />\n", | |
| " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"86\" />\n", | |
| " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"87\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"87\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"88\" />\n", | |
| " <line x1=\"55\" y1=\"45\" x2=\"55\" y2=\"88\" />\n", | |
| " <line x1=\"56\" y1=\"46\" x2=\"56\" y2=\"89\" />\n", | |
| " <line x1=\"56\" y1=\"46\" x2=\"56\" y2=\"90\" />\n", | |
| " <line x1=\"57\" y1=\"47\" x2=\"57\" y2=\"90\" />\n", | |
| " <line x1=\"57\" y1=\"47\" x2=\"57\" y2=\"91\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"91\" />\n", | |
| " <line x1=\"59\" y1=\"49\" x2=\"59\" y2=\"92\" />\n", | |
| " <line x1=\"59\" y1=\"49\" x2=\"59\" y2=\"93\" />\n", | |
| " <line x1=\"60\" y1=\"50\" x2=\"60\" y2=\"93\" />\n", | |
| " <line x1=\"60\" y1=\"50\" x2=\"60\" y2=\"94\" />\n", | |
| " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"94\" />\n", | |
| " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"95\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"62\" y2=\"95\" />\n", | |
| " <line x1=\"63\" y1=\"53\" x2=\"63\" y2=\"96\" />\n", | |
| " <line x1=\"63\" y1=\"53\" x2=\"63\" y2=\"97\" />\n", | |
| " <line x1=\"64\" y1=\"54\" x2=\"64\" y2=\"97\" />\n", | |
| " <line x1=\"64\" y1=\"54\" x2=\"64\" y2=\"98\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"98\" />\n", | |
| " <line x1=\"66\" y1=\"56\" x2=\"66\" y2=\"99\" />\n", | |
| " <line x1=\"66\" y1=\"56\" x2=\"66\" y2=\"100\" />\n", | |
| " <line x1=\"67\" y1=\"57\" x2=\"67\" y2=\"100\" />\n", | |
| " <line x1=\"67\" y1=\"57\" x2=\"67\" y2=\"101\" />\n", | |
| " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"101\" />\n", | |
| " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"102\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"69\" y2=\"102\" />\n", | |
| " <line x1=\"70\" y1=\"60\" x2=\"70\" y2=\"103\" />\n", | |
| " <line x1=\"70\" y1=\"60\" x2=\"70\" y2=\"104\" />\n", | |
| " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"104\" />\n", | |
| " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"105\" />\n", | |
| " <line x1=\"72\" y1=\"62\" x2=\"72\" y2=\"105\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"106\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"73\" y2=\"107\" />\n", | |
| " <line x1=\"74\" y1=\"64\" x2=\"74\" y2=\"107\" />\n", | |
| " <line x1=\"74\" y1=\"64\" x2=\"74\" y2=\"108\" />\n", | |
| " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"108\" />\n", | |
| " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"109\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"109\" />\n", | |
| " <line x1=\"77\" y1=\"67\" x2=\"77\" y2=\"110\" />\n", | |
| " <line x1=\"77\" y1=\"67\" x2=\"77\" y2=\"111\" />\n", | |
| " <line x1=\"78\" y1=\"68\" x2=\"78\" y2=\"111\" />\n", | |
| " <line x1=\"78\" y1=\"68\" x2=\"78\" y2=\"112\" />\n", | |
| " <line x1=\"79\" y1=\"69\" x2=\"79\" y2=\"112\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"113\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"114\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.000000,0.000000 80.588235,70.588235 80.588235,114.020252 10.000000,43.432017\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"35\" y2=\"0\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"35\" y2=\"0\" />\n", | |
| " <line x1=\"11\" y1=\"1\" x2=\"36\" y2=\"1\" />\n", | |
| " <line x1=\"11\" y1=\"1\" x2=\"37\" y2=\"1\" />\n", | |
| " <line x1=\"12\" y1=\"2\" x2=\"37\" y2=\"2\" />\n", | |
| " <line x1=\"12\" y1=\"2\" x2=\"38\" y2=\"2\" />\n", | |
| " <line x1=\"13\" y1=\"3\" x2=\"38\" y2=\"3\" />\n", | |
| " <line x1=\"14\" y1=\"4\" x2=\"39\" y2=\"4\" />\n", | |
| " <line x1=\"14\" y1=\"4\" x2=\"40\" y2=\"4\" />\n", | |
| " <line x1=\"15\" y1=\"5\" x2=\"40\" y2=\"5\" />\n", | |
| " <line x1=\"15\" y1=\"5\" x2=\"41\" y2=\"5\" />\n", | |
| " <line x1=\"16\" y1=\"6\" x2=\"41\" y2=\"6\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"42\" y2=\"7\" />\n", | |
| " <line x1=\"17\" y1=\"7\" x2=\"43\" y2=\"7\" />\n", | |
| " <line x1=\"18\" y1=\"8\" x2=\"43\" y2=\"8\" />\n", | |
| " <line x1=\"18\" y1=\"8\" x2=\"44\" y2=\"8\" />\n", | |
| " <line x1=\"19\" y1=\"9\" x2=\"44\" y2=\"9\" />\n", | |
| " <line x1=\"19\" y1=\"9\" x2=\"45\" y2=\"9\" />\n", | |
| " <line x1=\"20\" y1=\"10\" x2=\"45\" y2=\"10\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"46\" y2=\"11\" />\n", | |
| " <line x1=\"21\" y1=\"11\" x2=\"47\" y2=\"11\" />\n", | |
| " <line x1=\"22\" y1=\"12\" x2=\"47\" y2=\"12\" />\n", | |
| " <line x1=\"22\" y1=\"12\" x2=\"48\" y2=\"12\" />\n", | |
| " <line x1=\"23\" y1=\"13\" x2=\"48\" y2=\"13\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"49\" y2=\"14\" />\n", | |
| " <line x1=\"24\" y1=\"14\" x2=\"50\" y2=\"14\" />\n", | |
| " <line x1=\"25\" y1=\"15\" x2=\"50\" y2=\"15\" />\n", | |
| " <line x1=\"25\" y1=\"15\" x2=\"51\" y2=\"15\" />\n", | |
| " <line x1=\"26\" y1=\"16\" x2=\"51\" y2=\"16\" />\n", | |
| " <line x1=\"26\" y1=\"16\" x2=\"52\" y2=\"16\" />\n", | |
| " <line x1=\"27\" y1=\"17\" x2=\"52\" y2=\"17\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"53\" y2=\"18\" />\n", | |
| " <line x1=\"28\" y1=\"18\" x2=\"54\" y2=\"18\" />\n", | |
| " <line x1=\"29\" y1=\"19\" x2=\"54\" y2=\"19\" />\n", | |
| " <line x1=\"29\" y1=\"19\" x2=\"55\" y2=\"19\" />\n", | |
| " <line x1=\"30\" y1=\"20\" x2=\"55\" y2=\"20\" />\n", | |
| " <line x1=\"31\" y1=\"21\" x2=\"56\" y2=\"21\" />\n", | |
| " <line x1=\"31\" y1=\"21\" x2=\"57\" y2=\"21\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"57\" y2=\"22\" />\n", | |
| " <line x1=\"32\" y1=\"22\" x2=\"58\" y2=\"22\" />\n", | |
| " <line x1=\"33\" y1=\"23\" x2=\"58\" y2=\"23\" />\n", | |
| " <line x1=\"33\" y1=\"23\" x2=\"59\" y2=\"23\" />\n", | |
| " <line x1=\"34\" y1=\"24\" x2=\"59\" y2=\"24\" />\n", | |
| " <line x1=\"35\" y1=\"25\" x2=\"60\" y2=\"25\" />\n", | |
| " <line x1=\"35\" y1=\"25\" x2=\"61\" y2=\"25\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"61\" y2=\"26\" />\n", | |
| " <line x1=\"36\" y1=\"26\" x2=\"62\" y2=\"26\" />\n", | |
| " <line x1=\"37\" y1=\"27\" x2=\"62\" y2=\"27\" />\n", | |
| " <line x1=\"38\" y1=\"28\" x2=\"63\" y2=\"28\" />\n", | |
| " <line x1=\"38\" y1=\"28\" x2=\"64\" y2=\"28\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"64\" y2=\"29\" />\n", | |
| " <line x1=\"39\" y1=\"29\" x2=\"65\" y2=\"29\" />\n", | |
| " <line x1=\"40\" y1=\"30\" x2=\"65\" y2=\"30\" />\n", | |
| " <line x1=\"40\" y1=\"30\" x2=\"66\" y2=\"30\" />\n", | |
| " <line x1=\"41\" y1=\"31\" x2=\"66\" y2=\"31\" />\n", | |
| " <line x1=\"42\" y1=\"32\" x2=\"67\" y2=\"32\" />\n", | |
| " <line x1=\"42\" y1=\"32\" x2=\"68\" y2=\"32\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"68\" y2=\"33\" />\n", | |
| " <line x1=\"43\" y1=\"33\" x2=\"69\" y2=\"33\" />\n", | |
| " <line x1=\"44\" y1=\"34\" x2=\"69\" y2=\"34\" />\n", | |
| " <line x1=\"45\" y1=\"35\" x2=\"70\" y2=\"35\" />\n", | |
| " <line x1=\"45\" y1=\"35\" x2=\"71\" y2=\"35\" />\n", | |
| " <line x1=\"46\" y1=\"36\" x2=\"71\" y2=\"36\" />\n", | |
| " <line x1=\"46\" y1=\"36\" x2=\"72\" y2=\"36\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"72\" y2=\"37\" />\n", | |
| " <line x1=\"47\" y1=\"37\" x2=\"73\" y2=\"37\" />\n", | |
| " <line x1=\"48\" y1=\"38\" x2=\"73\" y2=\"38\" />\n", | |
| " <line x1=\"49\" y1=\"39\" x2=\"74\" y2=\"39\" />\n", | |
| " <line x1=\"49\" y1=\"39\" x2=\"75\" y2=\"39\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"75\" y2=\"40\" />\n", | |
| " <line x1=\"50\" y1=\"40\" x2=\"76\" y2=\"40\" />\n", | |
| " <line x1=\"51\" y1=\"41\" x2=\"76\" y2=\"41\" />\n", | |
| " <line x1=\"52\" y1=\"42\" x2=\"77\" y2=\"42\" />\n", | |
| " <line x1=\"52\" y1=\"42\" x2=\"78\" y2=\"42\" />\n", | |
| " <line x1=\"53\" y1=\"43\" x2=\"78\" y2=\"43\" />\n", | |
| " <line x1=\"53\" y1=\"43\" x2=\"79\" y2=\"43\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"79\" y2=\"44\" />\n", | |
| " <line x1=\"54\" y1=\"44\" x2=\"80\" y2=\"44\" />\n", | |
| " <line x1=\"55\" y1=\"45\" x2=\"80\" y2=\"45\" />\n", | |
| " <line x1=\"56\" y1=\"46\" x2=\"81\" y2=\"46\" />\n", | |
| " <line x1=\"56\" y1=\"46\" x2=\"82\" y2=\"46\" />\n", | |
| " <line x1=\"57\" y1=\"47\" x2=\"82\" y2=\"47\" />\n", | |
| " <line x1=\"57\" y1=\"47\" x2=\"83\" y2=\"47\" />\n", | |
| " <line x1=\"58\" y1=\"48\" x2=\"83\" y2=\"48\" />\n", | |
| " <line x1=\"59\" y1=\"49\" x2=\"84\" y2=\"49\" />\n", | |
| " <line x1=\"59\" y1=\"49\" x2=\"85\" y2=\"49\" />\n", | |
| " <line x1=\"60\" y1=\"50\" x2=\"85\" y2=\"50\" />\n", | |
| " <line x1=\"60\" y1=\"50\" x2=\"86\" y2=\"50\" />\n", | |
| " <line x1=\"61\" y1=\"51\" x2=\"86\" y2=\"51\" />\n", | |
| " <line x1=\"61\" y1=\"51\" x2=\"87\" y2=\"51\" />\n", | |
| " <line x1=\"62\" y1=\"52\" x2=\"87\" y2=\"52\" />\n", | |
| " <line x1=\"63\" y1=\"53\" x2=\"88\" y2=\"53\" />\n", | |
| " <line x1=\"63\" y1=\"53\" x2=\"89\" y2=\"53\" />\n", | |
| " <line x1=\"64\" y1=\"54\" x2=\"89\" y2=\"54\" />\n", | |
| " <line x1=\"64\" y1=\"54\" x2=\"90\" y2=\"54\" />\n", | |
| " <line x1=\"65\" y1=\"55\" x2=\"90\" y2=\"55\" />\n", | |
| " <line x1=\"66\" y1=\"56\" x2=\"91\" y2=\"56\" />\n", | |
| " <line x1=\"66\" y1=\"56\" x2=\"92\" y2=\"56\" />\n", | |
| " <line x1=\"67\" y1=\"57\" x2=\"92\" y2=\"57\" />\n", | |
| " <line x1=\"67\" y1=\"57\" x2=\"93\" y2=\"57\" />\n", | |
| " <line x1=\"68\" y1=\"58\" x2=\"93\" y2=\"58\" />\n", | |
| " <line x1=\"68\" y1=\"58\" x2=\"94\" y2=\"58\" />\n", | |
| " <line x1=\"69\" y1=\"59\" x2=\"94\" y2=\"59\" />\n", | |
| " <line x1=\"70\" y1=\"60\" x2=\"95\" y2=\"60\" />\n", | |
| " <line x1=\"70\" y1=\"60\" x2=\"96\" y2=\"60\" />\n", | |
| " <line x1=\"71\" y1=\"61\" x2=\"96\" y2=\"61\" />\n", | |
| " <line x1=\"71\" y1=\"61\" x2=\"97\" y2=\"61\" />\n", | |
| " <line x1=\"72\" y1=\"62\" x2=\"97\" y2=\"62\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"98\" y2=\"63\" />\n", | |
| " <line x1=\"73\" y1=\"63\" x2=\"99\" y2=\"63\" />\n", | |
| " <line x1=\"74\" y1=\"64\" x2=\"99\" y2=\"64\" />\n", | |
| " <line x1=\"74\" y1=\"64\" x2=\"100\" y2=\"64\" />\n", | |
| " <line x1=\"75\" y1=\"65\" x2=\"100\" y2=\"65\" />\n", | |
| " <line x1=\"75\" y1=\"65\" x2=\"101\" y2=\"65\" />\n", | |
| " <line x1=\"76\" y1=\"66\" x2=\"101\" y2=\"66\" />\n", | |
| " <line x1=\"77\" y1=\"67\" x2=\"102\" y2=\"67\" />\n", | |
| " <line x1=\"77\" y1=\"67\" x2=\"103\" y2=\"67\" />\n", | |
| " <line x1=\"78\" y1=\"68\" x2=\"103\" y2=\"68\" />\n", | |
| " <line x1=\"78\" y1=\"68\" x2=\"104\" y2=\"68\" />\n", | |
| " <line x1=\"79\" y1=\"69\" x2=\"104\" y2=\"69\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"105\" y2=\"70\" />\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"10.000000,0.000000 35.412617,0.000000 106.000852,70.588235 80.588235,70.588235\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Horizontal lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"80\" y1=\"71\" x2=\"106\" y2=\"71\" />\n", | |
| " <line x1=\"80\" y1=\"72\" x2=\"106\" y2=\"72\" />\n", | |
| " <line x1=\"80\" y1=\"73\" x2=\"106\" y2=\"73\" />\n", | |
| " <line x1=\"80\" y1=\"74\" x2=\"106\" y2=\"74\" />\n", | |
| " <line x1=\"80\" y1=\"75\" x2=\"106\" y2=\"75\" />\n", | |
| " <line x1=\"80\" y1=\"76\" x2=\"106\" y2=\"76\" />\n", | |
| " <line x1=\"80\" y1=\"77\" x2=\"106\" y2=\"77\" />\n", | |
| " <line x1=\"80\" y1=\"78\" x2=\"106\" y2=\"78\" />\n", | |
| " <line x1=\"80\" y1=\"79\" x2=\"106\" y2=\"79\" />\n", | |
| " <line x1=\"80\" y1=\"80\" x2=\"106\" y2=\"80\" />\n", | |
| " <line x1=\"80\" y1=\"81\" x2=\"106\" y2=\"81\" />\n", | |
| " <line x1=\"80\" y1=\"82\" x2=\"106\" y2=\"82\" />\n", | |
| " <line x1=\"80\" y1=\"83\" x2=\"106\" y2=\"83\" />\n", | |
| " <line x1=\"80\" y1=\"84\" x2=\"106\" y2=\"84\" />\n", | |
| " <line x1=\"80\" y1=\"85\" x2=\"106\" y2=\"85\" />\n", | |
| " <line x1=\"80\" y1=\"86\" x2=\"106\" y2=\"86\" />\n", | |
| " <line x1=\"80\" y1=\"87\" x2=\"106\" y2=\"87\" />\n", | |
| " <line x1=\"80\" y1=\"88\" x2=\"106\" y2=\"88\" />\n", | |
| " <line x1=\"80\" y1=\"89\" x2=\"106\" y2=\"89\" />\n", | |
| " <line x1=\"80\" y1=\"90\" x2=\"106\" y2=\"90\" />\n", | |
| " <line x1=\"80\" y1=\"91\" x2=\"106\" y2=\"91\" />\n", | |
| " <line x1=\"80\" y1=\"92\" x2=\"106\" y2=\"92\" />\n", | |
| " <line x1=\"80\" y1=\"93\" x2=\"106\" y2=\"93\" />\n", | |
| " <line x1=\"80\" y1=\"94\" x2=\"106\" y2=\"94\" />\n", | |
| " <line x1=\"80\" y1=\"95\" x2=\"106\" y2=\"95\" />\n", | |
| " <line x1=\"80\" y1=\"96\" x2=\"106\" y2=\"96\" />\n", | |
| " <line x1=\"80\" y1=\"97\" x2=\"106\" y2=\"97\" />\n", | |
| " <line x1=\"80\" y1=\"98\" x2=\"106\" y2=\"98\" />\n", | |
| " <line x1=\"80\" y1=\"99\" x2=\"106\" y2=\"99\" />\n", | |
| " <line x1=\"80\" y1=\"100\" x2=\"106\" y2=\"100\" />\n", | |
| " <line x1=\"80\" y1=\"101\" x2=\"106\" y2=\"101\" />\n", | |
| " <line x1=\"80\" y1=\"102\" x2=\"106\" y2=\"102\" />\n", | |
| " <line x1=\"80\" y1=\"103\" x2=\"106\" y2=\"103\" />\n", | |
| " <line x1=\"80\" y1=\"104\" x2=\"106\" y2=\"104\" />\n", | |
| " <line x1=\"80\" y1=\"105\" x2=\"106\" y2=\"105\" />\n", | |
| " <line x1=\"80\" y1=\"106\" x2=\"106\" y2=\"106\" />\n", | |
| " <line x1=\"80\" y1=\"107\" x2=\"106\" y2=\"107\" />\n", | |
| " <line x1=\"80\" y1=\"108\" x2=\"106\" y2=\"108\" />\n", | |
| " <line x1=\"80\" y1=\"109\" x2=\"106\" y2=\"109\" />\n", | |
| " <line x1=\"80\" y1=\"110\" x2=\"106\" y2=\"110\" />\n", | |
| " <line x1=\"80\" y1=\"111\" x2=\"106\" y2=\"111\" />\n", | |
| " <line x1=\"80\" y1=\"112\" x2=\"106\" y2=\"112\" />\n", | |
| " <line x1=\"80\" y1=\"113\" x2=\"106\" y2=\"113\" />\n", | |
| " <line x1=\"80\" y1=\"114\" x2=\"106\" y2=\"114\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Vertical lines -->\n", | |
| " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"114\" style=\"stroke-width:2\" />\n", | |
| " <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"114\" style=\"stroke-width:2\" />\n", | |
| "\n", | |
| " <!-- Colored Rectangle -->\n", | |
| " <polygon points=\"80.588235,70.588235 106.000852,70.588235 106.000852,114.020252 80.588235,114.020252\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", | |
| "\n", | |
| " <!-- Text -->\n", | |
| " <text x=\"93.294544\" y=\"134.020252\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >3</text>\n", | |
| " <text x=\"126.000852\" y=\"92.304244\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,126.000852,92.304244)\">365941</text>\n", | |
| " <text x=\"35.294118\" y=\"98.726134\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,98.726134)\">1261158</text>\n", | |
| "</svg>\n", | |
| "</td>\n", | |
| "</tr>\n", | |
| "</table>" | |
| ], | |
| "text/plain": [ | |
| "dask.array<rechunk-merge, shape=(1261158, 365941, 3), dtype=float16, chunksize=(10432, 9134, 3), chunktype=numpy.ndarray>" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds.call_genotype_probability.data.rechunk((None, None, -1))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 1152x216 with 2 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "import matplotlib.pyplot as plt\n", | |
| "fig, axs = plt.subplots(1, 2)\n", | |
| "fig.set_size_inches(16, 3)\n", | |
| "ax = ds.variant_info.to_series().plot(kind='hist', bins=128, ax=axs[0])\n", | |
| "ax.axvline(x=.8, c='black')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('INFO')\n", | |
| "ax.set_title('INFO Distribution')\n", | |
| "ax = ds.variant_maf.to_series().clip(0, .02).plot(kind='hist', bins=128, ax=axs[1])\n", | |
| "ax.axvline(x=0.001, c='black')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('MAF')\n", | |
| "ax.set_title('MAF Distribution');" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# %%time\n", | |
| "# with ProgressBar(), Profiler() as prof, ResourceProfiler() as rprof:\n", | |
| "# all_finite = np.isfinite(ds.call_dosage).all().compute()\n", | |
| "# all_finite" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# %%time\n", | |
| "# ds.call_dosage.max().compute()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[########################################] | 100% Completed | 39min 32.9s\n", | |
| "CPU times: user 19h 42min 11s, sys: 5h 55min 32s, total: 1d 1h 37min 43s\n", | |
| "Wall time: 39min 34s\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%%time\n", | |
| "with ProgressBar(), Profiler() as prof, ResourceProfiler() as rprof:\n", | |
| " ds['variant_dosage_std'] = ds['variant_dosage_std'].compute()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# ds.variant_dosage_std.to_netcdf('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_dosage_std.n5')\n", | |
| "# ds['variant_dosage_std'] = xr.open_dataarray('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_dosage_std.n5')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "False 1257995\n", | |
| "True 3163\n", | |
| "Name: variant_dosage_std, dtype: int64" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "(ds['variant_dosage_std'] <= 0).to_series().value_counts()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[########################################] | 100% Completed | 1hr 47min 15.8s\n", | |
| "CPU times: user 3d 19h 26min 59s, sys: 14h 55min 53s, total: 4d 10h 22min 53s\n", | |
| "Wall time: 1h 47min 18s\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%%time\n", | |
| "with ProgressBar(), Profiler() as prof, ResourceProfiler() as rprof:\n", | |
| " ds['variant_hwe_p_value'] = ds['variant_hwe_p_value'].compute()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "#ds.variant_hwe_p_value.to_netcdf('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_hwe_p_value.n5')\n", | |
| "# ds['variant_hwe_p_value'] = xr.open_dataarray('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_hwe_p_value.n5')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 1296x432 with 4 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "import matplotlib.pyplot as plt\n", | |
| "fig, axs = plt.subplots(2, 2)\n", | |
| "axs = axs.ravel()\n", | |
| "fig.set_size_inches(18, 6)\n", | |
| "\n", | |
| "ax = ds.variant_info.to_series().plot(kind='hist', bins=128, ax=axs[0])\n", | |
| "ax.axvline(x=.8, c='black')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('INFO')\n", | |
| "ax.set_title('INFO Distribution')\n", | |
| "\n", | |
| "ax = ds.variant_maf.to_series().clip(0, .02).plot(kind='hist', bins=128, ax=axs[1])\n", | |
| "ax.axvline(x=0.001, c='black')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('MAF')\n", | |
| "ax.set_title('MAF Distribution')\n", | |
| "\n", | |
| "ax = ds.variant_hwe_p_value.to_series().clip(0, 1e-9).plot(kind='hist', bins=128, ax=axs[2])\n", | |
| "ax.axvline(x=1e-10, c='black')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('P Value')\n", | |
| "ax.set_title('HWE P Distribution')\n", | |
| "\n", | |
| "ax = ds.variant_dosage_std.to_series().plot(kind='hist', bins=128, ax=axs[3])\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.set_xlabel('Dosage SD')\n", | |
| "ax.set_title('Dosage SD Distribution')\n", | |
| "\n", | |
| "plt.tight_layout()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Variant QC filter summary:\n", | |
| "\tin_hwe: {True: 1255678, False: 5480}\n", | |
| "\tnonzero_stddev: {True: 1257995, False: 3163}\n", | |
| "\thigh_info: {False: 896362, True: 364796}\n", | |
| "\thigh_maf: {False: 988775, True: 272383}\n", | |
| "\toverall: {False: 1047136, True: 214022}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<pre><xarray.Dataset>\n", | |
| "Dimensions: (alleles: 2, covariates: 12, genotypes: 3, principal_components: 40, samples: 365941, traits: 2, variants: 214022)\n", | |
| "Dimensions without coordinates: alleles, covariates, genotypes, principal_components, samples, traits, variants\n", | |
| "Data variables:\n", | |
| " call_dosage (variants, samples) float16 dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " call_dosage_mask (variants, samples) int8 dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " call_genotype_probability (variants, samples, genotypes) float16 dask.array<chunksize=(6, 8409, 1), meta=np.ndarray>\n", | |
| " call_genotype_probability_mask (variants, samples) bool dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " sample_age_at_recruitment (samples) float64 41.0 46.0 ... 51.0 67.0\n", | |
| " sample_covariate (samples, covariates) float64 1.077 .....\n", | |
| " sample_ethnic_background (samples) float64 1.001e+03 ... 1.001e+03\n", | |
| " sample_genetic_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_genotype_measurement_batch (samples) float64 1.0 1.0 ... -7.0 -1.0\n", | |
| " sample_genotype_measurement_plate (samples) |S13 b'SMP4_0012258' ... b'S...\n", | |
| " sample_genotype_measurement_well (samples) |S3 b'A01' b'A02' ... b'B05'\n", | |
| " sample_id (samples) int32 dask.array<chunksize=(45812,), meta=np.ndarray>\n", | |
| " sample_principal_component (samples, principal_components) float64 ...\n", | |
| " sample_qc_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_sex (samples) uint8 dask.array<chunksize=(182025,), meta=np.ndarray>\n", | |
| " sample_trait (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_imputed (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_names (traits) |S6 b'height' b'weight'\n", | |
| " variant_allele (variants, alleles) |S101 dask.array<chunksize=(14, 1), meta=np.ndarray>\n", | |
| " variant_contig (variants) int16 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_contig_name (variants) |S2 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_dosage_std (variants) float32 0.087889165 ... 0.5...\n", | |
| " variant_genotype_counts (variants, genotypes) uint32 dask.array<chunksize=(6, 3), meta=np.ndarray>\n", | |
| " variant_hwe_p_value (variants) float64 0.001842 ... 0.1397\n", | |
| " variant_id (variants) |S115 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| " variant_info (variants) float32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_maf (variants) float32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_minor_allele (variants) |S101 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| " variant_position (variants) int32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_rsid (variants) |S115 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " contig_index: 20\n", | |
| " contig_name: 21\n", | |
| " contigs: ['21']</pre>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.Dataset>\n", | |
| "Dimensions: (alleles: 2, covariates: 12, genotypes: 3, principal_components: 40, samples: 365941, traits: 2, variants: 214022)\n", | |
| "Dimensions without coordinates: alleles, covariates, genotypes, principal_components, samples, traits, variants\n", | |
| "Data variables:\n", | |
| " call_dosage (variants, samples) float16 dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " call_dosage_mask (variants, samples) int8 dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " call_genotype_probability (variants, samples, genotypes) float16 dask.array<chunksize=(6, 8409, 1), meta=np.ndarray>\n", | |
| " call_genotype_probability_mask (variants, samples) bool dask.array<chunksize=(6, 8409), meta=np.ndarray>\n", | |
| " sample_age_at_recruitment (samples) float64 41.0 46.0 ... 51.0 67.0\n", | |
| " sample_covariate (samples, covariates) float64 1.077 .....\n", | |
| " sample_ethnic_background (samples) float64 1.001e+03 ... 1.001e+03\n", | |
| " sample_genetic_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_genotype_measurement_batch (samples) float64 1.0 1.0 ... -7.0 -1.0\n", | |
| " sample_genotype_measurement_plate (samples) |S13 b'SMP4_0012258' ... b'S...\n", | |
| " sample_genotype_measurement_well (samples) |S3 b'A01' b'A02' ... b'B05'\n", | |
| " sample_id (samples) int32 dask.array<chunksize=(45812,), meta=np.ndarray>\n", | |
| " sample_principal_component (samples, principal_components) float64 ...\n", | |
| " sample_qc_sex (samples) float64 1.0 0.0 0.0 ... 0.0 1.0\n", | |
| " sample_sex (samples) uint8 dask.array<chunksize=(182025,), meta=np.ndarray>\n", | |
| " sample_trait (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_imputed (samples, traits) float64 0.878 ... 0....\n", | |
| " sample_trait_names (traits) |S6 b'height' b'weight'\n", | |
| " variant_allele (variants, alleles) |S101 dask.array<chunksize=(14, 1), meta=np.ndarray>\n", | |
| " variant_contig (variants) int16 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_contig_name (variants) |S2 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_dosage_std (variants) float32 0.087889165 ... 0.5...\n", | |
| " variant_genotype_counts (variants, genotypes) uint32 dask.array<chunksize=(6, 3), meta=np.ndarray>\n", | |
| " variant_hwe_p_value (variants) float64 0.001842 ... 0.1397\n", | |
| " variant_id (variants) |S115 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| " variant_info (variants) float32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_maf (variants) float32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_minor_allele (variants) |S101 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| " variant_position (variants) int32 dask.array<chunksize=(17458,), meta=np.ndarray>\n", | |
| " variant_rsid (variants) |S115 dask.array<chunksize=(6,), meta=np.ndarray>\n", | |
| "Attributes:\n", | |
| " contig_index: 20\n", | |
| " contig_name: 21\n", | |
| " contigs: ['21']" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "def apply_variant_qc(ds: Dataset) -> Dataset:\n", | |
| " # See: https://github.com/Nealelab/UK_Biobank_GWAS#imputed-v3-variant-qc\n", | |
| " filters = {\n", | |
| " 'in_hwe': ds.variant_hwe_p_value > 1e-10,\n", | |
| " 'nonzero_stddev': ds.variant_dosage_std > 0,\n", | |
| " 'high_info': ds.variant_info > .8,\n", | |
| " # TODO: special case coding variant threshold\n", | |
| " 'high_maf': ds.variant_maf > 0.001,\n", | |
| " }\n", | |
| " print('Variant QC filter summary:')\n", | |
| " for k, v in filters.items():\n", | |
| " print(f'\\t{k}: {v.to_series().value_counts().to_dict()}')\n", | |
| " mask = np.stack([v.values for v in filters.values()], axis=1)\n", | |
| " mask = np.all(mask, axis=1)\n", | |
| " assert len(mask) == ds.dims['variants']\n", | |
| " print(f'\\toverall: {pd.Series(mask).value_counts().to_dict()}')\n", | |
| " return ds.sel(variants=mask)\n", | |
| "ds_qc = apply_variant_qc(ds)\n", | |
| "ds_qc" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 96, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# xr.set_options(display_style='text')\n", | |
| "# ds_qc_samp = ds_qc.isel(variants=slice(0, 25), samples=slice(0, 25)).compute()\n", | |
| "# ds_qc_samp[[v for v in sorted(ds_qc_samp)]]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "ax = ds_qc['variant_position'].to_series().plot(kind='hist', bins=128)\n", | |
| "ax.set_yscale('log')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<AxesSubplot:>" | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 288x216 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# https://biobank.ctsu.ox.ac.uk/crystal/field.cgi?id=22001\n", | |
| "ds_qc['sample_genetic_sex'].to_series().astype(int).map({0: 'Female', 1: 'Male'})\\\n", | |
| " .value_counts().sort_index().plot(kind='bar', figsize=(4, 3))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<AxesSubplot:>" | |
| ] | |
| }, | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 720x216 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "ds_qc['sample_age_at_recruitment'].to_series().astype(int).value_counts().sort_index().plot(kind='bar', figsize=(10, 3))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Regression" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "%load_ext autoreload\n", | |
| "%autoreload 2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<module 'sgkit.stats.association' from '/home/eczech/repos/sgkit/sgkit/stats/association.py'>" | |
| ] | |
| }, | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "from sgkit.stats import association\n", | |
| "import imp\n", | |
| "imp.reload(association)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[########################################] | 100% Completed | 41min 44.0s\n", | |
| "[########################################] | 100% Completed | 44min 16.4s\n", | |
| "CPU times: user 1d 17h 47min 36s, sys: 1d 6h 15min 23s, total: 3d 2min 59s\n", | |
| "Wall time: 1h 26min 6s\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<pre><xarray.Dataset>\n", | |
| "Dimensions: (traits: 2, variants: 214022)\n", | |
| "Dimensions without coordinates: traits, variants\n", | |
| "Data variables:\n", | |
| " variant_beta (variants, traits) float64 dask.array<chunksize=(6, 2), meta=np.ndarray>\n", | |
| " variant_t_value (variants, traits) float64 dask.array<chunksize=(6, 2), meta=np.ndarray>\n", | |
| " variant_p_value (variants, traits) float64 0.04107 0.4579 ... 0.05829</pre>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.Dataset>\n", | |
| "Dimensions: (traits: 2, variants: 214022)\n", | |
| "Dimensions without coordinates: traits, variants\n", | |
| "Data variables:\n", | |
| " variant_beta (variants, traits) float64 dask.array<chunksize=(6, 2), meta=np.ndarray>\n", | |
| " variant_t_value (variants, traits) float64 dask.array<chunksize=(6, 2), meta=np.ndarray>\n", | |
| " variant_p_value (variants, traits) float64 0.04107 0.4579 ... 0.05829" | |
| ] | |
| }, | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "%%time\n", | |
| "with ProgressBar(), Profiler() as prof, ResourceProfiler() as rprof:\n", | |
| " ds_gwas = association.gwas_linear_regression(\n", | |
| " # Promote to f4 to avoid:\n", | |
| " # TypeError: array type float16 is unsupported in linalg\n", | |
| " ds_qc.assign(call_dosage=lambda ds: ds_qc.call_dosage.astype('float32')), \n", | |
| " dosage='call_dosage', \n", | |
| " covariates='sample_covariate', \n", | |
| " traits='sample_trait_imputed', \n", | |
| " add_intercept=True\n", | |
| " )\n", | |
| "ds_gwas" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# ds_gwas.variant_p_value.to_netcdf('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_p_value.n5')\n", | |
| "# ds_qc['variant_p_value'] = xr.open_dataarray('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_p_value.n5')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 33, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# ds_gwas.variant_beta.to_netcdf('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_beta.n5')\n", | |
| "#ds['variant_beta'] = xr.open_dataarray('/home/eczech/data/rs-ukb-local/gwas/cache/chr21_variant_beta.n5')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 37, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<pre><xarray.DataArray 'sample_trait_names' (traits: 2)>\n", | |
| "array([b'height', b'weight'], dtype='|S6')\n", | |
| "Dimensions without coordinates: traits</pre>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.DataArray 'sample_trait_names' (traits: 2)>\n", | |
| "array([b'height', b'weight'], dtype='|S6')\n", | |
| "Dimensions without coordinates: traits" | |
| ] | |
| }, | |
| "execution_count": 37, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds_qc['sample_trait_names']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 58, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def manhattan(pos, p, trait):\n", | |
| " p = -np.log10(p)\n", | |
| " mask = (p > .1) & (pos > 1.3e7)\n", | |
| " plt.scatter(pos[mask], p[mask], c=p[mask], cmap='Spectral_r')\n", | |
| " plt.gcf().set_size_inches(8, 3)\n", | |
| " ax = plt.gca()\n", | |
| " ax.set_xlabel('Position')\n", | |
| " ax.set_ylabel('-log10(p)')\n", | |
| " ax.set_title(trait)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 59, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 576x216 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "manhattan(ds_qc['variant_position'], ds_gwas['variant_p_value'][:, 0], 'Standing Height (chrom: 21)')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 576x216 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "manhattan(ds_qc['variant_position'], ds_gwas['variant_p_value'][:, 1], 'Weight (chrom: 21)')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 46, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "ax = ds_gwas['variant_beta'].to_series().plot(kind='hist', bins=128)\n", | |
| "ax.set_yscale('log')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Compare to OT" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<pre><xarray.DataArray 'variant_p_value' (variants: 214022, traits: 2)>\n", | |
| "[428044 values with dtype=float64]\n", | |
| "Dimensions without coordinates: variants, traits</pre>" | |
| ], | |
| "text/plain": [ | |
| "<xarray.DataArray 'variant_p_value' (variants: 214022, traits: 2)>\n", | |
| "[428044 values with dtype=float64]\n", | |
| "Dimensions without coordinates: variants, traits" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds_qc.variant_p_value" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "<class 'pandas.core.frame.DataFrame'>\n", | |
| "Int64Index: 27582934 entries, 0 to 13791466\n", | |
| "Data columns (total 12 columns):\n", | |
| " # Column Dtype \n", | |
| "--- ------ ----- \n", | |
| " 0 chromosome object \n", | |
| " 1 base_pair_location int64 \n", | |
| " 2 other_allele object \n", | |
| " 3 effect_allele object \n", | |
| " 4 variant object \n", | |
| " 5 minor_allele object \n", | |
| " 6 n_complete_samples int64 \n", | |
| " 7 beta float64\n", | |
| " 8 tstat float64\n", | |
| " 9 p-value float64\n", | |
| " 10 variant_id object \n", | |
| " 11 ukb_field_id int64 \n", | |
| "dtypes: float64(3), int64(3), object(6)\n", | |
| "memory usage: 2.7+ GB\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "df = pd.concat([\n", | |
| " pd.read_csv(\n", | |
| " f'gs://rs-ukb/pipe-data/external/ot_sumstats/{ukb_field_id}_raw.neale2.gwas.imputed_v3.both_sexes.tsv.gz', \n", | |
| " sep='\\t',\n", | |
| " usecols=[\n", | |
| " 'chromosome', 'base_pair_location', 'other_allele', 'effect_allele', \n", | |
| " 'variant', 'variant_id', 'minor_allele', 'n_complete_samples', \n", | |
| " 'beta', 'p-value', 'tstat'\n", | |
| " ],\n", | |
| " dtype={'chromosome': str}\n", | |
| " ).assign(ukb_field_id=ukb_field_id)\n", | |
| " for ukb_field_id in [50, 23098]\n", | |
| "])\n", | |
| "df = df[df['chromosome'] == '21']\n", | |
| "df.info()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>chromosome</th>\n", | |
| " <th>base_pair_location</th>\n", | |
| " <th>other_allele</th>\n", | |
| " <th>effect_allele</th>\n", | |
| " <th>variant</th>\n", | |
| " <th>minor_allele</th>\n", | |
| " <th>n_complete_samples</th>\n", | |
| " <th>beta</th>\n", | |
| " <th>tstat</th>\n", | |
| " <th>p-value</th>\n", | |
| " <th>variant_id</th>\n", | |
| " <th>ukb_field_id</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>1</td>\n", | |
| " <td>693731</td>\n", | |
| " <td>A</td>\n", | |
| " <td>G</td>\n", | |
| " <td>1:693731:A:G</td>\n", | |
| " <td>G</td>\n", | |
| " <td>360388</td>\n", | |
| " <td>-0.014032</td>\n", | |
| " <td>-0.568184</td>\n", | |
| " <td>0.569910</td>\n", | |
| " <td>rs12238997</td>\n", | |
| " <td>50</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>1</td>\n", | |
| " <td>845274</td>\n", | |
| " <td>G</td>\n", | |
| " <td>T</td>\n", | |
| " <td>1:845274:G:T</td>\n", | |
| " <td>T</td>\n", | |
| " <td>360388</td>\n", | |
| " <td>0.016333</td>\n", | |
| " <td>0.882624</td>\n", | |
| " <td>0.377440</td>\n", | |
| " <td>rs112856858</td>\n", | |
| " <td>50</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>1</td>\n", | |
| " <td>868404</td>\n", | |
| " <td>C</td>\n", | |
| " <td>T</td>\n", | |
| " <td>1:868404:C:T</td>\n", | |
| " <td>C</td>\n", | |
| " <td>360388</td>\n", | |
| " <td>0.009401</td>\n", | |
| " <td>0.119882</td>\n", | |
| " <td>0.904577</td>\n", | |
| " <td>rs13302914</td>\n", | |
| " <td>50</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>1</td>\n", | |
| " <td>871691</td>\n", | |
| " <td>C</td>\n", | |
| " <td>CCGGTCG</td>\n", | |
| " <td>1:871691:C:CCGGTCG</td>\n", | |
| " <td>CCGGTCG</td>\n", | |
| " <td>360388</td>\n", | |
| " <td>0.027636</td>\n", | |
| " <td>1.559330</td>\n", | |
| " <td>0.118919</td>\n", | |
| " <td>rs531622104</td>\n", | |
| " <td>50</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>1</td>\n", | |
| " <td>909053</td>\n", | |
| " <td>G</td>\n", | |
| " <td>A</td>\n", | |
| " <td>1:909053:G:A</td>\n", | |
| " <td>A</td>\n", | |
| " <td>360388</td>\n", | |
| " <td>0.208933</td>\n", | |
| " <td>1.603550</td>\n", | |
| " <td>0.108814</td>\n", | |
| " <td>rs116854740</td>\n", | |
| " <td>50</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " chromosome base_pair_location other_allele effect_allele \\\n", | |
| "0 1 693731 A G \n", | |
| "1 1 845274 G T \n", | |
| "2 1 868404 C T \n", | |
| "3 1 871691 C CCGGTCG \n", | |
| "4 1 909053 G A \n", | |
| "\n", | |
| " variant minor_allele n_complete_samples beta tstat \\\n", | |
| "0 1:693731:A:G G 360388 -0.014032 -0.568184 \n", | |
| "1 1:845274:G:T T 360388 0.016333 0.882624 \n", | |
| "2 1:868404:C:T C 360388 0.009401 0.119882 \n", | |
| "3 1:871691:C:CCGGTCG CCGGTCG 360388 0.027636 1.559330 \n", | |
| "4 1:909053:G:A A 360388 0.208933 1.603550 \n", | |
| "\n", | |
| " p-value variant_id ukb_field_id \n", | |
| "0 0.569910 rs12238997 50 \n", | |
| "1 0.377440 rs112856858 50 \n", | |
| "2 0.904577 rs13302914 50 \n", | |
| "3 0.118919 rs531622104 50 \n", | |
| "4 0.108814 rs116854740 50 " | |
| ] | |
| }, | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([b'21:9574185_G_C', b'21:9660864_G_A', b'21:9674879_G_C',\n", | |
| " b'21:9759660_G_T', b'21:10016810_G_A', b'21:10167135_A_G',\n", | |
| " b'21:10530411_T_C', b'21:10530454_G_A', b'21:10594824_C_T',\n", | |
| " b'21:10711080_C_A'], dtype='|S115')" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ds_qc['variant_id'].values[:10]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "df = df[df['chromosome'] == '21']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th>variant_id</th>\n", | |
| " <th>p1</th>\n", | |
| " <th>sample_trait_names</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>traits</th>\n", | |
| " <th>variants</th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"5\" valign=\"top\">0</th>\n", | |
| " <th>0</th>\n", | |
| " <td>21:9574185:G:C</td>\n", | |
| " <td>0.041073</td>\n", | |
| " <td>height</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>21:9660864:G:A</td>\n", | |
| " <td>0.017889</td>\n", | |
| " <td>height</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>21:9674879:G:C</td>\n", | |
| " <td>0.033013</td>\n", | |
| " <td>height</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>21:9759660:G:T</td>\n", | |
| " <td>0.151204</td>\n", | |
| " <td>height</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>21:10016810:G:A</td>\n", | |
| " <td>0.018701</td>\n", | |
| " <td>height</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " variant_id p1 sample_trait_names\n", | |
| "traits variants \n", | |
| "0 0 21:9574185:G:C 0.041073 height\n", | |
| " 1 21:9660864:G:A 0.017889 height\n", | |
| " 2 21:9674879:G:C 0.033013 height\n", | |
| " 3 21:9759660:G:T 0.151204 height\n", | |
| " 4 21:10016810:G:A 0.018701 height" | |
| ] | |
| }, | |
| "execution_count": 39, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df_gwas = ds_qc[['variant_id', 'variant_p_value', 'sample_trait_names']].to_dataframe()\n", | |
| "df_gwas['sample_trait_names'] = df_gwas['sample_trait_names'].values.astype('U')\n", | |
| "df_gwas['variant_id'] = df_gwas['variant_id'].values.astype('U')\n", | |
| "df_gwas['variant_id'] = df_gwas['variant_id'].str.replace('_', ':')\n", | |
| "df_gwas = df_gwas.rename(columns={'variant_p_value': 'p1'})\n", | |
| "df_gwas.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 40, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th>variant_id</th>\n", | |
| " <th>p1</th>\n", | |
| " <th>sample_trait_names</th>\n", | |
| " <th>p2</th>\n", | |
| " <th>lp1</th>\n", | |
| " <th>lp2</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>traits</th>\n", | |
| " <th>variants</th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"5\" valign=\"top\">0</th>\n", | |
| " <th>0</th>\n", | |
| " <td>21:9574185:G:C</td>\n", | |
| " <td>0.041073</td>\n", | |
| " <td>height</td>\n", | |
| " <td>0.161264</td>\n", | |
| " <td>1.386446</td>\n", | |
| " <td>0.792463</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>21:9660864:G:A</td>\n", | |
| " <td>0.017889</td>\n", | |
| " <td>height</td>\n", | |
| " <td>0.015755</td>\n", | |
| " <td>1.747424</td>\n", | |
| " <td>1.802587</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>21:9674879:G:C</td>\n", | |
| " <td>0.033013</td>\n", | |
| " <td>height</td>\n", | |
| " <td>0.132426</td>\n", | |
| " <td>1.481316</td>\n", | |
| " <td>0.878027</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>21:9759660:G:T</td>\n", | |
| " <td>0.151204</td>\n", | |
| " <td>height</td>\n", | |
| " <td>0.226288</td>\n", | |
| " <td>0.820436</td>\n", | |
| " <td>0.645338</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>21:10016810:G:A</td>\n", | |
| " <td>0.018701</td>\n", | |
| " <td>height</td>\n", | |
| " <td>0.016410</td>\n", | |
| " <td>1.728142</td>\n", | |
| " <td>1.784905</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " variant_id p1 sample_trait_names p2 \\\n", | |
| "traits variants \n", | |
| "0 0 21:9574185:G:C 0.041073 height 0.161264 \n", | |
| " 1 21:9660864:G:A 0.017889 height 0.015755 \n", | |
| " 2 21:9674879:G:C 0.033013 height 0.132426 \n", | |
| " 3 21:9759660:G:T 0.151204 height 0.226288 \n", | |
| " 4 21:10016810:G:A 0.018701 height 0.016410 \n", | |
| "\n", | |
| " lp1 lp2 \n", | |
| "traits variants \n", | |
| "0 0 1.386446 0.792463 \n", | |
| " 1 1.747424 1.802587 \n", | |
| " 2 1.481316 0.878027 \n", | |
| " 3 0.820436 0.645338 \n", | |
| " 4 1.728142 1.784905 " | |
| ] | |
| }, | |
| "execution_count": 40, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df_gwas = df_gwas[df_gwas['sample_trait_names'] == 'height']\n", | |
| "df_ot = df[df['ukb_field_id'] == 50].set_index('variant')['p-value'].to_dict()\n", | |
| "df_gwas['p2'] = df_gwas['variant_id'].map(df_ot)\n", | |
| "df_gwas['lp1'] = -np.log10(df_gwas['p1'])\n", | |
| "df_gwas['lp2'] = -np.log10(df_gwas['p2'])\n", | |
| "df_gwas.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "Text(0, 0.5, 'NL -log10(p)')" | |
| ] | |
| }, | |
| "execution_count": 42, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "ax = df_gwas.plot(kind='scatter', x='lp1', y='lp2')\n", | |
| "ax.set_title('Standing Height')\n", | |
| "ax.set_xlabel('RS -log10(p)')\n", | |
| "ax.set_ylabel('NL -log10(p)')" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "ukb-analysis", | |
| "language": "python", | |
| "name": "ukb-analysis" | |
| }, | |
| "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.8" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment