Skip to main content

CITEgeist

GitHub stars License Issues Python Version CI Code Quality

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

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 is CITEgeist (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-cu12 from 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

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

citegeist-2.0.0.tar.gz (226.4 kB view details)

Uploaded Source

Built Distribution

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

citegeist-2.0.0-py3-none-any.whl (258.0 kB view details)

Uploaded Python 3

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

Hashes for citegeist-2.0.0.tar.gz
Algorithm Hash digest
SHA256 711430d86f19c1250f82cc8432eed7de28373cef957b9487f90520c074a6aa32
MD5 6bbd4b76040bc459a831c6f01fc48ea7
BLAKE2b-256 0fa6d9072b0c05c3601ccc73fb987affc7d23f3f499852da949cbf9df772c063

See more details on using hashes here.

Provenance

The following attestation bundles were made for citegeist-2.0.0.tar.gz:

Publisher: publish.yml on leeoesterreich/CITEgeist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for citegeist-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0af4d3ea1f94faf2160fd959521ed784b277a9ee2caf5ff147d540d95ff3ecff
MD5 3300c86f1014a48e6f840b82db65b25b
BLAKE2b-256 ee94cc8c74d5ff1632fdf97bee9f36f1011a620ecf3a984e08b89ee0012a0451

See more details on using hashes here.

Provenance

The following attestation bundles were made for citegeist-2.0.0-py3-none-any.whl:

Publisher: publish.yml on leeoesterreich/CITEgeist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.0.1

2 files

This release

2.0.0 This release

2 files

0.1.1

2 files

0.1.0

2 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