CibersortX的替代者BayesPrism用單細(xì)胞數(shù)據(jù)去卷積得到普通轉(zhuǎn)錄組細(xì)胞類型比例

CibersortX網(wǎng)站是常用的工具,但是是網(wǎng)頁上傳數(shù)據(jù)励两,現(xiàn)在網(wǎng)頁503打不開,而BayesPrism在PMID: 37717006 文章benchmark 9種方法中發(fā)現(xiàn)BayesPrism的假陽性與假陰性數(shù)量上最低,并且在分解精細(xì)的免疫譜系時(shí)展現(xiàn)出最佳性能古毛;因此可以作為替代工具钦购,并且BayesPrism也提供了網(wǎng)頁工具檐盟,不過我們還是習(xí)慣本地跑代碼;新版的BayesPrism支持系數(shù)矩陣作為輸入押桃。

BayesPrism是一個(gè)綜合工具葵萎,旨在利用貝葉斯統(tǒng)計(jì)方法從bulk RNA測(cè)序數(shù)據(jù)中精確解析腫瘤微環(huán)境的細(xì)胞組成,并同時(shí)考慮細(xì)胞特異性的基因表達(dá)模式怨规,通過先進(jìn)的算法模塊實(shí)現(xiàn)對(duì)復(fù)雜細(xì)胞混合物的深入分析和理解陌宿。

BayesPrism包含細(xì)胞去卷積模塊和嵌入學(xué)習(xí)模塊。細(xì)胞去卷積模塊依據(jù)來自單細(xì)胞RNA測(cè)序(scRNA-seq)的細(xì)胞類型特異性表達(dá)輪廓建立先驗(yàn)波丰,聯(lián)合估計(jì)腫瘤(或非腫瘤)樣本的bulk RNA-seq表達(dá)數(shù)據(jù)中細(xì)胞類型組成及其特異性基因表達(dá)的后驗(yàn)分布壳坪。嵌入學(xué)習(xí)模塊采用期望最大化算法,基于去卷積模塊推測(cè)出的非惡性細(xì)胞表達(dá)量和比例條件掰烟,通過線性組合惡性基因程序來近似腫瘤表達(dá)模式爽蝴。

BayesPrism示意圖沐批,每個(gè)步驟在做什么

安裝

library(remotes)
remotes::install_github("Danko-Lab/BayesPrism")

注:using是我寫的函數(shù),有需要可以后臺(tái)聯(lián)系蝎亚,加入交流群九孩;using作用是一次性加載多個(gè)R包,不用寫雙引號(hào)发框,并且不在屏幕上打印包的加載信息
加載示例數(shù)據(jù)躺彬,可以后臺(tái)聯(lián)系獲得數(shù)據(jù)代碼和結(jié)果文件

using(remotes, data.table, BayesPrism)
load('tutorial.gbm.rdata')

輸入文件

bk.dat: bulk轉(zhuǎn)錄組表達(dá)譜(矩陣、行樣本梅惯、列基因)
sc.dat: 單細(xì)胞轉(zhuǎn)錄組表達(dá)譜(矩陣宪拥、行樣本、列基因)
cell.type.labels: 細(xì)胞標(biāo)簽(向量)
cell.state.labels: 細(xì)胞狀態(tài)標(biāo)簽(向量铣减,每個(gè)標(biāo)簽對(duì)應(yīng)的細(xì)胞數(shù)目要大于20)
注意:

  1. bk.dat等只是變量名換成其他也行她君;
  2. bk.dat和sc.dat為同樣的標(biāo)準(zhǔn)化方式,支持raw count葫哗、TPM, RPM, RPKM, FPKM缔刹,不支持log轉(zhuǎn)化后的數(shù)據(jù)

質(zhì)控圖

相關(guān)性圖查看樣本間相關(guān)性

BayesPrism::plot.cor.phi(
    input = sc.dat,
    input.labels = cell.state.labels,
    title = "cell state correlation",
    pdf.prefix="gbm.cor.cs",
    cexRow = 0.2,
    cexCol = 0.2,
    margins = c(2, 2)
)

相關(guān)性圖查看細(xì)胞類型間相關(guān)性

BayesPrism::plot.cor.phi(
    input = sc.dat,
    input.labels = cell.type.labels,
    title = "cell type correlation",
    pdf.prefix="gbm.cor.ct",
    cexRow = 0.5,
    cexCol = 0.5
)

過濾基因

目的:去除線粒體、核糖體基因劣针、性染色體基因校镐、低表達(dá)基因,只選擇編碼蛋白的基因
繪制單細(xì)胞和bulk的離群基因
圖中顯示每個(gè)基因的歸一化平均表達(dá)(x 軸)和最大特異性(y 軸)的對(duì)數(shù)捺典,以及每個(gè)基因是否屬于一個(gè)潛在的“異趁鹣瑁”,糖體蛋白基因通常表現(xiàn)出高平均表達(dá)水平和低細(xì)胞類型特異性得分辣苏。

sc.stat <- BayesPrism::plot.scRNA.outlier(
    input = sc.dat, # make sure the colnames are gene symbol or ENSMEBL ID
    cell.type.labels = cell.type.labels,
    species = "hs", # currently only human(hs) and mouse(mm) annotations are supported
    return.raw = TRUE # return the data used for plotting.
    pdf.prefix="gbm.sc.stat"
)
bk.stat <- BayesPrism::plot.bulk.outlier(
    bulk.input = bk.dat, # make sure the colnames are gene symbol or ENSMEBL ID
    sc.input = sc.dat, # make sure the colnames are gene symbol or ENSMEBL ID
    cell.type.labels = cell.type.labels,
    species = "hs", # currently only human(hs) and mouse(mm) annotations are supported
    return.raw = TRUE
    pdf.prefix="gbm.bk.stat"
)

