See every cell. Query any gene. Explore in 2D and 3D. Interactive, GPU-accelerated single-cell visualization in the browser.
Cellucid is a browser-first viewer for exploring large single-cell datasets in real time: fly through 2D/3D embeddings (UMAP/t-SNE/PCA), color by genes or metadata, filter and compare populations, and share reproducible views with collaborators.
- GPU-accelerated WebGL rendering with level-of-detail culling; a built-in synthetic benchmark measures what your own GPU sustains
- AnnData-first workflow for the Scanpy ecosystem (
.h5adand Zarr supported) - Cellucid-ready AnnData (
prepare()): one standard.h5ad,.zarror.zarr.zip, laid out for fast browser reads, that you can host locally, on GitHub, on any web host, or behind a server - Genes + metadata overlays optimized for interactive querying
- Connectivity + dynamics: KNN edges and animated vector fields (RNA velocity / drift)
- Collaboration: community annotation voting with optional GitHub sync
- Publication export: SVG (vector) and high-DPI PNG figures
- Works everywhere: web app, local/remote server, and Jupyter notebooks
Cellucid requires Python 3.11, 3.12, 3.13, or 3.14. Use the dedicated Installation guide to choose PyPI or GitHub based on current registry availability. To install the active source directly from the official GitHub repository:
pip install "cellucid @ git+https://github.com/theislab/cellucid-python"From PyPI:
pip install cellucidThe PyPI package page is authoritative for
registry availability. Until it lists the active version, pip install cellucid
resolves only to the versions PyPI already holds, and those are earlier
generations whose API differs from the one this README and the documentation
describe.
Try the web app (no setup):
- Open cellucid.com
- Open one
.h5ad, a.zarrfolder, or one.zarr.ziparchive
Or visualize an AnnData from Python/Jupyter:
from cellucid import show_anndata
show_anndata(
adata,
dataset_name="My dataset",
dataset_id="my-dataset",
)An adata straight out of Scanpy works as written. The viewer reads the data
itself, as each view needs it: cellucid serve data.h5ad (or a Zarr store)
hands it the file in place, and an in-memory object is written once to a
temporary .h5ad.
To share or host a dataset, write a Cellucid-ready AnnData once. It is still a
standard AnnData, with the expression matrix gene-major and the dataset's name,
citation and launch defaults in uns['cellucid'], so the browser reads one
gene with one round trip and the file names itself (on a 562k-cell dataset
over a simulated 80 ms link: opened in 0.25 s, the first gene in 0.09 s; see
the specification's measured choices):
from cellucid import prepare
prepare(
"my_dataset.h5ad",
format="h5ad",
embeddings={"X_umap": adata.obsm["X_umap"]},
dataset_id="my-dataset",
dataset_name="My dataset",
obs=adata.obs,
var=adata.var,
gene_expression=adata.X,
)format is required: "zarr" (a folder of small files) for GitHub, which
refuses files over 100 MB and serves many small files at once over HTTP/2;
"h5ad" (or "zarr.zip", the Zarr store in one file) for everything else —
single-file hosts such as Zenodo, Figshare, Hugging Face, S3 or a lab server,
local files, cellucid serve and Jupyter. The documentation's "Which format?"
guide has the measurements.
Then cellucid serve my_dataset.h5ad, show_anndata("my_dataset.h5ad"), or
open the file in the web app.
- Python package guide
- Complete Cellucid documentation
- Live web application and web viewer source
- R package
- Official public demo datasets
- Three custom dataset repository examples
- Community annotation repository and annotation guide
- Python package issues
Placeholder citation. The Cellucid preprint is in preparation for bioRxiv and has no DOI yet; the reference below is a placeholder and will be replaced when the preprint is published.
If you use Cellucid, please cite:
Inecik, K. PLACEHOLDER: Cellucid preprint, title to be announced (forthcoming on bioRxiv). bioRxiv (in preparation).
BibTeX and other formats: Citing Cellucid.
BSD-3-Clause