什么是细胞通讯?
细胞通讯分析(Cell Communication Analysis)是一种用于研究不同细胞类型之间通过细胞间信号传导和分子互作进行通讯的生物学方法。该分析帮助理解细胞如何通过分泌的信号分子(如细胞因子、趋化因子、配体-受体对等)来协调其功能、调控免疫反应、维持组织稳态或参与疾病过程。
在单细胞测序数据的分析中,细胞通讯分析能帮助我们揭示不同细胞类型之间的相互作用,进一步理解它们在生物学过程中的角色和机制。
细胞通讯的主要机制
配体-受体相互作用
配体是由一个细胞分泌的信号分子,受体则位于目标细胞的表面。当配体与目标细胞上的受体结合时,触发下游信号通路,导致目标细胞的功能变化。
配体-受体相互作用是细胞通讯分析的核心。常见的配体包括细胞因子、生长因子、激素,而受体则常为跨膜蛋白或细胞表面受体。
旁分泌和自分泌
旁分泌(Paracrine signaling):一个细胞分泌的信号分子作用于邻近的目标细胞。
自分泌(Autocrine signaling):细胞分泌的信号分子作用于自身,通过反馈调控自己的功能。
直接细胞-细胞接触
通过细胞膜上的蛋白直接相互作用(如通过整合素、黏附分子等),细胞可以传递信号。
在免疫系统中,T 细胞与抗原呈递细胞(APCs)的相互作用就是直接细胞接触的一种典型例子。
细胞通讯分析常用工具
CellPhoneDB
基于已知的配体-受体对,结合单细胞 RNA 数据来预测细胞间的通讯。
输出结果包括细胞群体之间的通讯强度、特定配体-受体对在不同细胞群体中的富集度。
CellChat
使用一个集成的配体-受体数据库,识别单细胞转录组数据中的细胞间通讯网络。
支持推断复杂的细胞相互作用模式,特别是在组织或疾病模型中。
应用场景
组织微环境的研究
在复杂的组织环境中,细胞之间的通讯对维持组织稳态至关重要。例如,在肿瘤微环境中,不同免疫细胞、肿瘤细胞、基质细胞之间的相互作用会影响疾病的进程和免疫反应。
免疫系统调控
免疫细胞通过分泌细胞因子和表达受体进行通讯。细胞通讯分析可以揭示免疫细胞之间如何通过信号传导相互调节。
疾病机制研究
在疾病背景下,如癌症、自免疫疾病,细胞间的异常通讯可能导致疾病的发生或进展。细胞通讯分析有助于发现新的治疗靶点。
实操
# 加载相关包
library(CellChat)
library(Seurat)
library(patchwork)
# 分割 Seurat 对象为 ctrl 和 stim 样本
seob_list <- SplitObject(seob, split.by = "samples")
# 创建 CellChat 对象
cellchat_ctrl <- createCellChat(object = seob_list$ctrl, group.by = "cell_type")
cellchat_stim <- createCellChat(object = seob_list$stim, group.by = "cell_type")
# group.by = "cell_type" 是根据 Seurat 对象中的细胞类型分组。
# CellChat 提供了不同的配体-受体数据库,例如针对人类或小鼠的数据。
CellChatDB <- CellChatDB.human # 使用人类配体-受体数据库
showDatabaseCategory(CellChatDB)
第一个饼图:信号通路类别
-
分泌信号(Secreted Signaling):占 39.6%。这个类别包括由细胞分泌的配体通过血液或细胞间隙传递的信号,如细胞因子、激素等。
-
ECM-受体 (ECM-Receptor):占 13.1%。涉及细胞与细胞外基质(ECM)之间的互动,如整合素与ECM蛋白的结合。
-
细胞-细胞接触 (Cell-Cell Contact):占 30.7%。指通过直接细胞接触传递的信号,如通过细胞表面蛋白如黏附分子。
-
非蛋白质信号 (Non-protein Signaling):占 16.5%。包括非蛋白质的信号分子,如脂类、小分子等。默认情况下,不使用”非蛋白信号”。
第二个饼图:配体-受体的互作形式
-
异聚体 (Heterodimers):占 39%。表示涉及两种不同蛋白质互相结合形成的配体-受体对。
-
其他 (Others):占 61%。可能包括同聚体或更复杂的配体-受体互作方式。
第三个饼图:数据来源
-
KEGG:占 56%。来源于KEGG数据库,这是一个广泛用于生物通路数据整合的数据库。
-
文献 (Literature):占 44%。直接来源于科学研究文献,反映了最新的科学发现和实验结果。
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling", key = "annotation")
# 设置配体-受体数据库
cellchat_ctrl@DB <- CellChatDB
cellchat_stim@DB <- CellChatDB
cellchat_ctrl <- subsetData(cellchat_ctrl) # 预处理 ctrl 样本
cellchat_stim <- subsetData(cellchat_stim) # 预处理 stim 样本
# 计算通讯概率
cellchat_ctrl <- identifyOverExpressedGenes(cellchat_ctrl)
cellchat_ctrl <- identifyOverExpressedInteractions(cellchat_ctrl)
cellchat_ctrl <- computeCommunProb(cellchat_ctrl)
cellchat_stim <- identifyOverExpressedGenes(cellchat_stim)
cellchat_stim <- identifyOverExpressedInteractions(cellchat_stim)
cellchat_stim <- computeCommunProb(cellchat_stim)
# 过滤掉低置信度的通讯信号
cellchat_ctrl <- filterCommunication(cellchat_ctrl, min.cells = 10)
cellchat_stim <- filterCommunication(cellchat_stim, min.cells = 10)
# 计算网络中心度
cellchat_ctrl <- netAnalysis_computeCentrality(cellchat_ctrl, slot.name = "net")
cellchat_stim <- netAnalysis_computeCentrality(cellchat_stim, slot.name = "net")
# 转为数据框查看
cellchat_ctrl_net <- subsetCommunication(cellchat_ctrl, slot.name = "net")
cellchat_stim_net <- subsetCommunication(cellchat_stim, slot.name = "net")
head(cellchat_ctrl_net)
source: 源细胞类型,即产生信号分子(配体)的细胞。
target: 目标细胞类型,即表达配体相应受体的细胞。
ligand: 配体名称,由源细胞分泌或表达的信号分子。
receptor: 受体名称,位于目标细胞表面,与配体结合来接收信号。

