Skip to main content

Fast Wilcoxon rank-sum test for differential expression analysis in single-cell genomics

Project description

FastWilcox

Fast Wilcoxon rank-sum test for differential expression analysis in single-cell genomics.

This is a Python implementation of the wilcoxauc from the R' presto package, providing high-performance statistical testing for single-cell RNA-seq data.

Features

  • Fast Wilcoxon rank-sum test with AUC calculation
  • Multiple matrix formats supported: Dense, CSR, and CSC sparse matrices
  • Optimized for single-cell data with efficient handling of sparse matrices
  • FDR correction using Benjamini-Hochberg method
  • Compatible with AnnData objects

Installation

cd python
pip install fastwilcox

For development:

pip install -e ".[dev]"

Usage

import anndata as ad
from fastwilcox import wilcoxauc

# Load your data
adata = ad.read_h5ad("your_data.h5ad")

# Run Wilcoxon test
results = wilcoxauc(
    x=adata.X,
    y=adata.obs['cell_type'].values,
    groups_use=None,  # Optional: test specific groups
    y_order=None,     # Optional: specify group order
    comparison=None   # Optional: pairwise comparison label
)

# Results is a list of WilcoxResult objects
for res in results:
    print(f"Feature {res.feature}, Group {res.group}: "
          f"logFC={res.log_fc:.3f}, AUC={res.auc:.3f}, "
          f"p-adj={res.padj:.3e}")

API Reference

wilcoxauc(x, y, groups_use=None, y_order=None, comparison=None)

Perform Wilcoxon rank-sum test for differential expression.

Parameters:

  • x: Matrix (Dense array, CSR, or CSC sparse matrix) where rows are samples and columns are features
  • y: List/array of group labels (strings)
  • groups_use: Optional list of groups to test (default: all groups)
  • y_order: Optional list specifying the order of groups
  • comparison: Optional comparison pattern for pairwise tests

Returns:

  • List of WilcoxResult objects with fields:
    • feature: Feature index
    • group: Group name
    • avg_expr: Average expression in group
    • log_fc: Log fold change (in-group mean - out-group mean)
    • ustat: U-statistic
    • auc: Area under ROC curve
    • pval: P-value
    • padj: FDR-adjusted p-value
    • pct_in: Percentage of cells expressing in group
    • pct_out: Percentage of cells expressing out of group
    • comparison: Comparison label, useful when only compare two group

Testing

Run tests:

cd python
pytest tests/

Run tests with coverage:

pytest tests/ --cov=fastwilcox --cov-report=html

Performance

This implementation is optimized for:

  • Large sparse matrices (common in single-cell RNA-seq)
  • Efficient group-wise operations
  • Vectorized numpy operations

For the best performance with sparse data, use CSC format.

License

MIT License

Citation

If you use this software, please cite the fastwilcox project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastwilcox-0.1.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastwilcox-0.1.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file fastwilcox-0.1.0.tar.gz.

File metadata

  • Download URL: fastwilcox-0.1.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fastwilcox-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c6f381d1e8df9d272cd35b4f30b05a362cef810bd335b5d9446c34ece9259be2
MD5 4171aefe609465953a07027dd3902d98
BLAKE2b-256 e42ad62660db6e8dd2fa04cb19f534ede338504654d89139eb030846365cb176

See more details on using hashes here.

File details

Details for the file fastwilcox-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fastwilcox-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fastwilcox-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 392a1fbcd6ca70226bf664e43f47b3ef636f0bde889ff7269f4c35edefeb529f
MD5 225cedaf58cb7d13ea2a8a558bee1e6d
BLAKE2b-256 cd61d61c158d79fdab8865a0a42ad93f7ffb9c1743cab5f8bbfe4e72ff13a495

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page