Evaluation Protocols for Perturbation Studies: per-metric DRF/BDS calibration on a single preprocessed dataset.
Project description
scPertEval — Evaluation Protocols for Perturbation Sequencing
scPertEval is a toolkit for experimenting with and sharing reference implementations of
evaluation protocols in single-cell perturbation studies, usable both as a command-line
interface and as a native Python API. The same catalog of protocols backs three actions:
score (score a model's predictions against ground truth), calibrate (calibrate a
protocol against empirical positive/negative controls per perturbation, reporting the Dynamic
Range Fraction (DRF) and Bound Discrimination Score (BDS)), and de (export per-gene
differential expression).
scPertEval is introduced in Towards Principled Evaluation of Single-Cell Perturbation Prediction Models, where we develop a taxonomy of evaluation protocols — decomposing them into representation, metric, score transformation, and reporting strategy — and use this package to assess protocol behavior across seven public perturbation datasets.
Schäfer, P. S. L., Reid, K. A., Boldyga, Z., Aksu, E. D., Hakem, H., & Saez-Rodriguez, J. (2026). Towards Principled Evaluation of Single-Cell Perturbation Prediction Models. bioRxiv. https://doi.org/10.64898/2026.07.23.740433
If you use scPertEval in your work, please cite that paper (see CITATION.cff).
→ Full documentation at https://scperteval.readthedocs.io/
Install
pip install scperteval
Or from this repo:
pip install "scperteval @ git+https://github.com/Virtual-Cell-Research-Community/scPertEval.git"
The Sinkhorn / optimal-transport metrics (the sinkhorn_w2_* protocols) need PyTorch and
GeomLoss, which are optional to keep the base
install light. Enable them with the sinkhorn extra:
pip install "scperteval[sinkhorn]"
Quick start
From the command line:
# calibrate protocols against built-in controls (DRF/BDS)
scperteval calibrate data/wessels23.h5ad -p all --de-method t-test
# score a model's predictions against ground truth
scperteval score data/wessels23.h5ad predictions.h5ad -p all
scperteval list protocols # also: de-methods | spaces | sources | calibrators
Or from Python — the same protocols, returning results in memory (see the Python API guide):
import scperteval as sp
prep = sp.prepare("data/wessels23.h5ad", "pearson_ctrl") # read + index once, reusable
result = sp.calibrate(prep, "pearson_ctrl", de_method="t-test")
result.aggregate # {"mean": …, "median": …} — calibrated DRF summary
result.per_perturbation # the per-perturbation detail table
Sample datasets are available at
https://storage.googleapis.com/scperteval/processed/<dataset>_processed_complete.h5ad.
Citation
If you use scPertEval, please cite the paper it accompanies:
@article{Schafer_2026_scPertEval,
author = {Sch{\"a}fer, Philipp S. L. and Reid, Kendall A. and Boldyga, Zach and
Aksu, Ekin D. and Hakem, Hugo and Saez-Rodriguez, Julio},
title = {Towards Principled Evaluation of Single-Cell Perturbation Prediction Models},
journal = {bioRxiv},
year = {2026},
doi = {10.64898/2026.07.23.740433},
}
Authors
scPertEval originates with the authors of that paper — Philipp S. L. Schäfer, Kendall A. Reid, Zach Boldyga, Ekin D. Aksu, Hugo Hakem, and Julio Saez-Rodriguez — and is maintained as a community project under the Virtual Cell Research Community.
Contributing: see CONTRIBUTORS.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scperteval-0.1.0.tar.gz.
File metadata
- Download URL: scperteval-0.1.0.tar.gz
- Upload date:
- Size: 129.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50a67c7c7cdcaa6615fe11301dd2044032696153c869acf41df15a2ce0965136
|
|
| MD5 |
9117ac986a161af90f1d0343587ffe7d
|
|
| BLAKE2b-256 |
dcc27dc2e36ab6043fe5b4958403366a4718370feb19af2c515324d91ac724bd
|
Provenance
The following attestation bundles were made for scperteval-0.1.0.tar.gz:
Publisher:
release.yaml on Virtual-Cell-Research-Community/scPertEval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scperteval-0.1.0.tar.gz -
Subject digest:
50a67c7c7cdcaa6615fe11301dd2044032696153c869acf41df15a2ce0965136 - Sigstore transparency entry: 2309787306
- Sigstore integration time:
-
Permalink:
Virtual-Cell-Research-Community/scPertEval@8709eb07a0e7d4ecf1c60c977f2018690a749975 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Virtual-Cell-Research-Community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@8709eb07a0e7d4ecf1c60c977f2018690a749975 -
Trigger Event:
release
-
Statement type:
File details
Details for the file scperteval-0.1.0-py3-none-any.whl.
File metadata
- Download URL: scperteval-0.1.0-py3-none-any.whl
- Upload date:
- Size: 54.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d1f13c8364087f40dfcf359dc7a07862e859a3c0a0d9a05f6a9c919c53a7b75
|
|
| MD5 |
3a765944a5f0008b6da0c92e2bbea9aa
|
|
| BLAKE2b-256 |
1f54b2ed6c4bd505694f15f53a86a6abb3935adcf32faa6a18f6ca8adec5645d
|
Provenance
The following attestation bundles were made for scperteval-0.1.0-py3-none-any.whl:
Publisher:
release.yaml on Virtual-Cell-Research-Community/scPertEval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scperteval-0.1.0-py3-none-any.whl -
Subject digest:
1d1f13c8364087f40dfcf359dc7a07862e859a3c0a0d9a05f6a9c919c53a7b75 - Sigstore transparency entry: 2309787307
- Sigstore integration time:
-
Permalink:
Virtual-Cell-Research-Community/scPertEval@8709eb07a0e7d4ecf1c60c977f2018690a749975 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Virtual-Cell-Research-Community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@8709eb07a0e7d4ecf1c60c977f2018690a749975 -
Trigger Event:
release
-
Statement type: