單細胞數(shù)據(jù)整合分析——批次效應(yīng)(batch effect)去除

在單細胞分析當(dāng)中瞭吃,經(jīng)常會遇到整合分析的問題,即去除多樣本數(shù)據(jù)之間的批次效應(yīng)(batch effect)杜跷,那么什么是批次效應(yīng)呢傍念?簡而言之,批次效應(yīng)就是由于不同時間葛闷、不同實驗人員憋槐、不同儀器等因素造成的實驗性誤差区赵,而非本身的生物學(xué)差異泻肯。如果我們不去除批次效應(yīng)业踢,那么這些差異就會和本身的生物學(xué)差異相混淆陕悬。但是隨著測序成本的降低,單細胞測序已經(jīng)“深入尋常百姓家”搞糕,所以在追求大數(shù)據(jù)量的同時稿湿,肯定會伴隨著batch effect的產(chǎn)生集峦,自然batch effect的去除就成為單細胞數(shù)據(jù)分析的重要技能旷赖。2020年發(fā)表在Genome Biology上的一篇文章系統(tǒng)性總結(jié)了目前的batch effect去除方法顺又。

今天給大家分享幾種目前使用比較廣泛的單細胞數(shù)據(jù)整合分析的方法。本次演示所使用的示例數(shù)據(jù)如有需要等孵,可在留言區(qū)留言獲取。

merge()

首先是直接使用merge()函數(shù)對兩個單細胞數(shù)據(jù)進行直接整合蹂空,這時我們需要準備的輸入文件為一個由需要去除batch effect的Seurat對象組成的列表俯萌,那么如何實現(xiàn)呢?

library(Seurat)
library(ggplot2)
library(data.table)
setwd('GSE129139-mouse-T_cells')
samples=list.files('GSE129139_RAW/')

注意上枕,我們這里的數(shù)據(jù)是怎么存放的咐熙,我們在GSE129139_RAW/這個文件夾下面存放著我們需要去除batch effect的樣品數(shù)據(jù),一個樣品辨萍,一個文件夾棋恼,每個文件夾里面是什么就不用說了吧!

sceList = lapply(samples, function(pro){ 
  folder=file.path('GSE129139_RAW', pro) #file.path(a,b) means the path: a/b
  sce=CreateSeuratObject(counts = Read10X(folder), 
                         project = pro)
  return(sce)
})

上面的code實際上做了這樣的一件事:按順序讀取了存放著三個Read10X()輸入文件的文件夾锈玉,并依次創(chuàng)建了Seurat對象爪飘,存放在一個名為sceList的列表中。
然后我們利用merge()函數(shù)進行數(shù)據(jù)的整合:

sce.all = merge(sceList[[1]], y = sceList[[2]], 
                add.cell.ids = samples)

需要注意的是:(1)我們想把sample信息添加到cell barcode上拉背,只需要添加add.cell.ids參數(shù)即可师崎,這個參數(shù)賦給它一個向量;(2)上述的merge()默認只會簡單整合源數(shù)據(jù)(raw data)椅棺,如果你的Seurat對象是已經(jīng)經(jīng)過NormalizeData()的犁罩,可以直接添加merge.data = TRUE齐蔽,來merge標(biāo)準化后的數(shù)據(jù)。

By default, merge() will combine the Seurat objects based on the raw count matrices, erasing any previously normalized and scaled data matrices. If you want to merge the normalized data matrices as well as the raw count matrices, simply pass merge.data = TRUE. This should be done if the same normalization approach was applied to all objects.

Seurat錨點整合

這是Seurat為了適應(yīng)大需求添加的新功能床估,錨點整合是從Seurat3開始上線的含滴,其原理在這里不贅述,放出原始論文鏈接Stuart, Butler, et al., Cell 2019 [Seurat V3]
同樣是需要由幾個Seurat對象組成的列表作為輸入丐巫,不同的是谈况,我們需要提前對數(shù)據(jù)進行NormalizeData()和FindVariableFeatures()處理

sceList <- lapply(sceList, FUN = function(x) {
    x <- NormalizeData(x)
    x <- FindVariableFeatures(x, selection.method = "vst", nfeatures = 2000)
})
# select features that are repeatedly variable across datasets for integration
features <- SelectIntegrationFeatures(object.list = sceList)
sce <- FindIntegrationAnchors(object.list = sceList, anchor.features = features)
# this command creates an 'integrated' data assay
sce <- IntegrateData(anchorset = sce)

需要注意的是,從這里開始鞋吉,后面的數(shù)據(jù)分析請指定assay為integrated鸦做,否則你還在用原始的RNA assay進行分析,等于沒整合谓着。你可以通過以下命令更改默認assay泼诱,這樣就不用每次都進行聲明!

DefaultAssay(immune.combined) <- "integrated"

harmony

harmony單細胞數(shù)據(jù)整合方法于2019年發(fā)表在Nature Methods上赊锚,題為Fast, sensitive and accurate integration of single-cell data with Harmony治筒。harmony整合方法算得上是一種比較好的方法,目前應(yīng)用也是比較多的舷蒲,原理見文章耸袜,這里繼續(xù)展示具體流程:

#use the sce.all seurat object from the first part
sce.all <- NormalizeData(sce.all, normalization.method = "LogNormalize", scale.factor = 1e4) 
sce.all <- FindVariableFeatures(sce.all)
sce.all <- ScaleData(sce.all)
sce.all <- RunPCA(sce.all, features = VariableFeatures(object = sce.all))

library(harmony)
sce.all <- RunHarmony(sce.all, group.by.vars = "orig.ident") 
#group.by.vars表示按照什么來進行整合,亦即去掉什么方面的差異
#harmony還有參數(shù)lambda牲平,這個參數(shù)越小堤框,整合力度越大,一般按默認
#……

需要注意的是纵柿,如果你用harmony整合蜈抓,后續(xù)的下游分析,請指定 reduction = 'harmony' 昂儒,否則你的整合沒有意義沟使。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渊跋,隨后出現(xiàn)的幾起案子腊嗡,更是在濱河造成了極大的恐慌,老刑警劉巖拾酝,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燕少,死亡現(xiàn)場離奇詭異,居然都是意外死亡微宝,警方通過查閱死者的電腦和手機棺亭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人镶摘,你說我怎么就攤上這事嗽桩。” “怎么了凄敢?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵碌冶,是天一觀的道長。 經(jīng)常有香客問我涝缝,道長扑庞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任拒逮,我火速辦了婚禮罐氨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滩援。我一直安慰自己栅隐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布玩徊。 她就那樣靜靜地躺著租悄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恩袱。 梳的紋絲不亂的頭發(fā)上泣棋,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音畔塔,去河邊找鬼潭辈。 笑死,一個胖子當(dāng)著我的面吹牛澈吨,可吹牛的內(nèi)容都是我干的萎胰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼棚辽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冰肴?” 一聲冷哼從身側(cè)響起屈藐,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熙尉,沒想到半個月后联逻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡检痰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年包归,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅歼。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡公壤,死狀恐怖换可,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厦幅,我是刑警寧澤沾鳄,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站确憨,受9級特大地震影響译荞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜休弃,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一吞歼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧塔猾,春花似錦篙骡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至老虫,卻和暖如春叶骨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祈匙。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工忽刽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夺欲。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓跪帝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親些阅。 傳聞我的和親對象是個殘疾皇子伞剑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容