Seurat | 解決了FindAllMarkers在大數(shù)據(jù)集上的速度短板

??Seurat作為知名的單細(xì)胞數(shù)據(jù)分析框架,雖然很好用,但在大數(shù)據(jù)集一直存在速度上的短板,尤其在FindAllMarkers。所以其一直也在試圖解決,比如通過引入feature多線程來加速,但做FindMarkers時(shí)效果沒有想象中的那么好。但是,現(xiàn)在新版的Seurat再一次對(duì)速度動(dòng)手了,在FindAllMarkers中引入了presto包來加速,這一次提升效果著實(shí)驚喜。

library(Seurat)
packageVersion('Seurat')
[1] ‘4.1.1’

obj <- readRDS('seurat_object.rds')
obj
An object of class Seurat
33469 features across 445809 samples within 1 assay
Active assay: RNA (33469 features, 2000 variable features)
 4 dimensional reductions calculated: pca, tsne, umap, harmony

length(unique(obj$celltype))
[1] 12

system.time(dge <- FindAllMarkers(obj))
Calculating cluster vCMs
  |++++                                              | 6 % ~03h 24m 54s

??四十多萬個(gè)細(xì)胞要是使用FindAllMarkers來做差異分析,這一步預(yù)估需要三個(gè)多小時(shí),這與少量細(xì)胞的秒出結(jié)果相比可謂是天壤之別了。即使可以通過feature多線程加速FindMarkers,效果也沒好到哪去,而且還需要循環(huán)來完成所有細(xì)胞類型,因?yàn)椴皇侵苯蛹铀?code>FindAllMarkers。

library(future)
plan("multicore", workers = 12)

system.time(dge <- FindMarkers(obj, ident.1 = "B cells"))
user   system  elapsed
 123.768   44.450 1123.624

??設(shè)置12個(gè)核,單獨(dú)跑一個(gè)細(xì)胞類型的差異基因需要20分鐘左右,也不知道是不是沒有設(shè)置好,這速度看起來并沒有提升。

??但是,V5presto的加持下速度明顯提升很多,如果沒有提前安裝好presto包,運(yùn)行時(shí)會(huì)有提示:

library(Seurat)
packageVersion('Seurat')
[1] ‘5.1.0’

system.time(dge <- FindAllMarkers(obj))
user   system  elapsed
1243.400  152.781 1399.859

??全部細(xì)胞類型的差異基因運(yùn)行下來也就20分鐘左右,這速度相比前面的3個(gè)多小時(shí),確實(shí)省去了很多的等待時(shí)間。如果還想要更快,可以直接使用presto包里面的函數(shù),速度直接起飛,時(shí)間由原先的半天直接下降到2分鐘以內(nèi):

library(presto)

system.time(dge <- wilcoxauc(obj, group_by='celltype'))
user  system elapsed
 81.629   5.347  87.192
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容