添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

loom 介绍

随着单细胞技术的发展,数据量增加使得计算需求呈指数增长。分析单细胞数据时,使用稀100000个细胞的系数矩阵处理对于Seurat 来说就很有挑战性。HDF5 格式现在被用于储存

生物大数据,单细胞可以储存上百万个细胞的数据。

Linnarson实验室开发了基于HDF5的数据结构-loom loompy,用于储存单细胞数据以及数据相关的属性信息。并且,他们还发布了一个工具loompy。

一个loom包含6各部分,一个数据集(matrix),以及5个组 layers, row_attrs, col_attrs, row_graphs, and col_graphs

  • matrix : n个基因m个细胞
  • layers :matrix处理后的数据,例如标准化后的数据。
  • row_attrs :基因得到metadata
  • col_attrs : 细胞metadata
  • row_graphs col_graphs
  • R

    R 中,我们可以使用Seurat包来处理Loom文件中的单细胞数据。

    保存到loom

    loom_subset <- as.loom(sc.obj.TCells, filename = "~/velocyto_test/seurat_TCells_211028.loom")
    

    loom对象有一个get.attribute.df()方法,可以获取各种metadata 信息整合成数据框(data frame)

    attrs <- c("nUMI", "nGene", "orig.ident")
    attr.df <- lfile$get.attribute.df(MARGIN = 2, attribute.names = attrs)
    head(x = attr.df)
    

    为了提高效率,HDF5库对底层数据矩阵的访问进行了转置。基因储存在列,细胞储存在行;

    但是LoomR中,row.attrs还是表示基因,col.attrs表示细胞;这点容易让人混淆。

    lfile[["row_attrs/gene_names"]]$dims
    lfile[["row_attrs/gene_names"]]$dims == lfile[["matrix"]]$dims[2]
    lfile[["row_attrs/gene_names"]]$dims == lfile$shape[1]
    

    获取部分基因或细胞数据

    data.subset <- lfile[["matrix"]][1:5, ]
    dim(x = data.subset)
    data.subset <- t(x = data.subset)
    dim(x = data.subset)
    data.gene <- lfile[["matrix"]][, lfile$row.attrs$gene_names[] == "MS4A1"]
    head(x = data.gene)
    

    添加数据到loom

  • add.layer()
  • add.row.attribute()
  • add.col.attribute()
  • # Generate random ENSEMBL IDs for demonstration purposes
    ensembl.ids <- paste0("ENSG0000", 1:length(x = lfile$row.attrs$gene_names[]))
    # Use add.row.attribute to add the IDs Note that if you want to overwrite an
    # existing value, set overwrite = TRUE
    lfile$add.row.attribute(list(ensembl.id = ensembl.ids), overwrite = TRUE)
    lfile[["row_attrs"]]
    ## Class: H5Group
    ## Filename: /home/paul/Documents/Satija/pbmc.loom
    ## Group: /row_attrs
    ## Listing:
    ##        name    obj_type dataset.dims dataset.type_class
    ##  ensembl.id H5I_DATASET        13714         H5T_STRING
    ##  gene_names H5I_DATASET        13714         H5T_STRING
    

    Python

    Python中,我们可以使用scanpy库来处理Loom文件中的单细胞数据。loompy也支持10X的数据:

    import scanpy as sc
    # 加载Loom文件
    adata = sc.read_loom('example.loom')
    # 查看数据的基本信息
    print(adata)
    

    需要先临时改变环境配置, 在终端直接输入:

    export HDF5_USE_FILE_LOCKING='FALSE'
    loompy.create_from_cellranger(folder, output_filename)
    ds = loompy.connect("test.loom")
    ds.close()
    

    用到了再用实例完善。