0. 背景知識
細胞通訊是單細胞數(shù)據(jù)高級分析中比較常見的一個披摄,我們習慣使用的R包是CellChat。
這個是CellChat的一手教程:
讓AI來告訴我們做細胞通訊分析的用途:
細胞通訊分析是生物學研究中的一個重要領域勇凭,它涉及研究細胞之間如何通過信號傳遞來協(xié)調它們的功能和行為疚膊。以下是一些細胞通訊分析的主要用途:
- 疾病診斷和治療:了解細胞如何交流可以幫助診斷和治療疾病,特別是那些與細胞通訊失調有關的疾病虾标,如癌癥寓盗、自身免疫疾病和神經(jīng)退行性疾病。
- 藥物開發(fā):通過研究細胞間通訊的機制璧函,可以發(fā)現(xiàn)新的藥物靶點傀蚌,從而開發(fā)出更有效的治療藥物。
- 發(fā)育生物學:細胞通訊在胚胎發(fā)育和組織形成中起著關鍵作用蘸吓。研究這些過程有助于我們理解正常和異常發(fā)育的機制善炫。
- 組織工程:在組織工程中,細胞通訊對于細胞的增殖库继、分化和組織結構的形成至關重要箩艺。
- 細胞信號傳導研究:細胞通訊分析有助于揭示細胞內信號傳導的復雜網(wǎng)絡,這對于理解細胞如何響應外界刺激非常重要制跟。
- 生物防御機制:研究細胞如何通過通訊來協(xié)調免疫反應舅桩,可以幫助我們更好地理解生物體如何抵御病原體。
- 神經(jīng)科學:在神經(jīng)科學領域雨膨,細胞通訊分析有助于我們理解大腦如何通過神經(jīng)細胞間的信號傳遞來處理信息擂涛。
- 生物信息學和系統(tǒng)生物學:通過分析細胞通訊網(wǎng)絡,可以構建生物系統(tǒng)的數(shù)學模型聊记,幫助我們從系統(tǒng)層面理解生物過程撒妈。
- 環(huán)境生物學:研究細胞如何響應環(huán)境變化,例如溫度排监、光照和化學物質狰右,可以揭示生物如何適應環(huán)境。
- 農(nóng)業(yè)和植物科學:在植物科學中舆床,了解植物細胞如何通過通訊來協(xié)調生長棋蚌、發(fā)育和對環(huán)境的響應,對于提高作物產(chǎn)量和抗逆性至關重要挨队。
細胞通訊分析是一個多學科交叉的領域谷暮,它結合了分子生物學、細胞生物學盛垦、生物化學湿弦、生物信息學和其他學科的知識和技術。通過這種分析腾夯,科學家可以更深入地理解生命過程颊埃,并開發(fā)出新的生物技術和治療方法蔬充。
1.R包和數(shù)據(jù)
使用的數(shù)據(jù)sce.all.Rdata是Seurat降維聚類分群注釋的結果,有兩個樣本班利。在生信星球聊天框回復“959monocle”可以拿到我的示例數(shù)據(jù)饥漫,和多樣本擬時序用的是同一個數(shù)據(jù)。
rm(list = ls())
#devtools::install_github('immunogenomics/presto')
library(CellChat)
library(ggplot2)
library(Seurat)
library(ggalluvial)
load("D:/BaiduSyncdisk/8.學習中/monocle_one_sample/sce.all.Rdata")
table(Idents(sce.all))
##
## CD14 Mono pDC CD4 Memory T T activated CD4 Naive T CD8 T
## 4355 132 1762 631 2501 814
## Mk B Activated B DC CD16 Mono NK
## 236 386 975 472 1044 618
scRNA = sce.all
2.了解參考數(shù)據(jù)
CellChatDB.human,CellChatDB.mouse分別是人和小鼠的配受體數(shù)據(jù)庫
str(CellChatDB.human,max.level = 1)
## List of 4
## $ interaction:'data.frame': 3234 obs. of 28 variables:
## $ complex :'data.frame': 338 obs. of 5 variables:
## $ cofactor :'data.frame': 32 obs. of 16 variables:
## $ geneInfo : tibble [26,827 × 8] (S3: tbl_df/tbl/data.frame)
table(CellChatDB.human$interaction$annotation)
##
## Cell-Cell Contact ECM-Receptor Non-protein Signaling
## 536 424 994
## Secreted Signaling
## 1280
PPI.human和PPI.mouse是稀疏矩陣肥败,是STRING數(shù)據(jù)庫里高等級證據(jù)的相互作用關系組成的0-1矩陣趾浅。
class(PPI.human)
## [1] "dgCMatrix"
## attr(,"package")
## [1] "Matrix"
dim(PPI.human)
## [1] 4815 4815
table(as.numeric(PPI.human))
##
## 0 1
## 23156523 27702
3.構建cellchat對象
seurat對象可以直接轉換。在@DB加上要使用的配體受體數(shù)據(jù)庫馒稍,注意物種
cellchat <- createCellChat(sce.all,
group.by = "ident",
assay = "RNA")
## [1] "Create a CellChat object from a Seurat object"
## The `meta.data` slot in the Seurat object is used as cell meta information
## Set cell identities for the new CellChat object
## The cell groups used for CellChat analysis are CD14 Mono, pDC, CD4 Memory T, T activated, CD4 Naive T, CD8 T, Mk, B Activated, B, DC, CD16 Mono, NK
cellchat@DB <- subsetDB(CellChatDB.human,
search = "Secreted Signaling")
#search可以選擇的值是: table(CellChatDB.human$interaction$annotation)
# 提取數(shù)據(jù)庫支持的基因的表達矩陣子集
cellchat <- subsetData(cellchat)
dim(cellchat@data.signaling)
## [1] 356 13926
3.細胞通訊網(wǎng)絡分析
# 識別過表達基因
cellchat <- identifyOverExpressedGenes(cellchat)
# 識別配體-受體對
cellchat <- identifyOverExpressedInteractions(cellchat)
## The number of highly variable ligand-receptor pairs used for signaling inference is 206
# 將配體皿哨、受體投射到PPI網(wǎng)絡
cellchat <- projectData(cellchat, PPI.human)#慢
## 推測細胞通訊網(wǎng)絡
cellchat <- computeCommunProb(cellchat) #慢
## triMean is used for calculating the average gene expression per cell group.
## [1] ">>> Run CellChat on sc/snRNA-seq data <<< [2024-06-08 17:41:35.378124]"
## [1] ">>> CellChat inference is done. Parameter values are stored in `object@options$parameter` <<< [2024-06-08 17:43:24.745221]"
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)
4.畫圖展示
分析出來的重要信號通路如下
cellchat@netP$pathways
## [1] "GALECTIN" "ANNEXIN" "CypA" "CXCL" "CCL" "MIF" "IL1"
每個通路都可以畫多種圖出來,圖中線的顏色與發(fā)射信號的細胞一致纽谒,線的粗細代表的是信號強弱证膨,線越粗信號越強。點的大小一般是按照每種細胞的數(shù)量來分配鼓黔。
pathways.show是要畫的信號通路央勒,可以換成cellchat@netP$pathways顯示的其他通路
pathways.show <- "GALECTIN"
hierarchy plot
groupSize <- as.numeric(table(cellchat@idents))
vertex.receiver = seq(1,nlevels(scRNA)/2);vertex.receiver
## [1] 1 2 3 4 5 6
netVisual_aggregate(cellchat, signaling = pathways.show, layout = "hierarchy", vertex.receiver = vertex.receiver, vertex.weight = groupSize)
這個圖分了兩張子圖,其實是分兩次說明了所有細胞類型之間的互作澳化。兩張子圖的差別是中間的圓圈崔步,第一張子圖中,第二列的圓圈意義同第一列缎谷,第二張子圖中井濒,第二列的圓圈意義同第三列,從”Target”這個單詞的顏色和哪個”source”一致可以看出列林。
互作方向也有了瑞你,是從兩邊的source到中間的target。
circle plot
circle plot 只是換了一個布局希痴,一張圖展示出來者甲。
par(mfrow = c(1,1), xpd=TRUE,mar = c(2, 2, 2, 2))
netVisual_aggregate(cellchat, signaling = pathways.show,
layout = "circle",
vertex.receiver = vertex.receiver,
vertex.weight = groupSize)
chord plot
弦圖還是很有細節(jié)的,內圈小短線代表發(fā)射出的信號被誰接收砌创,和接受者顏色一致虏缸,發(fā)射端是平的且有小短線,接收端是尖的嫩实。
netVisual_aggregate(cellchat, signaling = pathways.show, layout = "chord", vertex.receiver = vertex.receiver, vertex.weight = groupSize)
heatmap
熱圖寇钉,縱坐標是發(fā)射端,橫坐標是接收端舶赔,有顏色代表橫縱坐標所指的兩類細胞之間有通訊,顏色深淺代表通訊概率谦秧。右側和上方的條形圖是該行/列通訊概率之和
netVisual_heatmap(cellchat, signaling = pathways.show, color.heatmap = "Reds")
計算配體-受體對信號網(wǎng)絡的貢獻度
netAnalysis_contribution(cellchat, signaling = pathways.show)
熱圖-展示每一類細胞是什么角色
分析細胞在信號網(wǎng)絡中角色:發(fā)送者竟纳、接收者撵溃、調解者和影響者。
cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP") # the slot 'netP' means the inferred intercellular communication network of signaling pathways
netAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 12, height = 5, font.size = 10)
氣泡圖-顯示所有的顯著的配體-受體對
只有p<0.05的才會被畫出來锥累,顏色仍然是通訊概率缘挑,圈的大小是按照p值,p值越小圈越大桶略。
#可以分開语淘,也可以合到一起
netVisual_bubble(cellchat, sources.use = 1,
targets.use = 1:nlevels(scRNA),
remove.isolate = FALSE)
#從第一類細胞到全部細胞
netVisual_bubble(cellchat, sources.use = 1:nlevels(scRNA),
targets.use = 1:nlevels(scRNA),
remove.isolate = FALSE)#從全部細胞到全部細胞
5.細胞通訊模式和信號網(wǎng)絡
傳出模式,揭示了發(fā)射端細胞如何相互協(xié)調际歼,以及它們如何與某些信號通路協(xié)調以驅動通信惶翻。
傳入模式,顯示接收端細胞如何相互協(xié)調鹅心,以及它們如何與某些信號通路協(xié)調以響應輸入信號吕粗。
選擇合適的partten(細胞通訊模式)的數(shù)量
library(NMF)
selectK(cellchat, pattern = "outgoing")
在幫助文檔里面有解釋:For a range of the number of patterns, a suitable number of patterns is the one at which Cophenetic and Silhouette values begin to drop suddenly。
這兩個指標都是評估聚類穩(wěn)定性的旭愧,二者都突然下降的值對應的橫坐標就是合適的聚類數(shù)
這里是用parttern-細胞颅筋,parttern-通路矩陣畫的熱圖。identifyCommunicationPatterns函數(shù)識別通訊模式输枯,并畫出熱圖
nPatterns = 4 #根據(jù)上圖選擇的议泵,嫌麻煩也可以用默認值5
#傳出
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = nPatterns)
#傳入
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns)
用桑基圖和氣泡圖展示每種細胞傳入/傳出的信號都是屬于哪些通路的
# 商蚁ǎ基圖
netAnalysis_river(cellchat, pattern = "outgoing")
netAnalysis_river(cellchat, pattern = "incoming")
# 氣泡圖
netAnalysis_dot(cellchat, pattern = "outgoing",dot.size = 4)
netAnalysis_dot(cellchat, pattern = "incoming",dot.size = 4)
氣泡圖的顏色是按照細胞類型來分配先口,大小按照每個通路對每個細胞類型的貢獻程度分配。