Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PERSIST

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.


Overview

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:

  1. 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.
  2. 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.
  3. 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.


Repository layout

.
├── 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

Quick start

Requirements

  • 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

Install dependencies

source("install_deps.R")

This installs the R packages listed in install_deps.R (Matrix, dplyr, readr, survival, survminer, ggplot2, Seurat, etc.).

Re-run from cached connectivity (fast path, ~2 min)

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.

Full pipeline from raw inputs

See REPRODUCE.md for the full step-by-step procedure including data downloads, preprocessing, and which figure each experiment generates.


Citation

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.


License

Code: MIT (see LICENSE).

Data: each source dataset remains under its original license — see REPRODUCE.md for per-source terms.


Contact

  • 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.

Acknowledgements

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.

About

PERSIST (PERsister-State In-Silico Targeting): residual-state modelling of single-cell drug response for combination therapy prediction in EGFR-mutant NSCLC and TNBC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages