Raw File
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Epilepsy Comorbidity Analysis using SCAIView\n",
    "\n",
    "#### This notebook contains the Quantification of gene overlap comparing Epilepsy with other disorders using text mining\n",
    "\n",
    "##### Authors: Daniel Domingo-Fernández and Charles Tapley Hoyt\n",
    "\n",
    "Following, the set of queries used in this analysis\n",
    "\n",
    "Reference queries:\n",
    "\n",
    "- [MeSH Disease:\"Epilepsy\"]\n",
    "- [MeSH Disease:\"Alzheimer Disease\"]\n",
    "- [MeSH Disease:\"Tuberculosis\"]\n",
    "- [MeSH Disease:\"Parkinson Disease\"]\n",
    "- [MeSH Disease:\"Dementia\"]\n",
    "- [MeSH Disease:\"Migraine Disorders\"]\n",
    "- [MeSH Disease:\"Diabetes Mellitus\"]\n",
    "- [MeSH Disease:\"Colonic Neoplasms\"]\n",
    "- [MeSH Disease:\"Pulmonary Disease Chronic Obstructive\"]\n",
    "- [MeSH Disease:\"Peptic Ulcer\"]\n",
    "- [MeSH Disease:\"Anxiety Disorders\"]\n",
    "- [MeSH Disease:\"Urinary Incontinence\"]\n",
    "- [MeSH Disease:\"Cataract\"]\n",
    "- [MeSH Disease:\"Hypertension\"]\n",
    "- [MeSH Disease:\"Arthritis\"]\n",
    "\n",
    "\n",
    "Queries used for calculating pleitropy rates\n",
    "\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Alzheimer Disease\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Parkinson Disease\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Dementia\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Migraine Disorders\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Diabetes Mellitus\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Colonic Neoplasms\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Pulmonary Disease Chronic Obstructive\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Anxiety Disorders\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Urinary Incontinence\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Cataract\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Hypertension\"]\n",
    "- [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Arthritis\"]\n",
    "\n",
    "\n",
    "The queries were retrieved using SCAIView version 1.7.3\n",
    "Corresponding to the indexing of MEDLINE on 2016-07-14T13:50:07.797575Z.\n",
    "\n",
    "*Note that the reference queries might take time since thousand of articles need to be analyzed.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Notebook results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Disease* | *Reference Query* | *Number of documents* | *Genes associated with the disease*| *Gene set size* | *Normalized pleitropy rate (%)*\n",
    "--- | --- | ---\n",
    "*Alzheimer's disease* | `[MeSH Disease:\"Alzheimer Disease\"]` | `109495` | `4968` | `396` | `13.65`\n",
    "*Migraine* | `[MeSH Disease:\"Migraine Disorders\"]` | `30928`| `1230` | `306` | `10.54`\n",
    "*Parkinson's disease* | `[MeSH Disease:\"Parkinson Disease\"]` | `79103` | `3646 ` | `258` | `8.89`\n",
    "*Hypertension* | `[MeSH Disease:\"Hypertension\"]` | `391190`| `5574` | `252` | `8.68`\n",
    "*Dementia* | `[MeSH Disease:\"Dementia\"]` | `183802` | `5833` |`220` | `7.58`\n",
    "*Diabetes* | `[MeSH Disease:\"Diabetes Mellitus\"]` | `394411` | `6661` | `184` | `6.34`\n",
    "*Anxiety* | `[MeSH Disease:\"Anxiety Disorders\"]` | `84138`| `1782 ` | `124` | `4.27`\n",
    "*Arthritis* | `[MeSH Disease:\"Arthritis\"]` | `259327`| `5367` | `122` | `4.20`\n",
    "*Cataracts* | `[MeSH Disease:\"Cataract\"]` | `52150`| `2238` | `119` | `4.10`\n",
    "*Colon cancer* | `[MeSH Disease:\"Colonic Neoplasms\"]` | `107274` | `3646` | `30` | `1.03`\n",
    "*Urinary incontinence* | `[MeSH Disease:\"Urinary Incontinence\"]` | `34170`| `720` | `24` | `0.82`\n",
    "*Peptic ulcers* | `[MeSH Disease:\"Peptic Ulcer\"]` | `68234`| `1445` | `21` | `0.72`\n",
    "*COPD* | `[MeSH Disease:\"Pulmonary Disease Chronic Obstructive\"]` | `35627`| `2244` | `15` | `0.51`\n",
    "\n",
    "\n",
    "#### Table 1. Results of the Epilepsy Comorbidity Analysis using SCAIView. \n",
    "\n",
    "Description of each column:\n",
    "\n",
    "Column 1. Disease.\n",
    "\n",
    "Column 2. Reference query for the disease.\n",
    "\n",
    "Column 3. Number of documents retrieved using the disease reference query.\n",
    "\n",
    "Column 4. Total number of genes found in the corpus retrieved with the reference query for the disease.\n",
    "\n",
    "Column 5. Number of genes with a relative entropy greater than 0 retrieved from a query containing the disease of interest and epilepsy. An example for diabetes would use the following query: [MeSH Disease:\"Epilepsy\"] AND [MeSH Disease:\"Diabetes Mellitus\"] and the corpus would contain articles that mention Epilepsy and Diabetes. The relative entropy is calculated using the occurrence of genes/proteins within this query and comparing with their occurrence in MEDLINE.\n",
    "\n",
    "Column 6. Normalized pleitropy rate. Overlap of genes in comparison with the Epilepsy geneset (total of 2901 genes) containing genes with a relative entropy greater than 0 using the Epilepsy reference query [MeSH Disease:\"Epilepsy\"] (192245 documents)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import csv\n",
    "import os\n",
    "from matplotlib import pyplot as plt\n",
    "from matplotlib_venn import venn3, venn2\n",
    "import numpy as np\n",
    "import scipy.stats as stats\n",
    "import seaborn as sns\n",
    "import pandas as pd\n",
    "from operator import itemgetter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Load resources"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "current_path = os.getcwd() # Notebook abs path\n",
    "resources_path = os.path.join(current_path, \"resources\")\n",
    "results_path = os.path.join(current_path, \"results\")\n",
    "\n",
    "# Import the results from the combined queries (epilepsy + comorbidity)\n",
    "\n",
    "#### International Classification of Diseases (ICD) groups from Keezer et al., 2016 \n",
    "#### (https://www.ncbi.nlm.nih.gov/pubmed/26549780)\n",
    "\n",
    "# Epilepsy reference query\n",
    "epilepsy_path = os.path.join(resources_path, 'epilepsy.csv')\n",
    "\n",
    "comorbidities = []\n",
    "\n",
    "# ICD chapter II: neoplasms\n",
    "comorbidities.append((\"Colon cancer\", os.path.join(resources_path, 'colon_cancer_epilepsy.csv'))) # since neoplasms is a general term, we have chosen a common type of cancer\n",
    "\n",
    "# ICD chapter IV: endocrine, nutritional, and metabolic diseases\n",
    "comorbidities.append((\"Diabetes\", os.path.join(resources_path, 'diabetes_epilepsy.csv'))) \n",
    "\n",
    "# ICD chapter V: mental and behavioural disorders\n",
    "comorbidities.append((\"Anxiety\", os.path.join(resources_path, 'anxiety_epilepsy.csv'))) \n",
    "\n",
    "# ICD chapter VI: nervous system\n",
    "comorbidities.append((\"Alzheimer's disease\", os.path.join(resources_path, 'alzheimers_epilepsy.csv'))) \n",
    "comorbidities.append((\"Parkinson's disease\", os.path.join(resources_path, 'parkinson_epilepsy.csv'))) # parkinson's is included since we have a Knowledge Assembly\n",
    "comorbidities.append((\"Migraine\", os.path.join(resources_path, 'migraine_epilepsy.csv'))) \n",
    "comorbidities.append((\"Dementia\", os.path.join(resources_path, 'dementia_epilepsy.csv'))) \n",
    "\n",
    "# ICD chapter VII: eye and adnexa\n",
    "comorbidities.append((\"Cataracts\", os.path.join(resources_path, 'cataracts_epilepsy.csv'))) \n",
    "\n",
    "# ICD chapter IX: circulary system\n",
    "comorbidities.append((\"Hypertension\", os.path.join(resources_path, 'hypertension_epilepsy.csv'))) \n",
    "\n",
    "# ICD chapter X: respiratory system\n",
    "comorbidities.append((\"Pulmonary Disease Chronic Obstructive\", os.path.join(resources_path, 'copd_epilepsy.csv')))  # Pulmonary Disease Chronic Obstructive\n",
    "\n",
    "# ICD chapter XI:digestive system\n",
    "comorbidities.append((\"Peptic ulcers\", os.path.join(resources_path, 'peptic_ulcer_epilepsy.csv')))  # Pulmonary Disease Chronic Obstructive\n",
    "\n",
    "# ICD chapter XIII: musculoskeletal system and connective tissues\n",
    "comorbidities.append((\"Arthritis\", os.path.join(resources_path, 'arthritis_epilepsy.csv')))  \n",
    "\n",
    "# ICD chapter XIV: genitourinary system\n",
    "comorbidities.append((\"Urinary incontinence\", os.path.join(resources_path, 'urinary_incontinence_epilepsy.csv')))  \n",
    "\n",
    "# Result table\n",
    "result_table = os.path.join(results_path, 'gene_overlap_results.tsv')\n",
    "result_df = pd.DataFrame.from_csv(result_table, sep='\\t')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Parsing result files from SCAIView\n",
    "\n",
    "First column structure: Common Name;Internal Identifier;Relative Entropy;Reference Entity Count;Entity Count;Query Entity Count;\n",
    "\n",
    "HGNC names and relative entropy greater than 0 will only be extracted\n",
    "\n",
    "It seems to be a problem with the structure of the exported csv file because pandas is not able to import it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def parser_scaiview_csv(path):\n",
    "    \n",
    "    gene_dict = {}\n",
    "\n",
    "    with open(path, \"r\") as f:\n",
    "        reader = csv.reader(f, delimiter=\"\\t\")\n",
    "        for i, line in enumerate(reader):\n",
    "            \n",
    "            line = [\n",
    "                word\n",
    "                for word in line[0].split(';')\n",
    "            ]\n",
    "                        \n",
    "            # Skip the header (csv structure is corrupt)\n",
    "            # Only take into consideration genes whose relative entropy score is greater than 0\n",
    "            if i == 0 or float(line[2]) < 0:\n",
    "                continue\n",
    "            \n",
    "            # Populate {Gene: Relative entropy dictionary}           \n",
    "            gene_dict[line[0]] = line[2]\n",
    "            \n",
    "    return gene_dict\n",
    "\n",
    "def print_results(disease, reference_disease, size_geneset, size_reference):\n",
    "    \"\"\" Print the results\n",
    "    :param disease str: disease name\n",
    "    :param reference_disease str: reference disease to compare\n",
    "    :param size_geneset int: number of genes in query disease + reference\n",
    "    :param size_reference int: number of genes found in reference query\n",
    "    \"\"\"\n",
    "    \n",
    "    print('{} + {} results: geneset size {} - pleitropy rate: {}\\n'.format(\n",
    "    disease,\n",
    "    reference_disease,\n",
    "    size_geneset,\n",
    "    size_geneset/size_reference\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Overlap between genesets with epilepsy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reference Epilepsy geneset size 2901 \n",
      "\n",
      "Pleitropy rates \n",
      "\n",
      "Alzheimer's disease + Epilepsy results: geneset size 396 - pleitropy rate: 0.13650465356773525\n",
      "\n",
      "Migraine + Epilepsy results: geneset size 306 - pleitropy rate: 0.10548086866597725\n",
      "\n",
      "Parkinson's disease + Epilepsy results: geneset size 258 - pleitropy rate: 0.0889348500517063\n",
      "\n",
      "Hypertension + Epilepsy results: geneset size 252 - pleitropy rate: 0.08686659772492245\n",
      "\n",
      "Dementia + Epilepsy results: geneset size 220 - pleitropy rate: 0.07583591864874181\n",
      "\n",
      "Diabetes + Epilepsy results: geneset size 184 - pleitropy rate: 0.0634264046880386\n",
      "\n",
      "Anxiety + Epilepsy results: geneset size 124 - pleitropy rate: 0.04274388142019993\n",
      "\n",
      "Arthritis + Epilepsy results: geneset size 122 - pleitropy rate: 0.04205446397793864\n",
      "\n",
      "Cataracts + Epilepsy results: geneset size 119 - pleitropy rate: 0.041020337814546705\n",
      "\n",
      "Colon cancer + Epilepsy results: geneset size 30 - pleitropy rate: 0.010341261633919338\n",
      "\n",
      "Urinary incontinence + Epilepsy results: geneset size 24 - pleitropy rate: 0.008273009307135471\n",
      "\n",
      "Peptic ulcers + Epilepsy results: geneset size 21 - pleitropy rate: 0.007238883143743537\n",
      "\n",
      "Pulmonary Disease Chronic Obstructive + Epilepsy results: geneset size 15 - pleitropy rate: 0.005170630816959669\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Disease - geneset size pairs\n",
    "disease_geneset = [\n",
    "    (disease, len(parser_scaiview_csv(path)))\n",
    "    for disease, path in comorbidities\n",
    "]\n",
    "\n",
    "sorted_diseases = sorted(disease_geneset, key=lambda x: x[1], reverse=True)\n",
    "\n",
    "# Reference set for epilepsy\n",
    "epilepsy_geneset = parser_scaiview_csv(epilepsy_path)\n",
    "    \n",
    "print('Reference Epilepsy geneset size {} \\n'.format(len(epilepsy_geneset)))\n",
    "\n",
    "print('Pleitropy rates \\n')\n",
    "\n",
    "for disease, geneset in sorted_diseases:\n",
    "    print_results(disease, 'Epilepsy', geneset, len(epilepsy_geneset.keys()))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Supplementary analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### Overlap between Alzheimer's,  migraine and Parkinson's queries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb7f42eb2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4,4))\n",
    "alzheimers_epilepsy_geneset = parser_scaiview_csv(os.path.join(resources_path, 'alzheimers_epilepsy.csv'))\n",
    "migraine_epilepsy_geneset = parser_scaiview_csv(os.path.join(resources_path, 'migraine_epilepsy.csv'))\n",
    "parkinsons_epilepsy_geneset = parser_scaiview_csv(os.path.join(resources_path, 'parkinson_epilepsy.csv'))\n",
    "\n",
    "v = venn3(\n",
    "    [alzheimers_epilepsy_geneset.keys(),migraine_epilepsy_geneset.keys(), parkinsons_epilepsy_geneset.keys()],\n",
    "    set_labels = (\"Alzheimers's\", 'Migraine',\"Parkinson's\")\n",
    ")\n",
    "plt.title(\"Comorbidity analysis by comparing literature gene overlap\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Distributions of the geneset relative entropies\n",
    "\n",
    "Explanation about the calculation of relative entropies can be found in:\n",
    "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3541249/\n",
    "\n",
    "Relative entropy (p1, p2) = p1 * log (p1/p2)\n",
    "\n",
    "Where p1 is the number of abstracts containing the entity in the query selected corpus and p2 denotes the total number of documents in which the entity occurs within an unspecific reference corpus (i.e. the entire Medline). The Kullback–Leibler divergence ranks those entities high, which have especially high frequency in the selected corpus in comparison to the unspecific reference corpus. This means that frequently occurring entities do not receive high ranks. For example, using the query “ ‘Alzheimer’s Disease’ AND ‘Evidence marker’ AND ‘Human Genes/Proteins’ ”, we retrieved 331 abstracts containing IL1B with a frequency ranking of 10. Conversely, according to the relative entropy formula, IL1B has an entropy rank of 34 despite its high occurrence in Medline (i.e. 40685 abstracts)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Check the distribution of relative entropies in each query"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb7f425f780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Relative entropies as strings to integers\n",
    "h = [\n",
    "    entropy\n",
    "    for entropy in map(float, alzheimers_epilepsy_geneset.values())\n",
    "    if entropy > 0\n",
    "]\n",
    "\n",
    "plt.title('Alzheimers + Epilepsy Query')\n",
    "sns.distplot(h)\n",
    "plt.show()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
back to top