第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 三个数据库的选型决策指南

说了这么多,你可能会问:到底该选哪个?我根据自己的项目经验,给出一个简易的决策流程:

  1. 如果你主要做人或小鼠的肿瘤免疫微环境,且关注已知信号通路 → 用 CellChatDB(通路注释最全,可视化最友好)
  2. 如果你想预测配体下游的转录效应,生成实验假设 → 用 NicheNet(独特的配体‑靶基因模型)
  3. 如果你对多亚基复合体特别在意(比如细胞因子受体),或者需要做置换检验 → 用 CellPhoneDB(统计学严谨性最强)
  4. 最稳妥的方案:先用 CellPhoneDB 筛选显著性互作对,再用 CellChatDB 做通路分类和网络图——这也是我本人在发表文章中常用的流程

为什么会这样搭配?因为 CellPhoneDB 的 P 值可以帮你过滤掉大量噪声,而 CellChatDB 的 Pathway 分类可以帮你把几十个互作对归纳成 3‑5 条主要信号通路。两招齐下,审稿人通常不会质疑。

4.6 三者关系概览图

下面这张图总结了三者的定位和关系。注意到 CellChatDB 和 CellPhoneDB 都基于统计+表达,而 NicheNet 额外引入了基因调控网络模型。

配体‑受体数据库关系对比 CellChatDB 通路注释 · 概率矩阵 NicheNet 配体活性 · 靶基因预测 CellPhoneDB 多亚基 · 置换检验 配体‑受体对 + 亚基注释 通信概率 + 通路分类 Bubble plot / 网络图 配体活性得分 + 靶基因 热图 / 小提琴图 P值 + 平均表达量 dotplot / 圈图 ▼ 使用建议: 先跑 CellPhoneDB 筛选显著对 → 再用 CellChatDB 做通路分类和网络图 → NicheNet 用于深层机制挖掘

你看,三者环环相扣。CellChatDB 和 CellPhoneDB 的输入都是原始表达矩阵,输出都是互作对;NicheNet 额外需要接收细胞的差异表达基因。建议在项目初期先用 CellPhoneDB 或 CellChatDB 做初步扫描,然后根据找到的候选配体,再用 NicheNet 去预测或验证下游靶基因。

4.7 实战选型检查清单

最后,我把我平时做项目时快速选库的检查清单分享给你。下次接到项目,直接对号入座:

场景 推荐数据库 理由
肿瘤免疫微环境(人) CellChatDB + CellPhoneDB 通路注释全 + 显著性检验
发育生物学(小鼠) CellChatDB (小鼠版) 物种支持好,通路覆盖发育相关通路
配体‑靶基因调控机制 NicheNet 唯一可预测下游转录响应
受体复合体亚基分析 CellPhoneDB 明确要求所有亚基共表达
快速可视化(非发表) CellChatDB 一行代码出网络图,省时

嗯,差不多就这些了。记住一句话:没有完美的数据库,只有适合你问题的工具箱。在实际项目中,我经常把三个库的结果放在一起比较,如果某个配体‑受体对同时在 CellChatDB 和 CellPhoneDB 里出现,而且 NicheNet 也预测其活性高,那这个候选就非常值得跟进实验了。