美文网首页单细胞测序
Annadata对象-数据结构简单记录

Annadata对象-数据结构简单记录

作者: 倪桦 | 来源:发表于2022-08-02 09:45 被阅读0次

    anndata - Annotated data — anndata 0.9.0.dev7+gfd744d6 documentation

    import numpy as np
    import pandas as pd
    import anndata as ad
    from scipy.sparse import csr_matrix
    print(ad.__version__)
    

    建构一个 annadata 数据对象

    counts = csr_matrix(np.random.poisson(1, size=(100, 2000)), dtype=np.float32) ### 初始化一个矩阵稀疏矩阵
    adata = ad.AnnData(counts) ### 初始化一个 AnnData 对象
    

    填充各个数据槽

    adata.obs_names = [f"Cell_{i:d}" for i in range(adata.n_obs)] ### 为添加obs 轴添加索引名
    adata.var_names = [f"Gene_{i:d}" for i in range(adata.n_vars)] ### 为添加vars 轴添加索引名
    adata[["Cell_1", "Cell_10"], ["Gene_5", "Gene_1900"]] ###  
    ct = np.random.choice(["B", "T", "Monocyte"], size=(adata.n_obs,))
    adata.obs["cell_type"] = pd.Categorical(ct)  ### 细胞注释表添加细胞类型分类变量
    adata.obsm["X_umap"] = np.random.normal(0, 1, size=(adata.n_obs, 2)) ### 随机嵌入一个细胞的umap表,obs ->  obs level metatada
    adata.varm["gene_stuff"] = np.random.normal(0, 1, size=(adata.n_vars, 5)) ### 随机嵌入一个基因元数据,varm ->  vars level metatada
    adata.uns["random"] = [1, 2, 3] ### .uns 存储非结构化的metadata,一般存储的是一些对我们分析有意义的数据, 数据类型可以是 list ,dictionary 等等,通过键来索引数据
    

    数据槽:: Layers

    #### 一般可以用来存储不同处理的  原始矩阵.X
    adata.layers["log_transformed"] = np.log1p(adata.X)
    adata.to_df(layer="log_transformed") ### 以DataFrames格式显示某一层的数据
    adata.write('my_results.h5ad', compression="gzip") ### 以AnnData自带的存储格式h5ad保存出对象
    

    数据索引与修改

    ### 提取子集注意使用 .copy() 方法才能提取出对象的完整子集,这种方式相当于拷贝出来一个adata副本,会为这个副本对象分配内存
    adata_subset = adata[:5, ['Gene_1', 'Gene_3']].copy()
    ### 通过赋值的方法获取adata的一个"View"会自动拷贝对象
    adata_subset = adata[:3, ['Gene_1', 'Gene_2']]
    ### 通过.[]方法索引修改adata是在原对象上进行修改,不会分配新的内存地址。
    ##### 注意调用.[]获取数据的时候,填写整数是根据索引编号索引数据,类似pandas的 .iloc;填写的是字符则根据添加的字符引数据,类似pandas的 .loc
    adata[:3, 'Gene_1'].X = [0, 0, 0] 
    ### 通过.isin 方法条件化索引数据
    adata[ adata.obs.cell_type.isin(["B", "T"]) ].obs.head()
    

    大数据读取

    ### 大数据读取,防止爆内存,使用backed模式,即以只读的方式打开文件,所以不能对数据做任何修改
    #### 每次只是将部分数据载入内存
    adata = ad.read('my_results.h5ad', backed='r')
    adata.isbacked
    adata.filename ### AnnData对象与被读取的文件建立了一个连接
    adata.file.close() ### 关闭与对象的连接
    

    相关文章

      网友评论

        本文标题:Annadata对象-数据结构简单记录

        本文链接:https://www.haomeiwen.com/subject/hqloirtx.html