CellChat:单细胞与空间转录组细胞通讯分析工具¶
概述¶
CellChat 是一个基于 R 语言的开源工具,专门用于从 scRNA-seq(单细胞转录组) 和 空间分辨转录组(spatially resolved transcriptomics) 数据中推断细胞间通讯(cell-cell communication)。其核心思想是利用已知的配体-受体(Ligand-Receptor)相互作用关系,通过统计建模与网络分析,定量刻画细胞群体之间如何通过分子信号进行“对话”。CellChat 不仅能够识别哪些信号通路活跃于特定细胞群,还能从网络视角揭示细胞群的信号输入/输出模式、信号枢纽以及多细胞群落的功能协同。
自 2021 年首次发布以来,CellChat 已历经多个版本演进。最新版本 CellChat v3(Spatial CellChat) 重点强化了对空间转录组数据的支持,能够在单细胞或空间 spot 分辨率上推断细胞邻近通讯,并兼容多种技术平台。CellChat v2 则扩充了数据库(CellChatDB v2),新增代谢与突触信号等非蛋白质相互作用,并提供了与其他单细胞分析工具对接的接口以及交互式网页探索功能。官方在 Nature Protocols (2024) 上发表的分步实验指南为 v1.5 及以上版本的用户提供了标准操作流程,建议用户在分析时引用该文献。
核心知识点¶
1. CellChat 版本演进与关键功能¶
| 版本 | 核心改进 | 适用场景 |
|---|---|---|
| CellChat v1.x | 基础通讯推断、网络比较、模式识别 | scRNA-seq 数据 |
| CellChat v2 | 空间邻近通讯推断、扩展数据库(>1000 相互作用)、交互式浏览器 | scRNA-seq + 空间转录组(初步支持) |
| CellChat v3 (Spatial CellChat) | 单细胞/spot 分辨率空间通讯推断、多技术适配 | 各类空间转录组技术(seq-based & imaging-based) |
重要提示:使用 CellChat v2 及以上版本分析空间数据时,请区分“非空间”和“空间”通讯推断模式。空间模式会将细胞的空间坐标纳入配体-受体扩散模型,仅保留空间邻近的通讯事件,从而更符合组织微环境中的真实信号传递。
2. CellChatDB 数据库¶
CellChat 的强大之处在于其精心整理的配体-受体数据库 CellChatDB。v2 版本对数据库进行了重大扩展:
- 超过 1000 个蛋白质与非蛋白质相互作用,涵盖经典的分泌信号、细胞-细胞接触(Cell-Cell Contact)以及 ECM-受体(Extracellular Matrix-Receptor)作用。
- 新增代谢信号和突触信号,极大拓宽了细胞通讯分析的生物学范围。
- 提供函数
updateCellChatDB(),允许用户轻松更新或自定义扩展数据库。
数据库内每一对相互作用均附有详尽的注释,包括通路归属、功能分类、配体和受体的结构信息等,有助于后续进行通路层面的高阶解读。
3. 空间通讯推断(Spatial CellChat)¶
CellChat v3 专为空间转录组数据设计,其主要特点包括:
- 单细胞 / spot 分辨率:无论数据是单个细胞还是单个空间捕获点(spot),均可推断其与周围细胞的通讯。
- 多技术适配:适用于基于测序的技术(如 10x Visium、Slide-seq、Stereo-seq)和基于原位成像的技术(如 MERFISH、seqFISH、Xenium)。官方提供了详细的 FAQ 文档,针对不同技术的数据预处理、参数设置和结果解释进行了专门说明。
空间约束模型:在通讯概率计算中引入细胞间的空间距离,使得只有物理上邻近的细胞
如何选择空间分析中的
truncatedMean和k参数?
建议使用默认值(truncatedMean = 0.05,k = 5)开始分析。若组织区域细胞密度差异过大,可适当调整k以捕获局部邻居。可以使用spatialHeatmap检查细胞密度,再决定参数。如何处理跨多个组织区域的数据?
推荐按组织区域(如肿瘤核心、边界、正常区域)分组进行分析。CellChat 提供了subset和smooth功能,可分别对不同区域建模,然后使用比较分析模块揭示区域间通讯差异。
速查表¶
常用函数速查¶
| 函数 | 用途 | 示例调用 |
|---|---|---|
createCellChat() | 创建 CellChat 对象 | cc <- createCellChat(object) |
setDB() | 设定配体-受体数据库 | cc <- setDB(cc, CellChatDB.human) |
preprocess() | 基因表达预处理 | cc <- preprocess(cc) |
computeCommunProb() | 计算通讯概率(非空间) | cc <- computeCommunProb(cc) |
computeCommunProbPathway() | 聚合到通路水平 | cc <- computeCommunProbPathway(cc) |
aggregateNet() | 聚合网络 | cc <- aggregateNet(cc) |
netVisual_chord() | 弦图展示细胞群通讯 | netVisual_chord(cc, signaling = "CXCL") |
netVisual_heatmap() | 热图展示通讯强度 | netVisual_heatmap(cc) |
spatialCommunication() | 空间模式通讯概率计算 | cc <- spatialCommunication(cc) |
spatialNetVisual() | 空间通讯网络可视化 | spatialNetVisual(cc, signaling = "WNT") |
rankNet() | 比较不同条件通路排序 | rankNet(cc1, cc2) |
updateCellChatDB() | 更新或自定义数据库 | cc <- updateCellChatDB(cc, new.db) |
常用数据槽(Slots)¶
| Slot | 描述 |
|---|---|
@DB | 配体-受体数据库 |
@data | 标准化后的基因表达数据 |
@data.signaling | 仅含信号相关基因的表达子集 |
@net | 通讯概率网络(cell-cell) |
@netP | 通路水平通讯网络 |
@spatial | 空间坐标与空间通讯结果 |
@meta | 细胞注释元数据 |
输入数据要求¶
- 非空间分析:一个标准的 Seurat / SingleCellExperiment 对象或基因表达矩阵 + 细胞注释向量。
- 空间分析:除上述内容外,还需要空间坐标矩阵(行名为细胞/spot ID,列名为
x,y或imagecol,imagerow)。对于 10x Visium 用户,可直接从Seurat对象的@images中提取。
核心分析流程简图¶
数据准备 → 创建对象 → 设库 → 预处理 → 计算通讯概率
├── 非空间: computeCommunProb
└── 空间 : spatialCommunication
↓
聚合通路 & 网络
↓
可视化 (弦图、热图、网络图、空间画图)
↓
比较分析 (rankNet, diffNet)
通过以上知识梳理,用户可以快速上手 CellChat 并深入理解细胞通讯分析。建议在实际应用中,务必参考官方教程与 Nature Protocols 指南,确保分析步骤和参数选择符合实验设计与数据特征。