本节概览:
- NicheNet简介:了解NicheNet的核心理念及其与CellChat的互补关系。
- 小鼠专用数据库:加载小鼠配体-受体网络、配体-靶基因矩阵和加权网络。
- 数据准备:从Seurat对象出发,准备NicheNet分析所需的数据。
- 定义sender与receiver:指定信号发送细胞与接收细胞,明确分析方向。
- 配体活性分析:评估发送细胞表达的配体对接收细胞基因表达变化的预测能力。
- 可视化:绘制配体活性热图、靶基因调控热图、配体-受体网络图等。
- 结果解读:从配体活性到靶基因,串联完整的信号传导故事。
在之前,我们完成了CellChat细胞通讯分析,了解了不同细胞类型之间通过配体-受体对进行“对话”的强度与模式。然而,CellChat等传统工具主要回答的是“谁和谁在对话”以及“通过什么通道对话”。真实的细胞通讯过程远比配体-受体结合更复杂——配体与受体结合后,会触发细胞内信号转导,激活转录因子,最终调控特定靶基因的表达。
NicheNet正是为解决这一问题而生。它不仅能推断配体-受体互作,还能将发送细胞表达的配体与接收细胞中靶基因表达的变化联系起来。换句话说,NicheNet不仅能告诉你“谁在对谁说话”,还能预测“说了什么话”以及“对方听到了什么”。
物种说明:NicheNet官方数据库同时支持人和小鼠。本文以小鼠数据为例进行演示,所有代码和数据库均针对小鼠优化。本文将带领大家从已注释好的Seurat对象出发,一步步完成小鼠NicheNet分析。
一、准备工作:安装与加载R包
1.1 安装NicheNet并加载R包
首先,确保已安装NicheNet及相关依赖包:
rm(list=ls())
options(stringsAsFactors = F)
library(tidyverse)
library(patchwork)
library(Seurat)
library(nichenetr)#devtools::install_github("saeyslab/nichenetr")
library(ggplot2)
library(circlize)
dir.create("Nichenet")
scRNA <- readRDS("4_scRNA_celltype.rds")
table(scRNA@meta.data$cell_type)
二、加载小鼠NicheNet先验数据库
NicheNet的核心创新在于它整合了配体-受体、信号转导与转录调控网络为一个先验模型。分析前需要加载三个关键数据集:配体-受体网络、配体-靶基因矩阵和加权网络。
⚠️ 重要:NicheNet的prior信息默认基于人类数据整理。对于小鼠数据分析,必须使用小鼠专用数据库。以下代码直接从Zenodo加载小鼠专用文件:
# 加载小鼠配体-受体网络(mouse-specific)
lr_network <- readRDS(url("https://zenodo.org/record/7074291/files/lr_network_mouse_21122021.rds"))
# 加载小鼠配体-靶基因矩阵(mouse-specific)
ligand_target_matrix <- readRDS(url("https://zenodo.org/record/7074291/files/ligand_target_matrix_nsga2r_final_mouse.rds"))
# 加载小鼠加权网络(mouse-specific)
weighted_networks <- readRDS(url("https://zenodo.org/record/7074291/files/weighted_networks_nsga2r_final_mouse.rds"))
# 去重配体-受体对
lr_network <- lr_network %>% distinct(from, to)
# 检查数据库信息
cat("小鼠配体-受体对数量:", nrow(lr_network), "\n")
cat("小鼠配体数量:", length(unique(lr_network$from)), "\n")
cat("小鼠受体数量:", length(unique(lr_network$to)), "\n")
cat("小鼠配体-靶基因矩阵维度:", dim(ligand_target_matrix), "\n")


备选方案:如果你的网络环境无法直接读取URL,可以手动从Zenodo下载文件到本地后再读取:
https://zenodo.org/records/7074291
三、定义发送细胞与接收细胞
NicheNet分析需要明确指定信号发送细胞(sender) 与信号接收细胞(receiver)。这一步与CellChat的“所有细胞类型两两比较”不同——NicheNet更倾向于回答一个有方向性的生物学问题。
# 定义发送细胞和接收细胞
sender_celltypes <- "Microglia" # 发送细胞类型
receiver_celltype <- "Neuron" # 接收细胞类型
选型建议:发送细胞应优先选择已知具有分泌功能的细胞类型(如免疫细胞、基质细胞等),接收细胞应选择你感兴趣的目标细胞类型。
四、NicheNet分析
Idents(scRNA)<-scRNA@meta.data$cell_type
nichenet_output <- nichenet_seuratobj_cluster_de(
seurat_obj = scRNA,
receiver_affected = receiver_celltype, # 目标接收细胞
receiver_reference = "Astrocyte",
sender = sender_celltypes, # 发送细胞
ligand_target_matrix = ligand_target_matrix,
lr_network = lr_network,
weighted_networks = weighted_networks,
expression_pct = 0.05,
lfc_cutoff = 0.25,
geneset = "DE",
filter_top_ligands = TRUE,
top_n_ligands = 30,
top_n_targets = 200,
cutoff_visualization = 0.33,
verbose = TRUE
)
#查看配受体对
names(nichenet_output)
#查看配体活性排名
nichenet_output$ligand_activities
#核心靶基因名单
nichenet_output$top_targets


五、可视化
5.1 配体活性气泡图
# 查看细胞表达的配体
pdf("Nichenet/ligand_expression_dotplot.pdf")
nichenet_output$ligand_expression_dotplot
dev.off()
首先确认信号的来源,展示了指定的发送细胞(如小胶质细胞)中高活性配体的表达情况,帮助回答"谁发出了信号"

5.2 配体-靶基因调控热图
pdf("Nichenet/ligand_target_heatmap.pdf",width=40,height=8)
nichenet_output$ligand_target_heatmap
dev.off()
配体-靶基因热图揭示了通讯的最终效应,直观呈现了高活性配体可能调控接收细胞中的哪些靶基因,回答了"信号进入后改变了什么"。

5.3 配体-受体互作图
验证配体活性分析结果的生物学合理性:
pdf("Nichenet/ligand_receptor_heatmap.pdf",width=40,height=8)
nichenet_output$ligand_receptor_heatmap
dev.off()
配体-受体热图则验证了信号传递的合理性,展示了这些配体在接收细胞(如神经元)上对应的受体,回答了"信号通过什么进入接收细胞"

六、结果解读与生物学意义
完成上述分析后,我们可以从以下几个层面进行解读:
1. 谁是关键的信号发送者? 通过配体活性排序,我们可以识别出哪些配体最有可能解释了接收细胞的基因表达变化。
2. 调控了什么功能? 将预测的靶基因进行GO/KEGG富集分析,可以推断配体调控了下游哪些生物学通路或功能。
3. 信号传导的完整链条是什么? 从配体→受体→靶基因,NicheNet帮助我们串联起一条完整的信号传导故事。
4. 与已知知识是否一致? 将预测结果与文献报道进行比对,可以验证分析的可靠性,也可能发现新的调控机制。
与传统工具相比,NicheNet最独特的价值在于:它能把一个简单的配体-受体互作列表,升级成一个有方向、有因果推测的信号故事。
这里是两栖生物手册,中科院生物医学博士,持续记录生物医学实验和生物信息学笔记,干湿结合两不误~正努力成为最贴心负责的生信数据分析者和实验技术分享者,欢迎大家关注~