GeneCover
A combinatorial approach for label-free marker gene selection from scRNA-seq and spatial transcriptomics data, using gene-gene correlation and set cover.
This repository is a Python packaging + PyPI-friendly version of the original GeneCover pipeline, keeping the algorithm behavior as close as possible to the original implementation while supporting optional solver backends (uses lazy loading).
Manuscript
Wang, A., Hicks, S., Geman, D., & Younes, L. (2025, April).
GeneCover: A Combinatorial Approach for Label-free Marker Gene Selection.
In International Conference on Research in Computational Molecular Biology (pp. 354–357). Cham: Springer Nature Switzerland.
DOI: 10.1101/2024.10.30.621151
@inproceedings{wang2025genecover,
title={GeneCover: A Combinatorial Approach for Label-free Marker Gene Selection},
author={Wang, An and Hicks, Stephanie and Geman, Donald and Younes, Laurent},
booktitle={International Conference on Research in Computational Molecular Biology},
pages={354--357},
year={2025},
organization={Springer}
}
Original resources:
- Original GitHub repo: https://github.com/ANWANGJHU/GeneCover
- Original docs site: https://genecover.readthedocs.io/
This package exists to provide a lightweight, pip-installable interface to GeneCover without requiring users to clone the original repository or configure solvers unless needed.
Features
- Compute gene–gene correlation matrices from scRNA-seq / spatial transcriptomics data:
- Spearman correlation (default)
- Pearson correlation
- Select marker genes via minimal-weight set cover, with multiple backends:
- Gurobi (integer programming; requires license)
- SCIP via PySCIPOpt (open-source solver)
- Greedy heuristic (no solver dependencies; NumPy-only)
- Perform iterative marker selection (
Iterative_GeneCover) to build gene panels in multiple rounds - Behavior closely aligned with the original one-file GeneCover implementation
Compatibility with the original GeneCover implementation
- The core GeneCover algorithm, thresholds, and optimization logic are preserved.
gene_gene_correlation,GeneCover, andIterative_GeneCoverfollow the same behavior and defaults as the original implementation.- Differences from the original repository are limited to packaging and dependency handling (lazy imports, optional solver extras).
- Results should be directly comparable to those obtained using the original GeneCover code.
Installation
Install from PyPI
pip install genecover
This installs the core package and supports the Greedy backend (no external solver required).
Optional solver backends
To use integer-programming solvers, install extras:
Gurobi backend (requires a valid Gurobi license)
pip install "genecover[gurobi]"
SCIP backend (via PySCIPOpt)
pip install "genecover[scip]"
Install all optional backends
pip install "genecover[all]"
Usage and QuickStart
For full tutorials and usage examples, see the original GeneCover documentation. The function names should be the same, for instance:
from genecover import gene_gene_correlation, GeneCover, Iterative_GeneCover
Project Status
This package focuses on: a clean Python API (genecover), reproducibility with the original one-file pipeline, and solver backends as optional dependencies. The interface may evolve as packaging/testing/docs are improved.
Contributing
Bug reports, feature requests, and GitHub issues or pull requests are welcome.
Please submit issues and pull requests via the GitHub repository: https://github.com/danielchen05/GeneCover
Note
This project has been set up using PyScaffold 4.6. For details and usage information on PyScaffold see https://pyscaffold.org/.
Release files for genecover 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| genecover-0.1.0.tar.gz | 27.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| genecover-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.5 kB
Release files / genecover-0.1.0.tar.gz
| Download URL | genecover-0.1.0.tar.gz |
|---|---|
| Size | 27.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
682606da7f5caf0482197cf8106203e9ef2dd7dfca8b23cc74c9fb01a3c12eae
|
|
BLAKE2b-256 checksum How to use checksums |
8aff6384c52b5cb53309965d01c7f0ce5f0d21834c12d13bc7d4ce480b27f2d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.14
|
Release files / genecover-0.1.0-py3-none-any.whl
| Download URL | genecover-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4274382a071201ee9ea8002055ffe679653c79f8e00eeed99960d25cd1710438
|
|
BLAKE2b-256 checksum How to use checksums |
0da07f2b5a743c5a211f9b15a369bba0ee7500bd7ec29d208c06a35bf3f1beb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.14
|