☰
CellChat上手实战:如何在30分钟内跑通第一个单细胞细胞-细胞通讯分析
2026/11/3 19:10:58 网站建设 项目流程
  • 生物信息学
  • 科研
  • 数据分析

【免费下载链接】CellChat

R toolkit for inference, visualization and analysis of cell-cell communication from single-cell and spatially resolved transcriptomics

项目地址:https://gitcode.com/gh_mirrors/cel/CellChat
点击查看免费下载

CellChat 是一个开源的 R 工具包(R toolkit),专门用于从单细胞转录组(scRNA-seq)和空间转录组数据中推断、可视化并分析细胞-细胞通讯(cell-cell communication)。它基于人工 curated 的配体-受体互作数据库 CellChatDB,结合配体-受体表达水平,计算任意两个细胞群之间通讯发生的概率,并提供丰富的网络图、弦图、气泡图以及定量分析方法。本文带你走一遍完整流程:从安装 CellChat,到准备输入数据、跑通通讯推断,再到出图和系统分析,零基础用户也能在 30 分钟左右完成第一个单细胞细胞通讯分析。

一、CellChat 能做什么?1 分钟认识核心能力

CellChat 的核心思路是:把你手里已经分好群的单细胞表达矩阵,与CellChatDB 配体-受体数据库(人类约 3,300 个文献支持的分子互作)结合,逐对计算"谁发信号、谁收信号、信号有多强"。主要能力包括 🧬:

  • 通讯推断:以配体-受体对和信号通路(如 WNT、TGFb、CXCL)为粒度,给出带概率值的细胞-细胞通讯网络;
  • 可视化:层级图(Hierarchy)、圆形图(Circle)、弦图(Chord)、气泡图(Bubble)、热图(Heatmap)等,直观展示细胞群之间的信号流动;
  • 定量分析:用社会网络分析(中心性指标)识别主要信号发送者/接收者,用模式识别发现全局通讯模式,用流形学习对通路聚类;
  • 多数据集比较:支持在不同条件/组织间比较通讯网络的差异。

完整的功能总览可参考官方教程 CellChat-vignette.Rmd,本文按"最小可跑通"的路径提炼。

二、环境准备与安装:约 10 分钟

1. 系统要求

  • R(≥ 3.6.0)、macOS / Windows / Linux 均可;
  • 内存建议 ≥ 8GB,能装下你的表达矩阵即可;
  • 若后续使用降维可视化,还需安装 Python 包umap-learn(pip install umap-learn)。

2. 一键克隆并本地安装

git clone https://gitcode.com/gh_mirrors/cel/CellChat

然后在 R 中执行:

devtools::install_local("CellChat", dependencies = TRUE) library(CellChat)

💡 依赖较多(NMF、ComplexHeatmap、circlize 等约 50 个包),首次安装建议预留 10 分钟。依赖列表见 DESCRIPTION。

三、数据准备:CellChat 只需要 2 样东西

CellChat 对输入的要求非常"友好",只有两个必须输入 ✅:

输入要求
data.input归一化后的表达矩阵:基因在行、细胞在列(log 转换后的数据;若是原始 count,可用包内normalizeData处理)
meta带行名的 data.frame,至少包含一列细胞群标签(如labels),行名与矩阵列名一致

如果你用的是 Seurat / SingleCellExperiment / Scanpy(AnnData)对象,也都能直接对接,官方教程给出了逐对象的取数方式,详见 Interface_with_other_single-cell_analysis_toolkits.Rmd:

  • Seurat:seurat_object[["RNA"]]@data取出归一化矩阵,Idents()取标签;
  • SingleCellExperiment:logcounts(object)取矩阵,colData(object)取元数据;
  • AnnData:可用anndataR 包读取.h5ad文件。

四、跑通第一个分析:核心 6 步(约 15 分钟)

下面是最小化的主流程,每步都对应 CellChat-vignette.Rmd 中的完整示例。

步骤 1️⃣ 创建 CellChat 对象

cellchat <- createCellChat(object = data.input, meta = meta, group.by = "labels")

createCellChat定义了核心CellChat对象(S4 类,源码见 CellChat_class.R),后续所有分析都挂在它上面。若忘记传入 meta,之后也能用addMeta补上、setIdent切换默认细胞身份。

步骤 2️⃣ 设置配体-受体数据库 CellChatDB

人用CellChatDB.human,鼠用CellChatDB.mouse,数据文件位于 data/CellChatDB.human.rda 和 data/CellChatDB.mouse.rda:

CellChatDB <- CellChatDB.human showDatabaseCategory(CellChatDB) # 查看数据库分类 CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling", key = "annotation") cellchat@DB <- CellChatDB.use

数据库把互作分为 Secreted Signaling、ECM-Receptor、Cell-Cell Contact、Non-protein Signaling 四类;默认建议先用分泌信号类子集(subsetDB筛选)。

步骤 3️⃣ 识别高表达配体/受体

cellchat <- subsetData(cellchat) # 只保留信号基因,省时 future::plan("multisession", workers = 4) # 开 4 核并行 cellchat <- identifyOverExpressedGenes(cellchat) # 找各组高表达信号基因 cellchat <- identifyOverExpressedInteractions(cellchat) # 找高表达的 L-R 对

