CellChat三部曲1:使用CellChat對(duì)單個(gè)數(shù)據(jù)集進(jìn)行細(xì)胞間通訊分析

CellChat三部曲1:使用CellChat對(duì)單個(gè)數(shù)據(jù)集進(jìn)行細(xì)胞間通訊分析

自從周運(yùn)來在簡(jiǎn)書寫了一篇cellchat的中文介紹教程挪蹭,然后R包作者也在B站做了直播介紹蠕搜,cellchat作為一個(gè)細(xì)胞通訊分析的新興R包昌腰,受到了廣泛關(guān)注住闯。教程也如雨后春筍般涌現(xiàn)接奈。

鑒于R包誕生之初有一些bug师骗,作為初學(xué)者學(xué)習(xí)走通可能有一定難度,這里再次對(duì)cellchat進(jìn)行系統(tǒng)介紹薪韩,希望對(duì)大家有所幫助确沸。當(dāng)然現(xiàn)在也有些小bug,但這些基本都可以通過搜索解決俘陷,這些小bug我大都寫過教程了罗捎。

系列教程共三篇:?jiǎn)蝹€(gè)數(shù)據(jù)集分析,多個(gè)數(shù)據(jù)集比較分析拉盾,具有較大成分差異的數(shù)據(jù)集比較分析桨菜。本教程是單個(gè)數(shù)據(jù)集分析流程

此教程概述了使用 CellChat 的單個(gè)數(shù)據(jù)集對(duì)細(xì)胞通信網(wǎng)絡(luò)進(jìn)行推斷、分析和可視化的步驟讹躯。我們通過將其應(yīng)用于人類患者病變皮膚細(xì)胞 (LS) 的 scRNA-seq 數(shù)據(jù)來展示 CellChat 的多種功能菩彬。

CellChat 要求將細(xì)胞的基因表達(dá)數(shù)據(jù)作為輸入缠劝,并通過將基因表達(dá)與信號(hào)配體、受體與其同因子之間的相互作用的先驗(yàn)知識(shí)相結(jié)合來對(duì)細(xì)胞-細(xì)胞通信的概率進(jìn)行模擬骗灶。

在推斷細(xì)胞間通信網(wǎng)絡(luò)后惨恭,CellChat 為進(jìn)一步的數(shù)據(jù)探索、分析和可視化提供了功能耙旦。

加載所需的包

library(CellChat)
library(patchwork)
options(stringsAsFactors = FALSE)

第一部分:CellChat對(duì)象的數(shù)據(jù)輸入脱羡、處理及初始化

CellChat 需要兩個(gè)輸入:一個(gè)是細(xì)胞的基因表達(dá)數(shù)據(jù),另一個(gè)是用戶分配的細(xì)胞標(biāo)簽(即基于標(biāo)簽的模式)或單細(xì)胞數(shù)據(jù)的低維表示(即無標(biāo)簽?zāi)J剑┟舛肌?duì)于后者锉罐,CellChat 通過根據(jù)低維空間或偽時(shí)間軌跡空間中的細(xì)胞距離構(gòu)建共享的鄰近圖自動(dòng)對(duì)細(xì)胞進(jìn)行分組。

加載數(shù)據(jù)

對(duì)于基因表達(dá)數(shù)據(jù)矩陣绕娘,要求基因?yàn)樾忻ケ桑?xì)胞為列名。需要將標(biāo)準(zhǔn)化數(shù)據(jù)作為 CellChat 分析的輸入业舍。如果用戶提供count數(shù)據(jù)抖拦,我們提供一個(gè)函數(shù)normalizeData來計(jì)算文庫大小,然后進(jìn)行l(wèi)og轉(zhuǎn)換舷暮。對(duì)于分組信息态罪,需要使用帶有行名的數(shù)據(jù)作為CellChat 的輸入。

# Here we load a scRNA-seq data matrix and its associated cell meta data
load(url("https://ndownloader.figshare.com/files/25950872")) # This is a combined data from two biological conditions: normal and diseases
data.input = data_humanSkin$data # normalized data matrix
meta = data_humanSkin$meta # a dataframe with rownames containing cell mata data
cell.use = rownames(meta)[meta$condition == "LS"] # extract the cell names from disease data

# Prepare input data for CelChat analysis
data.input = data.input[, cell.use]
meta = meta[cell.use, ]
# meta = data.frame(labels = meta$labels[cell.use], row.names = colnames(data.input)) # manually create a dataframe consisting of the cell labels
unique(meta$labels) # check the cell labels
#>  [1] Inflam. FIB  FBN1+ FIB    APOE+ FIB    COL11A1+ FIB cDC2        
#>  [6] LC           Inflam. DC   cDC1         CD40LG+ TC   Inflam. TC  
#> [11] TC           NKT         
#> 12 Levels: APOE+ FIB FBN1+ FIB COL11A1+ FIB Inflam. FIB cDC1 cDC2 ... NKT

創(chuàng)建CellChat 對(duì)象

用戶可以從數(shù)據(jù)矩陣下面、Seurat 或SingleCellExperiment對(duì)象創(chuàng)建新的 CellChat 對(duì)象复颈。如果輸入是 Seurat 或SingleCellExperiment對(duì)象,則默認(rèn)情況下將使用對(duì)象中的meta data沥割,用戶必須提供該數(shù)據(jù)來定義細(xì)胞分組耗啦。例如,group.by=Seurat 對(duì)象中默認(rèn)的細(xì)胞標(biāo)識(shí)机杜。

