An end-to-end machine-learning pipeline that asks whether a cancer cell line's metabolism alone carries enough signal to (1) identify its cancer type and (2) predict how it will respond to drugs — and then uses that signal to surface lineage-specific drug candidates.
The pipeline independently surfaced Belinostat, an FDA-approved peripheral T-cell lymphoma therapy, as a top candidate for the Lymphoid lineage — a known positive control that validates the approach — and nominated NSC319726 as a follow-up candidate for lymphoid application.
Independent graduate research project. Data: DepMap metabolomics + GDSC1/GDSC2 drug response.
| Result | Value |
|---|---|
| Cell lines modeled (complete 225-metabolite panel, lineages ≥10 lines) | 902 across 20 lineages |
| Drugs modeled (≥50 observed AUC values) | 478 |
| Best lineage classification (Elastic Net F1) | Lymphoid 0.93, Myeloid 0.92 |
| Drugs with a usable metabolite→AUC signal (R² > 0.10 & RMSE < 0.10) | 60 of 478 (12.6%) |
| Convergent top drugs (LASSO ∩ Random Forest) | Methotrexate, APO866, Molibresib — 2 of 3 literature-backed for metabolic mechanism |
| Lineage with most candidate drug-pairs | Lymphoid (consistent with its metabolic distinctiveness) |
All numbers reproduce from a clean run of the notebook (random seed fixed).
225 scaled metabolites per cell line
│
┌─────────────────┴──────────────────┐
▼ ▼
CLASSIFICATION REGRESSION
Which lineage? Which drug response (AUC)?
┌──────────────┐ ┌──────────────┐
│ OvR RandomFor│ │ LASSO │
│ Elastic Net │ │ RandomForest │
└──────┬───────┘ └──────┬───────┘
▼ ▼
per-lineage per-drug
consensus fingerprint ◀── correlate ──▶ consensus fingerprint
│ (which metabolites align a drug to a lineage?) │
└───────────────────┬───────────────────────────────┘
▼
Lineage-specific candidate drugs + imputed AUC for untested lines
Each task pairs a non-linear model (Random Forest) with a linear, sparse model (Elastic Net for classification, LASSO for regression). The two are fused into a consensus metabolic fingerprint — a per-lineage or per-drug vector of metabolite importances — where each model is weighted by its own validated performance (test F1 for classification, R² for regression). A model only shapes a fingerprint to the degree it can actually predict that target. This is the methodological core of the project, and it's what makes the drug→lineage correlation step meaningful: both fingerprints live in the same 225-metabolite space, so correlating them asks "does this drug's mechanism engage the same metabolites that define this cancer type?"
- Preprocess — keep cell lines with a complete 225-metabolite panel, standard-scale metabolites, drop lineages with <10 lines → 902 lines / 20 lineages. Keep drugs with ≥50 AUC values → 478 drugs.
- Classify — One-vs-Rest Random Forest + multinomial Elastic Net predict
lineage_1from metabolites; extract per-lineage consensus fingerprints. - Regress — per-drug LASSO + Random Forest predict AUC from metabolites; extract per-drug consensus fingerprints. Most drugs show little signal; a minority show real, literature-consistent signal.
- Correlate & surface — align drug fingerprints to lineage fingerprints; candidates are drugs that are both fingerprint-aligned (corr > 0.30) and show greater sensitivity in that lineage (lower AUC than the drug's global median).
- Impute & validate — predict AUC for untested cell lines via the R²-weighted consensus; filter to model-agreeing, sensitive Lymphoid calls. Belinostat surfaces as the highest-confidence candidate.
- Belinostat was in the training data. It is used as a positive control, not a de-novo discovery: a known lymphoma drug should rank highly, and it did. That is the validation, not a claim of novelty.
- Most drugs are not predictable from metabolomics alone. Only ~13% clear a modest R²/RMSE bar. The contribution is isolating the minority with real signal.
- Classification rests mostly on Elastic Net. Random Forest alone classifies only a handful of lineages well, and the consensus weighting reflects this.
- Single-omic, cell-line data. Findings are hypothesis-generating. Clinical relevance would require orthogonal data (genomics, expression) and validation.
- Metabolite scaling is fit on the full modeling set. A better approach would be to fit the scaler inside each CV fold. The effect here is small (centering/ scaling only) but it is something I would correct going forward.
metabolomic-drug-response/
├── README.md
├── requirements.txt
├── data/
│ ├── README.md # how DepMap/GDSC export was obtained
│ └── meta_gcd1_and_2.csv # the export used in this analysis
├── notebooks/
│ └── metabolomic_drug_response.ipynb # brief narrative of analysis, demonstrating the pipeline end to end
├── src/
│ ├── data_prep.py # load, scale, filter
│ ├── classification.py # OvR RF + Elastic Net + consensus fingerprints
│ ├── regression.py # per-drug LASSO + RF (+ result caching)
│ └── discovery.py # drug↔lineage correlation, candidates, AUC imputation
├── results/ # cached drug models (git-ignored, regenerated on run)
└── report/
└── metabolic_drug_response_report.pdf # 26-page written analysis with further findings and figures
pip install -r requirements.txtThe classification stage runs in a couple of minutes. The per-drug regression
loop (478 drugs × 2 models) is the expensive step and is cached to disk on
first run, so reruns are fast. Delete results/drug_models.pkl to force a
full recompute from scratch.
Metabolomics and drug-response data are from the
DepMap portal (Broad Institute) and
GDSC (Sanger). The raw export used for analysis is included; data/README.md documents the exact custom-download
settings so anyone can regenerate the identical input. For this project, I
navigated to DepMap's 'Access Current Release' and clicked the 'Custom Downloads'
tab. I checked 'Merge into a single file', 'Metabolomics',
'Drug Sensitivity AUC (Sanger GDSC1)', and 'Drug Sensitivity AUC (Sanger GDSC2)'
, leaving the remain options at their default.
An extensive written report detailing methodology, including additional data tables, figures, and analysis is included as report/metabolic_drug_response_report.pdf.
The notebook notebook/metabolomic_drug_response.ipynb is an overview of the pipeline, while the report showcases the step-by-step investigation of the data and further findings.