PERsister-State In-Silico Targeting — residual-state modelling of single-cell drug response for combination therapy prediction
Companion code for the manuscript:
Meng L.*, Tao J.*, Li Y.*, Luo Y., Lei Z., Zhang D., Chen X., Liu H., Bao Y.†, Hua B.† Residual-state modelling of single-cell drug response identifies a prognostic drug-tolerant persister programme and nominates mechanism-matched combination therapies. Manuscript under review (2026).
* equal contribution; † corresponding authors.
Relapse on targeted therapy is seeded by the tumour cells that survive first-line treatment, not by the bulk population that responds to it. Connectivity-Map methods score candidate drugs by how strongly they reverse a disease signature averaged across cells; applied to combinations, this optimises against cells the first-line agent has already addressed.
PERSIST inserts an explicit in-silico first-line perturbation step between drug scoring and combination nomination. It builds on the single-cell connectivity formulation of scFOCAL (Suter et al., Nat. Commun. 2026) for Stage A and departs from it at the point where combinations are scored:
- Stage A — single-cell × compound Spearman connectivity vs LINCS L1000 (1,679 compounds), per-state pseudo-bulk disease signatures, patient-level weighted first-line ranking.
- Stage B (the contribution) — a single global connectivity cutoff τ* is computed once over all candidate first-line agents, applied uniformly to identify each cell as sensitive or residual, and the surviving residual cell set is then re-scored against every candidate partner drug.
- Stage C — residual-state combination scoring + permutation null + leave-patient-out robustness + cross-cohort transfer.
The framework is applied end-to-end to:
| Cohort | Cancer | Cells | Platform | Source |
|---|---|---|---|---|
| Maynard 2020 | EGFR-mutant NSCLC | 2,102 tumor / 16 pts | Smart-seq2 | Synapse syn21041850 |
| Lambrechts 2018 | NSCLC | mixed | 10x | E-MTAB-6149 |
| Kim 2020 | NSCLC | mixed | 10x | GSE131907 |
| Karaayvaz 2018 | TNBC | 1,190 | Smart-seq2 | GSE118389 |
| Wu 2021 | TNBC | 10,836 | 10x | GSE176078 |
| TCGA-LUAD | LUAD bulk | 506 | bulk RNA-seq | UCSC Xena |
| TCGA-BRCA | BRCA bulk | 1,090 | bulk RNA-seq | UCSC Xena |
| DepMap PRISM 19Q4 | 105 NSCLC lines | n/a | drug screen | depmap.org |
| LINCS L1000 | 1,679 compounds | — | perturbational | scFOCAL bundle |
See REPRODUCE.md for exact access URLs and download instructions for each.
.
├── R/persist/ # Core library
│ ├── core.R # Stage A: pseudo-bulk signatures, connectivity, state×drug
│ ├── residual.R # Stage B: global τ* cutoff, mark_sensitive(), residual scoring
│ └── io.R # I/O helpers
├── experiments/
│ ├── baseline_maynard/ # initial Maynard run (Stage A baseline)
│ ├── baseline_maynard_tme/ # Maynard with TME reference, the canonical run
│ │ ├── run_baseline_v2.R # full Stage A+B+C
│ │ └── rerun_stageBC.R # fast-path: re-run B+C from cached conn matrix
│ ├── algo_compare/
│ │ ├── run_persist_vs_baseline.R # 0/30 overlap, permutation null
│ │ ├── run_hp_sweep.R # hyperparameter robustness
│ │ └── run_permutation_null.R # 1000-iter null on 13,014-pair intersection
│ ├── leave_th185_out/ # single-patient robustness (Stage A robust, c8 patient-driven)
│ ├── tcga_luad_c8/ # c8 signature → TCGA-LUAD survival
│ │ ├── run_tcga_c8_km.R # OS KM + Cox (all-LUAD, EGFR-mut subset)
│ ├── tcga_brca_c8/ # c8 signature → TCGA-BRCA survival (orthogonal context)
│ ├── clinical_km/
│ │ └── run_c8_pfs.R # PFS in Maynard responders
│ ├── depmap_prism_v1/
│ │ └── run_v1_akti_egfrmut.R # AKT-i class-level EGFR-mut selectivity (sign test)
│ ├── cross_cohort_lambrechts/ # Lambrechts NSCLC transfer
│ ├── cross_cohort_kim2020/ # Kim 2020 NSCLC transfer
│ ├── karaayvaz_tnbc/ # TNBC application (Smart-seq2)
│ └── wu2021_tnbc_xref/ # TNBC application (10x)
├── scripts/
│ └── make_figures.R # main-text figures
├── assets/figures/ # rendered figures (PDF + PNG + TIFF)
├── install_deps.R # R package installer
├── LICENSE # MIT (code only)
├── REPRODUCE.md # step-by-step reproduction
└── README.md # this file
- R ≥ 4.2 (tested on 4.3.2)
- ~16 GB RAM (Maynard Stage A connectivity takes ~12 GB peak)
- ~10 GB disk for raw inputs + intermediate products
source("install_deps.R")This installs the R packages listed in install_deps.R (Matrix, dplyr, readr, survival, survminer, ggplot2, Seurat, etc.).
The connectivity matrix for the Maynard canonical run is the expensive step (~45 min on a 16-core M-series Mac). If you have experiments/baseline_maynard_tme/outputs/connectivity_matrix.rds already (regenerate via run_baseline_v2.R), you can re-run only Stage B + C in ~2 minutes:
setwd("experiments/baseline_maynard_tme")
source("rerun_stageBC.R")This regenerates combinations_full.tsv, top30.tsv, and egfr_tki_top20.tsv.
See REPRODUCE.md for the full step-by-step procedure including data downloads, preprocessing, and which figure each experiment generates.
If you use PERSIST, please cite:
@article{meng2026persist,
title={Residual-state modelling of single-cell drug response identifies a prognostic
drug-tolerant persister programme and nominates mechanism-matched
combination therapies},
author={Meng, Linghan and Tao, Jingna and Li, Yue and Luo, Yue and Lei, Zehang
and Zhang, Di and Chen, Xin and Liu, Haixiao and Bao, Yanju and Hua, Baojin},
note={Manuscript under review},
year={2026}
}PERSIST builds on scFOCAL (Suter et al. Nat. Commun. 2026) and the Connectivity Map / LINCS L1000 program (Subramanian et al. Cell 2017). Please cite those as well when appropriate.
Code: MIT (see LICENSE).
Data: each source dataset remains under its original license — see REPRODUCE.md for per-source terms.
- Corresponding: Yanju Bao, M.D., Ph.D. —
byjtxyx@163.com - Co-corresponding: Baojin Hua, M.D., Ph.D. —
huabaojinxs@126.com - Code questions: open a GitHub Issue or contact the first authors.
We thank the Suter et al. group for the scFOCAL framework, the LINCS / NIH Common Fund for the L1000 perturbational atlas, the Maynard, Karaayvaz, Wu, Lambrechts, and Kim laboratories for the single-cell cohorts, TCGA for the bulk RNA-seq atlases, and DepMap / Broad Institute for the PRISM drug-response data.