{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Sex-biased tissues per perturbagen analysis- Cancer drugs\n", "--------------------------------------------------------------------------------\n", "\n", "Author: Belén Otero Carrasco\n", "\n", "Last updated 19 March 2024\n", "\n", "\n", "--------------------------------------------------------------------------------" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'4.0.1'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pkg_resources\n", "# Print version of cmapPy being used in current conda environment \n", "pkg_resources.get_distribution(\"cmapPy\").version" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Usuario\\anaconda3\\lib\\site-packages\\pandas\\core\\computation\\expressions.py:20: UserWarning: Pandas requires version '2.7.3' or newer of 'numexpr' (version '2.7.1' currently installed).\n", " from pandas.core.computation.check import NUMEXPR_INSTALLED\n" ] } ], "source": [ "import pandas as pd\n", "import seaborn as sns\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from pandas import DataFrame\n", "from cmapPy.pandasGEXpress.parse import parse\n", "from scipy.stats import hypergeom\n", "from scipy.stats import fisher_exact\n", "from tqdm import tqdm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Functions" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def signatures_ids_perturbagen(drug):\n", " sig_pertu_ids = final_sig_original_filter[\"sig_id\"][final_sig_original_filter[\"pert_iname\"] == drug]\n", " print(\"number of samples treated with this perturbagen:\")\n", " return sig_pertu_ids" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def perturbagen_significant_genes(sig_pertu_ids,drug):\n", " perturbagen_genes_exp = parse(\"./Touchstone/GSE92742_Broad_LINCS_Level5_COMPZ.MODZ_n473647x12328.gctx\", cid=sig_pertu_ids)\n", " df_perturbagen_genes_exp = perturbagen_genes_exp.data_df\n", " df_filter_significant = df_perturbagen_genes_exp[(df_perturbagen_genes_exp >2.0) | (df_perturbagen_genes_exp <-2.0)]\n", " df_bool_sign = df_filter_significant.notna()\n", " df_bool_sign[\"count\"] = df_bool_sign.sum(axis=1)\n", " df_bool_sign = df_bool_sign.reset_index()\n", " df_gene_change = df_bool_sign[df_bool_sign[\"count\"]> 0]\n", " df_gene_change_id = df_gene_change[[\"rid\",\"count\"]]\n", " df_gene_change_id[\"perturbagen_name\"] = drug\n", " df_gene_change_id[\"Signature_id\"] = sig_pertu_ids\n", " return df_gene_change_id " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def filter_by_tissue(tissue_type):\n", " data_gtex = pd.read_csv(\"signif.sbgenes.txt\", sep=\"\\t\")\n", " filtered_df_tissue = data_gtex[data_gtex[\"tissue\"] == tissue_type]\n", " return filtered_df_tissue" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def filter_by_ids_and_tissue(tissue_type):\n", " data_total_genes_share = pd.read_csv(\"genes_hugo+ensembl.csv\", sep=\",\")\n", " data_gtex_filter = data_gtex.merge(data_total_genes_share , on=\"gene\")\n", " filtered_df_tissue_ids = data_gtex_filter[data_gtex_filter[\"tissue\"] == tissue_type]\n", " return filtered_df_tissue_ids" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "def preprocesing_plot(dataframe,sig_cell_info):\n", " \n", " \n", " info_cell = sig_cell_info[[\"sig_id\",\"Signature_id\",\"cell_id\",\"primary_site\"]]\n", " info_cell = info_cell.drop_duplicates()\n", " clue_tiss_sig_gtex_ = dataframe.merge(info_tissue_cell, left_on=[\"Signature\"],right_on=[\"sig_id\"])\n", " clue_tiss_sig_gtex_['Significant'] = clue_tiss_sig_gtex_.apply(lambda row: 'No' if row['P-value'] > 0.05 else 'Yes', axis=1)\n", " \n", " return clue_tiss_sig_gtex_" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def pivot_table_plot(df_general_plus_siggenes):\n", " \n", " clue_tiss_sig_gtex_pivot = df_general_plus_siggenes[[\"Signature_id\",\"Tissue_type\", \"Heatmap_values\"]]\n", " clue_tiss_sig_gtex_pivot = clue_tiss_sig_gtex_pivot.drop_duplicates()\n", " group_dis = clue_tiss_sig_gtex_pivot.pivot(index='Signature_id', columns='Tissue_type', values='Heatmap_values')\n", " \n", " return group_dis" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def plot_heatmap(group_dis,drug):\n", " \n", " fig, ax = plt.subplots(figsize=(25, 25))\n", " ax = sns.heatmap(group_dis,linewidth=.5,cmap=[\"#FDEBD0\",\"#82E0AA\",\"#e65caa\",\"#2EC7CE\",\"#117A65\",\"#910956\",\"#175296\"],vmin=1, vmax=7)\n", " colorbar = ax.collections[0].colorbar\n", " #colorbar.set_ticks([0, 1, 2])\n", " plt.title(f'Sex-biased tissues on {drug} application', fontsize = 20) # title with fontsize 20\n", " plt.xlabel('Tissues', fontsize = 12) # x-axis label with fontsize 15\n", " plt.ylabel('Signatures', fontsize = 12) # y-axis label with fontsize 15\n", " plt.tight_layout()\n", " plt.savefig(f\"./images_sex-biased/heatmap_sig_tissue_{drug}.svg\")\n", " # plt.show()\n", " return None " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def plot_scatter(group_dis,drug):\n", " \n", " fig, ax = plt.subplots(figsize=(25, 25))\n", " ax = sns.heatmap(group_dis,linewidth=.5,cmap=[\"#FDEBD0\",\"#82E0AA\",\"#e65caa\",\"#2EC7CE\",\"#117A65\",\"#910956\",\"#175296\"],vmin=1, vmax=7)\n", " colorbar = ax.collections[0].colorbar\n", " #colorbar.set_ticks([0, 1, 2])\n", " plt.title(f'Sex-biased tissues on {drug} application', fontsize = 20) # title with fontsize 20\n", " plt.xlabel('Tissues', fontsize = 12) # x-axis label with fontsize 15\n", " plt.ylabel('Signatures', fontsize = 12) # y-axis label with fontsize 15\n", " plt.tight_layout()\n", " plt.savefig(f\"./images_sex-biased/heatmap_sig_tissue_{drug}.svg\")\n", " # plt.show()\n", " return None " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Signature information" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "## signatures unique per cell line by TAS and exemplar = 1 " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cell_idbase_cell_idsample_typeprimary_sitetissueabrevsubtypesig_idpert_inametasis_exemplarSignature_id
0A375A375tumorskinSkin_Not_Sun_Exposed_SuprapubicSKINNSmalignant melanomaCPC018_A375_6H:BRD-K06817181-001-01-5:101,2,3,4,5,6-hexabromocyclohexane0.28235411,2,3,4,5,6-hexabromocyclohexane_A375_skin
1A375A375tumorskinSkin_Not_Sun_Exposed_SuprapubicSKINNSmalignant melanomaCPC017_A375_6H:BRD-K74430258-001-01-2:101,2-dichlorobenzene0.05764611,2-dichlorobenzene_A375_skin
2A375A375tumorskinSkin_Not_Sun_Exposed_SuprapubicSKINNSmalignant melanomaCPC010_A375_6H:BRD-K32795028-001-10-9:101-benzylimidazole0.22188511-benzylimidazole_A375_skin
3A375A375tumorskinSkin_Not_Sun_Exposed_SuprapubicSKINNSmalignant melanomaCPC018_A375_6H:BRD-A80928489-001-01-0:101-monopalmitin0.11844311-monopalmitin_A375_skin
4A375A375tumorskinSkin_Not_Sun_Exposed_SuprapubicSKINNSmalignant melanomaCPC018_A375_6H:BRD-K31491153-001-01-2:101-phenylbiguanide0.31394011-phenylbiguanide_A375_skin
\n", "
" ], "text/plain": [ " cell_id base_cell_id sample_type primary_site \\\n", "0 A375 A375 tumor skin \n", "1 A375 A375 tumor skin \n", "2 A375 A375 tumor skin \n", "3 A375 A375 tumor skin \n", "4 A375 A375 tumor skin \n", "\n", " tissue abrev subtype \\\n", "0 Skin_Not_Sun_Exposed_Suprapubic SKINNS malignant melanoma \n", "1 Skin_Not_Sun_Exposed_Suprapubic SKINNS malignant melanoma \n", "2 Skin_Not_Sun_Exposed_Suprapubic SKINNS malignant melanoma \n", "3 Skin_Not_Sun_Exposed_Suprapubic SKINNS malignant melanoma \n", "4 Skin_Not_Sun_Exposed_Suprapubic SKINNS malignant melanoma \n", "\n", " sig_id pert_iname \\\n", "0 CPC018_A375_6H:BRD-K06817181-001-01-5:10 1,2,3,4,5,6-hexabromocyclohexane \n", "1 CPC017_A375_6H:BRD-K74430258-001-01-2:10 1,2-dichlorobenzene \n", "2 CPC010_A375_6H:BRD-K32795028-001-10-9:10 1-benzylimidazole \n", "3 CPC018_A375_6H:BRD-A80928489-001-01-0:10 1-monopalmitin \n", "4 CPC018_A375_6H:BRD-K31491153-001-01-2:10 1-phenylbiguanide \n", "\n", " tas is_exemplar Signature_id \n", "0 0.282354 1 1,2,3,4,5,6-hexabromocyclohexane_A375_skin \n", "1 0.057646 1 1,2-dichlorobenzene_A375_skin \n", "2 0.221885 1 1-benzylimidazole_A375_skin \n", "3 0.118443 1 1-monopalmitin_A375_skin \n", "4 0.313940 1 1-phenylbiguanide_A375_skin " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sig_cell_info = pd.read_excel((\"new_signame_tas_exemplar.xlsx\"),engine='openpyxl')\n", "sig_cell_info.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sig_cell_info_filter_site = sig_cell_info[(sig_cell_info[\"primary_site\"]!= \"ovary\")\n", " & (sig_cell_info[\"primary_site\"]!= \"endometrium\") & (sig_cell_info[\"primary_site\"]!= \"prostate\")]\n", "## deja mama porque en los de GTEX y puede estar en hombres tambien" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "cancer_drugs = pd.read_csv(\"drugs_cancer_clue.csv\", sep=\",\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "drugs_ids = cancer_drugs[[\"pert_iname\"]].drop_duplicates()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "drugs_ids = drugs_ids.values.ravel().tolist()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "mapping_tissue_GTEX_CLUE = pd.read_excel((\"mapping_tissues_GTEX_CLUE.xlsx\"),engine='openpyxl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Gene (row) annotations " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['pr_gene_id', 'pr_gene_symbol', 'pr_gene_title', 'pr_is_lm',\n", " 'pr_is_bing'],\n", " dtype='object')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gene_info = pd.read_csv(\"./GSE92742_Broad_LINCS_gene_info.txt\", sep=\"\\t\", dtype=str)\n", "gene_info.columns" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "pertub_id = pd.read_csv(\"./GSE92742_Broad_LINCS_pert_info.txt\", sep=\"\\t\", dtype=str)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "per_metrics_id = pd.read_csv(\"./GSE92742_Broad_LINCS_pert_metrics.txt\", sep=\"\\t\", dtype=str)\n", "per_metrics_id = per_metrics_id.replace({\"-666\":\"Unknown\"})" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "data_total_genes_share = pd.read_csv(\"genes_hugo+ensembl.csv\", sep=\",\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "data_gtex = pd.read_csv(\"signif.sbgenes.txt\", sep=\"\\t\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "data_gtex['Sex-bias'] = data_gtex.apply(lambda row: 'Female' if row['effsize'] >= 0 else 'Male', axis=1)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "data_gtex_filter = data_gtex.merge(data_total_genes_share , on=\"gene\")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "pd.options.mode.chained_assignment = None " ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "data_gtex_tissues = data_gtex[\"tissue\"].unique()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0HUGO_gene_idSex-bias
00AC005082.12Female
11AC006946.16Male
22AC007278.2No-dir
33AC068279.3Female
44ACADLMale
\n", "
" ], "text/plain": [ " Unnamed: 0 HUGO_gene_id Sex-bias\n", "0 0 AC005082.12 Female\n", "1 1 AC006946.16 Male\n", "2 2 AC007278.2 No-dir\n", "3 3 AC068279.3 Female\n", "4 4 ACADL Male" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top100 = pd.read_excel((\"df_top100_sexbias.xlsx\"),engine='openpyxl')\n", "top100.head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(top100[\"HUGO_gene_id\"].unique())" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "#drugs_ids_check = [\"sirolimus\"]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/95 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SignaturePerturbagen_nameP-value
0CPC011_A375_6H:BRD-K69650333-003-11-6:10idarubicin0.764110
0CPC011_A549_6H:BRD-K69650333-003-11-6:10idarubicin0.976826
0CPC006_A673_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000
0CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000
0CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000
............
0CPC020_A549_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000
0CPC020_HA1E_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000
0CPC020_HCC515_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000
0CPC020_HT29_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000
0CPC020_MCF7_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000
\n", "

1663 rows × 3 columns

\n", "" ], "text/plain": [ " Signature Perturbagen_name P-value\n", "0 CPC011_A375_6H:BRD-K69650333-003-11-6:10 idarubicin 0.764110\n", "0 CPC011_A549_6H:BRD-K69650333-003-11-6:10 idarubicin 0.976826\n", "0 CPC006_A673_6H:BRD-A71390734-001-01-7:0.08 idarubicin 1.000000\n", "0 CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08 idarubicin 1.000000\n", "0 CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08 idarubicin 1.000000\n", ".. ... ... ...\n", "0 CPC020_A549_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone 1.000000\n", "0 CPC020_HA1E_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone 1.000000\n", "0 CPC020_HCC515_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone 1.000000\n", "0 CPC020_HT29_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone 1.000000\n", "0 CPC020_MCF7_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone 1.000000\n", "\n", "[1663 rows x 3 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
perturbagen_nameSignature_idHUGO_gene_idSex-bias
0idarubicinCPC011_A375_6H:BRD-K69650333-003-11-6:10WISP2Male
1idarubicinCPC011_A375_6H:BRD-K69650333-003-11-6:10PRSS16Female
2idarubicinCPC011_A375_6H:BRD-K69650333-003-11-6:10PPFIA3Female
0idarubicinCPC011_A549_6H:BRD-K69650333-003-11-6:10SALL1Female
1idarubicinCPC011_A549_6H:BRD-K69650333-003-11-6:10CACNA2D2Female
...............
05-aminolevulinic-acidCPC020_HCC515_6H:BRD-K57631554-001-07-4:10CDKN2AFemale
15-aminolevulinic-acidCPC020_HCC515_6H:BRD-K57631554-001-07-4:10F13A1Male
25-aminolevulinic-acidCPC020_HCC515_6H:BRD-K57631554-001-07-4:10WISP2Male
35-aminolevulinic-acidCPC020_HCC515_6H:BRD-K57631554-001-07-4:10SHHFemale
45-aminolevulinic-acidCPC020_HCC515_6H:BRD-K57631554-001-07-4:10NLRP2Female
\n", "

2425 rows × 4 columns

\n", "
" ], "text/plain": [ " perturbagen_name Signature_id \\\n", "0 idarubicin CPC011_A375_6H:BRD-K69650333-003-11-6:10 \n", "1 idarubicin CPC011_A375_6H:BRD-K69650333-003-11-6:10 \n", "2 idarubicin CPC011_A375_6H:BRD-K69650333-003-11-6:10 \n", "0 idarubicin CPC011_A549_6H:BRD-K69650333-003-11-6:10 \n", "1 idarubicin CPC011_A549_6H:BRD-K69650333-003-11-6:10 \n", ".. ... ... \n", "0 5-aminolevulinic-acid CPC020_HCC515_6H:BRD-K57631554-001-07-4:10 \n", "1 5-aminolevulinic-acid CPC020_HCC515_6H:BRD-K57631554-001-07-4:10 \n", "2 5-aminolevulinic-acid CPC020_HCC515_6H:BRD-K57631554-001-07-4:10 \n", "3 5-aminolevulinic-acid CPC020_HCC515_6H:BRD-K57631554-001-07-4:10 \n", "4 5-aminolevulinic-acid CPC020_HCC515_6H:BRD-K57631554-001-07-4:10 \n", "\n", " HUGO_gene_id Sex-bias \n", "0 WISP2 Male \n", "1 PRSS16 Female \n", "2 PPFIA3 Female \n", "0 SALL1 Female \n", "1 CACNA2D2 Female \n", ".. ... ... \n", "0 CDKN2A Female \n", "1 F13A1 Male \n", "2 WISP2 Male \n", "3 SHH Female \n", "4 NLRP2 Female \n", "\n", "[2425 rows x 4 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_all" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "info_cell = sig_cell_info[[\"sig_id\",\"Signature_id\",\"cell_id\"]]\n", "info_cell = info_cell.drop_duplicates()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sig_idSignature_idcell_id
0CPC018_A375_6H:BRD-K06817181-001-01-5:101,2,3,4,5,6-hexabromocyclohexane_A375_skinA375
1CPC017_A375_6H:BRD-K74430258-001-01-2:101,2-dichlorobenzene_A375_skinA375
2CPC010_A375_6H:BRD-K32795028-001-10-9:101-benzylimidazole_A375_skinA375
3CPC018_A375_6H:BRD-A80928489-001-01-0:101-monopalmitin_A375_skinA375
4CPC018_A375_6H:BRD-K31491153-001-01-2:101-phenylbiguanide_A375_skinA375
............
258599KDB008_SKL_96H:TRCN0000020197:-666ZNF589_SKL_muscleSKL
258600KDB002_SKL_96H:TRCN0000236645:-666ZNF629_SKL_muscleSKL
258601KDB001_SKL_96H:TRCN0000150938:-666ZW10_SKL_muscleSKL
258602KDB007_SKL_96H:TRCN0000072242:-666lacZ_SKL_muscleSKL
258603KDB008_SKL_96H:TRCN0000145620:-666pgw_SKL_muscleSKL
\n", "

173142 rows × 3 columns

\n", "
" ], "text/plain": [ " sig_id \\\n", "0 CPC018_A375_6H:BRD-K06817181-001-01-5:10 \n", "1 CPC017_A375_6H:BRD-K74430258-001-01-2:10 \n", "2 CPC010_A375_6H:BRD-K32795028-001-10-9:10 \n", "3 CPC018_A375_6H:BRD-A80928489-001-01-0:10 \n", "4 CPC018_A375_6H:BRD-K31491153-001-01-2:10 \n", "... ... \n", "258599 KDB008_SKL_96H:TRCN0000020197:-666 \n", "258600 KDB002_SKL_96H:TRCN0000236645:-666 \n", "258601 KDB001_SKL_96H:TRCN0000150938:-666 \n", "258602 KDB007_SKL_96H:TRCN0000072242:-666 \n", "258603 KDB008_SKL_96H:TRCN0000145620:-666 \n", "\n", " Signature_id cell_id \n", "0 1,2,3,4,5,6-hexabromocyclohexane_A375_skin A375 \n", "1 1,2-dichlorobenzene_A375_skin A375 \n", "2 1-benzylimidazole_A375_skin A375 \n", "3 1-monopalmitin_A375_skin A375 \n", "4 1-phenylbiguanide_A375_skin A375 \n", "... ... ... \n", "258599 ZNF589_SKL_muscle SKL \n", "258600 ZNF629_SKL_muscle SKL \n", "258601 ZW10_SKL_muscle SKL \n", "258602 lacZ_SKL_muscle SKL \n", "258603 pgw_SKL_muscle SKL \n", "\n", "[173142 rows x 3 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "info_cell" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "clue_tiss_sig_gtex_ = df.merge(info_cell, left_on=[\"Signature\"],right_on=[\"sig_id\"])\n", "clue_tiss_sig_gtex_['Significant'] = clue_tiss_sig_gtex_.apply(lambda row: 'No' if row['P-value'] > 0.05 else 'Yes', axis=1)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SignaturePerturbagen_nameP-valuesig_idSignature_idcell_idSignificant
0CPC011_A375_6H:BRD-K69650333-003-11-6:10idarubicin0.764110CPC011_A375_6H:BRD-K69650333-003-11-6:10idarubicin_A375_skinA375No
1CPC011_A549_6H:BRD-K69650333-003-11-6:10idarubicin0.976826CPC011_A549_6H:BRD-K69650333-003-11-6:10idarubicin_A549_lungA549No
2CPC006_A673_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000CPC006_A673_6H:BRD-A71390734-001-01-7:0.08idarubicin_A673_boneA673No
3CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08idarubicin_AGS_stomachAGSNo
4CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08idarubicin1.000000CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08idarubicin_CL34_large intestineCL34No
........................
1658CPC020_A549_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000CPC020_A549_6H:BRD-K82216340-001-19-7:10medroxyprogesterone_A549_lungA549No
1659CPC020_HA1E_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000CPC020_HA1E_6H:BRD-K82216340-001-19-7:10medroxyprogesterone_HA1E_kidneyHA1ENo
1660CPC020_HCC515_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000CPC020_HCC515_6H:BRD-K82216340-001-19-7:10medroxyprogesterone_HCC515_lungHCC515No
1661CPC020_HT29_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000CPC020_HT29_6H:BRD-K82216340-001-19-7:10medroxyprogesterone_HT29_large intestineHT29No
1662CPC020_MCF7_6H:BRD-K82216340-001-19-7:10medroxyprogesterone1.000000CPC020_MCF7_6H:BRD-K82216340-001-19-7:10medroxyprogesterone_MCF7_breastMCF7No
\n", "

1663 rows × 7 columns

\n", "
" ], "text/plain": [ " Signature Perturbagen_name \\\n", "0 CPC011_A375_6H:BRD-K69650333-003-11-6:10 idarubicin \n", "1 CPC011_A549_6H:BRD-K69650333-003-11-6:10 idarubicin \n", "2 CPC006_A673_6H:BRD-A71390734-001-01-7:0.08 idarubicin \n", "3 CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08 idarubicin \n", "4 CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08 idarubicin \n", "... ... ... \n", "1658 CPC020_A549_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone \n", "1659 CPC020_HA1E_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone \n", "1660 CPC020_HCC515_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone \n", "1661 CPC020_HT29_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone \n", "1662 CPC020_MCF7_6H:BRD-K82216340-001-19-7:10 medroxyprogesterone \n", "\n", " P-value sig_id \\\n", "0 0.764110 CPC011_A375_6H:BRD-K69650333-003-11-6:10 \n", "1 0.976826 CPC011_A549_6H:BRD-K69650333-003-11-6:10 \n", "2 1.000000 CPC006_A673_6H:BRD-A71390734-001-01-7:0.08 \n", "3 1.000000 CPC006_AGS_6H:BRD-A71390734-001-01-7:0.08 \n", "4 1.000000 CPC006_CL34_6H:BRD-A71390734-001-01-7:0.08 \n", "... ... ... \n", "1658 1.000000 CPC020_A549_6H:BRD-K82216340-001-19-7:10 \n", "1659 1.000000 CPC020_HA1E_6H:BRD-K82216340-001-19-7:10 \n", "1660 1.000000 CPC020_HCC515_6H:BRD-K82216340-001-19-7:10 \n", "1661 1.000000 CPC020_HT29_6H:BRD-K82216340-001-19-7:10 \n", "1662 1.000000 CPC020_MCF7_6H:BRD-K82216340-001-19-7:10 \n", "\n", " Signature_id cell_id Significant \n", "0 idarubicin_A375_skin A375 No \n", "1 idarubicin_A549_lung A549 No \n", "2 idarubicin_A673_bone A673 No \n", "3 idarubicin_AGS_stomach AGS No \n", "4 idarubicin_CL34_large intestine CL34 No \n", "... ... ... ... \n", "1658 medroxyprogesterone_A549_lung A549 No \n", "1659 medroxyprogesterone_HA1E_kidney HA1E No \n", "1660 medroxyprogesterone_HCC515_lung HCC515 No \n", "1661 medroxyprogesterone_HT29_large intestine HT29 No \n", "1662 medroxyprogesterone_MCF7_breast MCF7 No \n", "\n", "[1663 rows x 7 columns]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clue_tiss_sig_gtex_" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "data_sig = clue_tiss_sig_gtex_[clue_tiss_sig_gtex_[\"Significant\"]==\"Yes\"] " ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SignaturePerturbagen_nameP-valuesig_idSignature_idcell_idSignificant
128CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515Yes
1365CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide0.039682CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide_SKLU1_lungSKLU1Yes
1386CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan0.031420CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan_MCF7_breastMCF7Yes
\n", "
" ], "text/plain": [ " Signature Perturbagen_name P-value \\\n", "128 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "1365 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide 0.039682 \n", "1386 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan 0.031420 \n", "\n", " sig_id Signature_id \\\n", "128 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "1365 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide_SKLU1_lung \n", "1386 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan_MCF7_breast \n", "\n", " cell_id Significant \n", "128 HCC515 Yes \n", "1365 SKLU1 Yes \n", "1386 MCF7 Yes " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_sig" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "df_genes_tiss_sb = data_sig.merge(df_all, left_on= [\"sig_id\",\"Perturbagen_name\"], right_on=[\"Signature_id\",\"perturbagen_name\"], how =\"inner\")" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SignaturePerturbagen_nameP-valuesig_idSignature_id_xcell_idSignificantperturbagen_nameSignature_id_yHUGO_gene_idSex-bias
0CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515YesdecitabineCPC013_HCC515_6H:BRD-K79254416-001-08-5:10HSD11B1Male
1CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515YesdecitabineCPC013_HCC515_6H:BRD-K79254416-001-08-5:10SALL1Female
2CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515YesdecitabineCPC013_HCC515_6H:BRD-K79254416-001-08-5:10HOXD11No-dir
3CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515YesdecitabineCPC013_HCC515_6H:BRD-K79254416-001-08-5:10PPFIA3Female
4CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine0.014447CPC013_HCC515_6H:BRD-K79254416-001-08-5:10decitabine_HCC515_lungHCC515YesdecitabineCPC013_HCC515_6H:BRD-K79254416-001-08-5:10CD1ENo-dir
5CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide0.039682CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide_SKLU1_lungSKLU1YestemozolomideCPC006_SKLU1_6H:BRD-K32107296-001-03-7:10CDKN2AFemale
6CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide0.039682CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10temozolomide_SKLU1_lungSKLU1YestemozolomideCPC006_SKLU1_6H:BRD-K32107296-001-03-7:10MYLK3Male
7CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan0.031420CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan_MCF7_breastMCF7YesbusulfanCPD001_MCF7_6H:BRD-K23204545-001-09-9:10LMF1Male
8CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan0.031420CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan_MCF7_breastMCF7YesbusulfanCPD001_MCF7_6H:BRD-K23204545-001-09-9:10DDX43Male
9CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan0.031420CPD001_MCF7_6H:BRD-K23204545-001-09-9:10busulfan_MCF7_breastMCF7YesbusulfanCPD001_MCF7_6H:BRD-K23204545-001-09-9:10PRXFemale
\n", "
" ], "text/plain": [ " Signature Perturbagen_name P-value \\\n", "0 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "1 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "2 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "3 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "4 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine 0.014447 \n", "5 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide 0.039682 \n", "6 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide 0.039682 \n", "7 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan 0.031420 \n", "8 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan 0.031420 \n", "9 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan 0.031420 \n", "\n", " sig_id Signature_id_x \\\n", "0 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "1 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "2 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "3 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "4 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 decitabine_HCC515_lung \n", "5 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide_SKLU1_lung \n", "6 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 temozolomide_SKLU1_lung \n", "7 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan_MCF7_breast \n", "8 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan_MCF7_breast \n", "9 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 busulfan_MCF7_breast \n", "\n", " cell_id Significant perturbagen_name \\\n", "0 HCC515 Yes decitabine \n", "1 HCC515 Yes decitabine \n", "2 HCC515 Yes decitabine \n", "3 HCC515 Yes decitabine \n", "4 HCC515 Yes decitabine \n", "5 SKLU1 Yes temozolomide \n", "6 SKLU1 Yes temozolomide \n", "7 MCF7 Yes busulfan \n", "8 MCF7 Yes busulfan \n", "9 MCF7 Yes busulfan \n", "\n", " Signature_id_y HUGO_gene_id Sex-bias \n", "0 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 HSD11B1 Male \n", "1 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 SALL1 Female \n", "2 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 HOXD11 No-dir \n", "3 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 PPFIA3 Female \n", "4 CPC013_HCC515_6H:BRD-K79254416-001-08-5:10 CD1E No-dir \n", "5 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 CDKN2A Female \n", "6 CPC006_SKLU1_6H:BRD-K32107296-001-03-7:10 MYLK3 Male \n", "7 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 LMF1 Male \n", "8 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 DDX43 Male \n", "9 CPD001_MCF7_6H:BRD-K23204545-001-09-9:10 PRX Female " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_genes_tiss_sb" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "df_genes_tiss_sb_fil = df_genes_tiss_sb[[\"Signature_id_x\",\"Sex-bias\"]]" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Signature_id_xSex-bias
0decitabine_HCC515_lungMale
1decitabine_HCC515_lungFemale
2decitabine_HCC515_lungNo-dir
3decitabine_HCC515_lungFemale
4decitabine_HCC515_lungNo-dir
5temozolomide_SKLU1_lungFemale
6temozolomide_SKLU1_lungMale
7busulfan_MCF7_breastMale
8busulfan_MCF7_breastMale
9busulfan_MCF7_breastFemale
\n", "
" ], "text/plain": [ " Signature_id_x Sex-bias\n", "0 decitabine_HCC515_lung Male\n", "1 decitabine_HCC515_lung Female\n", "2 decitabine_HCC515_lung No-dir\n", "3 decitabine_HCC515_lung Female\n", "4 decitabine_HCC515_lung No-dir\n", "5 temozolomide_SKLU1_lung Female\n", "6 temozolomide_SKLU1_lung Male\n", "7 busulfan_MCF7_breast Male\n", "8 busulfan_MCF7_breast Male\n", "9 busulfan_MCF7_breast Female" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_genes_tiss_sb_fil" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# Agrupar por ID y obtener la categoría con el mayor conteo para cada ID\n", "max_category_by_id = df_genes_tiss_sb_fil.groupby('Signature_id_x')['Sex-bias'].apply(lambda x: x.value_counts().idxmax())\n", "\n", "# Convertir la serie resultante en un DataFrame\n", "result_df = max_category_by_id.reset_index(name='Sex-bias')" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "result_df[\"Plot\"]= [2,1,1]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Signature_id_xSex-biasPlot
0busulfan_MCF7_breastMale2
1decitabine_HCC515_lungFemale1
2temozolomide_SKLU1_lungFemale1
\n", "
" ], "text/plain": [ " Signature_id_x Sex-bias Plot\n", "0 busulfan_MCF7_breast Male 2\n", "1 decitabine_HCC515_lung Female 1\n", "2 temozolomide_SKLU1_lung Female 1" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result_df\n", "#altero el valor porque tienen valores igualas las categorias por ello se decide que no hay direccion del sex-bias" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "# Define the colors for each category\n", "category_colors = {\n", " 1: 'green', # No direction\n", " 2: 'blue', # Male sex-biased\n", " 3: 'red' # Female sex-biased\n", "}\n", "\n", "fig, ax = plt.subplots(figsize=(20, 20))\n", "\n", "# Plot the scatter plot with colors based on category\n", "scatter = plt.scatter(result_df['Plot'], result_df['Signature_id_x'], c=result_df['Plot'].map(category_colors), s=100, zorder=2)\n", "\n", "# Set labels and x-axis ticks\n", "#plt.xlabel('Sex-bias', fontsize=12)\n", "plt.ylabel('Cancer drug + Signature', fontsize=12)\n", "plt.xticks(range(4), [\" \",'No direction', 'Male sex-biased', 'Female sex-biased'])\n", "\n", "# Add grid\n", "plt.grid(color='grey', linestyle='--', linewidth=0.5)\n", "\n", "# Customize font for axes labels\n", "plt.setp(ax.get_xticklabels(), fontsize=12, color=\"black\", fontweight=\"normal\")\n", "plt.setp(ax.get_yticklabels(), fontsize=12, color=\"black\", fontweight=\"normal\")\n", "\n", "# Save the plot\n", "plt.tight_layout()\n", "plt.savefig(\"./images_genes_overlap/enrichment_top100.svg\")\n", "plt.show()\n" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }