Skip to main content

scEPS

scEPS (single-cell Expression exPlainability Statistics)

This repo contains the code of the method, scEPS, for integrating GWAS and single-cell disease cell atlas data to identify disease-associated cell neighborhoods. scEPS calculates a $d$ statistic at each cell neighborhood, representing the difference between the variance in disease explained by variations in the expression of each GWAS vs. each mean-expression matched control gene. An illustration of the scEPS method is shown below:

scEPS illustration

Reference

The current draft of the manuscript is available here. The code we used to create the figures in the manuscript is available here. We also implemented CNA*, a simple extension of CNA, for estimating the variance in disease attributable to variations in cell abundance at each cell neighborhood.

We also provide a web UI for visualizing the results in the scEPS manuscript here.

Manual

We provide a detailed manual of scEPS in the Wiki page.

Installation

Option 1: using pip

The easiest way to install scEPS is from PyPI:

pip install sceps

This installs the sceps Python package along with the four command-line tools described under Usage.

Option 2: using Anaconda or Miniforge

scEPS may also be installed into a dedicated environment through Anaconda or Miniforge. To do this, please first install Anaconda or Miniforge on your machine. You may then install scEPS using the following commands:

git clone git@github.com:Genentech/sceps.git
cd sceps
conda env create -f sceps.yml
conda activate sceps
pip install .

The sceps.yml file installs the dependencies through conda; the final pip install . installs scEPS itself and its command-line tools. Use pip install -e . instead if you intend to modify the scEPS source.

Option 3: manually install required packages

The user may also manually install the required packages to run scEPS. scEPS requires Python 3.9 or newer and the following packages:

Package Minimum Version pinned in sceps.yml
numpy 1.23 1.26.2
pandas 1.5 1.5.3
scipy 1.9 1.13.1
anndata 0.10 0.10.7
scanpy 1.10 1.10.3
scikit-learn 1.1 1.3.2
statsmodels 0.13 0.14.5
tqdm 4.60 4.67.1
packaging 20 25.0
matplotlib 3.6 3.9.4
seaborn 0.12 0.13.2

These can be installed with a single command:

conda install -c conda-forge python=3.9 numpy=1.26.2 pandas=1.5.3 scipy=1.13.1 \
    anndata=0.10.7 scanpy=1.10.3 scikit-learn=1.3.2 statsmodels=0.14.5 \
    tqdm=4.67.1 packaging=25.0 matplotlib-base=3.9.4 seaborn=0.13.2

The pinned versions are those used for the analyses in the manuscript, and sceps.yml reproduces that environment exactly. The minimums are the floors declared in pyproject.toml; scEPS has also been verified to reproduce identical output on numpy 2.x, pandas 2.x, anndata 0.12 and scanpy 1.11.

The optional preprocessing helper script misc/preprocess_scdata.py additionally requires harmonypy for batch integration. This is also available as an extra:

pip install "sceps[preprocess]"

Once the required packages to run scEPS are installed, the user may then install scEPS using:

git clone git@github.com:Genentech/sceps.git
cd sceps
pip install --no-deps .

Usage

Installing scEPS provides four command-line tools, corresponding to the four steps of the scEPS workflow:

Command Purpose
sceps Estimate scEPS statistics for individual cell neighborhoods
sceps-cluster-neighborhood Define approximately independent cell neighborhood blocks
sceps-aggregate Aggregate scEPS statistics across cell types and across all cells
sceps-corr Correlate scEPS statistics with gene expression

Pass --help to any of them for the full list of options, e.g. sceps --help. A detailed description of each step is available in the Wiki page.

scEPS can also be driven from Python rather than the command line:

from sceps.sceps_core import *

See misc/run_sceps_from_python.py for a worked example.

Testing scEPS

We provide examples script to test the scEPS workflow here.

Contact

Please create a GitHub issue if you experience any issue with running scEPS.

Release files for sceps 0.1.0

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

Source distribution (sdist)

Source distribution for sceps 0.1.0
File Size Uploaded
sceps-0.1.0.tar.gz 34.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sceps 0.1.0
File Interpreter ABI Platform
sceps-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / sceps-0.1.0.tar.gz

Download URL sceps-0.1.0.tar.gz
Size 34.7 kB
Tags Source
SHA-256 checksum
How to use checksums
94f059d396978c256cd9e02f0fee2d5751c52ca8d8cb28620b243f5b1a1f2061
BLAKE2b-256 checksum
How to use checksums
c67903591edbffd8703c0da42cd9ae2ebe1ceb2c707820b910055422b9155331
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / sceps-0.1.0-py3-none-any.whl

Download URL sceps-0.1.0-py3-none-any.whl
Size 38.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6b473be0c36a89f9ca00020fd389c15d03047efeac2daaf04fc682aa5d3cf484
BLAKE2b-256 checksum
How to use checksums
1bb02bf2fbd553bf3a96926de0edf951279afbf3b67496ed4150f014cfa9dd8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

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