CytoOne

A unified probabilistic framework for CyTOF data

CytoOne is a single, coherent Bayesian deep generative model for mass cytometry (CyTOF) data. Rather than chaining together task-specific tools — each with its own, sometimes conflicting, distributional assumptions — CytoOne performs batch effect correction, differential expression analysis, and visualization / dimension reduction within one model trained end-to-end.

It pairs a hierarchical latent architecture inspired by the Nouveau Variational Autoencoder (NVAE) with a purpose-built quasi zero-inflated softplus-normal (QZIPN) likelihood tailored to the sparse, noisy nature of CyTOF measurements.

CytoOne model overview

Get started

🛠️ Installation

conda + pip, building from source, or the install-free Docker / Apptainer container for shared servers.

Installation
🚀 Quick start

Train CytoOne on the bundled example data and get an embedding in a couple of minutes.

Quick start
📦 Input format

Exactly what the cell-by-marker matrix and metadata should look like.

Input format
📚 Tutorials

Step-by-step walk-throughs with the expected output of every step.

Interactive Python tutorial
🎛️ Parameter guide

What each knob does and how changing it affects your results.

Parameter guide
🩺 Troubleshooting

Symptoms, causes, and fixes for the issues users hit most.

Troubleshooting

How CytoOne fits a typical analysis

  1. Instantiate a cytoone object, telling it how your data are scaled (normalize, zero_inflated) and which metadata columns to use.

  2. Import your cell-by-marker matrix and (optionally) per-cell metadata.

  3. Train with stochastic variational inference until the reconstruction loss stabilizes.

  4. Infer — a single infer() call serves visualization, batch correction, and differential expression.

  5. Save / reload the trained model for later reuse.

See the interactive tutorial for the full flow with outputs, or the CLI tutorial for the one-command version.