前面關(guān)于細(xì)胞通訊的理論學(xué)習(xí)提到過妹孙,鄰接型的傳遞主要包含我們所熟知的神經(jīng)信號傳遞和抗原呈遞唆阿,主要是細(xì)胞表明配體-受體的相互作用暖夭。而擴散型的信號傳遞方式則是以分泌蛋白為主睦授,例如很多可溶性的小分子两芳。所以現(xiàn)在如果想對單細(xì)胞數(shù)據(jù)研究細(xì)胞-細(xì)胞的互作,一般的做法就是通過配體-受體進(jìn)行研究去枷。而配體和受體歸根結(jié)底就是特定的蛋白怖辆,所以最終還是落腳到研究基因-基因的互作。
今天删顶,我們先學(xué)習(xí)其中一個常見的方法:CellChat竖螃,一個2021年發(fā)在NC上面的文章。
===CellChat原理====
從方法上來看逗余,作者首先構(gòu)建了一個人和小鼠的配體-受體數(shù)據(jù)庫特咆。
從構(gòu)建的步驟來看,主要分為四步:
第一步:從KEGG里面提取兩種類型的pathway(Signal transduction和Signaling molecules and interaction)
第二步:手動的提取這幾個pathway中的配體-受體對录粱,以及作用于配體-受體對的其它共調(diào)控元件(agonist, antagonist, co-stimulatory and co-inhibitory receptors)腻格。
第三步:對于關(guān)鍵的一些調(diào)控元件,又進(jìn)行了手動檢查啥繁,例如:
Cytokine Receptors (ko04050), Cytokines and Growth Factors (ko04052), and Bioactive Peptides(br08005)菜职。(這一步,沒看懂挑選的原則和邏輯)
第四步:又去已發(fā)表的文獻(xiàn)里面進(jìn)行了查漏補缺输虱。
所以些楣,總共下來,在human里面有1939對interaction宪睹,mouse里面有2021對。相比別的大部分庫的優(yōu)勢就是除了考慮單個配體-受體信息蚕钦,還考慮了復(fù)合多聚體的調(diào)控亭病,這點和cellphoneDB有點類似。
那么嘶居,基于這個庫和single cell數(shù)據(jù)罪帖,CellChat具體能干什么呢?
構(gòu)建細(xì)胞通訊網(wǎng)絡(luò)
細(xì)胞通訊網(wǎng)絡(luò)(intercellular communication network)是一個由相互作用的細(xì)胞組之間的顯著的配體-受體對組成的加權(quán)有向圖邮屁,顯示不同的細(xì)胞組之間檢測到配體-受體相互作用的數(shù)量整袁。如下圖中,不同顏色的實心圓表示不同細(xì)胞組佑吝,實心圓大小與該細(xì)胞組對應(yīng)的細(xì)胞個數(shù)成正比坐昙,每條邊的顏色與信號發(fā)送者保持一致,邊的粗細(xì)與通訊強度成比例芋忿。
2. 推斷細(xì)胞角色
因為在細(xì)胞通訊網(wǎng)絡(luò)中炸客,是個有向圖疾棵。因此,同一個細(xì)胞組既可以發(fā)送信號(信號的發(fā)送者痹仙,sender)是尔,也可以接收信號(信號的接收者,receiver)开仰。CellChat利用網(wǎng)絡(luò)分析中的out-degree, in-degree推斷細(xì)胞通訊過程中不同細(xì)胞組作為信號的發(fā)送者拟枚,接收者的強度。例如下圖中點的顏色表示不同細(xì)胞組众弓,點的大小與每個細(xì)胞組推斷的配體和受體數(shù)量成正比恩溅,x軸和y軸分別表示細(xì)胞組作為信號發(fā)送者和接收者的強度。
out-degree:細(xì)胞作為信號的發(fā)送者田轧,發(fā)出信號的概率之和暴匠;
in-degree:細(xì)胞作為信號的接收者,接收信號的概率之和傻粘。
3. 確認(rèn)介導(dǎo)細(xì)胞交流的配體-受體
?
CellChat可展示不同細(xì)胞組通訊過程中顯著的配體-受體每窖。下圖中表示信號發(fā)送者Inflam.FIB和信號接收者cDC1, cDC2, LC, Inflam. DC, TC , Inflam. TC, CD40LG+TC通訊時顯著的配體-受體。點的顏色和大小分別表示配體-受體對介導(dǎo)細(xì)胞通訊的可能性和及該可能性對應(yīng)的p-value弦悉,空意味著在該數(shù)據(jù)集中窒典,對應(yīng)的配體-受體不介導(dǎo)該細(xì)胞通訊。
4. 分組信號通路
?
為了以更有生物學(xué)意義的方式進(jìn)一步分析細(xì)胞間通訊稽莉,配體-受體對被歸入功能相關(guān)的信號通路瀑志。CellChat能夠量化所有顯著信號通路之間的相似性,根據(jù)其細(xì)胞通訊網(wǎng)絡(luò)的相似性對它們進(jìn)行分組污秆,如下圖將所有的信號通路降維后展示在二維圖上劈猪,點的顏色和大小分別表示信號通路的分組及該信號通路代表的通訊的可能性。
5. 預(yù)測細(xì)胞間協(xié)調(diào)反應(yīng)
?
CellChat可利用模式識別預(yù)測細(xì)胞間的協(xié)調(diào)反應(yīng)良拼。這種分析的輸出是一組所謂的通訊模式(communication pattern)战得,它將細(xì)胞組與信號通路連接起來。
下圖中庸推,cell groups和signaling分別表示細(xì)胞組和信號通路常侦,流動的厚度表示細(xì)胞組或信號通路對每個通訊模式的貢獻(xiàn)。a圖表示傳出模式(outgoing patterns)下贬媒,細(xì)胞作為信號發(fā)送者如何相互協(xié)調(diào)聋亡,以及它們?nèi)绾闻c某些信號通路協(xié)調(diào)以驅(qū)動通信。
例如本次模式識別揭示了細(xì)胞組cDC1, cDC2, LC, Inflam. DC與同屬于pattern1的信號通路GALECTIN,GAS, VEGF協(xié)調(diào)向外發(fā)送信號际乘。b圖表示傳入模式(incoming patterns)下坡倔,細(xì)胞作為信號接收者如何相互協(xié)調(diào),以及它們?nèi)绾闻c某些信號通路協(xié)調(diào)以響應(yīng)傳入的信號。
但是致讥,這個工具仍然有一個局限仅仆。
1. 目前的配體-受體數(shù)據(jù)庫只包含小鼠和人類,因此該工具適用于小鼠和人垢袱;
2. 細(xì)胞分組是使用CellChat的前提條件墓拜,在進(jìn)行細(xì)胞通訊分析之前,需要仔細(xì)進(jìn)行細(xì)胞聚類请契,以捕捉有生物學(xué)意義的細(xì)胞組咳榜;
3. 計算過表達(dá)基因花費時間較長,可根據(jù)資源設(shè)置線程數(shù)進(jìn)行時間控制爽锥;
4. 模式識別中涌韩,pattern的個數(shù)由自己定義,盡管CellChat會給出一些圖幫助確定該值氯夷,但仍需注意設(shè)置不同數(shù)量的pattern會得到不同分辨率的結(jié)果臣樱。
===CellChat使用測試====
library(CellChat)
library(ggplot2)
library(ggalluvial)
library(svglite)
library(Seurat)
library(SeuratData)
options(stringsAsFactors = FALSE)
測試使用的是pbmc3k.final數(shù)據(jù)集,大部分的計算已經(jīng)存在其對象中了腮考。具體的計算和分析可以查看官網(wǎng)的分析流程雇毫。
?
按照我們剛才說的,我們在Seurat對象中提出CellChat需要的數(shù)據(jù):
?
創(chuàng)建一個cellchat的對象
pbmc3k.final <- readRDS("pbmc3k_final.rds")
data.input <- GetAssayData(pbmc3k.final, assay = "RNA", slot = "data")?
labels <- Idents(pbmc3k.final)
identity <- data.frame(group = labels, row.names = names(labels)) # create a dataframe of the cell labels
cellchat <- createCellChat(object = data.input)
cellchat <- addMeta(cellchat, meta = identity, meta.name = "labels")
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
導(dǎo)入配體-受體數(shù)據(jù)庫
CellChatDB <- CellChatDB.human?
colnames(CellChatDB$interaction)
CellChatDB$interaction[1:4,1:4]
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling") # use Secreted Signaling for cell-cell communication analysis
cellchat@DB <- CellChatDB.use # set the used database in the object
unique(CellChatDB$interaction$annotation)
//所以我們當(dāng)然也可以選擇其它類別
預(yù)處理
//對表達(dá)數(shù)據(jù)進(jìn)行預(yù)處理踩蔚,用于細(xì)胞間的通信分析棚放。首先在一個細(xì)胞組中識別過表達(dá)的配體或受體,然后將基因表達(dá)數(shù)據(jù)投射到蛋白-蛋白相互作用(PPI)網(wǎng)絡(luò)上馅闽。如果配體或受體過表達(dá)飘蚯,則識別過表達(dá)配體和受體之間的相互作用。
cellchat <- subsetData(cellchat)? ? ? ?# subset the expression data of signaling genes for saving computation cost
future::plan("multiprocess", workers = 4)?
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
cellchat <- projectData(cellchat, PPI.human)??
相互作用推斷
environment(mycomputeCommunProb) <- environment(computeCommunProb)
cellchat <- mycomputeCommunProb(cellchat)??
推測細(xì)胞間在信號通路水平上的通訊福也。我們還通過計算與每個信號通路相關(guān)的所有配體-受體相互作用的通信概率來推斷信號通路水平上的通信概率局骤。
注:推測的每個配體-受體對的細(xì)胞間通信網(wǎng)絡(luò)和每個信號通路分別存儲在“net”和“netP”槽中。
?
我們可以通過計算鏈路的數(shù)量或匯總通信概率來計算細(xì)胞間的聚合通信網(wǎng)絡(luò)暴凑。
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)
cellchat@netP$pathways
head(cellchat@LR$LRsig)
可視化
通過結(jié)合社會網(wǎng)絡(luò)分析庄涡、模式識別和多種學(xué)習(xí)方法的綜合方法,CellChat可以定量地描述和比較推斷出的細(xì)胞-細(xì)胞通信網(wǎng)絡(luò)搬设。
你可以使用層次圖或圈圖可視化每個信號通路。如果使用層次圖可視化通信網(wǎng)絡(luò)撕捍,請定義vertex.receiver拿穴,它是一個數(shù)字向量,給出作為第一個層次結(jié)構(gòu)圖中的目標(biāo)的細(xì)胞組的索引忧风。我們可以使用netVisual_aggregate來可視化信號路徑的推斷通信網(wǎng)絡(luò)默色,并使用netVisual_individual來可視化與該信號路徑相關(guān)的單個L-R對的通信網(wǎng)絡(luò)。
在層次圖中狮腿,實體圓和空心圓分別表示源和目標(biāo)腿宰。圓的大小與每個細(xì)胞組的細(xì)胞數(shù)成比例呕诉。邊緣顏色與信源一致。線越粗吃度,信號越強甩挫。這里我們展示了一個MIF信號網(wǎng)絡(luò)的例子。所有顯示重要通信的信令路徑都可以通過cellchat@netP$pathways訪問椿每。
cellchat@netP$pathways
levels(cellchat@idents)?
vertex.receiver = seq(1,4) # a numeric vector
pathways.show <- "MIF"
netVisual_aggregate(cellchat, signaling = pathways.show,? vertex.receiver = vertex.receiver, vertex.size = groupSize)? ?
下圖就是經(jīng)典的受體-配體圈圖
//計算和可視化每個配體-受體對整個信號通路的貢獻(xiàn)度伊者。
netAnalysis_contribution(cellchat, signaling = pathways.show)
為了便于解釋復(fù)雜的細(xì)胞間通信網(wǎng)絡(luò),CellChat通過從圖論间护、模式識別和流形學(xué)習(xí)中抽象出來的方法對網(wǎng)絡(luò)進(jìn)行定量測量亦渗。
它可以利用網(wǎng)絡(luò)分析中的中心性度量確定給定信號網(wǎng)絡(luò)中的主要信令源和目標(biāo),以及中介和影響者汁尺;它可以預(yù)測特定細(xì)胞類型的關(guān)鍵輸入和輸出信號法精,并利用模式識別方法協(xié)調(diào)不同細(xì)胞類型之間的反應(yīng)(這個預(yù)測有點迷);它可以通過定義相似性度量來分組信號通路痴突,并從功能和拓?fù)涞慕嵌冗M(jìn)行manifold learning搂蜓;它可以通過多個網(wǎng)絡(luò)的聯(lián)合流形學(xué)習(xí)來描述保守的和context-specific的信號通路。
?
確定signaling角色(例如苞也,主要的發(fā)送者洛勉,接收者)以及主要的貢獻(xiàn)singnaling
cellchat <- 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 groups
netAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 8, height = 2.5, font.size = 10)
在2D空間中可視化主要的發(fā)送者(源)和接收者(目標(biāo))。
netAnalysis_signalingRole_scatter(cellchat)
識別對某些細(xì)胞群的傳出或傳入信號貢獻(xiàn)最大的信號
ht1 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "outgoing")
ht2 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "incoming")
ht1 + ht2
識別特定細(xì)胞群的全局通信模式和主要信號如迟。除了探索單個通路的詳細(xì)通訊外收毫,一個重要的問題是多個細(xì)胞群和信號通路如何協(xié)調(diào)運作。CellChat采用模式識別方法來識別全局通信模式以及每個小群的關(guān)鍵信號殷勘。
?
識別分泌細(xì)胞外向交流模式此再。隨著模式數(shù)量的增加,可能會出現(xiàn)冗余的模式玲销,使得解釋通信模式變得困難输拇。我們選擇了4種模式作為默認(rèn)模式。一般來說贤斜,當(dāng)模式的數(shù)量大于2時就可以認(rèn)為具有生物學(xué)意義策吠。
nPatterns = 4
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = nPatterns)
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns)
netAnalysis_river(cellchat, pattern = "outgoing")
netAnalysis_dot(cellchat, pattern = "outgoing")
netAnalysis_river(cellchat, pattern = "incoming")
netAnalysis_dot(cellchat, pattern = "incoming")
本文使用 文章同步助手 同步