美文网首页
R语言保存单细胞矩阵的四种方法 2023-05-18

R语言保存单细胞矩阵的四种方法 2023-05-18

作者: 黄甫一 | 来源:发表于2023-05-17 10:09 被阅读0次

背景介绍

最近,一位师兄问我有哪些输出单细胞大数据矩阵的方法,于是趁机整理了一下我平时遇到的保存单细胞矩阵的有关脚本,总共有四个方法,分别保存为csv.gz、loom、h5和10X矩阵目录的四种格式。


方法一 保存为csv.gz文件

虽然write.table系列函数也能保存为csv文件,但是对于大数据写入和读入都太慢了,而data.table包的fread和fwrite则相关更快,功能也更强大。
以Seurat自带的数据集pbmc_small为例,保存矩阵的脚本如下:

library(Seurat)
library(data.table)
fwrite(data.table(as.matrix(pbmc_small@assays$RNA@counts),keep.rownames=TRUE),'pbmc_small.csv.gz',sep=',',quote=F,compress = 'gzip',row.names=F,col.names=T)

读入矩阵脚本如下:

mat <- fread('pbmc_small.csv.gz',sep=',')

方法二 保存为loom文件

这是从SCENIC的流程中学到的方法,开发人员专门写了一个SCopeLoomR包,据说保存的大矩阵较快而且比较省内存。
保存脚本如下:

library(Seurat)
library(SCopeLoomR)
label1 <- 'pbmc_small'
assay <- 'RNA'
outloom <- paste0(label1,".loom")
build_loom(file.name = outloom,dgem = pbmc_small@assays[[assay]]@counts)

读入脚本如下:

loom <- open_loom(file.path = outloom, mode = "r+")
mat <- get_dgem(loom)
close_loom(loom)

方法三 保存为h5文件

这是再平时分析中发现保存h5文件比csv文件省很多空间,因此专门整理了一下。
保存脚本如下:

library(Seurat)
library(rhdf5)
mat <- as.matrix(pbmc_small@assays$RNA@counts)
h5createFile("pbmc_small.h5")
h5createGroup("pbmc_small.h5","group")
h5write(mat, "pbmc_small.h5", "group/matrix")
h5write(rownames(mat), "pbmc_small.h5", "group/rownames")
h5write(colnames(mat), "pbmc_small.h5", "group/colnames")
h5closeAll()

读入脚本如下:

h5_file= H5Fopen("pbmc_small.h5")
mat <- h5_file$group$matrix
rownames(mat) <- h5_file$group$rownames
colnames(mat) <- h5_file$group$colnames
H5Fclose(h5_file)

方法四 保存为10X矩阵目录

相信大家做单细胞分析对10X矩阵目录下的三个文件都不陌生,可以使用DropletUtils保存矩阵为10X矩阵目录。
保存脚本如下:

out <- pbmc_small@assays$RNA@counts
DropletUtils:::write10xCounts("./pbmc_small_matrix", out,version="3")

读入矩阵如下:

mat <- Read10X("./pbmc_small_matrix")

总结与讨论

csv文件可读性好,但是太占存储空间了,而loom和h5文件则能极大压缩矩阵文件,但可读性较差,而发文章一般需要上传矩阵,用小文件可能上传更方便一些,而10X矩阵目录格式是单细胞中比较泛用的格式。当然最终保存为哪种格式,得实际情况实际分析。

相关文章

  • 优化模型及其约束

    单细胞-基于核方法的相似性学习 S表示相似度矩阵,L为对$S \in R^{N \times C}$进行低秩约束的...

  • 学习小组Day5笔记--尤少林

    R语言的简单使用 数据类型:向量,矩阵,数组,数据框,列表 向量1.1.向量的赋值;向量的四种赋值1.2. 从向量...

  • R语言 矩阵

    矩阵是其中元素以二维矩形布局布置的R对象。 它们包含相同原子类型的元素。 虽然我们可以创建一个只包含字符或只包含逻...

  • 加权基因共表达网络分析(WGCNA)实例

    获取表达数据矩阵 这里运行R语言包GDCRNATools的帮助文档中的例子获得胆管癌的rna表达矩阵 使用R语言包...

  • R语言数据结构-数据框&矩阵&列表

    R语言数据结构主要有以下四种: 1.向量2.数据框3.矩阵4.列表 四种数据结构,重点掌握向量和数据框 Vecto...

  • 《学习小组Day5笔记--寒鹤》

    R语言之数据结构 今天的学习内容是R语言的数据结构。R语言的数据结构主要有向量(vector),矩阵(matrix...

  • Day5—刘强

    R语言的数据结构 数据类型 R语言主要数据类型如下: 向量(vector) 矩阵(Matrix) 数组(Array...

  • PySCENIC(一):python版单细胞转录组转录因子分析

    关于单细胞转录组转录因子的分析我们之前在单细胞系列讲过R语言版本的,参考:跟着Cell学单细胞转录组分析(十二):...

  • R语言矩阵操作

    1.1 矩阵的生成 生成一个4行4列的矩阵,这里用1~16数字。 1 5 9 13 2 6 ...

  • 快速读取大文件 - vroom

    有时我们需要将一个大文件读入R,比如单细胞表达矩阵。使用vroom这个R包可以节约不少时间。 官方文档:Get s...

网友评论

      本文标题:R语言保存单细胞矩阵的四种方法 2023-05-18

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