{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reproducing Fig. 1\n", "This notebook exemplifies how to reproduce Figure 1 of the article.\n", "The annotations from all screens will be downloaded and parsed to\n", "build statistics on phenotypes, which will be displayed using Bokeh." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dependencies\n", " * [Matplotlib](https://matplotlib.org/)\n", " * [NumPy](https://www.numpy.org/)\n", " * [Pandas](https://pandas.pydata.org/)\n", " * [Bokeh](https://bokeh.pydata.org/)\n", "\n", "The cell below will install dependencies if you choose to run the notebook in [Google Colab](https://colab.research.google.com/notebooks/intro.ipynb#recent=true)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%pip install idr-py" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", "\n", " if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id !== undefined) {\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 element_id = msg.content.text.trim();\n", " Bokeh.index[element_id].model.document.clear();\n", " delete Bokeh.index[element_id];\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[0].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[0].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", "\n", " \n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

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

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " var el = document.getElementById(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };var element = document.getElementById(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\");\n", " if (element == null) {\n", " console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8e1fdc26-93d2-44b0-b0d6-663404a24403' but no matching script tag was found. \")\n", " return false;\n", " }\n", "\n", " var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.11.min.js\"];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " \n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\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(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\")).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.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(js_urls, function() {\n", " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

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

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8e1fdc26-93d2-44b0-b0d6-663404a24403' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.11.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.11.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.11.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.11.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\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(\"8e1fdc26-93d2-44b0-b0d6-663404a24403\")).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.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython import get_ipython\n", "import omero\n", "from idr import connection\n", "\n", "import numpy as np\n", "\n", "from pandas import DataFrame\n", "from pandas import read_csv\n", "\n", "from bokeh.models import ColumnDataSource\n", "from bokeh.plotting import figure\n", "from bokeh.plotting import output_notebook\n", "from bokeh.plotting import show\n", "from bokeh.models import HoverTool\n", "import bokeh.palettes as bpal\n", "\n", "output_notebook()\n", "get_ipython().run_line_magic('matplotlib', 'inline')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Method definitions" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def getBulkAnnotationAsDf(screenID, conn):\n", " ofId = None\n", " sc = conn.getObject('Screen', screenID)\n", " for ann in sc.listAnnotations():\n", " if isinstance(ann, omero.gateway.FileAnnotationWrapper):\n", " if (ann.getFile().getName() == 'bulk_annotations'):\n", " if (ann.getFile().getSize() > 1476250900):\n", " print(\"that's a big file...\")\n", " return None\n", " ofId = ann.getFile().getId()\n", " break\n", "\n", " if ofId is None:\n", " return None\n", "\n", " original_file = omero.model.OriginalFileI(ofId, False)\n", "\n", " table = conn.c.sf.sharedResources().openTable(original_file)\n", " try:\n", " rowCount = table.getNumberOfRows()\n", " column_names = [col.name for col in table.getHeaders()]\n", " black_list = []\n", " column_indices = []\n", " for column_name in column_names:\n", " if column_name in black_list:\n", " continue\n", " column_indices.append(column_names.index(column_name))\n", "\n", " table_data = table.slice(column_indices, None)\n", " finally:\n", " table.close()\n", "\n", " data = []\n", " for index in range(rowCount):\n", " row_values = [column.values[index] for column in table_data.columns]\n", " data.append(row_values)\n", "\n", " dfAnn = DataFrame(data)\n", " dfAnn.columns = column_names\n", " return dfAnn" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def appendPhInfo(phall, screen, df):\n", " \"\"\"\n", " extract all phenotypes information from given bulk annotation file and\n", " append it to the phall\n", " \"\"\"\n", " phcol = df.columns[[('Phenotype' in s) and ('Term Accession' in s)\n", " for s in df.columns]]\n", " for s in phcol:\n", " ph = df[s].unique()\n", " if ph[0] != '':\n", " ph = ph[0]\n", " desc = df[s.replace('Accession', 'Name')].unique()[0]\n", " else:\n", " ph = ph[1]\n", " desc = df[s.replace('Accession', 'Name')].unique()[1]\n", " dfph = df[df[s] != '']\n", " try:\n", " phall[ph]['n'] = phall[ph]['n']+len(dfph)\n", " if not (screen in phall[ph]['screens']):\n", " phall[ph]['screens'].append(screen)\n", " except Exception:\n", " phcur = {'n': len(dfph), 'screens': [screen], 'desc': desc}\n", " phall[ph] = phcur" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Connect to the IDR server" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connected to IDR...\n" ] } ], "source": [ "conn = connection('idr.openmicroscopy.org')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build and display figure" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "37\n", "[============================================================] 100.0% ...Iterating through screens\r" ] } ], "source": [ "screens = list(conn.getObjects(\"Screen\"))\n", "screen_count = len(screens)\n", "print(screen_count)\n", "\n", "phall = {}\n", "# List of screens used for paper\n", "screen_ids = [3, 102, 51, 202, 597, 253, 201, 154, 751, 206,\n", " 251, 803, 1351, 1501, 1551, 1601, 1602, 1603, 1202, 1101, 1302,\n", " 1201, 1251, 1151, 1203, 1204, 1651, 1652, 1653, 1654]\n", "print(\"Iterating through screens...\")\n", "for sc in screens:\n", " sc_id = sc.getId()\n", " print('loading ' + str(sc_id))\n", " if sc_id in screen_ids:\n", " df = getBulkAnnotationAsDf(sc_id, conn)\n", " if df is not None:\n", " appendPhInfo(phall, sc.getName(), df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Disconnect when done loading data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "conn.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load grouping of phenotypes for ordering and coloring them\n", "Categories were chosen manually offline\n", "(see [paper](https://www.nature.com/articles/nmeth.4326))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dfColor = read_csv('https://raw.githubusercontent.com/IDR/idr-notebooks/master/includes/CMPOAccessionToPhenotypeCategories.csv')\n", "colors = {}\n", "for i, grp in enumerate(dfColor.CmpoPhenotypeCategory.unique()):\n", " colors[grp] = bpal.Set3_10[i % 10]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pass:CMPO_0000458\n", "pass:CMPO_0000390\n", "pass:CMPO_0000018\n", "pass:CMPO_0000446\n", "pass:CMPO_0000447\n", "pass:CMPO_0000444\n", "pass:CMPO_0000445\n", "pass:CMPO_0000442\n", "pass:CMPO_0000443\n", "pass:CMPO_0000440\n", "pass:CMPO_0000441\n", "pass:CMPO_0000450\n", "pass:CMPO_0000453\n", "pass:CMPO_0000454\n", "pass:CMPO_0000457\n", "pass:CMPO_0000113\n", "pass:CMPO_0000422\n", "pass:CMPO_0000023\n" ] } ], "source": [ "# add the information to the data and sort it\n", "for ph in phall.keys():\n", " try:\n", " v = dfColor['CmpoAcc'] == ph\n", " phall[ph]['group'] = dfColor[v]['CmpoPhenotypeCategory'].values[0]\n", " phall[ph]['groupColor'] = colors[phall[ph]['group']]\n", " phall[ph]['FigureCmpoName'] = dfColor[v]['FigureCmpoName'].values[0]\n", " except Exception:\n", " print('pass:'+ph)\n", " del phall[ph]\n", "\n", "phalls = sorted(phall.values(), key=lambda x: x['group'])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " var docs_json = {\"846d7532-a55b-4381-a284-fa21b5af2e31\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"column_names\":[\"color\",\"n\",\"groupName\",\"r\",\"names\",\"x\",\"ph\",\"desc\"],\"data\":{\"color\":[\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#fdb462\",\"#fdb462\",\"#bebada\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#ffffb3\",\"#fb8072\",\"#fb8072\",\"#fb8072\",\"#fb8072\",\"#fb8072\",\"#bebada\",\"#bebada\",\"#bebada\",\"#bebada\",\"#bebada\",\"#bebada\",\"#bebada\",\"#bebada\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#80b1d3\",\"#fccde5\",\"#fccde5\",\"#d9d9d9\",\"#8dd3c7\",\"#ffffb3\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#fdb462\",\"#b3de69\",\"#b3de69\",\"#b3de69\",\"#bebada\",\"#fccde5\",\"#fb8072\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#d9d9d9\",\"#80b1d3\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\",\"#b3de69\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#8dd3c7\",\"#fccde5\",\"#fccde5\",\"#d9d9d9\",\"#bc80bd\",\"#bc80bd\",\"#bc80bd\"],\"desc\":[\"fewer aggregated cells in population phenotype\",\"proliferating cells\",\"more lamellipodia cells\",\"more cells in M phase\",\"more multinucleate cells\",\"increased cell numbers\",\"decreased cell numbers\",\"increased cell size in population\",\"apoptotic DNA\",\"misshapen DNA\",\"cell adhesion phenotype\",\"increased number of microtubules phenotype\",\"decreased number of filopodia phenotype\",\"decreased number of microtubules phenotype\",\"increased amount of stress fibers phenotype\",\"increased number of microtubule bundle phenotype\",\"increased number of filopodia\",\"increased amount of zig-zag stress fibers\",\"increased amount of transverse stress fibers\",\"increased amount of stress fibers located in the cell cortex phenotype\",\"decreased duration of mitotic prophase phenotype\",\"metaphase arrested phenotype\",\"metaphase delayed phenotype\",\"abnormal mitotic cell cycle phase phenotype\",\"prometaphase arrested phenotype\",\"mitosis arrested\",\"increased duration of mitotic prophase phenotype\",\"mitosis delayed phenotype\",\"absence of mitotic chromosome decondensation phenotype\",\"abnormal cell cycle phenotype\",\"mitotic chromosome condensation phenotype\",\"prometaphase delayed phenotype\",\"mitotic metaphase plate congression phenotype\",\"cell death phenotype\",\"fan-shaped cell phenotype\",\"triangular shaped cell phenotype\",\"increased cell size phenotype\",\"abnormal cell shape phenotype\",\"star shaped cell phenotype\",\"geometric cell phenotype\",\"elongated cell phenotype\",\"cell with projections\",\"decreased cell size phenotype\",\"stubby cell phenotype\",\"pear-shaped cell phenotype\",\"curved cell phenotype\",\"S-shaped cell phenotype\",\"round cell phenotype\",\"apoptotic cell shape phenotype\",\"increased cell movement distance\",\"increased cell movement speed\",\"binuclear cell phenotype\",\"loss of cell monolayer\",\"no cells phenotype\",\"fewer cells with G1 phase microtubule arrays phenotype\",\"more cells with S phase microtubule arrays phenotype\",\"more cells with G1 phase microtubule arrays phenotype\",\"fewer cells with metaphase microtubule spindles phenotype\",\"more cells with interphase microtubule arrays phenotype\",\"fewer cells with interphase microtubule arrays phenotype\",\"increased variability of cell size in population\",\"layered cells in population\",\"more cells with metaphase microtubule spindles phenotype\",\"increased variability of cell shape in population\",\"increased variability of nuclear shape in population\",\"asymmetric lamellipodia phenotype\",\"decreased lamellipodia width phenotype\",\"fan-shaped lamellipodia phenotype\",\"cell response to DNA damage phenotype\",\"increased lamellipodia width phenotype\",\"abnormal chromosome segregation phenotype\",\"disorganized microtubules phenotype\",\"shortened cytoplasmic microtubules phenotype\",\"microtubules nuclear ring phenotype\",\"aggregated microtubules phenotype\",\"microtubules nuclear bracket phenotype\",\"decreased cortical actin cytoskeleton mass phenotype\",\"increased cortical actin cytoskeleton mass phenotype\",\"disorganised cortical actin cytoskeleton phenotype\",\"elongated cytoplasmic microtubules phenotype\",\"microtubule spindle morphology phenotype\",\"increased actin localised to the cytoplasm\",\"increased actin localised to the nucleus\",\"increased amount of punctate actin foci phenotype\",\"actin nuclear ring phenotype\",\"decreased number of actin filament phenotype\",\"increased number of actin filament phenotype\",\"abnormal microtubule cytoskeleton morphology during mitotic interphase\",\"increased microtubule-based processes phenotype\",\"abnormal nucleus shape phenotype\",\"bright nuclei phenotype\",\"graped micronucleus phenotype\",\"abnormal nucleus shape phenotype\",\"decreased nucleus size phenotype\",\"increased nucleus size phenotype\",\"increased level of polypetide in cell nucleus\",\"polylobed nuclear phenotype\",\"decreased level of polypetide in cell nucleus\",\"kinetochore phenotype\",\"protein localized in vacuolar membrane phenotype\",\"protein localized in punctate foci phenotype\",\"protein localized in vacuole phenotype\",\"protein localized in paraspeckle phenotype\",\"protein localized in PML body phenotype\",\"protein localized in Cajal body phenotype\",\"protein localized in nuclear speckle phenotype\",\"protein localized in nucleus phenotype\",\"protein localized in cell periphery phenotype\",\"protein localized in cytosol phenotype\",\"protein localized in bud neck phenotype\",\"protein localized in nuclear periphery phenotype\",\"protein localized in nucleolus phenotype\",\"protein localized in endoplasmic reticulum phenotype\",\"protein localized in mitochondrion phenotype\",\"protein localized in Sam68 nuclear body phenotype\",\"protein localized in polycomb body phenotype\",\"absence of protein localized in bud neck phenotype\",\"negative regulation of protein import into nucleus phenotype\",\"positive regulation of protein import into nucleus phenotype\",\"cellular response to chemical stimulus phenotype\",\"increased rate of protein secretion\",\"mild decrease in rate of protein secretion\",\"strong decrease in rate of protein secretion\"],\"groupName\":[\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"altered cell number in population\",\"cell DNA phenotype\",\"cell DNA phenotype\",\"cell adhesion phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell component number phenotype\",\"cell cycle phase phenotype\",\"cell cycle phase phenotype\",\"cell cycle phase phenotype\",\"cell cycle phase phenotype\",\"cell cycle phase phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell cycle phenotype\",\"cell death phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell morphology phenotype\",\"cell movement phenotype\",\"cell movement phenotype\",\"cell nucleation phenotype\",\"cell population layer phenotype\",\"cell population phenotype\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell population phenotype by morphology\",\"cell projection phenotype\",\"cell projection phenotype\",\"cell projection phenotype\",\"cell response to stress phenotype\",\"cellular component phenotype\",\"chromosome segregation phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"cytoskeletal phenotype\",\"increased microtubule-based processes phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"nuclear phenotype\",\"organelle phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"protein localization to cellular component phenotype\",\"regulation of process phenotype\",\"regulation of process phenotype\",\"response to stimulus phenotype\",\"transport phenotype\",\"transport phenotype\",\"transport phenotype\"],\"n\":[2189,317,98,64,372,8,1159,660,85,240,1305,32,68,20,225,238,251,281,265,332,176,1235,1118,17,155,1642,144,1642,26,1730,42,155,1730,2626,344,625,1499,2075,335,267,1878,1145,580,228,104,28,202,385,120,462,869,3204,723,24,260,20,419,40,290,409,84,14,10,598,2495,17,5,311,142,490,2193,136,449,107,91,71,45,303,416,205,92,117,133,383,74,390,244,2817,385,449,82,494,2606,139,1282,575,1743,466,1033,210,1731,211,24,38,17,27,3763,291,13149,314,231,453,845,1787,5,2,1,1045,144,320,1424,16672,17104],\"names\":[[\"idr0030-sero-yap/screenA\",\"idr0005-toret-adhesion/screenA\",\"idr0005-toret-adhesion/screenB\"],[\"idr0012-fuchs-cellmorph/screenA\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0033-rohban-pathways/screenA\",\"idr0036-gustafsdottir-compoundprofiling/screenA\"],[\"idr0012-fuchs-cellmorph/screenA\",\"idr0030-sero-yap/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0030-sero-yap/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0002-heriche-condensation/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0012-fuchs-cellmorph/screenA\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0002-heriche-condensation/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0033-rohban-pathways/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0033-rohban-pathways/screenA\",\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0001-graml-sysgro/screenA\",\"idr0007-srikumar-sumo/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0008-rohn-actinome/screenB\",\"idr0033-rohban-pathways/screenA\",\"idr0012-fuchs-cellmorph/screenA\",\"idr0001-graml-sysgro/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0033-rohban-pathways/screenA\",\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\",\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0012-fuchs-cellmorph/screenA\",\"idr0001-graml-sysgro/screenA\"],[\"idr0033-rohban-pathways/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0013-neumann-mitocheck/screenA\"],[\"idr0008-rohn-actinome/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0010-doil-dnadamage/screenA\",\"idr0004-thorpe-rad52/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0020-barr-chtog/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0001-graml-sysgro/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\"],[\"idr0030-sero-yap/screenA\"],[\"idr0012-fuchs-cellmorph/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0008-rohn-actinome/screenB\",\"idr0030-sero-yap/screenA\"],[\"idr0008-rohn-actinome/screenA\",\"idr0008-rohn-actinome/screenB\",\"idr0012-fuchs-cellmorph/screenA\",\"idr0013-neumann-mitocheck/screenA\",\"idr0030-sero-yap/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\"],[\"idr0013-neumann-mitocheck/screenB\",\"idr0013-neumann-mitocheck/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\"],[\"idr0011-ledesmafernandez-dad4/screenA\",\"idr0011-ledesmafernandez-dad4/screenB\",\"idr0011-ledesmafernandez-dad4/screenC\",\"idr0011-ledesmafernandez-dad4/screenD\",\"idr0011-ledesmafernandez-dad4/screenE\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0025-stadler-proteinatlas/screenA\",\"idr0003-breker-plasticity/screenA\",\"idr0006-fong-nuclearbodies/screenA\",\"idr0007-srikumar-sumo/screenA\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0025-stadler-proteinatlas/screenA\",\"idr0003-breker-plasticity/screenA\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0003-breker-plasticity/screenA\"],[\"idr0025-stadler-proteinatlas/screenA\",\"idr0003-breker-plasticity/screenA\",\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0025-stadler-proteinatlas/screenA\",\"idr0003-breker-plasticity/screenA\"],[\"idr0025-stadler-proteinatlas/screenA\",\"idr0003-breker-plasticity/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0006-fong-nuclearbodies/screenA\"],[\"idr0007-srikumar-sumo/screenA\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\"],[\"idr0028-pascualvargas-rhogtpases/screenB\",\"idr0028-pascualvargas-rhogtpases/screenD\",\"idr0028-pascualvargas-rhogtpases/screenA\",\"idr0028-pascualvargas-rhogtpases/screenC\"],[\"idr0036-gustafsdottir-compoundprofiling/screenA\"],[\"idr0009-simpson-secretion/screenA\"],[\"idr0009-simpson-secretion/screenA\"],[\"idr0009-simpson-secretion/screenA\",\"idr0009-simpson-secretion/screenB\"]],\"ph\":[\"fewer aggregated cells in population\",\"proliferating cells\",\"more lamellipodia cells\",\"more cells in M phase\",\"more multinucleate cells\",\"increased cell numbers\",\"decreased cell numbers\",\"increased cell size in population\",\"apoptotic DNA\",\"misshapen DNA\",\"cell adhesion\",\"increased number of microtubules\",\"decreased number of filopodia\",\"decreased number of microtubules\",\"increased amount of stress fibers\",\"increased number of microtubule bundle\",\"increased number of filopodia\",\"increased amount of zig-zag stress fibers\",\"increased amount of transverse stress fibers\",\"increased amount of stress fibers located in the cell cortex\",\"decreased duration of mitotic prophase\",\"metaphase arrested\",\"metaphase delayed\",\"abnormal mitotic cell cycle phase\",\"prometaphase arrested\",\"mitosis arrested\",\"increased duration of mitotic prophase\",\"mitosis delayed\",\"absence of mitotic chromosome decondensation\",\"abnormal cell cycle\",\"mitotic chromosome condensation\",\"prometaphase delayed\",\"mitotic metaphase plate congression\",\"cell death\",\"fan-shaped cell\",\"triangular shaped cell\",\"increased cell size\",\"abnormal cell shape\",\"star shaped cell\",\"geometric cell\",\"elongated cell\",\"cell with projections\",\"decreased cell size\",\"stubby cell\",\"pear-shaped cell\",\"curved cell\",\"S-shaped cell\",\"round cell\",\"apoptotic cell shape\",\"increased cell movement distance\",\"increased cell movement speed\",\"binuclear cell\",\"loss of cell monolayer\",\"no cells\",\"fewer cells with G1 phase microtubule arrays\",\"more cells with S phase microtubule arrays\",\"more cells with G1 phase microtubule arrays\",\"fewer cells with metaphase microtubule spindles\",\"more cells with interphase microtubule arrays\",\"fewer cells with interphase microtubule arrays\",\"increased variability of cell size in population\",\"layered cells in population\",\"more cells with metaphase microtubule spindles\",\"increased variability of cell shape in population\",\"increased variability of nuclear shape in population\",\"asymmetric lamellipodia\",\"decreased lamellipodia width\",\"fan-shaped lamellipodia\",\"cell response to DNA damage\",\"increased lamellipodia width\",\"abnormal chromosome segregation\",\"disorganized microtubules\",\"shortened cytoplasmic microtubules\",\"microtubules nuclear ring\",\"aggregated microtubules\",\"microtubules nuclear bracket\",\"decreased cortical actin cytoskeleton mass\",\"increased cortical actin cytoskeleton mass\",\"disorganised cortical actin cytoskeleton\",\"elongated cytoplasmic microtubules\",\"microtubule spindle morphology\",\"increased actin localised to the cytoplasm\",\"increased actin localised to the nucleus\",\"increased amount of punctate actin foci\",\"actin nuclear ring\",\"decreased number of actin filament\",\"increased number of actin filament\",\"abnormal microtubule cytoskeleton morphology during mitotic interphase\",\"increased microtubule-based processes\",\"round nucleus\",\"bright nuclei\",\"graped micronucleus\",\"abnormal nucleus shape\",\"decreased nucleus size\",\"increased nucleus size\",\"increased level of polypetide in cell nucleus\",\"polylobed nuclear\",\"decreased level of polypetide in cell nucleus\",\"kinetochore\",\"protein localized in vacuolar membrane\",\"protein localized in punctate foci\",\"protein localized in vacuole\",\"protein localized in paraspeckle\",\"protein localized in PML body\",\"protein localized in Cajal body\",\"protein localized in nuclear speckle\",\"protein localized in nucleus\",\"protein localized in cell periphery\",\"protein localized in cytosol\",\"protein localized in bud neck\",\"protein localized in nuclear periphery\",\"protein localized in nucleolus\",\"protein localized in endoplasmic reticulum\",\"protein localized in mitochondrion\",\"protein localized in Sam68 nuclear body\",\"protein localized in polycomb body\",\"absence of protein localized in bud neck\",\"negative regulation of protein import into nucleus\",\"positive regulation of protein import into nucleus\",\"cellular response to chemical stimulus\",\"increased rate of protein secretion\",\"mild decrease in rate of protein secretion\",\"strong decrease in rate of protein secretion\"],\"r\":[3,2,1,1,2,1,4,2,1,1,1,2,1,1,2,1,1,1,1,1,1,3,2,1,1,2,1,2,1,2,1,1,2,1,4,5,8,2,2,1,8,5,8,1,1,1,1,8,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,1,2,2,1,1,2,1,1,2,2,1,1,2,2,2,1,2,3,1,2,1,1,2,2,2,5,4,2,4,5,1,1,1,1,1,1,1,4,1,2,1,1,3,2,2,1,1,1,4,4,1,1,1,2],\"x\":[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244]}},\"id\":\"6d22b814-59cc-4925-9155-77dddb58a2eb\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"radius\":{\"field\":\"r\",\"units\":\"data\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"n\"}},\"id\":\"2e0077d6-a110-4bf5-8752-01b719b12369\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"27f46906-b1c0-430f-be68-fb9e64975b53\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"ecc93f23-978f-4a9e-9f6a-609b8cbb1724\",\"type\":\"LogTickFormatter\"},\"plot\":{\"id\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fe2968af-dea6-40d7-93ee-369c99d2fe72\",\"type\":\"LogTicker\"}},\"id\":\"db0ddefd-6f22-4e06-9c50-537ef276f39b\",\"type\":\"LogAxis\"},{\"attributes\":{},\"id\":\"05210765-135b-4522-a6ed-165e6fba4b5a\",\"type\":\"PanTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"05210765-135b-4522-a6ed-165e6fba4b5a\",\"type\":\"PanTool\"},{\"id\":\"eb292302-aa53-49a3-84c7-a65aec076ee2\",\"type\":\"WheelZoomTool\"},{\"id\":\"a14fe551-eef4-49ad-99ed-0f401bd31cfd\",\"type\":\"ResetTool\"},{\"id\":\"572a9eb7-37e8-47bb-bc22-83c288a17bac\",\"type\":\"HoverTool\"}]},\"id\":\"a5733c9d-b3ae-466c-abab-46b80c9241de\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"line_color\":{\"field\":\"color\"},\"radius\":{\"field\":\"r\",\"units\":\"data\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"n\"}},\"id\":\"6e9b14a4-a921-4a2a-a97e-a15b3e623217\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"73e8d10d-202f-48d8-b551-6d9ef0757b9a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label_text_font_size\":{\"value\":\"10pt\"},\"formatter\":{\"id\":\"9cfbbb1e-4dc8-4e83-a2e3-ac5eb4ca1781\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":0.7853981633974483,\"plot\":{\"id\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"73e8d10d-202f-48d8-b551-6d9ef0757b9a\",\"type\":\"BasicTicker\"}},\"id\":\"e7d8ea48-4cb0-4e52-b3d9-792cca515027\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"a81819f7-0411-4def-9330-7fec4d81395a\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"6d22b814-59cc-4925-9155-77dddb58a2eb\",\"type\":\"ColumnDataSource\"}},\"id\":\"aaea3c1b-52e5-4459-a06f-d366fcd899f4\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"a34f45a4-b494-463f-b802-068a15b627f7\",\"type\":\"LogScale\"},{\"attributes\":{\"data_source\":{\"id\":\"6d22b814-59cc-4925-9155-77dddb58a2eb\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"6e9b14a4-a921-4a2a-a97e-a15b3e623217\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2e0077d6-a110-4bf5-8752-01b719b12369\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"aaea3c1b-52e5-4459-a06f-d366fcd899f4\",\"type\":\"CDSView\"}},\"id\":\"00a63ecc-1a24-45a3-b8c3-41149aa8d4ba\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"73e8d10d-202f-48d8-b551-6d9ef0757b9a\",\"type\":\"BasicTicker\"}},\"id\":\"7c6a013d-9973-4aab-9628-347968b3890c\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Term\",\"@ph\"],[\"Description\",\"@desc\"],[\"Number of samples\",\"@n\"],[\"Screens name\",\"@names\"],[\"group\",\"@groupName\"]]},\"id\":\"572a9eb7-37e8-47bb-bc22-83c288a17bac\",\"type\":\"HoverTool\"},{\"attributes\":{\"num_minor_ticks\":10},\"id\":\"fe2968af-dea6-40d7-93ee-369c99d2fe72\",\"type\":\"LogTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"e7a47427-701f-47b6-8f86-9305751ce1f3\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"9cfbbb1e-4dc8-4e83-a2e3-ac5eb4ca1781\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"e7d8ea48-4cb0-4e52-b3d9-792cca515027\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"db0ddefd-6f22-4e06-9c50-537ef276f39b\",\"type\":\"LogAxis\"}],\"plot_width\":900,\"renderers\":[{\"id\":\"e7d8ea48-4cb0-4e52-b3d9-792cca515027\",\"type\":\"LinearAxis\"},{\"id\":\"7c6a013d-9973-4aab-9628-347968b3890c\",\"type\":\"Grid\"},{\"id\":\"db0ddefd-6f22-4e06-9c50-537ef276f39b\",\"type\":\"LogAxis\"},{\"id\":\"fc0732d1-8028-4a22-8ee9-4f91ea035d60\",\"type\":\"Grid\"},{\"id\":\"00a63ecc-1a24-45a3-b8c3-41149aa8d4ba\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"2ccaa313-9129-40b2-8100-d73f9a8432f7\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"a5733c9d-b3ae-466c-abab-46b80c9241de\",\"type\":\"Toolbar\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"27f46906-b1c0-430f-be68-fb9e64975b53\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"a81819f7-0411-4def-9330-7fec4d81395a\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"e7a47427-701f-47b6-8f86-9305751ce1f3\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"a34f45a4-b494-463f-b802-068a15b627f7\",\"type\":\"LogScale\"}},\"id\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"eb292302-aa53-49a3-84c7-a65aec076ee2\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"a14fe551-eef4-49ad-99ed-0f401bd31cfd\",\"type\":\"ResetTool\"},{\"attributes\":{\"ticker\":null},\"id\":\"ecc93f23-978f-4a9e-9f6a-609b8cbb1724\",\"type\":\"LogTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"Fig 1\"},\"id\":\"2ccaa313-9129-40b2-8100-d73f9a8432f7\",\"type\":\"Title\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fe2968af-dea6-40d7-93ee-369c99d2fe72\",\"type\":\"LogTicker\"}},\"id\":\"fc0732d1-8028-4a22-8ee9-4f91ea035d60\",\"type\":\"Grid\"}],\"root_ids\":[\"fab25230-ab40-4d68-b039-e6ea8809b01e\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.11\"}};\n", " var render_items = [{\"docid\":\"846d7532-a55b-4381-a284-fa21b5af2e31\",\"elementid\":\"ec713a69-00a7-4861-bac1-cb73f5c46939\",\"modelid\":\"fab25230-ab40-4d68-b039-e6ea8809b01e\"}];\n", " root.Bokeh.embed.embed_items(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to embed document because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "fab25230-ab40-4d68-b039-e6ea8809b01e" } }, "output_type": "display_data" } ], "source": [ "TOOLS = \"pan,wheel_zoom,reset\"\n", "\n", "phenotypes = figure(title=\"Fig 1\",\n", " tools=TOOLS,\n", " y_axis_type=\"log\",\n", " width=900,\n", " toolbar_location=\"above\")\n", "\n", "source = ColumnDataSource(\n", " data=dict(\n", " ph=[ph['FigureCmpoName'] for ph in phalls],\n", " n=[ph['n'] for ph in phalls],\n", " names=[ph['screens'] for ph in phalls],\n", " desc=[ph['desc'] for ph in phalls],\n", " x=[2*x for x in range(len(phall.keys()))],\n", " r=[1*len(ph['screens']) for ph in phalls],\n", " color=[ph['groupColor'] for ph in phalls],\n", " groupName=[ph['group'] for ph in phalls]\n", " ))\n", "\n", "label_data = {2*i: x for i, x in\n", " enumerate([ph['FigureCmpoName'] for ph in phalls])}\n", "cir = phenotypes.circle('x', 'n', radius='r', source=source, color='color')\n", "\n", "\n", "hover = HoverTool(\n", " tooltips=[\n", " (\"Term\", \"@ph\"),\n", " (\"Description\", \"@desc\"),\n", " (\"Number of samples\", \"@n\"),\n", " (\"Screens name\", \"@names\"),\n", " (\"group\", \"@groupName\")\n", " ]\n", " )\n", "\n", "phenotypes.add_tools(hover)\n", "phenotypes.xaxis.major_label_orientation = np.pi/4.\n", "phenotypes.xaxis.axis_label_text_font_size = \"10pt\"\n", "show(phenotypes)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### License (BSD 2-Clause)ΒΆ \n", "Copyright (C) 2016-2021 University of Dundee. All Rights Reserved.\n", "\n", "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n", "\n", "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }