最节省存储空间的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对象不可以删,否则读取后无法恢复。