細(xì)胞通訊分析【二】——CellChat分析結(jié)果可視化

本期內(nèi)容同步發(fā)布于單細(xì)胞天地微信公眾號币呵。

回顧——細(xì)胞通訊網(wǎng)絡(luò)構(gòu)建

前面的帖子中我們已經(jīng)成功地進(jìn)行了細(xì)胞間通訊網(wǎng)絡(luò)的構(gòu)建世澜,總的來看借助下面簡易的分析流程即可完成:

library(CellChat)
library(Seurat)
library(SeuratData)
library(future)
#load data
data("pbmc3k.final")
#create CellChat object
cellchat <- createCellChat(object = GetAssayData(object = pbmc3k.final, slot = 'data'),
                           meta = pbmc3k.final@meta.data,
                           group.by = 'seurat_annotations')
## The cell groups used for CellChat analysis are  Naive CD4 T Memory CD4 T CD14+ Mono B CD8 T FCGR3A+ Mono NK DC Platelet
#add CellChat database
cellchat@DB <- CellChatDB.human #human
#cell communication
plan(strategy = 'multiprocess', workers = 4)
cellchat <- subsetData(cellchat) #save time and memory
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
cellchat <- computeCommunProb(cellchat)
cellchat <- filterCommunication(cellchat, min.cells = 10)
#pathway level
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)

今天繼續(xù)介紹:

  • (1)我們?nèi)绾蝸?strong>理解這些分析結(jié)果;

  • (2)我們?nèi)绾螌⑦@些結(jié)果有效地展示出來雀久,也就是可視化宿稀。

CellChat分析結(jié)果可視化

目前CellChat提供了多種圖形來對結(jié)果進(jìn)行可視化,包括但不限于:

  • Hierarchical plot (層次聚類圖)

  • Chord diagram (和弦圖)

  • Circle plot (環(huán)狀圖)

  • Bubble plot (氣泡圖)

此外結(jié)果的可視化也分為在單個受體-配體層次代謝通路(多個受體-配體整合)層次赖捌,上游分析的相關(guān)結(jié)果分別存儲在cellchat@netcellchat@netP祝沸。

單個受體-配體層次

這個部分的可視化主要是統(tǒng)計不同細(xì)胞類群之間的受體-配體對數(shù)和通訊強(qiáng)度(strength)。

library(dplyr)
groupSize <- table(cellchat@idents) %>% as.numeric()
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")

首先簡單介紹一下par()函數(shù)巡蘸,這是R基礎(chǔ)繪圖系統(tǒng)中一個比較常見的函數(shù)奋隶,在CellChat中主要是為了排列多個圖形,例如這里的mfrow參數(shù)的形式就為c(nr, nc)悦荒,表示將后續(xù)繪制的圖形按照nrnc列排布唯欣,而mfrow表示先橫向后縱向,對應(yīng)的也有mfcol表示先縱向后橫向搬味。

再來詳細(xì)介紹一下netVisual_circle()函數(shù)境氢,這個環(huán)狀圖中最關(guān)鍵的兩個概念就是edgevertex,前者指的是不同細(xì)胞類群之間相互關(guān)聯(lián)的“連線”碰纬,后者指的是位于環(huán)狀圖邊界上的各個細(xì)胞群的節(jié)點的大小萍聊,顯然在上面的例子中我們分別使用了不同細(xì)胞類群之間的受體-配體對數(shù)和通訊強(qiáng)度作為“連線”強(qiáng)度的度量,而不同細(xì)胞類群中的細(xì)胞數(shù)量作為節(jié)點大小的度量悦析。我們會對這些信息scale一下寿桨,防止差異過大影響可視化的結(jié)果。

為了讓信息不顯得那么冗余,我們也可以單獨可視化以每個細(xì)胞類群為信號起點的環(huán)狀圖亭螟,實現(xiàn)的思路很簡單挡鞍,以cellchat@net$weight為例,這個矩陣中的每一行代表信號發(fā)出的細(xì)胞预烙,每一列代表接收信號的細(xì)胞墨微,所以我們可以通過分別可視化每一行的數(shù)據(jù)來研究以每個細(xì)胞群為信號起點的細(xì)胞間通訊:

groupSize <- table(cellchat@idents) %>% as.numeric()
par(mfrow = c(3, 3), xpd = TRUE)
for(i in 1:nrow(cellchat@net$weight)){
  mat <- matrix(0, 
                nrow = nrow(cellchat@net$weight),
                ncol = ncol(cellchat@net$weight),
                dimnames = dimnames(cellchat@net$weight))
  mat[i, ] <- cellchat@net$weight[i, ]
  netVisual_circle(mat, 
                   vertex.weight = groupSize,
                   weight.scale = T,
                   edge.weight.max = max(cellchat@net$weight),
                   title.name = rownames(mat)[i])
}

