Quiet
  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我

bajiu

  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我
Quiet主题
  • R语言

单细胞数据格式之loom文件

bajiu
生物信息学

2023-03-29 12:11:00

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()

用到了再用实例完善。

上一篇

使用CellRanger进行V(D)J建库测序

下一篇

HDF5 介绍

©2024 By bajiu.