第4章 配体‑受体数据库:CellChatDB、NicheNet、CellPhoneDB 对比与选型
做细胞间通信分析,说白了就是回答一个问题:谁(配体细胞)通过什么(配体分子)跟谁(受体细胞)说了什么(受体分子)。而配体‑受体数据库,就是这张“分子语言词典”。没有它,你的单细胞数据就是个哑巴。
我记得刚入行那会儿,项目里拿到一个肿瘤微环境的 scRNA-seq 数据集,导师问我:“这些细胞之间是怎么聊天的?”我懵了。后来翻文献才知道,市面上已经有十几个配体‑受体数据库,每个库的收录逻辑、注释粒度、物种覆盖都不一样。选错库,结果就是瞎忙活。今天我把最常用的三个库——CellChatDB、NicheNet、CellPhoneDB——掰开揉碎了讲清楚。
4.1 三个数据库的核心定位
先看一张对比表,有个整体印象。后面再逐个深入。
| 特性 | CellChatDB | NicheNet | CellPhoneDB |
|---|---|---|---|
| 开发团队 | 浙江大学 / 马普所 | 鲁汶大学 (Saeys 组) | EMBL‑EBI / 维康桑格 |
| 主要语言 | R | R (支持 Python 包装) | Python (R 可调用) |
| 物种 | 人类、小鼠 (更多物种待扩展) | 人类 (配体模型) | 人类 (v4+ 支持小鼠) |
| 配体‑受体对数量 | 约 2,000 对(人工+文献) | 约 1,600 对(含信号模型) | 约 1,000 对(v4 精筛) |
| 特色功能 | 信号通路分类 + 可视化 | 配体活性预测 + 靶基因 | 多亚基复合体配对 |
| 数据来源 | KEGG, IUPHAR, 文献人工校正 | STRING, CellPhoneDB, 文献挖掘 | UniProt, IUPHAR, 文献人工审核 |
| 输出结果 | 通信概率矩阵 + 网络图 | 配体‑靶基因调控网络 | 显著互作对 + 表达富集 |
这张表我给过不少学员,很多人第一反应是“那就选 CellChatDB,它条目最多”。别急,往下看。
4.2 CellChatDB —— 通信路径的“地图册”
CellChatDB 是我个人用得最多的一个库。原因很简单:它不光告诉你配体和受体是谁,还帮你归类到已知的信号通路里。比如看到 CD74_COPA 这对,你就知道它属于 MHC‑II 通路;看到 EGF_EGFR,属于 ErbB 通路。这对后续的生物学解读帮助极大。
它的数据结构是这样的:
# 加载 CellChat 包后自动附带数据库
library(CellChat)
db <- CellChatDB.human # 或 CellChatDB.mouse
# 查看配体‑受体对
head(db$interaction)
# interaction_name ligand receptor pathway annotation
# 1 TGFB1_TGFBR1 TGFB1 TGFBR1 TGFb Secreted
# 2 CD40LG_CD40 CD40LG CD40 CD40 Co‑activation
# 查看多亚基信息(如果某个受体由两个亚基组成)
db$complex
我的建议:做肿瘤免疫微环境项目时,优先用 CellChatDB。它的通路注释(如 TNF、NOTCH、WNT)能直接帮你定位到免疫检查点或 EMT 相关信号。我曾在一批黑色素瘤数据里,用 CellChatDB 发现肿瘤细胞通过 MIF_CD74_CXCR4 偷偷招募巨噬细胞,后来被实验验证了。
CellChatDB 的输出是一个通信概率矩阵,背后用了一个质量作用定律的简化模型:信号强度 ∝ (配体表达量 × 受体表达量)。它不做显著性检验,但会给出每个配体‑受体对在每种细胞类型对之间的概率值。
避坑提醒:我曾经用 CellChatDB 默认参数跑了一个包含 8 种细胞类型的数据集,结果画出的网络图密密麻麻全是线。后来才发现,它的默认阈值是 0.05,太低了。我建议先用 filterCommunication(min.cells = 10) 过滤掉在少于 10 个细胞中表达的配体‑受体对。否则图没法看。
4.3 NicheNet —— 配体活性的“预测引擎”
NicheNet 的定位和其他库不太一样。它不直接告诉你“细胞 A 通过配体 X 给细胞 B 发送信号”,而是问:“如果细胞 A 表达配体 X,那么细胞 B 里哪些靶基因会被激活?”——相当于从配体出发,预测下游转录响应。
它的核心原理是:先构建一个配体‑靶基因的调控模型(基于已知的转录因子‑靶基因关系和基因调控网络),然后用模型从单细胞表达数据里逆向推断“哪个配体最可能解释了目标细胞中的差异表达”。
# NicheNet 的典型用法(简化)
library(nichenetr)
# 1. 准备表达矩阵和配体/受体基因集
seurat_obj <- ... # 你的 Seurat 对象
sender_cells <- "Macrophage" # 发送细胞类型
receiver_cells <- "T cell" # 接收细胞类型
# 2. 定义“感兴趣基因”:在接收细胞中上调的基因
genes_of_interest <- c("GZMA", "PRF1", "IFNG") # 举个例
# 3. 运行配体活性预测
ligand_activity <- predict_ligand_activities(
seurat_obj,
sender = sender_cells,
receiver = receiver_cells,
geneset = genes_of_interest
)
# 结果:每个配体得到一个活性得分(Pearson 相关系数)
head(ligand_activity)
# ligand activity
# 1 CCL5 0.52
# 2 IL15 0.48
# 3 CXCL9 0.41
你看,它返回的不是“通信概率”,而是“配体活性得分”。这个得分代表:给定接收细胞中那些差异表达基因,配体 X 的靶基因预测集与之重叠的程度。
我个人觉得 NicheNet 最适合做假设生成。比如在发育数据里,你想知道哪些配体在诱导某个细胞亚群的分化,NicheNet 可以给你一个榜单。然后你再去做实验验证。
一个实际案例:我在分析肝纤维化单细胞数据时,用 NicheNet 预测到肝星状细胞(HSC)分泌的 PDGFB 配体,很可能是激活肌成纤维细胞的“主谋”。后来用细胞共培养 + qPCR 验证了 PDGFB 确实能上调 COL1A1 和 ACTA2。这就是 NicheNet 的价值——它帮你从“相关”走向“因果”的假说。
注意:NicheNet 的配体‑受体数据库是基于人类构建的。如果你想做小鼠项目,虽然大部分基因同源,但部分受体亚基的注释可能缺失。我曾在一次小鼠脑胶质瘤项目里尝试用 NicheNet,结果 Cd74 的受体复合体没法正确匹配。怎么办?我手动把小鼠基因名转换成人类同源基因名,勉强能用,但不够优雅。如果项目很严谨,建议用 CellChatDB 或 CellPhoneDB 的专有物种模块。
4.4 CellPhoneDB —— 多亚基复合体的“质检员”
CellPhoneDB 是三个库里面最“严谨”的一个。它的主要特色是:支持多亚基复合体的配体‑受体对。什么叫多亚基复合体?比如 IL‑2 受体,它是由 IL2RA、IL2RB、IL2RG 三个亚基组成的异源三聚体。如果只有一个亚基表达,信号是传不过去的。CellPhoneDB 会要求所有亚基都在对应的细胞类型中同时表达,才算这个配体‑受体对是“可用”的。
# CellPhoneDB 命令行模式(Python)
cellphonedb method statistical_analysis \
meta.txt \
count_matrix.h5ad \
--counts‑data hgnc_symbol \
--output‑path ./result/
它的输出会生成多个文件:
significant_means.txt—— 显著互作对的平均表达量pvalues.txt—— 置换检验的 P 值deconvoluted.txt—— 多亚基复合体的解卷积结果
# 查看显著互作对(以人类 v4 为例)
head(means)
# interacting_pair partner_a partner_b cell_a cell_b mean
# 1 CD74_COPA CD74 COPA Macrophage TC_CD8 0.87
# 2 TGFB1_TGFBR1_TGFBR2 TGFB1 TGFBR1_TGFBR2 Tumor CAF 0.64
# 3 IL2_IL2RA_IL2RB_IL2RG IL2 IL2RA_IL2RB_IL2RG CD4+ NK 0.55
我通常的用法:先拿 CellPhoneDB 跑一遍,看哪些配体‑受体对是统计学显著的(P < 0.05)。然后把显著的结果导入 CellChat 做通路注释和网络可视化。两者互补,效果很好。记住,CellPhoneDB 的显著性基于空间随机化——它把细胞标签打乱 1000 次,看真实互作对的表达均值是否显著高于随机。
坑:CellPhoneDB 的默认置换次数是 1000 次。如果数据量很大(比如超过 5 万个细胞),跑一次可能需要 30 分钟到几小时。我曾经在集群上跑 10 万细胞的数据,等了 3 小时才出结果。我建议先 downsampling 到每个细胞类型最多 2000 个细胞,速度会快很多,而且结果基本稳定。
4.5 三个数据库的选型决策指南
说了这么多,你可能会问:到底该选哪个?我根据自己的项目经验,给出一个简易的决策流程:
- 如果你主要做人或小鼠的肿瘤免疫微环境,且关注已知信号通路 → 用 CellChatDB(通路注释最全,可视化最友好)
- 如果你想预测配体下游的转录效应,生成实验假设 → 用 NicheNet(独特的配体‑靶基因模型)
- 如果你对多亚基复合体特别在意(比如细胞因子受体),或者需要做置换检验 → 用 CellPhoneDB(统计学严谨性最强)
- 最稳妥的方案:先用 CellPhoneDB 筛选显著性互作对,再用 CellChatDB 做通路分类和网络图——这也是我本人在发表文章中常用的流程
为什么会这样搭配?因为 CellPhoneDB 的 P 值可以帮你过滤掉大量噪声,而 CellChatDB 的 Pathway 分类可以帮你把几十个互作对归纳成 3‑5 条主要信号通路。两招齐下,审稿人通常不会质疑。
4.6 三者关系概览图
下面这张图总结了三者的定位和关系。注意到 CellChatDB 和 CellPhoneDB 都基于统计+表达,而 NicheNet 额外引入了基因调控网络模型。
你看,三者环环相扣。CellChatDB 和 CellPhoneDB 的输入都是原始表达矩阵,输出都是互作对;NicheNet 额外需要接收细胞的差异表达基因。建议在项目初期先用 CellPhoneDB 或 CellChatDB 做初步扫描,然后根据找到的候选配体,再用 NicheNet 去预测或验证下游靶基因。
4.7 实战选型检查清单
最后,我把我平时做项目时快速选库的检查清单分享给你。下次接到项目,直接对号入座:
| 场景 | 推荐数据库 | 理由 |
|---|---|---|
| 肿瘤免疫微环境(人) | CellChatDB + CellPhoneDB | 通路注释全 + 显著性检验 |
| 发育生物学(小鼠) | CellChatDB (小鼠版) | 物种支持好,通路覆盖发育相关通路 |
| 配体‑靶基因调控机制 | NicheNet | 唯一可预测下游转录响应 |
| 受体复合体亚基分析 | CellPhoneDB | 明确要求所有亚基共表达 |
| 快速可视化(非发表) | CellChatDB | 一行代码出网络图,省时 |
嗯,差不多就这些了。记住一句话:没有完美的数据库,只有适合你问题的工具箱。在实际项目中,我经常把三个库的结果放在一起比较,如果某个配体‑受体对同时在 CellChatDB 和 CellPhoneDB 里出现,而且 NicheNet 也预测其活性高,那这个候选就非常值得跟进实验了。