AnnData对象处理

AnnData是python中存储单细胞数据的一种格式,常用于scanpy。

1、认识结构

基本结构如下:


参考链接:https://cellgeni.readthedocs.io/en/latest/visualisations.html
4个重要的构成:

  • X contains the expression matrix.
  • obsm contains the embeddings data.
  • obs contains the cell metadata.
  • var contains the gene metadata.
    我们可以一块一块地来理解这个图:
  • 首先是.var这部分是variables/features也就是基因的注释信息,存储数据结构是panda 数据框。接着我们看这个数据框的横坐标和纵坐标,横坐标标注的是 variable 1、variable 2、... variable n_var,表示的就是每个基因名称,纵坐标就是每个基因的注释信息;
  • 接着来看下面这个.X。看大小就知道是个大家伙,是基因-细胞的表达量大矩阵。存储数据结构是numpy array是一个稀疏矩阵。接着我们一样的来看横坐标和纵坐标,横坐标和.var的是一致的,纵坐标是observation 1、observation 2、... observation n_obs,表示的是每个细胞的名称
  • 然后是.obs数据,是细胞的注释信息等。存储结构是panda 数据框。横坐标是不同的细胞注释结果,纵坐标是细胞名称。
  • 最后就是.uns,这个是一个字典的结构,没有特定的大小。存储的是一些计算结果。
    其实除了这些之外可能还有别的结构,可以直接输入变量之后回车就可以看到,可以使用type(data.<数据块>)来查看变量的类别。
    示例

2、信息提取

注意这里是python环境哈

# 数据数目统计
data.n_obs  # 返回细胞数 2695
data.n_vars  # 返回基因数 18270
data.shape # (2695, 18270)
data.T  # 基因和cell转置矩阵,用的好像不多?
data.to_df()  # 转成矩阵,列为基因,行为细胞。可以使用data.T.to_df()就可以转成行为细胞,列为基因的矩阵了

# 数据键值提取
data.obs_keys() # 细胞注释信息的keys,比如 ['ClusterID', 'ClusterName', 'SCT_snn_res_0_8', 'nCount_SCT', 'nCount_Spatial', 'nFeature_SCT', 'nFeature_Spatial', 'orig_ident', 'seurat_clusters', 'imagecol', 'imagerow'']
data.obs_names  # 返回细胞ID 数据类型是object
data.var.index  # 返回基因 数据类型是object
data.var_names.to_list()  # 返回基因 数据类型是list
data.obs.head() # 查看前5行的数据

# 其他的数据组成也可以使用

也可以使用data.然后输入Tab来查看可以使用的函数或变量,大家可以摸索下:

AnnData数据包含的用法

当然,使用比如data.obs然后输入Tab来查看当前data.obs数据可以使用的函数,有很多,大家不知道怎么处理的时候可以看看。

3、提取子数据

# 先获取cell或者gene list
gene20 = data.var_names.to_list()[:20]
data[:,gene20]  #  2695 x 20
cell20 = data.obs_names.to_list()[:20]
data20 = data[cell20,gene20]  # 20 x 20

你可能感兴趣的:(AnnData对象处理)