← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

NicheNet细胞互作-PDAC顶刊复现

NicheNet配体活性优先级工具方法:predict_ligand_activities+NSGA2R先验(v2/Zenodo7074291)、geneset定义(FindMarkers p_adj<0.05&log2FC>=0.25)、potential_ligands三重交集、get_weighted_ligand_target_links(n=200)、WSL运行与敏感性对照。Invoke when配体优先排序、ligand-target调控网络或nichenetr安装问题。

person作者: user_30836134hubcommunity

作者 (author): LKP kunpeng.liao@abiosciences.com Skill 及脚本参数来源: Chen et al., 2025, Cancer Cell 43, 1656–1676, https://doi.org/10.1016/j.ccell.2025.06.020

NicheNet 配体优先级分析

预测哪些配体最可能调控接收细胞的差异表达基因(geneset),输出配体活性排名与 ligand-target 网络。

安装(Windows 不可装,WSL 运行)

# nichenetr 依赖 mlrMBO 链,Windows R 4.4 无法安装,WSL Ubuntu 运行:
Rscript -e 'install.packages("remotes"); remotes::install_github("saeyslab/nichenetr")'
# 先验数据(二选一):
# v2(默认):Zenodo 7074291 NSGA2R 矩阵(2022-12):
#   nichenetr_prior/lr_network_human.rds + ligand_target_matrix_nsga2r_final.rds
# v1(论文时代):Zenodo 3260758:lr_network.rds + ligand_target_matrix.rds

1. Geneset 定义(接收细胞差异基因)

de <- FindMarkers(tumor, ident.1 = "S02_Schwann-TGFBI",
                  min.pct = 0.5, logfc.threshold = 0.5, only.pos = FALSE)  # 双向
targets <- rownames(de)[de$p_val_adj < 0.05 & de$avg_log2FC >= 0.25]
background_expressed_genes <- intersect(rownames(tumor), rownames(ligand_target_matrix))

2. 先验加载与矩阵预处理

lr_network           <- readRDS("nichenetr_prior/lr_network_human.rds")
ligand_target_matrix <- readRDS("nichenetr_prior/ligand_target_matrix_nsga2r_final.rds")
# 关键预处理:剔除全零配体列(制造 aupr 虚高,如 IGFL3 aupr=0.498)
ligand_target_matrix <- ligand_target_matrix[, colSums(ligand_target_matrix) > 0, drop = FALSE]

3. 配体活性预测(三重交集防假配体)

potential_ligands <- unique(lr_network$from) |>
  intersect(colnames(ligand_target_matrix)) |>
  intersect(object_genes)          # 肿瘤对象中实际表达的基因
ligand_activities <- nichenetr::predict_ligand_activities(
  geneset = targets,
  background_expressed_genes = background_expressed_genes,
  ligand_target_matrix = ligand_target_matrix,
  potential_ligands = potential_ligands)
ligand_activities <- ligand_activities[is.finite(ligand_activities$aupr_corrected), ]
ligand_activities <- ligand_activities[order(-ligand_activities$aupr_corrected), ]
best_upstream_ligands <- unique(head(rownames(ligand_activities), 20))  # top20

4. Ligand-target 网络

# 每配体取 n=200 条加权链接
weighted_links <- nichenetr::get_weighted_ligand_target_links(
  ligand = best_upstream_ligands, geneset = targets,
  ligand_target_matrix = ligand_target_matrix, n = 200)
# 热图靶点筛选:按 20 配体平均调控潜力保留 top 50% 靶基因(论文口径)

5. 敏感性对照(结果稳健性必查)

# 多 geneset 对照:复现 DE geneset vs 作者 Table marker geneset
#   (例如 74 基因 vs 77 marker,交集 64)
# 追踪关键配体排名(如 TGFB1/HGF)在 {geneset} × {v1/v2 先验} 组合下的变化
# v2+复现geneset:TGFB1 排 16-17/1194、HGF 排 815-816
# v2+作者marker:HGF rank 2、TGFB1 rank 11 —— 与论文一致

常见坑

  1. 全零配体列必须剔除:否则 aupr_corrected 虚高污染排名
  2. potential_ligands 三重交集:不去重/不交矩阵列/不交表达基因会引入大量假配体
  3. aupr_corrected 排序:用 order(-aupr_corrected),先过滤 is.finite
  4. 背景基因集影响排名:background = 对象表达 ∩ 矩阵行名
  5. 结论必须敏感性检验:单一 geneset 的 top 配体不稳定,报告时注明 geneset 与先验版本