NB:如果用戶加載以前計(jì)算的CellChat 對(duì)象(版本<0.5.0)帜讲,請(qǐng)通過updateCellChat更新對(duì)象

cellchat <- createCellChat(object = data.input, meta = meta, group.by = "labels")
#> Create a CellChat object from a data matrix
#> Set cell identities for the new CellChat object
#> The cell groups used for CellChat analysis are  APOE+ FIB FBN1+ FIB COL11A1+ FIB Inflam. FIB cDC1 cDC2 LC Inflam. DC TC Inflam. TC CD40LG+ TC NKT

將細(xì)胞信息添加到對(duì)象的meta slot中

如果在創(chuàng)建cellchat對(duì)象時(shí)未添加細(xì)胞meta信息,用戶也可以稍后添加該信息椒拗,并使用setIdent設(shè)置該對(duì)象默認(rèn)的細(xì)胞標(biāo)識(shí)似将。

cellchat <- addMeta(cellchat, meta = meta)
cellchat <- setIdent(cellchat, ident.use = "labels") # set "labels" as default cell identity
levels(cellchat@idents) # show factor levels of the cell labels
groupSize <- as.numeric(table(cellchat@idents)) # number of cells in each cell group

設(shè)置配體受體交互數(shù)據(jù)庫

我們的數(shù)據(jù)庫 CellChatDB 是一個(gè)手動(dòng)整理的文獻(xiàn)支持的配體受體在人和小鼠中的交互數(shù)據(jù)庫。小鼠中的CellChatDB包含2蚀苛,021個(gè)經(jīng)驗(yàn)證的分子相互作用在验,包括60%的自分泌/旁分泌信號(hào)相互作用、21%的細(xì)胞外基質(zhì)(ECM)受體相互作用和19%的細(xì)胞-細(xì)胞接觸相互作用堵未。人的CellChatDB包含1腋舌,939個(gè)經(jīng)驗(yàn)證的分子相互作用,包括61.8%的自分泌/旁分泌信號(hào)相互作用渗蟹、21.7%的細(xì)胞外基質(zhì)(ECM)受體相互作用和16.5%的細(xì)胞-細(xì)胞接觸相互作用块饺。

用戶可以通過添加自己精心整理的配體受體對(duì)來更新 CellChatDB耻陕。

CellChatDB <- CellChatDB.human # use CellChatDB.mouse if running on mouse data
showDatabaseCategory(CellChatDB)
image-20210712205321703
# Show the structure of the database
dplyr::glimpse(CellChatDB$interaction)
#> Rows: 1,939
#> Columns: 11
#> $ interaction_name   <chr> "TGFB1_TGFBR1_TGFBR2", "TGFB2_TGFBR1_TGFBR2", "TGF…
#> $ pathway_name       <chr> "TGFb", "TGFb", "TGFb", "TGFb", "TGFb", "TGFb", "T…
#> $ ligand             <chr> "TGFB1", "TGFB2", "TGFB3", "TGFB1", "TGFB1", "TGFB…
#> $ receptor           <chr> "TGFbR1_R2", "TGFbR1_R2", "TGFbR1_R2", "ACVR1B_TGF…
#> $ agonist            <chr> "TGFb agonist", "TGFb agonist", "TGFb agonist", "T…
#> $ antagonist         <chr> "TGFb antagonist", "TGFb antagonist", "TGFb antago…
#> $ co_A_receptor      <chr> "", "", "", "", "", "", "", "", "", "", "", "", ""…
#> $ co_I_receptor      <chr> "TGFb inhibition receptor", "TGFb inhibition recep…
#> $ evidence           <chr> "KEGG: hsa04350", "KEGG: hsa04350", "KEGG: hsa0435…
#> $ annotation         <chr> "Secreted Signaling", "Secreted Signaling", "Secre…
#> $ interaction_name_2 <chr> "TGFB1 - (TGFBR1+TGFBR2)", "TGFB2 - (TGFBR1+TGFBR2…

# use a subset of CellChatDB for cell-cell communication analysis
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling") # use Secreted Signaling
# use all CellChatDB for cell-cell communication analysis
# CellChatDB.use <- CellChatDB # simply use the default CellChatDB

# set the used database in the object
cellchat@DB <- CellChatDB.use

預(yù)處理用于細(xì)胞通信分析的表達(dá)數(shù)據(jù)

為了推斷細(xì)胞狀態(tài)特異的通信,我們識(shí)別一個(gè)細(xì)胞組中過度表達(dá)的配體或受體刨沦,然后識(shí)別過度表達(dá)的配體受體相互作用,是否過表達(dá)膘怕。

我們還提供將基因表達(dá)數(shù)據(jù)投影到蛋白質(zhì)-蛋白質(zhì)相互作用 (PPI) 網(wǎng)絡(luò)上的功能想诅。具體來說,投影過程根據(jù)高度可信的實(shí)驗(yàn)驗(yàn)證的蛋白質(zhì)-蛋白質(zhì)網(wǎng)絡(luò)中定義的基因表達(dá)值來平滑基因的表達(dá)值岛心。此功能在分析具有淺測(cè)序深度的單細(xì)胞數(shù)據(jù)時(shí)很有用来破,因?yàn)橥队翱蓽p少信號(hào)基因的dropput效應(yīng),特別是對(duì)于配體/受體的可能的零表達(dá)忘古。人們可能擔(dān)心這種投影過程可能引入的人為因素徘禁,但是,這幾乎可以忽略不計(jì)髓堪。用戶還可以通過在函數(shù)computeCommunProb()中國(guó)設(shè)置raw.use = TRUE跳過此步驟送朱。

