最节省存储空间的Seurat对象保存方法

如何极大减少Seurat对象保存时间

Seurat R 包无疑目前大家进行单细胞分析最长用的包之一,Seurat分析时将每一步结果都存在了Seurat 对象的不同slots中,好处是计算的所有信息得以保留,然而同时也会造成文件过大,难以保存和读取。对于2万个细胞以下也许不成问题,但当细胞数超过10万,Seurat对象已经超过了15G,当细胞数量百万级别时,Seurat大小将不可估量,每次读取和保存甚至以数小时计算,费时、费力、费空间。

分析发现,Seurat对象之所以巨大,原因是重新计算了Counts后生成了nornalized data,并保存在了data和scaled.data中,这将使得仅仅包涵10万个细胞的文件从几百M大小飙升至20G以上。因此,保存之前,将data和scaled.data对象清空即可极大减少文件大小,在读入数据后再重新进行nomalize 和 scale即可。

为了极大节约读取和保存时间,我们将采取已下方法,在Seurat 对象保存之前进行处理,极大缩小文件大小,并在读取时进行信息的恢复,具体如下:

 

### Before saving
subset_cells <- Seurat_object ## 10W cells, 15G
subset_cells@assays$RNA@data <- as.matrix(0)
subset_cells@assays$RNA@scale.data <- as.matrix(0)
save(subset_cells, file = "Seurat.RData") ### ~0.2-0.3G


###loading
load("Seurat.RData")
DefaultAssay(subset_cells) <- "RNA"
subset_cells@assays$RNA@data <- subset_cells@assays$RNA@counts
subset_cells <- NormalizeData(subset_cells)
subset_cells <- ScaleData(subset_cells, features=VariableFeatures(subset_cells))
### recovery
## 如果是用于画图(绝大多数情况用的是data slot数据),可以使用以下命令scale
subset_cells <- ScaleData(subset_cells, features=VariableFeatures(subset_cells)[1])

注意:counts对象不可以删,否则读取后无法恢复。 

posted @ 2022-04-08 17:10  何帅  阅读(2839)  评论(0编辑  收藏  举报