2026版单细胞测序scRNA-seq入门实战(七):CellChat细胞通讯分析——揭秘细胞间的“对话”

本节概览:

  • CellChat简介:了解细胞通讯分析的意义和CellChat的工作原理。
  • 数据准备:从Seurat对象提取表达矩阵和元数据,构建CellChat对象。
  • 数据库与预处理:加载小鼠(或人类)配受体数据库,识别过表达基因和相互作用。
  • 通信网络计算:计算细胞间通信概率,构建加权网络。
  • 可视化:绘制整体通讯网络图(circle plot)、信号通路气泡图、特定通路的热图与贡献度分析。
  • 结果解读:从宏观到微观解析细胞间“对话”的规律。

在上一节中,我们成功为每个cluster赋予了生物学身份(细胞类型),明确了组织中存在哪些细胞亚群。然而,细胞并非孤立存在——它们通过配体-受体相互作用进行信息传递,协调发育、免疫应答、肿瘤微环境等多种生理病理过程。细胞通讯分析正是从单细胞数据中推断这些“对话”的关键工具。

目前主流的方法包括CellChat、CellPhoneDB、NicheNet等。其中,CellChat因其算法严谨、可视化丰富、易于上手而广受欢迎。它通过整合配体-受体相互作用数据库,量化不同细胞类型之间的通信强度和概率,并识别关键的信号通路。

本文将带领大家从已注释好的Seurat对象出发,一步步完成CellChat分析。。


一、准备工作:加载R包和数据

首先,确保已安装CellChat及相关依赖包。如果未安装,可以运行:

# 若未安装CellChat,取消注释以下行
# devtools::install_github("sqjin/CellChat")

接下来,加载所有必需的包,并读取上一节保存的含细胞类型注释的Seurat对象。

rm(list = ls())
options(stringsAsFactors = F)
library(Seurat)
library(tidyverse)
library(patchwork)
library(RColorBrewer)
library(dplyr)
library(magrittr)
library(CellChat)
library(tidydr)
library(ggalluvial)
library(data.table)
library(ggsci)

# 读取已注释的Seurat对象
scRNA <- readRDS("4_scRNA_celltype.rds")

# 创建输出目录
dir.create("cellchat")

# 查看当前所有细胞类型
unique(scRNA$cell_type)

二、创建CellChat对象与数据库设置

2.1 提取表达数据并构建CellChat对象

CellChat要求输入标准化后的表达矩阵(log-normalized counts)以及包含细胞分组信息的meta.data。我们直接从Seurat对象中提取:

# 获取RNA assay的标准化数据(data slot)
data <- GetAssayData(scRNA, assay = "RNA", layer = "data")
# 创建CellChat对象
cellchat <- createCellChat(data, 
                           meta = scRNA@meta.data, 
                           group.by = "cell_type")

group.by指定了用于定义细胞群落的列名(这里是cell_type)。创建完成后,我们可以查看对象的基本信息。

2.2 加载配体-受体数据库

CellChat内置了小鼠(CellChatDB.mouse)和人类(CellChatDB.human)的数据库,包含已知的配体-受体对及其注释信息(如通路、分类等)。根据我们的物种选择对应的数据库:

# 使用小鼠数据库(请根据实际物种修改)
CellChatDB <- CellChatDB.mouse
# ### 查看数据库信息
# showDatabaseCategory(CellChatDB)
# 可选:查看数据库包含的相互作用类型
unique(CellChatDB$interaction$annotation)

# 将数据库赋值给CellChat对象
cellchat@DB <- CellChatDB

此时,cellchat对象已准备好进行后续的预处理。


三、预处理与通信网络计算

3.1 数据子集与过表达基因识别

CellChat首先需要识别在每个细胞群中过表达的基因(配体或受体),然后筛选出那些过表达配体-受体对。

# 子集化数据(只保留表达矩阵中存在的基因)
cellchat <- subsetData(cellchat)
# 识别过表达基因
cellchat <- identifyOverExpressedGenes(cellchat)
# 识别过表达的配体-受体相互作用(基于数据库)
cellchat <- identifyOverExpressedInteractions(cellchat)
# 将配体-受体对映射到蛋白质-蛋白质相互作用网络(PPI),增强推断准确性
cellchat <- projectData(cellchat, PPI.mouse)

3.2 计算通信概率

核心步骤:利用质量作用定律(即配体在发送细胞中的表达量与受体在接收细胞中的表达量的乘积)计算每对细胞类型之间的通信概率。此外,CellChat还通过网络传播统计学检验来过滤弱信号。

# 计算通信概率(raw.use = TRUE表示使用原始表达值)
cellchat <- computeCommunProb(cellchat, raw.use = TRUE)
# 过滤低置信度的通信(至少3个细胞表达)
cellchat <- filterCommunication(cellchat, min.cells = 3)

至此,我们得到了每个配体-受体对在不同细胞对之间的通信概率。接下来,汇总到通路水平:

# 计算通路水平的通信概率
cellchat <- computeCommunProbPathway(cellchat)
# 聚合为细胞间总体通信网络(计数和权重)
cellchat <- aggregateNet(cellchat)

最后,计算网络中心性指标(用于后续识别关键发送者/接收者/中介者):

cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP")

