美文网首页js css html
Seurat提速——并行化(future包)2022-06-07

Seurat提速——并行化(future包)2022-06-07

作者: 黄甫一 | 来源:发表于2022-06-07 10:54 被阅读0次

    关键词

    • 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并行

    适用函数

    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本身限制有关,具体我也不太懂,更多详细的内容可以浏览官方教程

    相关文章

      网友评论

        本文标题:Seurat提速——并行化(future包)2022-06-07

        本文链接:https://www.haomeiwen.com/subject/cgtemrtx.html