Skip to main content

scTimeBench-Logo scTimeBench

python License bioRXiv Google Colab Install PyPI Zenodo Documentation

scTimeBench Overview

Table of Contents

Environment Setup

scTimeBench was tested and supported using Python 3.10. If any other version that is 3.10+ does not work when using the benchmark, please submit an issue to this GitHub.

Important Note: this setup is needed twice. Once for the user to run the benchmark metrics, and the second time for the method itself needing to read from scTimeBench.method_utils.method_runner and other important shared constants. In short, this means we need to install scTimeBench into two separate virtual environments:

  1. Your normal pip installation where you'll be running the benchmark from. This will require the extra "[benchmark]" group installation (pip) or the extra group installation --extra benchmark (uv).
  2. For each method's virtual environment, you need to install the scTimeBench.

Suggested UV Installation

Due to external dependencies and a more complex setup, we have decided to package everything under uv (see: https://github.com/astral-sh/uv). To start with, you need to get all the necessary extern dependencies, which can be done either by running:

git submodule update --init extern/

If you wish to benchmark across all methods, feel free to clone the submodules for all the methods as well with:

git submodule update --init

Then, install uv and run the following:

uv sync --extra benchmark

If you're using uv under a method's virtual environment, either the pip installation or the following will suffice:

uv sync

Standard Pip

If the external dependencies such as pypsupertime or sceptic are not used (which they are not used by default), you can install using pip as follows:

pip install scTimeBench[benchmark]

to run the benchmark. For your own method, simply install without the extra benchmarking requirements with

pip install scTimeBench

There are extra dependencies that can be found under pyproject.toml.

Benchmark Architecture

Benchmark Architecture scTimeBench is controlled by a central configuration file which determines which datasets, methods, and metrics to run. An example of this can be found under configs/scNODE/gex.yaml.

Detailed Layout of File Structure

  • configs/: possible yaml config files to use as a starting point
  • extern/: external packages that required edits for compatability such as pyPsupertime and Sceptic.
  • methods/: the different methods that are possible to use, including defined submodules. Add your own methodology here.
  • src/: where the scTimeBench package lies. See src/ReadMe.md for more documentation on the modules that exist there.
  • test/: unit tests for each method, dataset, metric, and other important modules.

Command-Line Interface Details

The entrypoint for the benchmark is defined as scTimeBench. Run scTimeBench --help for more details, or refer to src/scTimeBench/config.py and the documentation.

Example Run

Run the package with:

scTimeBench --config configs/scNODE/gex.yaml

For a full running example using scNODE, refer to our example Jupyter Notebook.

Contributing to scTimeBench

If you want to contribute, please install the dev environments with:

uv sync --extra dev --extra benchmark

or use pip in editable mode with:

pip install -e ".[dev, benchmark]"

To enable the autoformatting, please run:

pre-commit install

before committing.

Follow our example tutorials on adding new methods, datasets, and metrics in our documentation here: https://li-lab-mcgill.github.io/scTimeBench/.

Testing

If your change heavily modifies the architecture, please run the necessary tests under the test/ environment using pytest. Read more on the different available tests under test/ReadMe.md. See more information on the pytest documentation: https://docs.pytest.org/en/stable/. A useful flag is -s to view the entire output of the test.

Citation

@article {scTimeBench,
	author = {Osakwe, Adrien and Huang, Eric Haoran and Li, Yue},
	title = {scTimeBench: A streamlined benchmarking platform for single-cell time-series analysis},
	elocation-id = {2026.03.16.712069},
	year = {2026},
	doi = {10.64898/2026.03.16.712069},
	publisher = {Cold Spring Harbor Laboratory},
	URL = {https://www.biorxiv.org/content/early/2026/03/18/2026.03.16.712069},
	eprint = {https://www.biorxiv.org/content/early/2026/03/18/2026.03.16.712069.full.pdf},
	journal = {bioRxiv}
}

Metadata

Release files for scTimeBench 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scTimeBench 0.1.2
File Size Uploaded Provenance Actions
sctimebench-0.1.2.tar.gz 79.7 kB Without provenance Details for sctimebench-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for scTimeBench 0.1.2
File Interpreter ABI Platform Actions
sctimebench-0.1.2-py3-none-any.whl Python 3 none any Details for sctimebench-0.1.2-py3-none-any.whl

Total release size: 182.7 kB

Release files / sctimebench-0.1.2.tar.gz

Download URL sctimebench-0.1.2.tar.gz
Size 79.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e546e5d34c2b47224e07c72083b6efea29c148fc720520e674f53d2b69facd1e
BLAKE2b-256 checksum
How to use checksums
b68667eff5bbff54cc5a031ef725665d2c3414c4c3e5feb07665df89be2eb44b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Release files / sctimebench-0.1.2-py3-none-any.whl

Download URL sctimebench-0.1.2-py3-none-any.whl
Size 103.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2cc246da08532afa93b8bd222c53f23e5425197dd2cf80e417dd861bf507999
BLAKE2b-256 checksum
How to use checksums
5a9a858cbf907f43cedc2f4610ed238e56ece75f538edabf02617904fafe4d15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Security for scTimeBench 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page