Scanpy数据结构:AnnData


Scanpy数据结构:AnnData

AnnData是python中存储单细胞数据的一种格式

1. AnnData数据结构:

主要包含四个slots:
X contains the expression matrix.
obsm contains the embeddings data.
obs contains the cell metadata.
var contains the gene metadata.

 
import scvelo as scv
scv.DataFrame(adata.X)
 
  • .obs存储的是细胞的信息,数据结构是pandas dataframe
    相当于Seurat对象中的metadata
adata.obs['n_genes']
AAACATACAACCAC-1     781
AAACATTGAGCTAC-1    1352
AAACATTGATCAGC-1    1131
AAACCGTGCTTCCG-1     960
AAACCGTGTATGCG-1     522
                    ... 
TTTCGAACTCTCAT-1    1155
TTTCTACTGAGGCA-1    1227
TTTCTACTTCCTCG-1     622
TTTGCATGAGAGGC-1     454
TTTGCATGCCTCAC-1     724
Name: n_genes, Length: 2638, dtype: int64

查看有多少cluster/细胞亚群...

adata.var
  一维的针对特征的注释,返回数据框类型。

访问其中一个属性的方法和.obs一样

  • .uns存储的是后续添加的非结构信息,数据结构是dict,有序字典。
adata.obsm
# AxisArrays with keys: X_pca, X_umap, X_draw_graph_fa
adata.varm
# AxisArrays with keys: PCs
print(adata.varm['PCs'].shape)
adata.varm['PCs']
# (1838, 50)
# array([[-2.6014808565e-02,  3.2541397959e-03,  1.8978352891e-03, ...,
#         -5.1610143855e-03,  1.4520395547e-02, -6.6632591188e-04],
#       [-8.2782376558e-03,  9.0831620619e-03, -7.8140682308e-04, ...,
#         3.0852310359e-02, -8.9336717501e-03, -2.8796317056e-03],
#       [-3.3151865937e-03,  3.2096833456e-03,  2.7985233464e-04, ...,
#         1.0144758970e-02, -5.5128755048e-04,  1.5089971712e-03],
#       ...,
#       [ 8.3417436108e-03, -1.2465091422e-03, -4.1219405830e-03, ...,
#        -1.0164264590e-02,  9.2523321509e-03,  2.7965774760e-02],
#       [-1.6406573355e-02,  4.4101417065e-02, -2.1357089281e-05, ...,
#         9.9819628522e-03, -4.5361258090e-03, -1.3653293252e-02],
#       [-1.5188260004e-02,  4.0008693933e-02,  5.4121930152e-03, ...,
#        -3.6789905280e-03,  2.1117802709e-02,  3.5965379328e-02]])
  • obsp
    针对观测的配对的注释,前两维都是n_obs。比如点与点之间的距离和连通性。
adata = scv.datasets.pancreas()
adata
AnnData object with n_obs × n_vars = 3696 × 27998
    obs: 'clusters_coarse', 'clusters', 'S_score', 'G2M_score'
    var: 'highly_variable_genes'
    uns: 'clusters_coarse_colors', 'clusters_colors', 'day_colors', 'neighbors', 'pca'
    obsm: 'X_pca', 'X_umap'
    layers: 'spliced', 'unspliced'
    obsp: 'distances', 'connectivities'

Dictionary-like object with values of the same dimensions as X.
可以理解为平行空间的对象,比如Seurat里面的count,标准化之后叫data,归一化之后叫scale.data。

2. 提取信息

可以使用adata.然后输入Tab来查看可以使用的函数或变量。

# 数据数目统计
adata.n_obs  # 返回细胞数 2695
adata.n_vars  # 返回基因数 18270
adata.shape # (2695, 18270)

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

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

数据的索引和取切片等操作参考numpy和pandas。


参考:
https://cellgeni.readthedocs.io/en/latest/visualisations.html

转载自:https://www.jianshu.com/p/9b057e105c42,仅供个人学习使用