步骤 4️⃣ 计算通讯概率并推断网络

这是最核心的一步,CellChat 基于质量作用定律(law of mass action)+ 置换检验打分:

cellchat <- computeCommunProb(cellchat, type = "triMean") # 核心:通讯概率矩阵 cellchat <- filterCommunication(cellchat, min.cells = 10) # 过滤细胞数过少的组 cellchat <- computeCommunProbPathway(cellchat) # 汇总到信号通路层面 cellchat <- aggregateNet(cellchat) # 生成聚合网络

⚠️ 新手最常问的问题:type = "triMean"(默认)产出的互作偏少偏强,适合锁定强信号;若发现已知通路没被预测出来,可改用type = "truncatedMean", trim = 0.1放宽阈值(详见 CellChat-vignette.Rmd 的 CAUTION 说明)。

步骤 5️⃣ 出图:5 分钟拿到"论文级"网络图

pathways.show <- "CXCL" netVisual_aggregate(cellchat, signaling = pathways.show) # 层级图 netVisual_aggregate(cellchat, signaling = pathways.show, layout = "circle") # 圆形图 netVisual_aggregate(cellchat, signaling = pathways.show, layout = "chord") # 弦图 netVisual_bubble(cellchat, sources.use = 1, targets.use = 2:5) # 气泡图

图中边越粗代表信号越强,圆圈大小与细胞数量成正比;所有显著通路可遍历cellchat@netP$pathways批量出图。

步骤 6️⃣ 保存对象,随时复用

saveRDS(cellchat, file = "cellchat_humanSkin_LS.rds")

之后加载对象即可直接跳到分析/可视化环节,无需重算概率。

五、进阶 5 分钟:从"看图"到"定量结论" 📊

跑通基础流程后,两个最常用的系统分析功能强烈建议补上(实现位于 R/analysis.R):

1. 谁是最主要的信号发送者/接收者?(网络中心性)

cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP") netAnalysis_signalingRole_network(cellchat, signaling = "CXCL") # 热图 netAnalysis_signalingRole_scatter(cellchat) # 2D 散点

2. 多种细胞群 + 多条通路如何协同?(通讯模式识别)

selectK(cellchat, pattern = "outgoing") # 先选 k cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = 5) netAnalysis_river(cellchat, pattern = "outgoing") # 河流图 netAnalysis_dot(cellchat, pattern = "outgoing") # 点图

此外还有computeNetSimilarity+netEmbedding+netClustering三件套,可对通路做功能/结构相似性聚类与降维展示;多个样本条件之间的比较分析见 Comparison_analysis_of_multiple_datasets.Rmd。

六、常见新手坑位清单(避坑指南)🛟

问题解决方式
输入不是归一化数据CellChat 要求 log 归一化矩阵;count 数据先用包内normalizeData
预测出的通路太少computeCommunProb改用type = "truncatedMean", trim = 0.1
老版本对象加载报错用updateCellChat升级对象结构(版本历史见 NEWS.md)
安装卡在某个依赖确认 R ≥ 3.6.0;UMAP 相关报错执行pip install umap-learn
想换细胞群定义addMeta更新元数据后用setIdent(cellchat, ident.use = "labels")切换

七、更多教程与延伸阅读 📚

仓库tutorial/目录下有覆盖各种场景的完整教程,按需取用:

  • 单数据集全流程详解:CellChat-vignette.Rmd
  • 多数据集比较:Comparison_analysis_of_multiple_datasets.Rmd
  • 空间转录组分析:CellChat_analysis_of_spatial_transcriptomics_data.Rmd
  • 空间数据 FAQ:FAQ_on_applying_CellChat_to_spatial_transcriptomics_data.Rmd
  • 更新配体-受体数据库:Update-CellChatDB.Rmd

分析完成后还可以调用runCellChatApp(cellchat)启动交互式 Web 浏览器,在网页中直接探索通讯网络结果,对新手非常友好。

写在最后

回顾一下 30 分钟时间线:安装 10 分钟 → 数据准备 5 分钟 → 六步核心流程 15 分钟。至此你已经完成了从 scRNA-seq 数据到细胞-细胞通讯网络图的完整分析闭环。CellChat 的分析函数(如netVisual、netAnalysis系列)都以统一的cellchat对象为入口,后续扩展到多条件比较、空间转录组等场景时,套路完全一致——这就是"先跑通一个最小流程"的价值所在。祝分析顺利!🎉

  • 生物信息学
  • 科研
  • 数据分析

【免费下载链接】CellChat

R toolkit for inference, visualization and analysis of cell-cell communication from single-cell and spatially resolved transcriptomics

项目地址:https://gitcode.com/gh_mirrors/cel/CellChat
点击查看免费下载

相关推荐

上一篇:816B MoE巨兽登陆Apple Silicon!一文读懂Meta开源多模态模型Muse-Spark-Open-816B-A42B-oQ4e
下一篇:ltx-2.5-mlx-q8 速度优化:Pruna 剪枝 VAE 解码器如何让视频解码提速 2 倍(compact24 档实测)

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询