Seurat4.0系列教程12:大數(shù)據(jù)集整合的方法

對(duì)于非常大的數(shù)據(jù)集,標(biāo)準(zhǔn)工作流程有時(shí)可能計(jì)算成本高得令人望而卻步。在此工作流程中,我們可采用如下兩種方法提高效率和運(yùn)行時(shí)間:

  1. 互惠 PCA (RPCA)
  2. 基于參考的整合

主要的效率改進(jìn)是使用了FindIntegrationAnchors()。首先,我們使用互惠 PCA (RPCA) 而不是 CCA 來(lái)尋找錨點(diǎn)。在使用互惠的 PCA 確定任意兩個(gè)數(shù)據(jù)集之間的錨點(diǎn)時(shí),我們將每個(gè)數(shù)據(jù)集投影到其他 PCA 空間中,并根據(jù)相同的鄰近要求約束錨點(diǎn)。所有下游整合步驟保持不變,我們能夠"更正"(或協(xié)調(diào))數(shù)據(jù)集。

此外,我們使用基于參考的整合。在標(biāo)準(zhǔn)工作流中,我們識(shí)別所有數(shù)據(jù)集之間的錨點(diǎn)。雖然這給數(shù)據(jù)集在下游整合中同等的權(quán)重,但它也可能使計(jì)算變得密集。例如,在整合10 個(gè)不同的數(shù)據(jù)集時(shí),我們需要執(zhí)行 45 次不同的對(duì)比。作為替代方案,我們?cè)诖私榻B了指定一個(gè)或多個(gè)數(shù)據(jù)集作為整合分析的"參考",其余數(shù)據(jù)集被指定為"查詢"數(shù)據(jù)集。在此工作流中,我們不會(huì)在成對(duì)查詢數(shù)據(jù)集之間識(shí)別錨點(diǎn),從而減少比較次數(shù)。例如,在將整合10 個(gè)數(shù)據(jù)集將其中指定的 1 個(gè)數(shù)據(jù)集集成為參考時(shí),我們僅執(zhí)行 9 次比較。基于參考的整合可應(yīng)用于log標(biāo)準(zhǔn)化或 SCTransform標(biāo)準(zhǔn)化的數(shù)據(jù)集。

可選的工作流程包括以下步驟:

  • 創(chuàng)建一個(gè)seurat對(duì)象用來(lái)整合
  • 針對(duì)每個(gè)數(shù)據(jù)集分別執(zhí)行標(biāo)準(zhǔn)化、基因選擇和歸一化
  • 在列表中的每個(gè)對(duì)象上運(yùn)行 PCA
  • 整合數(shù)據(jù)集,并進(jìn)行聯(lián)合分析

總的來(lái)說(shuō),我們觀察到標(biāo)準(zhǔn)工作流程和此處演示的工作流程之間驚人的相似結(jié)果,但計(jì)算時(shí)間和內(nèi)存顯著減少。如果數(shù)據(jù)集存在高度差異(例如,跨模式映射或跨物種映射),則只能使用一小部分基因來(lái)進(jìn)行整合,您可以使用 CCA 得到更好的結(jié)果。

例如,我們將使用來(lái)自人類細(xì)胞圖集的"免疫細(xì)胞圖譜"數(shù)據(jù),這些數(shù)據(jù)可以在這里找到。

library(Seurat)

獲取數(shù)據(jù)后,我們首先執(zhí)行標(biāo)準(zhǔn)化和變異基因選擇。

bm280k.data <- Read10X_h5("../data/ica_bone_marrow_h5.h5")
bm280k <- CreateSeuratObject(counts = bm280k.data, min.cells = 100, min.features = 500)
bm280k.list <- SplitObject(bm280k, split.by = "orig.ident")
bm280k.list <- lapply(X = bm280k.list, FUN = function(x) {
    x <- NormalizeData(x, verbose = FALSE)
    x <- FindVariableFeatures(x, verbose = FALSE)
})

接下來(lái),選擇基因用來(lái)后續(xù)整合,并在列表中的每個(gè)對(duì)象上運(yùn)行 PCA。

features <- SelectIntegrationFeatures(object.list = bm280k.list)
bm280k.list <- lapply(X = bm280k.list, FUN = function(x) {
    x <- ScaleData(x, features = features, verbose = FALSE)
    x <- RunPCA(x, features = features, verbose = FALSE)
})

由于此數(shù)據(jù)集包含男性和女性,我們將選擇一男一女(BM1 和 BM2)用于基于參考的工作流程。通過(guò)檢查XIST基因的表達(dá)來(lái)確定性別。

anchors <- FindIntegrationAnchors(object.list = bm280k.list, reference = c(1, 2), reduction = "rpca", 
    dims = 1:50)
bm280k.integrated <- IntegrateData(anchorset = anchors, dims = 1:50)
bm280k.integrated <- ScaleData(bm280k.integrated, verbose = FALSE)
bm280k.integrated <- RunPCA(bm280k.integrated, verbose = FALSE)
bm280k.integrated <- RunUMAP(bm280k.integrated, dims = 1:50)
DimPlot(bm280k.integrated, group.by = "orig.ident")
image.png
?著作權(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)容