scverse / scverse/pertpy

Response prediction: predict unseen perturbations & combinations (GEARS, CPA/chemCPA, biolord, FM embeddings)

Open
#1,034 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
345
Forks
66
Avg merge
1d 4h
Merged PRs (30d)
13

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing pertpy.tools Scgen and Cinemaot implementations, then review the perturbation-level API introduced in #1032. A complete contribution would add one predictor with its dependencies, tutorial, and tests, expose shared train() and predict() behavior, and return AnnData compatible with perturbation-space and distance tooling.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
bioinformatics, machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.