由于單細(xì)胞數(shù)據(jù)本身就具有數(shù)據(jù)量大的特點(diǎn),所以在進(jìn)行單細(xì)胞數(shù)據(jù)分析時(shí)往往會(huì)出現(xiàn)運(yùn)行時(shí)間太長(zhǎng)的問題。
不過好在 Seurat 為我們提供了部分函數(shù)與 future 并行計(jì)算的鏈接。
安裝future
future已經(jīng)托管到CRAN上了,所以我們可以直接通過CRAN對(duì)其進(jìn)行安裝:
install.packages("future")
支持future并行計(jì)算的函數(shù)
NormalizeData()ScaleData()JackStraw()FindMarkers()FindIntegrationAnchors()FindClusters()
如何使用future
為了方便我們的使用,Seurat沒有特殊的其它操作來實(shí)現(xiàn)并行計(jì)算,也就是說函數(shù)的調(diào)用方式是沒有改變的。
-
查看可用核數(shù)
library(future)
availableCores()
-
調(diào)用多核
#使用plan來查看當(dāng)前plan的情況
plan()
#此處我們想調(diào)用4個(gè)核來并行完成我們的marker基因鑒定
plan("multiprocess", workers = 4)
通過上面的操作我們就成功地向系統(tǒng)“借”了四個(gè)核。
實(shí)戰(zhàn)
在這里我們想尋找pbmc數(shù)據(jù)集中 Naive CD4 T 細(xì)胞的基因marker。
首先不使用多核:
start <- Sys.time()
FindMarkers(object = pbmc3k.final, ident.1 = 'Naive CD4 T')
end <- Sys.time()
print(end - start)
最終耗時(shí):6.63347s。
然后我們調(diào)用四個(gè)核來 并行 做同樣的事情,注意到Seurat函數(shù)的調(diào)用形式不會(huì)改變:
plan("multiprocess", workers = 4)
start <- Sys.time()
FindMarkers(object = pbmc3k.final, ident.1 = 'Naive CD4 T')
end <- Sys.time()
print(end - start)
最終耗時(shí):2.361096s。
這將有效提升我們的單細(xì)胞數(shù)據(jù)分析效率!