值得注意的是,這里多了一個參數(shù):edge.weight.max = max(cellchat@net$weight)扁掸,這主要是為了讓不同的圖之間具有可比性翘县,因為都是按照總體的最大值進(jìn)行scale的。

信號通路層次可視化

單個受體-配體層次的分析只能讓我們知道哪些細(xì)胞類群之間可能存在通訊谴分,至于是何種類型的通訊锈麸、會有什么生物學(xué)意義卻比較難知道,這個時候如果能夠?qū)⑦@種通訊放到信號通路的層次上就能較好地解決這個問題牺蹄。

首先來查看一下我們分析的結(jié)果中有哪些信號通路:

cellchat@netP$pathways
##  [1] "MHC-I"    "CD99"     "MIF"      "MHC-II"   "GALECTIN" "ITGB2"   
##  [7] "APP"      "ANNEXIN"  "SELPLG"   "LCK"      "ICAM"     "CD40"    
## [13] "ESAM"     "IL16"

Hierarchical plot

Hierarchical plot一個比較突出的優(yōu)點在于能夠比較清晰有層次地展示細(xì)胞類群之間的通訊掐隐,我們可以通過指定vertex.receiver來自定義信號接收細(xì)胞群,這個參數(shù)可以是細(xì)胞類群的名稱钞馁,例如CD8 T,也可以是索引带饱,例如c(1, 2, 3)烘贴。

cellchat@meta$seurat_annotations %>% head()
## [1] Memory CD4 T B            Memory CD4 T CD14+ Mono   NK          
## [6] Memory CD4 T
## 9 Levels: Naive CD4 T Memory CD4 T CD14+ Mono B CD8 T FCGR3A+ Mono NK ... Platelet
vertex.receiver <- 1:3 #Naive CD4 T, Memory CD4 T, CD14+ Mono
cellchat@netP$pathways
##  [1] "MHC-I"    "CD99"     "MIF"      "MHC-II"   "GALECTIN" "ITGB2"   
##  [7] "APP"      "ANNEXIN"  "SELPLG"   "LCK"      "ICAM"     "CD40"    
## [13] "ESAM"     "IL16"
pathways.show <- 'MHC-I'
netVisual_aggregate(cellchat, 
                    signaling = pathways.show, 
                    vertex.receiver = vertex.receiver,
                    layout = 'hierarchy')

這里我們可視化了Naive CD4 T, Memory CD4 T, CD14+ Mono作為信號接收細(xì)胞群的MHC-I信號通路窒百,詳細(xì)來看Hierarchical plot:

  • 左側(cè)部分展示的是以Naive CD4 T, Memory CD4 T, CD14+ Mono作為信號接收細(xì)胞群的MHC-I信號通路,其中左半部分是自分泌相關(guān)信號训措,這里的所謂自分泌信號就是指這幾類細(xì)胞類群自己釋放的信號作用于自己這幾類細(xì)胞,相應(yīng)的右半部分就是展示的旁分泌信號光羞,也就是其它類的細(xì)胞所釋放的信號作用于這幾類細(xì)胞绩鸣。

  • 右側(cè)部分展示是以除了Naive CD4 T, Memory CD4 T, CD14+ Mono以外的其它細(xì)胞群作為信號接收細(xì)胞群的MHC-I信號通路,只不過此時左右半部分的信息反過來了:左半部分是旁分泌信號纱兑,右半部分是自分泌信號呀闻。

Chord diagram

netVisual_aggregate(cellchat, 
                    signaling = pathways.show, 
                    vertex.receiver = vertex.receiver,
                    layout = 'chord')

改一下layout就可以實現(xiàn)Chord diagram,不過這個圖的信號很雜潜慎,將所有和MHC-I的信號糅合在了一起捡多,從這一點上來看效果不如Hierarchical plot。不過好在它還是可以和環(huán)狀圖一樣铐炫,接受sources.usetargets.use參數(shù)垒手,大大簡化圖形信息,幫助我們更精準(zhǔn)地定位到我們想要的內(nèi)容:

netVisual_aggregate(cellchat, 
                    signaling = pathways.show, 
                    sources.use = 1:2, #naive CD4 T, Memory CD4 T
                    targets.use = 5:6, #CD8 T, FCGR3A+ Mono
                    layout = 'chord')

