AnnData是python中存储单细胞数据的一种格式
1. AnnData数据结构:
主要包含四个slots:
Xcontains the expression matrix.obsmcontains the embeddings data.obscontains the cell metadata.varcontains the gene metadata.

1 | adata |
.X这个部分储存的是矩阵信息,数据结构是numpy array,和seurat对象一样,基因variable *细胞observation的稀疏矩阵。
但是.X的结构ndarray,是一个数组,是没有行名列名消息的。行名和列名消息存储在.obs和.var里。
调取矩阵信息:
1 | import scvelo as scv |

.obs存储的是细胞的信息,数据结构是pandas dataframe。
相当于Seurat对象中的metadata
1 | adata.obs |

一维针对观测的注释,是数据框类型
访问其中的一个属性,就通过普通的dataframe来访问:
1 | adata.obs['n_genes'] |
查看有多少cluster/细胞亚群…
1 | adata.obs['clusters'].unique() |
.var存储的是基因的信息,数据结构是pandas dataframe。
1 | adata.var |

一维的针对特征的注释,返回数据框类型。
访问其中一个属性的方法和.obs一样
.uns存储的是后续添加的非结构信息,数据结构是dict,有序字典。
1 | adata.uns['leiden'] |
这个uns的部分不是针对行/列的,而是针对行和列标注的参数的(暂时这么理解),在上述中pbmc的obs中有louvain观测,那么在uns中就是运行louvain算法的参数。是以哈希形式存储的。
obsm
对观测的多维的注释,m指的就是multi-dim多个维度。它是2-多维的ndarray,长度为n_obs。(obs是一个维度可以都放在一个数据框下)
1 | adata.obsm |
1 | print(adata.obsm['X_pca'].shape,adata.obsm['X_umap'].shape) |
varm
对特征的多维的注释,与obsm相对。
1 | adata.varm |
obsp
针对观测的配对的注释,前两维都是n_obs。比如点与点之间的距离和连通性。
1 | adata.obsp |
layers
在做速率分析的时候,还可以看到adata中有layers这一部分的信息。
1 | adata = scv.datasets.pancreas() |
Dictionary-like object with values of the same dimensions as X.
可以理解为平行空间的对象,比如Seurat里面的count,标准化之后叫data,归一化之后叫scale.data。
2. 提取信息
可以使用adata.然后输入Tab来查看可以使用的函数或变量。
1 |
|