最節省存儲空間的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對象不可以刪,否則讀取后無法恢復。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM