Parallel differential expression for single-cell perturbation sequencing
Project description
pdex
Parallel differential expression for single-cell perturbation sequencing.
Installation
# add to pyproject.toml
uv add pdex
# add to env
uv pip install pdex
Overview
pdex computes per-gene differential expression statistics between perturbation groups in single-cell data using Mann-Whitney U tests with FDR correction. It was originally designed for CRISPR screen and perturbation sequencing datasets with many groups and large cell counts.
It supports dense and sparse (CSR) expression matrices, and uses numba-mwu for Numba-accelerated Mann-Whitney U computation.
Modes
| Mode | Description |
|---|---|
"ref" |
Each group vs a single reference group (default: "non-targeting") |
"all" |
Each group vs all remaining cells (1-vs-rest) |
"on_target" |
Each group vs the reference at its single target gene only |
Usage
Reference mode (default)
import anndata as ad
from pdex import pdex
adata = ad.read_h5ad("screen.h5ad")
results = pdex(
adata,
groupby="guide",
mode="ref",
is_log1p=False,
)
1-vs-rest mode
results = pdex(
adata,
groupby="guide",
mode="all",
is_log1p=False,
)
On-target mode
Requires a column in adata.obs mapping each group to its target gene:
results = pdex(
adata,
groupby="guide",
mode="on_target",
gene_col="target_gene",
is_log1p=False,
)
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
adata |
AnnData |
required | Annotated data matrix (dense or sparse CSR) |
groupby |
str |
required | Column in adata.obs defining groups |
mode |
str |
"ref" |
Comparison mode: "ref", "all", or "on_target" |
threads |
int |
0 |
Numba thread count (0 = all CPUs) |
is_log1p |
bool | None |
None |
Whether data is log1p-transformed. Auto-detected if None |
geometric_mean |
bool |
True |
Use geometric mean for pseudobulk (vs arithmetic) |
as_pandas |
bool |
False |
Return a pandas DataFrame instead of Polars |
reference |
str |
"non-targeting" |
Reference group name (modes: ref, on_target) |
gene_col |
str |
— | Column mapping groups to target genes (mode: on_target) |
Output
Returns a Polars DataFrame (or pandas if as_pandas=True) with one row per (group, gene) pair:
| Column | Description |
|---|---|
target |
Perturbation group name |
feature |
Gene name |
target_mean |
Pseudobulk mean for the target group (count space) |
ref_mean |
Pseudobulk mean for the reference (count space) |
target_membership |
Number of cells in the target group |
ref_membership |
Number of cells in the reference |
fold_change |
log2(target_mean / ref_mean) |
percent_change |
(target_mean - ref_mean) / ref_mean |
p_value |
Mann-Whitney U p-value |
statistic |
Mann-Whitney U statistic |
fdr |
FDR-corrected p-value (per-group, across genes). For on_target mode, this is applied across all groups. |
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 pdex-0.2.0.tar.gz.
File metadata
- Download URL: pdex-0.2.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
711e89483f892d1f3008daaca01fdc15aa81b5f5438b3efb09e080ce4e0adb60
|
|
| MD5 |
4c780626fca7ef8ac39f4426cef17a11
|
|
| BLAKE2b-256 |
1e8ec6a8f03356fe0c142b75d8bd6315176fae6c380953c83ce1a67ca796c5bc
|
File details
Details for the file pdex-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pdex-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10dc5e4e093a5c7bd5a63fa1d601f1cb6ddb2796b6d7d5f0e557b47e1d94439e
|
|
| MD5 |
6dd4c1387df4cd6f82587b57b81a00d6
|
|
| BLAKE2b-256 |
0c579969b13723482d2412a4a5a4535833e2fb028c1cec467fa780994647998b
|