Skip to content

多组学 MR 与功能验证 · 代码引擎详解

和主 MR 流水线的 方法引擎 同规格:逐脚本讲清每一步用了什么统计方法、什么公式、什么函数。所有描述以实际代码为准(WSL,research 用户)。

这一栏配合结果页 多组学 MR · 干分析靶点功能验证 · 干分析进展 看:那两页讲"做完是什么结果",这栏讲"代码怎么写的、对不对"。

两个代码目录,别搞混

  • 01–07 → /home/research/multiomics-mr/(多组学 MR:eQTL / 代谢物 / meQTL / 视网膜 / 整合)
  • 08–10 → /home/research/dr-amd-targets/(功能验证:单细胞 / 通讯 / 轨迹 / bulk / GSEA)

两者是独立项目目录,与主筛查流水线 mr-pipeline 也相互隔离。

代码目录(唯一真源)

/home/research/multiomics-mr/                      # ← 01–07
├── common/mr_funcs.R          # 共享函数:结局配置 + 提取 + Z→β + clump + MR + coloc
├── 01_eqtl_mr/
│   ├── 01a_prep_eqtlgen.R      # eQTLGen Z-score → β/se,建暴露表
│   └── 01b_mr_coloc.R          # 血 eQTL MR + 共定位 + FDR
├── 02_metabolite_mr/
│   ├── 02_metabolite_mr.R      # Nightingale NMR 代谢物 MR
│   └── 02d_chen_mr.R           # Chen 专项代谢物(谷胱甘肽/肉碱等)
├── 03_meqtl_smr/
│   ├── 03a_make_ma.sh          # FinnGen → SMR .ma
│   └── 03c_fix_and_run.sh      # .esi chr:pos→rsID 重映射 + 跑 SMR
├── 05_retina/05a_retina_eqtl.R # Advani 视网膜 eQTL MR + coloc(眼特异)
└── 04_multiomic_coloc/04_integrate.R  # 四层证据矩阵(capstone)

/home/research/dr-amd-targets/analysis/            # ← 08–10(功能验证)
├── 01_bulk_analysis.R          # GEO bulk DEG(limma)+ 入口
├── 02_wgcna_gsea.R             # WGCNA 共表达模块
├── 03_gsea_fgsea.R             # 单基因 GSEA(fgsea + 自建 GO-BP)
├── 11_dr_scrna.R               # DR 纤维血管膜单细胞(GSE165784)
├── 12_amd_scrna_rpe.R          # AMD RPE/脉络膜单细胞(GSE230348)
├── 13_amd_pseudobulk.R         # 逐样本伪 bulk(避开细胞级 Wilcoxon)
├── 21_dr_cellchat.R            # CellChat 细胞通讯(TAM/MERTK 轴)
├── 23_dr_monocle.R             # ⚠ 存在但未执行(monocle3 未安装)
├── 25_dr_slingshot.R           # Slingshot 活化伪时序
└── 31_gct_nsr_vs_rpe.R         # EGA 视网膜 359 样本 NSR vs RPE 组织定位

逐模块导读

模块对应脚本讲什么
01 · 共享函数与数据读取common/mr_funcs.R结局配置、按 rsID 提取、Z→β 换算、LD clump、MR、coloc 的实现与坑
02 · 血 eQTL MR + 共定位01a + 01beQTLGen 预处理、金标准判定(FDR<0.05 且 H4≥0.8)
03 · 代谢物 MR02 + 02dNMR + Chen 专项,IVW/Egger/WM/Q/Steiger + robust 定义
04 · 甲基化 SMR03a + 03c.ma 构建、chr:pos→rsID 重映射、SMR+HEIDI
05 · 视网膜 eQTL MR05aAdvani QTLtools 解析、眼特异共定位
06 · 多组学整合矩阵04_integrate.R四层 0/1/2 打分、n_layers、热图
★ 07 · 代码审计与发表标准全部本次静态代码审计发现的问题、已修项、发表前必须解决项

功能验证(dr-amd-targets

模块对应脚本讲什么
08 · 单细胞定位与伪 bulk11 12 13QC 门槛、Harmony 整合、模块评分 argmax 自动注释、伪 bulk 为何取代细胞级 Wilcoxon
09 · 细胞通讯与活化轨迹21 2523 未执行)CellChat triMean/min.cells=10、Slingshot 根锚定规则、monocle3 交叉验证并不存在的订正
10 · bulk 转录 / WGCNA / GSEA01 02 03 31limma DEG、DR 组织混杂警告、单基因 GSEA 的真实含义、NSR vs RPE 组织定位

关于分子对接 / 分子动力学(简述)

用户问过"对接/MD 的代码是否也这样逐行核对过" —— 没有,也不太需要按这个规格做,原因:

  • 对接分子对接)和 MD分子动力学)的核心计算由成熟第三方引擎完成:AutoDock Vina / GNINA(对接打分)、GROMACS(分子动力学积分器 + 力场)。这些引擎本身经过大规模验证,"算得对不对"取决于上游引擎 + 参数选择,不是我们写的代码。
  • 我们写的只是编排/解析层(准备受体配体、调 GPU、跑流程、读输出、出图)—— 属于工程正确性,不是新颖统计方法。它们的文档已停在"使用说明 + 方法介绍 + 参数"这一层,够用。
  • 因此对接/MD 值得核对的是参数是否达发表标准(如 MD 生产轨迹 ≥100 ns、exhaustiveness、力场版本 —— 这些在各自文档里已写明),而不是逐函数讲代码。若将来要把某个对接/MD 结果写进论文,再针对那一次的参数与收敛性单独核查即可。

一句话

只有多组学 MR(这一栏)和主 MR 流水线(方法引擎)是"我们自己写的统计代码",才需要逐脚本核对;对接/MD 是"我们调别人的引擎",核对重点在参数而非代码。

个人科研与运维文档 · 内容持续修订