前言
??好久沒寫簡書了疾层,這兩年多一直在做著單細胞的數(shù)據(jù)分析,有單細胞數(shù)據(jù)分析需求的朋友可以私信我厚骗。
??目前單細胞轉錄組單個樣本的成本不斷降低另萤,發(fā)表一篇高分文章的樣本要求也越來越高,不可避免的我們會遇到多樣本合并的問題巫员。今天來介紹下目前單細胞轉錄組分析使用Seurat進行多樣本合并的幾種方法庶香。
方法選擇
??當我們手里拿到多個樣本數(shù)據(jù)時首先需要判斷批次效應的大小,判斷方法是我們先不考慮批次效應直接合并走單樣本聚類分群流程简识「弦矗可以參考我之前的文章Seurat學習與使用(一)。
??左圖是三個樣本直接合并按照單樣本分析流程的聚類圖财异,右圖是三個樣本合并后使用Harmony方法的聚類圖。從兩個圖可以看到唱遭,左圖樣本間存在比較大的批次效應戳寸,相同細胞類型基本按照樣本來分群。而右圖可以看到相同細胞類型各樣本很好的重疊在一起拷泽。目前scRNA數(shù)據(jù)校正批次效應的算法有很多種:主流的有CCA疫鹊、MNN、CCA+MNN司致、RPCA拆吆、Harmony,當然還有其他的一些如Scanorama脂矫、LIGER枣耀、Conos等。下面我主要介紹CCA+MNN庭再、MNN捞奕、RPCA、Harmony四種常用的方法拄轻。
CCA/CCA+MNN
??CCA是早期Seurat(v2)整合數(shù)據(jù)的核心算法颅围。文章發(fā)表在2018年的nature biotechnology,作者是Seurat的開發(fā)者Andrew Butler恨搓。同年在NBT雜志上Haghverdi等人開發(fā)了MNN的算法校正批次效應院促。之后在2019年Andrew等人在Cell發(fā)表文章,將CCA與MNN算法結合起來斧抱,并參考SNN算法的理念設計了“錨點”評分體系常拓,使Seurat整合數(shù)據(jù)能力更強大更穩(wěn)健。使用CCA方法時我們推薦CCA+MNN的方法辉浦,Seurat版本在v3及以上墩邀。CCA+MNN的使用方法可以參考我之前的文章Seurat學習與使用(一)中多個樣本分析部分內(nèi)容。
MNN
??MNN盏浙,即相互近鄰Mutual nearest neighbors眉睹,由Haghverdi提出荔茬。開發(fā)的思想是對一個批次中的細胞找到它們在另一個批次中對應的最相鄰細胞集合。目前SeuratWrappers包已經(jīng)包含了可以使用MNN方法的RunFastMNN函數(shù)竹海。運行操作也很簡單慕蔚,如下:
library(SeuratWrappers)
merge_data<-merge(x = sample1, y=c(sample2,sample3) , add.cell.ids = c('S1','S1','S3'))#合并單個樣本數(shù)據(jù)
merge_data<- RunFastMNN(object.list = SplitObject(merge_data, split.by = 'orig.ident'))#去批次
merge_data<- FindNeighbors(merge_data, reduction = 'mnn',dims = 1:15)#注意使用的是mnn數(shù)據(jù)
merge_data<- FindClusters(merge_data, resolution = 0.5)
merge_data<- RunUMAP(merge_data, reduction = 'mnn', dims = 1:15)#注意使用的是mnn數(shù)據(jù)
DimPlot(merge_data,label = T,reduction = 'umap')#可視化
RPCA
??RPCA,即reciprocal PCA斋配,是目前Seurat主推的一種去批次整合的方法孔飒。基于RPCA的整合運行得更快艰争,同時與CCA方法相比坏瞄,也是一種更保守的方法,不同生物狀態(tài)的細胞在整合后不太可能“對齊”甩卓。在實際項目分析過程中我也發(fā)現(xiàn)RPCA的效果是要優(yōu)于CCA鸠匀,大家可以對比試試。詳細使用方法可以點擊reciprocal PCA鏈接逾柿。
Harmony
??與其他整合方法相比缀棍,Harmony運行時比較快速,內(nèi)存低机错,整合效果沒CCA那么暴力爬范,對稀有細胞的敏感性也比較好。同時在亞群細分時可以提取子集后再運行Harmony這樣也比CCA的方法要方便弱匪。
??Harmony算法概述如上圖所示:用顏色表示數(shù)據(jù)集青瀑,用形狀表示不同的細胞類型。首先萧诫,Harmony 應用PCA主成分分析將轉錄組范圍的表達譜嵌入到降維空間中狱窘。然后我們應用一個迭代過程來移除數(shù)據(jù)集的特定效果。 (A) Harmony 將細胞概率性地分配給集群财搁,最大限度地提高每個集群內(nèi)數(shù)據(jù)集的多樣性蘸炸。 (B) Harmony 計算每個集群的所有數(shù)據(jù)集的全局質(zhì)心,以及特定于數(shù)據(jù)集的質(zhì)心尖奔。 (C) 在每個集群內(nèi)搭儒,Harmony 根據(jù)質(zhì)心計算每個數(shù)據(jù)集的校正因子。 (D) 最后提茁,Harmony 使用基于 C 的細胞特定因子校正每個細胞淹禾。由于Harmony使用軟聚類,每個單獨的細胞可以通過與 A 中軟聚類分配比例的多個因素的線性組合進行校正茴扁。 Harmony 重復步驟 A 到 D 直到收斂铃岔。集群分配和數(shù)據(jù)集之間的依賴性隨著每一輪而減少。操作命令如下:
library(harmony)
merge_data<-merge(x = sample1, y=c(sample2,sample3) , add.cell.ids = c('S1','S1','S3'))#合并單個樣本數(shù)據(jù)
merge_data<- merge_data %>% Seurat::NormalizeData(verbose = FALSE) %>% FindVariableFeatures(selection.method = 'vst', nfeatures = 2000) %>% ScaleData(verbose = FALSE) %>% RunPCA(verbose = FALSE)#標準化
merge_data<- RunHarmony(merge_data, 'orig.ident')#去批次
merge_data<- FindNeighbors(merge_data, reduction = 'harmony',dims = 1:15)#注意使用的是harmony數(shù)據(jù)
merge_data<- FindClusters(merge_data, resolution = 0.5)
merge_data<- RunUMAP(merge_data, reduction = 'harmony', dims = 1:15)#注意使用的是harmony數(shù)據(jù)
DimPlot(merge_data,label = T,reduction = 'umap')#可視化
總結
??每種去批次的方法各有優(yōu)劣,需要根據(jù)自己樣本的實際情況選定毁习。如果自己樣本批次效應非常大(例如不同平臺智嚷、不同組織),建議選用CCA的方法纺且,如果批次效應較姓档馈(同一平臺、相同組織)载碌,可以選擇RPCA或者Harmony的方法猜嘱。當然,樣本整合的最終效果還得看分出來的群是否清晰無重疊嫁艇、群與群之間的marker很特異朗伶,這都需要花費大量時間反復調(diào)整整合參數(shù),最終才能得到理想的分群結果步咪。
參考文章
單細胞轉錄組高級分析一:多樣本合并與批次校正
單細胞數(shù)據(jù)整合-1:Harmony原理介紹和官網(wǎng)教程