From 56c434a2efa1c84a93a8a55809c01062946c2d65 Mon Sep 17 00:00:00 2001 From: Lily Taub <115661359+lilydtaub@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:34:11 -0500 Subject: [PATCH 1/4] add multi-gene analysis, remove LINCS --- appyters/Drug_Gene_Budger2/README.md | 8 +- appyters/Drug_Gene_Budger2/appyter.json | 9 +- appyters/Drug_Gene_Budger2/cmap_readers.py | 136 ++ .../drug_gene_budger2_appyter.ipynb | 1231 +++++++++++------ .../Drug_Gene_Budger2/multi_gene_utils.py | 169 +++ appyters/Drug_Gene_Budger2/requirements.txt | 4 +- .../static/DR-logo-small.png | Bin 0 -> 38902 bytes appyters/Drug_Gene_Budger2/static/DR-logo.png | Bin 0 -> 21713 bytes .../Drug_Gene_Budger2/static/dgb_logo.png | Bin 91366 -> 0 bytes .../static/dgb_logo_small.png | Bin 77516 -> 0 bytes appyters/Drug_Gene_Budger2/templates/form.j2 | 4 +- 11 files changed, 1159 insertions(+), 402 deletions(-) create mode 100644 appyters/Drug_Gene_Budger2/cmap_readers.py create mode 100644 appyters/Drug_Gene_Budger2/multi_gene_utils.py create mode 100644 appyters/Drug_Gene_Budger2/static/DR-logo-small.png create mode 100644 appyters/Drug_Gene_Budger2/static/DR-logo.png delete mode 100644 appyters/Drug_Gene_Budger2/static/dgb_logo.png delete mode 100644 appyters/Drug_Gene_Budger2/static/dgb_logo_small.png diff --git a/appyters/Drug_Gene_Budger2/README.md b/appyters/Drug_Gene_Budger2/README.md index cebf1832..c347a7b8 100644 --- a/appyters/Drug_Gene_Budger2/README.md +++ b/appyters/Drug_Gene_Budger2/README.md @@ -1,11 +1,11 @@ -# Dr. Gene Budger (DGB) 2 +# DrugRanger -The Dr. Gene Budger 2 (DGB2) Appyter takes a single human gene as input, and returns ranked up- and down-regulating drugs from three Connectivity Mapping resources that were shown to maximally increase or decrease the mRNA expression of the gene in human cell lines. The three Connectivity Mapping resources are: +The DrugRanger Appyter takes a single human gene or gene set as input, and returns ranked up- and down-regulating drugs from three Connectivity Mapping resources that were shown to maximally increase or decrease the mRNA expression of the gene(s) in human cell lines. The three Connectivity Mapping resources are: - [Ginkgo GDPx1 and GDPx2 datasets](https://huggingface.co/ginkgo-datapoints) - [Novartis DRUG-seq U2OS MoABox dataset](https://zenodo.org/records/14291446) -- [LINCS L1000 Chemical Perturbation dataset](https://maayanlab.cloud/sigcom-lincs/#/Download) +- [Tahoe-100M](https://huggingface.co/datasets/tahoebio/Tahoe-100M) -In addition to producing tables of ranked up- and down-regulating drugs of the input gene, the notebook creates volcano plot visualizations and UpSet plots that identify overlap in regulators across datasets. \ No newline at end of file +In addition to producing tables of ranked up- and down-regulating drugs of the input gene, the notebook creates various visualizations for the single gene and multi-gene analysis, to help users determine the most effective regulators of their input gene(s). \ No newline at end of file diff --git a/appyters/Drug_Gene_Budger2/appyter.json b/appyters/Drug_Gene_Budger2/appyter.json index 86ac03a7..430cd63b 100644 --- a/appyters/Drug_Gene_Budger2/appyter.json +++ b/appyters/Drug_Gene_Budger2/appyter.json @@ -1,10 +1,10 @@ { "$schema": "https://raw.githubusercontent.com/MaayanLab/appyter-catalog/main/schema/appyter-validator.json", "name": "Drug_Gene_Budger2", - "title": "Dr. Gene Budger (DGB) 2", - "version": "0.0.8", - "description": "An appyter that retrieves drugs that up-regulate and down-regulate a single input gene across Connectivity Mapping datasets", - "image": "dgb_logo.png", + "title": "DrugRanger", + "version": "0.0.9", + "description": "An appyter that retrieves drugs that up-regulate and down-regulate a single input gene or gene set across Connectivity Mapping datasets", + "image": "DR-logo-small.png", "authors": [ { "name": "Lily Taub", @@ -13,7 +13,6 @@ ], "url": "https://github.com/MaayanLab/appyter-catalog", "tags": [ - "L1000", "DRUG-seq", "RNA-seq" ], diff --git a/appyters/Drug_Gene_Budger2/cmap_readers.py b/appyters/Drug_Gene_Budger2/cmap_readers.py new file mode 100644 index 00000000..ac0f3f45 --- /dev/null +++ b/appyters/Drug_Gene_Budger2/cmap_readers.py @@ -0,0 +1,136 @@ +import pandas as pd +import numpy as np +import hashlib +import polars as pl + +def prepare_novartis_data(gene, URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/novartis_de'): + ''' + gene: gene symbol to retrieve + URL: Novartis data storage location + + output: results dataframe from Novartis data + ''' + try: + novartis_de = pd.read_feather(f'{URL}/{gene}.f').set_index('index') + except: + # print(f'{gene} not found in Novartis') + return None + # format p-values + novartis_de['log10adj.P.Val'] = novartis_de['P.Adj'].replace(0,1e-323).map(np.log10)*-1 + # rename logFC column for concordance with Ginkgo columns + novartis_de.rename(columns={'LogFC':'logFC', 'P.Adj':'adj.P.Val'}, inplace=True) + return novartis_de + +def prepare_lincs_data(gene, URL='https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/lincs_de'): + ''' + gene: gene symbol to retrieve + URL: LINCS data storage location + + output: results dataframe from LINCS data + ''' + try: + lincs_de = pd.read_feather(f'{URL}/{gene}.f') + except: + # print(f'{gene} not found in LINCS') + return None + # format p-values + lincs_de['log10adj.P.Val'] = lincs_de['adj.P.Val'].replace(0,1e-323).map(np.log10)*-1 + # remove CRISPR KO perturbations + lincs_ko_perturbs = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/lincs_ko_perturbs.txt', sep='\t') + lincs_de = lincs_de[~lincs_de['Drug'].isin(lincs_ko_perturbs.cmap_name.to_list())] + return lincs_de + +def hash_bucket(gene, num_buckets=512): + ''' + gene: Gene symbol + num_buckets: number of hash buckets to create + + output: integer hash for gene name (between 0-n_buckets) + ''' + return int(hashlib.md5(gene.encode()).hexdigest(),16) % num_buckets + +def prepare_tahoe_data(df, gene): + ''' + df: DataFrame retrieved from Tahoe gene bucket file + gene: gene to filter dataframe + + output: results dataframe from Tahoe data filtered to gene + ''' + tahoe_de = df[df['gene_name']==gene] + if tahoe_de.shape[0] == 0: + # print(f'{gene} not found in Tahoe') + return None + tahoe_de['log10adj.P.Val'] = tahoe_de['padj'].replace(0,1e-323).map(np.log10)*-1 + tahoe_de.rename(columns = {'log2FoldChange':'logFC', 'drug':'Drug', 'padj':'adj.P.Val', 'group':'Perturbation', 'gene_name':'Gene'}, inplace=True) + tahoe_de['GeneDir'] = np.where(tahoe_de['UpReg']==1,'Up','Dn') + return tahoe_de + +def retrieve_tahoe_data(gene_set, URL='https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/tahoe_de'): + ''' + gene_set: list of gene symbols + + output: dictionary of tahoe data for each gene in gene_set + ''' + hash_dict = {} + for g in gene_set: + hash_dict[g] = str(hash_bucket(g)) + hash_dict_rev = {} + for gene, hash in hash_dict.items(): + if hash in hash_dict_rev: + hash_dict_rev[hash].append(gene) + else: + hash_dict_rev[hash]=[gene] + tahoe_results = {} + for hash, genes in hash_dict_rev.items(): + df = pd.read_parquet(f'{URL}/gene_bucket_{hash}.parquet', use_pandas_metadata=False) + for g in genes: + tahoe_data = prepare_tahoe_data(df, g) + tahoe_results[g] = tahoe_data + return tahoe_results + +def prepare_ginkgo_data_dict(gene, cell_types, URL='https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/ginkgo_de'): + ''' + gene: gene symbol to retrieve + cell types: Ginkgo cell types in GDPx1 and GDPx2 + URL: Ginkgo data storage location + + output: dictionary with dataframes for all Ginkgo cell types + ''' + try: + df = pd.read_feather(f'{URL}/{gene}.f') + except: + # print('Gene not found in Ginkgo') + return None + cell_type_results = {} + for k in cell_types: + subset = df[df['Perturbation'].str.contains(k)] + subset['log10adj.P.Val'] = subset['adj.P.Val'].replace(0,1e-323).map(np.log10)*-1 + subset = subset.drop('index', axis=1) + cell_type_results[k] = subset + + return cell_type_results + +def prepare_ginkgo_data_df(gene, cell_types, URL='https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/ginkgo_de'): + ''' + gene: gene symbol to retrieve + cell types: Ginkgo cell types in GDPx1 and GDPx2 + URL: Ginkgo data storage location + + output: results dataframe for all Ginkgo cell types + ''' + try: + + df = pd.read_feather(f'{URL}/{gene}.f') + except: + # print('Gene not found in Ginkgo') + return None + cell_type_results = {} + for k in cell_types: + subset = df[df['Perturbation'].str.contains(k)] + subset['log10adj.P.Val'] = subset['adj.P.Val'].replace(0,1e-323).map(np.log10)*-1 + subset = subset.drop('index', axis=1) + cell_type_results[k] = subset + + all_df = pd.concat(cell_type_results.values(), ignore_index=True) + + return all_df \ No newline at end of file diff --git a/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb b/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb index 0cd54b0d..2dfe8af9 100644 --- a/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb +++ b/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb @@ -22,36 +22,64 @@ "%%appyter hide_code\n", "\n", "{% do SectionField(\n", - " name='gene_input', \n", - " title = '1. Select an input gene', \n", - " subtitle = 'Enter a human gene of interest'\n", + " name='input', \n", + " title = '1. Gene Upload', \n", + " subtitle = 'Enter a single human gene or a gene set'\n", ") %}\n", "\n", "{% do SectionField(\n", - " name='method_input', \n", - " title = '2. Select a drug ranking method', \n", - " subtitle = \"Select a ranking method by which to identify top up- and down-regulating drugs. Options are to rank drugs by the differential expression (DE) p-value of the target (default) or by the rank of the target in each perturbation's DE signature (Target Rank), where ranking is determined by the adjusted p-value of differential expression. This method prioritizes drug specificity over magnitude of regulation.\"\n", + " name='analysis', \n", + " title = '2. Select a drug ranking method for single gene analysis', \n", + " subtitle = \"Select a ranking method by which to identify top up- and down-regulating drugs. Options are to rank drugs by the differential expression (DE) p-value of the target (default) or by the rank of the target in each perturbation's DE signature (Target Rank), where ranking is determined by the adjusted p-value of differential expression. This method prioritizes drug specificity over magnitude of regulation. THIS PARAMETER IS IGNORED for the multi-gene analysis.\"\n", ") %}" ] }, { "cell_type": "code", "execution_count": null, - "id": "e07b2ead", + "id": "b0abfb33", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter hide code\n", + "{% set gene_input = TabField(\n", + " name = 'gene_input',\n", + " label = 'Query Gene(s)',\n", + " default = 'Single Gene',\n", + " description = 'Enter the gene symbol or gene set of interest.',\n", + " choices = {\n", + " 'Single Gene': [\n", + " AutocompleteField(\n", + " name='single_gene_input',\n", + " label = 'Input Gene',\n", + " default = 'C9ORF72',\n", + " description = 'Enter a single human gene of interest',\n", + " file_path = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/all_genes.json',\n", + " section = 'input'\n", + " )\n", + " ],\n", + " 'Multi-gene': [\n", + " TextField(\n", + " name='multi_gene_input',\n", + " label = 'Input Gene Set',\n", + " default = 'GPR141\\nMS4A6A\\nCR1\\nHLA-DQA1\\nMS4A4A',\n", + " description = 'Enter a list of genes, one per row',\n", + " section = 'input'\n", + " )\n", + " ]\n", + " },\n", + " section='input'\n", + ")%}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15e0d733", "metadata": {}, "outputs": [], "source": [ "%%appyter hide_code\n", - "\n", - "{% set input_gene = AutocompleteField(\n", - " name = 'input_gene',\n", - " label = 'Query Gene',\n", - " default = 'C9ORF72',\n", - " description = 'Enter the gene symbol of interest.',\n", - " file_path = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/all_genes.json',\n", - " section='gene_input'\n", - ")%}\n", - "\n", "{% set ranking_method = ChoiceField(\n", " name = 'ranking_method',\n", " label = 'Ranking Method',\n", @@ -61,19 +89,26 @@ " 'Differential Expression P-Value',\n", " 'Target Rank'\n", " ],\n", - " section='method_input'\n", + " section='analysis'\n", ")%}" ] }, { "cell_type": "code", "execution_count": null, - "id": "733c8208", + "id": "7e3c5250", "metadata": {}, "outputs": [], "source": [ "%%appyter code_exec\n", - "query_gene = \"{{ input_gene.value.upper() }}\"\n", + "\n", + "{%- if gene_input.raw_value == 'Single Gene' %} # single gene input\n", + "input_type = 'single'\n", + "query_gene = \"{{ gene_input.value[0]['args']['value'].upper() }}\"\n", + "{%- else -%} # multi-gene input\n", + "geneset = {{ gene_input.value[0] }}\n", + "input_type = 'multi'\n", + "{%- endif %}\n", "\n", "{%- if ranking_method.raw_value == 'Differential Expression P-Value' %}\n", "ranking_method = 'pval'\n", @@ -82,12 +117,28 @@ "{%- endif %}" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "588e87d5", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "# this cell parses the gene list into a python list\n", + "\n", + "{%- if gene_input.raw_value == 'Multi-gene' %}\n", + "query_geneset = geneset.split('\\n')\n", + "query_geneset = [x.strip().upper() for x in query_geneset]\n", + "{%- endif %}" + ] + }, { "cell_type": "markdown", "id": "123ecde2", "metadata": {}, "source": [ - "# Drug Gene Budger 2" + "# DrugRanger" ] }, { @@ -99,7 +150,6 @@ "\n", "- Ginkgo GDPx1 and GPDx2: Limma-Voom based differential gene expression results for 1,354 drugs.\n", "- Novartis DRUG-seq: Differential: Limma-Trend based differential gene expression results for 4,343 drugs. \n", - "- LINCS L1000 Chemical Perturbations: Limma-Voom based differential gene expression results for a subset of 4,091 drugs from the LINCS L1000 Chemical Perturbation dataset. \n", "- Tahoe 100-M: DESeq based differential gene expression results for 376 drugs tested across 50 different cancer cell lines. \n", "\n", "The Ginkgo dataset includes 4 primary cell types (epithelial melanocytes, smooth aortic muscle cells, skeletal muscle myoblasts and dermal fibroblasts) and one cell line (A549 lung carcinoma cell line). Previous analysis showed distinct transcriptional responses by cell type, so the drug rankings for the Ginkgo dataset are separated by cell type.\n", @@ -122,12 +172,15 @@ "import warnings\n", "import hashlib\n", "\n", + "## Helpers\n", + "from cmap_readers import *\n", + "from multi_gene_utils import *\n", + "\n", "## Tables\n", - "from IPython.display import display, display_markdown, HTML\n", + "from IPython.display import display, display_markdown, HTML, FileLink\n", "\n", "## UpSet Plot\n", "from upsetplot import from_contents, plot\n", - "from matplotlib import pyplot\n", "\n", "## Venn Diagram\n", "from matplotlib_venn import venn3, venn2\n", @@ -135,9 +188,15 @@ "\n", "## Volcano Plot\n", "from bokeh.plotting import figure, show\n", - "from bokeh.models import ColumnDataSource, HoverTool, LinearColorMapper\n", - "from bokeh.palettes import RdBu\n", - "from bokeh.io import output_notebook" + "from bokeh.models import ColumnDataSource, HoverTool, LinearColorMapper, CategoricalColorMapper\n", + "from bokeh.palettes import RdBu, Category10\n", + "from bokeh.io import output_notebook\n", + "\n", + "## Barplots\n", + "import seaborn as sns\n", + "from matplotlib.colors import TwoSlopeNorm\n", + "from matplotlib.colorbar import ColorbarBase\n", + "import matplotlib.patches as mpatches" ] }, { @@ -150,7 +209,6 @@ "# Storage URLs for DE gene files\n", "ginkgo_URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/ginkgo_de'\n", "novartis_URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/novartis_de'\n", - "lincs_URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/lincs_de'\n", "deepcover_moa_URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/deepcoverMoa_de'\n", "tahoe_URL = 'https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/tahoe_de'\n", "\n", @@ -165,7 +223,8 @@ "metadata": {}, "outputs": [], "source": [ - "in_ginkgo = in_novartis = in_lincs = in_tahoe = True" + "in_ginkgo = in_novartis = in_tahoe = True\n", + "ginkgo_cell_types = ['human_epithelial_melanocytes', 'human_dermal_fibroblast', 'human_aortic_smooth_muscle_cells', 'human_skeletal_muscle_myoblasts','A549']" ] }, { @@ -175,98 +234,19 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "# get Ginkgo DE results for gene\n", - "gene_file = f'{query_gene}.f'\n", - "try:\n", - " ginkgo_de = pd.read_feather(f'{ginkgo_URL}/{gene_file}')\n", - " ginkgo_cell_types = list(set(p.split('-')[0] for p in ginkgo_de.Perturbation))\n", - "except:\n", + "ginkgo_gene_expr_dict = prepare_ginkgo_data_dict(query_gene, ginkgo_cell_types, ginkgo_URL)\n", + "if ginkgo_gene_expr_dict == None:\n", " in_ginkgo=False\n", - " print('Gene not in Ginkgo dataset')\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b9fb1130", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_ginkgo_data(df, cell_types):\n", - " '''Create a results dictionary where each cell type\n", - " in the Ginkgo dataset is a key and the value is the DE data\n", - " for the query gene for that cell type.\n", - " '''\n", - " cell_type_results = {}\n", - " for k in cell_types:\n", - " subset = df[df['Perturbation'].str.contains(k)]\n", - " subset['log10adj.P.Val'] = subset['adj.P.Val'].replace(0,1e-323).map(np.log10)*-1\n", - " cell_type_results[k] = subset\n", - " return cell_type_results\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bdc92b50", - "metadata": {}, - "outputs": [], - "source": [ - "if in_ginkgo:\n", - " ginkgo_gene_expr_dict = prepare_ginkgo_data(ginkgo_de, ginkgo_cell_types)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "41658110", - "metadata": {}, - "outputs": [], - "source": [ - "# get LINCS DE results for gene\n", - "try:\n", - " lincs_de = pd.read_feather(f'{lincs_URL}/{gene_file}')\n", - " # format p-values\n", - " lincs_de['log10adj.P.Val'] = lincs_de['adj.P.Val'].replace(0,1e-323).map(np.log10)*-1\n", - " # remove CRISPR KO perturbations\n", - " lincs_ko_perturbs = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/lincs_ko_perturbs.txt', sep='\\t')\n", - " lincs_de = lincs_de[~lincs_de['Drug'].isin(lincs_ko_perturbs.cmap_name.to_list())]\n", - "except:\n", - " print('Gene not in LINCS L1000 dataset')\n", - " in_lincs=False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d731a2ba", - "metadata": {}, - "outputs": [], - "source": [ + " print('Gene not in Ginkgo dataset') \n", "# get Novartis DE results for gene\n", - "try:\n", - " novartis_de = pd.read_feather(f'{novartis_URL}/{gene_file}').set_index('index')\n", - " # format p-values\n", - " novartis_de['log10adj.P.Val'] = novartis_de['P.Adj'].replace(0,1e-323).map(np.log10)*-1\n", - " # rename logFC column for concordance with Ginkgo columns\n", - " novartis_de.rename(columns={'LogFC':'logFC'}, inplace=True)\n", - "except:\n", + "novartis_de = prepare_novartis_data(query_gene, novartis_URL)\n", + "if novartis_de is None:\n", " print('Gene not in Novartis DRUG-seq dataset')\n", - " in_novartis=False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e7910ada", - "metadata": {}, - "outputs": [], - "source": [ + " in_novartis = False\n", "# get Tahoe DE results for gene\n", - "\n", - "# hash_bucket function used to sort genes into buckets\n", "def hash_bucket(gene, num_buckets=512):\n", " '''\n", " gene: Gene symbol\n", @@ -275,49 +255,26 @@ " Returns integer hash for gene name (between 0-n_buckets)\n", " '''\n", " return int(hashlib.md5(gene.encode()).hexdigest(),16) % num_buckets\n", - "\n", "query_gene_encoded = hash_bucket(query_gene)\n", - "\n", - "try:\n", - " tahoe_de = pd.read_parquet(f'{tahoe_URL}/gene_bucket_{query_gene_encoded}.parquet')\n", - " tahoe_de = tahoe_de[tahoe_de['gene_name']==query_gene]\n", - " tahoe_de['log10adj.P.Val'] = tahoe_de['padj'].replace(0,1e-323).map(np.log10)*-1\n", - " tahoe_de.rename(columns = {'log2FoldChange':'logFC', 'drug':'Drug', 'padj':'adj.P.Val'}, inplace=True)\n", - " tahoe_de['GeneDir'] = np.where(tahoe_de['UpReg']>0,'Up','Dn')\n", - " \n", - "except:\n", + "tahoe_de = pd.read_parquet(f'{tahoe_URL}/gene_bucket_{query_gene_encoded}.parquet')\n", + "tahoe_de = prepare_tahoe_data(tahoe_de, query_gene)\n", + "if tahoe_de is None:\n", " print('Gene not in Tahoe-100M dataset')\n", - " in_tahoe=False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c5607885", - "metadata": {}, - "outputs": [], - "source": [ - "if in_lincs + in_novartis + in_ginkgo + in_tahoe < 1:\n", - " print(f\"LINCS: {in_lincs}\")\n", + " in_tahoe=False\n", + "\n", + "if in_novartis + in_ginkgo + in_tahoe < 1:\n", " print(f\"Novartis: {in_novartis}\")\n", " print(f\"Ginkgo: {in_ginkgo}\")\n", " print(f\"Tahoe-100M: {in_tahoe}\")\n", - " raise Exception(\"Execution stopped, gene not found in any datasets\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5ac47199", - "metadata": {}, - "outputs": [], - "source": [ + " raise Exception(\"Execution stopped, gene not found in any datasets\")\n", "# Get proteomics data\n", "in_deepcover = True\n", "try:\n", - " protein_de = pd.read_feather(f'{deepcover_moa_URL}/{gene_file}').set_index('index')\n", + " protein_de = pd.read_feather(f'{deepcover_moa_URL}/{query_gene}.f').set_index('index')\n", "except:\n", - " in_deepcover=False" + " in_deepcover=False\n", + " \n", + "{% endif %} " ] }, { @@ -332,12 +289,46 @@ "pubchem_ids = pd.read_csv(pubchem_location, dtype = {'Drug':str, 'CID':str})" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a766854", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "# Retrieve data for multi-gene analysis\n", + "pbc_df = pubchem_ids.copy()\n", + "pbc_df.rename(columns={'Drug':'DrugMatch'}, inplace=True)\n", + "all_genes, not_found = fetch_cmap_data(query_geneset)\n", + "single_gene_drug_ranks = single_gene_rank(all_genes, query_geneset, pbc_df)\n", + "combined_gene_results, multi_gene_drug_ranks = get_multi_gene_ranks(single_gene_drug_ranks, pbc_df)\n", + "\n", + "# genes not found in any dataset\n", + "if len(not_found) == 3:\n", + " none_found = set.intersection(*[set(gl) for gl in not_found.values()])\n", + " if none_found:\n", + " display_markdown(f'Gene(s) {none_found} not found in Novartis DRUG-seq, Tahoe-100M, or Ginkgo. **Excluded from multi-gene analysis.**', raw=True)\n", + "else:\n", + " none_found = {}\n", + " \n", + "# list genes not found in some datasets\n", + "display_markdown('**Genes not found in the following datasets:**', raw=True)\n", + "for ds,gl in not_found.items():\n", + " print(f'{ds}: {gl}') \n", + "if (len(none_found) == len(query_geneset)):\n", + " print('No input genes found in any datasets')\n", + " raise Exception(\"Execution stopped, no input genes found in any datasets\")\n", + "{% endif %}" + ] + }, { "cell_type": "markdown", "id": "dd12adb9", "metadata": {}, "source": [ - "## Query Gene" + "## Query Gene(s)" ] }, { @@ -347,8 +338,15 @@ "metadata": {}, "outputs": [], "source": [ - "display_markdown(f\"This notebook shows results for the input gene **{query_gene}**\", raw=True)\n", - "display_markdown(f\"Drugs that up and down regulate **{query_gene}** are ranked by method **{ranking_method}**\", raw=True)" + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + " display_markdown(\"**Single Gene Input**\", raw=True)\n", + " display_markdown(f\"This notebook shows results for the input gene **{query_gene}**\", raw=True)\n", + " display_markdown(f\"Drugs that up and down regulate **{query_gene}** are ranked by method **{ranking_method}**\", raw=True)\n", + "{% elif gene_input.raw_value == 'Multi-gene' %}\n", + " display_markdown(\"**Multi-gene Input**\", raw=True)\n", + " display_markdown(f\"This notebook shows results for the input gene set **{query_geneset}**\", raw=True)\n", + "{% endif %}" ] }, { @@ -356,14 +354,19 @@ "id": "df830837", "metadata": {}, "source": [ - "## Rank Tables" + "## Drug Tables" ] }, { - "cell_type": "markdown", - "id": "97c523ce", + "cell_type": "code", + "execution_count": null, + "id": "61aeda92", "metadata": {}, + "outputs": [], "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "\n", "Within each dataset drugs are ranked by either:\n", "\n", "1. The statistical significance of the regulatory relationship. The pipeline uses the adjusted p-value from the differential expression results.\n", @@ -374,7 +377,9 @@ "\n", "When a dataset contains multiple perturbations for the same drug (i.e. a cell exposed to the drug at different doses), p-values and normalized ranks are averaged across doses to get a single ranking for the drug. \n", "\n", - "The rankings are done separately for up-regulated and down-regulated genes." + "The rankings are done separately for up-regulated and down-regulated genes.\n", + "\n", + "{% endif %}" ] }, { @@ -384,6 +389,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "def get_rankings(data:pd.DataFrame, source:str, cell_type:str, direction:str, option:str):\n", " '''\n", " Given a dataframe of logFC and p-values for a gene of interest across perturbations, \n", @@ -393,29 +400,44 @@ " perturbation ranks. \n", " '''\n", " ranked_data = data.copy()\n", + "\n", + " ranked_data['DrugLower'] = ranked_data['Drug'].str.lower()\n", + " ranked_data = ranked_data.merge(pubchem_ids, how='left', left_on ='DrugLower', right_on='Drug')\n", + " ranked_data['DrugGroup'] = ranked_data['CID']\n", + " ranked_data['DrugGroup'] = ranked_data['DrugGroup'].fillna(ranked_data['DrugLower'])\n", " \n", - " if (source == 'Ginkgo') & (cell_type=='A549'):\n", - " ranked_data.loc[ranked_data['Drug']=='Brefeldin A from Penicillium brefeldianum', 'Drug'] = 'Brefeldin A'\n", - " elif (source == 'Ginkgo') & (cell_type != 'A549'):\n", - " ranked_data.loc[ranked_data['Drug']=='Brefeldin-A', 'Drug'] = 'Brefeldin A'\n", - " elif source == 'Novartis':\n", - " ranked_data.loc[ranked_data['Drug']=='Trichostatin A (racemate)', 'Drug'] = 'Trichostatin A'\n", + " # if (source == 'Ginkgo') & (cell_type != 'A549'):\n", + " # ranked_data.loc[ranked_data['Drug']=='Brefeldin-A', 'Drug'] = 'Brefeldin A'\n", + " if source == 'Novartis':\n", + " # ranked_data.loc[ranked_data['Drug']=='Trichostatin A (racemate)', 'Drug'] = 'Trichostatin A'\n", " ranked_data.rename(columns={'P.Adj':'adj.P.Val'}, inplace=True)\n", " if option == 'pval':\n", " # average rank across all drug dosages\n", - " drug_mean_ranks = ranked_data.loc[:,['Drug','logFC','log10adj.P.Val']].groupby('Drug')[['logFC','log10adj.P.Val']].mean().sort_values('log10adj.P.Val', ascending=False)\n", + " drug_mean_ranks = ranked_data.loc[:,['DrugGroup','logFC','log10adj.P.Val']].groupby('DrugGroup')[['logFC','log10adj.P.Val']].mean().sort_values('log10adj.P.Val', ascending=False)\n", " # filter for up or down regulation\n", " if direction == 'up':\n", " drug_mean_ranks = drug_mean_ranks[drug_mean_ranks['logFC'] > 0]\n", " elif direction == 'down':\n", " drug_mean_ranks = drug_mean_ranks[drug_mean_ranks['logFC'] < 0]\n", - " drug_mean_ranks.rename(columns={'logFC':'Avg logFC', 'log10adj.P.Val':'Avg -log10(Adj.PVal)'}, inplace=True)\n", " elif option == 'target_rank':\n", " if direction == 'up':\n", " ranked_data = ranked_data[ranked_data['GeneDir'] == 'Up']\n", " elif direction == 'down':\n", " ranked_data = ranked_data[ranked_data['GeneDir'] == 'Dn']\n", - " drug_mean_ranks = ranked_data.loc[:,['Drug','logFC','adj.P.Val','Rank','PctRank']].groupby('Drug')[['logFC','adj.P.Val','Rank','PctRank']].mean().sort_values('PctRank', ascending=True)\n", + " drug_mean_ranks = ranked_data.loc[:,['DrugGroup','logFC','adj.P.Val','Rank','PctRank']].groupby('DrugGroup')[['logFC','adj.P.Val','Rank','PctRank']].mean().sort_values('PctRank', ascending=True)\n", + " # clean drug mean ranks\n", + " drug_mean_ranks.reset_index(drop=False, names='DrugGroup', inplace=True)\n", + " drug_mean_ranks = drug_mean_ranks.merge(pubchem_ids, how='left', left_on='DrugGroup', right_on='CID')\n", + " drug_mean_ranks['Drug'].fillna(drug_mean_ranks['DrugGroup'], inplace=True)\n", + " if option == 'pval':\n", + " drug_mean_ranks = drug_mean_ranks.drop_duplicates(subset=['CID','logFC','log10adj.P.Val'])\n", + " drug_mean_ranks.rename(columns={'logFC':'Avg logFC', 'log10adj.P.Val':'Avg -log10(Adj.PVal)'}, inplace=True)\n", + " elif option == 'target_rank':\n", + " drug_mean_ranks = drug_mean_ranks.drop_duplicates(subset=['CID','logFC','PctRank'])\n", + " drug_mean_ranks.rename(columns={'logFC':'Avg logFC', 'PctRank':'Avg PctRank'}, inplace=True)\n", + " # clean ranks\n", + " ranked_data = ranked_data[['Gene','Perturbation','Drug_x','CID','DrugGroup','adj.P.Val','logFC','GeneDir','Rank','PctRank','log10adj.P.Val']]\n", + " ranked_data.rename(columns={'Drug_x':'Drug'}, inplace=True)\n", " return drug_mean_ranks, ranked_data\n", "\n", "def get_top(rank_results:pd.DataFrame, n=50):\n", @@ -425,9 +447,10 @@ "\n", " If there are less drugs than N, will return all results.\n", " '''\n", - " top = {d.casefold() for d in set(rank_results.head(n).index)}\n", + " top = {d.casefold() for d in set(rank_results.head(n)['Drug'])}\n", " return top\n", "\n", + "{% endif %}\n", "\n", "def download_link(df, fname, link_header='Download full results'):\n", " '''\n", @@ -439,30 +462,18 @@ " return link" ] }, - { - "cell_type": "markdown", - "id": "07fea912", - "metadata": {}, - "source": [ - "### Ginkgo" - ] - }, - { - "cell_type": "markdown", - "id": "c5073607", - "metadata": {}, - "source": [ - "Drug rankings for the Ginkgo dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. " - ] - }, { "cell_type": "code", "execution_count": null, - "id": "1d05ddc0", + "id": "04a4f8d8", "metadata": {}, "outputs": [], "source": [ - "top_n = 20" + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Ginkgo\n", + "Drug rankings for the Ginkgo dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. \n", + "{% endif %}" ] }, { @@ -472,6 +483,9 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "top_n = 20\n", "if in_ginkgo:\n", " ginkgo_drugs_up = {}\n", " ginkgo_drugs_down = {}\n", @@ -491,61 +505,23 @@ " display(HTML(download_link(mean_ranks, f\"ginkgo_drug_ranks_{query_gene}_DnReg_{cell_type}.tsv\", 'Download results averaged across drug dosages')))\n", " display(HTML(download_link(full_ranks, f\"ginkgo_drug_ranks_{query_gene}_full_DnRg_{cell_type}.tsv\", 'Download results for all perturbations')))\n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Ginkgo datasets', raw=True)" - ] - }, - { - "cell_type": "markdown", - "id": "fc6465b9", - "metadata": {}, - "source": [ - "### L1000" - ] - }, - { - "cell_type": "markdown", - "id": "8777d900", - "metadata": {}, - "source": [ - "Drug rankings for the LINCS L1000 dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. " + " display_markdown(f'**{query_gene}** not found in Ginkgo datasets', raw=True)\n", + "\n", + "{% endif %} " ] }, { "cell_type": "code", "execution_count": null, - "id": "57438b7c", + "id": "e2931451", "metadata": {}, "outputs": [], "source": [ - "if in_lincs:\n", - " lincs_drugs_up = get_rankings(lincs_de, 'LINCS', '', 'up', ranking_method)\n", - " lincs_drugs_down = get_rankings(lincs_de, 'LINCS', '', 'down', ranking_method)\n", - " display_markdown(f'**Top {top_n} up-regulators in L1000**', raw=True)\n", - " display(lincs_drugs_up[0].head(top_n))\n", - " display(HTML(download_link(lincs_drugs_up[0], f\"l1000_drug_ranks_{query_gene}_UpReg.tsv\", 'Download results averaged across drug dosages')))\n", - " display(HTML(download_link(lincs_drugs_up[1], f\"l1000_drug_ranks_{query_gene}_full_UpReg.tsv\", 'Download results for all perturbations')))\n", - " display_markdown(f'**Top {top_n} down-regulators in L1000**', raw=True)\n", - " display(lincs_drugs_down[0].head(top_n))\n", - " display(HTML(download_link(lincs_drugs_down[0], f\"l1000_drug_ranks_{query_gene}_DnReg.tsv\", 'Download results averaged across drug dosages')))\n", - " display(HTML(download_link(lincs_drugs_down[1], f\"l1000_drug_ranks_{query_gene}_full_DnReg.tsv\", 'Download results for all perturbations')))\n", - "else: \n", - " display_markdown(f'**{query_gene}** not found in LINCS L1000 dataset', raw=True)" - ] - }, - { - "cell_type": "markdown", - "id": "e177678e", - "metadata": {}, - "source": [ - "### Novartis DRUG-seq" - ] - }, - { - "cell_type": "markdown", - "id": "e22fef7a", - "metadata": {}, - "source": [ - "Drug rankings for the Novartis DRUG-seq dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. " + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Novartis DRUG-seq\n", + "Drug rankings for the Novartis DRUG-seq dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. \n", + "{% endif %}" ] }, { @@ -555,6 +531,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_novartis:\n", " novartis_drugs_up = get_rankings(novartis_de, 'Novartis', '', 'up', ranking_method)\n", " novartis_drugs_down = get_rankings(novartis_de, 'Novartis', '', 'down', ranking_method)\n", @@ -568,23 +546,22 @@ " display(HTML(download_link(novartis_drugs_down[0], f'novartis_drug_ranks_{query_gene}_DnReg.tsv', 'Download results averaged across drug dosages')))\n", " display(HTML(download_link(novartis_drugs_down[1], f'novartis_drug_ranks_{query_gene}_full_DnReg.tsv', 'Download results for all perturbations')))\n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Novartis DRUG-seq', raw=True)" + " display_markdown(f'**{query_gene}** not found in Novartis DRUG-seq', raw=True)\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "c04f416c", - "metadata": {}, - "source": [ - "### Tahoe-100M" - ] - }, - { - "cell_type": "markdown", - "id": "e07834e6", + "cell_type": "code", + "execution_count": null, + "id": "3f6e38ba", "metadata": {}, + "outputs": [], "source": [ - "Drug rankings for the Tahoe-100M dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. " + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Tahoe-100M\n", + "Drug rankings for the Tahoe-100M dataset. Top 20 by the chosen ranking method are shown, and the full results are available for download. \n", + "{% endif %}" ] }, { @@ -594,6 +571,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_tahoe:\n", " tahoe_drugs_up = get_rankings(tahoe_de, 'Tahoe', '', 'up', ranking_method)\n", " tahoe_drugs_down = get_rankings(tahoe_de, 'Tahoe', '', 'down', ranking_method)\n", @@ -607,7 +586,156 @@ " display(HTML(download_link(tahoe_drugs_down[0], f'tahoe_drug_ranks_{query_gene}_DnReg.tsv', 'Download results averaged across drug dosages')))\n", " display(HTML(download_link(tahoe_drugs_down[1], f'tahoe_drug_ranks_{query_gene}_full_DnReg.tsv', 'Download results for all perturbations')))\n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Tahoe-100M', raw=True)" + " display_markdown(f'**{query_gene}** not found in Tahoe-100M', raw=True)\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a7a6716", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "\n", + "Drug ranks according to the adjusted p-value method are generated for each input gene. A single multi-gene drug rank for each drug is calculated by averaging the ranks for a drug across all input genes. \n", + "\n", + "Tables below show the top 20 drugs identified by their 0-1 normalized multi-gene drug rank, where lower values correspond to greater regulation, and their multi-gene rank deviation from the expected drug rank. The expected rank for each drug was calculated from random input gene sets. \n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d97287eb", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "# expected rank information\n", + "null_ranks_dn = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/null_rank_dn.csv').rename(columns={'MultiGeneRank':'NullRank'})\n", + "null_ranks_up = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/null_rank_up.csv').rename(columns={'MultiGeneRank':'NullRank'})\n", + "# Universal regulators\n", + "flagged_drugs = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/flagged_drug_list.csv')\n", + "flagged_drugs['DrugMatch'].fillna(flagged_drugs['CID'], inplace=True)\n", + "# Data on FDA approved drugs from OpenTargets\n", + "fda_approved_toxicity = pd.read_csv('https://appyters.maayanlab.cloud/storage/DrugRegulators_Appyter/opentargets_fda_approved_toxicity.csv')\n", + "fda_approved_toxicity['synonyms_lower'] = fda_approved_toxicity['synonyms'].str.lower()\n", + "fda_approved_toxicity['name_lower'] = fda_approved_toxicity['name'].str.lower()\n", + "fda_approved_toxicity.synonyms_lower.fillna(fda_approved_toxicity['name_lower'], inplace=True)\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7d883b2", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "def clean_ranks_df(direction, method):\n", + " df = multi_gene_drug_ranks[direction]\n", + " df = df.merge(pbc_df, how='left', on='DrugMatch')\n", + " df = df.drop_duplicates(subset=['DrugGroup', 'MultiGeneRank','NGenes'])\n", + " df['DrugMatch'] = df['DrugMatch'].fillna(df['DrugGroup'])\n", + " # expected ranks\n", + " df = df.merge(null_ranks_up[['DrugMatch','NullRank']], how='left', on='DrugMatch')\n", + " # FDA status\n", + " df = df.merge(fda_approved_toxicity[['synonyms_lower','isApproved']], how='left', left_on='DrugMatch', right_on='synonyms_lower')\n", + " df['isApproved'].fillna(False, inplace=True)\n", + "\n", + " if method=='mg_rank':\n", + " df = df.sort_values(['MultiGeneRank', 'NGenes'], ascending=[True, False])\n", + " new_names = {\n", + " 'DrugMatch':'Drug',\n", + " 'CID': 'PubChem CID',\n", + " 'MultiGeneRank': f'Multi-gene {direction} Rank',\n", + " 'NGenes': 'N Genes Regulated',\n", + " 'isApproved':'FDA Approved'\n", + " }\n", + " elif method=='deviation':\n", + " df['RankDiff'] = df['NullRank'] - df['MultiGeneRank']\n", + " df = df.sort_values(['RankDiff','MultiGeneRank', 'NGenes'], ascending=[False, True, False])\n", + " new_names = {\n", + " 'DrugMatch':'Drug',\n", + " 'CID': 'PubChem CID',\n", + " 'MultiGeneRank': f'Multi-gene {direction} Rank',\n", + " 'RankDiff': f'Expected Rank Difference {direction}',\n", + " 'NGenes': 'N Genes Regulated',\n", + " 'isApproved':'FDA Approved'\n", + " }\n", + "\n", + " df = df[list(new_names.keys())]\n", + " df.rename(columns=new_names, inplace=True)\n", + " df = df.drop_duplicates(subset=['PubChem CID',f'Multi-gene {direction} Rank', 'N Genes Regulated'])\n", + "\n", + " return df\n", + "\n", + "def clean_individual_df(direction):\n", + " df = combined_gene_results[direction]\n", + " df = df.merge(pbc_df, how='left', on='DrugMatch')\n", + " df = df.drop_duplicates(subset = ['gene','CID','Drug','MeanRank'])\n", + " new_names = {\n", + " 'gene':'Gene',\n", + " 'Drug':'Drug',\n", + " 'CID':'PubChem CID',\n", + " 'MeanRank':f'Mean Rank {direction}'\n", + " }\n", + " df = df[list(new_names.keys())]\n", + " df.rename(columns=new_names, inplace=True)\n", + " return df\n", + "def filter_genes(df, cutoff):\n", + " return df[df['N Genes Regulated'] > cutoff]\n", + "top_n = 20\n", + "## multi-gene rank method\n", + "# Up Regulation\n", + "display_markdown('**Multi-gene Drug Rank Up**', raw=True)\n", + "mg_ranks_up = clean_ranks_df('Up', 'mg_rank')\n", + "display(filter_genes(mg_ranks_up, 1)[:top_n])\n", + "display(HTML(download_link(mg_ranks_up, f\"multi_gene_drug_ranks_UpReg.tsv\", 'Download table')))\n", + "# Down Regulation\n", + "display_markdown('**Multi-gene Drug Rank Down**', raw=True)\n", + "mg_ranks_dn = clean_ranks_df('Dn', 'mg_rank')\n", + "display(filter_genes(mg_ranks_dn, 1)[:top_n])\n", + "display(HTML(download_link(mg_ranks_dn, f\"multi_gene_drug_ranks_DnReg.tsv\", 'Download table')))\n", + "\n", + "## deviation rank method\n", + "# Up Regulation\n", + "display_markdown('**Deviation Drug Rank Up**', raw=True)\n", + "dev_ranks_up = clean_ranks_df('Up', 'deviation')\n", + "display(filter_genes(dev_ranks_up, 1)[:top_n])\n", + "display(HTML(download_link(dev_ranks_up, f\"multi_gene_drug_ranks_deviation_UpReg.tsv\", 'Download table')))\n", + "# Down Regulation\n", + "display_markdown('**Deviation Drug Rank Down**', raw=True)\n", + "dev_ranks_dn = clean_ranks_df('Dn', 'deviation')\n", + "display(filter_genes(dev_ranks_dn,1)[:top_n])\n", + "display(HTML(download_link(dev_ranks_dn, f\"multi_gene_drug_ranks_deviation_DnReg.tsv\", 'Download table')))\n", + "\n", + "# Individual gene results downloads\n", + "display_markdown(\"**Results per gene available for download**\", raw = True)\n", + "display(HTML(download_link(clean_individual_df('Up'), f\"individual_gene_drug_ranks_UpReg.tsv\", 'Download table')))\n", + "display(HTML(download_link(clean_individual_df('Dn'), f\"individual_gene_drug_ranks_DnReg.tsv\", 'Download table')))\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "620e428c", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "## UpSet Plot\n", + "\n", + "The UpSet plots show the overlap among top up-regulating or down-regulating drugs in each dataset. If there were more than 50 significant regulators in a dataset for a given input gene, the input was restricted to the top 50 regulators.\n", + " {% endif %}" ] }, { @@ -617,6 +745,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "top_up = {}\n", "top_down = {}\n", "# get results from Ginkgo\n", @@ -624,10 +754,6 @@ " for cell_type in ginkgo_drugs_down.keys():\n", " top_up[f'ginkgo_{cell_type}'] = get_top(ginkgo_drugs_up[cell_type][0], n=50)\n", " top_down[f'ginkgo_{cell_type}'] = get_top(ginkgo_drugs_down[cell_type][0], n=50)\n", - "# get results from L1000\n", - "if in_lincs:\n", - " top_up['lincs_l1000'] = get_top(lincs_drugs_up[0], n=50)\n", - " top_down['lincs_l1000'] = get_top(lincs_drugs_down[0], n=50)\n", "# get results from novartis\n", "if in_novartis:\n", " top_up['novartis'] = get_top(novartis_drugs_up[0], n=50)\n", @@ -635,23 +761,9 @@ "# get results from Tahoe\n", "if in_tahoe:\n", " top_up['tahoe'] = get_top(tahoe_drugs_up[0], n=50)\n", - " top_down['tahoe'] = get_top(tahoe_drugs_down[0], n=50)" - ] - }, - { - "cell_type": "markdown", - "id": "01b5b49c", - "metadata": {}, - "source": [ - "## UpSet Plot" - ] - }, - { - "cell_type": "markdown", - "id": "fb0246a5", - "metadata": {}, - "source": [ - "The UpSet plots show the overlap among top up-regulating or down-regulating drugs in each dataset. If there were more than 50 significant regulators in a dataset for a given input gene, the input was restricted to the top 50 regulators." + " top_down['tahoe'] = get_top(tahoe_drugs_down[0], n=50)\n", + "\n", + "{% endif %}" ] }, { @@ -665,7 +777,7 @@ "def save_figure(plot_name, **kwargs):\n", " import io\n", " mem = io.BytesIO()\n", - " pyplot.savefig(mem, bbox_inches='tight')\n", + " plt.savefig(mem, bbox_inches='tight')\n", " with open(plot_name, 'wb') as fw:\n", " fw.write(mem.getbuffer())" ] @@ -677,14 +789,16 @@ "metadata": {}, "outputs": [], "source": [ - "def create_upset(top_sets: dict):\n", + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "\n", + "def create_upset(top_sets: dict, direction: str):\n", " '''\n", " Given a dictionary to top up or down regulating genes,\n", " creates an Upset plot. \n", " '''\n", " rename_keys = {\n", " 'ginkgo_A549': 'ginkgo_A549',\n", - " 'lincs_l1000': 'lincs_l1000',\n", " 'novartis': 'novartis',\n", " 'tahoe': 'tahoe',\n", " 'ginkgo_human_epithelial_melanocytes': 'ginkgo_melanocytes',\n", @@ -695,24 +809,19 @@ " top_sets = {rename_keys[k]:v for k,v in top_sets.items()}\n", " upset_data = from_contents(top_sets)\n", " plot(upset_data, orientation = 'horizontal', show_counts = True, element_size = 30)\n", - " pyplot.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "58fa71a7", - "metadata": {}, - "outputs": [], - "source": [ - "if in_ginkgo + in_lincs + in_novartis + in_tahoe < 2:\n", + " save_figure(f'upset_{direction}.png')\n", + " plt.show()\n", + "\n", + "if in_ginkgo + in_novartis + in_tahoe < 2:\n", " display_markdown(f'**{query_gene}** not found in at least 2 datasets')\n", "else:\n", " display_markdown(f\"**Overlap among top up regulators of {query_gene}**\", raw=True)\n", - " create_upset(top_up)\n", - "\n", + " create_upset(top_up, 'up')\n", + " display(FileLink('upset_up.png', result_html_prefix='Download:'))\n", " display_markdown(f\"**Overlap among top down regulators of {query_gene}**\", raw=True)\n", - " create_upset(top_down)" + " create_upset(top_down, 'down')\n", + " display(FileLink('upset_down.png', result_html_prefix='Download:'))\n", + "{% endif %}" ] }, { @@ -722,6 +831,9 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "\n", "def get_overlapping_sets(top_sets:dict):\n", " '''\n", " Given the dictionary of sets used to created the UpSet plot,\n", @@ -740,31 +852,39 @@ " overlapping_sets = pd.DataFrame(columns=['Members', 'Overlap', 'Length'])\n", " for idx in range(multi_index_df.shape[0]):\n", " ixn_drugs = set_df.loc[tuple(multi_index_df.iloc[idx])].id.to_list()\n", + " # replace PubChem IDs with drug names\n", + " pubchem_dict = dict(zip(pubchem_ids.CID.to_list(), pubchem_ids.Drug.to_list()))\n", + " ixn_drug_names = []\n", + " for d in ixn_drugs:\n", + " if d in pubchem_dict:\n", + " ixn_drug_names.append(pubchem_dict[d])\n", + " else:\n", + " ixn_drug_names.append(d)\n", " # get group members\n", " ixn_name = multi_index_df.iloc[idx][multi_index_df.iloc[idx]].index.to_list()\n", " ixn_name_joined = '-'.join(ixn_name)\n", " # append results\n", - " overlapping_sets = pd.concat([overlapping_sets, pd.DataFrame({'Members':ixn_name_joined, 'Overlap':[ixn_drugs], 'Length':len(ixn_drugs), 'N Datasets':len(ixn_name)})])\n", + " overlapping_sets = pd.concat([overlapping_sets, pd.DataFrame({'Members':ixn_name_joined, 'Overlap':[ixn_drug_names], 'Length':len(ixn_drug_names), 'N Datasets':len(ixn_name)})])\n", " \n", " \n", " overlapping_sets = overlapping_sets.sort_values('N Datasets', ascending=False)\n", - " return overlapping_sets\n" - ] - }, - { - "cell_type": "markdown", - "id": "6247c9b9", - "metadata": {}, - "source": [ - "## Consensus Regulator Tables" + " return overlapping_sets\n", + " {% endif %}" ] }, { - "cell_type": "markdown", - "id": "556a29cc", + "cell_type": "code", + "execution_count": null, + "id": "9307e382", "metadata": {}, + "outputs": [], "source": [ - "Below are tabular representations of the UpSet plots." + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "## Consensus Regulator Tables\n", + "\n", + "Below are tabular representations of the UpSet plots.\n", + "{% endif %}" ] }, { @@ -774,7 +894,9 @@ "metadata": {}, "outputs": [], "source": [ - "if in_ginkgo + in_lincs + in_novartis + in_tahoe < 2:\n", + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "if in_ginkgo + in_novartis + in_tahoe < 2:\n", " display_markdown(f'**{query_gene}** not found in at least 2 datasets')\n", "else:\n", " overlap_down = get_overlapping_sets(top_down)\n", @@ -784,7 +906,8 @@ " display(HTML(download_link(overlap_down, f'overlapping_drugs_{query_gene}_DnReg.tsv')))\n", " display_markdown(\"**Up-regulating drug overlap**\", raw=True)\n", " display(overlap_up)\n", - " display(HTML(download_link(overlap_up, f'overlapping_drugs_{query_gene}_UpReg.tsv')))\n" + " display(HTML(download_link(overlap_up, f'overlapping_drugs_{query_gene}_UpReg.tsv')))\n", + "{% endif %}\n" ] }, { @@ -794,6 +917,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "def get_ranking_averages(overlapping_df, data_dict, ranking_method):\n", " # get average, integrating across datasets\n", " average_rank_vals = {}\n", @@ -801,6 +926,8 @@ " average_logfc_vals = {}\n", " average_pvals = {}\n", " n_datasets = list()\n", + " pubchem_dict = dict(zip(pubchem_ids.Drug.to_list(), pubchem_ids.CID.to_list()))\n", + " pubchem_dict_rev = dict(zip(pubchem_ids.CID.to_list(), pubchem_ids.Drug.to_list()))\n", " for _,row in overlapping_df.iterrows():\n", " n_datasets.extend([row['N Datasets']]*len(row['Overlap']))\n", " member_sets = row['Members']\n", @@ -813,7 +940,8 @@ " for source_name,df in data_dict.items():\n", " if not re.search(source_name, member_sets):\n", " continue\n", - " subset = df[df['Drug'].str.lower() == d.lower()]\n", + " d = pubchem_dict[d] if d in pubchem_dict else d\n", + " subset = df[df['DrugGroup'] == d]\n", " n = n + subset.shape[0]\n", " runsum_rank = runsum_rank + subset.Rank.sum()\n", " runsum_pctrank = runsum_pctrank + subset.PctRank.sum()\n", @@ -832,6 +960,7 @@ " 'Avg PctRank': list(average_pctrank_vals.values())\n", " })\n", " res_df['N Datasets'] = n_datasets\n", + " res_df['Drug'] = res_df['Drug'].apply(lambda x: pubchem_dict_rev[x] if x in pubchem_dict_rev else x)\n", " if ranking_method == 'target_rank':\n", " # sort based on N datasets and average percentile rank\n", " res_df = res_df.sort_values(['N Datasets','Avg PctRank'], ascending=[False,True])\n", @@ -851,7 +980,8 @@ " # clean column names\n", " with_proteins.rename(columns = {'logFC':'Protein logFC', 'Pubchem' : 'PubChem CID'}, inplace=True)\n", " with_proteins.drop(columns='CID',inplace=True)\n", - " return with_proteins.sort_values(['N Datasets', 'Avg Adj.P.Val'], ascending=[False,True])" + " return with_proteins.sort_values(['N Datasets', 'Avg Adj.P.Val'], ascending=[False,True])\n", + "{% endif %}" ] }, { @@ -861,24 +991,22 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "# define input data for get_ranking_averages\n", "data_source_present = {'A549': in_ginkgo, \n", - " 'human_dermal_fibroblast':in_ginkgo,\n", - " 'human_aortic_smooth_muscle_cells':in_ginkgo,\n", - " 'human_epithelial_melanocytes': in_ginkgo,\n", - " 'human_skeletal_muscle_myoblasts': in_ginkgo,\n", - " 'novartis': in_novartis,\n", - " 'lincs': in_lincs,\n", - " 'tahoe': in_tahoe}\n", + " 'human_dermal_fibroblast':in_ginkgo,\n", + " 'human_aortic_smooth_muscle_cells':in_ginkgo,\n", + " 'human_epithelial_melanocytes': in_ginkgo,\n", + " 'human_skeletal_muscle_myoblasts': in_ginkgo,\n", + " 'novartis': in_novartis,\n", + " 'tahoe': in_tahoe}\n", "data_dict_down ={}\n", "data_dict_up = {}\n", "for source,present in data_source_present.items():\n", - " if (present) & (not source in ['novartis','lincs','tahoe']):\n", + " if (present) & (not source in ['novartis','tahoe']):\n", " data_dict_down[source] = ginkgo_drugs_down[source][1]\n", " data_dict_up[source] = ginkgo_drugs_up[source][1]\n", - " elif (present) & (source == 'lincs'):\n", - " data_dict_down[source] = lincs_drugs_down[1]\n", - " data_dict_up[source] = lincs_drugs_up[1]\n", " elif (present) & (source == 'novartis'):\n", " data_dict_down[source] = novartis_drugs_down[1]\n", " data_dict_up[source] = novartis_drugs_up[1]\n", @@ -886,17 +1014,23 @@ " data_dict_down[source] = tahoe_drugs_down[1]\n", " data_dict_up[source] = tahoe_drugs_up[1]\n", "\n", - "if in_ginkgo + in_lincs + in_novartis + in_tahoe > 1:\n", + "if in_ginkgo + in_novartis + in_tahoe > 1:\n", " overlapping_up_TargetRank = get_ranking_averages(overlap_up, data_dict_up, ranking_method)\n", - " overlapping_down_TargetRank = get_ranking_averages(overlap_down, data_dict_down, ranking_method)" + " overlapping_down_TargetRank = get_ranking_averages(overlap_down, data_dict_down, ranking_method)\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "bc739111", + "cell_type": "code", + "execution_count": null, + "id": "073650d0", "metadata": {}, + "outputs": [], "source": [ - "The tables below show average logFC, adjusted p-value, raw rank and normalized rank values across datasets for drugs that were found to be significant regulators in more than one dataset." + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "The tables below show average logFC, adjusted p-value, raw rank and normalized rank values across datasets for drugs that were found to be significant regulators in more than one dataset.\n", + "{% endif %}" ] }, { @@ -906,7 +1040,9 @@ "metadata": {}, "outputs": [], "source": [ - "if in_ginkgo + in_lincs + in_novartis + in_tahoe < 2:\n", + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "if in_ginkgo + in_novartis + in_tahoe < 2:\n", " display_markdown(f'**{query_gene}** not found in at least 2 datasets')\n", "else:\n", " display_markdown(\"**Averages across datasets: Up-regulating drugs**\", raw=True)\n", @@ -914,17 +1050,23 @@ " display(HTML(download_link(overlapping_up_TargetRank, f'overlapping_drugs_averages_{query_gene}_UpReg.tsv')))\n", " display_markdown(\"**Averages across datasets: Down-regulating drugs**\", raw=True)\n", " display(overlapping_down_TargetRank.head(n=top_n))\n", - " display(HTML(download_link(overlapping_down_TargetRank, f'overlapping_drugs_averages_{query_gene}_DnReg.tsv')))" + " display(HTML(download_link(overlapping_down_TargetRank, f'overlapping_drugs_averages_{query_gene}_DnReg.tsv')))\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "2aaee19a", + "cell_type": "code", + "execution_count": null, + "id": "74e6a8bc", "metadata": {}, + "outputs": [], "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "### Protein Regulation\n", "\n", - "Query gene regulation at the protein level is dispalyed in the table below. Proteomics data is from the [Deepcover MoA dataset](https://wren.hms.harvard.edu/DeepCoverMOA/), which exposes cells from the HCT116 cancer cell line to 875 small molecule compounds. " + "Query gene regulation at the protein level is dispalyed in the table below. Proteomics data is from the [Deepcover MoA dataset](https://wren.hms.harvard.edu/DeepCoverMOA/), which exposes cells from the HCT116 cancer cell line to 875 small molecule compounds. \n", + "{% endif %}" ] }, { @@ -934,6 +1076,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_deepcover:\n", " up_protein = protein_de[protein_de['logFC'] > 0].loc[:,['UniprotID','Drug','Pubchem','logFC','Zscore','UpRank','PctUpRank']].sort_values('logFC',ascending=False).reset_index().drop(columns='index')\n", " up_protein.rename(columns={'Pubchem':'PubChem CID','Zscore':'Z-score','UpRank':'Up Rank', 'PctUpRank':'Normalized Up Rank'}, inplace=True)\n", @@ -947,15 +1091,21 @@ " display(dn_protein.head(top_n))\n", " display(HTML(download_link(dn_protein, f'DeepcoverMoa_protein_{query_gene}_DnReg.tsv')))\n", "else:\n", - " display_markdown(f\"Protein of {query_gene} not in DeepCover MoA Dataset\", raw=True)" + " display_markdown(f\"Protein of {query_gene} not in DeepCover MoA Dataset\", raw=True)\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "a0630a08", + "cell_type": "code", + "execution_count": null, + "id": "d8b97a35", "metadata": {}, + "outputs": [], "source": [ - "If the protein associated with the query gene was found in the Deepcover MoA proteomics dataset, the tables below show how the protein was up or down-regulated by the consensus drugs identified in the connectivity mapping resources. The table only includes compounds that were used in the connectivity mapping resources and the Deepcover MoA dataset. " + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "If the protein associated with the query gene was found in the Deepcover MoA proteomics dataset, the tables below show how the protein was up or down-regulated by the consensus drugs identified in the connectivity mapping resources. The table only includes compounds that were used in the connectivity mapping resources and the Deepcover MoA dataset. \n", + "{% endif %}" ] }, { @@ -965,6 +1115,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_deepcover:\n", " up_with_cid = join_proteomics(overlapping_up_TargetRank, protein_de)\n", " dn_with_cid = join_proteomics(overlapping_down_TargetRank, protein_de)\n", @@ -977,17 +1129,25 @@ " display(dn_with_cid.head(n=top_n))\n", " display(HTML(download_link(dn_with_cid, f'{query_gene}_mRNA_protein_DnReg.tsv')))\n", "else:\n", - " display_markdown(f\"Protein of {query_gene} not in DeepCover MoA Dataset\", raw=True)" + " display_markdown(f\"Protein of {query_gene} not in DeepCover MoA Dataset\", raw=True)\n", + "\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "2e7c13dd", + "cell_type": "code", + "execution_count": null, + "id": "9669c9b6", "metadata": {}, + "outputs": [], "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "## Venn Diagrams\n", "\n", - "The venn diagrams show the pairwise overlap among either up-regulating or down-regulating drugs across the four Connectivity Mapping datasets Tahoe-100M, Novartis DRUG-seq, LINCS L1000, and Ginkgo (all cell types grouped). " + "The venn diagrams show the pairwise overlap among either up-regulating or down-regulating drugs across the four Connectivity Mapping datasets Tahoe-100M, Novartis DRUG-seq, and Ginkgo (all cell types grouped). \n", + "\n", + "{% endif %}" ] }, { @@ -997,6 +1157,8 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "# combine top up and down drugs across Ginkgo cell types\n", "if in_ginkgo:\n", " all_ginkgo_up = set()\n", @@ -1007,9 +1169,8 @@ " all_ginkgo_down = all_ginkgo_down.union(top_down[k])\n", "# define input data for venn diagrams\n", "data_source_present = {'ginkgo':in_ginkgo,\n", - " 'lincs_l1000':in_lincs,\n", - " 'novartis':in_novartis,\n", - " 'tahoe': in_tahoe}\n", + " 'novartis':in_novartis,\n", + " 'tahoe': in_tahoe}\n", "venn_up = {}\n", "venn_down = {}\n", "for source,present in data_source_present.items():\n", @@ -1018,7 +1179,9 @@ " venn_down[source] = all_ginkgo_down\n", " elif present:\n", " venn_up[source] = top_up[source]\n", - " venn_down[source] = top_down[source]" + " venn_down[source] = top_down[source]\n", + "\n", + "{% endif %}" ] }, { @@ -1028,14 +1191,17 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "\n", "def create_venn(venn_dict):\n", " '''\n", " Given a dictionary of sets of top up or down regulating genes,\n", " creates a 2 or 3 set venn diagram. \n", " '''\n", " if len(venn_dict) == 3:\n", - " venn3(subsets=(venn_dict['novartis'], venn_dict['lincs_l1000'], venn_dict['ginkgo']),\n", - " set_labels=('Novartis', 'LINCS L1000', 'Ginkgo'));\n", + " venn3(subsets=(venn_dict['novartis'], venn_dict['tahoe'], venn_dict['ginkgo']),\n", + " set_labels=('Novartis', 'Tahoe', 'Ginkgo'));\n", " elif len(venn_dict) == 2:\n", " venn2(subsets = (venn_dict.values()),\n", " set_labels=(venn_dict.keys()));\n", @@ -1070,7 +1236,8 @@ " if len(overlap) == 0:\n", " overlap = ['None']\n", " # print(f\"{', '.join(datasets)}: {', '.join(overlap)}\")\n", - " return f\"{', '.join(datasets)}: {', '.join(overlap)}\"" + " return f\"{', '.join(datasets)}: {', '.join(overlap)}\"\n", + "{% endif %}" ] }, { @@ -1078,17 +1245,32 @@ "execution_count": null, "id": "e275310b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UsageError: Cell magic `%%appyter` not found.\n" + ] + } + ], "source": [ - "if in_ginkgo + in_lincs + in_novartis + in_tahoe < 2:\n", + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "if in_ginkgo + in_novartis + in_tahoe < 2:\n", " display_markdown(f'**{query_gene}** not found in at least 2 datasets')\n", "else:\n", " display_markdown(f'Overlap of top {query_gene} up-regulating drugs across sources', raw=True)\n", " for combo in combinations(list(venn_up.keys()), 2):\n", " combo_venn = {k:venn_up[k] for k in combo if k in venn_up}\n", " create_venn(combo_venn)\n", - " plt.title(print_overlap(combo_venn))\n", - " plt.show()" + " title = print_overlap(combo_venn)\n", + " plt.title(title)\n", + " plt_name = f\"{title.split(':')[0].replace(',','_')}_up.png\"\n", + " save_figure(plt_name)\n", + " plt.show()\n", + " display(FileLink(plt_name, result_html_prefix='Download: '))\n", + "{% endif %}" ] }, { @@ -1098,15 +1280,189 @@ "metadata": {}, "outputs": [], "source": [ - "if in_ginkgo + in_lincs + in_novartis + in_tahoe < 2:\n", + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "if in_ginkgo + in_novartis + in_tahoe < 2:\n", " display_markdown(f'**{query_gene}** not found in at least 2 datasets')\n", "else:\n", " display_markdown(f'Overlap of top {query_gene} down-regulating drugs across sources', raw=True)\n", " for combo in combinations(list(venn_down.keys()), 2):\n", " combo_venn = {k:venn_down[k] for k in combo if k in venn_down}\n", " create_venn(combo_venn)\n", - " plt.title(print_overlap(combo_venn))\n", - " plt.show()" + " title = print_overlap(combo_venn)\n", + " plt.title(title)\n", + " plt_name = f\"{title.split(':')[0].replace(',','_')}_down.png\"\n", + " save_figure(plt_name)\n", + " plt.show()\n", + " display(FileLink(plt_name, result_html_prefix='Download: '))\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b09e6ff", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "## Top 20 Drug Plots\n", + "\n", + "The barplots show the multi-gene drug rank for the top 20 drugs for up and down regulation of the input geneset. The top drugs are identified by two sorting methods.\n", + "\n", + "1. Multi-gene rank: the average ranking for the drug acorss the genes in the input gene set\n", + "\n", + "2. Deviation rank: difference between multi-gene rank and the expected rank of the drug, determined by retrieving drug ranks for random input gene sets. \n", + "\n", + "\n", + "Plots are shown with and without filtering for drugs that regulate a majority of the inpute gene set in the specified direction. \n", + "\n", + "**Drug annotations (Y-axis):**\n", + "* \\*\\* FDA approved drug\n", + "* Red: Universal regulator, determined based on expected drug rank calculated from random input gene sets. \n", + "\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4d79365", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "def visualize_top_drugs(direction, max_genes=10, df=None, rank_method='MultiGeneRank', flag_filter = False, filter_genes=False):\n", + " from math import ceil \n", + "\n", + " top_n_drugs = 20\n", + " \n", + " # Create a blue-white-red continuous colormap centered at max_genes / 2\n", + " cmap = sns.color_palette(\"coolwarm\", as_cmap=True)\n", + " norm = TwoSlopeNorm(vmin=1, vcenter=max_genes / 2, vmax=max_genes)\n", + "\n", + " # join with expected rank data\n", + " if direction == 'Down':\n", + " df = df.merge(null_ranks_dn[['DrugMatch','NullRank']], how='left', on='DrugMatch')\n", + " elif direction == 'Up':\n", + " df = df.merge(null_ranks_up[['DrugMatch','NullRank']], how='left', on='DrugMatch')\n", + " \n", + " df['RankDiff'] = df['NullRank']-df['MultiGeneRank']\n", + " \n", + " # remove flagged drugs\n", + " if flag_filter:\n", + " df = df[~df['DrugMatch'].isin(flagged_drugs['DrugMatch'].to_list())]\n", + " if filter_genes:\n", + " df = df[df['NGenes'] >= ceil(max_genes/2)]\n", + "\n", + " # select top n drugs by RankDiff\n", + " if rank_method == 'RankDiff':\n", + " method_title = 'Deviation Rank'\n", + " df = df.sort_values(['RankDiff','MultiGeneRank', 'NGenes'], ascending=[False,True,False])[:top_n_drugs]\n", + " # select top n drugs by MG Rank\n", + " elif rank_method == 'MultiGeneRank':\n", + " method_title = 'Multi-gene Rank'\n", + " df = df.sort_values(['MultiGeneRank', 'NGenes'], ascending=[True,False])[:top_n_drugs]\n", + " \n", + " # FDA status\n", + " fda_approved = df.merge(fda_approved_toxicity, how='left', left_on='DrugMatch',right_on='synonyms_lower')\n", + " fda_approved = list(fda_approved[fda_approved['isApproved']==True].DrugMatch.unique())\n", + " \n", + " # order for plotting\n", + " df = df.sort_values('MultiGeneRank', ascending=True)\n", + " fig, ax = plt.subplots(figsize = (6,8))\n", + " null_bar = sns.barplot(df,\n", + " y='DrugMatch',\n", + " x='NullRank',\n", + " color='darkgray',\n", + " ax=ax)\n", + " mg_bar = sns.barplot(df,\n", + " y='DrugMatch',\n", + " x='MultiGeneRank',\n", + " hue='NGenes',\n", + " palette=cmap,\n", + " hue_norm=norm,\n", + " ax=ax)\n", + " \n", + " plt.ylabel(None)\n", + " plt.xlabel('Multi-gene Drug Rank [0-1]')\n", + " plt.title(f'{method_title} Top {top_n_drugs} Drugs: {direction}')\n", + " # add legend\n", + " top_bar = mpatches.Patch(color='darkgray', label='Null Rank')\n", + " plt.legend(handles=[top_bar], loc='upper center', bbox_to_anchor=(0.5,-0.1))\n", + " # add colorbar\n", + " sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)\n", + " sm.set_array([]) # needed for fig.colorbar\n", + " cbar = fig.colorbar(sm, ax=ax, orientation='horizontal', fraction=0.03, location='bottom')\n", + " cbar.set_label(f'Number of input targets {direction}-regulated')\n", + " \n", + " # Update specified y-axis labels\n", + " star_set = set([str(x) for x in fda_approved])\n", + "\n", + " # Denote FDA approved drugs\n", + " modified_label = []\n", + " for label in ax.get_yticklabels():\n", + " txt = label.get_text()\n", + " if txt in star_set:\n", + " modified_label.append(f'**{txt}')\n", + " else:\n", + " modified_label.append(txt)\n", + " \n", + " # Redraw the modified labels\n", + " ax.set_yticklabels(modified_label)\n", + "\n", + " # Denotes flagged drugs\n", + " for label in ax.get_yticklabels():\n", + " txt = label.get_text()\n", + " if str.replace(txt,'**','') in flagged_drugs['DrugMatch'].to_list():\n", + " label.set_color('red')\n", + " else:\n", + " label.set_color('black')\n", + " gene_filter = 'majorityGenes' if filter_genes else '' \n", + " plt_name = f\"{direction}_{rank_method}_top{top_n_drugs}_{gene_filter}.png\"\n", + " save_figure(plt_name)\n", + " plt.show()\n", + " return plt_name\n", + " \n", + "# Up\n", + "display_markdown(\" ### Up-Regulating\", raw=True)\n", + "display_markdown(\" #### Multi-gene Rank\", raw=True)\n", + "display(HTML('

