Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions appyters/Drug_Gene_Budger2/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Drug Gene Budger (DGB) 2
# Dr. Gene Budger (DGB) 2

This appyter takes a single gene as input and identifies up-regulating and down-regulating drugs from three connectivity mapping resources.
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:

- [Ginkgo GDPx1 and GDPx2 datasets](https://huggingface.co/ginkgo-datapoints)

Expand Down
4 changes: 2 additions & 2 deletions appyters/Drug_Gene_Budger2/appyter.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"$schema": "https://raw.githubusercontent.com/MaayanLab/appyter-catalog/main/schema/appyter-validator.json",
"name": "Drug_Gene_Budger2",
"title": "Drug Gene Budger (DGB) 2",
"version": "0.0.1",
"title": "Dr. Gene Budger (DGB) 2",
"version": "0.0.3",
"description": "An appyter that retrieves drugs that up-regulate and down-regulate a single input gene across Connectivity Mapping datasets",
"image": "dgb_logo.png",
"authors": [
Expand Down
121 changes: 119 additions & 2 deletions appyters/Drug_Gene_Budger2/drug_gene_budger2_appyter.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"- Novartis DRUG-seq: Differential: Limma-Trend based differential expression results for 4,343 drugs. \n",
"- LINCS L1000 Chemical Perturbations: Queries the [LINCS Reverse Search Dashboard](https://lincs-reverse-search-dashboard.dev.maayanlab.cloud/) for pre-computed characteristic direction-based differential gene expression signatures from RNA-seq-like LINCS L1000 Expression Profiles covering 33,571 drugs.\n",
"\n",
"The Ginkgo dataset includes 4 primary cell types (eithelial 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."
"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."
]
},
{
Expand All @@ -103,6 +103,9 @@
"from upsetplot import from_contents, plot\n",
"from matplotlib import pyplot\n",
"\n",
"## Venn Diagram\n",
"from matplotlib_venn import venn3\n",
"\n",
"## Volcano Plot\n",
"from bokeh.plotting import figure, show\n",
"from bokeh.models import ColumnDataSource, HoverTool, LinearColorMapper\n",
Expand Down Expand Up @@ -279,7 +282,7 @@
"id": "df830837",
"metadata": {},
"source": [
"## Rank Drugs"
"## Rank Tables"
]
},
{
Expand Down Expand Up @@ -723,6 +726,100 @@
"display(HTML(download_link(overlapping_down_logFC, 'overlapping_drugs_logfc_DnReg.tsv')))\n"
]
},
{
"cell_type": "markdown",
"id": "2e7c13dd",
"metadata": {},
"source": [
"## Venn Diagrams\n",
"\n",
"The venn diagrams show the overlap among either up-regulating or down-regulating drugs across the three datasets Novartis DRUG-seq, LINCS L1000, and Ginkgo (all cell types grouped). "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a43d7c8d",
"metadata": {},
"outputs": [],
"source": [
"# combine top up and down drugs across Ginkgo cell types\n",
"all_ginkgo_up = set()\n",
"all_ginkgo_down = set()\n",
"for k,v in top_up.items():\n",
" if re.search('ginkgo',k):\n",
" all_ginkgo_up = all_ginkgo_up.union(v)\n",
" all_ginkgo_down = all_ginkgo_down.union(top_down[k])\n",
"venn_up = {\n",
" 'novartis': top_up['novartis'],\n",
" 'lincs' : top_up['lincs_l1000'],\n",
" 'ginkgo' : all_ginkgo_up\n",
"}\n",
"venn_down = {\n",
" 'novartis': top_down['novartis'],\n",
" 'lincs' : top_down['lincs_l1000'],\n",
" 'ginkgo' : all_ginkgo_down\n",
"}\n",
"\n",
"def print_overlap(venn_dict):\n",
" gn = venn_dict['ginkgo'].intersection(venn_dict['novartis'])\n",
" gl = venn_dict['ginkgo'].intersection(venn_dict['lincs'])\n",
" nl = venn_dict['novartis'].intersection(venn_dict['lincs'])\n",
" gnl = venn_dict['ginkgo'].intersection(venn_dict['novartis']).intersection(venn_dict['lincs'])\n",
" if len(gn) > 0:\n",
" display_markdown(f'Novartis and Ginkgo: {gn.difference(gnl)}', raw=True)\n",
" if len(nl) > 0:\n",
" display_markdown(f'Novartis and LINCS L1000: {nl.difference(gnl)}', raw=True)\n",
" if len(gl) > 0:\n",
" display_markdown(f'LINCS L1000 and Ginkgo: {gl.difference(gnl)}', raw=True)\n",
" if len(gnl) > 0:\n",
" display_markdown(f'LINCS L1000, Ginkgo and Novartis: {gnl}', raw=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e275310b",
"metadata": {},
"outputs": [],
"source": [
"display_markdown(f'Overlap of top {query_gene} up-regulating drugs across sources', raw=True)\n",
"venn3(subsets=(venn_up['novartis'], venn_up['lincs'], venn_up['ginkgo']),\n",
" set_labels=('Novartis', 'LINCS L1000', 'Ginkgo'));"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "951ac257",
"metadata": {},
"outputs": [],
"source": [
"print_overlap(venn_up)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1f1f3962",
"metadata": {},
"outputs": [],
"source": [
"display_markdown(f'Overlap of top {query_gene} down-regulating drugs across sources', raw=True)\n",
"venn3(subsets=(venn_down['novartis'], venn_down['lincs'], venn_down['ginkgo']),\n",
" set_labels=('Novartis', 'LINCS L1000', 'Ginkgo'));"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c53651f3",
"metadata": {},
"outputs": [],
"source": [
"print_overlap(venn_down)"
]
},
{
"cell_type": "markdown",
"id": "c088c17f",
Expand Down Expand Up @@ -862,6 +959,26 @@
"source": [
"create_bokeh_volcano_plot(novartis_de, query_gene, '', 'Novartis')"
]
},
{
"cell_type": "markdown",
"id": "ba0c6439",
"metadata": {},
"source": [
"## References\n",
"\n",
"[1] Baugh, Lauren, Sébastien Vigneau, Srijani Sridhar, Sarah Boswell, George Pilitsis, John Bradley, Olga Allen, et al. 2025. “Mapping the Transcriptional Landscape of Drug Responses in Primary Human Cells Using High-Throughput DRUG-Seq.” bioRxiv. https://doi.org/10.1101/2025.06.03.657593.\n",
"\n",
"[2] Datapoints, Ginkgo. n.d. “GDPx1.” Accessed September 5, 2025. https://huggingface.co/datasets/ginkgo-datapoints/GDPx1.\n",
"\n",
"[3] Hadjikyriacou, Andrea, Chian Yang, Martin Henault, Robin Ge, Leandra Mansur, Alicia Lindeman, Carsten Russ, et al. 2025. “Novartis/DRUG-Seq U2OS MoABox Dataset.” Zenodo. https://doi.org/10.5281/ZENODO.14291446.\n",
"\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] 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."
]
}
],
"metadata": {
Expand Down
1 change: 1 addition & 0 deletions appyters/Drug_Gene_Budger2/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ requests
IPython
upsetplot
matplotlib
matplotlib_venn
bokeh
Binary file modified appyters/Drug_Gene_Budger2/static/dgb_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.