去除線粒體肝箱、核糖體基因、性染色體基因稀蟋、低表達(dá)基因

sc.dat.filtered <- BayesPrism::cleanup.genes(
    input = sc.dat,
    input.type = "count.matrix",
    species = "hs",
    gene.group = c("Rb", "Mrp", "other_Rb", "chrM", "MALAT1", "chrX", "chrY"),
    exp.cells = 5
)

繪制bk.dat與sc.dat間的相關(guān)性(只支持人的基因數(shù)據(jù))

BayesPrism::plot.bulk.vs.sc(
    sc.input = sc.dat.filtered,
    bulk.input = bk.dat
    pdf.prefix="gbm.bk.vs.sc"
)

只選擇編碼蛋白的基因

sc.dat.filtered.pc <- BayesPrism::select.gene.type(sc.dat.filtered, gene.type = "protein_coding")

選擇signature基因

用差異分析方法給每個(gè)細(xì)胞類型選擇相應(yīng)的marker基因(>50)煌张,如果基因少,可以調(diào)整閾值

diff.exp.stat <- BayesPrism::get.exp.stat(
    sc.dat = sc.dat[, colSums(sc.dat > 0) > 3], # filter genes to reduce memory use
    cell.type.labels = cell.type.labels,
    cell.state.labels = cell.state.labels,
    pseudo.count = 0.1, # a numeric value used for log2 transformation. =0.1 for 10x data, =10 for smart-seq. Default=0.1.
    cell.count.cutoff = 50, # a numeric value to exclude cell state with number of cells fewer than this value for t test. Default=50.
    n.cores = 1 # number of threads
)
sc.dat.filtered.pc.sig <- BayesPrism::select.marker(
    sc.dat = sc.dat.filtered.pc,
    stat = diff.exp.stat,
    pval.max = 0.01,
    lfc.min = 0.1
)

構(gòu)造Prism對(duì)象

myPrism <- BayesPrism::new.prism(
    reference = sc.dat.filtered.pc,
    mixture = bk.dat,
    input.type = "count.matrix",
    cell.type.labels = cell.type.labels,
    cell.state.labels = cell.state.labels,
    key = "tumor",
    outlier.cut = 0.01,
    outlier.fraction = 0.1,
)

運(yùn)行BayesPrism

分布運(yùn)行退客,

bp.res.initial <- BayesPrism::run.prism(prism = myPrism, n.cores = 50, update.gibbs = FALSE)
base::saveRDS(bp.res.initial, file = file.path(outdir, "bp.res.initial.rds"))
bp.res.update <- BayesPrism::update.theta(bp = bp.res.initial)
base::saveRDS(bp.res.update, file = file.path(outdir, "bp.res.update.rds"))

提取細(xì)胞比例

BayesPrism在輸出中同時(shí)保留了細(xì)胞類型組成θ0的初始估計(jì)值和經(jīng)過更新的細(xì)胞類型組成估計(jì)值θf骏融。大多數(shù)情況下,用戶應(yīng)使用更新后的θ值萌狂,因?yàn)樗芨倪M(jìn)初始估計(jì)档玻。然而,在某些特殊情況下茫藏,可能需要使用初始估計(jì)值θ0误趴。例如,當(dāng)混合物中腫瘤成分含量較少(<50%)時(shí)务傲,或者參考樣本和混合樣本之間不存在批次效應(yīng)凉当,比如參考數(shù)據(jù)是從同一bulk RNA-seq平臺(tái)上通過流式細(xì)胞分選獲得的情況下枣申。

theta <- BayesPrism::get.fraction(
    bp = bp.res.update,
    which.theta = "final",
    state.or.type = "type"
)
data.table::as.data.table(theta, keep.rownames = "Sample") %>% data.table::fwrite(file.path(outdir, "theta.csv"))

Reference

https://www.bayesprism.org/
https://github.com/Danko-Lab/BayesPrism

本文由mdnice多平臺(tái)發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市看杭,隨后出現(xiàn)的幾起案子忠藤,更是在濱河造成了極大的恐慌,老刑警劉巖楼雹,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件模孩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贮缅,警方通過查閱死者的電腦和手機(jī)瓜贾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來携悯,“玉大人,你說我怎么就攤上這事筷笨°竟恚” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵胃夏,是天一觀的道長轴或。 經(jīng)常有香客問我,道長仰禀,這世上最難降的妖魔是什么照雁? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮答恶,結(jié)果婚禮上饺蚊,老公的妹妹穿的比我還像新娘。我一直安慰自己悬嗓,他們只是感情好污呼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著包竹,像睡著了一般燕酷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上周瞎,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天苗缩,我揣著相機(jī)與錄音,去河邊找鬼声诸。 笑死酱讶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彼乌。 我是一名探鬼主播浴麻,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼得问,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了软免?” 一聲冷哼從身側(cè)響起宫纬,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膏萧,沒想到半個(gè)月后漓骚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榛泛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蝌蹂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曹锨。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孤个,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沛简,到底是詐尸還是另有隱情齐鲤,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布椒楣,位于F島的核電站给郊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捧灰。R本人自食惡果不足惜淆九,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毛俏。 院中可真熱鬧炭庙,春花似錦、人聲如沸煌寇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唧席。三九已至擦盾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淌哟,已是汗流浹背迹卢。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徒仓,地道東北人腐碱。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親症见。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喂走,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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