关键词
- Parallelization in Seurat
- Seurat 并行化
- Seurat 加速运行速率
- Seurat 并行运算
- Seurat 进步服从
- Seurat 加速整合速率
- Seurat 加速ScaleData/NormalizeData/FindMarkers/FindIntegrationAnchors/FindClusters速率
- Seurat 加速SCTransform速率
实用配景
Seurat包好用是好用,但其分析流程中的某些函数运行起来着实太慢了,较小的数据集还好,但一旦高出10w以上,就须要等待很长时间。Seurat团队应该也发现了 这个标题,以是他们在v3.0版本开始就举行了优化,也就是只要Seurat版本>=3.0,就能对某些步调实现并行化,从而进步运行服从。(Seurat 4系列版本也可用)
实用函数
Seurat的流程并不须要每个函数都并行化运算,以是根据官网先容,只有以下几个函数能实现并行化运算:
- NormalizeData
- ScaleData
- JackStraw
- FindIntegrationAnchors
- FindMarkers
- FindClusters - if clustering over multiple resolutions
但根据本人实测发现,SCTransform函数也能实现并行化,但官网貌似没有更新。
利用方法
Seurat的并行策略是基于future包的plan函数,只须要参加以下三行内容,此中workers设置进程数,这个根据个人现实环境填写即可.
library(future)plan("multiprocess", workers = 4)options(future.globals.maxSize = 100000 * 1024^5)future.globals.maxSize则是为了排除运行内存限定,否则会出现以下报错。
Error in getGlobalsAndPackages(expr, envir = envir, globals = TRUE) : The total size of the X globals that need to be exported for the future expression ('FUN()') is X GiB. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). The X largest globals are 加速SCTransform速率
SCTransform是官网保举的数据预处理惩罚方法,但是极其慢,官网利用glmGamPoi举行优化提速,但是这是仅限于4.0版本及以上,本人在R3.6版本无法安装glmGamPoi包,而且Seurat 3的SCTransform函数也没有参加glmGamPoi方法,会报错。
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")BiocManager::install("glmGamPoi")pbmc <- SCTransform(pbmc, method = "glmGamPoi", vars.to.regress = "percent.mt", verbose = FALSE)小结与增补
实现并行化后运行进度条大概会消散,官网表明这与future框架与R自己限定有关,具体我也不太懂,更多具体的内容可以浏览官方教程。 |