CITEgeist
Cellular Indexing of Transcriptomes and Epitopes for Guided Exploration of Intrinsic Spatial Trends
CITEgeist is a comprehensive computational framework for analyzing spatial multi-omic data, with a focus on integrating CITE-seq and spatial transcriptomics. Our toolkit enables researchers to uncover spatial patterns in cellular organization and gene expression, providing deeper insights into tissue architecture and function.
Key Features
- Reference-free cell-type deconvolution using same-slide CITE-seq antibody capture — no scRNA-seq reference required
- GPU-accelerated cell-type proportion estimation via quadratic programming (cuOPT)
- SACE per-cell gene expression deconvolution via single-pass Poisson-multinomial allocation
- Per-cell type assignment from spot proportions via StarDist nuclei segmentation + Hungarian matching (optional Bayesian assignment when per-nucleus morphology scores are precomputed)
- Spatial gene program discovery and cross-sample integration (Modules 4–5)
- Validated on dense tumor microenvironments including breast cancer and RCC clinical samples
Documentation
- Quick Start Guide
- Running on Real Visium Data (end-to-end tutorial)
- Benchmarking Results
- Example Scripts
Reproducibility
Example end-to-end pipelines for each module are in examples/scripts.
See the end-to-end Visium tutorial to run CITEgeist on real data.
System Requirements
Minimum Requirements
- Python 3.10
- 16GB RAM
- Multi-core processor
- NVIDIA GPU with 8GB+ VRAM (required for cuOPT QP solver, Module 3)
- Linux, macOS, or Windows 10 with WSL2
Quick Installation
CITEgeist is not yet published on PyPI. Install from source:
git clone https://github.com/leeoesterreich/CITEgeist.git
cd CITEgeist
pip install -e .
Note — package name vs import name: The installed distribution is named
citegeist(lowercase), but the importable package isCITEgeist(capital C). After installation:import CITEgeist # bare import (lightweight) from CITEgeist import CitegeistModel # lazy re-export — heavy stack loaded on demand
GPU requirement: CITEgeist's QP deconvolution (Module 3) requires an NVIDIA GPU with CUDA and the cuOPT library. cuOPT is not available on PyPI — install it via NVIDIA RAPIDS or NGC (
pip install cuopt-cu12from the NVIDIA index, or use a pre-built RAPIDS container). CPU-only environments cannot run the cell-type proportion solver.
From the cloned repo root, for a development installation with test and lint dependencies:
pip install -e .[dev]
Development Setup
For Contributors
If you want to contribute to CITEgeist, follow these steps:
# Clone the repository
git clone https://github.com/leeoesterreich/CITEgeist.git
cd CITEgeist
# Create conda environment
conda env create -f CITEgeist_env.yml
conda activate CITEgeist_env
# Install in development mode with dev dependencies
pip install -e ".[dev]"
Code Quality Tools
We use several tools to maintain code quality:
- black: Code formatting (120 char line length)
- isort: Import sorting
- flake8: Linting
- mypy: Type checking
- pylint: Static code analysis
- pytest: Testing framework
Run quality checks before committing:
# Format code
black CITEgeist/
isort CITEgeist/
# Run linting
flake8 CITEgeist/
pylint CITEgeist/
# Run tests
pytest
CI enforcement (blocks sync to main): black, isort, flake8, pytest/coverage
Advisory (badge only, no merge gate): pylint, mypy
See CONTRIBUTING.md for detailed contribution guidelines.
License
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details. BSD 3-Clause is a permissive license: you may use, modify, and redistribute the code, including in proprietary work, provided you retain the copyright notice and do not use the authors' names to endorse derived products.
Contact
- Lab Website: Lee/Oesterreich Laboratory
- Issues: GitHub Issues
- Email: Contact Us
Citation
If you use CITEgeist in your research, please cite our paper: (to be updated)
@article{ChangSchlegelCITEgeistCellularIndexing2025,
title = {{{CITEgeist}}: {{Cellular Indexing}} of {{Transcriptomes}} and {{Epitopes}} for {{Guided Exploration}} of {{Intrinsic Spatial Trends}}},
shorttitle = {{{CITEgeist}}},
author = {Chang, Alexander Chih-Chieh and Schlegel, Brent T. and Carleton, Neil and McAulife, Priscilla F. and Oesterreich, Steffi and Schwartz, Russell and Lee, Adrian V.},
date = {2025-02-17},
eprinttype = {bioRxiv},
eprintclass = {New Results},
pages = {2025.02.15.638331},
doi = {10.1101/2025.02.15.638331},
url = {https://www.biorxiv.org/content/10.1101/2025.02.15.638331v1},
urldate = {2025-02-17},
abstract = {Spatial transcriptomics provides insights into tissue architecture by linking gene expression with spatial localization. Current deconvolution methods rely heavily on single-cell RNA sequencing (scRNA-seq) references, which are costly and often unavailable, mainly if the tissue under evaluation is limited, such as in a core biopsy specimen. We present a novel tool, CITEgeist, that deconvolutes spatial transcriptomics data using antibody capture from the same slide as the reference, directly leveraging cell surface protein measurements from the same tissue section. This approach circumvents the limitations of scRNA-seq as a reference, offering a cost-effective and biologically grounded alternative. Our method employs mathematical optimization to estimate cell type proportions and gene expression profiles, incorporating sparsity constraints for robustness and interpretability. Benchmarks against state-of-the-art deconvolution methods show improved accuracy in cell type resolution, particularly in dense tumor microenvironments, while maintaining computational efficiency. This antibody-based tool advances spatial transcriptomics by providing a scalable, accurate, and reference-independent solution for deconvolution in complex tissues. We validate this tool by using a combined approach of simulated data and clinical samples by applying CITEgeist to translational pre-treatment and post-treatment ER+ breast tumors from an ongoing clinical trial, emphasizing the applicability and robustness of CITEgeist.},
}
Contributing
We welcome contributions! Please see our CONTRIBUTING.md for detailed guidelines on:
- Setting up your development environment
- Code quality standards
- Testing requirements
- Pull request process
Support
For support, please:
- Open an issue on our GitHub issue tracker
- Check existing issues and discussions
- Read our documentation and examples
Copyright (c) 2025 Lee/Oesterreich Lab
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 citegeist-2.0.0.tar.gz.
File metadata
- Download URL: citegeist-2.0.0.tar.gz
- Upload date:
- Size: 226.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
711430d86f19c1250f82cc8432eed7de28373cef957b9487f90520c074a6aa32
|
|
| MD5 |
6bbd4b76040bc459a831c6f01fc48ea7
|
|
| BLAKE2b-256 |
0fa6d9072b0c05c3601ccc73fb987affc7d23f3f499852da949cbf9df772c063
|
Provenance
The following attestation bundles were made for citegeist-2.0.0.tar.gz:
Publisher:
publish.yml on leeoesterreich/CITEgeist
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
citegeist-2.0.0.tar.gz -
Subject digest:
711430d86f19c1250f82cc8432eed7de28373cef957b9487f90520c074a6aa32 - Sigstore transparency entry: 2306800837
- Sigstore integration time:
-
Permalink:
leeoesterreich/CITEgeist@6f1cbc29f60b93eee4e393be6cde1994a8cced42 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/leeoesterreich
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6f1cbc29f60b93eee4e393be6cde1994a8cced42 -
Trigger Event:
release
-
Statement type:
File details
Details for the file citegeist-2.0.0-py3-none-any.whl.
File metadata
- Download URL: citegeist-2.0.0-py3-none-any.whl
- Upload date:
- Size: 258.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0af4d3ea1f94faf2160fd959521ed784b277a9ee2caf5ff147d540d95ff3ecff
|
|
| MD5 |
3300c86f1014a48e6f840b82db65b25b
|
|
| BLAKE2b-256 |
ee94cc8c74d5ff1632fdf97bee9f36f1011a620ecf3a984e08b89ee0012a0451
|
Provenance
The following attestation bundles were made for citegeist-2.0.0-py3-none-any.whl:
Publisher:
publish.yml on leeoesterreich/CITEgeist
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
citegeist-2.0.0-py3-none-any.whl -
Subject digest:
0af4d3ea1f94faf2160fd959521ed784b277a9ee2caf5ff147d540d95ff3ecff - Sigstore transparency entry: 2306800922
- Sigstore integration time:
-
Permalink:
leeoesterreich/CITEgeist@6f1cbc29f60b93eee4e393be6cde1994a8cced42 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/leeoesterreich
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6f1cbc29f60b93eee4e393be6cde1994a8cced42 -
Trigger Event:
release
-
Statement type: