Context
pertpy's response-prediction module currently ships Scgen and Cinemaot.
Both are valuable, but neither predicts the effect of perturbations that were not measured, which is the question most large screens actually pose:
"Which of the perturbations (or combinations) I did not run should I run next?"
What's missing
- Genetic perturbation prediction including unseen single/double gene combinations — GEARS (GNN over a gene–gene graph).
- Compositional dose/covariate modeling — CPA (Compositional Perturbation Autoencoder).
- Chemical perturbation / drug-dose generalization — chemCPA.
- Disentangled latent modeling — biolord.
- A foundation-model embedding interface so cells/perturbations can be represented with scGPT / Geneformer / scFoundation / State and fed into the existing perturbation-space and distance tooling.
Proposal / API
Expose these under pertpy.tools behind a shared .train() / .predict() interface consistent with the existing Scgen model (scvi-tools style), returning predicted AnnData that plugs into the perturbation-space and distance tooling.
Reuse the perturbation-level API introduced in #1032.
Why it matters
- Academia: in silico perturbation screening and hypothesis generation.
- Industry: prioritizing which of thousands of unmeasured targets / combinations / doses to run — directly reduces experimental cost.
Scope
Each method is a sizeable addition (deps, tutorial, tests) and can land as its own PR; this issue tracks the module direction.
Pair with the benchmarking harness (separate issue) so every predictor is evaluated against baselines.
Context
pertpy's response-prediction module currently ships
ScgenandCinemaot.Both are valuable, but neither predicts the effect of perturbations that were not measured, which is the question most large screens actually pose:
"Which of the perturbations (or combinations) I did not run should I run next?"
What's missing
Proposal / API
Expose these under
pertpy.toolsbehind a shared.train()/.predict()interface consistent with the existingScgenmodel (scvi-tools style), returning predictedAnnDatathat plugs into the perturbation-space and distance tooling.Reuse the perturbation-level API introduced in #1032.
Why it matters
Scope
Each method is a sizeable addition (deps, tutorial, tests) and can land as its own PR; this issue tracks the module direction.
Pair with the benchmarking harness (separate issue) so every predictor is evaluated against baselines.