ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一文讲透细胞通讯数据库CellChatDB:配体-受体相互作用与单细胞通讯分析实战指南

一文讲透细胞通讯数据库CellChatDB:配体-受体相互作用与单细胞通讯分析实战指南

一文讲透细胞通讯数据库CellChatDB:配体-受体相互作用与单细胞通讯分析实战指南

【免费下载链接】CellChatR toolkit for inference, visualization and analysis of cell-cell communication from single-cell data项目地址: https://gitcode.com/gh_mirrors/ce/CellChat

凌晨一点,你终于把单细胞数据聚类成十几个细胞群,每个群都有一长串差异表达基因。可最核心的问题还没答案:这群细胞到底在和谁说话?是通过什么"暗号"沟通的?

你手上有上千个候选基因,但"谁分泌信号、谁接收信号、两者能否配对"这件事,靠肉眼和常识根本判断不了。你缺的不是算力,而是一本被反复校验过的"通讯字典"——它告诉你:在真实生物学里,哪些配体(发出信号的分子)和受体(接收信号的分子)确实能握手。

这本字典,就是 R 包 CellChat 内置的细胞通讯数据库CellChatDB。本文不讲枯燥的数据结构定义,而是带着"如何从零做一次单细胞通讯分析"这个实际问题,把它一层层拆开给你看。

先用起来:三行代码拿到你的"通讯底牌"

别急着背原理。CellChatDB 是一个打包好的数据对象,加载它只需要一行:

data(CellChatDB.human) # 加载人类配体-受体相互作用数据库 showDatabaseCategory(CellChatDB) # 画三个饼图,一眼看清库的构成 dplyr::glimpse(CellChatDB$interaction) # 偷看一眼主表长什么样

第二条命令会画出三个饼图:库里的相互作用按类型怎么分布、异二聚体占多少、证据来源是 KEGG 还是文献。第三条命令会在控制台吐出一张几千行的表——别慌,这就是数据库的主干,我们下一节再细说。

如果你只想分析某一类信号,立刻就能裁剪:

CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling")

到这里,你已经完成了"选库 + 裁剪"两个关键动作。整个过程不超过十秒,剩下的疑问我们逐个击破。

它到底存了什么?一份数据库里藏着四张表

打开data/目录,你会看到CellChatDB.human.rdaCellChatDB.mouse.rdaCellChatDB.zebrafish.rda三个文件,分别对应人类、小鼠和斑马鱼。加载之后,每个数据库都是一个包含四部分内容的列表:

① interaction——主表,配体-受体的"花名册"

每一行记录一对经过验证的相互作用,核心字段有:

  • interaction_namepathway_name:这条互作叫什么、属于哪条信号通路(如 WNT、FGF);
  • ligandreceptor:发出信号和接收信号的基因名;
  • annotation:互作类型,分三类——Secreted Signaling(分泌型信号)、ECM-Receptor(细胞外基质与受体)、Cell-Cell Contact(细胞接触);
  • evidence:证据来源,标注来自 KEGG 数据库还是原始文献;
  • agonistantagonistco_A_receptorco_I_receptor:调控因子列,后面计算通讯概率时要用。

② complex——复合物表

有些配体或受体必须"组队"才能工作。比如某个受体需要两个亚基拼成一个异二聚体才算数,主表里记录的是复合物名,而这张表记下它由哪些亚基基因构成。

③ cofactor——共因子表

记录能增强(激动剂)、抑制(拮抗剂)或辅助(共受体)一条互作的分子。它们是通讯强度的"调节旋钮"。

④ geneInfo——基因注释表

一份官方基因名对照表。数据库里所有基因名都以它为准,避免大小写、别名造成的"对不上号"。

💡 一句话总结:主表回答"谁和谁能配对",另外三张表回答"配对时需要哪些零件、有哪些调节因素"。

里面的数据靠谱吗?凭什么信这份"通讯字典"

你可能担心:几千条配体-受体对,会不会是算法自动抓取、鱼龙混杂?答案是:不会,它是人工整理出来的

CellChatDB 的构建流程是"文献 + KEGG"双源头:先由研究人员从海量原始文献里筛出有实验证据支持的配体-受体相互作用,再与 KEGG 通路数据库交叉核对,每条记录都标注了证据来源,你可以顺着evidence字段溯源。数据库里人源有1,939 条验证过的互作(约 61.8% 为旁分泌/自分泌信号,21.7% 为细胞外基质-受体,16.5% 为细胞接触),鼠源有2,021 条,比例结构类似。

此外,项目还提供了两个"外援":PPI.human.rdaPPI.mouse.rda,来自 STRINGdb 的高置信度蛋白质-蛋白质相互作用网络。它们和 CellChatDB 相互印证,帮助你在分析时交叉验证结果。可以说,这份字典的每个词条都有人"签字背书"。

它怎么和你的表达数据"对上号"?

数据库装的是官方基因名,而你单细胞数据里的基因名可能带着版本号、大小写混乱,甚至物种不同。CellChat 用两个函数解决这个"对暗号"问题:

  • checkGeneSymbol:体检员,检查你的基因集里有没有不在官方名册上的名字;
  • extractGene:翻译官,把复合物的每个亚基都展开成独立基因,确保一个都没漏掉。

打个比方:数据库是厚厚一本"电话簿",你的数据是一堆"名片"。extractGene会把名片上的"某某团队(张三、李四、王五)"逐个拆开,保证三个成员都能在电话簿里被找到。这一步决定了后续计算时,你的基因到底能不能"接通"。

跟着走一遍:从一张表达矩阵到一张通讯网络图

理论说再多,不如完整走一遍。假设你手上有小鼠的单细胞数据,目标是找出哪些细胞群之间在通过分泌信号沟通:

第一步:选库并裁剪。对象是小鼠,就用小鼠库;只想看分泌信号,就只保留这一类:

data(CellChatDB.mouse) CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling")

第二步:挂载数据库。创建 CellChat 对象时,把裁剪后的库放进对象里,后续所有计算都以它为准:

cellchat <- createCellChat(object = data.mouse, group.by = "ident") cellchat@DB <- CellChatDB.use

第三步:计算通讯概率。调用computeCommunProb时,质量作用定律模型会逐条扫描数据库里的配体-受体对,结合两个细胞群各自的表达水平算出通讯概率。注意,之前提到的cofactor表此刻开始"上岗":激动剂会抬高这条互作的概率,拮抗剂会压低它,共受体则作为补充受体加入计算。数据库决定"有哪些可能性",这一步决定"在当前数据里有多强"。

第四步:筛选显著通路。filterCommunicationidentifyEnrichedInteractions去掉低概率、低价值的互作,把几千条对收敛到几十条显著通路。

第五步:可视化与解读。netVisual_circle画出通讯网络图,netAnalysis_computeCentrality找出谁是"信号发出大户"、谁是"接收大户"。至此,凌晨那个问题有了完整答案。

上图是 CellChat 的整体工作流:数据库 → 通讯建模 → 可视化 → 深入分析,而 CellChatDB 是整个流水线的起点和地基。没有它,后面的建模和画图都无从谈起。

新手最容易踩的五个坑

⚠️ 物种不匹配。人类数据配小鼠库,或反过来,是最常见的低级错误。配体-受体在不同物种间未必保守,分析前先确认data()加载的是哪个物种的文件。

⚠️ 基因名不规范。别急着跑全流程,先用checkGeneSymbol体检。别名、旧符号、多余空格都会让基因"静默失踪",而你不会收到任何报错。

⚠️ 全库与子集的混淆。默认用全库分析还是只保留 "Secreted Signaling",结果差异很大。通常建议:初步探索用全库,聚焦某一类信号时再裁剪,并记得在论文方法里写清楚。

⚠️ 把概率当成"事实"。通讯概率本质是"该数据下这对互作被激活的可能性",不是真实存在的生物证据。它帮你排序、帮你找方向,最终结论仍需实验验证。

⚠️ 对象版本落后。如果你加载的是旧版本分析产生的 CellChat 对象,记得先调用updateCellChat升级,否则新版函数可能报错或给出不一致的结果。

常见问题(FAQ)

Q:CellChatDB 和 PPI 数据库有什么区别?A:CellChatDB 是"配体-受体"层级的通讯字典,直接服务通讯分析;PPI 是"蛋白质-蛋白质"层级的物理互作网络,更像一张更宽泛的关系图谱,两者互相补充、交叉验证。

Q:能往数据库里加自己的配体-受体对吗?A:可以。项目提供了完整的更新教程(tutorial/Update-CellChatDB.Rmd),手把手教你怎么添加新互作、修改注释,甚至构建自定义物种的数据库。

Q:subsetDB之后通路数量变少了,正常吗?A:正常。裁剪意味着只保留你选中的互作类型,其余类型的通路自然会消失。如果你发现某条已知通路没了,检查一下它的annotation分类是否在保留范围内。

Q:interaction表里的agonistantagonist列是干什么的?A:它们指向共因子表中的条目。有激动剂/拮抗剂标注的互作,在computeCommunProb计算概率时会额外考虑浓度调节效应——这也是 CellChat 比"只看表达量"的做法更贴近生物学的关键设计之一。

回到那个凌晨

还记得开头的你吗?面对上千个候选基因,纠结谁在和谁说话。现在你手里多了一本经过人工校验、带证据溯源、四张表联动的"通讯字典"。你不需要记住几千条互作,只需要知道它存在、它可信、它如何被调用——剩下的,几行代码就能替你完成。

CellChatDB 的价值不在于"大",而在于"可信 + 结构化":它把散落在文献里的配体-受体知识变成机器可读的数据,让单细胞通讯分析从"凭感觉"变成"有依据"。下次再面对一堆细胞群,你不再是凌晨那个对着屏幕发愁的人,而是手握底牌、知道从哪下手的分析者。

【免费下载链接】CellChatR toolkit for inference, visualization and analysis of cell-cell communication from single-cell data项目地址: https://gitcode.com/gh_mirrors/ce/CellChat

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

返回列表