- 生物信息学
- 科研
- 数据分析
【免费下载链接】CellChat
R toolkit for inference, visualization and analysis of cell-cell communication from single-cell and spatially resolved transcriptomics
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
相关推荐
Iron-Kaleidoscope项目概览:从Lexer到JIT的Rust+LLVM实践
Iron Kaleidoscope项目概览:从Lexer到JIT的Rust+LLVM实践 Iron Kaleidoscope是一个用Rust语言实现的LLVM教
编译器/解释器文档/教程CellChat:单细胞数据细胞通讯分析的R语言终极指南
CellChat:单细胞数据细胞通讯分析的R语言终极指南 CellChat是一个基于R语言的开源工具包,专门用于从单细胞转录组数据中推断、可视化和分析细胞间通讯
如何用CellChat解析细胞间通讯密码?2025最新单细胞分析指南 🧬
如何用CellChat解析细胞间通讯密码?2025最新单细胞分析指南 🧬 CellChat 是一个强大的R工具包,专为从单细胞和空间分辨转录组数据中推断、可视
生物信息学科研数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考