AnnData对象处理
2021-11-17 本文已影响0人
myshu
AnnData是python中存储单细胞数据的一种格式,常用于scanpy。
1、认识结构
基本结构如下:
![](https://img.haomeiwen.com/i4111755/8e1b842e75ba8205.png)
参考链接: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
来查看可以使用的函数或变量,大家可以摸索下:
![](https://img.haomeiwen.com/i4111755/3eec3422fdcff30c.png)
当然,使用比如
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