prob: 通讯概率,表示这种配体-受体相互作用在细胞群体中的存在或活跃程度。
pval: 相关统计分析的 p 值,用于量化该配体-受体互作的统计显著性。这里显示为0可能表示非常显著。
interaction_name: 配体和受体的组合名称,通常以_连接。
interaction_name_2: 另一种格式的配体-受体互作名称,通常以-连接。
pathway_name: 相关信号通路的名称,显示该配体-受体对如何参与特定的生物过程或信号通路。
annotation: 对通讯类型的注解,如”Secreted Signaling”表明这是一种分泌型信号传递方式。
evidence: 提供该配体-受体互作信息的来源,如”KEGG: hsa04060”,表示这些信息来自KEGG数据库,具体是人类细胞信号通路图的一个部分。
推断通讯网络(Pathway)
# 聚类细胞通讯网络
cellchat_ctrl <- computeCommunProbPathway(cellchat_ctrl)
cellchat_ctrl <- aggregateNet(cellchat_ctrl)
cellchat_stim <- computeCommunProbPathway(cellchat_stim)
cellchat_stim <- aggregateNet(cellchat_stim)
# count:条数,weight:强度
cellchat_ctrl_netP <- subsetCommunication(cellchat_ctrl, slot.name = "netP")
cellchat_stim_netP <- subsetCommunication(cellchat_stim, slot.name = "netP")
# 环形图展示细胞群体之间的通讯关系
netVisual_circle(cellchat_stim@net$weight, edge.width.max = 40)
# 热图展示细胞群体之间的通讯强度
netVisual_heatmap(cellchat_stim, measure = "weight")
扩展分析
在 CellChat 中,细胞间的通讯被表示为一个加权有向网络(weighted-directed network),其中权重表示计算得到的通讯概率。通过分析网络的结构,CellChat 计算了几个中心性度量,这些度量能够帮助识别哪些细胞群体在整个细胞通讯网络中起主导作用。
中心性度量指标包括:Out-degree(出度)、In-degree(入度)、Flow betweenness(流量介数)、Information centrality(信息中心性)。
通过中心性度量来确定细胞群体在网络中扮演的角色:信号发送者(senders)、接收者(receivers)、中介者(mediators) 和 影响者(influencers)。
# 计算网络中心度
cellchat_ctrl <- netAnalysis_computeCentrality(cellchat_ctrl, slot.name = "netP")
cellchat_stim <- netAnalysis_computeCentrality(cellchat_stim, slot.name = "netP")
横坐标是通路,纵坐标是细胞类型,颜色代表该细胞类型在该通路中的 Out-degree(出度)或 In-degree(入度)。
ht1 <- netAnalysis_signalingRole_heatmap(cellchat_stim, pattern = "outgoing")
ht2 <- netAnalysis_signalingRole_heatmap(cellchat_stim, pattern = "incoming")
ht1 + ht2
gg1 <- netAnalysis_signalingRole_scatter(cellchat_stim)
gg2 <- netAnalysis_signalingRole_scatter(cellchat_stim, signaling = pathway_name)
gg1 + gg2
通讯模式:评估细胞间的相似性
# 评估通讯模式
# 可以分别根据 outgoing 和 incoming
library(NMF)
library(ggalluvial)
selectK(cellchat_stim, pattern = "outgoing")
# 当外向模式数量为 6 时,科菲尼系数和轮廓系数都突然下降
nPatterns = 6
cellchat_stim <- identifyCommunicationPatterns(cellchat_stim, pattern = "outgoing", k = nPatterns)
Cell Patterns
-
每个模式中的细胞群体是基于其通讯角色聚类出来的。具有相似模式的细胞群体可能在某种生物功能或状态下起到类似的作用。例如,在免疫反应中,某些 T 细胞可能作为信号发送者,而其他细胞群体可能作为信号接收者。
-
通过这种模式分析,可以明确哪些细胞群体是网络中的信号”发射机”或”接收器”。
Communication Patterns
-
每个通讯模式中的配体-受体对是通过聚类分析得到的,它们的通讯特征在细胞群体之间具有相似性。通过识别这些模式,可以简化复杂的细胞通讯网络,明确哪些信号通路在不同细胞群体之间共享。
-
这些模式可以帮助我们理解哪些信号通路在特定的生物过程中起关键作用,或可能通过不同的配体-受体对在多个细胞群体之间协调相似的生物功能。
# 桑葚图
netAnalysis_river(cellchat_stim, pattern = "outgoing")
#点图
netAnalysis_dot(cellchat_stim, pattern = "outgoing")
❝
在上一篇《单细胞测序分析(九)差异表达分析》中,我们深入探讨了差异表达基因的识别与分析技巧,帮助大家理解如何在单细胞数据中挖掘细胞功能的多样性。今天,我们探讨的主题——细胞通讯,以及它在单细胞测序分析中的应用。