diff --git a/Replicating_Phenomizer_Results/Replicating_Phenomizer_Results.ipynb b/Replicating_Phenomizer_Results/Replicating_Phenomizer_Results.ipynb new file mode 100644 index 0000000..8ff6363 --- /dev/null +++ b/Replicating_Phenomizer_Results/Replicating_Phenomizer_Results.ipynb @@ -0,0 +1,3289 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The goal of this notebook is to replicate Phenomizer results in the paper \"Wikidata as a FAIR knowledge graph for the life sciences\"\n", + "Notes:
\n", + "1) Set up a python virual environment and make sure required softwares are installed. You can do do this in terminal by running `pip install -r requirements.txt`
\n", + "* Wikidata integrator: https://github.com/SuLab/WikidataIntegrator
\n", + "* Requirements: https://github.com/SuLab/Wikidata-phenomizer/blob/master/Replicating_Phenomizer_Results/requirements.txt
\n", + "\n", + "2) Download \"Wikidata_phenomizer_input_modifier.py\" from github link:
\n", + "* Python script: https://github.com/SuLab/Wikidata-phenomizer/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py
\n", + "\n", + "\n", + "3) Install BOQA: https://github.com/sulab/boqa
\n", + "\n", + "4) Download hpo.obo files (you can do that in this notebook)
\n", + "5) Download phenotype_annotation.tab files (you can do this in this notebook)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The following steps are done to manipulate the data for BOQA analysis:\n", + "* Download `hpo.obo` and `phenotype_annotation.tab` files.\n", + "* Generate `phenotype_annotation_wd.tab` files (essentially `phenotype_annotation.tab` files with wikidata items appended at the end).\n", + "* Rename each file `DBname` to those found in build 1266. (Makes analysis more consistent).\n", + "* Run BOQA\n", + "* Extract text from BOQA\n", + "* Graph!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import libraries required." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Downloading the annotation_files and obo_files." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer\r\n" + ] + } + ], + "source": [ + "!pwd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# create a directory to download annotation files to.\n", + "!mkdir _annotation_files\n", + "os.chdir(\"_annotation_files\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Download `phenotype_annotation.tab` builds from human phenotype ontology Jenkin's servers." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# From Jenkins, Download all `phenotype_annotation.tab` files\n", + "phenotype_annotation_ls = ['1266','1265','1264','1263','1262',\n", + " '1259','1254','1252','1249','1248',\n", + " '1246','1241','1239','1237']\n", + "\n", + "for a_file in phenotype_annotation_ls:\n", + " curCount = phenotype_annotation_ls.index(a_file) # gets index from the list\n", + " fileName = \"http://compbio.charite.de/jenkins/job/hpo.annotations/\" + a_file +\"/artifact/misc/phenotype_annotation.tab\"\n", + " !wget $fileName -q\n", + " reName = 'pa_b' + phenotype_annotation_ls[curCount] + \".tab\"\n", + " !mv phenotype_annotation.tab $reName" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Change out (up) of this directory, create a new directory, and change into (down) that directory." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Get out of current directory, create a new directory, change into the new directory.\n", + "os.chdir(\"..\")\n", + "!mkdir _obo_files\n", + "os.chdir(\"_obo_files\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Download old `hpo.obo` builds from Bioportal into the newly created folder." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# From Bioportal, download `hp.obo` files\n", + "obo_ls = ['577','576','575','574','573',\n", + " '572','571','570','569','568',\n", + " '567','566','564', '563']\n", + "\n", + "for a_file in obo_ls:\n", + " curCount = obo_ls.index(a_file) # gets index from the list\n", + " fileName = \"http://data.bioontology.org/ontologies/HP/submissions/\" + a_file + \"/download?apikey=8b5b7825-538d-40e0-9e9e-5ab9274a9aeb\"\n", + " !wget $fileName -q\n", + " reName = 'hp_b' + phenotype_annotation_ls[curCount] + \".obo\"\n", + " !mv download?apikey=8b5b7825-538d-40e0-9e9e-5ab9274a9aeb $reName\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Fix phenotype_annotation.tab builds 1248, 1249, 1252 and 1254 because they have extra columns..." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# fix build 1248, 1249, 1252 and 1254 because it has 15 columns vs 14 (why?!?!)\n", + "os.chdir(\"..\")\n", + "os.chdir(\"_annotation_files\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3020: DtypeWarning: Columns (3,7,11,14) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " interactivity=interactivity, compiler=compiler, result=result)\n" + ] + } + ], + "source": [ + "# read to a dictionary, manipulate files with pandas\n", + "\n", + "toFix = ['b1248', 'b1249', 'b1252', 'b1254']\n", + "toFix_dict = dict()\n", + "\n", + "for item in toFix:\n", + " key = item\n", + " value = pd.read_csv(\"pa_\" + item + \".tab\", header = None, sep = \"\\t\")\n", + " toFix_dict.update({key:value})\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#*If you want to visualize the dataframe before column switching, convert this from markdown → code.*
\n", + "`for item in toFix:\n", + " display(toFix_dict[item].head())`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 12 13 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 12 13 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 12 13 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROME2013-05-29HPO:skoehlerNaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 12 13 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME 2013-05-29 HPO:skoehler NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for item in toFix:\n", + " display(toFix_dict[item].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Concatenate col 13 and 12 as 'cat', remove col 13 and 12, and reorder indices.\n", + "for item in toFix:\n", + " df = toFix_dict[item]\n", + " df['cat'] = df[13] + \"[\" + df[12] + \"]\"\n", + " del df[12]\n", + " del df[13]\n", + " value = df[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,'cat' , 14]]\n", + " toFix_dict.update({item:value})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#*If you want to visualize the dataframe after column switching.*
\n", + "\n", + "` for item in toFix:\n", + " display(toFix_dict[item].head()) `" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011cat14
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 cat 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011cat14
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 cat 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011cat14
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 cat 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011cat14
0DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0000252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
1DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001249DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
2DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001250DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
3DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001252DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
4DECIPHER1Wolf-Hirschhorn SyndromeNaNHP:0001518DECIPHER:1IEANaNNaNNaNOWOLF-HIRSCHHORN SYNDROMEHPO:skoehler[2013-05-29]NaN
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0000252 DECIPHER:1 IEA \n", + "1 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001249 DECIPHER:1 IEA \n", + "2 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001250 DECIPHER:1 IEA \n", + "3 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001252 DECIPHER:1 IEA \n", + "4 DECIPHER 1 Wolf-Hirschhorn Syndrome NaN HP:0001518 DECIPHER:1 IEA \n", + "\n", + " 7 8 9 10 11 cat 14 \n", + "0 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "1 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "2 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "3 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN \n", + "4 NaN NaN NaN O WOLF-HIRSCHHORN SYNDROME HPO:skoehler[2013-05-29] NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for item in toFix:\n", + " display(toFix_dict[item].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Export merged files.\n", + "for item in toFix:\n", + " df = toFix_dict[item]\n", + " df.to_csv(\"pa_\" + item + \".tab\", sep = '\\t', header = None)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Congrats! You've downloaded the both the datasets and fixed the files that had too many columns. \n", + "Next we'll explore utilizing Phenomizer. Phenomizer (Su Lab) is a program that takes a `phenotype_annotation.tab` file, queries wikidata for all OMIM entries and appends them to the phenotype_annotation, and returns the file as a `phenotype_annotation_wd.tab` file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Get `Wikidata_phenomizer_input_modifier.py` from github to the folder that holding your `_annotation_files`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2019-10-09 17:52:08-- https://raw.githubusercontent.com/turoger/Wikidata-phenomizer/master/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.196.133\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.196.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 3742 (3.7K) [text/plain]\n", + "Saving to: ‘Wikidata_phenomizer_input_modifier.py’\n", + "\n", + "Wikidata_phenomizer 100%[===================>] 3.65K --.-KB/s in 0s \n", + "\n", + "2019-10-09 17:52:09 (58.0 MB/s) - ‘Wikidata_phenomizer_input_modifier.py’ saved [3742/3742]\n", + "\n" + ] + } + ], + "source": [ + "!wget https://raw.githubusercontent.com/turoger/Wikidata-phenomizer/master/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/_annotation_files\r\n" + ] + } + ], + "source": [ + "!pwd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Run phenomizer to generate wikidata + HPO `_wd.tab` files." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 131600\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3200\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "NGLY1-deficiency 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 146171\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3173\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 160275\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 274\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 68\n", + "lung cancer 28\n", + "Parkinson disease 20\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 11\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 172366\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 285\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG 68\n", + "lung cancer 28\n", + "Parkinson disease 20\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 11\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "LUNG CANCER 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 150177\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 252\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 143508\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3175\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 158239\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 274\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG 68\n", + "lung cancer 28\n", + "Parkinson disease 20\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 11\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 165700\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 280\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 68\n", + "lung cancer 28\n", + "Parkinson disease 20\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 11\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "LUNG CANCER 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 145453\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3175\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 12\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 151695\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 259\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 12\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 159162\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 283\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG 68\n", + "lung cancer 28\n", + "Parkinson disease 20\n", + "type 2 diabetes mellitus 12\n", + "BEHCET SYNDROME 11\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 129155\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3253\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG;;CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 63\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "%613065 LEUKEMIA, ACUTE LYMPHOBLASTIC; ALLLEUKEMIA, ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;ALL1, INCLUDED;;LEUKEMIA, ACUTE LYMPHOCYTIC, SUSCEPTIBILITY TO, 1, INCLUDED;;LEUKEMIA, B-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, T-CELL ACUTE LYMPHOBLASTIC, SUSCEPTIBILITY TO, INCLUDED;;LEUKEMIA, ACUTE LYMPHOBLASTIC, B-HYPERDIPLOID, SUSCEPTIBILITY TO,INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "Name: DB_Name, dtype: int64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 128603\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3253\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "#615273 CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG;;CONGENITAL DISORDER OF GLYCOSYLATION, TYPE Iv; CDG1V;;CDG Iv; CDGIv 63\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "#154700 MARFAN SYNDROME; MFS;;MARFAN SYNDROME, TYPE I; MFS1 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n", + "/home/rogertu/Phenomizer/Phen_env/lib/python3.6/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " sort=sort)\n", + "number of hpo annotations: 147417\n", + "number of wikidata annotations: 418\n", + "number overlap annotations: 3177\n", + "\n", + "top unique disease-phenotypes in wd:\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION 70\n", + "lung cancer 28\n", + "Parkinson disease 24\n", + "BEHCET SYNDROME 12\n", + "type 2 diabetes mellitus 12\n", + "MAJOR AFFECTIVE DISORDER 2 7\n", + "LYMPHOBLASTIC LEUKEMIA, ACUTE, WITH LYMPHOMATOUS FEATURES 7\n", + "LUNG CANCERALVEOLAR CELL CARCINOMA, INCLUDED 7\n", + "MAJOR AFFECTIVE DISORDER 1 7\n", + "#266600 INFLAMMATORY BOWEL DISEASE 1; IBD1REGIONAL ENTERITIS, INCLUDED;;CROHN DISEASE, INCLUDED;;ULCERATIVE COLITIS, INCLUDED;;CROHN DISEASE-ASSOCIATED GROWTH FAILURE, SUSCEPTIBILITY TO, INCLUDED 7\n", + "Name: DB_Name, dtype: int64\n" + ] + } + ], + "source": [ + "for item in os.listdir():\n", + " if item.endswith(\".tab\"):\n", + " !python3 Wikidata_phenomizer_input_modifier.py $item" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pa_b1237_wd.tab pa_b1248_wd.tab pa_b1259_wd.tab pa_b1265_wd.tab\r\n", + "pa_b1239_wd.tab pa_b1249_wd.tab pa_b1262_wd.tab pa_b1266_wd.tab\r\n", + "pa_b1241_wd.tab pa_b1252_wd.tab pa_b1263_wd.tab\r\n", + "pa_b1246_wd.tab pa_b1254_wd.tab pa_b1264_wd.tab\r\n" + ] + } + ], + "source": [ + "!ls *_wd.tab" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Next, change all names in each file to that of build 1266. If you don't do this, the naming is inconsistent between each build over time, which gives erroneous results in BOQA." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Column labels\n", + "tab_colnames = ['DB', 'DB_Object_ID', 'DB_Name', 'Qualifier', 'HPO_ID', 'DB_Reference',\n", + " 'Evidence_Code', 'Onset modifier', 'Frequency', 'Sex', 'Modifier',\n", + " 'Aspect', 'Date_Created', 'Assigned_By']" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Import items into a dictionary for unmodified files and wdmodified files\n", + "unmod_ls = []\n", + "unmod_dict = dict()\n", + "disease_label = dict()\n", + "\n", + "wdmod_ls = []\n", + "wdmod_dict = dict()\n", + "\n", + "for item in os.listdir():\n", + " \n", + " if not item.endswith(\"_wd.tab\") and item.startswith(\"pa\"):\n", + " unmod_ls.append(item)\n", + " value = pd.read_csv(item, delimiter = \"\\t\", names=tab_colnames, dtype=str)\n", + " unmod_dict.update({item:value})\n", + " disease_label.update({item:dict(zip(value.DB_Reference, value.DB_Name))})\n", + " \n", + " elif item.endswith(\"_wd.tab\") and item.startswith(\"pa\"):\n", + " wdmod_ls.append(item)\n", + " value = pd.read_csv(item, delimiter = \"\\t\", names=tab_colnames, dtype=str)\n", + " wdmod_dict.update({item:value})" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Change labels for unmodified and wd modified files to build 1266\n", + "# Takes generated dictionary in previous(pd_dict), and change all names to labels found in b1266.\n", + "\n", + "b1266_unmod_dict = dict()\n", + "b1266_wdmod_dict = dict()\n", + "for item in unmod_ls:\n", + " df = unmod_dict[item]\n", + " df['DB_Name_hpo'] = df.DB_Reference.map(disease_label[\"pa_b1266.tab\"].get)\n", + " df['DB_Name'] = df.DB_Name_hpo.combine_first(df.DB_Name)\n", + " b1266_unmod_dict.update({item:df})\n", + " \n", + "for item in wdmod_ls:\n", + " df = wdmod_dict[item]\n", + " df['DB_Name_hpo'] = df.DB_Reference.map(disease_label[\"pa_b1266.tab\"].get)\n", + " df['DB_Name'] = df.DB_Name_hpo.combine_first(df.DB_Name)\n", + " b1266_wdmod_dict.update({item:df})" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Export files named appropriately\n", + "\n", + "for item in unmod_ls:\n", + " df = b1266_unmod_dict[item]\n", + " df[tab_colnames].to_csv(item, sep=\"\\t\", header=False, index=False)\n", + " \n", + "for item in wdmod_ls:\n", + " df = b1266_wdmod_dict[item]\n", + " df[tab_colnames].to_csv(item, sep=\"\\t\", header=False, index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Run BOQA on unmodified and modified files." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/rogertu/Phenomizer/boqa\r\n" + ] + } + ], + "source": [ + "# Run BOQA for each set\n", + "hpo_ids=\"HP:0001263,HP:0001252,HP:0000522,HP:0012804,HP:0000559,HP:0011968,HP:0009830,HP:0001265,HP:0002167,HP:0000970,HP:0040129\"\n", + "os.chdir(\"/home/rogertu/Phenomizer/boqa/\") # Note, you need to change into the directory you installed boqa in\n", + "!pwd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# First create adict to map your keys to obo files\n", + "obo_Path = \"/home/rogertu/Phenomizer/_obo_files/\" # Note, you need to pick where your obo_files are\n", + "ann_Path = \"/home/rogertu/Phenomizer/_annotation_files/\" # Note, you need to pick where your annotation_tab files are\n", + "annobo_Dict = dict()\n", + "\n", + "for fname in os.listdir(ann_Path):\n", + " if fname.startswith(\"pa\") and not fname.endswith(\"_wd.tab\"):\n", + " splitted = fname.split(\".\")\n", + " name = splitted[0]\n", + " annobo_Val = obo_Path + \"hp_\" + name[3:8] + \".obo\"\n", + " annobo_Key = ann_Path + fname\n", + " \n", + " annobo_Dict.update({annobo_Key:annobo_Val})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#*check if your dictionary is mapped properly. You'd want your `ann_Path:obo_Path` id's to match correspondingly.*
\n", + "\n", + "```annobo_Dict```" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# Create dictionary for obo files with \"_wd\"\n", + "annobo_Dict2 = dict()\n", + "\n", + "for fname in os.listdir(ann_Path):\n", + " if fname.endswith(\"_wd.tab\"):\n", + " splitted = fname.split(\".\")\n", + " name = splitted[0]\n", + " annobo_Val = obo_Path + \"hp_\" + name[3:8] +\".obo\"\n", + " annobo_Key = ann_Path + fname\n", + " \n", + "\n", + " annobo_Dict2.update({annobo_Key:annobo_Val})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#*check if your dictionary is mapped properly. You'd want your `ann_Path2:obo_Path` id's to match correspondingly.*
\n", + "\n", + "```annobo_Dict2```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Run BOQA on Unmodified and Wdmodified files, pipe the standard out and error to a text file." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pa_b1237.tab\n", + "pa_b1239.tab\n", + "pa_b1241.tab\n", + "pa_b1246.tab\n", + "pa_b1248.tab\n", + "pa_b1249.tab\n", + "pa_b1252.tab\n", + "pa_b1254.tab\n", + "pa_b1259.tab\n", + "pa_b1262.tab\n", + "pa_b1263.tab\n", + "pa_b1264.tab\n", + "pa_b1265.tab\n", + "pa_b1266.tab\n" + ] + } + ], + "source": [ + "# BOQA Unmodified, pipe output to a file named unmod.txt\n", + "directory = ann_Path\n", + "\n", + "for filename in sorted(os.listdir(directory)):\n", + "\n", + " if filename.startswith(\"pa\") and not filename.endswith(\"_wd.tab\"): \n", + " print(filename)\n", + " filePath = os.path.join(directory, filename)\n", + " filePathStr = ('\"'+filePath+'\"') # Takes path obtained, adds quotes\n", + " hp_obo = (annobo_Dict[filePath]) # Pass a Key into annobo_Dict, recieve a value and add quotes\n", + " \n", + " # make sure you choose the right path to output your result text files.\n", + " runThis = !java -jar target/boqa-0.0.3-SNAPSHOT.jar -hpo {hpo_ids} -obo {hp_obo} -af {filePathStr} -n 10 &>> /home/rogertu/Phenomizer/_annotation_files/unmod.txt\n", + " runThis\n", + " continue\n", + " \n", + " else:\n", + " continue" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pa_b1237_wd.tab\n", + "pa_b1239_wd.tab\n", + "pa_b1241_wd.tab\n", + "pa_b1246_wd.tab\n", + "pa_b1248_wd.tab\n", + "pa_b1249_wd.tab\n", + "pa_b1252_wd.tab\n", + "pa_b1254_wd.tab\n", + "pa_b1259_wd.tab\n", + "pa_b1262_wd.tab\n", + "pa_b1263_wd.tab\n", + "pa_b1264_wd.tab\n", + "pa_b1265_wd.tab\n", + "pa_b1266_wd.tab\n" + ] + } + ], + "source": [ + "# BOQA WDmodified, pipe output to a file named wdmod.txt\n", + "directory = ann_Path\n", + "\n", + "for filename in sorted(os.listdir(directory)):\n", + "\n", + " if filename.startswith(\"pa\") and filename.endswith(\"_wd.tab\"): # Note the removal of `not`\n", + " print(filename)\n", + " filePath = os.path.join(directory, filename)\n", + " filePathStr = ('\"'+filePath+'\"') # Takes path obtained, adds quotes\n", + " hp_obo = (annobo_Dict2[filePath]) # Pass a Key into annobo_Dict, recieve a value and add quotes\n", + "\n", + " runThis = !java -jar target/boqa-0.0.3-SNAPSHOT.jar -hpo {hpo_ids} -obo {hp_obo} -af {filePathStr} -n 25 &>> /home/rogertu/Phenomizer/_annotation_files/wdmod.txt\n", + " runThis\n", + " continue\n", + " \n", + " else:\n", + " continue" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Text processing of the BOQA outputs for the raw and the Wikidata-modified phenotype_annotation.tab files." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "import datetime\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "os.chdir(\"/home/rogertu/Phenomizer/_annotation_files/\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Get indices of where `itemName|score` is located in the unmodified BOQA outputs." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4067,\n", + " 8145,\n", + " 12229,\n", + " 16313,\n", + " 20391,\n", + " 24469,\n", + " 28547,\n", + " 30925,\n", + " 33303,\n", + " 35733,\n", + " 38355,\n", + " 40793,\n", + " 43223,\n", + " 45557]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "unmod = open(\"unmod.txt\", \"r\")\n", + "\n", + "itemName_indices = []\n", + "for index, line in enumerate(unmod):\n", + " if line == \"itemName|score\\n\":\n", + " itemName_indices.append(index)\n", + " \n", + "itemName_indices" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# length? \n", + "len(itemName_indices)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### For every index in `itemName_indices`, look 10 lines down for CDDG. If it exists, create an item in a dictionary to build and value." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b1241\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.13222605766200135\n", + "\n", + "b1246\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.13163654580120396\n", + "\n", + "b1248\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.13468054869009333\n", + "\n", + "b1249\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.14825745555847192\n", + "\n", + "b1252\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.14473728630088692\n", + "\n", + "b1254\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.1115729099754877\n", + "\n", + "b1259\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.10695366023475644\n", + "\n", + "b1262\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.35724875360237396\n", + "\n", + "b1263\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.35746508599626475\n", + "\n", + "b1264\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3482354901598477\n", + "\n", + "b1265\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3458454767346629\n", + "\n", + "b1266\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.32071617741247055\n", + "\n" + ] + } + ], + "source": [ + "unmod = open(\"unmod.txt\", \"r\")\n", + "unmod_ls = unmod.readlines()\n", + "build_ls = ['b1237','b1239','b1241','b1246','b1248',\n", + " 'b1249','b1252','b1254','b1259','b1262',\n", + " 'b1263','b1264','b1265','b1266']\n", + "res_un = dict()\n", + "\n", + "for line in unmod_ls:\n", + " split = line.split(sep=\"|\") # returns a list of two, name and % semantic similarity\n", + " f_ind = unmod_ls.index(line) # computes the index of the line in the file is\n", + " \n", + " if split[0] == \"CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)\":\n", + "\n", + " for index in itemName_indices:\n", + " withn = range(index,index+10) # computes the index range file line should fall in.\n", + " buildName = build_ls[itemName_indices.index(index)] # returns the name of build from build list.\n", + "\n", + " if f_ind in withn:\n", + " val = split[1] # fix the % semantic similarity from string to float.\n", + " val = val.strip('\\n') #\n", + " val = float(val) # \n", + " res_un.update({buildName:val}) # Update dictionary with build and % semantic similarity\n", + " print(buildName)\n", + " print(line)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Do the same thing for wikidata modified BOQA results.\n", + "* Create an index for `itemName|score`.\n", + "* Look for CDDG, store build and value to a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "wdmod = open(\"wdmod.txt\", \"r\")\n", + "\n", + "itemName_indices2 = []\n", + "for index, line in enumerate(wdmod):\n", + " if line == \"itemName|score\\n\":\n", + " itemName_indices2.append(index)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(itemName_indices2)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b1237\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.17160357887114772\n", + "\n", + "b1239\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.17110371199145843\n", + "\n", + "b1241\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3356842848618296\n", + "\n", + "b1246\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.34719783567372703\n", + "\n", + "b1248\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.37075900318274746\n", + "\n", + "b1249\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.39493342004768245\n", + "\n", + "b1252\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3949371882443358\n", + "\n", + "b1254\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3949349034867903\n", + "\n", + "b1259\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.39493723518214785\n", + "\n", + "b1262\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.3828069035818584\n", + "\n", + "b1263\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.38281125834105606\n", + "\n", + "b1264\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.40537283847675226\n", + "\n", + "b1265\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.4053704040700968\n", + "\n", + "b1266\n", + "CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)|0.40534408678088857\n", + "\n" + ] + } + ], + "source": [ + "wdmod = open(\"wdmod.txt\", \"r\")\n", + "wdmod_ls = wdmod.readlines()\n", + "\n", + "res_wd = dict()\n", + "\n", + "for line in wdmod_ls:\n", + " split = line.split(sep=\"|\") # returns a list of two, name and % semantic similarity\n", + " f_ind = wdmod_ls.index(line) # computes the index of the line in the file is\n", + " \n", + " if split[0] == \"CONGENITAL DISORDER OF DEGLYCOSYLATION; CDDG (OMIM:615273)\":\n", + "\n", + " for index in itemName_indices2:\n", + " withn = range(index,index+10) # computes the index range file line should fall in.\n", + " buildName = build_ls[itemName_indices2.index(index)]# returns the name of build from build list.\n", + "\n", + " if f_ind in withn:\n", + " val = split[1] # fix the % semantic similarity from string to float.\n", + " val = val.strip('\\n') #\n", + " val = float(val) # \n", + " res_wd.update({buildName:val}) # Update dictionary with build and % semantic similarity\n", + " print(buildName)\n", + " print(line)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Print both dictionaries to see if the values match" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'b1241': 0.13222605766200135,\n", + " 'b1246': 0.13163654580120396,\n", + " 'b1248': 0.13468054869009333,\n", + " 'b1249': 0.14825745555847192,\n", + " 'b1252': 0.14473728630088692,\n", + " 'b1254': 0.1115729099754877,\n", + " 'b1259': 0.10695366023475644,\n", + " 'b1262': 0.35724875360237396,\n", + " 'b1263': 0.35746508599626475,\n", + " 'b1264': 0.3482354901598477,\n", + " 'b1265': 0.3458454767346629,\n", + " 'b1266': 0.32071617741247055}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res_un" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'b1237': 0.17160357887114772,\n", + " 'b1239': 0.17110371199145843,\n", + " 'b1241': 0.3356842848618296,\n", + " 'b1246': 0.34719783567372703,\n", + " 'b1248': 0.37075900318274746,\n", + " 'b1249': 0.39493342004768245,\n", + " 'b1252': 0.3949371882443358,\n", + " 'b1254': 0.3949349034867903,\n", + " 'b1259': 0.39493723518214785,\n", + " 'b1262': 0.3828069035818584,\n", + " 'b1263': 0.38281125834105606,\n", + " 'b1264': 0.40537283847675226,\n", + " 'b1265': 0.4053704040700968,\n", + " 'b1266': 0.40534408678088857}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res_wd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create date object for builds 1237 to 1266." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "date_ls = ['2017/03/09','2017/04/14','2017/06/30','2017/10/06', '2017/12/12',\n", + " '2018/01/26','2018/03/09','2018/06/13','2018/07/27', '2018/10/09',\n", + " '2018/12/21','2019/02/12','2019/04/15','2019/06/03']\n", + "date_ls = pd.to_datetime(date_ls)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DatetimeIndex(['2017-03-09', '2017-04-14', '2017-06-30', '2017-10-06',\n", + " '2017-12-12', '2018-01-26', '2018-03-09', '2018-06-13',\n", + " '2018-07-27', '2018-10-09', '2018-12-21', '2019-02-12',\n", + " '2019-04-15', '2019-06-03'],\n", + " dtype='datetime64[ns]', freq=None)" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "date_ls" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create a list from the dictionaries, that way you can create a pandas dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "# pushing results from the untransformed and wd into a list to create a pandas df.\n", + "res_un_ls = []\n", + "for name in build_ls:\n", + " if name in res_un.keys():\n", + " res_un_ls.append(res_un[name])\n", + " else:\n", + " res_un_ls.append(0)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "res_wd_ls = []\n", + "for name in build_ls:\n", + " if name in res_wd.keys():\n", + " res_wd_ls.append(res_wd[name])\n", + " else:\n", + " res_wd_ls.append(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Construct your dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "data = {'build':build_ls, 'date':date_ls, 'HPO':res_un_ls, 'HPO + Wikidata':res_wd_ls}\n", + "res = pd.DataFrame.from_dict(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
builddateHPOHPO + Wikidata
0b12372017-03-090.0000000.171604
1b12392017-04-140.0000000.171104
2b12412017-06-300.1322260.335684
3b12462017-10-060.1316370.347198
4b12482017-12-120.1346810.370759
5b12492018-01-260.1482570.394933
6b12522018-03-090.1447370.394937
7b12542018-06-130.1115730.394935
8b12592018-07-270.1069540.394937
9b12622018-10-090.3572490.382807
10b12632018-12-210.3574650.382811
11b12642019-02-120.3482350.405373
12b12652019-04-150.3458450.405370
13b12662019-06-030.3207160.405344
\n", + "
" + ], + "text/plain": [ + " build date HPO HPO + Wikidata\n", + "0 b1237 2017-03-09 0.000000 0.171604\n", + "1 b1239 2017-04-14 0.000000 0.171104\n", + "2 b1241 2017-06-30 0.132226 0.335684\n", + "3 b1246 2017-10-06 0.131637 0.347198\n", + "4 b1248 2017-12-12 0.134681 0.370759\n", + "5 b1249 2018-01-26 0.148257 0.394933\n", + "6 b1252 2018-03-09 0.144737 0.394937\n", + "7 b1254 2018-06-13 0.111573 0.394935\n", + "8 b1259 2018-07-27 0.106954 0.394937\n", + "9 b1262 2018-10-09 0.357249 0.382807\n", + "10 b1263 2018-12-21 0.357465 0.382811\n", + "11 b1264 2019-02-12 0.348235 0.405373\n", + "12 b1265 2019-04-15 0.345845 0.405370\n", + "13 b1266 2019-06-03 0.320716 0.405344" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "# Gotta melt your dataframe\n", + "res_melt = pd.melt(res, id_vars= [\"build\", \"date\"], value_vars=[\"HPO\",\"HPO + Wikidata\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
builddatevariablevalue
0b12372017-03-09HPO0.000000
1b12392017-04-14HPO0.000000
2b12412017-06-30HPO0.132226
3b12462017-10-06HPO0.131637
4b12482017-12-12HPO0.134681
5b12492018-01-26HPO0.148257
6b12522018-03-09HPO0.144737
7b12542018-06-13HPO0.111573
8b12592018-07-27HPO0.106954
9b12622018-10-09HPO0.357249
10b12632018-12-21HPO0.357465
11b12642019-02-12HPO0.348235
12b12652019-04-15HPO0.345845
13b12662019-06-03HPO0.320716
14b12372017-03-09HPO + Wikidata0.171604
15b12392017-04-14HPO + Wikidata0.171104
16b12412017-06-30HPO + Wikidata0.335684
17b12462017-10-06HPO + Wikidata0.347198
18b12482017-12-12HPO + Wikidata0.370759
19b12492018-01-26HPO + Wikidata0.394933
20b12522018-03-09HPO + Wikidata0.394937
21b12542018-06-13HPO + Wikidata0.394935
22b12592018-07-27HPO + Wikidata0.394937
23b12622018-10-09HPO + Wikidata0.382807
24b12632018-12-21HPO + Wikidata0.382811
25b12642019-02-12HPO + Wikidata0.405373
26b12652019-04-15HPO + Wikidata0.405370
27b12662019-06-03HPO + Wikidata0.405344
\n", + "
" + ], + "text/plain": [ + " build date variable value\n", + "0 b1237 2017-03-09 HPO 0.000000\n", + "1 b1239 2017-04-14 HPO 0.000000\n", + "2 b1241 2017-06-30 HPO 0.132226\n", + "3 b1246 2017-10-06 HPO 0.131637\n", + "4 b1248 2017-12-12 HPO 0.134681\n", + "5 b1249 2018-01-26 HPO 0.148257\n", + "6 b1252 2018-03-09 HPO 0.144737\n", + "7 b1254 2018-06-13 HPO 0.111573\n", + "8 b1259 2018-07-27 HPO 0.106954\n", + "9 b1262 2018-10-09 HPO 0.357249\n", + "10 b1263 2018-12-21 HPO 0.357465\n", + "11 b1264 2019-02-12 HPO 0.348235\n", + "12 b1265 2019-04-15 HPO 0.345845\n", + "13 b1266 2019-06-03 HPO 0.320716\n", + "14 b1237 2017-03-09 HPO + Wikidata 0.171604\n", + "15 b1239 2017-04-14 HPO + Wikidata 0.171104\n", + "16 b1241 2017-06-30 HPO + Wikidata 0.335684\n", + "17 b1246 2017-10-06 HPO + Wikidata 0.347198\n", + "18 b1248 2017-12-12 HPO + Wikidata 0.370759\n", + "19 b1249 2018-01-26 HPO + Wikidata 0.394933\n", + "20 b1252 2018-03-09 HPO + Wikidata 0.394937\n", + "21 b1254 2018-06-13 HPO + Wikidata 0.394935\n", + "22 b1259 2018-07-27 HPO + Wikidata 0.394937\n", + "23 b1262 2018-10-09 HPO + Wikidata 0.382807\n", + "24 b1263 2018-12-21 HPO + Wikidata 0.382811\n", + "25 b1264 2019-02-12 HPO + Wikidata 0.405373\n", + "26 b1265 2019-04-15 HPO + Wikidata 0.405370\n", + "27 b1266 2019-06-03 HPO + Wikidata 0.405344" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res_melt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot your data" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax2 = sns.lineplot(x = \"date\", y = \"value\", hue = \"variable\", style = \"variable\", data = res_melt,\n", + " markers = True, dashes=False, palette = \"binary\")\n", + "\n", + "ax2.set(ylim=(0,0.5))\n", + "plt.xticks(rotation=45)\n", + "plt.xlabel('')\n", + "plt.ylabel('Semantic Similarity (%)')\n", + "plt.title('Semantic Similarity Scores with/without Wikidata Overtime')\n", + "\n", + "#Removes Top and Right borders.\n", + "ax2.spines['top'].set_visible(False)\n", + "ax2.spines['right'].set_visible(False)\n", + "\n", + "#Removing legend title and frame.\n", + "handles, labels = ax2.get_legend_handles_labels()\n", + "ax2.legend(handles = handles[1:], labels=labels[1:], loc = \"upper left\", frameon=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This plot demonstrates the calculated semantic simlarity for the disease \"Congenital Disorder of Deglycosylation\" from the Bayesian Ontology Query Algorithm when fed with only the phenotype_annotation.tab dataset, provided by HPO, or the same phenotype_annotation.tab dataset supplemented with Wikidata. This algorithm integrates knowledge stored in an ontology (hpo.obo) and accompanying annotations (phenotype_annotation.tab) in a Bayesian network and searches for terms of the ontology to get a list of the best matching diseases. (Bauer, Kohler et al PMID: 22843981). The Human Phenotype terms that were searched for came from Caglayan and Komu et al (PMID: 25220016)." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax2 = sns.lineplot(x = \"date\", y = \"value\", hue = \"variable\", style = \"variable\", data = res_melt,\n", + " markers = True, dashes=False, palette = \"binary\")\n", + "\n", + "ax2.set(ylim=(0,0.5))\n", + "plt.xticks(rotation=45)\n", + "plt.xlabel('')\n", + "plt.ylabel('Semantic Similarity (%)')\n", + "plt.title('')\n", + "plt.figure(figsize=[9,6],dpi = 1000)\n", + "#Removes Top and Right borders.\n", + "ax2.spines['top'].set_visible(False)\n", + "ax2.spines['right'].set_visible(False)\n", + "\n", + "#Removing legend title and frame.\n", + "handles, labels = ax2.get_legend_handles_labels()\n", + "ax2.legend(handles = handles[1:], labels=labels[1:], loc = \"upper left\", frameon=False)\n", + "\n", + "#Export\n", + "ax2.figure.savefig('/home/rogertu/Phenomizer/Sem_sim_scores.svg',format = 'svg', bbox_inches='tight', dpi = 500)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Replicating_Phenomizer_Results/Semantic_similarity_score_hpowd_vs_hpo.svg b/Replicating_Phenomizer_Results/Semantic_similarity_score_hpowd_vs_hpo.svg new file mode 100644 index 0000000..4b28717 --- /dev/null +++ b/Replicating_Phenomizer_Results/Semantic_similarity_score_hpowd_vs_hpo.svg @@ -0,0 +1,1203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py b/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py new file mode 100644 index 0000000..3683204 --- /dev/null +++ b/Replicating_Phenomizer_Results/Wikidata_phenomizer_input_modifier.py @@ -0,0 +1,85 @@ +# The goal of this script is to query OMIM id's from the Wikidata. Running this script will return a GAF files modified with OMIM id's. To see which are the top ranked returned diseases after Wikidata query, use BOQA (https://github.com/sulab/boqa ). +# Note: This is a copy of phenomizer (https://github.com/SuLab/Wikidata-phenomizer). The difference between this and phenomizer is it has an input to accept any hpo.tab file, which makes it easier to load in files. Additionally, it Queries for OMIM id's instead of Orphanet id's. Lastly, the file is more appropriately named making it less confusing. +# To run this script: +# python3 Wikidata_phenomizer_input_modifier.py [Put your phenotype_annotation.tab file name here without brackets] +""" +Get the disease phenotypes from wikidata, +merge them with disease phenotypes HPO GAF file +Feed them into ontologizer +""" +import pandas as pd +import sys + +# Check if there is a phenotype_annotation file appended with command. If not, default=phenotype_annotation.tab. +if len(sys.argv) == 1: + fname = "phenotype_annotation" +else: + fname = sys.argv[1] + fname = fname[0:-4] + +# WikiData Query +from wikidataintegrator import wdi_core + +wikidata_all_query = """ +SELECT ?hpo_id ?symptom_wdLabel ?omim_id ?disease_wdLabel WHERE { + ?disease_wd wdt:P780 ?symptom_wd . + ?symptom_wd wdt:P3841 ?hpo_id . + ?disease_wd wdt:P492 ?omim_id . + SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } + }""" + +df_wd = wdi_core.WDItemEngine.execute_sparql_query(wikidata_all_query, as_dataframe=True) + +tab_colnames = ['DB', 'DB_Object_ID', 'DB_Name', 'Qualifier', 'HPO_ID', 'DB_Reference', + 'Evidence_Code', 'Onset modifier', 'Frequency', 'Sex', 'Modifier', + 'Aspect', 'Date_Created', 'Assigned_By'] +gaf = pd.read_csv(fname + ".tab", delimiter="\t", names=tab_colnames, dtype=str) +disease_label = dict(zip(gaf.DB_Reference, gaf.DB_Name)) + +""" +GAF file +OMIM 101120 ACROCEPHALOPOLYSYNDACTYLY TYPE III HP:0000303 OMIM:101120 IEA O HPO:iea[2009-02-17] +""" +df_wd['DB'] = 'OMIM' +df_wd['DB_Object_ID'] = df_wd.omim_id.str.split(":").map(lambda x: x[0]) +df_wd['DB_Name'] = df_wd.disease_wdLabel +df_wd['Qualifier'] = "" +df_wd['HPO_ID'] = df_wd.hpo_id +df_wd['DB_Reference'] = df_wd['DB'] + ":" + df_wd['DB_Object_ID'] +df_wd['Evidence_Code'] = "IEA" +df_wd['Onset modifier'] = "" +df_wd['Frequency'] = "" +df_wd['Sex'] = "" +df_wd['Modifier'] = "O" +df_wd['Aspect'] = "" +df_wd['Date_Created'] = "wd:xxx[2018-12-10]" +df_wd['DB_Name_hpo'] = df_wd.DB_Reference.map(disease_label.get) +df_wd['DB_Name'] = df_wd.DB_Name_hpo.combine_first(df_wd.DB_Name) + +df_wd_gaf = gaf.append(df_wd) + +df_wd_gaf[tab_colnames].to_csv(fname + "_wd.tab", sep="\t", header=False, index=False) + +######## +# drop dupes for counting purposes +gaf = gaf.drop_duplicates(['DB_Object_ID', 'HPO_ID']) +df_wd = df_wd.drop_duplicates(['DB_Object_ID', 'HPO_ID']) +df_wd_gaf = gaf.append(df_wd) + +print("number of hpo annotations: {}".format(len(gaf))) +print("number of wikidata annotations: {}".format(len(df_wd))) + +dupes = df_wd_gaf[df_wd_gaf.duplicated(subset=['HPO_ID', 'DB_Reference'], keep="last")].sort_values(['HPO_ID', 'DB_Reference']) +dupes = dupes[['DB_Name', 'DB_Reference', 'HPO_ID', 'symptom_wdLabel']] +print("number overlap annotations: {}".format(len(dupes))) + +# ones in wikidata, but not in hpo: +wd = set(tuple(zip(df_wd.HPO_ID, df_wd.DB_Reference))) +hpo = set(tuple(zip(gaf.HPO_ID, gaf.DB_Reference))) +new_wd = wd-hpo + +new_df = df_wd[df_wd.apply(lambda row: (row.HPO_ID, row.DB_Reference) in new_wd, axis=1)] +new_df = new_df[['DB_Name', 'DB_Reference', 'HPO_ID', 'symptom_wdLabel']] + +print("\ntop unique disease-phenotypes in wd:") +print(new_df.DB_Name.value_counts()[:10]) diff --git a/Replicating_Phenomizer_Results/requirements.txt b/Replicating_Phenomizer_Results/requirements.txt new file mode 100644 index 0000000..9de034d --- /dev/null +++ b/Replicating_Phenomizer_Results/requirements.txt @@ -0,0 +1,64 @@ +backcall==0.1.0 +bleach==3.0.2 +certifi==2018.11.29 +chardet==3.0.4 +cycler==0.10.0 +decorator==4.3.0 +defusedxml==0.5.0 +entrypoints==0.2.3 +idna==2.8 +ipykernel==5.1.0 +ipython==7.2.0 +ipython-genutils==0.2.0 +ipywidgets==7.4.2 +jedi==0.13.2 +Jinja2==2.10 +jsonschema==2.6.0 +jupyter==1.0.0 +jupyter-client==5.2.4 +jupyter-console==6.0.0 +jupyter-core==4.4.0 +kiwisolver==1.1.0 +MarkupSafe==1.1.0 +matplotlib==3.0.3 +matplotlib-venn==0.11.5 +mistune==0.8.4 +mwoauth==0.3.2 +nbconvert==5.4.0 +nbformat==4.4.0 +notebook==5.7.4 +numpy==1.15.4 +oauthlib==2.1.0 +pandas==0.23.4 +pandocfilters==1.4.2 +parso==0.3.1 +pexpect==4.6.0 +pickleshare==0.7.5 +prometheus-client==0.5.0 +prompt-toolkit==2.0.7 +ptyprocess==0.6.0 +Pygments==2.3.1 +PyJWT==1.7.1 +pyparsing==2.4.0 +python-dateutil==2.7.5 +pytz==2018.7 +pyzmq==17.1.2 +qtconsole==4.4.3 +requests==2.21.0 +requests-oauthlib==1.0.0 +scipy==1.2.1 +seaborn==0.9.0 +Send2Trash==1.5.0 +simplejson==3.16.0 +six==1.12.0 +terminado==0.8.1 +testpath==0.4.2 +tornado==5.1.1 +tqdm==4.28.1 +traitlets==4.3.2 +urllib3==1.24.1 +venn==0.1.3 +wcwidth==0.1.7 +webencodings==0.5.1 +widgetsnbextension==3.4.2 +wikidataintegrator==0.1.3