不同數(shù)據(jù)集聯(lián)合分析
選擇了通過(guò)四種技術(shù)產(chǎn)生的人胰島細(xì)胞數(shù)據(jù)集:CelSeq(GSE81076) CelSeq2(GSE85241)爷怀,F(xiàn)luidigm C1(GSE86469)和SMART-Seq2(E-MTAB-5061)。我們?cè)诖颂?數(shù)據(jù))提供組合的原始數(shù)據(jù)矩陣和相關(guān)的元數(shù)據(jù)文件以便開(kāi)始沿侈。
數(shù)據(jù)集預(yù)處理
加載表達(dá)式矩陣和元數(shù)據(jù)。元數(shù)據(jù)文件包含四個(gè)數(shù)據(jù)集中每個(gè)單元格的技術(shù)(tech列)和單元格類(lèi)型注釋?zhuān)╟ell type列)么翰。
library(Seurat)
pancreas.data <- readRDS(file = "../data/pancreas_expression_matrix.rds")
metadata <- readRDS(file = "../data/pancreas_metadata.rds")
為了構(gòu)建參考,我們將識(shí)別各個(gè)數(shù)據(jù)集之間的“錨點(diǎn)”。首先于游,我們將組合對(duì)象拆分為一個(gè)列表,每個(gè)數(shù)據(jù)集都作為一個(gè)元素垫言。
pancreas <- CreateSeuratObject(pancreas.data, meta.data = metadata)
pancreas.list <- SplitObject(pancreas, split.by = "tech")
在找到錨點(diǎn)之前贰剥,我們執(zhí)行標(biāo)準(zhǔn)預(yù)處理(對(duì)數(shù)標(biāo)準(zhǔn)化),并為每個(gè)錨點(diǎn)單獨(dú)識(shí)別變量要素筷频。請(qǐng)注意蚌成,Seurat v3基于方差穩(wěn)定轉(zhuǎn)換實(shí)現(xiàn)了一種改進(jìn)的變量特征選擇方法("vst")
for (i in 1:length(pancreas.list)) {
? ? pancreas.list[[i]] <- NormalizeData(pancreas.list[[i]], verbose = FALSE)
? ? pancreas.list[[i]] <- FindVariableFeatures(pancreas.list[[i]], selection.method = "vst",
? ? ? ? nfeatures = 2000, verbose = FALSE)
}
整合3個(gè)胰島細(xì)胞數(shù)據(jù)集
接下來(lái),我們使用FindIntegrationAnchors函數(shù)識(shí)別錨點(diǎn)凛捏,該函數(shù)將Seurat對(duì)象列表作為輸入担忧。在這里,我們將三個(gè)對(duì)象集成到一個(gè)引用中(我們將在后面的小插圖中使用第四個(gè))
我們?cè)谶@里使用所有默認(rèn)參數(shù)來(lái)識(shí)別錨點(diǎn)坯癣,包括數(shù)據(jù)集的“維度”(30;隨意嘗試在寬范圍內(nèi)改變此參數(shù)瓶盛,例如在10到50之間)。
reference.list <- pancreas.list[c("celseq","celseq2","smartseq2")]pancreas.anchors <- FindIntegrationAnchors(object.list = reference.list, dims =1:30)
然后我們將這些錨傳遞給IntegrateData函數(shù)坡锡,該函數(shù)返回一個(gè)Seurat對(duì)象蓬网。
返回的對(duì)象將包含一個(gè)new?Assay,它包含所有單元格的集成(或“批量修正”)表達(dá)式矩陣鹉勒,使它們能夠被聯(lián)合分析帆锋。
pancreas.integrated <- IntegrateData(anchorset = pancreas.anchors, dims =1:30)
運(yùn)行后IntegrateData,該Seurat對(duì)象將包含一個(gè)Assay帶有集成表達(dá)式矩陣的new?禽额。請(qǐng)注意锯厢,原始(未校正的值)仍存儲(chǔ)在“RNA”分析中的對(duì)象中,因此您可以來(lái)回切換脯倒。
然后我們可以使用這個(gè)新的集成矩陣進(jìn)行下游分析和可視化实辑。在這里,我們擴(kuò)展集成數(shù)據(jù)藻丢,運(yùn)行PCA剪撬,并使用UMAP可視化結(jié)果。集成數(shù)據(jù)集按單元格類(lèi)型而不是技術(shù)集群悠反。
library(ggplot2)
library(cowplot)
# switch to integrated assay. The variable features of this assay are automatically set during Integrate Data#
DefaultAssay(pancreas.integrated) <-"integrated"
# Run the standard workflow for visualization and clustering
pancreas.integrated <- ScaleData(pancreas.integrated, verbose =FALSE)
pancreas.integrated <- RunPCA(pancreas.integrated, npcs =30, verbose =FALSE)
pancreas.integrated <- RunUMAP(pancreas.integrated, reduction ="pca", dims =1:30)
p1 <- DimPlot(pancreas.integrated, reduction ="umap", group.by ="tech")
p2 <- DimPlot(pancreas.integrated, reduction ="umap", group.by ="celltype", label =TRUE,repel =TRUE) + NoLegend()
plot_grid(p1, p2)
使用集成參考的細(xì)胞類(lèi)型分類(lèi)
Seurat v3還支持將參考數(shù)據(jù)(或元數(shù)據(jù))投影到查詢對(duì)象上残黑。雖然許多方法都是守恒的(兩個(gè)程序都以識(shí)別錨點(diǎn)開(kāi)始),但數(shù)據(jù)傳輸和集成之間存在兩個(gè)重要區(qū)別:
在數(shù)據(jù)傳輸中斋否,Seurat不會(huì)更正或修改查詢表達(dá)式數(shù)據(jù)梨水。
在數(shù)據(jù)傳輸中,Seurat有一個(gè)選項(xiàng)(默認(rèn)設(shè)置)將參考的PCA結(jié)構(gòu)投影到查詢上茵臭,而不是學(xué)習(xí)與CCA的聯(lián)合結(jié)構(gòu)疫诽。我們通常建議在scRNA-seq數(shù)據(jù)集之間投影數(shù)據(jù)時(shí)使用此選項(xiàng)。
在找到錨之后,我們使用該TransferData函數(shù)基于參考數(shù)據(jù)(參考單元類(lèi)型標(biāo)簽的向量)對(duì)查詢單元進(jìn)行分類(lèi)奇徒。TransferData返回具有預(yù)測(cè)ID和預(yù)測(cè)分?jǐn)?shù)的矩陣雏亚,我們可以將其添加到查詢?cè)獢?shù)據(jù)中。
pancreas.query <- pancreas.list[["fluidigmc1"]]
pancreas.anchors <- FindTransferAnchors(reference = pancreas.integrated, query = pancreas.query,? ? dims =1:30)
predictions <- TransferData(anchorset = pancreas.anchors, refdata = pancreas.integrated$celltype,? ? dims =1:30)
?pancreas.query <- AddMetaData(pancreas.query, metadata = predictions)
因?yàn)槲覀儚耐暾木C合分析中獲得了原始標(biāo)簽注釋?zhuān)晕覀兛梢栽u(píng)估我們預(yù)測(cè)的細(xì)胞類(lèi)型注釋與完整參考的匹配程度逼龟。在這個(gè)例子中评凝,我們發(fā)現(xiàn)細(xì)胞類(lèi)型分類(lèi)有很高的一致性,超過(guò)97%的細(xì)胞被正確標(biāo)記腺律。
pancreas.query$prediction.match <- pancreas.query$predicted.id == pancreas.query$celltype
table(pancreas.query$prediction.match)
##
## FALSE? TRUE
##? ? 16? 622
為了進(jìn)一步驗(yàn)證這一點(diǎn)奕短,我們可以檢查特定胰島細(xì)胞群的一些經(jīng)典細(xì)胞類(lèi)型標(biāo)記。請(qǐng)注意匀钧,即使這些細(xì)胞類(lèi)型中的一些僅由一個(gè)或兩個(gè)細(xì)胞(例如ε細(xì)胞)表示翎碑,我們?nèi)匀荒軌蛘_地對(duì)它們進(jìn)行分類(lèi)。
table(pancreas.query$predicted.id)
##
##? ? ? ? ? ? acinar? ? ? activated_stellate? ? ? ? ?alpha
##? ? ? ? ? ? ? ? 21? ? ? ? ? ? ? ? ? 17? ? ? ? ? ? ? ? ? ? ? ? ?248
##? ? ? ? ? ? ? beta? ? ? ? ? ? ? ? delta? ? ? ? ? ? ? ? ? ?ductal
##? ? ? ? ? ? ? ? 258? ? ? ? ? ? ? ? 22? ? ? ? ? ? ? ? ? ? ? ? 33
##? ? ? ? endothelial? ? ? ? ? ? epsilon? ? ? ? ? ? ? gamma
##? ? ? ? ? ? ? ? 13? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ? ? ? ? ? ? ? ?17
##? ? ? ? macrophage? ? ? ? ? mast? ? ? ? ? ? ? ? schwann
##? ? ? ? ? ? ? ? ? 1? ? ? ? ? ? ? ? ? ? 2? ? ? ? ? ? ? ? ? ? ? ? 5
VlnPlot(pancreas.query, c("REG1A","PPY","SST","GHRL","VWF","SOX10"), group.by ="predicted.id")