Filter for drugs that regulate at least half of the input genes

'))\n", + "file_name = visualize_top_drugs('Up', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Up'], rank_method='MultiGeneRank', filter_genes=True)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "display(HTML('

No gene regulation filter

'))\n", + "file_name = visualize_top_drugs('Up', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Up'], rank_method='MultiGeneRank', filter_genes=False)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "\n", + "display_markdown(\" #### Deviation Rank\", raw=True)\n", + "display(HTML('

Filter for drugs that regulate at least half of the input genes

'))\n", + "file_name = visualize_top_drugs('Up', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Up'], rank_method='RankDiff', filter_genes=True)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "display(HTML('

No gene regulation filter

'))\n", + "file_name = visualize_top_drugs('Up', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Up'], rank_method='RankDiff', filter_genes=False)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "\n", + "# Dn\n", + "display_markdown(\" ### Down-Regulating\", raw=True)\n", + "display_markdown(\" #### Multi-gene Rank\", raw=True)\n", + "display(HTML('

Filter for drugs that regulate at least half of the input genes

'))\n", + "file_name=visualize_top_drugs('Down', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Dn'], rank_method='MultiGeneRank', filter_genes=True)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "display(HTML('

No gene regulation filter

'))\n", + "file_name=visualize_top_drugs('Down', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Dn'], rank_method='MultiGeneRank', filter_genes=False)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "\n", + "display_markdown(\" #### Deviation Rank\", raw=True)\n", + "display(HTML('

Filter for drugs that regulate at least half of the input genes

'))\n", + "file_name=visualize_top_drugs('Down', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Dn'], rank_method='RankDiff', filter_genes=True)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "display(HTML('

No gene regulation filter

'))\n", + "file_name=visualize_top_drugs('Down', max_genes=len(query_geneset), df = multi_gene_drug_ranks['Dn'], rank_method='RankDiff', filter_genes=False)\n", + "display(FileLink(file_name, result_html_prefix='Download: '))\n", + "\n", + "{% endif %}" ] }, { @@ -1118,11 +1474,19 @@ ] }, { - "cell_type": "markdown", - "id": "30eb397f", + "cell_type": "code", + "execution_count": null, + "id": "8f2814d8", "metadata": {}, + "outputs": [], "source": [ - "The volcano plots show the strength and statistical significance of the drug perturbation for each signature in the dataset (drug and dose specific). Color of points indicate up (red) or down (blue) regulation. Hover over points in the volcano plot to see the label (with cell line, drug, and dose information), logFC, fold-change, log10-transformed p-value, raw rank and normalized rank. Tools to the right of the plot allow you to manipulate (pan, zoom) and download the figure. " + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "The volcano plots show the strength and statistical significance of the drug perturbation for each signature in the dataset (drug and dose specific). Color of points indicate up (red) or down (blue) regulation. Hover over points in the volcano plot to see the label (with cell line, drug, and dose information), logFC, fold-change, log10-transformed p-value, raw rank and normalized rank. Tools to the right of the plot allow you to manipulate (pan, zoom) and download the figure. \n", + "\n", + "{% elif gene_input.raw_value == 'Multi-gene' %}\n", + "The volcano plots show the strength and statistical significance of the drug perturbation for each signature in the datasets. Color of points indicate the dataset associated with the signature. Hover over points in the volcano plot to see the perturbation information, logFC, fold-change, log10-transformed p-value, raw rank and normalized rank. Tools to the right of the plot allow you to manipulate (pan, zoom) and download the figure. \n", + "{% endif %}" ] }, { @@ -1132,8 +1496,18 @@ "metadata": {}, "outputs": [], "source": [ - "output_notebook()\n", - "\n", + "output_notebook()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fba19084", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "def create_bokeh_volcano_plot(expr_data:pd.DataFrame, gene_id:str, cell_type:str, source:str):\n", " '''\n", " Given the expression data for a given gene, create an interactive\n", @@ -1204,15 +1578,22 @@ " fill_alpha=0.6,\n", " color = {'field':'logFC','transform':color_mapper})\n", " p.add_tools(hover)\n", - " show(p)" + " show(p)\n", + " \n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "e1e29e34", + "cell_type": "code", + "execution_count": null, + "id": "e824946f", "metadata": {}, + "outputs": [], "source": [ - "### Ginkgo" + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Ginkgo\n", + "{% endif %}" ] }, { @@ -1222,41 +1603,28 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_ginkgo:\n", " for cell_type, expr_df in ginkgo_gene_expr_dict.items():\n", " cell_name = ' '.join(re.sub('human_','',cell_type).split('_'))\n", - " create_bokeh_volcano_plot(expr_df, query_gene, cell_name, 'Ginkgo')\n", + " create_bokeh_volcano_plot(expr_df, query_gene, cell_name, 'Ginkgo') \n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Ginkgo datasets', raw=True)" - ] - }, - { - "cell_type": "markdown", - "id": "3571fcfb", - "metadata": {}, - "source": [ - "### L1000" + " display_markdown(f'**{query_gene}** not found in Ginkgo datasets', raw=True)\n", + "{% endif %}" ] }, { "cell_type": "code", "execution_count": null, - "id": "36a1f0cc", + "id": "9dab5b97", "metadata": {}, "outputs": [], "source": [ - "if in_lincs:\n", - " create_bokeh_volcano_plot(lincs_de, query_gene, '', 'L1000')\n", - "else:\n", - " display_markdown(f'**{query_gene}** not found in LINCS L1000 dataset', raw=True)" - ] - }, - { - "cell_type": "markdown", - "id": "242d31af", - "metadata": {}, - "source": [ - "### Novartis DRUG-seq" + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Novartis DRUG-seq\n", + "{% endif %}" ] }, { @@ -1266,18 +1634,26 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_novartis:\n", - " create_bokeh_volcano_plot(novartis_de, query_gene, '', 'Novartis')\n", + " create_bokeh_volcano_plot(novartis_de, query_gene, '', 'Novartis') \n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Novartis DRUG-seq dataset', raw=True)" + " display_markdown(f'**{query_gene}** not found in Novartis DRUG-seq dataset', raw=True)\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "7ada5a72", + "cell_type": "code", + "execution_count": null, + "id": "c39118cf", "metadata": {}, + "outputs": [], "source": [ - "### Tahoe-100M" + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "### Tahoe-100M\n", + "{% endif %}" ] }, { @@ -1287,20 +1663,30 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", + "\n", "if in_tahoe:\n", " create_bokeh_volcano_plot(tahoe_de, query_gene, '','Tahoe')\n", "else:\n", - " display_markdown(f'**{query_gene}** not found in Tahoe-100M dataset', raw=True)" + " display_markdown(f'**{query_gene}** not found in Tahoe-100M dataset', raw=True)\n", + "\n", + "{% endif %}" ] }, { - "cell_type": "markdown", - "id": "8c3df5f5", + "cell_type": "code", + "execution_count": null, + "id": "4d129fa4", "metadata": {}, + "outputs": [], "source": [ + "%%appyter markdown\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "### Deepcover MoA\n", "\n", - "The Deepcover MoA proteomics dataset consists of proteome fingerprints for 875 chemical perturbations. This volcano plot of protein expression shows the logFC on the x-axis and the absolute difference in standard deviations between the protein's logFC for a given compound and the protein's mean logFC across all compounds on the y-axis. " + "The Deepcover MoA proteomics dataset consists of proteome fingerprints for 875 chemical perturbations. This volcano plot of protein expression shows the logFC on the x-axis and the absolute difference in standard deviations between the protein's logFC for a given compound and the protein's mean logFC across all compounds on the y-axis. \n", + "{% endif %}" ] }, { @@ -1310,11 +1696,78 @@ "metadata": {}, "outputs": [], "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Single Gene' %}\n", "if in_deepcover:\n", " # check for multiple proteins\n", " uniprot_ids = list(protein_de['UniprotID'].unique())\n", " for uid in uniprot_ids:\n", - " create_bokeh_volcano_plot(protein_de[protein_de['UniprotID']==uid], query_gene, '', 'Deepcover MoA')" + " create_bokeh_volcano_plot(protein_de[protein_de['UniprotID']==uid], query_gene, '', 'Deepcover MoA')\n", + "{% endif %}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c4acd6f0", + "metadata": {}, + "outputs": [], + "source": [ + "%%appyter code_exec\n", + "{% if gene_input.raw_value == 'Multi-gene' %}\n", + "\n", + "def create_bokeh_volcano_plot(expr_data:pd.DataFrame, gene_id:str):\n", + " '''\n", + " Given the expression data for a given gene, create an interactive\n", + " volcano plot that shows regulation of gene across all perturbations (drug, dosage, cell line).\n", + " '''\n", + " \n", + " df = expr_data.copy()\n", + " \n", + " # clean columns\n", + " df['FC'] = 2**df['logFC']\n", + "\n", + " # set plot source\n", + " \n", + " plot_source = ColumnDataSource(df.loc[:,['Perturbation','Drug','Dataset','logFC','FC','log10adj.P.Val','PctRank']])\n", + " x,y='logFC','log10adj.P.Val'\n", + " xlabel,ylabel = 'Log2(Fold Change)','-Log10(Adj. p-value)'\n", + " title = f'{gene_id} Regulation'\n", + " hover = HoverTool(tooltips=[(\"Perturbation\", \"@Perturbation\"),\n", + " (\"Drug\", \"@Drug\"),\n", + " (\"Dataset\", \"@Dataset\"),\n", + " (\"Log2(FC)\", \"@logFC\"),\n", + " (\"Fold Change\", \"@FC\"),\n", + " ('-Log10(Adj. p-value)',\"@{log10adj.P.Val}{0.00e}\"),\n", + " (\"Normalized Rank\", \"@PctRank\")])\n", + "\n", + " \n", + " \n", + " # define figure\n", + " p = figure(\n", + " title=title,\n", + " x_axis_label = xlabel,\n", + " y_axis_label = ylabel,\n", + " tools = 'pan,wheel_zoom,box_zoom,reset,save'\n", + " )\n", + "\n", + " # color mapper\n", + " color_mapper = CategoricalColorMapper(palette = Category10[3],\n", + " factors = ['ginkgo', 'tahoe', 'novartis'])\n", + " # plot\n", + " p.scatter(x=x,\n", + " y=y,\n", + " size=8,\n", + " source=plot_source,\n", + " fill_alpha=0.6,\n", + " color = {'field':'Dataset', 'transform': color_mapper})\n", + " p.add_tools(hover)\n", + " show(p)\n", + "\n", + "for g in query_geneset:\n", + " if g in all_genes:\n", + " create_bokeh_volcano_plot(all_genes[g], g)\n", + "{% endif %}" ] }, { @@ -1332,13 +1785,11 @@ "\n", "[4] Subramanian, Aravind, Rajiv Narayan, Steven M. Corsello, David D. Peck, Ted E. Natoli, Xiaodong Lu, Joshua Gould, et al. 2017. “A next Generation Connectivity Map: L1000 Platform and the First 1,000,000 Profiles.” Cell 171 (6): 1437-1452.e17.\n", "\n", - "[5] “LINCS L1000 Reverse Search.” n.d. Accessed September 5, 2025. https://lincs-reverse-search-dashboard.dev.maayanlab.cloud/.\n", - "\n", - "[6] Mitchell, Dylan C., Miljan Kuljanin, Jiaming Li, Jonathan G. Van Vranken, Nathan Bulloch, Devin K. Schweppe, Edward L. Huttlin, and Steven P. Gygi. 2023. “A Proteome-Wide Atlas of Drug Mechanism of Action.” Nature Biotechnology 41 (6): 845–57.\n", + "[5] Mitchell, Dylan C., Miljan Kuljanin, Jiaming Li, Jonathan G. Van Vranken, Nathan Bulloch, Devin K. Schweppe, Edward L. Huttlin, and Steven P. Gygi. 2023. “A Proteome-Wide Atlas of Drug Mechanism of Action.” Nature Biotechnology 41 (6): 845–57.\n", "\n", - "[7] Zhang, Jesse, Airol A. Ubas, Richard de Borja, Valentine Svensson, Nicole Thomas, Neha Thakar, Aidan Winters, et al. 2025. “Tahoe-100M: A Giga-Scale Single-Cell Perturbation Atlas for Context-Dependent Gene Function and Cellular Modeling.” bioRxiv. https://doi.org/10.1101/2025.02.20.639398.\n", + "[6] Zhang, Jesse, Airol A. Ubas, Richard de Borja, Valentine Svensson, Nicole Thomas, Neha Thakar, Aidan Winters, et al. 2025. “Tahoe-100M: A Giga-Scale Single-Cell Perturbation Atlas for Context-Dependent Gene Function and Cellular Modeling.” bioRxiv. https://doi.org/10.1101/2025.02.20.639398.\n", "\n", - "[8] Wang, Zichen, Edward He, Kevin Sani, Kathleen M. Jagodnik, Moshe C. Silverstein, and Avi Ma’ayan. 2019. “Drug Gene Budger (DGB): An Application for Ranking Drugs to Modulate a Specific Gene Based on Transcriptomic Signatures.” Bioinformatics (Oxford, England) 35 (7): 1247–48." + "[7] Wang, Zichen, Edward He, Kevin Sani, Kathleen M. Jagodnik, Moshe C. Silverstein, and Avi Ma’ayan. 2019. “Drug Gene Budger (DGB): An Application for Ranking Drugs to Modulate a Specific Gene Based on Transcriptomic Signatures.” Bioinformatics (Oxford, England) 35 (7): 1247–48." ] } ], diff --git a/appyters/Drug_Gene_Budger2/multi_gene_utils.py b/appyters/Drug_Gene_Budger2/multi_gene_utils.py new file mode 100644 index 00000000..4e21e41b --- /dev/null +++ b/appyters/Drug_Gene_Budger2/multi_gene_utils.py @@ -0,0 +1,169 @@ +import pandas as pd +import numpy as np +import random +from tqdm import tqdm +import warnings +import itertools +import os +import sys + +# utils file +import cmap_readers + +def fetch_cmap_data(input_set): + ''' + input_set: input gene list (iterable) + + output: dictionary of gene-specific dataframes, concatenated across all resources + ''' + ginkgo_cell_types = ['human_epithelial_melanocytes', 'human_dermal_fibroblast', 'human_aortic_smooth_muscle_cells', 'human_skeletal_muscle_myoblasts','A549'] + novartis_perturbs = {g:[] for g in input_set} + # lincs_perturbs = {g:[] for g in input_set} + ginkgo_perturbs = {g:[] for g in input_set} + + not_found = {} + for g in tqdm(input_set): + novartis_perturbs[g] = cmap_readers.prepare_novartis_data(g) + # lincs_perturbs[g] = cmap_readers.prepare_lincs_data(g) + ginkgo_perturbs[g] = cmap_readers.prepare_ginkgo_data_df(g, ginkgo_cell_types) + + tahoe_perturbs = cmap_readers.retrieve_tahoe_data(input_set) + # create single df for all resources + cols_to_keep = ['Gene','Perturbation','Drug','logFC','GeneDir','PctRank', 'log10adj.P.Val'] + dataset_names = ['tahoe','novartis','ginkgo'] #'lincs' + all_genes = {gene:None for gene in input_set} + for g in all_genes.keys(): + all_df = pd.DataFrame() + for i,pdict in enumerate([tahoe_perturbs, novartis_perturbs, ginkgo_perturbs]): #lincs_perturbs + if pdict[g] is None: + # print(f'{g} not found in {dataset_names[i]}') + if dataset_names[i] in not_found: + not_found[dataset_names[i]].append(g) + else: + not_found[dataset_names[i]] = [g] + continue + df = pdict[g][cols_to_keep] + df['Dataset'] = dataset_names[i] + if i == 0: + all_df = df + else: + all_df = pd.concat([all_df, df], ignore_index=True) + all_genes[g] = all_df + return all_genes, not_found + +def clean_drugname(d): + if d == None: + return d + else: + return d.casefold() + +def add_pubchem_col(df, cid_df): + ''' + df: single-gene dataframe + cid_df: pubchem CID dataframe + + output: dataframe with CID column + ''' + df['DrugMatch'] = df['Drug'].apply(clean_drugname) + df = df.merge(cid_df, on='DrugMatch', how='left') + df['DrugGroup'] = df['CID'].fillna(df['DrugMatch']) + df = df.drop(columns=['DrugMatch']) + return df + +def rank_drugs(df, direction, pubchem_ids): + ''' + df: CMAP dataframe + direction: up or down regulation + + output: dataframe ranked by up/down regulating signatures + ''' + tmp = df.copy() + # filter by direction + tmp = tmp[tmp['GeneDir']==direction] + # add drug matching column for downstream multi-gene analysis + tmp = add_pubchem_col(tmp, pubchem_ids) + # rank drugs by adjusted p-value + tmp = tmp.sort_values(['log10adj.P.Val','PctRank'], ascending=[False,True], ignore_index=True) + tmp['IndexRank'] = tmp.index + 1 + tmp['Rank'] = tmp['IndexRank'].rank(pct=True, ascending=True) + return tmp.sort_values('Rank', ascending=True) + +def agg_drug_rankings(df): + ''' + df: single gene dataframe with signature rankings for up or down regulation + + output: dataframe with signature rankings averaged for each drug + ''' + agg_rankings = df.groupby('DrugGroup').agg( + MeanRank=('Rank','mean'), + NSigs=('Perturbation','size'), + NResources = ('Dataset', 'nunique')) \ + .sort_values('MeanRank').reset_index() + + drug_match = df[['Drug','DrugGroup']].drop_duplicates(subset='DrugGroup', keep='first', ignore_index=True) + agg_rankings = agg_rankings.merge(drug_match, on='DrugGroup', how='left') + return agg_rankings + +def single_gene_rank(gene_cmap_dict, input_set, pubchem_ids): + ''' + gene_cmap_dict: dictionary from fetch_cmap + input_set: input gene set + pubchem_ids: dataframe of pubchem IDs + + Rank drugs for all genes in input set individually + + out: dictionary of drug ranks for individual genes + ''' + # prepare drug rank output object + drug_ranks = {g:{dir:None for dir in ['Up','Dn']} for g in input_set} + # genes + remove = [] + for g in drug_ranks.keys(): + # no CMAP resources had data for the gene + if gene_cmap_dict[g].empty: + remove.append(g) + continue + # direction + for dir in drug_ranks[g].keys(): + rank_df = rank_drugs(gene_cmap_dict[g], direction=dir, pubchem_ids=pubchem_ids) + drug_ranks[g][dir]= agg_drug_rankings(rank_df) + # remove genes for which there was no CMAP data + drug_ranks = {g:data for g,data in drug_ranks.items() if g not in remove} + return drug_ranks + +def combine_gene_results (agg_rank_dict, direction): + ''' + agg_rank_dict: dictionary with drug rankings for multiple genes + direction: 'Up' or 'Dn' regulation + + output: dataframe with drug rankings for given direction and method for multiple genes + ''' + results = {'gene':[], + 'DrugGroup':[], + 'Drug':[], + 'MeanRank':[]} + for g in agg_rank_dict.keys(): + results['gene'].extend([g] * agg_rank_dict[g][direction].shape[0]) + results['DrugGroup'].extend(agg_rank_dict[g][direction]['DrugGroup'].to_list()) + results['Drug'].extend(agg_rank_dict[g][direction]['Drug'].to_list()) + results['MeanRank'].extend(agg_rank_dict[g][direction]['MeanRank'].to_list()) + return pd.DataFrame(results) + +def get_multi_gene_ranks (agg_drug_ranks, pubchem_ids): + ''' + combined_df: dataframe from combine_gene_results + + output: dataframe of ranked drugs, scores averaged across genes + ''' + multi_gene_ranks = {direction: None for direction in ['Up','Dn']} + combined_gene_results = {direction: None for direction in ['Up','Dn']} + + for dir in ['Up','Dn']: + combined_df = combine_gene_results(agg_drug_ranks, dir) + mg_ranks = combined_df.groupby(['DrugGroup']).agg(MultiGeneRank = ('MeanRank','mean'), NGenes = ('gene', 'nunique')).reset_index().sort_values('MultiGeneRank', ascending=True) + mg_ranks = mg_ranks.merge(pubchem_ids, left_on='DrugGroup',right_on='CID',how='left').drop(columns='CID') + combined_df = combined_df.merge(pubchem_ids, left_on='DrugGroup',right_on='CID',how='left').drop(columns='CID') + multi_gene_ranks[dir] = mg_ranks + combined_gene_results[dir] = combined_df + + return combined_gene_results, multi_gene_ranks \ No newline at end of file diff --git a/appyters/Drug_Gene_Budger2/requirements.txt b/appyters/Drug_Gene_Budger2/requirements.txt index 32b67753..1ea52bb7 100644 --- a/appyters/Drug_Gene_Budger2/requirements.txt +++ b/appyters/Drug_Gene_Budger2/requirements.txt @@ -2,9 +2,11 @@ appyter @ git+https://github.com/Maayanlab/appyter numpy pandas pyarrow +polars requests IPython upsetplot matplotlib matplotlib_venn -bokeh \ No newline at end of file +bokeh +seaborn \ No newline at end of file diff --git a/appyters/Drug_Gene_Budger2/static/DR-logo-small.png b/appyters/Drug_Gene_Budger2/static/DR-logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..30fc450e23867492e1938ec74878f4bacc14bd98 GIT binary patch literal 38902 zcmY(r1zc2Jv_8xX0}S2W-QCjNNVjx@G}171cZbp?UD6@aEl3H1(jg)#A@HBU_ul(` z@Pir7*=O$+&wAEc`Hogh0x6#?`}yN`QllgNsHSg^G$w)Wh2Lg_f-Rf0sl5 z5~H#A@^X8@$?4$t^4_%*n;W$-~1A9l`GD=i+7I%kJVy`)`u}nMc;f z)5^oa&C9{ng$g#Wg{7;vmlzEVY@z@C`X{HCgYEyVGM&js^Tc3od0V!aTH?HA4qU; zl5k40QaZkXpFv0k*1DOG)$78Qhwt8re&T|c!2n`V#Y}Wn5zTocV4E0vzj}2+Vwml{ z*l*#DpF!2gLW2^gtd&X@#bjY_?(y!hpqurv|8%iiY*B1+A+vi>xL^FiwAbHzvv)J- zPw=0De6o@fFcUBiLX+YID)23WpRgh#37cW??kJ`(a&m%C%DnbNNK$Pr`mhV|@J@ZpGlvU`*7S2G^Dyx*#bR{%9Z6_{r%_~kp*L1dhdpX-`iyljHxt)Vb_g%k; zQ*v3xEK(fx8~R%g3KK5(!pB!iK?20OTCqz*EYF4kfDA&?3Vi9XM_Qco-FwlMOT;Mr z$-J;LmJhX(7^6UyxFyvMm6Y3&spC%3akHxKKU@z+Hc)~<{+yR`2XB~28RTyQEXVG* zf7tzEohSt~FyU6lYCQ`d4$iroPjO*O%^7Xvyp}!So}(?UDWcoV9g6taXysjTe{t32 zz($1QJsNv}RWF7fM0RI)5I$#+%^zYFlQUXEcp;4+B+VZR^!;q6@cY8_Ky1#qn9c^{H;?77 zw@ID1eN0KidAD+@!g*k*)5e5>wYX}%V^(Z{x%1tst%cWOC<-`k=w4k!lUe=6?^WAe zDvigC0dq1MX=jB+WOH)VZ>ErpmYO1xk|R0yitn3kt-! zPhQPU#m$4~vQFcApCe)fRii2bI)%$J|NTVkteT#NrIM=2zGs-_W z@h&Ty8mUeYoo7{;q{r±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 literal 0 HcmV?d00001 diff --git a/appyters/Drug_Gene_Budger2/static/dgb_logo.png b/appyters/Drug_Gene_Budger2/static/dgb_logo.png deleted file mode 100644 index 794aff94bb24a69ede99662da94f3b5487cfbd11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91366 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
H^2J*KPFNlmrdy1X{=V0YYt5ZFF@t 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

opPO}dA_XEcG2#MPo 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

k4DbHE?JI`8W4vh0qRb^1o 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

(riPf96I0a4PweEq<$I1 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 Cwe!CK diff --git a/appyters/Drug_Gene_Budger2/templates/form.j2 b/appyters/Drug_Gene_Budger2/templates/form.j2 index b9eab39f..8a9e647a 100644 --- a/appyters/Drug_Gene_Budger2/templates/form.j2 +++ b/appyters/Drug_Gene_Budger2/templates/form.j2 @@ -18,8 +18,8 @@

From da49a6108a17a893939a4619a321bb1e85eb3217 Mon Sep 17 00:00:00 2001 From: Lily Taub <115661359+lilydtaub@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:50:36 -0500 Subject: [PATCH 2/4] update logo size --- appyters/Drug_Gene_Budger2/appyter.json | 4 ++-- .../Drug_Gene_Budger2/static/DR-logo-small.png | Bin 38902 -> 0 bytes appyters/Drug_Gene_Budger2/static/DR_logo.png | Bin 0 -> 56692 bytes 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 appyters/Drug_Gene_Budger2/static/DR-logo-small.png create mode 100644 appyters/Drug_Gene_Budger2/static/DR_logo.png diff --git a/appyters/Drug_Gene_Budger2/appyter.json b/appyters/Drug_Gene_Budger2/appyter.json index 430cd63b..72152930 100644 --- a/appyters/Drug_Gene_Budger2/appyter.json +++ b/appyters/Drug_Gene_Budger2/appyter.json @@ -2,9 +2,9 @@ "$schema": "https://raw.githubusercontent.com/MaayanLab/appyter-catalog/main/schema/appyter-validator.json", "name": "Drug_Gene_Budger2", "title": "DrugRanger", - "version": "0.0.9", + "version": "0.1.0", "description": "An appyter that retrieves drugs that up-regulate and down-regulate a single input gene or gene set across Connectivity Mapping datasets", - "image": "DR-logo-small.png", + "image": "DR_logo.png", "authors": [ { "name": "Lily Taub", diff --git a/appyters/Drug_Gene_Budger2/static/DR-logo-small.png b/appyters/Drug_Gene_Budger2/static/DR-logo-small.png deleted file mode 100644 index 30fc450e23867492e1938ec74878f4bacc14bd98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38902 zcmY(r1zc2Jv_8xX0}S2W-QCjNNVjx@G}171cZbp?UD6@aEl3H1(jg)#A@HBU_ul(` z@Pir7*=O$+&wAEc`Hogh0x6#?`}yN`QllgNsHSg^G$w)Wh2Lg_f-Rf0sl5 z5~H#A@^X8@$?4$t^4_%*n;W$-~1A9l`GD=i+7I%kJVy`)`u}nMc;f z)5^oa&C9{ng$g#Wg{7;vmlzEVY@z@C`X{HCgYEyVGM&js^Tc3od0V!aTH?HA4qU; zl5k40QaZkXpFv0k*1DOG)$78Qhwt8re&T|c!2n`V#Y}Wn5zTocV4E0vzj}2+Vwml{ z*l*#DpF!2gLW2^gtd&X@#bjY_?(y!hpqurv|8%iiY*B1+A+vi>xL^FiwAbHzvv)J- zPw=0De6o@fFcUBiLX+YID)23WpRgh#37cW??kJ`(a&m%C%DnbNNK$Pr`mhV|@J@ZpGlvU`*7S2G^Dyx*#bR{%9Z6_{r%_~kp*L1dhdpX-`iyljHxt)Vb_g%k; zQ*v3xEK(fx8~R%g3KK5(!pB!iK?20OTCqz*EYF4kfDA&?3Vi9XM_Qco-FwlMOT;Mr z$-J;LmJhX(7^6UyxFyvMm6Y3&spC%3akHxKKU@z+Hc)~<{+yR`2XB~28RTyQEXVG* zf7tzEohSt~FyU6lYCQ`d4$iroPjO*O%^7Xvyp}!So}(?UDWcoV9g6taXysjTe{t32 zz($1QJsNv}RWF7fM0RI)5I$#+%^zYFlQUXEcp;4+B+VZR^!;q6@cY8_Ky1#qn9c^{H;?77 zw@ID1eN0KidAD+@!g*k*)5e5>wYX}%V^(Z{x%1tst%cWOC<-`k=w4k!lUe=6?^WAe zDvigC0dq1MX=jB+WOH)VZ>ErpmYO1xk|R0yitn3kt-! zPhQPU#m$4~vQFcApCe)fRii2bI)%$J|NTVkteT#NrIM=2zGs-_W z@h&Ty8mUeYoo7{;q{r±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 literal 0 HcmV?d00001 From caa6e5f1bc15bb08d6f7562df984f959eb3edad1 Mon Sep 17 00:00:00 2001 From: Lily Taub <115661359+lilydtaub@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:55:11 -0500 Subject: [PATCH 3/4] clear notebook output --- .../Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb b/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb index 2dfe8af9..5c57af9b 100644 --- a/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb +++ b/appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb @@ -1245,15 +1245,7 @@ "execution_count": null, "id": "e275310b", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "UsageError: Cell magic `%%appyter` not found.\n" - ] - } - ], + "outputs": [], "source": [ "%%appyter code_exec\n", "{% if gene_input.raw_value == 'Single Gene' %}\n", From e34cf012847dcb737b51aa7d1480e44bef21fac0 Mon Sep 17 00:00:00 2001 From: Lily Taub <115661359+lilydtaub@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:00:24 -0500 Subject: [PATCH 4/4] add tqdm to requirements --- appyters/Drug_Gene_Budger2/requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appyters/Drug_Gene_Budger2/requirements.txt b/appyters/Drug_Gene_Budger2/requirements.txt index 1ea52bb7..36e48940 100644 --- a/appyters/Drug_Gene_Budger2/requirements.txt +++ b/appyters/Drug_Gene_Budger2/requirements.txt @@ -9,4 +9,5 @@ upsetplot matplotlib matplotlib_venn bokeh -seaborn \ No newline at end of file +seaborn +tqdm \ No newline at end of file