如何極大減少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對象不可以刪,否則讀取后無法恢復。