保存结果,以便后续快速加载:

save(cellchat, file = "cellchat/cellchat_1.RData")

四、可视化细胞通讯网络

4.1 整体通讯概览——Circle Plot

Circle Plot可以直观显示所有细胞类型之间的通信数量和强度。这里我们绘制两张图:一张基于通信次数(count),一张基于通信权重(weight,即概率之和)。

# 定义颜色
colors <- c(pal_npg("nrc", alpha = 1)(10), 
            pal_jco("default", alpha = 1)(10))
# 通信次数(边越粗代表通信对数越多)
pdf("cellchat/netVisual_cir_count.pdf", width=8, height=7)
par(mar=c(0,0,3,0))
netVisual_circle(cellchat@net$count, 
                 color.use = colors,
                 vertex.weight = as.numeric(table(cellchat@idents)),  
                 weight.scale = TRUE, 
                 label.edge = FALSE, 
                 title.name = "Number of Communication")
dev.off()

# 通信权重(边越粗代表总通信概率越高)
pdf("cellchat/netVisual_cir_weight.pdf", width=8, height=7)
par(mar=c(0,0,3,0))
netVisual_circle(cellchat@net$weight, 
                 color.use = colors,
                 vertex.weight = as.numeric(table(cellchat@idents)),
                 weight.scale = TRUE, 
                 label.edge = FALSE, 
                 title.name = "Weight of Communication")
dev.off()

解读

  • 如果边明显更粗,表明可能通过多种配体强烈影响细胞。
  • 节点大小代表该细胞类型的细胞数量,但注意通信强度已进行归一化处理,因此可以比较不同细胞对之间的相对强弱。

4.2 信号通路气泡图(Bubble Plot)

Bubble Plot展示哪些信号通路在不同细胞对之间被显著激活。它可以帮助我们快速识别哪些通路介导了特定细胞间的通信。

# 绘制所有通路的气泡图(全部细胞对)
pdf("cellchat/2_pathway_bubble_all.pdf", width=15, height=20)
netVisual_bubble(cellchat, angle.x = 45)
dev.off()

# 仅展示以Microglia为发送者的通路(例如,查看小胶质细胞如何影响神经元)
pdf("cellchat/2_pathway_bubble_microglia.pdf", width=10, height=8)
netVisual_bubble(cellchat, sources.use = c("Microglia"), angle.x = 45)
dev.off()

气泡图中,横轴为接收细胞,纵轴为信号通路。


五、深入特定信号通路

CellChat计算得到的cellchat@netP$pathways包含了所有被识别的信号通路名称。我们可以针对感兴趣的通路进行深入可视化,如绘制圆圈网络图热图贡献度分析

# 查看所有通路名称
load("cellchat/cellchat_1.RData")
cellchat@netP$pathways

dir.create("cellchat/pathways")
# 遍历每个通路(此处示例仅展示前几个,实际可全部循环)
for (i in seq_along(cellchat@netP$pathways)) {
  pathway <- cellchat@netP$pathways[i]
  
  pdf(paste0("cellchat/pathways/", i, "_pathway_", pathway, ".pdf"), 
      width = 12, height = 6)
  
  # 使用 tryCatch 捕获错误
  tryCatch({
    # 1) 圆圈网络图
    netVisual_aggregate(cellchat, 
                        signaling = pathway, 
                        layout = "circle",
                        vertex.weight = as.numeric(table(cellchat@idents)))
    
    # 2) 热图
    print(netVisual_heatmap(cellchat, signaling = pathway))
    
    # 3) 贡献度分析
    print(netAnalysis_contribution(cellchat, signaling = pathway))
  }, error = function(e) {
    # 如果出错,打印通路名称和错误信息,但不中断循环
    message("Error in pathway: ", pathway, " - ", e$message)
  })
  
  dev.off()
}



对于每个通路,我们得到三张子图:

  • 圆圈图:与总体图类似,但只显示该通路介导的相互作用,边权重为该通路下的总通信概率。
  • 热图:纵轴为发送细胞,横轴为接收细胞,颜色表示该通路通信概率,可发现方向性。
  • 贡献度条形图:显示该通路内各配体-受体对的相对贡献,帮助我们锁定关键分子对。

六、结果解读与生物学意义

完成上述分析后,我们应当结合文献背景对结果进行解读。可能发现:

  1. 了解通信占主导的通路。
  2. 了解特定配体-受体对

cellchat结果不仅能验证已知知识,还可能发现新的调控机制,为后续实验提供方向。


七、总结与拓展

至此,我们完成了从Seurat对象到CellChat细胞通讯分析的完整流程,包括:

  • 创建CellChat对象并配置数据库;
  • 计算通信概率并构建网络;
  • 可视化总体通讯、通路气泡图和特定通路细节;
  • 提取关键配体-受体对。

细胞通讯分析打开了从“细胞组成”到“细胞功能”的桥梁,让我们在单细胞水平上理解组织微环境的调控逻辑。希望本文能帮助你顺利开展自己的CellChat分析之旅!


这里是两栖生物手册,中科院生物医学博士,持续记录生物医学实验和生物信息学笔记,干湿结合两不误~正努力成为最贴心负责的生信数据分析者和实验技术分享者,欢迎大家关注~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容