{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Use Case 3: Associating Clinical Variables with Acetylation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this use case, we aim to analyze acetylation data with a clinical attribute, specifically \"histologic_type\". Our goal is to identify acetylation sites that differ significantly in frequency between non-tumor, serous and endometrial cells." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 1: Import Packages and Load Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we'll import the necessary packages, including the cptac package, and load the Endometrial dataset. Make sure to run pip install (package name) in your terminal to make sure the all of the dependencies you are trying to import are installed." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import scipy.stats\n", "import statsmodels.stats.multitest\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import math\n", "import cptac\n", "import cptac.utils as ut\n", "\n", "en = cptac.Ucec()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 2: Understanding the Acetylproteomic Dataframe\n", "\n", "The Endometrial acetylproteomic dataframe has a multiindex. The 'Name' index lists the gene of interest, 'Site' index shows the site of acetylation, and 'Peptide' index shows the peptide sequence where the modification took place. 'Database_ID' differentiates entries with the same gene name. After joining with other dataframes, we typically drop 'Database_ID' for easier data manipulation." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "cptac warning: Your version of cptac (1.5.1) is out-of-date. Latest is 1.5.0. Please run 'pip install --upgrade cptac' to update it. (C:\\Users\\sabme\\anaconda3\\lib\\threading.py, line 910)\n" ] }, { "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 tr th {\n", " text-align: left;\n", " }\n", "\n", " .dataframe thead tr:last-of-type th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr>\n", " <th>Name</th>\n", " <th>ARF5</th>\n", " <th colspan=\"8\" halign=\"left\">FKBP4</th>\n", " <th>ZNF195</th>\n", " <th>...</th>\n", " <th colspan=\"3\" halign=\"left\">PDIA4</th>\n", " <th>AC004706.3</th>\n", " <th colspan=\"2\" halign=\"left\">NaN</th>\n", " <th colspan=\"2\" halign=\"left\">WIZ</th>\n", " <th colspan=\"2\" halign=\"left\">NaN</th>\n", " </tr>\n", " <tr>\n", " <th>Site</th>\n", " <th>K109</th>\n", " <th>K181</th>\n", " <th>K213</th>\n", " <th>K234</th>\n", " <th>K266</th>\n", " <th>K294</th>\n", " <th>K35</th>\n", " <th>K354</th>\n", " <th>K76</th>\n", " <th>K497</th>\n", " <th>...</th>\n", " <th>K570</th>\n", " <th>K611</th>\n", " <th>K637</th>\n", " <th>K21</th>\n", " <th>K102K105</th>\n", " <th>K105</th>\n", " <th>K16</th>\n", " <th>K638</th>\n", " <th>K228</th>\n", " <th>K304</th>\n", " </tr>\n", " <tr>\n", " <th>Peptide</th>\n", " <th>VQESADELQKMLQEDELR</th>\n", " <th>DKLFDQR</th>\n", " <th>MEKGEHSIVYLK</th>\n", " <th>EKFQIPPNAELK</th>\n", " <th>ESWEMNSEEKLEQSTIVK</th>\n", " <th>QALLQYKK;QALLQYK</th>\n", " <th>QDEGVLK</th>\n", " <th>ALELDSNNEKGLFR</th>\n", " <th>DKFSFDLGK</th>\n", " <th>THTGEKPYK</th>\n", " <th>...</th>\n", " <th>QLEPVYNSLAKK</th>\n", " <th>VEGFPTIYFAPSGDK;VEGFPTIYFAPSGDKK</th>\n", " <th>FIEEHATK</th>\n", " <th>RGEQAAKMPGR;GEQAAKMPGR</th>\n", " <th>SLQKTAK</th>\n", " <th>TAKIMVHSPTK</th>\n", " <th>AESKAAAGPR</th>\n", " <th>PSATGYLGSVAAKRPLQEDR</th>\n", " <th>LRCASIQKFGER</th>\n", " <th>LKECCDKPLLEK;ECCDKPLLEK</th>\n", " </tr>\n", " <tr>\n", " <th>Database_ID</th>\n", " <th>ENSP00000000233.5</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000001008.4</th>\n", " <th>ENSP00000005082.9</th>\n", " <th>...</th>\n", " <th>ENSP00000499129.1</th>\n", " <th>ENSP00000499129.1</th>\n", " <th>ENSP00000499129.1</th>\n", " <th>ENSP00000499350.1</th>\n", " <th>ENSP00000499373.1</th>\n", " <th>ENSP00000499373.1</th>\n", " <th>ENSP00000501256.3</th>\n", " <th>ENSP00000501256.3</th>\n", " <th>P02769</th>\n", " <th>P02769</th>\n", " </tr>\n", " <tr>\n", " <th>Patient_ID</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>C3L-00006</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.945484</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>22.290219</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00008</th>\n", " <td>NaN</td>\n", " <td>13.420601</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.790586</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.147555</td>\n", " <td>12.664316</td>\n", " <td>NaN</td>\n", " <td>22.236406</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00032</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.060923</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.952557</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.351192</td>\n", " <td>21.437865</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00084</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.336663</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.251376</td>\n", " <td>14.506364</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>25.212475</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00090</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.483674</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.116837</td>\n", " <td>13.641868</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.869961</td>\n", " <td>NaN</td>\n", " <td>21.68762</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>NX5.N</th>\n", " <td>14.617941</td>\n", " <td>NaN</td>\n", " <td>15.496429</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.903885</td>\n", " <td>11.666652</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.23143</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.490334</td>\n", " </tr>\n", " <tr>\n", " <th>NX6.N</th>\n", " <td>14.533201</td>\n", " <td>NaN</td>\n", " <td>15.618387</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.994645</td>\n", " <td>12.320025</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.188642</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.308924</td>\n", " </tr>\n", " <tr>\n", " <th>NX7.N</th>\n", " <td>14.289658</td>\n", " <td>NaN</td>\n", " <td>15.657418</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>13.018219</td>\n", " <td>12.048218</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.511215</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.759263</td>\n", " </tr>\n", " <tr>\n", " <th>NX8.N</th>\n", " <td>NaN</td>\n", " <td>13.118452</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.718777</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.582718</td>\n", " <td>11.997747</td>\n", " <td>NaN</td>\n", " <td>24.135771</td>\n", " </tr>\n", " <tr>\n", " <th>NX9.N</th>\n", " <td>NaN</td>\n", " <td>12.792899</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.237764</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.802954</td>\n", " <td>NaN</td>\n", " <td>23.547796</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>160 rows × 11790 columns</p>\n", "</div>" ], "text/plain": [ "Name ARF5 FKBP4 \\\n", "Site K109 K181 K213 \n", "Peptide VQESADELQKMLQEDELR DKLFDQR MEKGEHSIVYLK \n", "Database_ID ENSP00000000233.5 ENSP00000001008.4 ENSP00000001008.4 \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 NaN 13.420601 NaN \n", "C3L-00032 NaN NaN 15.060923 \n", "C3L-00084 NaN NaN NaN \n", "C3L-00090 NaN NaN NaN \n", "... ... ... ... \n", "NX5.N 14.617941 NaN 15.496429 \n", "NX6.N 14.533201 NaN 15.618387 \n", "NX7.N 14.289658 NaN 15.657418 \n", "NX8.N NaN 13.118452 NaN \n", "NX9.N NaN 12.792899 NaN \n", "\n", "Name \\\n", "Site K234 K266 K294 \n", "Peptide EKFQIPPNAELK ESWEMNSEEKLEQSTIVK QALLQYKK;QALLQYK \n", "Database_ID ENSP00000001008.4 ENSP00000001008.4 ENSP00000001008.4 \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 NaN NaN NaN \n", "C3L-00032 NaN NaN NaN \n", "C3L-00084 NaN NaN 12.336663 \n", "C3L-00090 NaN NaN NaN \n", "... ... ... ... \n", "NX5.N NaN NaN 12.903885 \n", "NX6.N NaN NaN 12.994645 \n", "NX7.N NaN NaN 13.018219 \n", "NX8.N NaN NaN NaN \n", "NX9.N NaN NaN NaN \n", "\n", "Name \\\n", "Site K35 K354 K76 \n", "Peptide QDEGVLK ALELDSNNEKGLFR DKFSFDLGK \n", "Database_ID ENSP00000001008.4 ENSP00000001008.4 ENSP00000001008.4 \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 NaN NaN NaN \n", "C3L-00032 NaN NaN NaN \n", "C3L-00084 NaN NaN NaN \n", "C3L-00090 NaN 16.483674 NaN \n", "... ... ... ... \n", "NX5.N 11.666652 NaN NaN \n", "NX6.N 12.320025 NaN NaN \n", "NX7.N 12.048218 NaN NaN \n", "NX8.N NaN NaN NaN \n", "NX9.N NaN NaN NaN \n", "\n", "Name ZNF195 ... PDIA4 \\\n", "Site K497 ... K570 \n", "Peptide THTGEKPYK ... QLEPVYNSLAKK \n", "Database_ID ENSP00000005082.9 ... ENSP00000499129.1 \n", "Patient_ID ... \n", "C3L-00006 NaN ... NaN \n", "C3L-00008 NaN ... NaN \n", "C3L-00032 NaN ... NaN \n", "C3L-00084 NaN ... NaN \n", "C3L-00090 NaN ... NaN \n", "... ... ... ... \n", "NX5.N NaN ... NaN \n", "NX6.N NaN ... NaN \n", "NX7.N NaN ... NaN \n", "NX8.N NaN ... NaN \n", "NX9.N NaN ... NaN \n", "\n", "Name \\\n", "Site K611 K637 \n", "Peptide VEGFPTIYFAPSGDK;VEGFPTIYFAPSGDKK FIEEHATK \n", "Database_ID ENSP00000499129.1 ENSP00000499129.1 \n", "Patient_ID \n", "C3L-00006 NaN NaN \n", "C3L-00008 NaN NaN \n", "C3L-00032 NaN NaN \n", "C3L-00084 NaN 12.251376 \n", "C3L-00090 NaN NaN \n", "... ... ... \n", "NX5.N NaN NaN \n", "NX6.N NaN NaN \n", "NX7.N NaN NaN \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name AC004706.3 NaN \\\n", "Site K21 K102K105 K105 \n", "Peptide RGEQAAKMPGR;GEQAAKMPGR SLQKTAK TAKIMVHSPTK \n", "Database_ID ENSP00000499350.1 ENSP00000499373.1 ENSP00000499373.1 \n", "Patient_ID \n", "C3L-00006 15.945484 NaN NaN \n", "C3L-00008 16.790586 NaN NaN \n", "C3L-00032 15.952557 NaN NaN \n", "C3L-00084 14.506364 NaN NaN \n", "C3L-00090 16.116837 13.641868 NaN \n", "... ... ... ... \n", "NX5.N 17.23143 NaN NaN \n", "NX6.N 17.188642 NaN NaN \n", "NX7.N 17.511215 NaN NaN \n", "NX8.N 16.718777 NaN NaN \n", "NX9.N 15.237764 NaN NaN \n", "\n", "Name WIZ NaN \\\n", "Site K16 K638 K228 \n", "Peptide AESKAAAGPR PSATGYLGSVAAKRPLQEDR LRCASIQKFGER \n", "Database_ID ENSP00000501256.3 ENSP00000501256.3 P02769 \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 14.147555 12.664316 NaN \n", "C3L-00032 NaN NaN 14.351192 \n", "C3L-00084 NaN NaN NaN \n", "C3L-00090 NaN 11.869961 NaN \n", "... ... ... ... \n", "NX5.N NaN NaN NaN \n", "NX6.N NaN NaN NaN \n", "NX7.N NaN NaN NaN \n", "NX8.N 12.582718 11.997747 NaN \n", "NX9.N NaN 11.802954 NaN \n", "\n", "Name \n", "Site K304 \n", "Peptide LKECCDKPLLEK;ECCDKPLLEK \n", "Database_ID P02769 \n", "Patient_ID \n", "C3L-00006 22.290219 \n", "C3L-00008 22.236406 \n", "C3L-00032 21.437865 \n", "C3L-00084 25.212475 \n", "C3L-00090 21.68762 \n", "... ... \n", "NX5.N 23.490334 \n", "NX6.N 23.308924 \n", "NX7.N 23.759263 \n", "NX8.N 24.135771 \n", "NX9.N 23.547796 \n", "\n", "[160 rows x 11790 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "en.get_acetylproteomics('umich')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 3: Choose Clinical Attribute and Join Dataframes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this use case, we'll use the 'histologic_type' clinical attribute to identify differences in acetylation sites between \"endometrioid\" and \"serous\" cancer cells. We'll join this clinical attribute with our acetylation dataframe using the en.join_metadata_to_omics method" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "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 tr th {\n", " text-align: left;\n", " }\n", "\n", " .dataframe thead tr:last-of-type th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr>\n", " <th>Name</th>\n", " <th>histologic_type</th>\n", " <th>ARF5_umich_acetylproteomics</th>\n", " <th colspan=\"8\" halign=\"left\">FKBP4_umich_acetylproteomics</th>\n", " <th>...</th>\n", " <th colspan=\"3\" halign=\"left\">PDIA4_umich_acetylproteomics</th>\n", " <th>AC004706.3_umich_acetylproteomics</th>\n", " <th colspan=\"2\" halign=\"left\">NaN</th>\n", " <th colspan=\"2\" halign=\"left\">WIZ_umich_acetylproteomics</th>\n", " <th colspan=\"2\" halign=\"left\">NaN</th>\n", " </tr>\n", " <tr>\n", " <th>Site</th>\n", " <th></th>\n", " <th>K109</th>\n", " <th>K181</th>\n", " <th>K213</th>\n", " <th>K234</th>\n", " <th>K266</th>\n", " <th>K294</th>\n", " <th>K35</th>\n", " <th>K354</th>\n", " <th>K76</th>\n", " <th>...</th>\n", " <th>K570</th>\n", " <th>K611</th>\n", " <th>K637</th>\n", " <th>K21</th>\n", " <th>K102K105</th>\n", " <th>K105</th>\n", " <th>K16</th>\n", " <th>K638</th>\n", " <th>K228</th>\n", " <th>K304</th>\n", " </tr>\n", " <tr>\n", " <th>Peptide</th>\n", " <th></th>\n", " <th>VQESADELQKMLQEDELR</th>\n", " <th>DKLFDQR</th>\n", " <th>MEKGEHSIVYLK</th>\n", " <th>EKFQIPPNAELK</th>\n", " <th>ESWEMNSEEKLEQSTIVK</th>\n", " <th>QALLQYKK;QALLQYK</th>\n", " <th>QDEGVLK</th>\n", " <th>ALELDSNNEKGLFR</th>\n", " <th>DKFSFDLGK</th>\n", " <th>...</th>\n", " <th>QLEPVYNSLAKK</th>\n", " <th>VEGFPTIYFAPSGDK;VEGFPTIYFAPSGDKK</th>\n", " <th>FIEEHATK</th>\n", " <th>RGEQAAKMPGR;GEQAAKMPGR</th>\n", " <th>SLQKTAK</th>\n", " <th>TAKIMVHSPTK</th>\n", " <th>AESKAAAGPR</th>\n", " <th>PSATGYLGSVAAKRPLQEDR</th>\n", " <th>LRCASIQKFGER</th>\n", " <th>LKECCDKPLLEK;ECCDKPLLEK</th>\n", " </tr>\n", " <tr>\n", " <th>Patient_ID</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>C3L-00006</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.945484</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>22.290219</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00008</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>13.420601</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.790586</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.147555</td>\n", " <td>12.664316</td>\n", " <td>NaN</td>\n", " <td>22.236406</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00032</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.060923</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.952557</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.351192</td>\n", " <td>21.437865</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00084</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.336663</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.251376</td>\n", " <td>14.506364</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>25.212475</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00090</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.483674</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.116837</td>\n", " <td>13.641868</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.869961</td>\n", " <td>NaN</td>\n", " <td>21.68762</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>NX5.N</th>\n", " <td>NaN</td>\n", " <td>14.617941</td>\n", " <td>NaN</td>\n", " <td>15.496429</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.903885</td>\n", " <td>11.666652</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.23143</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.490334</td>\n", " </tr>\n", " <tr>\n", " <th>NX6.N</th>\n", " <td>NaN</td>\n", " <td>14.533201</td>\n", " <td>NaN</td>\n", " <td>15.618387</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.994645</td>\n", " <td>12.320025</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.188642</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.308924</td>\n", " </tr>\n", " <tr>\n", " <th>NX7.N</th>\n", " <td>NaN</td>\n", " <td>14.289658</td>\n", " <td>NaN</td>\n", " <td>15.657418</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>13.018219</td>\n", " <td>12.048218</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.511215</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.759263</td>\n", " </tr>\n", " <tr>\n", " <th>NX8.N</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>13.118452</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.718777</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.582718</td>\n", " <td>11.997747</td>\n", " <td>NaN</td>\n", " <td>24.135771</td>\n", " </tr>\n", " <tr>\n", " <th>NX9.N</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.792899</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.237764</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.802954</td>\n", " <td>NaN</td>\n", " <td>23.547796</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>160 rows × 11791 columns</p>\n", "</div>" ], "text/plain": [ "Name histologic_type ARF5_umich_acetylproteomics \\\n", "Site K109 \n", "Peptide VQESADELQKMLQEDELR \n", "Patient_ID \n", "C3L-00006 Endometrioid carcinoma NaN \n", "C3L-00008 Endometrioid carcinoma NaN \n", "C3L-00032 Endometrioid carcinoma NaN \n", "C3L-00084 Endometrioid carcinoma NaN \n", "C3L-00090 Endometrioid carcinoma NaN \n", "... ... ... \n", "NX5.N NaN 14.617941 \n", "NX6.N NaN 14.533201 \n", "NX7.N NaN 14.289658 \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name FKBP4_umich_acetylproteomics \\\n", "Site K181 K213 K234 \n", "Peptide DKLFDQR MEKGEHSIVYLK EKFQIPPNAELK \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 13.420601 NaN NaN \n", "C3L-00032 NaN 15.060923 NaN \n", "C3L-00084 NaN NaN NaN \n", "C3L-00090 NaN NaN NaN \n", "... ... ... ... \n", "NX5.N NaN 15.496429 NaN \n", "NX6.N NaN 15.618387 NaN \n", "NX7.N NaN 15.657418 NaN \n", "NX8.N 13.118452 NaN NaN \n", "NX9.N 12.792899 NaN NaN \n", "\n", "Name \\\n", "Site K266 K294 K35 K354 \n", "Peptide ESWEMNSEEKLEQSTIVK QALLQYKK;QALLQYK QDEGVLK ALELDSNNEKGLFR \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN NaN \n", "C3L-00008 NaN NaN NaN NaN \n", "C3L-00032 NaN NaN NaN NaN \n", "C3L-00084 NaN 12.336663 NaN NaN \n", "C3L-00090 NaN NaN NaN 16.483674 \n", "... ... ... ... ... \n", "NX5.N NaN 12.903885 11.666652 NaN \n", "NX6.N NaN 12.994645 12.320025 NaN \n", "NX7.N NaN 13.018219 12.048218 NaN \n", "NX8.N NaN NaN NaN NaN \n", "NX9.N NaN NaN NaN NaN \n", "\n", "Name ... PDIA4_umich_acetylproteomics \\\n", "Site K76 ... K570 \n", "Peptide DKFSFDLGK ... QLEPVYNSLAKK \n", "Patient_ID ... \n", "C3L-00006 NaN ... NaN \n", "C3L-00008 NaN ... NaN \n", "C3L-00032 NaN ... NaN \n", "C3L-00084 NaN ... NaN \n", "C3L-00090 NaN ... NaN \n", "... ... ... ... \n", "NX5.N NaN ... NaN \n", "NX6.N NaN ... NaN \n", "NX7.N NaN ... NaN \n", "NX8.N NaN ... NaN \n", "NX9.N NaN ... NaN \n", "\n", "Name \\\n", "Site K611 K637 \n", "Peptide VEGFPTIYFAPSGDK;VEGFPTIYFAPSGDKK FIEEHATK \n", "Patient_ID \n", "C3L-00006 NaN NaN \n", "C3L-00008 NaN NaN \n", "C3L-00032 NaN NaN \n", "C3L-00084 NaN 12.251376 \n", "C3L-00090 NaN NaN \n", "... ... ... \n", "NX5.N NaN NaN \n", "NX6.N NaN NaN \n", "NX7.N NaN NaN \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name AC004706.3_umich_acetylproteomics NaN \\\n", "Site K21 K102K105 K105 \n", "Peptide RGEQAAKMPGR;GEQAAKMPGR SLQKTAK TAKIMVHSPTK \n", "Patient_ID \n", "C3L-00006 15.945484 NaN NaN \n", "C3L-00008 16.790586 NaN NaN \n", "C3L-00032 15.952557 NaN NaN \n", "C3L-00084 14.506364 NaN NaN \n", "C3L-00090 16.116837 13.641868 NaN \n", "... ... ... ... \n", "NX5.N 17.23143 NaN NaN \n", "NX6.N 17.188642 NaN NaN \n", "NX7.N 17.511215 NaN NaN \n", "NX8.N 16.718777 NaN NaN \n", "NX9.N 15.237764 NaN NaN \n", "\n", "Name WIZ_umich_acetylproteomics NaN \\\n", "Site K16 K638 K228 \n", "Peptide AESKAAAGPR PSATGYLGSVAAKRPLQEDR LRCASIQKFGER \n", "Patient_ID \n", "C3L-00006 NaN NaN NaN \n", "C3L-00008 14.147555 12.664316 NaN \n", "C3L-00032 NaN NaN 14.351192 \n", "C3L-00084 NaN NaN NaN \n", "C3L-00090 NaN 11.869961 NaN \n", "... ... ... ... \n", "NX5.N NaN NaN NaN \n", "NX6.N NaN NaN NaN \n", "NX7.N NaN NaN NaN \n", "NX8.N 12.582718 11.997747 NaN \n", "NX9.N NaN 11.802954 NaN \n", "\n", "Name \n", "Site K304 \n", "Peptide LKECCDKPLLEK;ECCDKPLLEK \n", "Patient_ID \n", "C3L-00006 22.290219 \n", "C3L-00008 22.236406 \n", "C3L-00032 21.437865 \n", "C3L-00084 25.212475 \n", "C3L-00090 21.68762 \n", "... ... \n", "NX5.N 23.490334 \n", "NX6.N 23.308924 \n", "NX7.N 23.759263 \n", "NX8.N 24.135771 \n", "NX9.N 23.547796 \n", "\n", "[160 rows x 11791 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Set desired attribute to variable 'clinical_attribute'\n", "clinical_attribute = \"histologic_type\"\n", "\n", "#Join attribute with acetylation dataframe\n", "clinical_and_acetylation = en.join_metadata_to_omics(metadata_name='clinical',\n", " omics_name='acetylproteomics',\n", " omics_source='umich',\n", " metadata_source='mssm',\n", " metadata_cols=clinical_attribute)\n", "clinical_and_acetylation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Now, we'll drop the 'Peptide' level and flatten the 'Site' level, appending the 'Site' to the column names." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "cptac warning: Due to dropping the specified levels, dataframe now has 587 duplicated column headers. (C:\\Users\\sabme\\AppData\\Local\\Temp\\ipykernel_28116\\1181336117.py, line 2)\n" ] }, { "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>Name</th>\n", " <th>histologic_type</th>\n", " <th>ARF5_umich_acetylproteomics_K109</th>\n", " <th>FKBP4_umich_acetylproteomics_K181</th>\n", " <th>FKBP4_umich_acetylproteomics_K213</th>\n", " <th>FKBP4_umich_acetylproteomics_K234</th>\n", " <th>FKBP4_umich_acetylproteomics_K266</th>\n", " <th>FKBP4_umich_acetylproteomics_K294</th>\n", " <th>FKBP4_umich_acetylproteomics_K35</th>\n", " <th>FKBP4_umich_acetylproteomics_K354</th>\n", " <th>FKBP4_umich_acetylproteomics_K76</th>\n", " <th>...</th>\n", " <th>PDIA4_umich_acetylproteomics_K570</th>\n", " <th>PDIA4_umich_acetylproteomics_K611</th>\n", " <th>PDIA4_umich_acetylproteomics_K637</th>\n", " <th>AC004706.3_umich_acetylproteomics_K21</th>\n", " <th>K102K105</th>\n", " <th>K105</th>\n", " <th>WIZ_umich_acetylproteomics_K16</th>\n", " <th>WIZ_umich_acetylproteomics_K638</th>\n", " <th>K228</th>\n", " <th>K304</th>\n", " </tr>\n", " <tr>\n", " <th>Patient_ID</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>C3L-00006</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.945484</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>22.290219</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00008</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>13.420601</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.790586</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.147555</td>\n", " <td>12.664316</td>\n", " <td>NaN</td>\n", " <td>22.236406</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00032</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.060923</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.952557</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>14.351192</td>\n", " <td>21.437865</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00084</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.336663</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.251376</td>\n", " <td>14.506364</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>25.212475</td>\n", " </tr>\n", " <tr>\n", " <th>C3L-00090</th>\n", " <td>Endometrioid carcinoma</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.483674</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.116837</td>\n", " <td>13.641868</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.869961</td>\n", " <td>NaN</td>\n", " <td>21.68762</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>NX5.N</th>\n", " <td>NaN</td>\n", " <td>14.617941</td>\n", " <td>NaN</td>\n", " <td>15.496429</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.903885</td>\n", " <td>11.666652</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.23143</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.490334</td>\n", " </tr>\n", " <tr>\n", " <th>NX6.N</th>\n", " <td>NaN</td>\n", " <td>14.533201</td>\n", " <td>NaN</td>\n", " <td>15.618387</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.994645</td>\n", " <td>12.320025</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.188642</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.308924</td>\n", " </tr>\n", " <tr>\n", " <th>NX7.N</th>\n", " <td>NaN</td>\n", " <td>14.289658</td>\n", " <td>NaN</td>\n", " <td>15.657418</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>13.018219</td>\n", " <td>12.048218</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>17.511215</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>23.759263</td>\n", " </tr>\n", " <tr>\n", " <th>NX8.N</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>13.118452</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>16.718777</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.582718</td>\n", " <td>11.997747</td>\n", " <td>NaN</td>\n", " <td>24.135771</td>\n", " </tr>\n", " <tr>\n", " <th>NX9.N</th>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>12.792899</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>15.237764</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>11.802954</td>\n", " <td>NaN</td>\n", " <td>23.547796</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>160 rows × 11791 columns</p>\n", "</div>" ], "text/plain": [ "Name histologic_type ARF5_umich_acetylproteomics_K109 \\\n", "Patient_ID \n", "C3L-00006 Endometrioid carcinoma NaN \n", "C3L-00008 Endometrioid carcinoma NaN \n", "C3L-00032 Endometrioid carcinoma NaN \n", "C3L-00084 Endometrioid carcinoma NaN \n", "C3L-00090 Endometrioid carcinoma NaN \n", "... ... ... \n", "NX5.N NaN 14.617941 \n", "NX6.N NaN 14.533201 \n", "NX7.N NaN 14.289658 \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name FKBP4_umich_acetylproteomics_K181 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 13.420601 \n", "C3L-00032 NaN \n", "C3L-00084 NaN \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N NaN \n", "NX6.N NaN \n", "NX7.N NaN \n", "NX8.N 13.118452 \n", "NX9.N 12.792899 \n", "\n", "Name FKBP4_umich_acetylproteomics_K213 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 NaN \n", "C3L-00032 15.060923 \n", "C3L-00084 NaN \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N 15.496429 \n", "NX6.N 15.618387 \n", "NX7.N 15.657418 \n", "NX8.N NaN \n", "NX9.N NaN \n", "\n", "Name FKBP4_umich_acetylproteomics_K234 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 NaN \n", "C3L-00032 NaN \n", "C3L-00084 NaN \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N NaN \n", "NX6.N NaN \n", "NX7.N NaN \n", "NX8.N NaN \n", "NX9.N NaN \n", "\n", "Name FKBP4_umich_acetylproteomics_K266 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 NaN \n", "C3L-00032 NaN \n", "C3L-00084 NaN \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N NaN \n", "NX6.N NaN \n", "NX7.N NaN \n", "NX8.N NaN \n", "NX9.N NaN \n", "\n", "Name FKBP4_umich_acetylproteomics_K294 FKBP4_umich_acetylproteomics_K35 \\\n", "Patient_ID \n", "C3L-00006 NaN NaN \n", "C3L-00008 NaN NaN \n", "C3L-00032 NaN NaN \n", "C3L-00084 12.336663 NaN \n", "C3L-00090 NaN NaN \n", "... ... ... \n", "NX5.N 12.903885 11.666652 \n", "NX6.N 12.994645 12.320025 \n", "NX7.N 13.018219 12.048218 \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name FKBP4_umich_acetylproteomics_K354 FKBP4_umich_acetylproteomics_K76 \\\n", "Patient_ID \n", "C3L-00006 NaN NaN \n", "C3L-00008 NaN NaN \n", "C3L-00032 NaN NaN \n", "C3L-00084 NaN NaN \n", "C3L-00090 16.483674 NaN \n", "... ... ... \n", "NX5.N NaN NaN \n", "NX6.N NaN NaN \n", "NX7.N NaN NaN \n", "NX8.N NaN NaN \n", "NX9.N NaN NaN \n", "\n", "Name ... PDIA4_umich_acetylproteomics_K570 \\\n", "Patient_ID ... \n", "C3L-00006 ... NaN \n", "C3L-00008 ... NaN \n", "C3L-00032 ... NaN \n", "C3L-00084 ... NaN \n", "C3L-00090 ... NaN \n", "... ... ... \n", "NX5.N ... NaN \n", "NX6.N ... NaN \n", "NX7.N ... NaN \n", "NX8.N ... NaN \n", "NX9.N ... NaN \n", "\n", "Name PDIA4_umich_acetylproteomics_K611 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 NaN \n", "C3L-00032 NaN \n", "C3L-00084 NaN \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N NaN \n", "NX6.N NaN \n", "NX7.N NaN \n", "NX8.N NaN \n", "NX9.N NaN \n", "\n", "Name PDIA4_umich_acetylproteomics_K637 \\\n", "Patient_ID \n", "C3L-00006 NaN \n", "C3L-00008 NaN \n", "C3L-00032 NaN \n", "C3L-00084 12.251376 \n", "C3L-00090 NaN \n", "... ... \n", "NX5.N NaN \n", "NX6.N NaN \n", "NX7.N NaN \n", "NX8.N NaN \n", "NX9.N NaN \n", "\n", "Name AC004706.3_umich_acetylproteomics_K21 K102K105 K105 \\\n", "Patient_ID \n", "C3L-00006 15.945484 NaN NaN \n", "C3L-00008 16.790586 NaN NaN \n", "C3L-00032 15.952557 NaN NaN \n", "C3L-00084 14.506364 NaN NaN \n", "C3L-00090 16.116837 13.641868 NaN \n", "... ... ... ... \n", "NX5.N 17.23143 NaN NaN \n", "NX6.N 17.188642 NaN NaN \n", "NX7.N 17.511215 NaN NaN \n", "NX8.N 16.718777 NaN NaN \n", "NX9.N 15.237764 NaN NaN \n", "\n", "Name WIZ_umich_acetylproteomics_K16 WIZ_umich_acetylproteomics_K638 \\\n", "Patient_ID \n", "C3L-00006 NaN NaN \n", "C3L-00008 14.147555 12.664316 \n", "C3L-00032 NaN NaN \n", "C3L-00084 NaN NaN \n", "C3L-00090 NaN 11.869961 \n", "... ... ... \n", "NX5.N NaN NaN \n", "NX6.N NaN NaN \n", "NX7.N NaN NaN \n", "NX8.N 12.582718 11.997747 \n", "NX9.N NaN 11.802954 \n", "\n", "Name K228 K304 \n", "Patient_ID \n", "C3L-00006 NaN 22.290219 \n", "C3L-00008 NaN 22.236406 \n", "C3L-00032 14.351192 21.437865 \n", "C3L-00084 NaN 25.212475 \n", "C3L-00090 NaN 21.68762 \n", "... ... ... \n", "NX5.N NaN 23.490334 \n", "NX6.N NaN 23.308924 \n", "NX7.N NaN 23.759263 \n", "NX8.N NaN 24.135771 \n", "NX9.N NaN 23.547796 \n", "\n", "[160 rows x 11791 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use the cptac.utils.reduce_multiindex function to combine the multiple column levels\n", "clinical_and_acetylation = ut.reduce_multiindex(clinical_and_acetylation, levels_to_drop=\"Peptide\")\n", "clinical_and_acetylation = ut.reduce_multiindex(clinical_and_acetylation, flatten=True)\n", "\n", "clinical_and_acetylation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 4: Format Dataframe to Compare Acetylproteomic Sites Between Histologic Types" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Endometrioid carcinoma', 'Serous carcinoma',\n", " 'Clear cell carcinoma', 'Mixed cell adenocarcinoma', nan],\n", " dtype=object)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clinical_attribute = \"histologic_type\"\n", "#Show possible variations of histologic_type\n", "clinical_and_acetylation[clinical_attribute].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this step, we will make two different dataframes for \"Endometrioid\" and \"Serous\" cancer types, as well as fill the NaN columns with \"Non-Tumor.\"" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#Make dataframes with only endometrioid and only serous data in order to compare \n", "endom = clinical_and_acetylation.loc[clinical_and_acetylation[clinical_attribute] == \"Endometrioid carcinoma\"]\n", "serous = clinical_and_acetylation.loc[clinical_and_acetylation[clinical_attribute] == \"Serous carcinoma\"]\n", "#Here is where we set the NaN values to \"Non_Tumor\"\n", "clinical_and_acetylation[[clinical_attribute]] = clinical_and_acetylation[[clinical_attribute]].fillna(\n", " value=\"Non_Tumor\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have our different dataframes, we want to make sure that the amount of data we are using for each site is significant. Since there are fewer patients with \"serous\" tumors than with \"endometrioid,\" we will check to make sure that we have at least five values for each acetylation site that we are comparing that have a measurement of intensity for serous patients. We will remove every acetylation site from our dataframe that doesn't have at least five values among the serous patients." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total Sites: 11790\n", "Removed: 5442\n", "Remaining Sites: 6348\n", "Adjusted p-value cutoff will be: 7.876496534341525e-06\n" ] } ], "source": [ "#Remove every column that doesn't have at least 5 values among the serous patients\n", "print(\"Total Sites: \", len(serous.columns) - 1)\n", "sites_to_remove = []\n", "for num in range(1, len(serous.columns)):\n", " serous_site = serous.columns[num]\n", " one_site = serous[serous_site]\n", " num_datapoints_ser = one_site.count()\n", " if num_datapoints_ser.mean() < 5:\n", " sites_to_remove.append(serous_site)\n", "\n", "clinical_and_acetylation = clinical_and_acetylation.drop(sites_to_remove, axis = 1)\n", "\n", "#Also remove non-tumor patients from our dataframe to use in comparison, as we want to compare only endometrioid and serous types\n", "clinical_and_acetylation_comparison = clinical_and_acetylation.loc[clinical_and_acetylation['histologic_type'] != 'Non_Tumor']\n", "clinical_and_acetylation_comparison = clinical_and_acetylation_comparison.loc[clinical_and_acetylation_comparison['histologic_type'] != 'Mixed cell adenocarcinoma']\n", "clinical_and_acetylation_comparison = clinical_and_acetylation_comparison.loc[clinical_and_acetylation_comparison['histologic_type'] != 'Clear cell carcinoma']\n", "\n", "\n", "print(\"Removed: \", len(sites_to_remove))\n", "print(\"Remaining Sites: \", len(clinical_and_acetylation_comparison.columns) - 1)\n", "print(\"Adjusted p-value cutoff will be: \", .05/(len(clinical_and_acetylation_comparison.columns)-1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 5: Compare Endometrioid and Serous Values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now call the wrap_ttest method, which will loop through the data and compare endometrioid versus serous data for each acetylation site. If we find a site that is significantly different, we will add it to a dataframe, with its p-value. The default alpha used is .05, which will be adjusted to account for multiple testing using a bonferroni correction, dividing alpha by the number of comparisons that will occur (the number of comparison columns)." ] }, { "cell_type": "code", "execution_count": 8, "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>Comparison</th>\n", " <th>P_Value</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PCBP1_umich_acetylproteomics_K31</td>\n", " <td>0.000398</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>FOXA2_umich_acetylproteomics_K274</td>\n", " <td>0.000951</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>TBL1XR1_umich_acetylproteomics_K102</td>\n", " <td>0.001964</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>CNBP_umich_acetylproteomics_K85</td>\n", " <td>0.004430</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>JADE3_umich_acetylproteomics_K735</td>\n", " <td>0.007308</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>EYA2_umich_acetylproteomics_K248</td>\n", " <td>0.009880</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>RAB1A_umich_acetylproteomics_K131</td>\n", " <td>0.012228</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>DYNC1H1_umich_acetylproteomics_K1649</td>\n", " <td>0.014876</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>VDAC1_umich_acetylproteomics_K224</td>\n", " <td>0.022864</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Comparison P_Value\n", "0 PCBP1_umich_acetylproteomics_K31 0.000398\n", "1 FOXA2_umich_acetylproteomics_K274 0.000951\n", "2 TBL1XR1_umich_acetylproteomics_K102 0.001964\n", "3 CNBP_umich_acetylproteomics_K85 0.004430\n", "4 JADE3_umich_acetylproteomics_K735 0.007308\n", "5 EYA2_umich_acetylproteomics_K248 0.009880\n", "6 RAB1A_umich_acetylproteomics_K131 0.012228\n", "7 DYNC1H1_umich_acetylproteomics_K1649 0.014876\n", "8 VDAC1_umich_acetylproteomics_K224 0.022864" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Make list of all remaining sites in dataframe to pass to wrap_ttest function\n", "columns_to_compare = list(clinical_and_acetylation_comparison.columns)\n", "\n", "#Remove the \"Histologic_type\" column (at index 0) from this list\n", "columns_to_compare = columns_to_compare[1:]\n", "# print(columns_to_compare)\n", "\n", "clinical_and_acetylation_comparison = clinical_and_acetylation_comparison.loc[:,~clinical_and_acetylation_comparison.columns.duplicated()]\n", "#Perform ttest on each column in dataframe\n", "significant_sites_df = ut.wrap_ttest(df=clinical_and_acetylation_comparison, label_column=\"histologic_type\", comparison_columns=columns_to_compare)\n", "\n", "#List significant results\n", "significant_sites_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 6: Graph Results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have eight acetylation sites that differ significantly between endometrioid and serous intensities, we will graph a couple of them using a boxplot and a stripplot in order to visually see the difference, as well as compare with normal cells. First we'll remove some extreme outliers." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Define a function to calculate IQR and lower and upper bounds for extreme outliers\n", "def calculate_iqr_and_bounds_extreme(data):\n", " Q1 = data.quantile(0.25)\n", " Q3 = data.quantile(0.75)\n", " IQR = Q3 - Q1\n", "\n", " # Define bounds for extreme outliers\n", " lower_bound = Q1 - 3.0 * IQR\n", " upper_bound = Q3 + 3.0 * IQR\n", "\n", " return lower_bound, upper_bound" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we will visualize the data while considering extreme outliers. Extreme outliers are calculated by expanding the IQR range to 3 times instead of the usual 1.5 times." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TtestResult(statistic=5.653510545875068, pvalue=1.520752350373057e-07, df=99.0)\n" ] }, { "data": { "image/png": "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CNC7PfDAA7V+fHBwMLZs2YLt27cjIiIC77//PpYtW6Z3TH29P7p27Yrvv/8e586dw4MPPoju3bvjtddeQ2BgoO6YxYsX48KFC2jbtq3ZNTKWL1+O0aNH48knn0SPHj1w/vx5JCcnm6y1FBUVhY8++girVq1CREQEUlJS8Morr1R7DRcXF6SkpMDPzw9Dhw5Fly5dsHz5cl1CvnLlSvj4+KB379549NFHMXjwYPTo0aPG2MPDw5GSkoL09HTcd9996NWrF3bs2AFnZ8t69N3c3JCcnIybN28iMjISY8aMwcCBA7F69WqLzqc1bNgw/POf/8TMmTPRrVs3HD58GK+++mqdzmmMh4cH7r//frzzzjvo27cvOnfujFdffRVTp07VPQdJkrBr1y707dsXTz31FMLDw/HYY4/h4sWL1SZskiRhx44d8PHxQd++ffHQQw+hTZs22LRpk+6YwYMH49VXX8WLL76IyMhIFBQUYMKECbr9Xl5eOHDgAIYOHYrw8HC88sorWLFiBR555BGj12zevDm+++47FBYWIjo6Gj179sRHH32k65pZt24dcnNz0aNHDzz55JO6EgM16devH5KSkrBz505069YNAwYMMGh5Ncfdd9+NXbt24aeffkJERASee+45TJkypca/i5o8++yzGDVqFMaNG4f7778ff/75J6ZPn16nc1oLV80mIiIih8aWGSIiInJoTGaasGXLlulNhax8M9XMSkREZG/YzdSE3bx50+RsDldXV9x9990NHBEREZH5mMwQERGRQ2M3ExERETk0JjNERETk0JjMEBERkUNjMkNEREQOjckMURPUr18/zJkzx+R+SZKwffv2eo2hPq5R0/MiosaJq2YTkYGcnByTywdUJUkStm3bhhEjRtRvULWwdetWg5WALbF//370798fubm5eis3E5F9YjJDRAZatmxp6xAs4uvra+sQiMgG2M1E1ERVVFTgxRdfhK+vL1q2bIlFixbp9lXuArp9+zZmzpyJgIAAKJVKhISEID4+HsCd1bEBYOTIkZAkSXcfANauXYu2bdvCxcUF7du3x2effVZtPCdOnMCAAQPg6uqK5s2b45lnnkFhYaFuf3l5OWbPno1mzZqhefPmmD9/PiZOnKjXIlS1m0mtVmP+/PkICgqCQqFAu3btsG7dumrjuHDhAvr37w8A8PHxgSRJmDRpEj799FM0b94carVa7/gRI0bgySefBAAsWrQI3bp1wwcffICgoCC4ublh7NixyMvL03vMxx9/jI4dO0KpVKJDhw7497//XW1MRFQDQURNTnR0tPDy8hKLFi0S586dExs2bBCSJImUlBQhhBAAxLZt24QQQrz99tsiKChIHDhwQFy4cEEcPHhQfPHFF0IIIa5fvy4AiPXr14ucnBxx/fp1IYQQW7duFXK5XKxZs0acPXtWrFixQshkMvHdd9/pYqh8jcLCQhEQECBGjRolTpw4Ifbu3StCQ0PFxIkTdce/8cYbwtfXV2zdulWcPn1aPPfcc8LLy0sMHz5c73k9//zzuvtjx44VQUFBYuvWrSIzM1N8++23YuPGjdW+NuXl5WLLli0CgDh79qzIyckRt27dEsXFxcLb21t89dVXumOvXbsmnJ2ddc9r4cKFwt3dXQwYMED88ssv4vvvvxft2rUTjz/+uO4xn3/+uQgICBBbtmwRv/32m9iyZYvw9fUViYmJtfvlEZEBJjNETVB0dLR44IEH9LZFRkaK+fPnCyH0E41Zs2aJAQMGiIqKCqPnqnysVu/evcXUqVP1tsXExIihQ4cafdyHH34ofHx8RGFhoW7///73P+Hk5CSuXr0qhBDC399fvP3227r95eXlIjg42GQyc/bsWQFA7Nmzp/oXw4h9+/YJACI3N1dv+7Rp08Qjjzyiu79ixQrRpk0b3WuzcOFCIZPJxOXLl3XHfPPNN8LJyUnk5OQIIYRo27atLhnUWrJkiejVq5fZcRLRHexmImqiunbtqnc/ICAA169fNzhu0qRJSEtLQ/v27TF79mykpKTUeO7Tp0+jT58+etv69OmD06dPmzw+IiIC7u7uesdXVFTg7NmzyMvLw7Vr13Dffffp9stkMvTs2dNkDGlpaZDJZIiOjq4x3tqaOnUqUlJS8PvvvwMAEhMTMWnSJEiSpDsmODhYb12zXr166Z5HUVERMjMzMWXKFL2FXd944w1kZmZaLU6ipoYDgImaqKqzfiRJQkVFhcFxPXr0QFZWFr755ht8++23GDt2LB566CFs3ry5oUK1iKurq9XP2b17d0RERODTTz/FoEGD8Ouvv+J///tfrR+vHQP00Ucf4f7779fbJ5PJrBorUVPClhkiqpGXlxfGjRuHjz76CJs2bcKWLVt0K67L5XJoNBq94zt27IhDhw7pbTt06BA6depk9PwdO3ZEeno6ioqK9I53cnJC+/bt4e3tDX9/f6Smpur2azQaHDt2zGTMXbp0QUVFBb7//nuzn6+Li4vuGlU9/fTTSExMxPr16/HQQw8hKChIb392djauXLmiu69SqXTPw9/fH4GBgfjtt9/Qrl07vVtoaKjZcRLRHUxmiKhaK1euxJdffokzZ87g3LlzSEpKQsuWLXX1V1q3bo29e/fi6tWryM3NBQC88MILSExMxNq1a5GRkYGVK1di69atmDdvntFrPPHEE1AqlZg4cSJOnjyJffv2YdasWXjyySfh7+8PAJg1axbi4+OxY8cOnD17Fs8//zxyc3P1ungqa926NSZOnIjJkydj+/btyMrKwv79+/HVV1/V+JxDQkIgSRK+/vpr3LhxQ29W1eOPP47Lly/jo48+wuTJkw0eq30e6enpOHjwIGbPno2xY8fqpru//vrriI+Px7vvvotz587hxIkTWL9+PVauXFljXERkHJMZIqqWp6cn3nrrLdx7772IjIzEhQsXsGvXLjg53fn4WLFiBfbs2YOgoCB0794dwJ3pyqtWrUJCQgLuuecefPDBB1i/fj369etn9Bpubm5ITk7GzZs3ERkZiTFjxmDgwIFYvXq17pj58+dj/PjxmDBhAnr16gUPDw8MHjwYSqXSZOxr167FmDFjMH36dHTo0AFTp07Va/0x5e6778brr7+Ol156Cf7+/pg5c6Zun7e3N0aPHg0PDw+jhQLbtWuHUaNGYejQoRg0aBC6du2qN/X66aefxscff4z169ejS5cuiI6ORmJiIltmiOpAEkIIWwdBRGSuiooKdOzYEWPHjsWSJUsa9NoDBw7EPffcg3fffVdv+6JFi7B9+3akpaU1aDxETR0HABORQ7h48SJSUlIQHR0NtVqN1atXIysrC48//niDxZCbm4v9+/dj//79LHRHZEfYzUREDsHJyQmJiYmIjIxEnz59cOLECXz77bfo2LGj2ed67rnn9KZGV74999xzJh/XvXt3TJo0CW+++Sbat29fl6dDRFbEbiYianKuX7+O/Px8o/u8vLzg5+fXwBERUV0wmSEiIiKHxm4mIiIicmhMZoiIiMihMZkhIiIih8ZkhoiIiBwakxkiIiJyaExmiIiIyKExmSEiIiKHxmSGiIiIHNr/ATaxbOAioyKxAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TtestResult(statistic=-5.487492982044729, pvalue=3.1403534632193126e-07, df=99.0)\n" ] }, { "data": { "image/png": "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tjolEdVTarUaCQkJdXKt+fPnIzU11WR727ZtDe83KpXK4V08ju7mImrMrO5mqk5ycjK6d++O0tJSW5zOZtjNROTctFotYmNjUfGtSpIkxMTEICIiwoGREZE9yfn8trpl5sSJE1XuP3funLWnIiKyWkREBGJiYrB582akpaUhODgYkZGRTGSIyMDqlhkXFxdIkgRzh+u3S5LElhkiIiKqNbu0zPj5+eHtt9/GoEGDzO7/7bff8Oijj8qLlIiIiKiWrE5mevTogWvXriEkJMTs/qysLLOtNkRERET2ZHUyM23aNOTl5VncHxwcjLi4OJsERURERGQtm81mqq84ZoaIiMj52KVoXnV+//13DBkyxFanIyIiIrKKzZKZ27dvY8+ePbY6HREREZFVbJbMEBERETkCkxkiIiJyakxmiIiIyKlZPTW7W7duVS7klp+fb5OAiIiIiOSwOpkZNWqUHcMgIiIiqhnWmSEiIqJ6p07rzBQXFyM3N7e2pyEiIiKqEVnJTFxcHGbOnIl//etfAICYmBh4e3tDo9HgwQcfxF9//WWXIImIiIgssTqZWbJkCaZPn46zZ89i1qxZeO655xAfH49FixZh2bJlOHv2LF577TV7xkpERERkwuoBwPHx8fj4448xYcIEHDlyBD179sQ333yDsWPHAgA6d+6MadOm2S1QIiIiInOsbplJS0vD/fffDwC499574erqis6dOxv2d+3aFenp6baPkIiIiKgKViczOp0OKpXKcN/NzQ1KpdJw39XVFaWlpbaNjoiIiKgaVnczAcDp06dx/fp1AIAQAmfPnjXMZPrzzz9tHx0RERFRNayuM+Pi4gJJkmDucP12SZLqXesM68wQERE5Hzmf31a3zFy8eLHWgRERERHZmtXJzKeffoq5c+fCw8PDnvEQERERyWL1AOCFCxey0i8RERHVO1YnMw18CSciIiJyUrKWM5AkyV5xEBEREdWIrKnZoaGh1SY0GRkZtQqIiIiISA5ZyczChQuh0WhsdvEDBw7gnXfewdGjR5Geno5t27Zh1KhRhv25ubl45ZVXsH37dvz1119o3bo1Zs2axWUTiIiIyEBWMvPYY4/B39/fZhfPy8tDWFgYpkyZgjFjxpjsnzNnDn744Qd88cUXaNWqFRITE/H888+jefPmGDFihM3iICIiIudldTJjj/EyDz30EB566CGL+3/66SdMmjQJ/fv3BwA8++yzWL9+PX755RcmM0RERASgns9m6t27N3bu3Ik//vgDQgjs3bsX58+fx5AhQyw+pqioCDk5OUY3IiIiarisTmbKysps2sVkjffeew+dOnVCixYt4ObmhmHDhmHt2rXo27evxcfExsZCo9EYbi1btqzDiImIiKiuyZqaXdfee+89aLVa7Ny5E0ePHsXKlSsxffp0fP/99xYfExMTg+zsbMPtypUrdRgxERER1TVZA4DrUkFBAebPn49t27bh4YcfBgB07doVx48fx4oVKzB48GCzj1OpVFCpVHUZKhERETlQvW2Z0el00Ol0cHExDlGhUKCsrMxBUREREVF949CWmdzcXFy4cMFw/+LFizh+/Dj8/PwQHByMfv36Yd68eXB3d0dISAj279+Pzz77DKtWrXJg1ERERFSfSMKBiy7t27cPAwYMMNk+adIkxMfH4/r164iJiUFiYiIyMjIQEhKCZ599Fi+++KLVU8VzcnKg0WiQnZ0NHx8fW/8IREREZAdyPr8dmszUBSYzREREzkfO53e9HTNDREREZA0mM0REROTUmMwQERGRU2MyQ0RERE6NyQwRERE5NSYzRERE5NSYzBAREZFTYzJDRERETo3JDBERETk1JjNERETk1JjMEBERkVNjMkNEREROjckMEREROTUmM0REROTUmMwQERGRU2MyQ0RERE7N1dEBEBHVllarxaZNm5CWlobg4GBERUUhIiLC0WERUR1hywwROTWtVoulS5ciJSUFRUVFSElJQWxsLLRaraNDI6I6wmSGiJzapk2bTLYJIbB582YHRENEjsBkhoicWlpamqztRNTwMJkhIqcWHBwsazsRNTxMZojIqUVFRUGSJKNtkiQhMjLSQRERUV1jMkNETi0iIgIxMTEIDQ2FWq1GaGgoYmJiOJuJqBHh1GwicnoRERFMXogaMbbMEBERkVNjMkNEREROjckMEREROTUmM0REROTUmMwQERGRU2MyQ0RERE6NyQwRERE5NSYzRERE5NSYzBAREZFTYzJDRERETo3JDBERETm1Br82kxACAJCTk+PgSIiIiMha+s9t/ed4VRp8MnP79m0AQMuWLR0cCREREcl1+/ZtaDSaKo+RhDUpjxMrKyvDtWvX4O3tDUmSHB2OU8vJyUHLli1x5coV+Pj4ODocIr4mqV7i69I2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OBH9+vUzdOMMHDgQR44cwWeffYaUlBQsWLAAp06dMpzj559/xtKlS3HkyBGkpaVh69atuHXrFjp27Gj2mjNmzEBOTg4ee+wxHDlyBCkpKfj8888NXX7t2rXD559/jjNnzuDnn3/GE088YVWry4IFC/DVV19hwYIFOHPmDE6ePInly5db/TxX9vzzz+PKlSuYOXMmzp49ix07dmDBggWYM2eOUXekXO3atcORI0eQkJCA8+fP4/XXXzeaaehITGacyKJFi4zeULt3745vvvkGX3/9NTp37ow33ngDixYtqlFXlFwxMTHo168fHnnkETz88MMYNWoU2rRpU+vzjho1CqtXr8aKFStw9913Y/369YiLizOaStkQ7N69G0FBQUa3+++/3+rHBwcHY8uWLdi+fTvCwsLwwQcfYOnSpUbH2Ov10bVrV+zfvx/nz5/HAw88gG7duuGNN95A8+bNDccsWrQIly5dQps2bWTXyFi2bBnGjh2LJ598Et27d8eFCxeQkJBgsdZSREQENmzYgNWrVyMsLAyJiYl47bXXqryGm5sbEhMT4e/vj+HDh6NLly5YtmyZISFftWoVfH190bt3bzz66KMYOnQounfvXm3soaGhSExMRHJyMu677z706tULO3bsgKtrzXr0PTw8kJCQgIyMDISHhyMyMhKDBg3C+++/X6Pz6Y0YMQIvvvgiZsyYgXvuuQc//fQTXn/99Vqd0xwvLy/07NkT7777Lvr27YvOnTvj9ddfxzPPPGP4GSRJwrfffou+ffviqaeeQmhoKB577DFcvny5yoRNkiTs2LEDvr6+6Nu3LwYPHoy77roLGzduNBwzdOhQvP7663jppZcQHh6O27dvY+LEiYb9Pj4+OHDgAIYPH47Q0FC89tprWLlyJR566CGz12zatCl++OEH5Obmol+/fujRowc2bNhg6Jr5+OOPkZmZie7du+PJJ580lBioTv/+/bFp0ybs3LkT99xzDwYOHGjS8irHnXfeiW+//Ra//PILwsLCMG3aNEydOrXav4vq/OMf/8CYMWMwfvx49OzZE3/99Reef/75Wp3TViRRuUORiIiIyImwZYaIiIicGpOZRmzp0qVGUyEr3iw1sxIREdU37GZqxDIyMizO5nB3d8edd95ZxxERERHJx2SGiIiInBq7mYiIiMipMZkhIiIip8ZkhoiIiJwakxmi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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Now we will visualize the data while considering extreme outliers.\n", "# Extreme outliers are calculated by expanding the IQR range to 3 times instead of the usual 1.5 times.\n", "for site in ['FOXA2_umich_acetylproteomics_K274', 'TBL1XR1_umich_acetylproteomics_K102']:\n", " # Convert to numeric and drop NA\n", " clinical_and_acetylation[site] = pd.to_numeric(clinical_and_acetylation[site], errors='coerce')\n", "\n", " # Calculate lower and upper bounds for the specific column\n", " lower_bound, upper_bound = calculate_iqr_and_bounds_extreme(clinical_and_acetylation[site])\n", "\n", " # Create a new dataframe without extreme outliers\n", " clinical_and_acetylation_no_extreme_outliers = clinical_and_acetylation[(clinical_and_acetylation[site] >= lower_bound) & \n", " (clinical_and_acetylation[site] <= upper_bound)]\n", " \n", " # Convert data to list format to make it compatible with t-test\n", " endomList = endom[site].tolist()\n", " serousList = serous[site].tolist()\n", " \n", " # Perform t-test and print results\n", " print(scipy.stats.ttest_ind(endomList, serousList))\n", "\n", " # Create boxplot and stripplot\n", " sns.boxplot(x=clinical_attribute, y=site, data=clinical_and_acetylation_no_extreme_outliers, showfliers=False, \n", " order=[\"Non_Tumor\", \"Endometrioid carcinoma\", \"Serous carcinoma\"])\n", " sns.stripplot(x=clinical_attribute, y=site, data=clinical_and_acetylation_no_extreme_outliers, color='.3', \n", " order=[\"Non_Tumor\", \"Endometrioid carcinoma\", \"Serous carcinoma\"])\n", " plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 4 }