{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reproducing Fig. 1\n", "\n", "This notebook exemplifies how to reproduce Figure 1 of the article. The annotations from all screens will be downloaded and parsed to build statistics on phenotypes, which will be displayed using Bokeh." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dependencies\n", "\n", " * [Matplotlib](https://matplotlib.org/)\n", " * [NumPy](https://www.numpy.org/)\n", " * [Pandas](https://pandas.pydata.org/)\n", " * [Bokeh](https://bokeh.pydata.org/)" ] }, { "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": [ "import omero\n", "from idr import connection\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from pandas import DataFrame\n", "from pandas import concat\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.plotting import save\n", "from bokeh.models.formatters import TickFormatter\n", "from bokeh.models.formatters import String\n", "from bokeh.models.formatters import List\n", "from bokeh.models.formatters import Dict\n", "from bokeh.models.formatters import Int\n", "from bokeh.models import FixedTicker\n", "from bokeh.models import HoverTool\n", "import bokeh.palettes as bpal\n", "\n", "output_notebook()\n", "%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", "\n", " column_names = [col.name for col in table.getHeaders()]\n", "\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) 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", "\n", " except Exception as e: \n", "# print(e)\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()" ] }, { "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, 251, 803, 1351, 1501, 1551, 1601, 1602, 1603, 1202, 1101, 1302, 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 (see [paper](https://www.nature.com/articles/nmeth.4326))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dfColor = read_csv('./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", " phall[ph]['group'] = dfColor[dfColor['CmpoAcc']==ph]['CmpoPhenotypeCategory'].values[0]\n", " phall[ph]['groupColor'] = colors[phall[ph]['group']]\n", " phall[ph]['FigureCmpoName'] = dfColor[dfColor['CmpoAcc']==ph]['FigureCmpoName'].values[0]\n", " \n", " except:\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 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\n", "\n", "Copyright (C) 2016 University of Dundee. All Rights Reserved.\n", "\n", "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n", "\n", "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." ] } ], "metadata": { "kernelspec": { "display_name": "OMERO Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 1 }