cellchat <- subsetData(cellchat) # subset the expression data of signaling genes for saving computation cost
future::plan("multiprocess", workers = 4) # do parallel
#> Warning: [ONE-TIME WARNING] Forked processing ('multicore') is disabled
#> in future (>= 1.13.0) when running R from RStudio, because it is
#> considered unstable. Because of this, plan("multicore") will fall
#> back to plan("sequential"), and plan("multiprocess") will fall back to
#> plan("multisession") - not plan("multicore") as in the past. For more details,
#> how to control forked processing or not, and how to silence this warning in
#> future R sessions, see ?future::supportsMulticore
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
cellchat <- projectData(cellchat, PPI.human)

第二部分:細(xì)胞通信網(wǎng)絡(luò)的推斷

CellChat 通過分配具有概率值的每個(gè)相互作用并進(jìn)行排列檢驗(yàn),來推斷具有生物學(xué)意義的細(xì)胞-細(xì)胞通信干旁。CellChat通過將基因表達(dá)與先前已知的信號(hào)配體驶沼、受體及其同因子之間的相互作用知識(shí)相結(jié)合,利用大量作用規(guī)律争群,對(duì)細(xì)胞-細(xì)胞通信的概率進(jìn)行模擬回怜。

推斷的配體受體對(duì)的數(shù)量顯然取決于計(jì)算每個(gè)細(xì)胞組平均基因表達(dá)的方法。默認(rèn)情況下换薄,CellChat 使用一種統(tǒng)計(jì)學(xué)上強(qiáng)大的均值方法玉雾,稱為"trimean",與其他方法相比轻要,它產(chǎn)生的相互作用更少复旬。然而,我們發(fā)現(xiàn) CellChat 在預(yù)測(cè)更強(qiáng)的交互方面表現(xiàn)良好冲泥,這非常有助于縮小交互范圍赢底,以便進(jìn)一步進(jìn)行實(shí)驗(yàn)驗(yàn)證。在computeCommunProb中柏蘑,我們提供了一個(gè)選項(xiàng)幸冻,用于使用其他方法,如5%和10%截?cái)嗑悼确伲瑏碛?jì)算平均基因表達(dá)洽损。值得注意的是,"trimean"大約是25%的截?cái)嗥骄蹈锇耄@意味著如果一組表達(dá)細(xì)胞的百分比低于25%碑定,則平均基因表達(dá)為零流码。要使用 10% 截?cái)嗟钠骄担脩艨梢栽O(shè)置type = "truncatedMean"和對(duì)trim = 0.1延刘。

在分析未分類的單細(xì)胞轉(zhuǎn)錄組時(shí)漫试,假設(shè)豐富的細(xì)胞群傾向于發(fā)送比稀有細(xì)胞群更強(qiáng)的信號(hào),CellChat 還可以在概率計(jì)算中考慮每個(gè)細(xì)胞組中細(xì)胞比例的影響碘赖。用戶可以設(shè)置population.size = TRUE

計(jì)算通信概率并推斷cellchat網(wǎng)絡(luò)

cellchat <- computeCommunProb(cellchat, raw.use = TRUE)
# Filter out the cell-cell communication if there are only few number of cells in certain cell groups
cellchat <- filterCommunication(cellchat, min.cells = 10)

提取推斷的cellchat網(wǎng)絡(luò)作為數(shù)據(jù)框架

我們提供一個(gè)函數(shù)subsetCommunication驾荣,以輕松訪問推斷感興趣的細(xì)胞-細(xì)胞通信。例如

  • df.net <- subsetCommunication(cellchat)返回一個(gè)數(shù)據(jù)框架普泡,該數(shù)據(jù)框架由配體/受體級(jí)別的所有推斷細(xì)胞通信組成播掷。設(shè)置slot.name = "netP"可以在信號(hào)通路級(jí)別訪問推斷的通信
  • df.net <- subsetCommunication(cellchat, sources.use = c(1,2), targets.use = c(4,5))將推斷的細(xì)胞-細(xì)胞通信從細(xì)胞組1和2發(fā)送到細(xì)胞組4和5。
  • df.net <- subsetCommunication(cellchat, signaling = c("WNT", "TGFb"))通過向WNT和TGFb發(fā)出信號(hào)來調(diào)節(jié)推斷的細(xì)胞通信撼班。

在信號(hào)通路級(jí)別推斷細(xì)胞-細(xì)胞通信

CellChat 通過總結(jié)與每個(gè)信號(hào)通路相關(guān)的所有配體-受體相互作用的通信概率歧匈,來計(jì)算信號(hào)通路級(jí)別上的通信概率。

NB:每個(gè)配體受體對(duì)和每個(gè)信號(hào)通路的推斷細(xì)胞間通信網(wǎng)絡(luò)分別存儲(chǔ)在插槽"net"和"netP"中砰嘁。

cellchat <- computeCommunProbPathway(cellchat)

計(jì)算整合的細(xì)胞通信網(wǎng)絡(luò)

