| Votes | By | Price | Discipline | Year Launched |
| scverse | FREE, OPEN SOURCE | Interdisciplinary |
AnnData is the data structure the Python single-cell ecosystem is built on. It is not an analysis tool in its own right — it is the container that makes Scanpy, scvi-tools, muon and squidpy interoperable, and it is the reason a Python single-cell pipeline composes instead of requiring conversion at every step.
What it does
An AnnData object holds a data matrix alongside aligned annotations for observations and variables, plus unstructured metadata, dimensionality reductions and pairwise graphs. It maps cleanly onto the shape of a single-cell experiment, supports sparse matrices, and can be backed by disk for datasets too large for memory. The on-disk H5AD and Zarr formats have become the practical interchange standard.
Strengths
- The interchange format across the entire scverse ecosystem.
- Sparse and disk-backed support for datasets beyond memory.
- Stable, well-documented and widely adopted.
- H5AD and Zarr formats readable from R as well as Python.
Limitations
It is infrastructure, so it does nothing visible on its own — you adopt it by using the tools built on it. The layered structure takes time to internalise, and the distinction between layers, obsm and uns is a routine source of confusion. Large objects can still surprise you on memory if not read in backed mode.
