{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Abstract\n", "\n", "**Author:** [Charles Tapley Hoyt](https://github.com/cthoyt)\n", "\n", "**Estimated Run Time:** 5 minutes\n", "\n", "This notebooks outlines the process of generating unbiased candidate mechanisms and comparing them to the dogmatic mechanisms from the [NeuroMMSig Knowledge Base](http://neurommsig.scai.fraunhofer.de/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Notebook Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import logging\n", "import itertools as itt\n", "import os\n", "import time\n", "from collections import defaultdict\n", "from operator import itemgetter\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "from matplotlib_venn import venn2\n", "\n", "import pybel\n", "import pybel_tools as pbt\n", "from pybel.canonicalize import calculate_canonical_name\n", "from pybel.constants import *\n", "from pybel_tools.visualization import to_jupyter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#%config InlineBackend.figure_format = 'svg'\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Notebook Provenance\n", "\n", "The time of execution, random number generator seed, and the versions of the software packegs used are displayed explicitly." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Sun Aug 27 12:16:43 2017'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time.asctime()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# seed the random number generator\n", "import random\n", "random.seed(127)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.7.3-dev'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pybel.__version__" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.2.2-dev'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pbt.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Local Path Definitions\n", "\n", "To make this notebook interoperable across many machines, locations to the repositories that contain the data used in this notebook are referenced from the environment, set in `~/.bashrc` to point to the place where the repositories have been cloned. Assuming the repositories have been `git clone`'d into the `~/dev` folder, the entries in `~/.bashrc` should look like:\n", "\n", "```bash\n", "...\n", "export BMS_BASE=~/dev/bms\n", "...\n", "```\n", "\n", "#### BMS \n", "\n", "The biological model store (BMS) is the internal Fraunhofer SCAI repository for keeping BEL models under version control. It can be downloaded from https://tor-2.scai.fraunhofer.de/gf/project/bms/" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "bms_base = os.environ['BMS_BASE']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Alzheimer's Disease Knowledge Assembly\n", "\n", "The Alzheimer's Disease knowledge assembly has been precompiled with the following command line script, and will be loaded from this format for improved performance. In general, derived data, such as the gpickle representation of a BEL script, are not saved under version control to ensure that the most up-to-date data is always used.\n", "\n", "```sh\n", "pybel convert --path \"$BMS_BASE/aetionomy/alzheimers.bel\" --pickle \"$BMS_BASE/aetionomy/alzheimers.gpickle\"\n", "```\n", "\n", "The BEL script can also be compiled from inside this notebook with the following python code:\n", "\n", "```python\n", ">>> import os\n", ">>> import pybel\n", ">>> # Input from BEL script\n", ">>> bel_path = os.path.join(bms_base, 'aetionomy', 'alzheimers.bel')\n", ">>> graph = pybel.from_path(bel_path)\n", ">>> # Output to gpickle for fast loading later\n", ">>> pickle_path = os.path.join(bms_base, 'aetionomy', 'alzheimers.gpickle')\n", ">>> pybel.to_pickle(graph, pickle_path)\n", "```" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pickle_path = os.path.join(bms_base, 'aetionomy', 'alzheimers', 'alzheimers.gpickle')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "graph = pybel.from_pickle(pickle_path)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'4.0.3'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph.version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary of Subgraphs and Biological Processes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The unique values for the subgraph annotation are extracted and counted." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "subgraph_names = sorted(pbt.summary.get_annotation_values(graph, 'Subgraph'))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "128" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(subgraph_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The biological process nodes are retrieved with [pbt.filters.get_nodes_by_function](http://pybel-tools.readthedocs.io/en/latest/filters.html#pybel_tools.filters.get_nodes_by_function) and counted." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "bioprocess_nodes = sorted(pbt.filters.get_nodes_by_function(graph, BIOPROCESS))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "401" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(bioprocess_nodes)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The BEL graph object is split to multiple BEL graph objects representing each of the subgraphs with [pbt.selection.get_subgraphs_by_annotation](http://pybel-tools.readthedocs.io/en/latest/selection.html#pybel_tools.selection.get_subgraphs_by_annotation)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "subgraphs = pbt.selection.get_subgraphs_by_annotation(graph, 'Subgraph')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Biological Processes and Dogmatic Subgraphs\n", "\n", "This section investigates the questions: which biological processess appear in multiple subgraphs, and which subgraphs contain multiple biological processes?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Asking which bioprocesses appear in multiple subgraphs allow us to investigate their upstream controllers. In a knowledge discovery scenario, this could provide evidence of cross-talk." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "bp2sg = defaultdict(set)\n", "\n", "for name, subgraph in subgraphs.items():\n", " for bp in pbt.filters.get_nodes_by_function(subgraph, BIOPROCESS):\n", " bp2sg[bp].add(name)\n", " \n", "bp2sg = dict(bp2sg)\n", "\n", "bp2sg_counts = pbt.utils.count_dict_values(bp2sg)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sg2bp = {\n", " name: set(pbt.filters.get_nodes_by_function(subgraph, BIOPROCESS))\n", " for name, subgraph in subgraphs.items()\n", "}\n", "\n", "sg2bp_counts = pbt.utils.count_dict_values(sg2bp)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, (lax, rax), = plt.subplots(1, 2, figsize=(10, 3))\n", "\n", "lax.set_title('Promiscuity of Biological Processes')\n", "lax.set_ylabel('Frequency')\n", "lax.set_xlabel('Subgraphs in which a biological process appears')\n", "lax.hist(list(bp2sg_counts.values()), log=True)\n", "\n", "rax.set_title('Subgraph Specificity')\n", "rax.set_ylabel('Frequency')\n", "rax.set_xlabel('Member biological processes of a subgraph')\n", "rax.hist(list(sg2bp_counts.values()), log=True)\n", "\n", "plt.tight_layout()\n", "plt.savefig(os.path.join(os.path.expanduser('~'), 'Desktop', 'sg_comparison.pdf'))\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The top 25 most frequently biological processes are shown below." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "43 GOBP apoptotic process\n", "32 GOBP neuron death\n", "31 GOBP neuron apoptotic process\n", "26 GOBP cell death\n", "25 GOBP cognition\n" ] } ], "source": [ "for bp, count in bp2sg_counts.most_common(5):\n", " print('{:2} {:6} {}'.format(count, graph.node[bp][NAMESPACE], graph.node[bp][NAME]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The top 25 highest biological-process dense subgraphs are shown below." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "88 Amyloidogenic subgraph\n", "58 Insulin signal transduction\n", "43 Tau protein subgraph\n", "39 Inflammatory response subgraph\n", "35 Non-amyloidogenic subgraph\n" ] } ], "source": [ "for name, count in sg2bp_counts.most_common(5):\n", " print('{:2} {}'.format(count, name))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Annotation Landscape\n", "\n", "The landscape of biological processes' membership to dogmatic subgraphs is shown below.\n", "\n", "The biological process to dogmatic subgraph membership matrix is calculated, clustered, and plotted below." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sg_bp_membership = defaultdict(dict)\n", "sg_bp_membership_bool = defaultdict(dict)\n", "\n", "for name, bp in itt.product(subgraph_names, bioprocess_nodes):\n", " sg_bp_membership_bool[name][bp] = bp in sg2bp[name]\n", " sg_bp_membership[name][bp] = 1 if bp in sg2bp[name] else 0\n", " \n", "sg_bp_membership = dict(sg_bp_membership)\n", "sg_bp_membership_bool = dict(sg_bp_membership_bool)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Generated Unbiased Subgraphs\n", "\n", "Each subgraph annotation in the NeuroMMSig Database comes from a specific domain of study. While these subgraphs attempt to describe groups of related, dogmatic pathways and are helpful for communicating ideas, they are a discretization of the continuous and inseperable biological system. In this section, we will generate more, smaller candidate subgraphs with an unbiased approach in hopes of providing a more thorough overview of the individual mechanisms in the hollistic system and their interplay or \"cross-talk\". Later, we'll use that information to assess the overlap between dogmatic mechanisms and bridge the gaps between them." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The candidate mechanisms themselves are generated with [pbt.generation.generate_bioprocess_mechanisms](http://pybel-tools.readthedocs.io/en/latest/generation.html#pybel_tools.generation.generate_bioprocess_mechanisms) by expanding to the upstream controllers around each biological process." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 2.9 s, sys: 50.1 ms, total: 2.95 s\n", "Wall time: 2.97 s\n" ] } ], "source": [ "%%time\n", "candidate_mechanisms = pbt.generation.generate_bioprocess_mechanisms(graph)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title('Histogram of Candidate Mechanism Sizes')\n", "plt.xlabel('Number Nodes')\n", "plt.ylabel('Frequency')\n", "plt.hist([cm.number_of_nodes() for cm in candidate_mechanisms.values()], log=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overlap Summary\n", "\n", "The Tversky similarity is calculated between the nodes contained in each candidate mechanism versus each dogmatic subgraph. It is weighted to calculate what percentage of the nodes in a candidate mechanism with $\\alpha=1$ and $\\beta=0$." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.65 s, sys: 53.5 ms, total: 5.7 s\n", "Wall time: 5.75 s\n" ] } ], "source": [ "%%time\n", "\n", "sg_bp_overlap = defaultdict(dict)\n", "\n", "for name, bp in itt.product(subgraphs, bioprocess_nodes):\n", " x = set(pbt.filters.get_nodes_by_function(candidate_mechanisms[bp], {PROTEIN, BIOPROCESS}))\n", " y = set(subgraphs[name].nodes_iter())\n", " \n", " sg_bp_overlap[name][bp] = pbt.utils.set_percentage(x, y)\n", " \n", "sg_bp_overlap = dict(sg_bp_overlap)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "overlap_df = pd.DataFrame(sg_bp_overlap)\n", "overlap_df.to_csv(os.path.expanduser('~/Desktop/subgraph_comparison.csv'))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n3P8DG6xQm+IQKqgAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title('A Histogram of Pairwise Overlap')\n", "plt.xlabel('Tversky Similarity ($\\alpha = 1$ and $\\beta = 0$)')\n", "plt.ylabel('Frequency')\n", "plt.hist(overlap_df.as_matrix().ravel(), log=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The landscape of overlaps between unbiased candidate mechanisms and dogmatic subgraphs is shown below." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "overlap_matrix = overlap_df.as_matrix()\n", "cg = sns.clustermap(overlap_matrix, figsize=(10, 7))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.savefig(os.path.join(os.path.expanduser('~'), 'Desktop', 'sg_overlaps.pdf'))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The overlap similarity matrix is discretized with a cutoff and displayed below." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "overlap_cutoff = 0.3" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "overlap_matrix_discrete = overlap_cutoff < overlap_matrix" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nvR1zVHr93pnDazfVYz7QcGG5flrXJvFagqAKwDim1NsxR+d6aMZtSrSpHvPoiv1TkThHZe5UXHXZ\nO4IqAMCqlIKS3zWzNwt3F6vUlyvWF2+faryk7Og5Kgvr1PXIVSXHdzEZeuezKMwBQRUAYG2KPX21\nZSCa8rSKJtTr1mSIOTT7mPtzVl7YvgoAAAC2IagCAADoAMN/AABglcIUd5J01d1vpSyrQk8VAABY\nnRAoXXf3Y0kHZnYQu6x2m+4+TOsBAAAmyMw+cvfLbZYVMfy3Qp/7wpefRdK//OmfdrLNL37pG8/+\nX9xmcfk2TY+L3WZ5f2KfP/ZxTet19Vo2taPNa9v2NWnaTsoxiDXV/enDVJ67j+fve/uYr6bPhqbP\nuqZ1t33efP6VjTWuIMnMbkq60WbZhW1Nuadq5hNjTk5+qeunPzuJOuhdfXE2vQG6+MDt4ku87f7E\nmlIgsNYvvT5+QPQh9sdF2ZDtGvq5sT5dvV+/8I8u35B0VFh0393vl9czs/clve3uZ6nLzm1n16Cq\n58DnUj6v1wDPtXipQVVbfffeND1fijY9Y333wuxizN6PunZIw/dAdS2lXbHnx1T2bZvY98GaevrQ\nj65+qJc19VTluVHu/sjM7kp6LOk4Zpm736vaZhfDf72V+K8oGFauIjtkkPUlST8d6LkmL/YXdMov\n7djHdfUhyodxP5b2uqbsz5r3fUhTbRdm51DSo/D/PUkfJCyrNPWcqqelwOpS6f7B5mxaUi9Z7C/t\npsBm6B6bPnJ4Yp9v7F/ldVLyu2J/2U1l36Tuj+uU9m3ueC3Rtb5+LH/2ycdNq9+X9F0zO5Ikd39g\nZnsxy+o2OOmgqjxXkJm90xRkTSDwoTdr4eb4ZTLHNgNA30Je1P02y+pMOqgqqwiybpdWGXW28QkE\ndTtr+gJuk1vUVX5NW2175WIek/JcXeniCsmpBllTbVcXptrbuQ25S6jTx0UzRW1zWVO/O1ILfZrZ\nzbp8KqmbRPXKCSaHUBHEkNjeoJioHlMCYZchpPz+qi/+fFnx/7sqPl9du6va3Ofl5Ntey7o2D3EV\nV90xiD0mXR67uVnzvrc11rnehOM4H6lJ7MXz7bNPPm5KVM+Let4wsx9LuiVpv7zM3R8V1r/l7ldr\ntznnoKpsW5BVs85q5MepqU5VF0FV3WP60vbXzpD1efou2QBM1di9u5i/XUYuYupUSXGFPmOCqlkN\n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\nKQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.clustermap(overlap_matrix_discrete , figsize=(10, 7))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Concordance Calculations\n", "\n", "Next, biological processes whose candidate mechanisms have significant overlap with dogmatic subgraphs are annotated to those subgraphs." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#: Keeps track of which biological processes have large overlap with a dogmatic mechanism, but wasn't in it\n", "sg_added = {}\n", "sg_bp_cutoff_member = defaultdict(dict)\n", "\n", "for name in subgraph_names:\n", " sg_added[name] = set()\n", " for bp in bioprocess_nodes:\n", " \n", " concordance = overlap_cutoff < sg_bp_overlap[name][bp]\n", " \n", " sg_bp_cutoff_member[name][bp] = concordance\n", " \n", " if bp not in sg2bp[name] and concordance:\n", " sg_added[name].add(bp)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.xlabel('Number of biological processes added to dogmatic subgraph')\n", "plt.ylabel('Frequency')\n", "plt.hist([len(v) for v in sg_added.values()], log=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarity values between the set of added biological processes and the set of contained biological processes for each dogmatic mechanism are calculated. \n", "\n", "Higher similarity means that this approach has lower potential for asserting subgraph expansions, so the values are subtracted from one to preserve monotonicity and improve interpretability." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sg_concordance = {}\n", "\n", "for name in subgraphs:\n", " x = sg_added[name]\n", " y = {bp for bp in bioprocess_nodes if sg_bp_cutoff_member[name][bp]}\n", " \n", " sg_concordance[name] = 1 - pbt.utils.tanimoto_set_similarity(x, y)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nGt/yfuHYdxpC7u6tB6pl5Lut48bK6zqYVY8XOW+3/TysWozPYwpaewLXKuRzfLj7tGKAyI7CqDl3\nPwrbDpV9Y+iFbfeVzQrYVzbd8aS8X0jqQKHyhdbHpjT7qWNhaoFeIf1r+QvHeSnpu7DubWn/G+mE\nr9aTkN/itpXr83yH7rBrZQ15ucxTOI/l8uRTP+fneVw8bkh75iC6inLn1+Ey3ZCfPK95WYrnqcn5\n3pX0bShnT2Ga36rzXDOY6DJdST/oZl2Z5XjW9uVBdlXXozCSc2Y9rki79hqXRoNWHifsd7l9+XNS\nPucz6mCT61z+zE3D+meS9t39ouJ6z/s8XqsvFee5bN/dv7HwPIvCALkbdb2mDOe6WZ+u5bmuLlad\n74r8LYe7r9U/ZV07e8qmdh2GC7WnbP4ahfV74fWHwn4HhW0Owt+T8LeXryvvl6cZ/vYLxz4pv1+V\n1/C3Ln+n4e9Gab8b6YSyDirer1xfzle5rMrmQxnOyf+H8v4Ny1X7fl264boOJe0W9r3V+S6e2/J5\nrslTOd1rdaW03JuzfGP7mrzeqHszzueHqmPMu8azrueMPNz4nBS2r6uDi1znYprvisedcb3rPo/X\nrltFeW9ch/xY5XOkiro+owzF+jS3jha2n3l9lvlvXbt6Ju4+9mya4nwiq7yVNVX1xFY9SRuhJZ5P\nErXQFLB+NX3sYMF96/I3Cce91hVUk87jmjTr1pdd28ZD66nQUqxSzNe0oktt3nm/8f6cdB/n2/vV\nXPS3Od/l/BbPc1Wer6Wrm3XltbJW9YmyD3t5ed72VarK06Qez7LoOaravupzkqura4tc5+L+xW9G\nG7e43uXrVtbkOuRu1PUZZbisTw3znNfF1qacXtfAX1Z8KElPVxNbXUiX3S4flX3lmmj+w46L+10K\nX2c3/eprW9O+xrr8VapJ50TV89LXrZ8plG0c/gOt68ooflg2KrabV64b789J9zTf3sw2bnG+i/nd\nrClXVZ6vpaubdWXg7vuezSszqFiet31TTerxXTQ5zqzPSV1dW/Q6V5pxvevyXb5uZVXXIQ/w5bp0\no643KcOMPDepi9GsVR9/3m8u6ZmZHectZXffN7M9M5OuP7h4Gvrbxp71xe2Z2WY4lnT1aLuBpL6Z\nbYRjXu4X3u+HCzoNrwcK/ZyhwvWt9FDlwn6DqvzlfX3l/fJ8l9PxrO/w8hjKWjKjuvXhPOX57pXL\nqqw19KOZTUN6r8vfPHTVktlQeEJS8XzUlCt/v193XczspJhunldlraqXYfvK81B3voN82uadcCyV\nz/OMPB3k6ZbriqQnhTwdlfJ4FILErO2vCXmqqntz63HpOMW6eeMaF+qzyseZkYdy2S/TnFEHm17n\nnVKag5D3b5S1ht+pdL3DvpWfx5DXgxnnuuo6fCzU6UE4Tp7Gtbru2W8eVWUo1r8bdTSsu1YXZ5zv\nKDd+MEkbKln2o9jIsx/UepJeegszQcZM18zeufuzZRwLd7Oq+rVMdynDquviWrX4sVQTZS2eC2Wt\nnLYGl0RJt9Cyz1twWK1V1a9lulUZ7kNdpMUPAIlJ5cddAEBA4AeAxBD4ASAxBH4ASAyBHwASQ+AH\ngMT8P1YjKNmhMW4UAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.ylabel('Frequency')\n", "plt.xlabel('Potential for adding biological processes not in the dogmatic subgraph')\n", "plt.hist(list(sg_concordance.values()))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The similarity values correspond to which dogmatic subgraphs have the highest potential for expansion, with higher values corresponding to higher potential." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.00 Neurotransmitter release subgraph\n", "1.00 Nucleoside salvage subgraph\n", "1.00 Beta-Oxidation of Fatty Acids\n", "1.00 Galanin subgraph\n", "1.00 Myeloperoxidase subgraph\n", "1.00 p53 stabilization subgraph\n", "1.00 Smad subgraph\n", "1.00 Glycolysis subgraph\n", "1.00 Disaccharide metabolism subgraph\n", "1.00 XIAP subgraph\n", "1.00 RhoA subgraph\n", "1.00 Protein biosynthesis subgraph\n", "1.00 Protein degradation subgraph\n", "1.00 Dopaminergic subgraph\n", "1.00 Alcohol dehydrogenase subgraph\n", "1.00 LRRK2 subgraph\n", "1.00 Syndecan subgraph\n", "0.83 Blood vessel dilation subgraph\n", "0.83 Serotonergic subgraph\n", "0.67 Reelin signaling subgraph\n", "0.67 KANSL1 subgraph\n", "0.67 CREB subgraph\n", "0.60 DKK1 subgraph\n", "0.50 Low density lipoprotein subgraph\n", "0.50 Metabolism of steroid hormones subgraph\n", "0.50 Retinoblastoma subgraph\n", "0.50 Cell-cell communication subgraph\n", "0.50 Vitamin subgraph\n", "0.48 Tau protein subgraph\n", "0.47 Unfolded protein response subgraph\n", "0.45 Synaptic vesicle endocytosis subgraph\n", "0.44 Electron transport chain\n", "0.44 Phosphatidylinositol 3 subgraph\n", "0.43 Immunoglobulin subgraph\n", "0.42 Insulin signal transduction\n", "0.42 Amyloidogenic subgraph\n", "0.40 T cells signaling\n", "0.40 Hydrogen peroxide subgraph\n", "0.40 GABA subgraph\n", "0.40 Albumin subgraph\n", "0.39 Cyclin-CDK subgraph\n", "0.38 Androgen subgraph\n", "0.37 Glutamatergic subgraph\n", "0.36 Bcl-2 subgraph\n", "0.36 Cell cycle subgraph\n", "0.36 Inflammatory response subgraph\n", "0.35 Chemokine signaling subgraph\n", "0.35 Regulation of cytoskeleton subgraph\n", "0.33 Response to oxidative stress\n", "0.33 Calcium-dependent signal transduction\n", "0.33 Lipid metabolism subgraph\n", "0.33 Vascular endothelial growth factor subgraph\n", "0.33 Synapse assembly subgraph\n", "0.33 Innate immune system subgraph\n", "0.33 Peroxisome proliferator activated receptor subgraph\n", "0.33 CRH subgraph\n", "0.33 Axonal guidance subgraph\n", "0.33 Wnt signaling subgraph\n", "0.33 Leptin subgraph\n", "0.33 Glucagon subgraph\n", "0.33 Paroxetine subgraph\n", "0.32 Acetylcholine signaling subgraph\n", "0.32 Endosomal lysosomal subgraph\n", "0.32 Ubiquitin degradation subgraph\n", "0.31 Neuroprotection subgraph\n", "0.31 Cell adhesion subgraph\n", "0.31 Autophagy signaling subgraph\n", "0.30 APOE subgraph\n", "0.30 Cholesterol metabolism subgraph\n", "0.29 Cytokine signaling subgraph\n", "0.29 Gamma secretase subgraph\n", "0.29 Mitochondrial translocation subgraph\n", "0.29 Sphingolipid metabolic subgraph\n", "0.29 Glutathione reductase subgraph\n", "0.28 Nitric oxide subgraph\n", "0.27 Matrix metalloproteinase subgraph\n", "0.27 Notch signaling subgraph\n", "0.27 MAPK-ERK subgraph\n", "0.25 DYRK1A subgraph\n", "0.25 Hypoxia response subgraph\n", "0.25 TGF-Beta subgraph\n", "0.24 Caspase subgraph\n", "0.23 Non-amyloidogenic subgraph\n", "0.22 Axonal transport subgraph\n", "0.22 Interleukin signaling subgraph\n", "0.22 Calpastatin-calpain subgraph\n", "0.21 Reactive oxygen species subgraph\n", "0.21 Chaperone subgraph\n", "0.20 Tumor necrosis factor subgraph\n", "0.20 Nerve growth factor subgraph\n", "0.20 Toll like receptor subgraph\n", "0.20 ATP binding cassette transport subgraph\n", "0.20 Estrogen subgraph\n", "0.18 MAPK-JNK subgraph\n", "0.18 Akt subgraph\n", "0.17 Apoptosis signaling subgraph\n", "0.17 GSK3 subgraph\n", "0.17 Synuclein subgraph\n", "0.16 miRNA subgraph\n", "0.14 JAK-STAT signaling subgraph\n", "0.13 NMDA receptor\n", "0.11 mTOR signaling subgraph\n", "0.09 Free radical formation subgraph\n", "0.08 Binding and Uptake of Ligands by Scavenger Receptors\n", "0.08 Interferon signaling subgraph\n", "0.07 ADAM Metallopeptidase subgraph\n", "0.07 Beta secretase subgraph\n", "0.03 Nuclear factor Kappa beta subgraph\n", "0.00 Calsyntenin subgraph\n", "0.00 Lipid peroxidation subgraph\n", "0.00 Neurotrophic subgraph\n", "0.00 Alpha 2 macroglobulin subgraph\n", "0.00 Endothelin subgraph\n", "0.00 Prostaglandin subgraph\n", "0.00 G-protein-mediated signaling\n", "0.00 Plasminogen activator subgraph\n", "0.00 Eicosanoids signaling subgraph\n", "0.00 AD T2DM SNPs\n", "0.00 Endoplasmic reticulum-Golgi protein export\n", "0.00 Response DNA damage\n", "0.00 DNA synthesis\n", "0.00 Complement system subgraph\n", "0.00 Energy metabolic subgraph\n", "0.00 Gap junctions subgraph\n", "0.00 Beta-Catenin subgraph\n", "0.00 Cortisol subgraph\n", "0.00 Renin-angiotensin subgraph\n", "0.00 Amylin subgraph\n" ] } ], "source": [ "for dm, concordance in sorted(sg_concordance.items(), key=itemgetter(1), reverse=True):\n", " print('{:.2f} {}'.format(concordance, dm))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conclusions\n", "\n", "Generating unbiased candidate mechanism subgraphs ultimately provides similar insight as painstakingly curated subgraphs. It is also possible to identify high novelty in candidate mechanisms that have little overlap with curated subgraphs and high scores in data driven approaches." ] } ], "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.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }