From single-cell transcriptomics to precision oncology.
PERCEPTION (PERsonalized single-Cell Expression-based Planning for Treatments In ONcology) predicts patient response and resistance to cancer treatment using single-cell expression profiles. It trains elastic-net models on DepMap cell-line data, then applies them to patient single-cell data for clone-level drug sensitivity and patient-level response stratification.
Status updates live as you load data, train and predict. Click any step to jump to it.
Real-time overview of loaded data.
Seamlessly load and cache DepMap cell line expression and drug response data for model training.
Train drug response models using glmnet (elastic net) or random forest with cross-validated hyperparameter tuning.
Predict drug sensitivity at single-cell clone resolution, then aggregate to patient-level response.
Generate UMAP plots, clone distribution stacks, ROC curves, and comprehensive patient response panels.
Sinha, S., Vegesna, R., Mukherjee, S.
et al. PERCEPTION predicts patient response and resistance to treatment using single-cell transcriptomics of their tumors.
Nat Cancer
5, 938-952 (2024).
DOI: 10.1038/s43018-024-00756-7
github.com/ruppinlab/PERCEPTION (original Python implementation by Sinha et al.)
github.com/WangLabCSU/PERCEPTIONx
Install with:
remotes::install_github('WangLabCSU/PERCEPTIONx')
Single-cell expression matrix (genes × cells). Raw counts or normalized values. CSV / TSV / TXT / Excel / RDS format.
Header is auto-detected as the first row with ≥2 columns (gene / cell names); single-field title/comment rows above it are skipped. Avoid a multi-column title row above the header.
CELL_001 CELL_002 CELL_003 TP53 2.1 0.0 5.3 BRCA1 0.0 1.8 3.2 EGFR 4.7 2.1 0.0
File with columns:
cell_id
and
patient_id
(case-insensitive). Maps each cell (or clone) to its patient. In Clone-level mode the data is auto-prepared without clustering. CSV / TSV / TXT / Excel / RDS.
Header is auto-detected as the first row with ≥2 columns (cell_id / patient_id); single-field title/comment rows above it are skipped.
cell_id patient_id CELL_001 PAT_001 CELL_002 PAT_001 CELL_003 PAT_002
cell_id patient_id count CLONE_001 PAT_001 450 CLONE_002 PAT_001 50 CLONE_003 PAT_002 300count = real cell number per clone; proportions are then shown accurately. Without it, clone proportions fall back to equal (1/n).
Patient response data for evaluation. File with columns: patient, response (Responder/Non-responder, case-insensitive). CSV / TSV / TXT / Excel / RDS.
Header is auto-detected as the first row with ≥2 columns (patient / response); single-field title/comment rows above it are skipped.
patient response PAT_001 Responder PAT_002 Non-responder PAT_003 Responder
Run Seurat clustering to automatically detect transcriptional subclones, compute clone-level mean expression, rank-normalize the data, and build the clone abundance table required for prediction.
Method
: UMAP (default) preserves global structure and is faster with large datasets;
t-SNE emphasizes fine local neighborhoods and may reveal finer substructure at the cost of speed.
Resolution
controls clustering granularity. Higher values produce more clones (finer subclones);
lower values produce fewer, broader clones. Default 0.8 suits most datasets.
PCA Dims
sets the number of principal components used for clustering.
Higher values capture more biological signal but may include noise. Default 10 is standard for scRNA-seq.
Load DepMap reference datasets including bulk expression, single-cell expression, drug response (AUC), and cell line annotations. This is a filtered version derived from the original DepMap release used in the PERCEPTION article, with unused tables and objects removed for efficiency.
To download manually, visit GitHub Release .Load pre-trained drug response models from the PERCEPTIONx GitHub Release repository. 44 models are available, each trained on DepMap bulk expression with Elastic Net regression and 3-fold cross-validation. Models are cached locally after first download.
To download manually, visit GitHub Release .New to the app? Pick a tour below. It opens as an interactive slideshow in the center of the screen.
Load the built-in demo data, run the predictions, then draw and export the plots - nothing to upload or train.
Walk through uploading expression / mapping / response files, (optional) training, prediction and how to read the plots.
Detailed reference for every parameter and format sits in the sections below.
Find a compound, see if a model is ready, or train it yourself
This is the drug screen shipped with our DepMap data (PRISM): 1448 compounds , most of them research tool molecules rather than clinical drugs. The 44 pre-trained ones are clinically relevant and come with ready-made models. Any other compound can be trained on the Train tab once DepMap is loaded.
What data you need and how to prepare it
Downloaded and loaded via the
Download & Load
button on the Data tab (or a pre-downloaded .RDS upload). Includes bulk expression, single-cell expression, and drug response (AUC) data from DepMap.
A gene x cell single-cell expression matrix. Raw counts or normalized values. Rank normalization is applied automatically during Seurat clustering.
User upload
File with columns:
cell_id
and
patient_id
(case-insensitive). Maps each cell to its patient. Clones are auto-detected via Seurat clustering. Accepts CSV / TSV / TXT / Excel / RDS.
(Optional) File with columns:
patient
,
response
(Responder/Non-responder, case-insensitive). Required for ROC curves and boxplots. Accepts CSV / TSV / TXT / Excel / RDS.
Configure your model training
Must match a drug in DepMap secondary_prism data (e.g. abemaciclib, erlotinib). Use the dropdown on the Data tab for the full list of 44 supported drugs.
Filter cell lines by cancer type. Use
PanCan
for all cancer types, or specify e.g.
Breast
,
Lung
.
Exclude specific cancer types from training. Set to
PanCan
to exclude none.
Gene symbols for feature selection. Leave empty to use all genes from DepMap (~15K). Should overlap with your scRNA data for prediction.
Number of top-ranked features (by Pearson correlation) to use. Default: 100. Higher = more features but slower.
glmnet
(elastic net, recommended) with 3-fold CV, or
rf
(random forest).
How clone-level predictions become patient-level
Weighted maximum across clones, emphasizing the most resistant clones (recommended).
Weighted average across all clones, weighted by clone proportion.
Takes the most sensitive clone's prediction (lowest viability, pessimistic).
Takes the most resistant clone's prediction (highest viability, optimistic).
Available plot types and their data requirements
Stacked bar chart showing clone proportions per patient.
Needs: ClonesLollipop chart of predicted viability per clone.
Needs: Predictions + ClonesReceiver Operating Characteristic curve for response prediction.
Needs: Patient Pred + ResponseBoxplot comparing predicted viability between responders and non-responders.
Needs: Patient Pred + Response2D embedding (UMAP/t-SNE) colored by clone membership.
Needs: Clones + Embedding2D embedding (UMAP/t-SNE) colored by predicted drug viability.
Needs: Predictions + Embedding2D embedding (UMAP/t-SNE) colored by selected gene expression.
Needs: Predictions + Expression + EmbeddingCommon questions and answers
BRCA1
vs
BRCA.1
).
rank_normalization_mat()
to rank-normalize your expression matrix. This is the same preprocessing applied to DepMap data.
If you use this package, please cite both the package and the original PERCEPTION study: