diff --git a/analysis/revision-GO_term_comparison.ipynb b/analysis/revision-GO_term_comparison.ipynb index 2ca4cc73c9106ff3d13f9959aa2af8780cf5a8be..50a4a24b5dacb903c6c535c8e1ea4db67ee9b2f6 100644 --- a/analysis/revision-GO_term_comparison.ipynb +++ b/analysis/revision-GO_term_comparison.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 237, + "execution_count": 109, "id": "99e6a23c-f2a3-4369-977e-4d2c74707d0c", "metadata": {}, "outputs": [ @@ -10,7 +10,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2022-12-14 17:26\n" + "2022-12-20 10:26\n" ] } ], @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 238, + "execution_count": 110, "id": "a6e66eaf-c7a8-4b26-a99b-5032d49c25a3", "metadata": {}, "outputs": [], @@ -40,6 +40,7 @@ "\n", "import numpy as np\n", "import pandas as pd\n", + "import itertools\n", "\n", "import matplotlib.pyplot as plt\n", "from matplotlib_venn import venn2, venn3\n", @@ -47,9 +48,19 @@ "import seaborn as sns" ] }, + { + "cell_type": "markdown", + "id": "36443851-596d-4f0e-913e-7fcdd312afef", + "metadata": {}, + "source": [ + "The reviews made it obvious that comparison of functional equivalence between pairs of proteins often are carried out on the level of GO terms. Therefore, we decided to conduct different analyses on GO terms, comparing the annotations of proteins given by structural or sequence similarity.\n", + "\n", + "First we will solely compare the GO-term assignments between strucural and sequence based annotations:" + ] + }, { "cell_type": "code", - "execution_count": 239, + "execution_count": 111, "id": "0cd74ade-73c8-44f6-9d6e-f0f37bb760d3", "metadata": {}, "outputs": [], @@ -60,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 240, + "execution_count": 112, "id": "c3d289af-b99b-4403-af5b-a8fc15f8269f", "metadata": {}, "outputs": [], @@ -74,12 +85,12 @@ "id": "d3b9a268-6698-415f-a0c4-4f7e0fd515d8", "metadata": {}, "source": [ - "## Comparison of GO-terms between structural and sequence annotation" + "## Comparison of GO-terms between structural (MorF) and sequence based (EggNOG) annotation" ] }, { "cell_type": "code", - "execution_count": 241, + "execution_count": 113, "id": "63dd7ec5-8841-4bfe-9e38-db55f67c298d", "metadata": {}, "outputs": [], @@ -96,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 242, + "execution_count": 114, "id": "469c03ab-31cf-474c-b6eb-fc9f613015ba", "metadata": {}, "outputs": [], @@ -109,7 +120,7 @@ "id": "34f832e3-b005-464b-9788-07f758239276", "metadata": {}, "source": [ - "Now that I have all cases in which structure and sequence annotations actually produce GO-terms (via EggNOG-mapper), I can compare the overlap between those annotations on the level of GO-terms." + "Now that we have all cases in which structure and sequence annotations actually produce GO-terms, we can compare the overlap between those annotations on the level of GO-terms." ] }, { @@ -119,17 +130,17 @@ "source": [ "There will be a couple of different levels:\n", "\n", - " - Complete overlap\n", + " - Complete overlap (GO terms are identical)\n", " - Partial overlap:\n", - " - Unique GO-terms on both sides\n", - " - All structure GO-terms in sequence GO-terms\n", - " - All sequence GO-terms in structure GO-terms\n", - " - NO overlap at all" + " - Unique GO-terms on both sides ('unique GOs')\n", + " - All structure GO-terms in sequence GO-terms ('Sequence GOs expanded')\n", + " - All sequence GO-terms in structure GO-terms ('Structure GOs expanded')\n", + " - No overlap" ] }, { "cell_type": "code", - "execution_count": 243, + "execution_count": 115, "id": "fe53ea5e-26de-46cf-ab69-44288f1a2b26", "metadata": {}, "outputs": [], @@ -139,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 116, "id": "3761bb31-a522-40a0-8e86-c262b2b9e150", "metadata": {}, "outputs": [ @@ -147,13 +158,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_278/2049958699.py:1: SettingWithCopyWarning: \n", + "/tmp/ipykernel_125/2049958699.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " GOs['GOs_struct'] = GOs['GOs_struct'].str.split(',')\n", - "/tmp/ipykernel_278/2049958699.py:2: SettingWithCopyWarning: \n", + "/tmp/ipykernel_125/2049958699.py:2: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -169,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 245, + "execution_count": 117, "id": "1b45906f-bd6c-4424-93de-ffbef8fad67e", "metadata": {}, "outputs": [], @@ -194,14 +205,14 @@ " # Check if list2 contains all elements of list1 and more\n", " elif len(overlap) == len(list1) and len(overlap) < len(list2):\n", " return 'partial overlap - sequence GOs expanded'\n", - " # If none of the above, then overlap is partial but not unique or expanded\n", + " # If none of the above, then something is weird\n", " else:\n", - " return 'partial'" + " return 'something is weird'" ] }, { "cell_type": "code", - "execution_count": 246, + "execution_count": 118, "id": "90a4a44d-2931-4b87-a7a8-1fe677e8912b", "metadata": {}, "outputs": [], @@ -215,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 247, + "execution_count": 119, "id": "9c799814-04f9-49d4-9427-873c50e3a2cb", "metadata": {}, "outputs": [], @@ -229,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 248, + "execution_count": 120, "id": "bcc70854-7a7b-4bdc-b59f-c9244f9ffae8", "metadata": {}, "outputs": [ @@ -237,7 +248,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_278/1677403612.py:1: SettingWithCopyWarning: \n", + "/tmp/ipykernel_125/1677403612.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -252,7 +263,7 @@ }, { "cell_type": "code", - "execution_count": 249, + "execution_count": 121, "id": "948c120b-f680-4a9d-ba9e-11ddc15be017", "metadata": {}, "outputs": [ @@ -260,7 +271,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_278/2972605403.py:1: SettingWithCopyWarning: \n", + "/tmp/ipykernel_125/2972605403.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -275,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 250, + "execution_count": 122, "id": "ca29c96d-a8da-4c7c-bdf2-5ad1f380c4da", "metadata": {}, "outputs": [ @@ -283,7 +294,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_278/1789197005.py:1: SettingWithCopyWarning: \n", + "/tmp/ipykernel_125/1789197005.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -298,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 251, + "execution_count": 123, "id": "9195a8b5-f5e4-4e10-a8e6-fcf190fdd42f", "metadata": {}, "outputs": [ @@ -313,7 +324,7 @@ "Name: overlap, dtype: int64" ] }, - "execution_count": 251, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -324,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": 252, + "execution_count": 124, "id": "6a4352ef-1326-4102-9ca6-799217ba6be4", "metadata": {}, "outputs": [], @@ -332,8 +343,8 @@ "color_reference = {\n", " 'complete overlap': cm.tab20.colors[0],\n", " 'partial overlap - unique GOs': cm.tab20.colors[18],\n", - " 'partial overlap - sequence GOs expanded': cm.tab20.colors[19],\n", - " 'partial overlap - structure GOs expanded': cm.tab20.colors[19],\n", + " 'partial overlap - sequence GOs expanded': cm.tab20.colors[7],\n", + " 'partial overlap - structure GOs expanded': cm.tab20.colors[7],\n", " 'no overlap': cm.tab20.colors[16]\n", "}\n", "\n", @@ -342,13 +353,13 @@ }, { "cell_type": "code", - "execution_count": 253, + "execution_count": 125, "id": "ae8bac54-f10d-4020-8019-6221c13b56b7", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -368,15 +379,26 @@ "# explode = (0.1, 0, 0, 0, 0)\n", "\n", "fig, ax = plt.subplots()\n", - "piechart = ax.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, colors=colors)\n", + "piechart = ax.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, colors=colors, textprops={'fontsize': 14})\n", "ax.axis('equal');\n", "\n", - "#plt.savefig('./figures/analysis-sequence_structure_agreement.pdf')" + "plt.savefig('/g/arendt/Fabian/PhD/Computational/Spongefold/coffe-paper/figures/GO_count.svg', bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "markdown", + "id": "706a31e9-2a25-4fd0-82b4-be394b94453b", + "metadata": {}, + "source": [ + "In 60.6 % of cases, all proteins that have GO-annotations from both structural and sequence similarity based annotations are overlapping 100 %. This is close to the number of proteins that share the same *most specific* orthogroup, which is not surprising. \n", + "Another 39.2 % of all annotation pairs show at least partial overlap with 20.3 % of cases having unique GO terms on each side, 10.6 % of cases have additional GO terms on the sequence annotations side and 8.3 % of cases have additional GO terms in their strucure based annotation. Only in 0.1 % of cases (= 17 annotation pairs), the GO terms do not overlap whatsoever.\n", + "\n", + "We then wondered how much the annotation pairs in the 'partial overlap' category actually differ from each other." ] }, { "cell_type": "code", - "execution_count": 254, + "execution_count": 126, "id": "ab2a9480-aaee-43d3-af23-ca05886b3695", "metadata": {}, "outputs": [ @@ -386,13 +408,13 @@ "<AxesSubplot:xlabel='coverage_struct', ylabel='Count'>" ] }, - "execution_count": 254, + "execution_count": 126, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEHCAYAAABfkmooAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZMUlEQVR4nO3dfbBkdX3n8ffHGUEeBIEZEGbQgTCiwMaoI8GHTVTcBTUlmBV3XBVEKlMxxKhJDJDsxmylpmR3Uyk1K7oTNWDWEhEfGJ+lRtQ1ijgoIg8S7g4RJhBm0AQFDe4M3/3jnMHm2n1Pc+d2971z36+qW/f07zx9f/1wPn3O6T6dqkKSpJk8atIFSJLmP8NCktTJsJAkdTIsJEmdDAtJUifDQpLUaemkCxiVZcuW1apVqyZdhiQtKNdee+09VbV8evseGxarVq1i8+bNky5DkhaUJN/v1+5hKElSJ8NCktTJsJAkdTIsJEmdDAtJUifDQpLUybCQJHXaY79nIUmLwc6dO5mamnro9jHHHMOSJUvmfD2GhSQtYFNTU6x716fZb9kR3H/PnWw49yUce+yxc74ew0KSFrj9lh3BAY9/4kjX4TkLSVInw0KS1MmwkCR1MiwkSZ0MC0lSp5GFRZL3J9mW5Iaetv+R5HtJrk/y8SSP6xl3QZKpJLckOaWn/RlJvtuOe2eSjKpmSVJ/o9yzuBg4dVrblcAJVfXLwN8DFwAkOQ5YCxzfznNRkl3fKnk3sA5Y3f5NX6YkacRGFhZV9RXgh9PavlBVO9qbVwMr2+HTgEur6oGqug2YAk5McjhwQFV9vaoK+ABw+qhqliT1N8lzFq8DPtsOrwDu6Bm3tW1b0Q5Pb5ckjdFEwiLJnwA7gA/uauozWc3QPmi565JsTrJ5+/btu1+oJAmYQFgkOQv4DeBV7aElaPYYjuyZbCVwZ9u+sk97X1W1oarWVNWa5cuXz23hkrSIjTUskpwKnAe8tKp+0jNqI7A2yd5JjqI5kX1NVd0F/DjJSe2noM4ErhhnzZKkEV5IMMmHgOcBy5JsBd5K8+mnvYEr20/AXl1Vv11VNya5DLiJ5vDUuVW1s13U62k+WbUPzTmOzyJJGquRhUVVvbJP8/tmmH49sL5P+2bghDksTZL0CPkNbklSJ8NCktTJsJAkdTIsJEmdDAtJUifDQpLUybCQJHUyLCRJnQwLSVInw0KS1MmwkCR1MiwkSZ0MC0lSJ8NCktTJsJAkdTIsJEmdDAtJUifDQpLUybCQJHUyLCRJnQwLSVInw0KS1MmwkCR1MiwkSZ1GFhZJ3p9kW5IbetoOTnJlklvb/wf1jLsgyVSSW5Kc0tP+jCTfbce9M0lGVbMkqb9R7llcDJw6re18YFNVrQY2tbdJchywFji+neeiJEvaed4NrANWt3/TlylJGrGRhUVVfQX44bTm04BL2uFLgNN72i+tqgeq6jZgCjgxyeHAAVX19aoq4AM980iSxmTc5ywOq6q7ANr/h7btK4A7eqbb2rataIent0uSxmi+nODudx6iZmjvv5BkXZLNSTZv3759zoqTpMVu3GFxd3toifb/trZ9K3Bkz3QrgTvb9pV92vuqqg1Vtaaq1ixfvnxOC5ekxWzcYbEROKsdPgu4oqd9bZK9kxxFcyL7mvZQ1Y+TnNR+CurMnnkkSWOydFQLTvIh4HnAsiRbgbcCFwKXJTkHuB04A6CqbkxyGXATsAM4t6p2tot6Pc0nq/YBPtv+SZLGaGRhUVWvHDDq5AHTrwfW92nfDJwwh6VJkh6h+XKCW5I0jxkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSpk2EhSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSpk2EhSeo0kbBI8uYkNya5IcmHkjwmycFJrkxya/v/oJ7pL0gyleSWJKdMomZJWszGHhZJVgC/B6ypqhOAJcBa4HxgU1WtBja1t0lyXDv+eOBU4KIkS8ZdtyQtZpM6DLUU2CfJUmBf4E7gNOCSdvwlwOnt8GnApVX1QFXdBkwBJ463XEla3MYeFlX1j8BfALcDdwH3VtUXgMOq6q52mruAQ9tZVgB39Cxia9v2C5KsS7I5yebt27ePqguStOhM4jDUQTR7C0cBRwD7JXn1TLP0aat+E1bVhqpaU1Vrli9fvvvFSpKAyRyGeiFwW1Vtr6r/B3wMeDZwd5LDAdr/29rptwJH9sy/kuawlSRpTCYRFrcDJyXZN0mAk4GbgY3AWe00ZwFXtMMbgbVJ9k5yFLAauGbMNUvSorZ03Cusqm8kuRz4FrAD+DawAdgfuCzJOTSBckY7/Y1JLgNuaqc/t6p2jrtuSVrMxh4WAFX1VuCt05ofoNnL6Df9emD9qOuSJPXnN7glSZ0MC0lSJ8NCktTJsJAkdRoqLJI8Z5g2SdKeadg9i78ask2StAea8aOzSZ5F8+3q5Ul+v2fUATRXi5UkLQJd37PYi+bLckuBx/a0/wh4+aiKkiTNLzOGRVV9Gfhykour6vtjqkmSNM8M+w3uvZNsAFb1zlNVLxhFUZKk+WXYsPgI8B7gvYDXZZKkRWbYsNhRVe8eaSWSpHlr2I/OfjLJ7yQ5PMnBu/5GWpkkad4Yds9i1+9MvKWnrYCj57YcSdJ8NFRYVNVRoy5EkjR/DRUWSc7s115VH5jbciRJ89Gwh6Ge2TP8GJofKfoWYFhI0iIw7GGoN/TeTnIg8LcjqUiSNO/M9hLlPwFWz2UhkqT5a9hzFp+k+fQTNBcQfApw2aiKkiTNL8Oes/iLnuEdwPerausI6pEkzUNDHYZqLyj4PZorzx4E/GyURUmS5pdhfynvFcA1wBnAK4BvJPES5ZK0SAx7gvtPgGdW1VlVdSZwIvBfZrvSJI9LcnmS7yW5Ocmz2kuIXJnk1vb/QT3TX5BkKsktSU6Z7XolSbMzbFg8qqq29dz+wSOYt593AJ+rqicDTwVuBs4HNlXVamBTe5skxwFrgeOBU4GLkvgrfZI0RsNu8D+X5PNJXpvktcCngc/MZoVJDgB+DXgfQFX9rKr+BTgNuKSd7BLg9Hb4NODSqnqgqm4Dpmj2bCRJY9L1G9zHAIdV1VuS/CbwXCDA14EPznKdRwPbgb9J8lTgWuCN7XruAqiqu5Ic2k6/Ari6Z/6tbZskaUy69izeDvwYoKo+VlW/X1VvptmrePss17kUeDrw7qp6GnA/7SGnAdKnrfq0kWRdks1JNm/fvn2W5UmSpusKi1VVdf30xqraTPMTq7OxFdhaVd9ob19OEx53JzkcoP2/rWf6I3vmXwnc2W/BVbWhqtZU1Zrly5fPsjxJ0nRdYfGYGcbtM5sVVtU/AXckObZtOhm4CdjIz3834yzginZ4I7A2yd5JjqK5zMg1s1m3JGl2ur7B/c0kv1VVf93bmOQcmnMNs/UG4INJ9gK2AGfTBNdl7bJvp/lOB1V1Y5LLaAJlB3BuVfk74JI0Rl1h8Sbg40lexc/DYQ2wF/Cy2a60qq5rlzPdyQOmXw+sn+36JEm7Z8awqKq7gWcneT5wQtv86ar64sgrkyTNG8P+nsVVwFUjrkWSNE/tzrewJUmLhGEhSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSpk2EhSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6jSxsEiyJMm3k3yqvX1wkiuT3Nr+P6hn2guSTCW5Jckpk6pZkharSe5ZvBG4uef2+cCmqloNbGpvk+Q4YC1wPHAqcFGSJWOuVZIWtYmERZKVwEuA9/Y0nwZc0g5fApze035pVT1QVbcBU8CJYypVksTk9izeDvwR8GBP22FVdRdA+//Qtn0FcEfPdFvbNknSmIw9LJL8BrCtqq4ddpY+bTVg2euSbE6yefv27bOuUZL0cJPYs3gO8NIk/wBcCrwgyf8G7k5yOED7f1s7/VbgyJ75VwJ39ltwVW2oqjVVtWb58uWjql+SFp2xh0VVXVBVK6tqFc2J6y9W1auBjcBZ7WRnAVe0wxuBtUn2TnIUsBq4ZsxlS9KitnTSBfS4ELgsyTnA7cAZAFV1Y5LLgJuAHcC5VbVzcmVK0uIz0bCoqi8BX2qHfwCcPGC69cD6sRUmSXoYv8EtSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSpk2EhSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSp09jDIsmRSa5KcnOSG5O8sW0/OMmVSW5t/x/UM88FSaaS3JLklHHXLEmL3ST2LHYAf1BVTwFOAs5NchxwPrCpqlYDm9rbtOPWAscDpwIXJVkygboladEae1hU1V1V9a12+MfAzcAK4DTgknayS4DT2+HTgEur6oGqug2YAk4ca9GStMhN9JxFklXA04BvAIdV1V3QBApwaDvZCuCOntm2tm2SpDGZWFgk2R/4KPCmqvrRTJP2aasBy1yXZHOSzdu3b5+LMiVJTCgskjyaJig+WFUfa5vvTnJ4O/5wYFvbvhU4smf2lcCd/ZZbVRuqak1VrVm+fPloipekRWgSn4YK8D7g5qr6y55RG4Gz2uGzgCt62tcm2TvJUcBq4Jpx1StJgqUTWOdzgNcA301yXdv2x8CFwGVJzgFuB84AqKobk1wG3ETzSapzq2rn2KuWpEVs7GFRVV+l/3kIgJMHzLMeWD+yoiRJM/Ib3JKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSpk2EhSepkWEiSOhkWkqROhoUkqZNhIUnqZFhIkjoZFpKkToaFJKmTYSFJ6mRYSJI6GRaSpE6GhSSp0yR+g1vzzM6dO5mamnro9jHHHMOSJUsmWFF/o6qzd7k7dzY/775rufP1vtDsTX8ewWQe54XyutvFsJjnxvGEmpqaYt27Ps1+y47g/nvuZMO5L+HYY4+dF0/m3hq2bNnC2z5zM/svf3idc7nc7bdex6P2PZBDVhy12+uYa+N4PObDYz5qvc93YGKP86DX3TCmP3+rRllpw7CY52bzhJrNC36/ZUdwwOOfOHDd923bygUvOZ6jjz566GXOtraZNuSPPfIpHPD4J1IPPsiWLVsemh542HK66uvtW+9y77vnTpbuf0jnOkbZ/2Fq3t1QHzTPMI/5I30MB913c7WcYfrYO++WLVvY95CfP9+HeZwH1fpI+zB9ml2vu94ahllOv9fFqBkWYzbMk27QE3v6E6p3/l6DXvC9y52+jl3vTHrX0bvu++65kz/7xHUcsuLegRuqQcufvq5dT/JBtQ0KiPvuufOhPt7/w3/izz7xfQ5Zce/D9gaAoTZy0/vWz6B1DHOfDtro7O4GvyvUZ3pDMexe2q51DHrMhwmU6WHcb29tmLoHLWfQYzBMDdM3roMe52H6POh+HHRfT5931+uut4ZhljPodTFKhsVueqTv6oZ50g16Yvc+oWDwRhH6v+CnL7drHdNfVPv1Ca2Z6p5pXV21DfNC2K9nY79rbwB42HJnuo+HeTfWbx3D3qeDDmf1ezc5bIgOOtzQb5nTN6LD7KVNX8egx7zfm4jp9/W+fe67QcuZ8TFYNvxjMEwN/Z5T/R7nYfrcez/2mmnPdfq8Xff1JAOil2Exze4cJhnmHfcwT7qZntj79by4Znqh9nvBT19u1zqGfcc9qO5Huq6ZXsyP1H5D3MdztfyuPg/aGM90P84UovCLe4CDltm7xzXsXlq/EB3mTcRMG8Ku5QwKuRkDcogg353DM8P2eZDekBtU97DrnVRA9FowYZHkVOAdwBLgvVV14SjWM8whnGHfoXXtKcBwT7qZPJIX6lza3brHadK1zmaj0xWiwy5z+h7XIENt/EY4zaCQm81zeS4f70eyrJn20Ea53nFZEGGRZAnwLuDfAVuBbybZWFU3jWJ9wxzCGfYd2ijeNQ+sex4+wdQYxWOzpz3eo9rLHJdh9tAWsgURFsCJwFRVbQFIcilwGjCSsLi/fYL+9J+38ah9D+w/zQ/u5EeP2buZ5oEHfj7cM/3AaeZg+KH65ni5C33Y+8X7ZaL3y5he/4OGm23X0+Z8mwgLJyxWAHf03N4K/Or0iZKsA9a1N+9Lcsss17cMuGeW8y5U9nlxWGx9Xmz95cl/9Qe72+e+nzhYKGGRPm2/cESwqjYAG3Z7Zcnmqlqzu8tZSOzz4rDY+rzY+guj6/NCuTbUVuDIntsrgYVzMFOSFriFEhbfBFYnOSrJXsBaYOOEa5KkRWNBHIaqqh1Jfhf4PM1HZ99fVTeOcJW7fShrAbLPi8Ni6/Ni6y+MqM+pcVyBSpK0oC2Uw1CSpAkyLCRJnRZ1WCQ5NcktSaaSnN9nfJK8sx1/fZKnT6LOuTJEf1/V9vP6JF9L8tRJ1DmXuvrcM90zk+xM8vJx1jcKw/Q5yfOSXJfkxiRfHneNc22I5/aBST6Z5Dttn8+eRJ1zJcn7k2xLcsOA8XO/7aqqRflHc6L8/wJHA3sB3wGOmzbNi4HP0nzP4yTgG5Oue8T9fTZwUDv8ooXc32H73DPdF4HPAC+fdN1jeJwfR3P1gye0tw+ddN1j6PMfA/+tHV4O/BDYa9K170affw14OnDDgPFzvu1azHsWD11CpKp+Buy6hEiv04APVONq4HFJDh93oXOks79V9bWq+uf25tU032dZyIZ5jAHeAHwU2DbO4kZkmD7/J+BjVXU7QFUt9H4P0+cCHpskwP40YbFjvGXOnar6Ck0fBpnzbddiDot+lxBZMYtpFopH2pdzaN6ZLGSdfU6yAngZ8J4x1jVKwzzOTwIOSvKlJNcmOXNs1Y3GMH3+n8BTaL7M+13gjVX14HjKm4g533YtiO9ZjMgwlxAZ6jIjC8TQfUnyfJqweO5IKxq9Yfr8duC8qtrZvOlc8Ibp81LgGcDJwD7A15NcXVV/P+riRmSYPp8CXAe8APgl4Mok/6eqfjTi2iZlzrddizkshrmEyJ50mZGh+pLkl4H3Ai+qqh+MqbZRGabPa4BL26BYBrw4yY6q+sRYKpx7wz6v76mq+4H7k3wFeCqwUMNimD6fDVxYzQH9qSS3AU8GrhlPiWM359uuxXwYaphLiGwEzmw/WXAScG9V3TXuQudIZ3+TPAH4GPCaBfwus1dnn6vqqKpaVVWrgMuB31nAQQHDPa+vAP5tkqVJ9qW5gvPNY65zLg3T59tp9qRIchhwLLCFPdecb7sW7Z5FDbiESJLfbse/h+bTMS8GpoCf0Lw7WZCG7O+fAocAF7XvtHfUAr5i55B93qMM0+equjnJ54DrgQdpfnmy70cwF4IhH+c/By5O8l2aQzTnVdWCvXR5kg8BzwOWJdkKvBV4NIxu2+XlPiRJnRbzYShJ0pAMC0lSJ8NCktTJsJAkdTIspAUmyelJjpvD5b02yRFztTztmQwLaZaSTOqj56cDfcNiljW9FjAsNCM/Oqs9Unu9oz+kucTB9cB/Bt5Pc8XR7TSfO7+X5gqlR1fVg+0X1G6huXrpE4B3tdP/BPitqvpekotpLuD2NOBbwIdpLhmyD/BT4OyquqVd1sU03xK+GVgFnFtVm5P8e+C/AnvTXC317Kq6b0A/LgReSnPRuy/QfGnyU23t9wL/AXgf8DXgOTRfxvo3wKeq6vJ2GfdV1f7t8B8Br6H5fsVngc1tnf/Y1v+sqvrpI7u3tShM+lK7/vk313/A8TQb/WXt7YOBTwJntbdfB3yiHb4CeH47/B9pvqAGsAlY3Q7/KvDFdvhimo31kvb2AcDSdviFwEfb4T8E/lc7fALNxn4NzSVFvgLs1447D/jTAf04uO3Hrjd1j+up4eU9030JuKjn9vTx97X/X0QTKvvuWn7P/Gsm/bj5N7//Fu03uLVHewFwebXf0K2qHyZ5FvCb7fi/Bf57O/xhmpC4iuYyERcl2Z/mtz0+0nNxwb17lv+RqtrZDh8IXJJkNc1ezKPb9ucC72jXf0OS69v2k2gOIf1du+y9gK8P6MePgH8F3pvk0zQhNciHZxi3ywuBv6mqn7R1zXSJa+lhDAvtiUL3FTZ3jd8IvC3JwTRXYv0isB/wL1X1KwPmvb9n+M+Bq6rqZUlW0bxL31XDoNqurKpXdtRHNZexOJHmmkZrgd+lCcKumnbQno9sf79hr551e9xZs+IJbu2JNgGvSHIIQBsEX6PZ4AK8CvgqQDXnCq6h2Qv4VFXtrOay1bclOaOdPxn8E7MH0hzvh+ZE8S5fBV7Rzn8czXkEaH5U6jlJjmnH7ZvkSf0W3O7hHFhVnwHeBPxKO+rHwGNn6P8/0AQfND+Cs2tv5wvA69rzKbvul2GWJxkW2vNU1Y3AeuDLSb4D/CXwe8DZ7eGg1wBv7Jnlw8CrefihnFcB57Tz30j/X9iD5nDW25L8Hc1F7Ha5CFjeru88mpPs91bVdppQ+VA77mqak+D9PBb4VDvdl4E3t+2XAm9J8u0kv9Rnvr8Gfj3JNTTnW+5v75fP0exJbU5yHc15FWjOcbwnzW9y7zOgFi1yfhpKGoEkS4BHV9W/thv0TcCTqvnZT2nB8ZyFNBr7AlcleTTNuYLXGxRayNyzkOaBJB8HjprWfF5VfX4S9UjTGRaSpE6e4JYkdTIsJEmdDAtJUifDQpLUybCQJHUyLCRJnf4/VGT/VIxV70gAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -404,43 +426,107 @@ } ], "source": [ - "sns.histplot(GOs[GOs['overlap'] != 'complete overlap']['coverage_struct'], bins=100)" + "sns.histplot(GOs[GOs['overlap'] == 'partial overlap - unique GOs']['coverage_struct'], bins=100)" ] }, { "cell_type": "code", - "execution_count": 255, + "execution_count": 127, "id": "f628c3eb-422c-403d-b267-ec10489171df", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.6454013592969468" + "0.4821899253270338" ] }, - "execution_count": 255, + "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "np.mean(GOs[GOs['overlap'] != 'complete overlap']['coverage_struct'])" + "np.mean(GOs[GOs['overlap'] == 'partial overlap - unique GOs']['coverage_struct'])" ] }, { "cell_type": "markdown", - "id": "1bc8b46c-37e3-46b3-8ca8-e85ab8e47038", + "id": "1052628d-b179-431e-8207-4c8065783aaf", + "metadata": {}, + "source": [ + "Within the 'partial overlap - unique GOs' category, stuctural GO terms on average contain around 50 % of the overlapping GO terms with a fairly uniform distribution between 0 and 100 %." + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "93eca691-0659-4516-8945-32a9b854c7e9", "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='coverage_seq', ylabel='Count'>" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "Of all proteins that are not completely overlapping, the coverage of GO terms overlapping within the GO terms of *strucural* annotations is around 65 %. " + "sns.histplot(GOs[GOs['overlap'] == 'partial overlap - unique GOs']['coverage_seq'], bins=100)" ] }, { "cell_type": "code", - "execution_count": 256, - "id": "582eaae9-25f8-4be3-99f0-aef7a0c438a0", + "execution_count": 129, + "id": "7036de66-bc32-4445-a88c-53ba9d37dae3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.48056632457400206" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOs[GOs['overlap'] == 'partial overlap - unique GOs']['coverage_seq'])" + ] + }, + { + "cell_type": "markdown", + "id": "5cd43819-c561-40dd-bbf8-226e2830ba4f", "metadata": {}, + "source": [ + "Within the 'partial overlap - unique GOs' category, sequence GO terms on average contain around 50 % of the overlapping GO terms. This is very similar to the strucutral GO terms." + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "ae564ff4-2ed4-48bf-83c3-ca9f27cf7acb", + "metadata": { + "tags": [] + }, "outputs": [ { "data": { @@ -448,13 +534,13 @@ "<AxesSubplot:xlabel='coverage_seq', ylabel='Count'>" ] }, - "execution_count": 256, + "execution_count": 130, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -466,36 +552,144 @@ } ], "source": [ - "sns.histplot(GOs[GOs['overlap'] != 'complete overlap']['coverage_seq'], bins=100)" + "sns.histplot(GOs[GOs['overlap'] == 'partial overlap - sequence GOs expanded']['coverage_seq'], bins=200)" ] }, { "cell_type": "code", - "execution_count": 257, - "id": "cc844026-2562-4ee2-a107-95a68c627a40", + "execution_count": 131, + "id": "93c9e292-8a15-4fcb-9695-bfc77e13048c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.6510767765619442" + "0.7126174034458369" ] }, - "execution_count": 257, + "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "np.mean(GOs[GOs['overlap'] != 'complete overlap']['coverage_seq'])" + "np.mean(GOs[GOs['overlap'] == 'partial overlap - sequence GOs expanded']['coverage_seq'])" ] }, { "cell_type": "markdown", - "id": "b6659ef1-6b7c-4a5b-b50e-0ff4ab593783", + "id": "a1b232a6-c2e4-494e-ae1a-b4a84173efa4", + "metadata": {}, + "source": [ + "In the cases in which sequence annotations produce more GO terms (but have all structure GO terms included), the distribution shows that on average, structure GO terms make up around 70 % of the sequence GO terms." + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "75c5c9ba-9bfa-4934-8656-a43ac2bcb0e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='coverage_struct', ylabel='Count'>" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.histplot(GOs[GOs['overlap'] == 'partial overlap - structure GOs expanded']['coverage_struct'], bins=200)" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "143b5d56-fad4-449e-ae57-4c35afa6fefd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6018304051791242" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOs[GOs['overlap'] == 'partial overlap - structure GOs expanded']['coverage_struct'])" + ] + }, + { + "cell_type": "markdown", + "id": "b4fec2e2-2ce6-44cd-be93-3a223d930475", + "metadata": {}, + "source": [ + "In the cases in which structure annotations produce more GO terms (but have all sequence GO terms included), the distribution shows that on average, sequence GO terms make up around 60 % of the sequence GO terms. Structure produced in these cases 40 % more GO terms. " + ] + }, + { + "cell_type": "markdown", + "id": "cec19425-3e48-4df5-bda0-b8a93b4fb3bd", + "metadata": {}, + "source": [ + "In this analysis, we solely compare the identifier and number of GO terms, however not their similarity. To compare the similarity of GO term annotations, we focus on semantic similarity of GO terms from annotations pairs in the 'partial overlap' category:" + ] + }, + { + "cell_type": "markdown", + "id": "0b9f8227-8625-4e53-88f0-84f7564cbb21", + "metadata": {}, + "source": [ + "## GO term semantic similarity for partial GO term overlaps between structure and sequence based protein annotations" + ] + }, + { + "cell_type": "code", + "execution_count": 258, + "id": "119a9f49-871c-445c-a729-db5fe80d0cf4", + "metadata": {}, + "outputs": [], + "source": [ + "partial = (GOs['overlap'] == 'partial overlap - unique GOs') |( GOs['overlap'] == 'partial overlap - structure GOs expanded') | (GOs['overlap'] == 'partial overlap - sequence GOs expanded')" + ] + }, + { + "cell_type": "code", + "execution_count": 259, + "id": "2123153f-fec7-41d7-a6ec-5f8e50f3b51e", + "metadata": {}, + "outputs": [], + "source": [ + "GOs_partial = GOs[partial]" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "id": "2a78b465-9630-4b42-976a-d94ecf6f6ff5", "metadata": {}, + "outputs": [], "source": [ - "Of all proteins that are not completely overlapping, the coverage of GO terms overlapping within the GO terms of sequence annotations is again around 65 %. " + "GOs_partial_unique = GOs_partial[GOs_partial['overlap'] == 'partial overlap - unique GOs']" ] }, { @@ -503,7 +697,7 @@ "id": "2531a431-6d03-4c4b-bb22-86ef4755c6ce", "metadata": {}, "source": [ - "## Check semantic similarity of GO terms of sequence-structure protein pairs" + "### Check semantic similarity of GO terms of partial overlapping sequence-structure protein pairs with unique GO terms on both sides" ] }, { @@ -516,31 +710,32 @@ }, { "cell_type": "code", - "execution_count": 258, - "id": "3d0dbc57-a86a-4898-9bc0-61970b379817", + "execution_count": 137, + "id": "bb190be1-e0c8-440d-92bf-fea4b44c7374", "metadata": {}, "outputs": [], "source": [ - "GOs_GOGO = GOs[['GOs_struct', 'GOs_seq']]" + "GOs_partial_unique_GOGO = GOs_partial_unique[['GOs_struct', 'GOs_seq']]" ] }, { "cell_type": "code", - "execution_count": 259, - "id": "c13c5605-d293-4558-a9d1-5551ef57fb1b", + "execution_count": 138, + "id": "9dc03262-9257-4447-80d6-304743793b4a", "metadata": {}, "outputs": [], "source": [ "# iterate over each row and each column\n", - "for i, row in GOs_GOGO.iterrows():\n", - " for col in GOs_GOGO.columns:\n", + "for i, row in GOs_partial_unique_GOGO.iterrows():\n", + " for col in GOs_partial_unique_GOGO.columns:\n", " # separate the elements in the list with a space\n", - " GOs_GOGO.at[i, col] = \" \".join(str(x) for x in row[col])\n", - " # add the index of the row to the beginning of the list\n", - " GOs_GOGO.at[i, col] = str(i) + \" \" + GOs_GOGO.at[i, col]\n", + " GOs_partial_unique_GOGO.at[i, col] = \" \".join(str(x) for x in row[col])\n", + " # add the index of the row to the beginning of the list\n", + " GOs_partial_unique_GOGO.at[i, 'GOs_struct'] = str(i) + \"_struct\" + \" \" + GOs_partial_unique_GOGO.at[i, 'GOs_struct']\n", + " GOs_partial_unique_GOGO.at[i, 'GOs_seq'] = str(i) + \"_seq\" + \" \" + GOs_partial_unique_GOGO.at[i, 'GOs_seq']\n", "\n", "# save the dataframe to a txt file without the header and index\n", - "GOs_GOGO.to_csv(\"/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_input.txt\", sep=\";\", index=False, header=False)" + "GOs_partial_unique_GOGO.to_csv(\"/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_partial_unique_input.txt\", sep=\";\", index=False, header=False)" ] }, { @@ -548,73 +743,73 @@ "id": "5958c38f-58b8-4c2e-9fe3-f5ffceba9da0", "metadata": {}, "source": [ - "I ran GOGO locally: `perl gene_pair_comb.pl ~/Desktop/GOGO_input.txt ~/Desktop/GOGO_input_result.txt`" + "I ran GOGO locally: `perl gene_pair_comb.pl ~/Desktop/GOGO_partial_unique_input.txt ~/Desktop/GOGO_partial_unique_input_result.txt`" ] }, { "cell_type": "code", - "execution_count": 260, + "execution_count": 139, "id": "101e4b9a-e315-406c-8cee-ba1115e55208", "metadata": {}, "outputs": [], "source": [ - "GOGO_result = pd.read_csv('/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_input_result.txt', sep=';', header=None)" + "GOGO_result_unique = pd.read_csv('/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_partial_unique_input_result.txt', sep=';', header=None)" ] }, { "cell_type": "code", - "execution_count": 261, + "execution_count": 140, "id": "23985e19-becf-40ed-8047-cbcd3b1258f4", "metadata": {}, "outputs": [], "source": [ - "GOGO_result.rename(columns={0 :'GOs_struct', 1 :'GOs_seq'}, inplace=True)" + "GOGO_result_unique.rename(columns={0 :'GOs_struct', 1 :'GOs_seq'}, inplace=True)" ] }, { "cell_type": "code", - "execution_count": 262, + "execution_count": 141, "id": "854e6e6d-5834-418e-8fcc-24c33846a5ef", "metadata": {}, "outputs": [], "source": [ - "GOGO_result['GOs_struct'] = GOGO_result['GOs_struct'].str.split(' ').str[1:]" + "GOGO_result_unique['GOs_struct'] = GOGO_result_unique['GOs_struct'].str.split(' ').str[1:]" ] }, { "cell_type": "code", - "execution_count": 263, + "execution_count": 142, "id": "60e1b05f-761a-4153-a38f-586143883f34", "metadata": {}, "outputs": [], "source": [ - "GOGO_result['GOs_seq'] = GOGO_result['GOs_seq'].str.split(' ').str[1:]" + "GOGO_result_unique['GOs_seq'] = GOGO_result_unique['GOs_seq'].str.split(' ').str[1:]" ] }, { "cell_type": "code", - "execution_count": 264, + "execution_count": 143, "id": "86603707-9eab-4fee-ade7-42077ed24068", "metadata": {}, "outputs": [], "source": [ "# create a new column in the dataframe\n", - "GOGO_result['BPO'] = None\n", - "GOGO_result['CCO'] = None\n", - "GOGO_result['MFO'] = None\n", + "GOGO_result_unique['BPO'] = None\n", + "GOGO_result_unique['CCO'] = None\n", + "GOGO_result_unique['MFO'] = None\n", "\n", "# iterate over each row in the dataframe\n", - "for i, row in GOGO_result.iterrows():\n", + "for i, row in GOGO_result_unique.iterrows():\n", " # get the fifth last element of the list in col1\n", " # and store it in the new column\n", - " GOGO_result.at[i, 'BPO'] = row['GOs_seq'][-5]\n", - " GOGO_result.at[i, 'CCO'] = row['GOs_seq'][-3]\n", - " GOGO_result.at[i, 'MFO'] = row['GOs_seq'][-1]" + " GOGO_result_unique.at[i, 'BPO'] = row['GOs_seq'][-5]\n", + " GOGO_result_unique.at[i, 'CCO'] = row['GOs_seq'][-3]\n", + " GOGO_result_unique.at[i, 'MFO'] = row['GOs_seq'][-1]" ] }, { "cell_type": "code", - "execution_count": 265, + "execution_count": 144, "id": "fe401867-0ab5-46df-88ba-4b560b00cf7d", "metadata": {}, "outputs": [ @@ -649,43 +844,43 @@ " <tbody>\n", " <tr>\n", " <th>0</th>\n", - " <td>[GO:0000902, GO:0000904, GO:0001654, GO:000174...</td>\n", - " <td>[GO:0000902, GO:0000904, GO:0001654, GO:000174...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", " <td>[GO:0003674, GO:0005215]</td>\n", " <td>[GO:0000166, GO:0003674, GO:0003676, GO:000372...</td>\n", " <td>NA</td>\n", " <td>NA</td>\n", - " <td>1.000</td>\n", + " <td>0.414</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>[GO:0001101, GO:0005575, GO:0005623, GO:000588...</td>\n", + " <td>[GO:0003674, GO:0003824, GO:0004721, GO:000472...</td>\n", + " <td>0.410</td>\n", + " <td>0.635</td>\n", + " <td>NA</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", - " <td>[GO:0001539, GO:0003674, GO:0003774, GO:000377...</td>\n", - " <td>[GO:0001539, GO:0003674, GO:0003774, GO:000377...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <td>[GO:0003674, GO:0003824, GO:0004721, GO:000557...</td>\n", + " <td>[GO:0000003, GO:0000079, GO:0000082, GO:000008...</td>\n", + " <td>0.598</td>\n", + " <td>0.704</td>\n", + " <td>0.820</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>[GO:0000323, GO:0001959, GO:0002682, GO:000367...</td>\n", - " <td>[GO:0000323, GO:0001959, GO:0002682, GO:000367...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <td>[GO:0001731, GO:0002181, GO:0002183, GO:000367...</td>\n", + " <td>[GO:0001731, GO:0002181, GO:0002183, GO:000367...</td>\n", + " <td>0.872</td>\n", + " <td>0.822</td>\n", + " <td>0.897</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", - " <td>[GO:0000166, GO:0000323, GO:0001882, GO:000188...</td>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <td>[GO:0003674, GO:0005215, GO:0005216, GO:000522...</td>\n", + " <td>[GO:0003674, GO:0005215, GO:0005216, GO:000522...</td>\n", + " <td>0.759</td>\n", + " <td>0.869</td>\n", + " <td>0.961</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", @@ -696,466 +891,1285 @@ " <td>...</td>\n", " </tr>\n", " <tr>\n", - " <th>11627</th>\n", - " <td>[GO:0000003, GO:0000165, GO:0000166, GO:000156...</td>\n", - " <td>[GO:0000003, GO:0000165, GO:0001654, GO:000170...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <th>2355</th>\n", + " <td>[GO:0000003, GO:0000302, GO:0001501, GO:000155...</td>\n", + " <td>[GO:0003674, GO:0005488, GO:0005515, GO:000554...</td>\n", + " <td>0.575</td>\n", + " <td>0.785</td>\n", + " <td>0.992</td>\n", " </tr>\n", " <tr>\n", - " <th>11628</th>\n", - " <td>[GO:0003674, GO:0003676, GO:0003723, GO:000548...</td>\n", - " <td>[GO:0003674, GO:0003676, GO:0003723, GO:000548...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <th>2356</th>\n", + " <td>[GO:0000228, GO:0000785, GO:0000790, GO:000557...</td>\n", + " <td>[GO:0000428, GO:0003674, GO:0003824, GO:000389...</td>\n", + " <td>0.425</td>\n", + " <td>0.889</td>\n", + " <td>NA</td>\n", " </tr>\n", " <tr>\n", - " <th>11629</th>\n", - " <td>[GO:0000012, GO:0000166, GO:0000228, GO:000072...</td>\n", - " <td>[GO:0000012, GO:0000166, GO:0000228, GO:000072...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <th>2357</th>\n", + " <td>[GO:0000138, GO:0000139, GO:0000226, GO:000367...</td>\n", + " <td>[GO:0000138, GO:0003674, GO:0005488, GO:000551...</td>\n", + " <td>0.552</td>\n", + " <td>0.923</td>\n", " <td>1.000</td>\n", " </tr>\n", " <tr>\n", - " <th>11630</th>\n", - " <td>[GO:0000003, GO:0000578, GO:0001700, GO:000300...</td>\n", - " <td>[GO:0000003, GO:0000578, GO:0001700, GO:000300...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <th>2358</th>\n", + " <td>[GO:0000323, GO:0000902, GO:0000904, GO:000367...</td>\n", + " <td>[GO:0001501, GO:0001894, GO:0001932, GO:000193...</td>\n", + " <td>0.644</td>\n", + " <td>0.701</td>\n", + " <td>0.891</td>\n", " </tr>\n", " <tr>\n", - " <th>11631</th>\n", - " <td>[GO:0000151, GO:0000209, GO:0000226, GO:000367...</td>\n", - " <td>[GO:0000151, GO:0000209, GO:0003674, GO:000382...</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", - " <td>1.000</td>\n", + " <th>2359</th>\n", + " <td>[GO:0000122, GO:0000149, GO:0000165, GO:000018...</td>\n", + " <td>[GO:0001944, GO:0001945, GO:0001946, GO:000367...</td>\n", + " <td>0.665</td>\n", + " <td>0.851</td>\n", + " <td>0.825</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", - "<p>11632 rows × 5 columns</p>\n", + "<p>2360 rows × 5 columns</p>\n", "</div>" ], "text/plain": [ - " GOs_struct \\\n", - "0 [GO:0000902, GO:0000904, GO:0001654, GO:000174... \n", - "1 [GO:0003674, GO:0005215] \n", - "2 [GO:0001539, GO:0003674, GO:0003774, GO:000377... \n", - "3 [GO:0000323, GO:0001959, GO:0002682, GO:000367... \n", - "4 [GO:0000166, GO:0000323, GO:0001882, GO:000188... \n", - "... ... \n", - "11627 [GO:0000003, GO:0000165, GO:0000166, GO:000156... \n", - "11628 [GO:0003674, GO:0003676, GO:0003723, GO:000548... \n", - "11629 [GO:0000012, GO:0000166, GO:0000228, GO:000072... \n", - "11630 [GO:0000003, GO:0000578, GO:0001700, GO:000300... \n", - "11631 [GO:0000151, GO:0000209, GO:0000226, GO:000367... \n", + " GOs_struct \\\n", + "0 [GO:0003674, GO:0005215] \n", + "1 [GO:0001101, GO:0005575, GO:0005623, GO:000588... \n", + "2 [GO:0003674, GO:0003824, GO:0004721, GO:000557... \n", + "3 [GO:0001731, GO:0002181, GO:0002183, GO:000367... \n", + "4 [GO:0003674, GO:0005215, GO:0005216, GO:000522... \n", + "... ... \n", + "2355 [GO:0000003, GO:0000302, GO:0001501, GO:000155... \n", + "2356 [GO:0000228, GO:0000785, GO:0000790, GO:000557... \n", + "2357 [GO:0000138, GO:0000139, GO:0000226, GO:000367... \n", + "2358 [GO:0000323, GO:0000902, GO:0000904, GO:000367... \n", + "2359 [GO:0000122, GO:0000149, GO:0000165, GO:000018... \n", "\n", - " GOs_seq BPO CCO MFO \n", - "0 [GO:0000902, GO:0000904, GO:0001654, GO:000174... 1.000 1.000 1.000 \n", - "1 [GO:0000166, GO:0003674, GO:0003676, GO:000372... NA NA 1.000 \n", - "2 [GO:0001539, GO:0003674, GO:0003774, GO:000377... 1.000 1.000 1.000 \n", - "3 [GO:0000323, GO:0001959, GO:0002682, GO:000367... 1.000 1.000 1.000 \n", - "4 [GO:0005575, GO:0005622, GO:0005623, GO:000573... 1.000 1.000 1.000 \n", - "... ... ... ... ... \n", - "11627 [GO:0000003, GO:0000165, GO:0001654, GO:000170... 1.000 1.000 1.000 \n", - "11628 [GO:0003674, GO:0003676, GO:0003723, GO:000548... 1.000 1.000 1.000 \n", - "11629 [GO:0000012, GO:0000166, GO:0000228, GO:000072... 1.000 1.000 1.000 \n", - "11630 [GO:0000003, GO:0000578, GO:0001700, GO:000300... 1.000 1.000 1.000 \n", - "11631 [GO:0000151, GO:0000209, GO:0003674, GO:000382... 1.000 1.000 1.000 \n", + " GOs_seq BPO CCO MFO \n", + "0 [GO:0000166, GO:0003674, GO:0003676, GO:000372... NA NA 0.414 \n", + "1 [GO:0003674, GO:0003824, GO:0004721, GO:000472... 0.410 0.635 NA \n", + "2 [GO:0000003, GO:0000079, GO:0000082, GO:000008... 0.598 0.704 0.820 \n", + "3 [GO:0001731, GO:0002181, GO:0002183, GO:000367... 0.872 0.822 0.897 \n", + "4 [GO:0003674, GO:0005215, GO:0005216, GO:000522... 0.759 0.869 0.961 \n", + "... ... ... ... ... \n", + "2355 [GO:0003674, GO:0005488, GO:0005515, GO:000554... 0.575 0.785 0.992 \n", + "2356 [GO:0000428, GO:0003674, GO:0003824, GO:000389... 0.425 0.889 NA \n", + "2357 [GO:0000138, GO:0003674, GO:0005488, GO:000551... 0.552 0.923 1.000 \n", + "2358 [GO:0001501, GO:0001894, GO:0001932, GO:000193... 0.644 0.701 0.891 \n", + "2359 [GO:0001944, GO:0001945, GO:0001946, GO:000367... 0.665 0.851 0.825 \n", "\n", - "[11632 rows x 5 columns]" + "[2360 rows x 5 columns]" ] }, - "execution_count": 265, + "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "GOGO_result" + "GOGO_result_unique" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "id": "c7dfe425-7158-4f16-97a1-eb6ea0542d03", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_unique_BPO = GOGO_result_unique['BPO'][GOGO_result_unique['BPO'] != 'NA'].astype('float')" ] }, { "cell_type": "code", - "execution_count": 266, + "execution_count": 146, "id": "05de5391-becd-4500-bac2-450632bbf482", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(1.000 11161\n", - " NA 471\n", - " Name: BPO, dtype: int64,\n", - " 1.000 11159\n", - " NA 473\n", - " Name: CCO, dtype: int64,\n", - " 1.000 10090\n", - " NA 1542\n", - " Name: MFO, dtype: int64)" + "<AxesSubplot:xlabel='BPO', ylabel='Count'>" ] }, - "execution_count": 266, + "execution_count": 146, "metadata": {}, "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "GOGO_result['BPO'].value_counts(),GOGO_result['CCO'].value_counts(),GOGO_result['MFO'].value_counts()" + "sns.histplot(GOGO_result_unique_BPO, bins=100)" ] }, { - "cell_type": "markdown", - "id": "3582746f-d5cb-4bd4-9163-7da1b4889d70", + "cell_type": "code", + "execution_count": 147, + "id": "d717eedf-d4db-48c2-a2ed-baa0529c40a1", "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6656481398476022" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "This output is a little weird and concerning at first. IN all cases where semantic similarity (Biological Process, Cellular component, Molecular Function) is also to be calculated, we have scores of 1.000. How is this possible when we have a few cases where there is no overlap of GO terms whatsoever?" + "np.mean(GOGO_result_unique_BPO)" ] }, { "cell_type": "code", - "execution_count": 267, - "id": "a60e24f5-45dd-4938-acfa-901fcfda11d2", + "execution_count": 148, + "id": "f388fa0c-5b4d-49ce-9b48-386d3f33acfe", "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>GOs_struct</th>\n", - " <th>GOs_seq</th>\n", - " <th>overlap</th>\n", - " <th>coverage_struct</th>\n", - " <th>coverage_seq</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>737</th>\n", - " <td>[GO:0000322, GO:0000323, GO:0000324, GO:000032...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1341</th>\n", - " <td>[GO:0003197, GO:0003205, GO:0003279, GO:000727...</td>\n", - " <td>[GO:0005575, GO:0005576, GO:0005615, GO:000562...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1715</th>\n", - " <td>[GO:0000166, GO:0003674, GO:0003824, GO:000548...</td>\n", - " <td>[GO:0005575, GO:0005618, GO:0005622, GO:000562...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2818</th>\n", - " <td>[GO:0005575, GO:0005623, GO:0005886, GO:001602...</td>\n", - " <td>[GO:0008150, GO:0009966, GO:0009967, GO:001064...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4012</th>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515, GO:001989...</td>\n", - " <td>[GO:0000139, GO:0005575, GO:0005622, GO:000562...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4937</th>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515, GO:001990...</td>\n", - " <td>[GO:0000228, GO:0000785, GO:0000790, GO:000557...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + "text/plain": [ + "<AxesSubplot:xlabel='CCO', ylabel='Count'>" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "GOGO_result_unique_CCO = GOGO_result_unique['CCO'][GOGO_result_unique['CCO'] != 'NA'].astype('float')\n", + "sns.histplot(GOGO_result_unique_CCO, bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "13d7959f-32ce-4688-b387-22e1f9db6d09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8254611161939618" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOGO_result_unique_CCO)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "d85ef2a1-e21d-4a1a-b5e9-926544becf5b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='MFO', ylabel='Count'>" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "GOGO_result_unique_MFO = GOGO_result_unique['MFO'][GOGO_result_unique['MFO'] != 'NA'].astype('float')\n", + "sns.histplot(GOGO_result_unique_MFO, bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "7a07389d-92e8-42c4-9331-412b5fd29079", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7859392819429791" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOGO_result_unique_MFO)" + ] + }, + { + "cell_type": "markdown", + "id": "7a66d7b6-84fd-43d9-ac17-d810ed63c11c", + "metadata": {}, + "source": [ + "### Check semantic similarity of GO terms of partial overlapping sequence-structure protein pairs with additional GO terms on either side" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "84d8e039-e16d-4482-8552-9099501bf47e", + "metadata": {}, + "outputs": [], + "source": [ + "GOs_partial_expanded = GOs_partial[GOs_partial['overlap'] != 'partial overlap - unique GOs']" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "b49002d7-ffb8-4e2c-a3bd-b0c16835318c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>GOs_struct</th>\n", + " <th>GOs_seq</th>\n", + " <th>overlap</th>\n", + " <th>coverage_struct</th>\n", + " <th>coverage_seq</th>\n", " </tr>\n", + " </thead>\n", + " <tbody>\n", " <tr>\n", - " <th>14652</th>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:0044464]</td>\n", - " <td>[GO:0007275, GO:0007399, GO:0008150, GO:000998...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>11</th>\n", + " <td>[GO:0000166, GO:0000323, GO:0001882, GO:000188...</td>\n", + " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", + " <td>partial overlap - structure GOs expanded</td>\n", + " <td>0.183246</td>\n", + " <td>1.000000</td>\n", " </tr>\n", " <tr>\n", - " <th>20744</th>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", - " <td>[GO:0003674, GO:0003824, GO:0003964, GO:000613...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>12</th>\n", + " <td>[GO:0003674, GO:0004857, GO:0005095, GO:000548...</td>\n", + " <td>[GO:0002376, GO:0002520, GO:0003674, GO:000485...</td>\n", + " <td>partial overlap - sequence GOs expanded</td>\n", + " <td>1.000000</td>\n", + " <td>0.742424</td>\n", " </tr>\n", " <tr>\n", - " <th>21097</th>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", - " <td>[GO:0003674, GO:0003824, GO:0003924, GO:000548...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>21</th>\n", + " <td>[GO:0000166, GO:0001501, GO:0001503, GO:000150...</td>\n", + " <td>[GO:0000041, GO:0000166, GO:0001501, GO:000150...</td>\n", + " <td>partial overlap - sequence GOs expanded</td>\n", + " <td>1.000000</td>\n", + " <td>0.896000</td>\n", " </tr>\n", " <tr>\n", - " <th>27083</th>\n", - " <td>[GO:0003674, GO:0003824, GO:0006629, GO:000815...</td>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>35</th>\n", + " <td>[GO:0000122, GO:0000166, GO:0000228, GO:000078...</td>\n", + " <td>[GO:0000122, GO:0000166, GO:0000228, GO:000078...</td>\n", + " <td>partial overlap - sequence GOs expanded</td>\n", + " <td>1.000000</td>\n", + " <td>0.969112</td>\n", " </tr>\n", " <tr>\n", - " <th>28309</th>\n", - " <td>[GO:0000075, GO:0000077, GO:0000278, GO:000028...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>66</th>\n", + " <td>[GO:0003674, GO:0003824, GO:0004364, GO:000548...</td>\n", + " <td>[GO:0001101, GO:0001885, GO:0002064, GO:000315...</td>\n", + " <td>partial overlap - sequence GOs expanded</td>\n", + " <td>1.000000</td>\n", + " <td>0.675159</td>\n", " </tr>\n", " <tr>\n", - " <th>35725</th>\n", - " <td>[GO:0003008, GO:0005575, GO:0005623, GO:000727...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515, GO:0005516]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", " </tr>\n", " <tr>\n", - " <th>36403</th>\n", - " <td>[GO:0003674, GO:0003779, GO:0005488, GO:000551...</td>\n", - " <td>[GO:0006355, GO:0008150, GO:0009889, GO:000989...</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>41924</th>\n", + " <td>[GO:0000278, GO:0001726, GO:0002090, GO:000209...</td>\n", + " <td>[GO:0000278, GO:0001726, GO:0002090, GO:000209...</td>\n", + " <td>partial overlap - sequence GOs expanded</td>\n", + " <td>1.000000</td>\n", + " <td>0.825397</td>\n", " </tr>\n", " <tr>\n", - " <th>38385</th>\n", - " <td>[GO:0007154, GO:0007267, GO:0008150, GO:000960...</td>\n", - " <td>[GO:0005575, GO:0005576]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>41925</th>\n", + " <td>[GO:0000049, GO:0000166, GO:0001514, GO:000188...</td>\n", + " <td>[GO:0001514, GO:0003674, GO:0003676, GO:000372...</td>\n", + " <td>partial overlap - structure GOs expanded</td>\n", + " <td>0.729167</td>\n", + " <td>1.000000</td>\n", " </tr>\n", " <tr>\n", - " <th>38735</th>\n", - " <td>[GO:0000322, GO:0000323, GO:0000324, GO:000032...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>41931</th>\n", + " <td>[GO:0000775, GO:0003674, GO:0005488, GO:000551...</td>\n", + " <td>[GO:0000775, GO:0003674, GO:0005488, GO:000551...</td>\n", + " <td>partial overlap - structure GOs expanded</td>\n", + " <td>0.944785</td>\n", + " <td>1.000000</td>\n", " </tr>\n", " <tr>\n", - " <th>39987</th>\n", - " <td>[GO:0000322, GO:0000323, GO:0000324, GO:000032...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>41936</th>\n", + " <td>[GO:0000003, GO:0000165, GO:0000166, GO:000156...</td>\n", + " <td>[GO:0000003, GO:0000165, GO:0001654, GO:000170...</td>\n", + " <td>partial overlap - structure GOs expanded</td>\n", + " <td>0.386813</td>\n", + " <td>1.000000</td>\n", " </tr>\n", " <tr>\n", - " <th>41192</th>\n", - " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000563...</td>\n", - " <td>[GO:0003674, GO:0005488, GO:0005515, GO:0042802]</td>\n", - " <td>no overlap</td>\n", - " <td>0.0</td>\n", - " <td>0.0</td>\n", + " <th>41942</th>\n", + " <td>[GO:0000151, GO:0000209, GO:0000226, GO:000367...</td>\n", + " <td>[GO:0000151, GO:0000209, GO:0003674, GO:000382...</td>\n", + " <td>partial overlap - structure GOs expanded</td>\n", + " <td>0.795918</td>\n", + " <td>1.000000</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", + "<p>2203 rows × 5 columns</p>\n", "</div>" ], "text/plain": [ " GOs_struct \\\n", - "737 [GO:0000322, GO:0000323, GO:0000324, GO:000032... \n", - "1341 [GO:0003197, GO:0003205, GO:0003279, GO:000727... \n", - "1715 [GO:0000166, GO:0003674, GO:0003824, GO:000548... \n", - "2818 [GO:0005575, GO:0005623, GO:0005886, GO:001602... \n", - "4012 [GO:0003674, GO:0005488, GO:0005515, GO:001989... \n", - "4937 [GO:0003674, GO:0005488, GO:0005515, GO:001990... \n", - "14652 [GO:0005575, GO:0005622, GO:0005623, GO:0044464] \n", - "20744 [GO:0005575, GO:0005622, GO:0005623, GO:000573... \n", - "21097 [GO:0005575, GO:0005622, GO:0005623, GO:000573... \n", - "27083 [GO:0003674, GO:0003824, GO:0006629, GO:000815... \n", - "28309 [GO:0000075, GO:0000077, GO:0000278, GO:000028... \n", - "35725 [GO:0003008, GO:0005575, GO:0005623, GO:000727... \n", - "36403 [GO:0003674, GO:0003779, GO:0005488, GO:000551... \n", - "38385 [GO:0007154, GO:0007267, GO:0008150, GO:000960... \n", - "38735 [GO:0000322, GO:0000323, GO:0000324, GO:000032... \n", - "39987 [GO:0000322, GO:0000323, GO:0000324, GO:000032... \n", - "41192 [GO:0005575, GO:0005622, GO:0005623, GO:000563... \n", + "11 [GO:0000166, GO:0000323, GO:0001882, GO:000188... \n", + "12 [GO:0003674, GO:0004857, GO:0005095, GO:000548... \n", + "21 [GO:0000166, GO:0001501, GO:0001503, GO:000150... \n", + "35 [GO:0000122, GO:0000166, GO:0000228, GO:000078... \n", + "66 [GO:0003674, GO:0003824, GO:0004364, GO:000548... \n", + "... ... \n", + "41924 [GO:0000278, GO:0001726, GO:0002090, GO:000209... \n", + "41925 [GO:0000049, GO:0000166, GO:0001514, GO:000188... \n", + "41931 [GO:0000775, GO:0003674, GO:0005488, GO:000551... \n", + "41936 [GO:0000003, GO:0000165, GO:0000166, GO:000156... \n", + "41942 [GO:0000151, GO:0000209, GO:0000226, GO:000367... \n", + "\n", + " GOs_seq \\\n", + "11 [GO:0005575, GO:0005622, GO:0005623, GO:000573... \n", + "12 [GO:0002376, GO:0002520, GO:0003674, GO:000485... \n", + "21 [GO:0000041, GO:0000166, GO:0001501, GO:000150... \n", + "35 [GO:0000122, GO:0000166, GO:0000228, GO:000078... \n", + "66 [GO:0001101, GO:0001885, GO:0002064, GO:000315... \n", + "... ... \n", + "41924 [GO:0000278, GO:0001726, GO:0002090, GO:000209... \n", + "41925 [GO:0001514, GO:0003674, GO:0003676, GO:000372... \n", + "41931 [GO:0000775, GO:0003674, GO:0005488, GO:000551... \n", + "41936 [GO:0000003, GO:0000165, GO:0001654, GO:000170... \n", + "41942 [GO:0000151, GO:0000209, GO:0003674, GO:000382... \n", "\n", - " GOs_seq overlap \\\n", - "737 [GO:0003674, GO:0005488, GO:0005515] no overlap \n", - "1341 [GO:0005575, GO:0005576, GO:0005615, GO:000562... no overlap \n", - "1715 [GO:0005575, GO:0005618, GO:0005622, GO:000562... no overlap \n", - "2818 [GO:0008150, GO:0009966, GO:0009967, GO:001064... no overlap \n", - "4012 [GO:0000139, GO:0005575, GO:0005622, GO:000562... no overlap \n", - "4937 [GO:0000228, GO:0000785, GO:0000790, GO:000557... no overlap \n", - "14652 [GO:0007275, GO:0007399, GO:0008150, GO:000998... no overlap \n", - "20744 [GO:0003674, GO:0003824, GO:0003964, GO:000613... no overlap \n", - "21097 [GO:0003674, GO:0003824, GO:0003924, GO:000548... no overlap \n", - "27083 [GO:0005575, GO:0005622, GO:0005623, GO:000573... no overlap \n", - "28309 [GO:0003674, GO:0005488, GO:0005515] no overlap \n", - "35725 [GO:0003674, GO:0005488, GO:0005515, GO:0005516] no overlap \n", - "36403 [GO:0006355, GO:0008150, GO:0009889, GO:000989... no overlap \n", - "38385 [GO:0005575, GO:0005576] no overlap \n", - "38735 [GO:0003674, GO:0005488, GO:0005515] no overlap \n", - "39987 [GO:0003674, GO:0005488, GO:0005515] no overlap \n", - "41192 [GO:0003674, GO:0005488, GO:0005515, GO:0042802] no overlap \n", + " overlap coverage_struct coverage_seq \n", + "11 partial overlap - structure GOs expanded 0.183246 1.000000 \n", + "12 partial overlap - sequence GOs expanded 1.000000 0.742424 \n", + "21 partial overlap - sequence GOs expanded 1.000000 0.896000 \n", + "35 partial overlap - sequence GOs expanded 1.000000 0.969112 \n", + "66 partial overlap - sequence GOs expanded 1.000000 0.675159 \n", + "... ... ... ... \n", + "41924 partial overlap - sequence GOs expanded 1.000000 0.825397 \n", + "41925 partial overlap - structure GOs expanded 0.729167 1.000000 \n", + "41931 partial overlap - structure GOs expanded 0.944785 1.000000 \n", + "41936 partial overlap - structure GOs expanded 0.386813 1.000000 \n", + "41942 partial overlap - structure GOs expanded 0.795918 1.000000 \n", "\n", - " coverage_struct coverage_seq \n", - "737 0.0 0.0 \n", - "1341 0.0 0.0 \n", - "1715 0.0 0.0 \n", - "2818 0.0 0.0 \n", - "4012 0.0 0.0 \n", - "4937 0.0 0.0 \n", - "14652 0.0 0.0 \n", - "20744 0.0 0.0 \n", - "21097 0.0 0.0 \n", - "27083 0.0 0.0 \n", - "28309 0.0 0.0 \n", - "35725 0.0 0.0 \n", - "36403 0.0 0.0 \n", - "38385 0.0 0.0 \n", - "38735 0.0 0.0 \n", - "39987 0.0 0.0 \n", - "41192 0.0 0.0 " + "[2203 rows x 5 columns]" ] }, - "execution_count": 267, + "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "GOs[GOs['overlap'] == 'no overlap']" + "GOs_partial_expanded" ] }, { "cell_type": "markdown", - "id": "d38d20e1-6644-4215-998d-6ba2213fcd2c", + "id": "c4bdd8f6-0fb7-4a46-bf87-c332aa5e255f", "metadata": {}, "source": [ - "Looking more closely at these cases, one realizes that these are similar GO terms all over, such as GO:0005575 or GO:0003674. This happenes on both sides. There is something weird about it. Niko, please have a look!" + "Create a table that can be used as an input for GOGO (https://www.nature.com/articles/s41598-018-33219-y):" ] }, { "cell_type": "code", - "execution_count": 268, - "id": "1ff24373-d621-4e76-8c2b-3318a6f17577", + "execution_count": 154, + "id": "e1d45be9-ee8c-4b86-9163-ba054ba9ed5c", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "protein_id 63159\n", - "eggNOG_OGs_struct COG5096@1|root,KOG1061@2759|Eukaryota,37I5T@33...\n", - "MSA size 4182.0\n", - "alignment length 841.0\n", - "query length 790.0\n", - "seq. id. 0.361\n", - "bit score 2903.0\n", - "plddt 82.705063\n", - "complete_protein False\n", - "Preferred_name_struct -\n", - "Description_struct Subunit of clathrin-associated adaptor protein...\n", - "GOs_struct GO:0003674,GO:0005488,GO:0005515,GO:0019899,GO...\n", - "eggNOG_OGs_seq COG5096@1|root,KOG1061@2759|Eukaryota,38E7X@33...\n", - "score 733.0\n", - "Preferred_name_seq AP4B1\n", - "Description_seq clathrin binding\n", - "GOs_seq GO:0000139,GO:0005575,GO:0005622,GO:0005623,GO...\n", - "Name: 4012, dtype: object" - ] - }, - "execution_count": 268, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [ + "GOs_partial_expanded_GOGO = GOs_partial_expanded[['GOs_struct', 'GOs_seq']]" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "id": "5c758b4e-9833-40eb-910c-51b8e2ee1216", + "metadata": {}, + "outputs": [], "source": [ - "annotations_complete.iloc[4012]" + "# iterate over each row and each column\n", + "for i, row in GOs_partial_expanded_GOGO.iterrows():\n", + " for col in GOs_partial_expanded_GOGO.columns:\n", + " # separate the elements in the list with a space\n", + " GOs_partial_expanded_GOGO.at[i, col] = \" \".join(str(x) for x in row[col])\n", + " # add the index of the row to the beginning of the list\n", + " GOs_partial_expanded_GOGO.at[i, 'GOs_struct'] = str(i) + \"_struct\" + \" \" + GOs_partial_expanded_GOGO.at[i, 'GOs_struct']\n", + " GOs_partial_expanded_GOGO.at[i, 'GOs_seq'] = str(i) + \"_seq\" + \" \" + GOs_partial_expanded_GOGO.at[i, 'GOs_seq']\n", + "\n", + "# save the dataframe to a txt file without the header and index\n", + "GOs_partial_expanded_GOGO.to_csv(\"/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_partial_expanded_input.txt\", sep=\";\", index=False, header=False)" ] }, { "cell_type": "markdown", - "id": "035867d4-3369-4e99-aaed-a99c2994e468", + "id": "74702fd4-be39-4062-915f-0f367c2e5afc", "metadata": {}, "source": [ - "This is an example in which the GO terms do not overlap. However, the description is very similar and the OGs are the same to the Eukaryotic level. " + "I ran GOGO locally: `perl gene_pair_comb.pl ~/Desktop/GOGO_partial_expanded_input.txt ~/Desktop/GOGO_partial_expanded_input_result.txt`" ] }, { "cell_type": "code", - "execution_count": 270, - "id": "34504af3-0021-4b2f-a856-e642ece7c88a", + "execution_count": 156, + "id": "b2670268-3990-430d-bb82-e7bba51bf81b", "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "__init__() missing 2 required positional arguments: 'go2obj' and 'annots'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/tmp/ipykernel_278/2809043968.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Create a TermCounts object to store information about the GO terms\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mterm_counts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTermCounts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;31m# Calculate the information content of each GO term in the lists\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: __init__() missing 2 required positional arguments: 'go2obj' and 'annots'" - ] - } - ], + "outputs": [], "source": [ - "from goatools.semantic import TermCounts, get_info_content\n", - "\n", - "# Define your two lists of GO terms\n", - "list1 = ['GO:0000001', 'GO:0000002', 'GO:0000003']\n", - "list2 = ['GO:0000004', 'GO:0000005', 'GO:0000006']\n", - "\n", - "# Create a TermCounts object to store information about the GO terms\n", - "term_counts = TermCounts()\n", - "\n", - "# Calculate the information content of each GO term in the lists\n", - "ic1 = [get_info_content(go, term_counts) for go in list1]\n", - "ic2 = [get_info_content(go, term_counts) for go in list2]\n", - "\n", - "# Calculate the semantic similarity between the two lists of GO terms using the Resnik measure\n", - "similarity = sum([ic1[i] * ic2[i] for i in range(len(list1))])\n", + "GOGO_result_expanded = pd.read_csv('/g/arendt/Fabian/PhD/Computational/Spongefold/GOGO_partial_expanded_input_result.txt', sep=';', header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "55340e34-3b2f-48b3-b4cf-f96e50b56504", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded.rename(columns={0 :'GOs_struct', 1 :'GOs_seq'}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "4aa34798-6754-4b95-a61a-653bf5fc235f", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded['GOs_struct'] = GOGO_result_expanded['GOs_struct'].str.split(' ').str[1:]" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "8553a1e2-868e-4f19-96bf-c840ca7a6db9", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded['GOs_seq'] = GOGO_result_expanded['GOs_seq'].str.split(' ').str[1:]" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "81a05e12-6558-4867-9796-79bef9b3e3de", + "metadata": {}, + "outputs": [], + "source": [ + "# create a new column in the dataframe\n", + "GOGO_result_expanded['BPO'] = None\n", + "GOGO_result_expanded['CCO'] = None\n", + "GOGO_result_expanded['MFO'] = None\n", "\n", - "# Print the semantic similarity score\n", - "print(similarity)" + "# iterate over each row in the dataframe\n", + "for i, row in GOGO_result_expanded.iterrows():\n", + " # get the fifth last element of the list in col1\n", + " # and store it in the new column\n", + " GOGO_result_expanded.at[i, 'BPO'] = row['GOs_seq'][-5]\n", + " GOGO_result_expanded.at[i, 'CCO'] = row['GOs_seq'][-3]\n", + " GOGO_result_expanded.at[i, 'MFO'] = row['GOs_seq'][-1]" ] }, { "cell_type": "code", - "execution_count": null, - "id": "f388fa0c-5b4d-49ce-9b48-386d3f33acfe", + "execution_count": 161, + "id": "ea64dbe5-1c66-46e9-95df-7ed602c6eb47", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>GOs_struct</th>\n", + " <th>GOs_seq</th>\n", + " <th>BPO</th>\n", + " <th>CCO</th>\n", + " <th>MFO</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>[GO:0000166, GO:0000323, GO:0001882, GO:000188...</td>\n", + " <td>[GO:0005575, GO:0005622, GO:0005623, GO:000573...</td>\n", + " <td>0.594</td>\n", + " <td>0.829</td>\n", + " <td>NA</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>[GO:0003674, GO:0004857, GO:0005095, GO:000548...</td>\n", + " <td>[GO:0002376, GO:0002520, GO:0003674, GO:000485...</td>\n", + " <td>0.888</td>\n", + " <td>0.942</td>\n", + " <td>1.000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>[GO:0000166, GO:0001501, GO:0001503, GO:000150...</td>\n", + " <td>[GO:0000041, GO:0000166, GO:0001501, GO:000150...</td>\n", + " <td>0.981</td>\n", + " <td>0.966</td>\n", + " <td>0.993</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>[GO:0000122, GO:0000166, GO:0000228, GO:000078...</td>\n", + " <td>[GO:0000122, GO:0000166, GO:0000228, GO:000078...</td>\n", + " <td>0.990</td>\n", + " <td>1.000</td>\n", + " <td>1.000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>[GO:0003674, GO:0003824, GO:0004364, GO:000548...</td>\n", + " <td>[GO:0001101, GO:0001885, GO:0002064, GO:000315...</td>\n", + " <td>0.920</td>\n", + " <td>0.887</td>\n", + " <td>0.930</td>\n", + " </tr>\n", + " <tr>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2198</th>\n", + " <td>[GO:0000278, GO:0001726, GO:0002090, GO:000209...</td>\n", + " <td>[GO:0000278, GO:0001726, GO:0002090, GO:000209...</td>\n", + " <td>0.951</td>\n", + " <td>0.968</td>\n", + " <td>1.000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2199</th>\n", + " <td>[GO:0000049, GO:0000166, GO:0001514, GO:000188...</td>\n", + " <td>[GO:0001514, GO:0003674, GO:0003676, GO:000372...</td>\n", + " <td>1.000</td>\n", + " <td>0.903</td>\n", + " <td>0.808</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2200</th>\n", + " <td>[GO:0000775, GO:0003674, GO:0005488, GO:000551...</td>\n", + " <td>[GO:0000775, GO:0003674, GO:0005488, GO:000551...</td>\n", + " <td>0.999</td>\n", + " <td>0.968</td>\n", + " <td>1.000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2201</th>\n", + " <td>[GO:0000003, GO:0000165, GO:0000166, GO:000156...</td>\n", + " <td>[GO:0000003, GO:0000165, GO:0001654, GO:000170...</td>\n", + " <td>0.823</td>\n", + " <td>0.721</td>\n", + " <td>0.704</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2202</th>\n", + " <td>[GO:0000151, GO:0000209, GO:0000226, GO:000367...</td>\n", + " <td>[GO:0000151, GO:0000209, GO:0003674, GO:000382...</td>\n", + " <td>0.974</td>\n", + " <td>0.827</td>\n", + " <td>0.988</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "<p>2203 rows × 5 columns</p>\n", + "</div>" + ], + "text/plain": [ + " GOs_struct \\\n", + "0 [GO:0000166, GO:0000323, GO:0001882, GO:000188... \n", + "1 [GO:0003674, GO:0004857, GO:0005095, GO:000548... \n", + "2 [GO:0000166, GO:0001501, GO:0001503, GO:000150... \n", + "3 [GO:0000122, GO:0000166, GO:0000228, GO:000078... \n", + "4 [GO:0003674, GO:0003824, GO:0004364, GO:000548... \n", + "... ... \n", + "2198 [GO:0000278, GO:0001726, GO:0002090, GO:000209... \n", + "2199 [GO:0000049, GO:0000166, GO:0001514, GO:000188... \n", + "2200 [GO:0000775, GO:0003674, GO:0005488, GO:000551... \n", + "2201 [GO:0000003, GO:0000165, GO:0000166, GO:000156... \n", + "2202 [GO:0000151, GO:0000209, GO:0000226, GO:000367... \n", + "\n", + " GOs_seq BPO CCO MFO \n", + "0 [GO:0005575, GO:0005622, GO:0005623, GO:000573... 0.594 0.829 NA \n", + "1 [GO:0002376, GO:0002520, GO:0003674, GO:000485... 0.888 0.942 1.000 \n", + "2 [GO:0000041, GO:0000166, GO:0001501, GO:000150... 0.981 0.966 0.993 \n", + "3 [GO:0000122, GO:0000166, GO:0000228, GO:000078... 0.990 1.000 1.000 \n", + "4 [GO:0001101, GO:0001885, GO:0002064, GO:000315... 0.920 0.887 0.930 \n", + "... ... ... ... ... \n", + "2198 [GO:0000278, GO:0001726, GO:0002090, GO:000209... 0.951 0.968 1.000 \n", + "2199 [GO:0001514, GO:0003674, GO:0003676, GO:000372... 1.000 0.903 0.808 \n", + "2200 [GO:0000775, GO:0003674, GO:0005488, GO:000551... 0.999 0.968 1.000 \n", + "2201 [GO:0000003, GO:0000165, GO:0001654, GO:000170... 0.823 0.721 0.704 \n", + "2202 [GO:0000151, GO:0000209, GO:0003674, GO:000382... 0.974 0.827 0.988 \n", + "\n", + "[2203 rows x 5 columns]" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GOGO_result_expanded" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "0be39243-e149-430c-8dd9-6dc46c3bac81", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded_BPO = GOGO_result_expanded['BPO'][GOGO_result_expanded['BPO'] != 'NA'].astype('float')" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "22a18199-4907-4423-a321-2d2c98517bad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='BPO', ylabel='Count'>" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.histplot(GOGO_result_expanded_BPO, bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "a0cd16ae-8fb2-49fa-ae00-d4f0c651b781", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8768518696069056" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOGO_result_expanded_BPO)" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "1125e2fe-6176-4a50-a144-7567bb5a366b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='CCO', ylabel='Count'>" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "GOGO_result_expanded_CCO = GOGO_result_expanded['CCO'][GOGO_result_expanded['CCO'] != 'NA'].astype('float')\n", + "sns.histplot(GOGO_result_expanded_CCO, bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "c5d6aaf5-dbd8-4a7f-8f35-f1d6ed438100", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9267089588377744" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOGO_result_expanded_CCO)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "e92d5b43-f861-4fc5-809e-6f91a4744310", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<AxesSubplot:xlabel='MFO', ylabel='Count'>" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "GOGO_result_expanded_MFO = GOGO_result_expanded['MFO'][GOGO_result_expanded['MFO'] != 'NA'].astype('float')\n", + "sns.histplot(GOGO_result_expanded_MFO, bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "a815cfe3-6610-4436-8eb0-cfbd90efe671", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9309306777030519" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(GOGO_result_expanded_MFO)" + ] + }, + { + "cell_type": "markdown", + "id": "b5caa65a-c2e1-4660-8c6a-b0455347e37f", + "metadata": {}, + "source": [ + "### Create a summary of the GO term semantic similarity results:" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "24226d52-2db6-4c9e-af7a-e0d8921ff8d1", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_unique_results = GOGO_result_unique[['BPO', 'CCO', 'MFO']]" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "id": "effa91b7-eefc-4f44-89ca-91e4d35c1358", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_unique_results_long = GOGO_result_unique_results.melt(value_vars=['BPO', 'CCO', 'MFO'], var_name = 'GO ontology')\n", + "GOGO_result_unique_results_long = GOGO_result_unique_results_long[GOGO_result_unique_results_long['value'] != 'NA']\n", + "GOGO_result_unique_results_long['value'] = GOGO_result_unique_results_long['value'].astype('float')\n", + "GOGO_result_unique_results_long['category'] = 'unique GOs'" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "id": "deab143b-1d8b-435e-88cc-2f381cd3ca0e", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded_results = GOGO_result_expanded[['BPO', 'CCO', 'MFO']]" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "faea203a-1579-43b9-9116-80a0d22c2c6c", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_result_expanded_results_long = GOGO_result_expanded_results.melt(value_vars=['BPO', 'CCO', 'MFO'], var_name = 'GO ontology')\n", + "GOGO_result_expanded_results_long = GOGO_result_expanded_results_long[GOGO_result_expanded_results_long['value'] != 'NA']\n", + "GOGO_result_expanded_results_long['value'] = GOGO_result_expanded_results_long['value'].astype('float')\n", + "GOGO_result_expanded_results_long['category'] = 'GOs expanded'" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "9895083b-e84c-4055-a7ba-19a872efd149", + "metadata": {}, + "outputs": [], + "source": [ + "GOGO_results_long_combined = GOGO_result_expanded_results_long.append(GOGO_result_unique_results_long)" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "affe2f61-4040-4163-9ebc-2c8c82a99f41", + "metadata": {}, + "outputs": [], + "source": [ + "color_reference = {\n", + " 'unique GOs': cm.tab20.colors[18],\n", + " 'GOs expanded': cm.tab20.colors[7]\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "ac7bba95-aec3-49c0-a6ed-c990a0c44db2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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vv76a4qKigBYvnw5RxxxBNu2beO6665jv/32o6SkhNtvv53i4mLefPNN9t9//0y/NRGRGkGJNEM2rFnLuP79qv28Y2a8k/I+U6dOZdKkSTzyyCMVWjtnnXUW//3vfyM6VF188cWsW7eOjz/+mM6dO5evP+mkkyguLuZXv/oV8+bNq/J7EBGpyXRptw6aNGkSffr0iXvJ8Pjjj6dTp04ALFq0iOeee47LL788IomCf3bx+uuv56OPPmLGjBnl62+99Va6d+9O48aN6dChA8cccwwrVyYepXH+/PkMGzaMFi1a0KJFC04//fTyfbZv306vXr0YMGAA4RPRX3rppbRr16683jnnnENxcTHPPvss++yzD40bN6Zfv358+umnEeeaOHEiffr0oVWrVnTo0IHjjz+er7/+OqLOgAEDOO2003j88cfp3r07LVu25Nhjj2Xp0qUR9ZYsWcJxxx1HkyZN6NatGw8++GDK7y+8Tt++fWncuDH77rsvzz33XMKfmYjkByXSOmbHjh289957DBkyJKn6b7/9Ns45TjrppJjbQ+tDifTRRx/llltu4aqrruKVV15h8uTJdO/enU2bNsU9x9dff03fvn3ZsmULf//735kyZQqffPIJxx9/PM45GjRowKOPPsp7773HX/7yFwCmT5/O3Xffzd13303Hjh3Lj1VSUsJVV13FjTfeyOOPP8769esZOnQoW7ZsKa+zdOlSLrnkEqZOncoDDzxAWVkZffv2Zf36yHkRZs2axV133cXEiRO5//77+fDDD7ngggvKtzvnOPHEE5k/fz4PPfQQf/rTn/jLX/7Ce++9l9L7AygtLWXo0KFs3LiRxx9/nBtuuIErrriCxYsXV/IbEpFc06XdOmb16tVs3bqV3XbbLWK9c46ysrLycv369TGz8pFzunbtGvN4rVq1olWrVuX1Zs+ezZAhQ7j44ovL65xyyikJYxo3bhwdO3bkpZdeomHDhgD85Cc/YZ999uHFF19k2LBhHHDAAYwdO5brrruOfv36MWLECE4//XTOOOOMiGN9//33TJ06lcMPPxyA3r17U1RUxJQpU7jwwgsB+POf/1xev6ysjKOPPpr27dszdepUzj777PJtGzZs4IUXXqBNmzYArFy5kiuvvJLS0lKaNGnCSy+9xLx583j//fc55JBDIs631157lR8nmff3yCOPsGrVKmbNmkWXLl0A6NatG/36Vf/tAhFJjVqkdUyoBRT9/OHEiRNp0KBB+evuu++u0vEPOuggXnzxRcaMGcPs2bMjknM8r7/+OieffDL16tVjx44d7Nixgz322INu3boxZ86c8nrXXHMNBx54IP369WPLli3cc889FY7Vvn378iQK/gtA7969mT17dvm6999/n6OPPprCwkIKCgpo2rQpGzdu5MsvIycY6tOnT3kSBdhvv/0AIr40dOjQoTyJhp8v1fc3e/ZsevfuXZ5EAfr27Uv79u0r/fmJSG4pkdYx7dq1o1GjRhXu9Z111ll88MEHfPDBBxHrQ/dF4z3msmHDBtavX19e79xzz+WWW27hySef5JBDDqFDhw7ceOONCRPq999/z4QJEyISeYMGDVi4cCFLliwpr1e/fn1OP/10tm7dyhlnnEFhYWGFY8VKPO3bt2fFihUALF68mCFDhuCc47777mPmzJl88MEHtG/fPuLyL0Dr1q0jyqHWZKjeypUr454v1feX7LFEJP/o0m4dU1BQwGGHHcarr77K+PHjy9d36NCBDh06VKh/xBFHYGY899xz/OQnP6mwferUqQD0798fgHr16nHllVdy5ZVXsmTJEh577DGuv/56OnfuXH5pNVrbtm05+eSTOe+88ypsa9euXfm/Fy9ezLhx4+jVqxf33nsv5513HgcccEBE/VWrKs6at2rVqvLHc15++WU2b97M1KlTadasGeDvG69Zk/pEQR07dox7vvBez8m8v44dO/L555/HPJaI5De1SOugK664glmzZvH3v/+90rrdunXjhBNOYNKkSeWtupCNGzdy0003cdBBB5Un0nC77bYb1157Ld27d6/Qczbc4MGDmT9/Pr1796a4uDji1a1bN8Bfkj733HPZc889ee+99zj44IP59a9/XWGc2VWrVvHuu++WlxcvXsyHH37IwQcfDPhOPfXq1aOg4MfvkE8++SQ7duyo9GcRrU+fPnz77bfMmjWrwvlSfX99+vRh7ty5EVcKZs6cqUQqUgOoRVoHnXjiiVxxxRWcc845TJ8+neOPP5527dqxevVqXnvtNQCaN29eXv+ee+7hiCOO4NBDD2X06NERAzKsWbOGp59+urzub37zG9q2bcuhhx5Kq1atmD59Ol999RUTJkyIG8/YsWM5+OCDGTZsGOeeey7t2rVj2bJlvPbaa5xzzjkMGDCAu+++m7fffpsPPviARo0aMWXKFA488EBuvvlmxo4dW36sdu3acdZZZ/HHP/6RJk2a8Ic//IH27duXP+ozaNAgysrKGDFiBCNHjuSTTz7hjjvuqHAZNxnHHXccBx54IKeffjoTJkygcePG5edL9f2NGDGCm266iWHDhjF27FhKS0u58cYbI1rkIpKf1CKto/785z/z1FNPsWTJEkaOHMmgQYO4+OKLWblyJS+++GLEM6adOnVi9uzZnHLKKdx2220cddRRXHPNNRQXFzNnzpyIUY0OO+wwZsyYwYgRIzjuuON45plneOCBB+I+PgPQo0cP3n//fZo2bcoFF1zAsccey5gxY2jUqBHdu3fn66+/ZtSoUYwZM6b88nJRURETJkzg5ptvjmgBdu3alf/7v/9j7NixnHnmmbRs2ZJXXnmFxo0bA3DAAQfwyCOPMGvWLH72s5/x+OOP8+9//5tWrVql/DMMXfLeb7/9OPfcc7niiiu45JJLOOyww1J6fwBNmzbllVdeoVmzZpx55pmMGzeOiRMnxu0tLSL5w8IfcBevuLjYhfcWDffZZ5+x7777Vlhf04YIrI3OOecc5s+fT7zfXW0V7zMpIpllZnOdc8XR63VpN0OUzERE6iZd2hUREUmDWqRSa0yZMiXXIYhIHaQWqYiISBqUSEVERNKgRCoiIpIGJVIREZE0KJGKiIikQYlUREQkDUqkIiIiaVAilbSMHTs2bwdW//bbb7nqqqvo0aMHjRs3pnnz5vTu3ZuJEyeyfv36CvX/+9//MnDgQFq2bEmzZs04+OCDeeSRR9AwmiKSiAZkyJArrrueVWvXVft527dpzaRbbq7284acd955HH/88Tk7fzyff/45gwYNomnTplx22WUccMABbNu2jXfffZcJEybw0UcfRUwjN2HCBK699lp+9atf8fvf/56GDRvy/PPPc/755zN79mwmT56cw3cjIvlMiTRDVq1dxyeDT6j+E097rvrPGaZLly506dIlpzHE8stf/pJ27drxzjvv0LJly/L1Q4cO5Xe/+x0vvPBC+bq5c+dy3XXXMWrUKG677bby9UcddRR77703F198MUOHDk04g42I1F26tFsHDRgwgNNOOy1i3ZtvvomZMX/+fAAWLVqEmfHkk0/ym9/8hlatWtGlSxfGjBnDzp07y/eLdWl3/vz59O3bl8aNG7Pvvvvy3HPPUVxcHDE1WzIxAGzZsoVrrrmG3XbbjUaNGnHggQfy4osvJnx/b731FvPmzeO2226LSKIhLVu25Be/+EV5+a677qJFixZcd911FepecMEFFBUVceedd5av++STTzjmmGNo27YtzZo1Y9999+Xuu+9OGJOI1F5qkUpC11xzDaeeeipPPfUU06ZNY/z48ey///78/Oc/j1m/tLSUoUOH0q5dOx5//HFKS0u54oor2LhxIz179kz5/KeddhqzZ89m3LhxFBUV8eSTT3LCCScwZ84cDjrooJj7zJgxg4KCAgYNGpTUOWbMmMGgQYNiJt369etz/PHHM3nyZHbs2EFBQQEnnHAC++yzD//4xz9o1KgRX3zxBRs2bEj5vYlI7aBEKgn179+fiRMnAnD00Ufz8ssv8/TTT8dNpI888girVq1i1qxZ5Zd8u3XrRr9+/VI+97Rp03jhhRd48803OfLIIwEYMmQIX375JTfffDP//ve/Y+63fPly2rVrVz6Zd0hZWVl5xyEzo379+gAsW7aME06If1m+a9eubN26ldWrV1O/fn0WLlzIs88+ywEHHADA4MGDU35vIlJ76NKuJDRkyJCI8n777cfSpUvj1p89eza9e/eOuG/at29f2rdvn/K5X3/9dTp27Ejfvn3ZsWNH+Wvw4MEJJ+92zmFmFda3atWKBg0a0KBBAzp06JByPABt27Zlt91248ILL+SJJ55g1apVVTqOiNQeSqSSUOvWrSPKDRs2ZMuWLXHrr1y5MmbSrEoi/f7771m5cmV58gu9xo4dy5IlS+Lu17lzZ7777ju2bt0asf7tt9/mgw8+4Pzzz69Qv6SkJO7xSkpKaNSoEYWFhdSrV49XX32Vjh07cu6559KxY0eOOOII5s2bl/L7E5HaQZd266DGjRuzbdu2iHVr1qzJyLE7duzI559/XmF9dMstmRjatm1L586defbZZ1OKoX///uzYsYPp06dzzDHHlK/v1asXAM8//3yF+lOnTuWHH36gRYsWEdt27tzJCy+8wOGHH05Bgf/vss8++/Cf//yH7du38/bbbzNq1CiGDRvG0qVLqVdP301F6hr9r6+DunTpUiHZvfbaaxk5dp8+fZg7d27E5d+ZM2dWSKTJxDB48GBWrlxJ8+bNKS4urvCK58gjj6RXr16MHj2aH374odKYL7nkEtavX8+tt95aYduDDz7IV199xeWXX15hW4MGDRg0aBBXXXUVK1asYN26dZWeS0RqH7VI66CTTz6Zhx56iCuvvJJhw4Yxffp0XnnllYwce8SIEdx0000MGzaMsWPHUlpayo033ljhEZlkYjj66KMZOnQoRx99NKNGjWL//fdnw4YNfPTRR2zZsiVm4gt5/PHHGTRoED/96U+57LLL6NmzJ2VlZXz11Vc88cQTNG/evLxu7969ueWWW7j22mtZtmwZZ555ZvmADHfddRcXXnghJ554IgAff/wxV199NWeccQZ77rkna9euZcKECRx44IG0bds2Iz9DEalZlEgzpH2b1jkZHKF9m9Yp7zNs2DBuueUW7rnnHh588EFOPPFEJk2aVJ4s0tG0aVNeeeUVLrzwQs4880y6devGxIkTuemmm1KOwcx4+umnueWWW5g0aRKLFy+mbdu2HHTQQVx66aUJ49hnn3348MMPuf3227nzzjtZsmQJBQUF9OjRg5///OcV9h81ahT77bcfEydO5Oc//zllZWX07NmT+++/P+L5144dO9KhQwduvvlmli9fTuvWrRk4cCATJkxI+2cnIjWTaRzRioqLi128XqGfffYZ++67bzVHVPMVFxfTs2dPpkyZkutQah19JkWqh5nNdc5VuK+ke6QiIiJpUCIVERFJg+6RSrVINICCiEhNphapiIhIGpRIq0AdtCRf6LMokntKpClq0KABpaWluQ5DBPCz7TRo0CDXYYjUaUqkKWrfvj3Lli1j8+bNag1Izjjn2Lx5M8uWLavSOMYikjnqbJSi0JyVy5cvZ/v27TmORuqy0Cw2seZRFZHqo0RaBS1bttQfLxERAfLo0q6ZdTGzh81suZltNbNFZjbJzNrk4jgiIiLJyIsWqZkVAe8C7YGpwOfAwcDlwDFm1tc5t7q6jiMiIpKsfGmR3oNPfpc5505yzl3rnBsE/BnYG7i5mo8jIiKSlJwPWm9mewILgEVAkXNuZ9i2FsAKwID2zrlN2T4OJB60XkRE6qZ8HrR+ULB8NTz5ATjnfgBmAk2BQ6vpOCIiIknLh0S6d7D8Ms72r4Jlj2o6joiISNLyobNRq2C5Ps720PrW2TyOmV0AXBAUN5rZF5Wcr7ZrB3yf6yAk5/Q5ENDnIKRrrJX5kEgrY8Ey3Zu5CY/jnLsfuD/Nc9QaZjYn1r0AqVv0ORDQ56Ay+XBpN9RSbBVne8uoetk+joiISNLyIZGGLqHGu3e5V7CMd+8z08cRERFJWj4k0unBcoiZRcQTPLbSFygF3q+m44iny9wC+hyIp89BAjlPpM65BcCrQDfgt1GbxwHNgEdDz36aWQMz2ycYxajKx5HEgnvGUsfpcyCgz0Flcj4gA8Qc2u8z4BBgIP5S7OGhof3MrBvwDVDinOtW1eOIiIhkQl4kUgAz2w0YDxwDFOJHInoWGOecWxNWrxtxEmkqxxEREcmEnF/aDXHOLXHOjXDO7eqca+ic6+qcuzw6+TnnFjnnLFYSTeU4tY2ZueC1M/qyd1S96WF1z4naNiVsW6zXm3GOeZSZPWFmi81si5mtNbMPzGyMZt3JneAWyF/NbL6ZrTezbcGsSC+Y2Ugza5yJfYL9is3sETNbaGalZrbBzP5nZv9nZp2z/24lljj/j0OzYv3NzPaNsc+AGPtsM7OlZvZvMzsszrnMzE41s6nBZ2abma02s3fM7Coza5r9d5wbedMilfSYmQN24J8NvtU5d12MOnvhezeXBfVGOOemhG2fAvwaf1n8oxinWRRVvxHwIPArfEeul/CX0Jvjh2zcD/8Q96nOuRlpvkVJgZn9ARiD/7L8PvABsBHoAAwA9gQixg2t4j4G3AZcg//8vQb8D2gIHI6ffWkz8Gvn3FPZer8SW/B3AXw/kZBW+N/L4cAmoJ9z7qOwfQbgO2+WAFOC1c3ww6v2A3YCpznnngnbpzXwJHA0/hHDF/HjnrcFhuL7riwCfuac+yQz7y6POOf0qgUv/EATS/F//FYABTHqTAjqPRMsz4naPiXW+gTnfDioPxfYLWqbAZfgk/YPwL65/hnVlRdwXfB7WQwcEqfOz4Dp6ewTrPtDsN83wP4x9jkV/yVrBzAw1z+buvYKfjcuzra/BtunRK0fEKx/M8Y+44JtC8PW1cN/gXLAy0Bh1D4FwC3B9mVAh1z/XDL+c851AHpl6Bf5YyK9IPj3SVHbGwAr8YP335RuIsV/M3XAGmDXBPVuC+q9luufUV144b/5bwtePSup26iq+4Tttz3Y74AE+1wYfAY+B+rl+mdUl16VJNLjg+0vRK1PlEjbh44J7BKs+1VQXgA0TRDLv4J6D+T655LpV97cI5WM+Sf+cs15UetPwF+ieyBD5zk/WD7gnFuRoN4EYCtwlJntkaFzS3wj8F+a/uOcm5+oonNuaxr7hPYrAJ5xzv0vwW4PAsvxE0scmTh8qUZHBctU5oy0sH+HLhuH/hbc4ZzbnGDf8cHyrHj32muqmjDWrqTAOfeDmf0LOMfMujjnlgabzgc24O9jVLh/GuWkoHd0tEnOuXXBv/sFy9criWetmc3F34/pi78EKNkT+r1My/I+4ftV9hnYEXRU+yX+MzA9UX3JPDMbG1ZsCfTB/y6eB+5I4VChZ/QXOue+N7MCfpyasrLPwadmthzoBBQD76Rw3rymRFo7PQCMBM4FxptZV3wngPucc5t9/5CETgxe0aYA64J/7xoslyQRT6hOpyTqSnpCv5elCWulv0/4fvoM5L8xMdZ9CvzT+fmaY+kWloCb4Z/JPwLf2ejqYH1bfMcySP5z0Ila9jnQpd1ayDk3C99z8txguMTz8L/rZC/rjnD+EaPo16JYp0vieJmawUcqV5WfdVV/P6nsp89ADoX/P8b3qj8E+BZ4zMxujrNbV3wCHgNcAXQHngaOcD/22K30W3mUWvk5UCKtvR7A/0c4Bn8va65zbl4Gj78yWO6eRN0uwTLRvVTJjOXBskvCWunvAz/+PvUZqEGcc5ucc7OBU/D9Ka4JBrKJ9lZYAm7gnOvknDvVOfduWJ3V+M5mALGOEa1Wfg6USGuvv+MfO7gP6EzmB50O3d84KlGlYECG3kFxZoZjkIpCv5fBWd4nfL/KPgP18T1BQZ+BvBH0d/gCf4vvp1U8xg5gVlCs7HOwL/6S7lb8I3O1hhJpLRX8J3kK/w1wE743byY9GCzPM7MOCepdDTQCXnfOqaNR9j2CfyTlVDPbL1HFYECNqu4D/p55GXCyme2fYLdz8X9AvwDeShi9VLfQyGPp5ILQ34KrzKxJgno3BMu/O+dK0zhf3lEird1uAE4GhiboUFAlzo9U9Hd8Z4PnzazCZUEzuxAYhR8d5/JMnl9iC+5jj8V3AHnBzIpj1TOzY/AjUVVpn2C/hfgH7RsAz8VKwmZ2EvAXfMK92Dm3s0pvTDIu+N3sgf8S9W7i2gk9hu+J3R14KnpYUDOrb2bj8b22VwA3pnGuvKReu7WYc24xfqSabLkA/xn6BfCFmb0EfIXv4TcQ6Im/h3Kqc+7TLMYhYZxztwSPJYwBPjCzd/HPCoaG++uPn+h+Tjr7BMbif99XAf/PzF4BPsEn18PxnVpKgV84597IyhuWSkU9/tIMP3znsUH5Oufct1U9tnOuzMxOxV8BOw5YaGYv4IcYDA0RuAd+iMDjnXMr4x2rptJYu7VEMKbmMudcpR1GzOwm4Hrij7UbsT6J4w3BP6d6GLALsAX4GvgvcKer5RMG5KvgntTF+C81uwON8V9sPsL/0ftH1AALVdon2O9g/DOG/YGO+BboIvyQcZPCnmeWahQ21m64MuA7YDZwl3Putah9BuBbmG855wakcC4DTgfOwj8nWoj/IvYZvrfv5EoGbKixlEhFRETSoHukIiIiaVAiFRERSYMSqYiISBqUSEVERNKgRCoiIpIGJVIREZE0KJGKiIikQYlURGosM+tmZi4YTKS6zz0lOHe36j635BclUqkRzKyHmf3JzD40szVmtj1YzjKzO8ysd4J9m5rZlWY2w8y+N7OtZrbCzP5rZqdbEjOdRx1vbPAHdEC676uuMbMBwc9ubK5jEckUJVLJa+aNwQ8zdiV+QuAngNuBf+DHcb0UmGNmv42x//7AfOBP+CHv/gNMBKYB/YAngVfMrHXW34zUNqOBfYFluQ5EckuD1ku++wN+YPQl+IHPK8xnaWbtgSuAVlHrOwKvAbsCtwJ/COZPDG1vCzyOH1T7STM7RrOTSLKccyuoZRNUSxU55/TSKy9fwJ74KZ62AvsnUb8gqvwgvgX7zwT7NAMWBPWGJ3GORUHdCq+oek3xLZaP8PPBbgTew38ZiD7mgOAYY4GDgReANcG6blHbi/EDwa8H1uJb2LuF/bz+hR+QvBQ/8PiBKf7M6wEXAh8EMW8K/n0RUC9GfQe8CbTDTx6/Ivh9fYKf/CC87pR4PztgQFi9RsC1wMfAZmAD8Dbw8xjn7xbsPyXGtl2Bu4Pf2bbg5/I00DvOe28FTAKW4ide+Bw/q82esc4R9n66xTjWIfhB/lcG514C3Ad0ivM5vx8/0UNp8Lv/H3AvUJjr/4d6Vf5Si1Ty2Qj8VZPHnXOfVFbZRbY2mwC/CorjE+yzycwm4v/gXoCfWzGRScBJwJHA3/B/pCMEl4nfAHoBHwIP4xPUUOBxM9vfOXdD9H742XNGA+8E+7TD/xEO6YOf3/Ut4AHgAOAU4AAzOyHY73PgUaBrsO01M9vTObexkvcV8nf8vJFL+PGLyMnAPfhL4cNj7NMamBnE+hR+xpjTgIfNbKdz7m9BvWeD5a+D9/Bm2DEWAZhZQ+AV/M/3c/zvpWlwvCfM7CDn3HWVvQkz2wP/8+iE/138E9gNPzvJMDM71Tn3fFj9xkG9nwLz8J+DVvhZko6o7HxR5x6B//1sBZ7D/yz3As4DjjezQ52f4hAz2xX/RaUl8CL+i1Fj/LRjZwF34WffkXyW60yul17xXvg/bA4YWYV9jwj2XZZE3b2CuluB+knUH0tUKypq+5Rg+zVR6xvjW5M7gYPC1g/gx5bZb2IcL3z78KhtDwXr1wDXR227Mdh2eZI/s18E9T8Emoetb4afh9QBv4zaJxTXg+E/O/x8lzuAT+O8l7FxYhgdbH+RsCsMQHt+vBpweNj6bsRuLb4SrI/+mRwexLU66j2Gflb/JJgVK1i/G74lm1SLFOiB/0LxNdA5qv4g/BRmz4StuzTe7yj4uTepjv9reqX3UmcjyWcdg2WFzhzBYw9jo15XhFXZNVguSeI8oToN8XMoVpmZFeJbwnOcc7eHb3PObcG3KA3f6ov2kXPuvgSHf8c5F91iDrX21gO3RW17NFgelEToAOcGy2tdWAvWObcJHzf4VlW0zcBVzrmysH0+xbdS9zWzFkmePxSDC45XfoXBObcK+GOCGMqZWRdgCH5S++jfwbv4ZNkW32IP+TX+C85oF2SxoP4S/FWIZF2En9T8cudcxOfW+YnNn8O3SqN/JqXRB3LObXLOVVgv+UeXdiWfhR5LiTVpbjdgTNS6En78o5do30TSnaC3D1AfiPeIR4NguW+MbbMrOfacGOuWB8uPwhNZIPSHvNLJ3gM/xSeTN2NsewvfmuoVY9tXzrkNMdaHvqC0Bn6o7ORBcumOv4rweYwqbwTLWDGEC21/2zm3Pc5xfhXUe9TMWgJFwBLn3KIY9d+pLPYwhwXLI82sT4zt7fGfjx7AXHxivQW428yG4lvSM/EteU0WXUMokUo+WwHsA3SO3uCce5MgWZpZAb5TUvS+4B95qcxuwXIb/hJpOkIt2j7BK57mMdatrOTY62Os2xFvm3NuR/CIbIPobXG0AtY457ZFbwiO9T0+EURbF+d4odjqp3B+iN8TNrS+dYaP0zJYfhunfrz1sYR+/7+vpF5zAOdciZkdjL9dcAw/tpKXmNkdzrk7Uzi35Igu7Uo+Cz3qMrgK+36Av+fZycxitf7CHRUs34/RqktVKKH92TlnCV4DY+yb6xbIeqCtmVVIvMGXlXb4HrTZPD/8eEk/2q5R9TJ1nNB76hCnfrz1ic7dqpLf/1uhHZxznznnzsAn4WJ8j+V6wF/MbGQK55YcUSKVfDYF36o5LYlkGCG4t/R4UIzVQxYo7917VVC8P8nDh5JtrJbWbPzl0ZR6euaJefi/Cf1jbOuPf78fpnmOuD8759wP+EeROpvZXjH2DX35qCyGecGyX/AFIOFxgsvSC4PzdotRv18l5wv3frBM+ffvnNvhnJvrnJuA7/gFvoe45DklUslbzrkFwE34TkAvmdnhcaq2jrP+BvxluV+a2R+j/6iaWRv84xrdgdfxnVCSEXococJl46BTzGNAsZndGOsPuZkVBY9n5JuHg+WtZtY0tDL4d6gj00NpniPuzy4sBgP+z8zKk62ZtcP3rA2PMybn3FL8QBzd8AN1lDOzQ/AdvdYCz4RtehT/9/DW8CEjzWy36GNU4i78bYY/m1mP6I1m1tDMjggrH2xmsVq8oXWbUzi35IjukUq+G4//w3ojMNPM5uJbfWvwCbQbP16anRG+o3NuuZkNwXfouAH4lZm9HOy7OzAMaINPoqe75Ec1mo5vdd5qZj3xf5Rxzt0UbL8E/0jNeOAsM3sHn9A74TsZ9cG3OL5J9odQHZxzj5vZicDPgU/M7Fn85eaT8M81Phmj13CqvsB3gjrTzLbhe9Y64O/OuRLgDuBY4ETg/5nZi/jnSE/H35+93TmXTOefC/G3Bv4v+AzM4cfnSHfiB4sI7wB1e/A+zwT2NrNX8fdaf47/XJ0U7JeQc+5zMzsXn+w/CT5vX+LvU++Ob6l+h7/3Dz6p/9bM3sI/MrMW3/HpePytiUlJvFfJtVw/f6OXXsm8gL2BP+NHClqH/9a/Bn8v9M/ATxPs2wx/+fadYJ9t+I49z+P/UFoV4vlVEEspsUc2aohPqO/i75ttxSeNafgWTmFY3QEkfrYy7nYSjOwTbHfAmym8r3rAxfjEszl4zQV+S4KRjeIcawoxRv7Bf5GYFvxcdlJxZKPGwHX4MZJL8T1+3yH2qFBx3z++k9pkfG/ubcD3+EEh+sSJtzVwJ74n9Fb8gBC/w4825YBJyby/YNsBwfaS4FhrgvdzHzAorN4hQYz/L6hTik+ojwA9c/3/Tq/kXhb8MkVEJAYzOx9///xCl/g5X6mjlEhFRAAz6+ScWx61bjf8JeJd8S1PzfQiFegeqYiI95/g0Z+5+NsH3YCfEUxAoCQq8ahFKiICmNnF+IHi98J3NNqIf5TmLufc07mMTfKbEqmIiEga9BypiIhIGpRIRURE0qBEKiIikgYlUhERkTQokYqIiKRBiVRERCQN/x+tGuMtNKmFPwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<Figure size 504x432 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "f, ax = plt.subplots(figsize=(7, 6))\n", + "\n", + "sns.boxplot(data=GOGO_results_long_combined, y='value', x='GO ontology', hue='category', order=['MFO', 'CCO', 'BPO'], whis=[5, 95], palette=color_reference)\n", + "ax.set(ylim=(0, 1.05))\n", + "ax.tick_params(axis='both', which='major', labelsize=20)\n", + "\n", + "ax.set_xlabel('GO term ontologies', size=20)\n", + "ax.set_ylabel('Semantic Similarity',size=20)\n", + "\n", + "plt.legend(title = '', fontsize=15)\n", + "\n", + "plt.savefig('/g/arendt/Fabian/PhD/Computational/Spongefold/coffe-paper/figures/GO_semantic_similarities.svg', bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "markdown", + "id": "4af2e08f-5945-436d-b6fc-ff6062667207", + "metadata": {}, + "source": [ + "## GO depth analysis and comparison" + ] + }, + { + "cell_type": "markdown", + "id": "9f0e0092-714b-494b-8ea9-e07d5bb32397", + "metadata": {}, + "source": [ + "As a last measure, we would love to compare GO term depths in the partially overlapping GO term categories. This is the plan:\n", + "\n", + " 1. Make new column with overlap between GO term assignments from sequence- and structure based annotations from the partial overlap category\n", + " 2. Assign GO term depths for each GO term within each GO ontology using GOATOOLS (https://www.nature.com/articles/s41598-018-28948-z)\n", + " 3. Return maxiumum GO depths within each GO ontology\n", + " 4. Plot\n", + " \n", + " \n", + "This will answer the question: \"How deep did the common annotation between sequence- and structure based annotation go in each of the GO ontologies?" + ] + }, + { + "cell_type": "code", + "execution_count": 260, + "id": "db844512-5486-42eb-846d-b972959fb02d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_125/2522461405.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " GOs_partial['overlap_GOs'] = ''\n" + ] + } + ], + "source": [ + "GOs_partial['overlap_GOs'] = ''\n", + "\n", + "for index, row in GOs_partial.iterrows():\n", + " lst1 = row['GOs_struct']\n", + " lst2 = row['GOs_seq']\n", + " GOs_partial.at[index, 'overlap_GOs'] = list(set(lst1) & set(lst2))" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "93490009-b7e5-4d48-be71-93a869774f25", + "metadata": {}, + "outputs": [], + "source": [ + "fin_obo = '/g/arendt/Fabian/PhD/Computational/spongeprot/data/GO_analysis/go-basic.obo' # DAG containing HPO terms" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "id": "f71d1e64-0ce8-4bed-ab39-904b1e65ccad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/g/arendt/Fabian/PhD/Computational/spongeprot/data/GO_analysis/go-basic.obo: fmt(1.2) rel(2022-07-01) 50,918 Terms\n" + ] + } + ], + "source": [ + "from goatools.obo_parser import GODag\n", + "\n", + "obodag = GODag(fin_obo, load_obsolete=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 281, + "id": "32a4dec1-f25e-461e-9008-44babcb6c5f7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_125/2065038866.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " GOs_partial['MFO_max_depth'] = ''\n", + "/tmp/ipykernel_125/2065038866.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " GOs_partial['CCO_max_depth'] = ''\n", + "/tmp/ipykernel_125/2065038866.py:3: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " GOs_partial['BPO_max_depth'] = ''\n" + ] + } + ], + "source": [ + "GOs_partial['MFO_max_depth'] = ''\n", + "GOs_partial['CCO_max_depth'] = ''\n", + "GOs_partial['BPO_max_depth'] = ''\n", + "\n", + "for index, row in GOs_partial.iterrows():\n", + " MFO_max_depth = []\n", + " CCO_max_depth = []\n", + " BPO_max_depth = []\n", + " for GO in row['overlap_GOs']:\n", + " if obodag[GO].namespace == 'molecular_function':\n", + " MFO_max_depth.append(obodag[GO].depth)\n", + " elif obodag[GO].namespace == 'cellular_component':\n", + " CCO_max_depth.append(obodag[GO].depth)\n", + " elif obodag[GO].namespace == 'biological_process':\n", + " BPO_max_depth.append(obodag[GO].depth)\n", + " else: print('something is wrong')\n", + " GOs_partial.at[index, 'MFO_max_depth'] = MFO_max_depth\n", + " GOs_partial.at[index, 'CCO_max_depth'] = CCO_max_depth\n", + " GOs_partial.at[index, 'BPO_max_depth'] = BPO_max_depth\n", + " GOs_partial.at[index, 'MFO_max_depth'] = max(GOs_partial.at[index, 'MFO_max_depth'], default=None)\n", + " GOs_partial.at[index, 'CCO_max_depth'] = max(GOs_partial.at[index, 'CCO_max_depth'], default=None)\n", + " GOs_partial.at[index, 'BPO_max_depth'] = max(GOs_partial.at[index, 'BPO_max_depth'], default=None)" + ] + }, + { + "cell_type": "markdown", + "id": "c13e82ac-9548-420d-8671-f4b1f4a50145", + "metadata": {}, + "source": [ + "Format dataframe for plotting" + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "id": "a48026bc-002f-462d-8747-b4cba1d1276b", + "metadata": {}, + "outputs": [], + "source": [ + "GO_depth_plotting = GOs_partial[['overlap', 'MFO_max_depth', 'CCO_max_depth', 'BPO_max_depth']]" + ] + }, + { + "cell_type": "code", + "execution_count": 288, + "id": "3cdb7257-f13a-402a-8e36-de344cf2790e", + "metadata": {}, + "outputs": [], + "source": [ + "GO_depth_plotting_long = GO_depth_plotting.melt(id_vars='overlap', var_name='ontology')" + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "id": "147fdf80-0b7a-43c1-8ac8-97c64228b51d", + "metadata": {}, + "outputs": [], + "source": [ + "GO_depth_plotting_long = GO_depth_plotting_long[~GO_depth_plotting_long['value'].isnull()]" + ] + }, + { + "cell_type": "code", + "execution_count": 317, + "id": "94786163-db0b-4f81-bd9b-f3dc726d8093", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_125/1019678659.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " GO_depth_plotting_long['overlap_condensed'] = ''\n" + ] + } + ], + "source": [ + "GO_depth_plotting_long['overlap_condensed'] = ''\n", + "\n", + "for index, row in GO_depth_plotting_long.iterrows():\n", + " if row['overlap'] == 'partial overlap - unique GOs':\n", + " GO_depth_plotting_long.at[index, 'overlap_condensed'] = 'unique GOs'\n", + " else: GO_depth_plotting_long.at[index, 'overlap_condensed'] = 'GOs expanded'" + ] + }, + { + "cell_type": "code", + "execution_count": 320, + "id": "f1f2a46a-bef6-45dd-ba4e-3d5fadcc1d9c", + "metadata": {}, + "outputs": [], + "source": [ + "color_reference = {\n", + " 'unique GOs': cm.tab20.colors[18],\n", + " 'GOs expanded': cm.tab20.colors[7]\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 329, + "id": "02cc7560-1334-4eb5-a7f6-9a3d00f4ff3e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAG7CAYAAAC8do2rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABQo0lEQVR4nO3deZgU1dXH8e9hX2QREBAQ0EEjLlHj4AYqYhxUgktcIzEKKhGjwYWIO2hcQgIRjUoUo6jBuMQVRcEF3BVBTV6NG6CIDIiAAsqADJz3j6oeZ4aepWa6u6Z7fp/n6aenqm7VPTUU06dv3XvL3B0RERGp3xrEHYCIiIjETwmBiIiIKCEQERERJQQiIiKCEgIREREBGsUdQJw6dOjgPXv2jDsMERGRjJg3b94Kd98m2bZ6nRD07NmTuXPnxh2GiIhIRpjZooq26ZaBiIiIKCEQERERJQQiIiKCEgIRERFBCYGIiIighEBERESo58MOq7JmzRqWL1/Oxo0b4w5F6rHGjRvTsWNHWrduHXcoIpLDlBBUYM2aNXz11Vd07dqV5s2bY2ZxhyT1kLtTVFTEkiVLAJQUiEja6JZBBZYvX07Xrl1p0aKFkgGJjZnRokULunbtyvLly+MOR0RymBKCCmzcuJHmzZvHHYYIAM2bN9etKxFJKyUElVDLgNQVuhZFJN2UEIiIiIgSAhERSY1p06ZRUFDA9OnT4w5FakCjDCIae9mlrFn1Tcbrbd1ua8Zef0ON9n388ce57bbbmDdvHmvXrmWbbbbhwAMP5LzzzqNv375lyq5cuZJrr72Wxx57jKVLl9K+fXsOP/xwxowZQ48ePVJxKjnj+OOPZ8WKFcyePbvWx8rPz2e33XZjypQptT6WSFxuueUWAG666SaOPPLImKORqJQQRLRm1TdcfVC/jNc75uVXa7TfBRdcwM0338xvfvMbRowYQfv27Vm0aBEPPPAA/fr1Y/78+eTl5QFQWFjIgQceyA8//MBll13GLrvswqJFi/jzn/9Mfn4+s2fPZtddd03laYlIjpg2bRruDgTDZadPn66kIMsoIchhTzzxBBMnTuTuu+/m9NNPL7Pt1FNPZdq0aWVGUpxzzjl8++23/Pe//6Vr164l64855hjy8/P59a9/zbvvvpup8EUkiyRaBxLUSpB91Icgh02cOJE+ffpskQwkDB48mC5dugDw+eef8+STTzJy5MgyyQAEk+FcfvnlvPfee7z88ssl62+44QZ69epFs2bN6NSpE4cffjjLli2rNKb333+fQYMG0apVK1q1asUJJ5xQss/GjRvZa6+96N+/f8k3DYDzzjuPDh06lJQ7/fTTyc/P5/HHH2fnnXemWbNm9OvXj//9739l6powYQJ9+vShTZs2dOrUicGDBzN//vwyZfr378/xxx/P/fffT69evWjdujVHHHEEX375ZZlyixcv5sgjj6R58+b07NmTO++8M/L5lS7Tt29fmjVrRu/evXnyyScr/Z2JZIPS/2eTLUvdp4QgRxUXF/PGG29QUFBQrfKvvPIK7s4xxxyTdHtifSIhuPfee7n++uu58MILmTFjBpMmTaJXr158//33FdYxf/58+vbty/r167nvvvuYMmUKH3zwAYMHD8bdady4Mffeey9vvPEGN910EwCzZs3i1ltv5dZbb6Vz584lx1q0aBEXXnghV155Jffffz+rV69m4MCBrF+/vqTMl19+ybnnnssTTzzB5MmT2bRpE3379mX16tVl4nrrrbe45ZZbmDBhAnfccQfvvPMOw4cPL9nu7hx99NG8//77/OMf/+Cvf/0rN910E2+88Uak8wMoKipi4MCBfPfdd9x///1cccUVnH/++XzxxRdV/AuJ1G3lh8ZqqGz20S2DHLVy5Uo2bNjAdtttV2a9u7Np06aS5YYNG2JmJVPjVtRxsE2bNrRp06ak3Jw5cygoKOCcc84pKfPLX/6y0piuvvpqOnfuzDPPPEOTJk0A+OlPf8rOO+/M9OnTGTRoELvvvjtjx47lsssuo1+/fgwdOpQTTjiBk046qcyxVqxYwRNPPMEBBxwAwN57701eXh5Tpkzh7LPPBuDGG28sKb9p0yYOO+wwOnbsyBNPPMFvfvObkm1r1qzh6aefZuuttwZg2bJlXHDBBRQVFdG8eXOeeeYZ3n33Xd5880323XffMvXtuOOOkc7v7rvvZvny5bz11lt069YNgJ49e9KvX+b7pYik0rnnnsvf/va3kuWRI0fGGI3UhFoIclTiG2n5LH3ChAk0bty45HXrrbfW6Ph77rkn06dPZ8yYMcyZM6dMklGR559/nmOPPZYGDRpQXFxMcXEx22+/PT179mTu3Lkl5S6++GL22GMP+vXrx/r167ntttu2OFbHjh1LkgEIEpm9996bOXPmlKx78803Oeyww2jfvj2NGjWiRYsWfPfdd3zyySdljtWnT5+SZABgl112ASiT/HTq1KkkGShdX9TzmzNnDnvvvXdJMgDQt29fOnbsWOXvT6QuGzx4cMnfGzNT/4EspIQgR3Xo0IGmTZtucS/81FNP5e233+btt98usz7Rb2DRokVJj7dmzRpWr15dUm7YsGFcf/31PPTQQ+y777506tSJK6+8stLEYMWKFYwbN65MQtK4cWMWLlzI4sWLS8o1bNiQE044gQ0bNnDSSSfRvn37LY6V7AO0Y8eOLF26FIAvvviCgoIC3J3bb7+d1157jbfffpuOHTuWua0A0LZt2zLLiW/3iXLLli2rsL6o51fdY4lko3PPPRdQ60C20i2DHNWoUSP2339/Zs6cyTXXXFOyvlOnTnTq1GmL8gceeCBmxpNPPslPf/rTLbY/8cQTABx00EEANGjQgAsuuIALLriAxYsXM3XqVC6//HK6du1a0mRfXrt27Tj22GM588wzt9jWoUOHkp+/+OILrr76avbaay/+/ve/c+aZZ7L77ruXKZ/sQT/Lly8vGRb57LPPsm7dOp544glatmwJBP0qVq1alTS2ynTu3LnC+kqP0qjO+XXu3JmPPvoo6bFEst3gwYMZPHhw3GFIDamFIIedf/75vPXWW9x3331Vlu3ZsydHHXUUEydOLPmWnfDdd99x7bXXsueee5YkBKVtt912XHLJJfTq1WuLnv6lHXroobz//vvsvffe5Ofnl3n17NkTCG51DBs2jB122IE33niDffbZh9NOO22LB/ssX76c119/vWT5iy++4J133mGfffYBgs57DRo0oFGjH3Pehx56iOLi4ip/F+X16dOHr776irfeemuL+qKeX58+fZg3b16ZlpvXXntNCYGIxE4tBDns6KOP5vzzz+f0009n1qxZDB48mA4dOrBy5Uqee+45ALbaaquS8rfddhsHHngg++23H5deemmZiYlWrVrFo48+WlL2t7/9Le3atWO//fajTZs2zJo1i08//ZRx48ZVGM/YsWPZZ599GDRoEMOGDaNDhw4sWbKE5557jtNPP53+/ftz66238sorr/D222/TtGlTpkyZwh577MF1113H2LFjS47VoUMHTj31VP74xz/SvHlzrrrqKjp27FgyxHLAgAFs2rSJoUOHcsYZZ/DBBx8wfvz4LW4PVMeRRx7JHnvswQknnMC4ceNo1qxZSX1Rz2/o0KFce+21DBo0iLFjx1JUVMSVV15ZpoVERCQOSggiat1u6xrPGljbemvixhtv5KCDDuK2227jjDPOKJm6eP/992f69OkcccQRJWW7dOnCnDlzuPbaa/nTn/5EYWFhydTFY8eOLTMCYf/992fy5MncfvvtrF+/nl69ejF58uQKhy0C7LTTTrz55ptcccUVDB8+nKKiIrp27cqhhx5Kr169mD9/PqNHj2bMmDElty3y8vIYN24c559/PkcddRQ/+9nPgKBT32WXXcYll1zCokWLyM/P51//+hfNmjUDYPfdd+fuu+/m6quv5rHHHmOPPfbg4Ycf3mK0QnUkbqUMHz6cYcOG0bFjRy677DKee+45VqxYUe3zA2jRogUzZszg7LPP5uSTT6Znz55MmDCBa6+9NnJcIiKpZPV58oj8/Hwv3bu9tA8//JDevXtnOCKpjtNPP53333+fiv7tcpWuSRGpLTOb5+75ybapD4GIiIgoIRARERH1IZAspEcEi4iknloIRERERAmBiIiIKCEQERERlBCIiIgIdSAhMLPjzexvZvaKma0xMzezf0bY/x/hPm5mvdIZq4iISK6qC6MMrgD2AL4DvgR2ru6OZjYYGBbuu1UVxUVERKQCsbcQABcAOwGtgRHV3cnMtgEmAw8C89ITmiSMHTu2zs63/9VXX3HhhRey00470axZM7baaiv23ntvJkyYwOrVq7coP23aNA455BBat25Ny5Yt2Weffbj77rupz7N2iqTC/PnzOeaYY1i4cGHcoUgNxN5C4O6zEj+bWZRd7wjffwc8ksqYKnP+ZZez/JtvM1VdiY5bt2Xi9ddlvN6EM888s04+1vSjjz5iwIABtGjRgt///vfsvvvu/PDDD7z++uuMGzeO9957r8zTHseNG8cll1zCr3/9a/7whz/QpEkTnnrqKc466yzmzJnDpEmTYjwbkew2btw41q1bxw033MDkyZPjDkciij0hqAkzOx04BjjW3VdGTCRqZfk33/LBoUdlrL4SLzyZ+TpL6datG926dYs1hmROOeUUOnTowKuvvkrr1q1L1g8cOJCLLrqIp59+umTdvHnzuOyyyxg9ejR/+tOfStb//Oc/5yc/+QnnnHMOAwcOrPQBTSKS3Pz581m0aBEAixYtYuHCheywww4xRyVR1IVbBpGYWQ/gJuCf7v54zOHUaf379+f4448vs2727NmYGe+//z4An3/+OWbGQw89xG9/+1vatGlDt27dGDNmDJs3by7ZL9ktg/fff5++ffvSrFkzevfuzZNPPkl+fn7JI4irGwPA+vXrufjii9luu+1o2rQpe+yxB9OnT6/0/F566SXeffdd/vSnP5VJBhJat27Nr371q5LlW265hVatWnHZZZdtUXb48OHk5eVx8803l6z74IMPOPzww2nXrh0tW7akd+/e3HrrrZXGJFJflX/0+Q033BBTJFJTWdVCYGYNgHsIOhH+vobHGA4MB+jevXvqgstyF198Mccddxz//ve/eeGFF7jmmmvYddddOfHEE5OWLyoqYuDAgXTo0IH777+foqIizj//fL777jt22223yPUff/zxzJkzh6uvvpq8vDweeughjjrqKObOncuee+6ZdJ+XX36ZRo0aMWDAgGrV8fLLLzNgwICkyUPDhg0ZPHgwkyZNori4mEaNGnHUUUex8847889//pOmTZvy8ccfs2bNmsjnJlIfJFoHKlqWui+rEgKCDogHA4Pc/ZuaHMDd7yDsf5Cfn69eZKGDDjqICRMmAHDYYYfx7LPP8uijj1aYENx9990sX76ct956q+RWQs+ePenXr1/kul944QWefvppZs+ezcEHHwxAQUEBn3zyCddddx0PP/xw0v0KCwvp0KEDzZo1K7N+06ZNJR0EzYyGDRsCsGTJEo46quLbPT169GDDhg2sXLmShg0bsnDhQh5//HF23313AA499NDI5yZSX/To0aNMEtCjR48Yo5GayJpbBma2I3AdcLe7V96WLJEVFBSUWd5ll1348ssvKyw/Z84c9t577zL9Cvr27UvHjh0j1/3888/TuXNn+vbtS3Fxccnr0EMPZe7cuRXu5+5JO6K2adOGxo0b07hxYzp16hQ5HoB27dqx3XbbcfbZZ/Pggw+yfPnyGh1HpL4YPXp0meVLL700pkikprImIQB2BZoCQ0tNRORm5gStBgCfhuuOiS3KLNW2bdsyy02aNGH9+vUVll+2bFnSD/+aJAQrVqxg2bJlJR/iidfYsWNZvHhxhft17dqVr7/+mg0bNpRZ/8orr/D2229z1llnbVG+smbMRYsW0bRpU9q3b0+DBg2YOXMmnTt3ZtiwYXTu3JkDDzyQd999N/L5idQHvXr1KmkV6NGjhzoUZqFsumXwOfCPCrYNAjoDDwNrwrL1XrNmzfjhhx/KrFu1alVKjt25c2c++uijLdaX/yZdnRjatWtH165defzxxyPFcNBBB1FcXMysWbM4/PDDS9bvtddeADz11FNblH/iiSdYu3YtrVq1KrNt8+bNPP300xxwwAE0ahT8t9h555155JFH2LhxI6+88gqjR49m0KBBfPnllzRokE25tEhmjB49mlGjRql1IEtlzV81d3/P3c9M9gI+DotdFq57L8ZQ64xu3bpt8aH93HPPpeTYffr0Yd68eWVuK7z22mtbJATVieHQQw9l2bJlbLXVVuTn52/xqsjBBx/MXnvtxaWXXsratWurjPncc89l9erVSXs/33nnnXz66aeMHDlyi22NGzdmwIABXHjhhSxdupRvv/22yrpE6qNevXrx+OOPq3UgS8XeQhA27x8TLnYO3/c3synhzyvcfVSGw8oJxx57LP/4xz+44IILGDRoELNmzWLGjBkpOfbQoUO59tprGTRoEGPHjqWoqIgrr7xyi6GJ1YnhsMMOY+DAgRx22GGMHj2aXXfdlTVr1vDee++xfv36Socv3X///QwYMICf/exn/P73v2e33XZj06ZNfPrppzz44INstdWPM1rvvffeXH/99VxyySUsWbKEk08+uWRioltuuYWzzz6bo48+GoD//ve/jBo1ipNOOokddtiBb775hnHjxrHHHnvQrl27lPwORUTqktgTAmBP4LRy63YIXwCLgDqTEHTcum0skwR13Lpt5H0GDRrE9ddfz2233cadd97J0UcfzcSJE0s+9GqjRYsWzJgxg7PPPpuTTz6Znj17MmHCBK699trIMZgZjz76KNdffz0TJ07kiy++oF27duy5556cd955lcax884788477/DnP/+Zm2++mcWLF9OoUSN22mknTjzxxC32Hz16NLvssgsTJkzgxBNPZNOmTey2227ccccdZeZP6Ny5M506deK6666jsLCQtm3bcsghh2wx1lpEJFdYfZ6/PT8/3yvqxf7hhx/Su3fvDEeU/fLz89ltt92YMmVK3KHkHF2TIlJbZjbP3ZPei82aPgQiIiKSPkoIREREpE70IZAcUtlEQiIiUnephUBERESUEFSmPne4lLpF16KIpJsSggo0btyYoqKiuMMQAYKnSzZu3DjuMEQkhykhqEDHjh1Z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\n", + "text/plain": [ + "<Figure size 576x504 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ontologies = ['MFO', 'COO', 'BPO']\n", + "\n", + "f, ax = plt.subplots(figsize=(8, 7))\n", + "\n", + "sns.boxplot(data=GO_depth_plotting_long, y='value', x='ontology', hue='overlap_condensed', hue_order=['GOs expanded', 'unique GOs'] , whis=[5, 95], palette=color_reference)\n", + "ax.tick_params(axis='both', which='major', labelsize=20)\n", + "ax.set_xticklabels(ontologies, size=20)\n", + "\n", + "ax.set_xlabel('GO term ontologies', size=20)\n", + "ax.set_ylabel('Maximum GO term depth',size=20)\n", + "\n", + "plt.legend(title = '', fontsize=15)\n", + "\n", + "plt.savefig('/g/arendt/Fabian/PhD/Computational/Spongefold/coffe-paper/figures/GO_depth.svg', bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "markdown", + "id": "e97dce55-30b0-43f0-aee1-9cc7c7982092", + "metadata": {}, + "source": [ + "Here we go. In general however, it is difficult to interpret and compare GO depths. Similar GO depths can specify very different levels of details in different branches of the hierarchy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b31eadd8-fa8c-40f4-b3d8-90a94e11e46c", "metadata": {}, "outputs": [], "source": [] diff --git a/analysis/revision-proteome_coverage.ipynb b/analysis/revision-proteome_coverage.ipynb index bb42fdbeb6ad1b0d7d760462e24cb4d14abce85e..b4d3446ca059db98a235d955d99f2659ebbbc728 100644 --- a/analysis/revision-proteome_coverage.ipynb +++ b/analysis/revision-proteome_coverage.ipynb @@ -658,7 +658,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/analysis/suppl-annotation_categories.ipynb b/analysis/suppl-annotation_categories.ipynb index fb38f74496160f60bf0d3946f6946cd398efba29..7ab0a4b499dff332530745839d66567477b5db0f 100755 --- a/analysis/suppl-annotation_categories.ipynb +++ b/analysis/suppl-annotation_categories.ipynb @@ -99,7 +99,7 @@ "id": "bd1879d9", "metadata": {}, "source": [ - "Use the same bit score cutoff for the CoFFE annotation:" + "Use the same bit score cutoff for the MorF annotation:" ] }, { @@ -632,7 +632,7 @@ "id": "eeabd82b", "metadata": {}, "source": [ - "This shows that bigger proteins have a higher tendency to have a CoFFE annotation." + "This shows that bigger proteins have a higher tendency to have a MorF annotation." ] }, {