還有一個玩法在于倒信,有的時候我們會在細(xì)胞類型注釋的時候?qū)δ硞€細(xì)胞類群進(jìn)行細(xì)分科贬,但是我們在可視化細(xì)胞通訊的時候可能會想將這一大類細(xì)胞單獨“聚”在一起,這個時候Chord diagram就來了:

#combine Naive CD4 T, Memory CD4 T and CD8 T
group.celltype = c(rep('T', 2), 'CD14+ Mono', 'B', 'T', 'FCGR3A+ Mono', 'NK', 'DC', 'Platelet')
names(group.celltype) = levels(cellchat@meta$seurat_annotations)
netVisual_aggregate(cellchat, 
                    signaling = pathways.show, 
                    group = group.celltype,
                    layout = 'chord')

可以看到這三類細(xì)胞已經(jīng)聚在一起了鳖悠。

Circle plot

這個部分和前面一樣榜掌,只不過現(xiàn)在是在信號通路的層次上進(jìn)行的罷了:

netVisual_aggregate(cellchat, 
                    signaling = pathways.show,
                    layout = 'circle')

Bubble plot

netVisual_bubble(cellchat, 
                 sources.use = 1:3, 
                 targets.use = 4:7, 
                 signaling = 'MHC-I')
## Comparing communications on a single object

氣泡圖的橫軸標(biāo)明了信號起始和接收的細(xì)胞類群(以 -> 標(biāo)明)优妙。同時縱軸標(biāo)上了屬于這個MHC-I信號通路的具體細(xì)胞間相互作用(受體-配體對),你可以通過pairLR.use傳入字符串向量來選擇性可視化哪些具體的相互作用唐责。還有很多其它實用的參數(shù)鳞溉,例如使用remove.isolate = TRUE去掉空白行和空白列,讓整個圖形僅僅保留有信號的部分鼠哥。

除了這幾類主要的可視化以外熟菲,我們還可以使用熱圖:

netVisual_heatmap(cellchat, signaling = pathways.show, color.heatmap = 'Reds')
## Do heatmap based on a single object

左側(cè)已經(jīng)標(biāo)明了信號發(fā)出的細(xì)胞群,上方和右方的柱狀圖分別表示每一列和每一行數(shù)值的總和朴恳。

無論怎么變抄罕,最終總還是在對cellchat@netP$prob這個array在可視化。此外這些函數(shù)的幫助文檔都比較通俗易懂于颖,大家可以多用?來獲取幫助信息呆贿。

基因表達(dá)量可視化

我們在Seurat對象中很容易進(jìn)行基因表達(dá)的可視化,CellChat同樣為我們提供了可能性森渐,我們只需要使用plotGeneExpression()函數(shù)就可以了做入,我們可以指定我們想可視化的信號通路(此時會自動可視化該信號通路內(nèi)富集的重要基因),也可以指定一些具體的基因同衣,還可以指定可視化圖形的類型:"violin"竟块,"dot","bar"耐齐。

plotGeneExpression(cellchat, signaling = 'MHC-I')
## 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.
## 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.
## 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.

可視化的簡單分享就到這里啦~大家趕緊行動起來吧浪秘!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市埠况,隨后出現(xiàn)的幾起案子耸携,更是在濱河造成了極大的恐慌,老刑警劉巖辕翰,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夺衍,死亡現(xiàn)場離奇詭異,居然都是意外死亡喜命,警方通過查閱死者的電腦和手機(jī)刷后,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渊抄,“玉大人尝胆,你說我怎么就攤上這事』よ耄” “怎么了含衔?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我贪染,道長缓呛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任杭隙,我火速辦了婚禮哟绊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痰憎。我一直安慰自己票髓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布铣耘。 她就那樣靜靜地躺著洽沟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜗细。 梳的紋絲不亂的頭發(fā)上裆操,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音炉媒,去河邊找鬼踪区。 笑死,一個胖子當(dāng)著我的面吹牛吊骤,可吹牛的內(nèi)容都是我干的朽缴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼水援,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茅郎?” 一聲冷哼從身側(cè)響起蜗元,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎系冗,沒想到半個月后奕扣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡掌敬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年惯豆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奔害。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡楷兽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出华临,到底是詐尸還是另有隱情芯杀,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站揭厚,受9級特大地震影響却特,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筛圆,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一裂明、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太援,春花似錦闽晦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唧垦,卻和暖如春捅儒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背振亮。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工巧还, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坊秸。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓麸祷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褒搔。 傳聞我的和親對象是個殘疾皇子阶牍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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