用途:AnnData 是 Python 包,用于处理带注释的数据矩阵,把实验测量值(X)与观测元数据(obs)、变量元数据(var)以及多维注释(obsm、varm、obsp、varp、uns)一起存储。最初为单细胞基因组学设计,现为通用注释数据框架,适合创建、读写 AnnData 对象,处理 h5ad、zarr 等格式,进行单细胞 RNA-seq 分析,管理稀疏矩阵或 backed 模式的大数据集,拼接多个数据集,子集、过滤、转换数据,并与 scanpy、scvi-tools 等 scverse 生态工具集成。
主要能力:支持核心数据结构(X、obs、var、layers、obsm、varm、obsp、varp、uns、raw);多种格式读写(h5ad、zarr、CSV、MTX、Loom、10X、Excel),支持压缩、backed 模式与云存储;沿观测或变量拼接,支持 inner/outer join 与标签追踪;子集、转置、复制与视图、重命名、类型转换、增删组件、重排序、质控过滤;内存与性能最佳实践。
使用方式:需 Python 3.11+,当前稳定版 0.12.16。安装:uv pip install "anndata==0.12.16";惰性 I/O 与 dask:uv pip install "anndata[dask,lazy]==0.12.16"。读写示例:adata = ad.read_h5ad('data.h5ad');adata.write_h5ad('output.h5ad', compression='gzip');adata = ad.read_zarr('data.zarr')。非原生格式用 anndata.io,如 from anndata.io import read_csv, read_loom, read_mtx。10X Genomics 数据应使用 scanpy(sc.read_10x_h5、sc.read_10x_mtx)。拼接:ad.concat([...], axis=0, join='inner', label='batch', keys=[...])。大数据可用 backed='r' 惰性加载,再 to_memory() 处理。
适用场景:单细胞 RNA-seq 分析、批次整合、多模态数据(配合 Muon)、深度学习数据加载(AnnLoader)、大规模数据集分块处理。
限制:避免已弃用 API(ad.read、AnnData.concatenate()、AnnData.*_keys()、anndata.version);anndata.experimental 不稳定;Zarr v3 写入在 0.12 中为可选,auto_shard_zarr_v3 为实验性;外部数据需按索引对齐。官方文档:https://anndata.readthedocs.io/。