我們可以通過計(jì)算鏈接數(shù)或匯總通信概率來計(jì)算整合的細(xì)胞通信網(wǎng)絡(luò)件炉。用戶還可以通過設(shè)置sources.usetargets.use`

cellchat <- aggregateNet(cellchat)

我們還可以可視化整合的細(xì)胞通信網(wǎng)絡(luò)。例如矮湘,使用圓圖顯示任意兩個(gè)細(xì)胞組之間的相互作用次數(shù)或總交互強(qiáng)度(比重)妻率。

groupSize <- as.numeric(table(cellchat@idents))par(mfrow = c(1,2), xpd=TRUE)netVisual_circle(cellchat@net$count, vertex.weight = groupSize, weight.scale = T, label.edge= F, title.name = "Number of interactions")netVisual_circle(cellchat@net$weight, vertex.weight = groupSize, weight.scale = T, label.edge= F, title.name = "Interaction weights/strength")
1624016377034

由于細(xì)胞通信網(wǎng)絡(luò)復(fù)雜,我們可以檢查每個(gè)細(xì)胞組發(fā)送的信號(hào)板祝。在這里宫静,我們還控制參數(shù)edge.weight.max,以便我們可以比較不同網(wǎng)絡(luò)之間的邊緣權(quán)重券时。

mat <- cellchat@net$weightpar(mfrow = c(3,4), xpd=TRUE)for (i in 1:nrow(mat)) {  mat2 <- matrix(0, nrow = nrow(mat), ncol = ncol(mat), dimnames = dimnames(mat))  mat2[i, ] <- mat[i, ]  netVisual_circle(mat2, vertex.weight = groupSize, weight.scale = T, edge.weight.max = max(mat), title.name = rownames(mat)[i])}
1624016427726

第三部分:細(xì)胞通信網(wǎng)絡(luò)的可視化

在推斷細(xì)胞通信網(wǎng)絡(luò)后孤里,CellChat 為進(jìn)一步的數(shù)據(jù)探索、分析和可視化提供了各種功能橘洞。

  • 它提供了幾種可視化細(xì)胞通信網(wǎng)絡(luò)的方法捌袜,包括分層圖、圓圖炸枣、和弦圖和氣泡圖虏等。
  • 它提供了一個(gè)易于使用的工具,用于提取和可視化推斷網(wǎng)絡(luò)的高階信息适肠。例如霍衫,它允許對(duì)細(xì)胞群的主要信號(hào)輸入和輸出以及這些群和信號(hào)如何協(xié)調(diào)功能進(jìn)行現(xiàn)成預(yù)測(cè)。
  • 它可以通過結(jié)合通訊網(wǎng)絡(luò)分析侯养、模式識(shí)別和多重學(xué)習(xí)方法敦跌,使用綜合方法對(duì)推斷出的細(xì)胞-細(xì)胞通信網(wǎng)絡(luò)進(jìn)行定量表征和比較。

使用層次結(jié)構(gòu)圖逛揩、圓圖或和弦圖可視化每個(gè)信號(hào)通路

層次結(jié)構(gòu)圖:用戶應(yīng)定義vertex.receiver柠傍,這是一個(gè)數(shù)字矢量麸俘,將細(xì)胞群的索引作為層次圖左側(cè)的目標(biāo)。此分層圖由兩個(gè)部分組成:左部分顯示自分泌和旁分泌向某些感興趣的細(xì)胞組(即定義的)發(fā)出信號(hào)惧笛,右部分顯示自分泌和旁分泌向數(shù)據(jù)集中剩余的細(xì)胞組發(fā)出信號(hào)从媚。因此,層級(jí)圖提供了一種信息性和直觀的方式來可視化自分泌和旁分泌信號(hào)之間的細(xì)胞群之間的感興趣通信患整。例如拜效,在研究成纖維細(xì)胞和免疫細(xì)胞之間的細(xì)胞-細(xì)胞通信時(shí),用戶可以定義為所有成纖維細(xì)胞組并级。

和弦圖:CellChat 提供兩種功能netVisual_chord_cell和netVisual_chord_gene,并可視化具有不同目的和不同級(jí)別的細(xì)胞通信侮腹。 netVisual_chord_cell用于可視化不同細(xì)胞群之間的細(xì)胞-細(xì)胞通信(和弦圖中的每個(gè)部分是細(xì)胞組)嘲碧,netVisual_chord_gene用于可視化由多個(gè)配體受體或信號(hào)通路調(diào)節(jié)的細(xì)胞-細(xì)胞通信(和弦圖中的每個(gè)部分都是配體、受體或信號(hào)通路)父阻。

邊緣顏色/權(quán)重愈涩、節(jié)點(diǎn)顏色/大小/形狀的解釋:在所有可視化圖中,邊緣顏色與發(fā)送者源一致加矛,邊緣權(quán)重與交互強(qiáng)度成正比履婉。較厚的邊緣線表示信號(hào)更強(qiáng)。在層次結(jié)構(gòu)圖和圓圖中斟览,圓的大小與每個(gè)細(xì)胞組中的細(xì)胞數(shù)量成正比毁腿。在層次圖中,實(shí)心和開放的圓分別代表源和目標(biāo)苛茂。在和弦圖中已烤,內(nèi)條顏色表示從相應(yīng)的外條接收信號(hào)的目標(biāo)。內(nèi)條大小與目標(biāo)接收的信號(hào)強(qiáng)度成正比妓羊。這種內(nèi)條有助于解釋復(fù)雜的和弦圖胯究。請(qǐng)注意,有一些內(nèi)條沒有與任何一些細(xì)胞組鏈接躁绸,請(qǐng)忽略它裕循,因?yàn)檫@是一個(gè)本包尚未解決的問題。

不同層次的細(xì)胞通信可視化:可以使用netVisual_aggregate可視化信號(hào)通路的推斷通信網(wǎng)絡(luò)净刮,并使用netVisual_individual可視化與該信號(hào)通路相關(guān)的單個(gè)L-R對(duì)的推斷通信網(wǎng)絡(luò)剥哑。

在這里,我們以輸入一個(gè)信號(hào)通路為例淹父。所有顯示重要通信的信號(hào)通路均可通過 cellchat@netP$pathways獲取星持。

pathways.show <- c("CXCL") # Hierarchy plot# Here we define `vertex.receive` so that the left portion of the hierarchy plot shows signaling to fibroblast and the right portion shows signaling to immune cells vertex.receiver = seq(1,4) # a numeric vector. netVisual_aggregate(cellchat, signaling = pathways.show,  vertex.receiver = vertex.receiver)
1624016492273
# Circle plotpar(mfrow=c(1,1))netVisual_aggregate(cellchat, signaling = pathways.show, layout = "circle")
1624016518254
# Chord diagrampar(mfrow=c(1,1))netVisual_aggregate(cellchat, signaling = pathways.show, layout = "chord")#> Note: The first link end is drawn out of sector 'Inflam. FIB'.
1624016544122
# Heatmappar(mfrow=c(1,1))netVisual_heatmap(cellchat, signaling = pathways.show, color.heatmap = "Reds")#> Do heatmap based on a single object
1624016573497

對(duì)于和弦圖,CellChat 具有獨(dú)立函數(shù)netVisual_chord_cell弹灭,通過調(diào)整[circlize ]包中的不同參數(shù)來靈活可視化信號(hào)網(wǎng)絡(luò)督暂。例如揪垄,我們可以定義一個(gè)group命名的字符矢量,以創(chuàng)建多組和弦圖逻翁,將細(xì)胞群集分組到不同的細(xì)胞類型饥努。

# Chord diagramgroup.cellType <- c(rep("FIB", 4), rep("DC", 4), rep("TC", 4)) # grouping cell clusters into fibroblast, DC and TC cellsnames(group.cellType) <- levels(cellchat@idents)netVisual_chord_cell(cellchat, signaling = pathways.show, group = group.cellType, title.name = paste0(pathways.show, " signaling network"))#> Plot the aggregated cell-cell communication network at the signaling pathway level#> Note: The first link end is drawn out of sector 'Inflam. FIB'.
1624016597724

計(jì)算每個(gè)配體受體對(duì)整體信號(hào)通路的貢獻(xiàn),并可視化由單個(gè)配體受體對(duì)調(diào)節(jié)的細(xì)胞通信

netAnalysis_contribution(cellchat, signaling = pathways.show)
1624016624395

我們還可以可視化由單個(gè)配體受體對(duì)調(diào)節(jié)的細(xì)胞-細(xì)胞通信八回。我們提供一個(gè)函數(shù)extractEnrichedLR來提取給定信號(hào)通路的所有重要相互作用(L-R對(duì))和相關(guān)信號(hào)基因酷愧。

pairLR.CXCL <- extractEnrichedLR(cellchat, signaling = pathways.show, geneLR.return = FALSE)LR.show <- pairLR.CXCL[1,] # show one ligand-receptor pair# Hierarchy plotvertex.receiver = seq(1,4) # a numeric vectornetVisual_individual(cellchat, signaling = pathways.show,  pairLR.use = LR.show, vertex.receiver = vertex.receiver)
1624016645620
# Circle plotnetVisual_individual(cellchat, signaling = pathways.show, pairLR.use = LR.show, layout = "circle")
1624016667049
#> [[1]]# Chord diagramnetVisual_individual(cellchat, signaling = pathways.show, pairLR.use = LR.show, layout = "chord")#> Note: The first link end is drawn out of sector 'Inflam. FIB'.
1624016690051
#> [[1]]

自動(dòng)保存所有推斷網(wǎng)絡(luò)的模塊以進(jìn)行快速探索

在實(shí)際使用中,用戶可以使用‘for … loop’自動(dòng)保存所有推斷網(wǎng)絡(luò)快速探索使用缠诅。 netVisual溶浴,netVisual支持svg、png和pdf格式的輸出管引。

# Access all the signaling pathways showing significant communicationspathways.show.all <- cellchat@netP$pathways# check the order of cell identity to set suitable vertex.receiverlevels(cellchat@idents)vertex.receiver = seq(1,4)for (i in 1:length(pathways.show.all)) {  # Visualize communication network associated with both signaling pathway and individual L-R pairs  netVisual(cellchat, signaling = pathways.show.all[i], vertex.receiver = vertex.receiver, layout = "hierarchy")  # Compute and visualize the contribution of each ligand-receptor pair to the overall signaling pathway  gg <- netAnalysis_contribution(cellchat, signaling = pathways.show.all[i])  ggsave(filename=paste0(pathways.show.all[i], "_L-R_contribution.pdf"), plot=gg, width = 3, height = 2, units = 'in', dpi = 300)}

可視化由多個(gè)配體受體或信號(hào)通路調(diào)節(jié)的細(xì)胞通信

氣泡圖

我們還可以使用netVisual_bubble顯示從某些細(xì)胞組到其他細(xì)胞組的所有重要相互作用(L-R對(duì))士败。

# show all the significant interactions (L-R pairs) from some cell groups (defined by 'sources.use') to other cell groups (defined by 'targets.use')netVisual_bubble(cellchat, sources.use = 4, targets.use = c(5:11), remove.isolate = FALSE)#> Comparing communications on a single object
1624016718394
# show all the significant interactions (L-R pairs) associated with certain signaling pathwaysnetVisual_bubble(cellchat, sources.use = 4, targets.use = c(5:11), signaling = c("CCL","CXCL"), remove.isolate = FALSE)#> Comparing communications on a single object
1624016745165

和弦圖

類似于氣泡圖,cellchat提供了繪制和弦圖的功能netVisual_chord_gene

  • 顯示從某些細(xì)胞組到其他細(xì)胞組的所有相互作用(L-R對(duì)或信號(hào)通路)褥伴。兩個(gè)特殊情況:一個(gè)顯示從一個(gè)細(xì)胞組發(fā)送的所有交互谅将,另一個(gè)顯示一個(gè)細(xì)胞組接收的所有交互。
  • 顯示用戶輸入的交互或用戶定義的某些信號(hào)通路
# show all the significant interactions (L-R pairs) from some cell groups (defined by 'sources.use') to other cell groups (defined by 'targets.use')# show all the interactions sending from Inflam.FIBnetVisual_chord_gene(cellchat, sources.use = 4, targets.use = c(5:11), lab.cex = 0.5,legend.pos.y = 30)#> Note: The first link end is drawn out of sector 'MIF'.
1624016790639
# show all the interactions received by Inflam.DCnetVisual_chord_gene(cellchat, sources.use = c(1,2,3,4), targets.use = 8, legend.pos.x = 15)
1624016816209
# show all the significant interactions (L-R pairs) associated with certain signaling pathwaysnetVisual_chord_gene(cellchat, sources.use = c(1,2,3,4), targets.use = c(5:11), signaling = c("CCL","CXCL"),legend.pos.x = 8)#> Note: The second link end is drawn out of sector 'CXCR4 '.#> Note: The first link end is drawn out of sector 'CXCL12 '.
1624016842129
# show all the significant signaling pathways from some cell groups (defined by 'sources.use') to other cell groups (defined by 'targets.use')netVisual_chord_gene(cellchat, sources.use = c(1,2,3,4), targets.use = c(5:11), slot.name = "netP", legend.pos.x = 10)#> Note: The second link end is drawn out of sector ' '.#> Note: The first link end is drawn out of sector 'MIF'.#> Note: The second link end is drawn out of sector ' '.#> Note: The first link end is drawn out of sector 'CXCL '.
1624016868433

NB:在生成圖時(shí)重慢,請(qǐng)忽略注釋饥臂,例如 “Note: The first link end is drawn out of sector ‘MIF’。如果基因名稱重疊似踱,您可以通過降低small.gap值來調(diào)整參數(shù)清蚀。

使用小提琴/點(diǎn)圖繪制信號(hào)基因表達(dá)分布

我們可以利用Seurat 包裝的函數(shù)plotGeneExpression繪制與L-R對(duì)或信號(hào)通路相關(guān)的信號(hào)基因的基因表達(dá)分布圖爹耗。

plotGeneExpression(cellchat, signaling = "CXCL")#> Registered S3 method overwritten by 'spatstat':#>   method     from#>   print.boxx cli#> Scale for 'y' is already present. Adding another scale for 'y', which will#> replace the existing scale.#> Scale for 'y' is already present. Adding another scale for 'y', which will#> replace the existing scale.#> Scale for 'y' is already present. Adding another scale for 'y', which will#> replace the existing scale.
1624016891751

默認(rèn)情況下噪伊,用戶可以通過plotGeneExpression只顯示與推斷的重要通信相關(guān)的信號(hào)基因的表達(dá)起便。

plotGeneExpression(cellchat, signaling = "CXCL", enriched.only = FALSE)

或者,用戶可以使用extractEnrichedLR提取與推斷的L-R對(duì)或信號(hào)通路相關(guān)的信號(hào)基因狞洋,然后使用Seurat包繪制基因表達(dá)圖弯淘。

第四部分:細(xì)胞通信網(wǎng)絡(luò)系統(tǒng)分析

為了便于對(duì)復(fù)雜的細(xì)胞間通信網(wǎng)絡(luò)進(jìn)行解釋,CellChat 通過從圖形理論吉懊、模式識(shí)別和多重學(xué)習(xí)中抽象的方法對(duì)網(wǎng)絡(luò)進(jìn)行量化庐橙。

  • 它可以使用網(wǎng)絡(luò)分析的集中度措施確定給定信號(hào)網(wǎng)絡(luò)中的主要信號(hào)源和目標(biāo)以及調(diào)節(jié)者和影響者
  • 它可以通過利用模式識(shí)別方法預(yù)測(cè)特定細(xì)胞類型的關(guān)鍵傳入和傳出信號(hào),以及不同細(xì)胞類型之間的協(xié)調(diào)響應(yīng)借嗽。
  • 它可以通過定義相似度測(cè)量方法和從功能和拓?fù)浣嵌冗M(jìn)行多重學(xué)習(xí)來分組信號(hào)通路态鳖。
  • 它可以通過對(duì)多個(gè)網(wǎng)絡(luò)的聯(lián)合多重學(xué)習(xí)來描繪保存上下文特定的信號(hào)通路。

識(shí)別細(xì)胞組的信號(hào)角色(例如恶导,占主導(dǎo)地位的發(fā)送器浆竭、接收器)以及主要貢獻(xiàn)信號(hào)

CellChat 允許通過計(jì)算每個(gè)細(xì)胞組的多個(gè)網(wǎng)絡(luò)中心測(cè)量,隨時(shí)識(shí)別細(xì)胞間通信網(wǎng)絡(luò)中占主導(dǎo)地位的發(fā)送者、接收者邦泄、調(diào)解者和影響者删窒。具體來說,我們?cè)诩訖?quán)導(dǎo)向網(wǎng)絡(luò)中采用了措施顺囊,包括度外肌索、度內(nèi)、介于兩者之間流動(dòng)和信息集中度特碳,分別識(shí)別細(xì)胞間通信的主要發(fā)送者诚亚、接收者、調(diào)解者和影響者午乓。在以權(quán)重為計(jì)算通信概率的加權(quán)定向網(wǎng)絡(luò)中站宗,將外向度計(jì)算為來自細(xì)胞組的傳出信號(hào)的通信概率之和,并計(jì)算為傳入信號(hào)對(duì)單元組通信概率的總和的度內(nèi)益愈,可用于分別識(shí)別信號(hào)網(wǎng)絡(luò)的主要單元件發(fā)送器和接收器梢灭。有關(guān)信息中心之間流動(dòng)的定義,請(qǐng)查看本文及相關(guān)參考文獻(xiàn)腕唧。

計(jì)算和可視化網(wǎng)絡(luò)中心分?jǐn)?shù)

# Compute the network centrality scorescellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP") # the slot 'netP' means the inferred intercellular communication network of signaling pathways# Visualize the computed centrality scores using heatmap, allowing ready identification of major signaling roles of cell groupsnetAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 8, height = 2.5, font.size = 10)
1624016915032

在 2D 空間中可視化占主導(dǎo)地位的發(fā)送器(源)和接收器(目標(biāo))

我們還提供了另一種直觀方法或辖,使用散點(diǎn)圖在 2D 空間中可視化占主導(dǎo)地位的發(fā)射器(源)和接收器(目標(biāo))瘾英。

# Signaling role analysis on the aggregated cell-cell communication network from all signaling pathwaysgg1 <- netAnalysis_signalingRole_scatter(cellchat)#> Signaling role analysis on the aggregated cell-cell communication network from all signaling pathways# Signaling role analysis on the cell-cell communication networks of interestgg2 <- netAnalysis_signalingRole_scatter(cellchat, signaling = c("CXCL", "CCL"))#> Signaling role analysis on the cell-cell communication network from user's inputgg1 + gg2
1624016939674

識(shí)別對(duì)某些細(xì)胞組的傳出或傳入信號(hào)貢獻(xiàn)最大的信號(hào)

我們還可以回答以下問題:哪些信號(hào)對(duì)某些細(xì)胞組的傳出或傳入信號(hào)貢獻(xiàn)最大枣接。

# Signaling role analysis on the aggregated cell-cell communication network from all signaling pathwaysht1 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "outgoing")ht2 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "incoming")ht1 + ht2
1624016967099
# Signaling role analysis on the cell-cell communication networks of interestht <- netAnalysis_signalingRole_heatmap(cellchat, signaling = c("CXCL", "CCL"))

確定全局通信模式,探索多個(gè)細(xì)胞類型和信號(hào)通路如何協(xié)調(diào)在一起

除了探索單個(gè)通路的詳細(xì)通信外缺谴,一個(gè)重要問題是多個(gè)細(xì)胞組和信號(hào)通路如何協(xié)調(diào)功能但惶。CellChat 采用模式識(shí)別方法識(shí)別全局通信模式。

隨著模式數(shù)量的增加湿蛔,可能會(huì)有多余的模式膀曾,因此很難解釋通信模式。我們選擇了五種模式作為默認(rèn)模式阳啥。一般來說添谊,它具有生物學(xué)意義,模式數(shù)量要大于2察迟。此外斩狱,我們還提供了一個(gè)函數(shù)selectK來推斷模式的數(shù)量,該數(shù)基于 NMF R 包中已實(shí)施的兩個(gè)指標(biāo)Cophenetic和Silhouette扎瓶。這兩個(gè)指標(biāo)都根據(jù)共識(shí)矩陣的分層聚類來衡量特定數(shù)量模式的穩(wěn)定性所踊。對(duì)于一系列模式,適當(dāng)?shù)哪J綌?shù)量是Cophenetic 和 Silhouette值開始突然下降的模式概荷。

識(shí)別和可視化分泌細(xì)胞的傳出通信模式

傳出模式揭示了發(fā)送者細(xì)胞(即作為信號(hào)源的細(xì)胞)如何相互協(xié)調(diào)秕岛,以及它們?nèi)绾闻c某些信號(hào)通路協(xié)調(diào)以驅(qū)動(dòng)通信。

為了直觀地顯示潛在模式與細(xì)胞群和配體受體對(duì)或信號(hào)通路的關(guān)聯(lián),我們使用了河流(沖積)圖继薛。我們首先將每行 W 和 H 的每列標(biāo)準(zhǔn)化為 [0修壕,1],然后在 W 和 H 中設(shè)置為零惋增,如果它們小于 0.5叠殷。這種閾值允許發(fā)現(xiàn)與每個(gè)推斷模式相關(guān)的最豐富的細(xì)胞組和信號(hào)通路,即每個(gè)細(xì)胞組或信號(hào)通路僅與一個(gè)推斷模式相關(guān)聯(lián)诈皿。這些閾值矩陣 W 和 H 用作創(chuàng)建沖積圖的輸入林束。

為了將細(xì)胞群與其豐富的信號(hào)通路直接聯(lián)系起來,如果 W 和 H 中的元素少于 1/R(R 是潛在模式數(shù))稽亏,則我們將它們中的元素設(shè)置為零壶冒。通過使用不太嚴(yán)格的閾值,可以獲得與每個(gè)細(xì)胞組相關(guān)的更豐富的信號(hào)通路截歉。我們使用每個(gè)細(xì)胞組對(duì)通過乘以 W 乘以 H 計(jì)算的每個(gè)信號(hào)通路的貢獻(xiàn)分?jǐn)?shù)胖腾,構(gòu)建了一個(gè)點(diǎn)圖,其中點(diǎn)大小與貢獻(xiàn)分?jǐn)?shù)成正比瘪松,以顯示細(xì)胞組與其豐富信號(hào)通路之間的關(guān)聯(lián)咸作。用戶還可以降低參數(shù)cutoff,以顯示每個(gè)細(xì)胞組關(guān)聯(lián)的更豐富的信號(hào)通路宵睦。

通信模式分析所需的包

library(NMF)#> Loading required package: pkgmaker#> Loading required package: registry#> Loading required package: rngtools#> Loading required package: cluster#> NMF - BioConductor layer [OK] | Shared memory capabilities [NO: bigmemory] | Cores 15/16#>   To enable shared memory capabilities, try: install.extras('#> NMF#> ')#> #> Attaching package: 'NMF'#> The following objects are masked from 'package:igraph':#> #>     algorithm, comparelibrary(ggalluvial)

在這里记罚,我們運(yùn)行selectK推斷模式的數(shù)量。

selectK(cellchat, pattern = "outgoing")
1624016999045

當(dāng)傳出模式數(shù)為 3 時(shí)壳嚎,Cophenetic 和Silhouette值都開始突然下降桐智。

nPatterns = 3cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = nPatterns)
1624017021858
# river plotnetAnalysis_river(cellchat, pattern = "outgoing")#> Please make sure you have load `library(ggalluvial)` when running this function
1624017044583
# dot plotnetAnalysis_dot(cellchat, pattern = "outgoing")
1624017068622

識(shí)別和可視化目標(biāo)細(xì)胞的傳入通信模式

傳入模式顯示目標(biāo)細(xì)胞(即信號(hào)接收器中的細(xì)胞)如何相互協(xié)調(diào),以及它們?nèi)绾闻c某些信號(hào)通路協(xié)調(diào)以響應(yīng)傳入的信號(hào)烟馅。

selectK(cellchat, pattern = "incoming")
1624017090987

當(dāng)傳入模式的數(shù)量為 4 時(shí)说庭,Cophenetic 值開始下降。

nPatterns = 4cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns)
1624017112913
# river plotnetAnalysis_river(cellchat, pattern = "incoming")#> Please make sure you have load `library(ggalluvial)` when running this function
1624017138572
# dot plotnetAnalysis_dot(cellchat, pattern = "incoming")
1624017161550

信號(hào)網(wǎng)絡(luò)的多重和分類學(xué)習(xí)分析

此外郑趁,CellChat 能夠量化所有重要信號(hào)通路之間的相似性刊驴,然后根據(jù)其CellChat 網(wǎng)絡(luò)的相似性對(duì)其進(jìn)行分組。分組可以基于功能或結(jié)構(gòu)相似性進(jìn)行寡润。

功能相似性:功能相似度高表示主要發(fā)送器和接收器相似捆憎,可解釋為兩個(gè)信號(hào)通路或兩個(gè)配體受體對(duì)具有相似的作用。功能相似性分析要求兩個(gè)數(shù)據(jù)集之間的細(xì)胞群組成相同悦穿。

結(jié)構(gòu)相似性:結(jié)構(gòu)相似性用于比較其信號(hào)網(wǎng)絡(luò)結(jié)構(gòu)攻礼,而不考慮發(fā)送器和接收器的相似性。

根據(jù)信號(hào)組的功能相似性識(shí)別信號(hào)組

cellchat <- computeNetSimilarity(cellchat, type = "functional")cellchat <- netEmbedding(cellchat, type = "functional")#> Manifold learning of the signaling networks for a single datasetcellchat <- netClustering(cellchat, type = "functional")#> Classification learning of the signaling networks for a single dataset# Visualization in 2D-spacenetVisual_embedding(cellchat, type = "functional", label.size = 3.5)
1624017187146
# netVisual_embeddingZoomIn(cellchat, type = "functional", nCol = 2)

基于結(jié)構(gòu)相似性識(shí)別信號(hào)組

cellchat <- computeNetSimilarity(cellchat, type = "structural")cellchat <- netEmbedding(cellchat, type = "structural")#> Manifold learning of the signaling networks for a single datasetcellchat <- netClustering(cellchat, type = "structural")#> Classification learning of the signaling networks for a single dataset# Visualization in 2D-spacenetVisual_embedding(cellchat, type = "structural", label.size = 3.5)
1624017209672
netVisual_embeddingZoomIn(cellchat, type = "structural", nCol = 2)
1624017229253

第五部分:保存cellchat對(duì)象

saveRDS(cellchat, file = "cellchat_humanSkin_LS.rds")

以方便后續(xù)使用栗柒。

?著作權(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
  • 文/不壞的土叔 我叫張陵肮韧,是天一觀的道長(zhǎng)融蹂。 經(jīng)常有香客問我,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼声滥,長(zhǎng)吁一口氣:“原來是場(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ú)居荒郊野嶺守林人離奇死亡散吵,尸身上長(zhǎng)有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
  • 我被黑心中介騙來泰國(guó)打工贰拿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛤袒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓膨更,卻偏偏與公主長(zhǎng)得像妙真,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荚守,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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