主题
09 · 细胞通讯与活化轨迹
代码目录同 08:
/home/research/dr-amd-targets/analysis/。 本页讲 MERTK 证据链里最靠后的两层——GAS6/PROS1→MERTK 胞葬轴与小胶质活化轨迹是怎么算出来的。 ⚠ 其中活化轨迹这一层已于 2026-07-27 撤下(见本页末),MERTK 由「六层收敛」改为「五层收敛」。
对应脚本:21_dr_cellchat.R(通讯)、25_dr_slingshot.R(轨迹)、23_dr_monocle.R(未执行,见下方红框)
★ 必须先说的一处订正
23_dr_monocle.R 脚本存在但从未成功运行:
- WSL 中
monocle3未安装(requireNamespace("monocle3")返回FALSE) results/monocle_dr/目录不存在,无任何输出- 原因见
25_dr_slingshot.R头部注释:"Substitutes monocle3 (blocked: BPCells needs libhdf5, no sudo)"
因此"monocle3 第二方法交叉验证、方向一致"这一说法目前没有结果支撑,汇报与论文中都不能这样写。 轨迹分析当前只有 Slingshot 一种方法。若要第二方法交叉验证,需先解决 libhdf5 依赖再实跑。
一、细胞通讯 CellChat(21_dr_cellchat.R)
输入是 08 存下的 dr_fvm_seurat.rds,分组变量为 celltype。
r
cc <- createCellChat(object = GetAssayData(seu, assay="RNA", layer="data"),
meta = data.frame(labels = seu$celltype), group.by = "labels")
cc@DB <- CellChatDB.human # 人类完整配受体库,未按 subset 裁剪
cc <- subsetData(cc)
cc <- identifyOverExpressedGenes(cc)
cc <- identifyOverExpressedInteractions(cc)
cc <- computeCommunProb(cc, type = "triMean") # ★ triMean = 保守设定
cc <- filterCommunication(cc, min.cells = 10) # ★ 少于10个细胞的类型不参与
cc <- computeCommunProbPathway(cc)
cc <- aggregateNet(cc)
cc <- netAnalysis_computeCentrality(cc)两个关键参数要能答出来:
| 参数 | 值 | 含义 |
|---|---|---|
type = "triMean" | 三均值 | CellChat 默认,偏保守——只有在较大比例细胞中表达才算数,比 "truncatedMean" 更不容易出假阳性 |
min.cells = 10 | 10 | 细胞数少于 10 的细胞类型被剔出通讯网络 |
TAM 轴的实际结果(TAM_MERTK_axis_communication.csv)
按 MERTK|GAS6|PROS1|AXL|TYRO3 匹配配体/受体/互作名筛出:
| source → target | 配体 → 受体 | prob | pval | 通路 |
|---|---|---|---|---|
| Photoreceptor → Microglia_Myeloid | GAS6 → MERTK | 8.99e−4 | 0 | GAS |
| Endothelial → Microglia_Myeloid | PROS1 → MERTK | 6.47e−4 | 0 | PROS |
| Photoreceptor → Mural_Fibroblast | GAS6 → AXL | 1.57e−3 | 0 | GAS |
| Endothelial → Mural_Fibroblast | PROS1 → AXL | 1.13e−3 | 0 | PROS |
读法:小胶质/髓系确实处在 GAS6/PROS1 的接收端,配体来自光感受器与内皮——与胞葬(efferocytosis)的生物学一致。 但要注意:同样的配体对 AXL(同属 TAM 家族)的 prob 更高(1.57e−3 vs 8.99e−4)。 写作时不能只挑 MERTK 那两行讲,AXL 的信号更强这件事必须一并呈现,否则是选择性报告。
二、活化轨迹 Slingshot(25_dr_slingshot.R)
为什么是 Slingshot
脚本注释写明:monocle3 被依赖问题挡住,改用 Slingshot,理由是 Saelens 2019 轨迹方法基准测评中排名靠前。这是一个合理的替代选择,但替代 ≠ 交叉验证。
流程与根锚定(最常被追问的一步)
r
mg <- subset(seu, subset = celltype == "Microglia_Myeloid") # 只取小胶质/髓系
mg <- FindVariableFeatures(nfeatures=2000) → ScaleData → RunPCA(npcs=20)
→ RunUMAP(dims=1:20) → FindNeighbors(dims=1:20) → FindClusters(resolution = 0.4)
homeo <- c("P2RY12","CX3CR1","TMEM119","SELPLG") # 稳态小胶质 marker
mg <- AddModuleScore(mg, features = list(homeo), name = "homeo", seed = 1)
start_clus <- names(which.max(tapply(mg$homeo1, mg$seurat_clusters, mean))) # ★ 根 = 稳态分最高的亚簇
sce <- slingshot(sce, clusterLabels = mg$seurat_clusters,
reducedDim = "PCA", # ★ 在 PCA 上算轨迹,不是 UMAP
start.clus = start_clus)要点:
- 亚聚类
resolution = 0.4(比 08 的全局 0.5 低,亚状态更粗) - 根不是随便指的,是"稳态四基因模块分最高的亚簇"——这是可复现的客观规则
- 轨迹在 PCA 空间学习(UMAP 只用于画图),这是 Slingshot 的推荐做法
沿伪时序的实际相关(Spearman,gene_pseudotime_correlation.csv)
CD68 -0.418 TREM2 +0.130
CX3CR1 -0.398 FTL +0.186
MERTK -0.307 GPNMB +0.276
GAS6 -0.282 LGALS3 +0.364
APOE -0.277 SPP1 +0.395
AXL -0.228
P2RY12 -0.161
TMEM119 -0.149轨迹方向自校验通过:稳态标记(P2RY12/CX3CR1/TMEM119)为负、活化标记(SPP1/LGALS3/GPNMB)为正,说明伪时序确实是"稳态→活化"方向,不是反的。
MERTK ρ = −0.307 ⚠ 该数值已作废(2026-07-27):它同时受两个人为因素影响 —— ① 混入 1 例非糖尿病 PVR/RRD 样本(贡献 32.6% 小胶质细胞);② 脚本硬编码只取第 1 条支线。 按 PDR 分层重跑后 Slingshot 给出 6 条支线,逐支线方向自校验后, 方向可解释的 3 条中 MERTK ρ = −0.04 / +0.12 / +0.17,均不为负 → 该证据层已撤下。 详见修复前后对比 §5.1。
⚠ 一个必须自己先想清楚的弱点
MERTK 的 ρ(−0.307)与稳态标记 CX3CR1(−0.398)处在同一量级。 这意味着 MERTK 的下降可能只是"随稳态程序整体下调",而非独立的生物学事件。 要把它讲成"活化态特异性丢失 MERTK",需要补一步:控制稳态模块分之后 MERTK 与伪时序是否仍相关(偏相关或加协变量的回归)。当前代码没有做这一步。
三、这两层的证据分量
| 能支持 | 不能支持 | |
|---|---|---|
| CellChat | 小胶质处于 GAS6/PROS1 接收端,通路存在 | ❌ 不能证明该通路在疾病中被改变(没做 AMD/DR vs 正常的差异通讯) |
| Slingshot | MERTK 沿活化轴下降 | ❌ 单方法、无交叉验证;❌ 未排除与稳态程序共变 |
★ 两者都是描述性的。加上 08 的定位、10 的 bulk 差异,构成"MERTK 功能故事", 但因果遗传层始终不支持 MERTK(coloc H4=0.01、deCODE 与视网膜 eQTL 全阴)。 详见 多组学 MR · 干分析。
输出物
results/cellchat_dr/ dr_cellchat.rds, significant_pathways.txt,
LR_communication_all.csv, TAM_MERTK_axis_communication.csv
figures/ aggregate_interactions.png, pathway_*.png, signaling_role_heatmap.png
results/slingshot_dr/ dr_microglia_slingshot_sce.rds,
gene_pseudotime_correlation.csv, track_genes_along_pseudotime.csv
figures/ umap_pseudotime.png, umap_MERTK.png, MERTK_vs_pseudotime.png, trend_*.png
results/monocle_dr/ ❌ 不存在(未执行)上一页 → 08 · 单细胞定位与伪 bulk · 下一页 → 10 · bulk 转录 / WGCNA / GSEA