在 Scanpy 中,layers
是 AnnData 对象的一个重要属性,用于存储与主数据矩阵 adata.X
具有相同维度的多个数据矩阵(例如不同的数据变换版本,如原始计数、归一化数据或对数化数据)。以下是对 layers
用法的详细讲解,结合官方文档和实际使用场景,涵盖其定义、创建、操作和常见用例。
1. 什么是 AnnData 和 layers?
AnnData(Annotated Data)是 Scanpy 的核心数据结构,用于存储单细胞数据。它包含以下主要部分:
- adata.X: 主数据矩阵,存储基因表达数据(通常是细胞×基因矩阵)。
- adata.obs: 观测值(细胞)的元数据,如细胞类型或批次信息。
- adata.var: 变量(基因)的元数据,如基因名称。
- adata.layers: 一个字典-like 对象,存储与
adata.X
维度相同的其他数据矩阵。每个矩阵可以表示数据的不同处理版本(例如原始计数、归一化数据、对数化数据等)。
layers
的灵感来源于 loompy 的 layers 设计,允许用户在同一个 AnnData 对象中保存多种数据变换结果,方便后续分析和比较。