From ed65d4946d8e3d1b25cf4af95925c432a50d8209 Mon Sep 17 00:00:00 2001 From: Fabian Ruperti <fabian.ruperti@embl.de> Date: Tue, 20 Dec 2022 15:53:17 +0100 Subject: [PATCH] update GO analysis with GO depth --- analysis/revision-GO_term_comparison.ipynb | 473 ++++++++++++++++----- analysis/suppl-annotation_categories.ipynb | 4 +- 2 files changed, 365 insertions(+), 112 deletions(-) diff --git a/analysis/revision-GO_term_comparison.ipynb b/analysis/revision-GO_term_comparison.ipynb index 17ea9d9..50a4a24 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": 143, + "execution_count": 109, "id": "99e6a23c-f2a3-4369-977e-4d2c74707d0c", "metadata": {}, "outputs": [ @@ -10,7 +10,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2022-12-16 16:34\n" + "2022-12-20 10:26\n" ] } ], @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 110, "id": "a6e66eaf-c7a8-4b26-a99b-5032d49c25a3", "metadata": {}, "outputs": [], @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 111, "id": "0cd74ade-73c8-44f6-9d6e-f0f37bb760d3", "metadata": {}, "outputs": [], @@ -71,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 112, "id": "c3d289af-b99b-4403-af5b-a8fc15f8269f", "metadata": {}, "outputs": [], @@ -90,7 +90,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 113, "id": "63dd7ec5-8841-4bfe-9e38-db55f67c298d", "metadata": {}, "outputs": [], @@ -107,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 114, "id": "469c03ab-31cf-474c-b6eb-fc9f613015ba", "metadata": {}, "outputs": [], @@ -140,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 149, + "execution_count": 115, "id": "fe53ea5e-26de-46cf-ab69-44288f1a2b26", "metadata": {}, "outputs": [], @@ -150,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 116, "id": "3761bb31-a522-40a0-8e86-c262b2b9e150", "metadata": {}, "outputs": [ @@ -158,13 +158,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_467/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_467/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", @@ -180,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 117, "id": "1b45906f-bd6c-4424-93de-ffbef8fad67e", "metadata": {}, "outputs": [], @@ -212,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 118, "id": "90a4a44d-2931-4b87-a7a8-1fe677e8912b", "metadata": {}, "outputs": [], @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 119, "id": "9c799814-04f9-49d4-9427-873c50e3a2cb", "metadata": {}, "outputs": [], @@ -240,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 120, "id": "bcc70854-7a7b-4bdc-b59f-c9244f9ffae8", "metadata": {}, "outputs": [ @@ -248,7 +248,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_467/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", @@ -263,7 +263,7 @@ }, { "cell_type": "code", - "execution_count": 155, + "execution_count": 121, "id": "948c120b-f680-4a9d-ba9e-11ddc15be017", "metadata": {}, "outputs": [ @@ -271,7 +271,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_467/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", @@ -286,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 156, + "execution_count": 122, "id": "ca29c96d-a8da-4c7c-bdf2-5ad1f380c4da", "metadata": {}, "outputs": [ @@ -294,7 +294,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_467/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", @@ -309,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 157, + "execution_count": 123, "id": "9195a8b5-f5e4-4e10-a8e6-fcf190fdd42f", "metadata": {}, "outputs": [ @@ -324,7 +324,7 @@ "Name: overlap, dtype: int64" ] }, - "execution_count": 157, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -335,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 124, "id": "6a4352ef-1326-4102-9ca6-799217ba6be4", "metadata": {}, "outputs": [], @@ -353,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 125, "id": "ae8bac54-f10d-4020-8019-6221c13b56b7", "metadata": {}, "outputs": [ @@ -382,7 +382,7 @@ "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\")" ] }, { @@ -398,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 126, "id": "ab2a9480-aaee-43d3-af23-ca05886b3695", "metadata": {}, "outputs": [ @@ -408,7 +408,7 @@ "<AxesSubplot:xlabel='coverage_struct', ylabel='Count'>" ] }, - "execution_count": 18, + "execution_count": 126, "metadata": {}, "output_type": "execute_result" }, @@ -431,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 127, "id": "f628c3eb-422c-403d-b267-ec10489171df", "metadata": {}, "outputs": [ @@ -441,7 +441,7 @@ "0.4821899253270338" ] }, - "execution_count": 19, + "execution_count": 127, "metadata": {}, "output_type": "execute_result" } @@ -460,7 +460,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 128, "id": "93eca691-0659-4516-8945-32a9b854c7e9", "metadata": {}, "outputs": [ @@ -470,7 +470,7 @@ "<AxesSubplot:xlabel='coverage_seq', ylabel='Count'>" ] }, - "execution_count": 20, + "execution_count": 128, "metadata": {}, "output_type": "execute_result" }, @@ -493,7 +493,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 129, "id": "7036de66-bc32-4445-a88c-53ba9d37dae3", "metadata": {}, "outputs": [ @@ -503,7 +503,7 @@ "0.48056632457400206" ] }, - "execution_count": 21, + "execution_count": 129, "metadata": {}, "output_type": "execute_result" } @@ -522,7 +522,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 130, "id": "ae564ff4-2ed4-48bf-83c3-ca9f27cf7acb", "metadata": { "tags": [] @@ -534,7 +534,7 @@ "<AxesSubplot:xlabel='coverage_seq', ylabel='Count'>" ] }, - "execution_count": 22, + "execution_count": 130, "metadata": {}, "output_type": "execute_result" }, @@ -557,7 +557,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 131, "id": "93c9e292-8a15-4fcb-9695-bfc77e13048c", "metadata": {}, "outputs": [ @@ -567,7 +567,7 @@ "0.7126174034458369" ] }, - "execution_count": 23, + "execution_count": 131, "metadata": {}, "output_type": "execute_result" } @@ -586,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 132, "id": "75c5c9ba-9bfa-4934-8656-a43ac2bcb0e7", "metadata": {}, "outputs": [ @@ -596,7 +596,7 @@ "<AxesSubplot:xlabel='coverage_struct', ylabel='Count'>" ] }, - "execution_count": 24, + "execution_count": 132, "metadata": {}, "output_type": "execute_result" }, @@ -619,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 133, "id": "143b5d56-fad4-449e-ae57-4c35afa6fefd", "metadata": {}, "outputs": [ @@ -629,7 +629,7 @@ "0.6018304051791242" ] }, - "execution_count": 25, + "execution_count": 133, "metadata": {}, "output_type": "execute_result" } @@ -664,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 258, "id": "119a9f49-871c-445c-a729-db5fe80d0cf4", "metadata": {}, "outputs": [], @@ -674,7 +674,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 259, "id": "2123153f-fec7-41d7-a6ec-5f8e50f3b51e", "metadata": {}, "outputs": [], @@ -684,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 213, "id": "2a78b465-9630-4b42-976a-d94ecf6f6ff5", "metadata": {}, "outputs": [], @@ -710,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 137, "id": "bb190be1-e0c8-440d-92bf-fea4b44c7374", "metadata": {}, "outputs": [], @@ -720,7 +720,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 138, "id": "9dc03262-9257-4447-80d6-304743793b4a", "metadata": {}, "outputs": [], @@ -748,7 +748,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 139, "id": "101e4b9a-e315-406c-8cee-ba1115e55208", "metadata": {}, "outputs": [], @@ -758,7 +758,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 140, "id": "23985e19-becf-40ed-8047-cbcd3b1258f4", "metadata": {}, "outputs": [], @@ -768,7 +768,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 141, "id": "854e6e6d-5834-418e-8fcc-24c33846a5ef", "metadata": {}, "outputs": [], @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 142, "id": "60e1b05f-761a-4153-a38f-586143883f34", "metadata": {}, "outputs": [], @@ -788,7 +788,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 143, "id": "86603707-9eab-4fee-ade7-42077ed24068", "metadata": {}, "outputs": [], @@ -809,7 +809,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 144, "id": "fe401867-0ab5-46df-88ba-4b560b00cf7d", "metadata": {}, "outputs": [ @@ -965,7 +965,7 @@ "[2360 rows x 5 columns]" ] }, - "execution_count": 37, + "execution_count": 144, "metadata": {}, "output_type": "execute_result" } @@ -976,7 +976,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 145, "id": "c7dfe425-7158-4f16-97a1-eb6ea0542d03", "metadata": {}, "outputs": [], @@ -986,7 +986,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 146, "id": "05de5391-becd-4500-bac2-450632bbf482", "metadata": {}, "outputs": [ @@ -996,7 +996,7 @@ "<AxesSubplot:xlabel='BPO', ylabel='Count'>" ] }, - "execution_count": 39, + "execution_count": 146, "metadata": {}, "output_type": "execute_result" }, @@ -1019,7 +1019,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 147, "id": "d717eedf-d4db-48c2-a2ed-baa0529c40a1", "metadata": {}, "outputs": [ @@ -1029,7 +1029,7 @@ "0.6656481398476022" ] }, - "execution_count": 40, + "execution_count": 147, "metadata": {}, "output_type": "execute_result" } @@ -1040,7 +1040,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 148, "id": "f388fa0c-5b4d-49ce-9b48-386d3f33acfe", "metadata": {}, "outputs": [ @@ -1050,7 +1050,7 @@ "<AxesSubplot:xlabel='CCO', ylabel='Count'>" ] }, - "execution_count": 41, + "execution_count": 148, "metadata": {}, "output_type": "execute_result" }, @@ -1074,7 +1074,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 149, "id": "13d7959f-32ce-4688-b387-22e1f9db6d09", "metadata": {}, "outputs": [ @@ -1084,7 +1084,7 @@ "0.8254611161939618" ] }, - "execution_count": 42, + "execution_count": 149, "metadata": {}, "output_type": "execute_result" } @@ -1095,7 +1095,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 150, "id": "d85ef2a1-e21d-4a1a-b5e9-926544becf5b", "metadata": {}, "outputs": [ @@ -1105,7 +1105,7 @@ "<AxesSubplot:xlabel='MFO', ylabel='Count'>" ] }, - "execution_count": 43, + "execution_count": 150, "metadata": {}, "output_type": "execute_result" }, @@ -1129,7 +1129,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 151, "id": "7a07389d-92e8-42c4-9331-412b5fd29079", "metadata": {}, "outputs": [ @@ -1139,7 +1139,7 @@ "0.7859392819429791" ] }, - "execution_count": 44, + "execution_count": 151, "metadata": {}, "output_type": "execute_result" } @@ -1158,7 +1158,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 152, "id": "84d8e039-e16d-4482-8552-9099501bf47e", "metadata": {}, "outputs": [], @@ -1168,7 +1168,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 153, "id": "b49002d7-ffb8-4e2c-a3bd-b0c16835318c", "metadata": {}, "outputs": [ @@ -1337,7 +1337,7 @@ "[2203 rows x 5 columns]" ] }, - "execution_count": 50, + "execution_count": 153, "metadata": {}, "output_type": "execute_result" } @@ -1356,7 +1356,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 154, "id": "e1d45be9-ee8c-4b86-9163-ba054ba9ed5c", "metadata": {}, "outputs": [], @@ -1366,7 +1366,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 155, "id": "5c758b4e-9833-40eb-910c-51b8e2ee1216", "metadata": {}, "outputs": [], @@ -1394,7 +1394,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 156, "id": "b2670268-3990-430d-bb82-e7bba51bf81b", "metadata": {}, "outputs": [], @@ -1404,7 +1404,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 157, "id": "55340e34-3b2f-48b3-b4cf-f96e50b56504", "metadata": {}, "outputs": [], @@ -1414,7 +1414,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 158, "id": "4aa34798-6754-4b95-a61a-653bf5fc235f", "metadata": {}, "outputs": [], @@ -1424,7 +1424,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 159, "id": "8553a1e2-868e-4f19-96bf-c840ca7a6db9", "metadata": {}, "outputs": [], @@ -1434,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 160, "id": "81a05e12-6558-4867-9796-79bef9b3e3de", "metadata": {}, "outputs": [], @@ -1455,7 +1455,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 161, "id": "ea64dbe5-1c66-46e9-95df-7ed602c6eb47", "metadata": {}, "outputs": [ @@ -1611,7 +1611,7 @@ "[2203 rows x 5 columns]" ] }, - "execution_count": 58, + "execution_count": 161, "metadata": {}, "output_type": "execute_result" } @@ -1622,7 +1622,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 162, "id": "0be39243-e149-430c-8dd9-6dc46c3bac81", "metadata": {}, "outputs": [], @@ -1632,7 +1632,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 163, "id": "22a18199-4907-4423-a321-2d2c98517bad", "metadata": {}, "outputs": [ @@ -1642,7 +1642,7 @@ "<AxesSubplot:xlabel='BPO', ylabel='Count'>" ] }, - "execution_count": 60, + "execution_count": 163, "metadata": {}, "output_type": "execute_result" }, @@ -1665,7 +1665,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 164, "id": "a0cd16ae-8fb2-49fa-ae00-d4f0c651b781", "metadata": {}, "outputs": [ @@ -1675,7 +1675,7 @@ "0.8768518696069056" ] }, - "execution_count": 61, + "execution_count": 164, "metadata": {}, "output_type": "execute_result" } @@ -1686,7 +1686,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 165, "id": "1125e2fe-6176-4a50-a144-7567bb5a366b", "metadata": {}, "outputs": [ @@ -1696,7 +1696,7 @@ "<AxesSubplot:xlabel='CCO', ylabel='Count'>" ] }, - "execution_count": 62, + "execution_count": 165, "metadata": {}, "output_type": "execute_result" }, @@ -1720,7 +1720,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 166, "id": "c5d6aaf5-dbd8-4a7f-8f35-f1d6ed438100", "metadata": {}, "outputs": [ @@ -1730,7 +1730,7 @@ "0.9267089588377744" ] }, - "execution_count": 63, + "execution_count": 166, "metadata": {}, "output_type": "execute_result" } @@ -1741,7 +1741,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 167, "id": "e92d5b43-f861-4fc5-809e-6f91a4744310", "metadata": {}, "outputs": [ @@ -1751,7 +1751,7 @@ "<AxesSubplot:xlabel='MFO', ylabel='Count'>" ] }, - "execution_count": 66, + "execution_count": 167, "metadata": {}, "output_type": "execute_result" }, @@ -1775,7 +1775,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 168, "id": "a815cfe3-6610-4436-8eb0-cfbd90efe671", "metadata": {}, "outputs": [ @@ -1785,7 +1785,7 @@ "0.9309306777030519" ] }, - "execution_count": 67, + "execution_count": 168, "metadata": {}, "output_type": "execute_result" } @@ -1804,7 +1804,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 169, "id": "24226d52-2db6-4c9e-af7a-e0d8921ff8d1", "metadata": {}, "outputs": [], @@ -1814,7 +1814,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 170, "id": "effa91b7-eefc-4f44-89ca-91e4d35c1358", "metadata": {}, "outputs": [], @@ -1827,7 +1827,7 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 171, "id": "deab143b-1d8b-435e-88cc-2f381cd3ca0e", "metadata": {}, "outputs": [], @@ -1837,7 +1837,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 172, "id": "faea203a-1579-43b9-9116-80a0d22c2c6c", "metadata": {}, "outputs": [], @@ -1850,7 +1850,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 173, "id": "9895083b-e84c-4055-a7ba-19a872efd149", "metadata": {}, "outputs": [], @@ -1860,7 +1860,7 @@ }, { "cell_type": "code", - "execution_count": 181, + "execution_count": 174, "id": "affe2f61-4040-4163-9ebc-2c8c82a99f41", "metadata": {}, "outputs": [], @@ -1873,20 +1873,10 @@ }, { "cell_type": "code", - "execution_count": 183, + "execution_count": 175, "id": "ac7bba95-aec3-49c0-a6ed-c990a0c44db2", "metadata": {}, "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.legend.Legend at 0x7f259eca0ac0>" - ] - }, - "execution_count": 183, - "metadata": {}, - "output_type": "execute_result" - }, { "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+tt95a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\n", @@ -1910,13 +1900,276 @@ "ax.set_xlabel('GO term ontologies', size=20)\n", "ax.set_ylabel('Semantic Similarity',size=20)\n", "\n", - "plt.legend(title = '', fontsize=15)" + "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": "4a3f2065-8115-415f-a8e9-fc73ce178f9e", + "id": "b31eadd8-fa8c-40f4-b3d8-90a94e11e46c", "metadata": {}, "outputs": [], "source": [] diff --git a/analysis/suppl-annotation_categories.ipynb b/analysis/suppl-annotation_categories.ipynb index fb38f74..7ab0a4b 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." ] }, { -- GitLab