多组学整合分析入门¶
彭文强 | 2026届 | 生信分析工程师求职
1. 一句话说明¶
多组学整合分析就是把基因组、转录组、蛋白质组、代谢组、宏基因组等不同层面的数据"拼"到一起分析,找到单看一层数据看不到的跨层关联和调控规律——好比你之前只看了"菜谱"(基因组),现在把"采购清单"(转录组)、"做好的菜"(蛋白质组)和"客人的反馈"(代谢组)一起看,才能真正搞清楚这家餐厅怎么运作的。
2. 为什么要学¶
2.1 单组学的局限¶
你目前做过宏基因组和转录组,两个方向都是"单组学分析"。单组学就像只从一个角度看问题:
宏基因组(你做过的):
能回答:T2D 患者肠道里有哪些菌?丰度怎么变化?
不能回答:这些菌的代谢产物对宿主血糖调控有什么影响?
转录组(你做过的):
能回答:哪些基因在 T2D 患者中差异表达?
不能回答:这些 mRNA 真的被翻译成蛋白质了吗?蛋白活性如何?
基因组:
能回答:有没有致病突变?
不能回答:这个突变在活的细胞里到底有没有造成影响?
白话总结:单组学就像盲人摸象——你摸到了腿,别人摸到了鼻子,各自说得都对,但谁也没看到完整的大象。多组学整合就是把大家摸到的部分拼起来,看到全貌。
2.2 多组学能回答什么更深层的问题¶
| 问题 | 单组学能做到吗 | 多组学怎么回答 |
|---|---|---|
| T2D 患者肠道菌群变化导致了哪些代谢通路异常? | 宏基因组只能预测菌群功能,不能确认代谢产物 | 宏基因组 + 代谢组:直接对应菌群组成变化和代谢产物浓度变化 |
| 某个差异基因到底有没有在蛋白水平也异常? | 转录组看到 mRNA 升高,但翻译效率未知 | 转录组 + 蛋白质组:同时看 mRNA 和蛋白质丰度,确认调控是否传导 |
| 肠道菌群、宿主免疫和代谢之间是怎么互作的? | 单组学只能描述一个层面 | 宏基因组 + 转录组 + 代谢组:用整合模型找到跨层面的调控枢纽 |
| 不同组学数据中,哪些变量共同指向同一个生物学过程? | 每个组学各自找各自的特征 | 多组学降维后,找到共同变异方向(潜在因子) |
一句话:多组学让你从"描述现象"升级到"揭示机制"。
2.3 就业市场需求¶
多组学整合分析是近 3 年生信领域最热的方向之一:
- CNS 高分文章 几乎标配多组学整合分析
- 药企研发岗 普遍要求"多组学数据分析经验"
- 临床研究 从单组学走向多组学是必然趋势
- 你的竞争力:已有宏基因组 + 转录组经验,再加上多组学整合的知识,面试时可以说"我不仅会做单组学,还理解多组学整合的策略和工具"
3. 核心概念白话版¶
3.1 什么是多组学(Multi-omics)¶
"组学"(omics)就是对某一类生物分子做全面/系统的测量。
加个"多"字,就是同时测量多个层面:
DNA 层面 → 基因组学(Genomics) → "设计图纸"
RNA 层面 → 转录组学(Transcriptomics)→ "施工指令"
蛋白层面 → 蛋白质组学(Proteomics) → "造出来的零件"
代谢层面 → 代谢组学(Metabolomics) → "工厂的产出"
微生物层面 → 宏基因组学(Metagenomics)→ "车间里的工人们"
多组学整合 = 把这些层面的数据同时分析,找层与层之间的关联
3.2 常见组学类型一览¶
| 组学 | 测什么 | 白话解释 | 典型技术 | 数据特点 |
|---|---|---|---|---|
| 基因组 | DNA 序列和变异 | 生命的"源代码" | WGS、WES、SNP 芯片 | 稳定、不随时间变化 |
| 转录组 | mRNA 表达量 | 此刻哪些基因在"开工" | RNA-seq、scRNA-seq | 动态变化、组织特异 |
| 蛋白质组 | 蛋白质种类和丰度 | 真正干活的"工人" | 质谱(TMT/iTRAQ/DIA) | 翻译后修饰增加复杂度 |
| 代谢组 | 小分子代谢物 | 生命活动的"副产品"和"原料" | LC-MS/MS、GC-MS、NMR | 种类极多,标准化难 |
| 宏基因组 | 微生物群落的总 DNA | 一个生态系统里所有"居民"的基因组 | 宏基因组测序、16S/ITS | 你的强项!组成极复杂 |
| 表观基因组 | DNA 甲基化、组蛋白修饰 | 基因的"开关"和"音量旋钮" | WGBS、ChIP-seq、ATAC-seq | 位点分辨率、高维度 |
3.3 整合策略分类¶
多组学整合的核心问题是:不同组学的数据格式、维度、规模都不一样,怎么把它们放到一起?
有三大策略:
策略一:早期融合(Early Integration / Data-level Fusion)¶
白话:先把所有组学数据拼成一张超大表格,再一起分析。
操作:把转录组矩阵(m个基因)和代谢组矩阵(n个代谢物)按样本横向拼接,
变成一个 (样本数 × (m+n)) 的大矩阵,然后直接做 PCA、聚类、机器学习等。
优点:简单直接,保留了所有变量之间的关系
缺点:不同组学的量纲、稀疏度差异大,容易被某个组学"带偏"
适用:组学数据维度差不多、样本量足够大时
示意图:
转录组 [100样本 × 5000基因]
代谢组 [100样本 × 200代谢物]
───────────────────────────
拼接后 [100样本 × 5200特征] → 一起做 PCA / 聚类 / 分类
策略二:晚期融合(Late Integration / Decision-level Fusion)¶
白话:每种组学数据各自单独分析,最后把各自的结论合起来。
操作:转录组独立做差异分析得到一组结果,代谢组独立分析得到一组结果,
最后用投票、加权平均或网络叠加的方式合并结论。
优点:每种组学用最适合自己的方法分析,不怕量纲不同
缺点:丢失了组学之间的交互信息(你只是在比较最终结论,不知道中间的关联)
适用:不同组学样本不完全对应时、探索性分析
示意图:
转录组 → 独立分析 → 结果A ─┐
代谢组 → 独立分析 → 结果B ─┼→ 合并 → 最终结论
宏基因组 → 独立分析 → 结果C ─┘
策略三:混合融合(Intermediate / Mixed Integration)¶
白话:先从每种组学中提取"特征"或"潜在因子",再把这些中间表示放到一起分析。
操作:用降维方法从每种组学中提取关键成分(比如前 10 个主成分),
再把这些成分放到一个模型里联合分析。
优点:兼顾了组学间的关联 + 降低了维度灾难
缺点:方法论复杂,需要选择合适的降维方式
适用:大多数实际多组学项目
大部分主流多组学工具(MOFA+, mixOmics)都属于这类策略。
3.4 降维与特征选择¶
多组学数据的一个大难题是维度灾难:
白话解释维度灾难:
假设你有 50 个样本,但同时测了 20000 个基因 + 5000 个代谢物 = 25000 个变量。
变量比样本多 500 倍!
这就像你只考了 50 道选择题,却要根据这 50 题的成绩预测你能不能考上清华、北大、
复旦……等 25000 所大学——信息根本不够用,模型会"过拟合"(强行找规律,实际不靠谱)。
解决办法就是"降维":把 25000 个变量压缩成少数几个"综合指标"(主成分/因子),
保留最重要的信息,丢弃噪声。
常用降维方法:
| 方法 | 白话解释 | 用于多组学时 |
|---|---|---|
| PCA(主成分分析) | 找到数据变化最大的方向,把高维数据投影到少数几个方向上 | 早期融合后做 PCA |
| CCA(典型相关分析) | 找到两组数据最相关的方向 | 两个组学之间找最大关联 |
| PLS(偏最小二乘) | 类似 CCA 但更稳定,适合变量远多于样本的情况 | mixOmics 的核心方法 |
| NMF(非负矩阵分解) | 把数据拆成几个非负的"因子"叠加 | 适合丰度数据(都是正数) |
| MOFA 因子分析 | 从多组学数据中提取共享和组学特有的潜在因子 | MOFA+ 的核心 |
4. 常用工具与方法¶
4.1 MOFA+(Multi-Omics Factor Analysis)¶
白话解释:
MOFA+ 把多组学数据看成一个"拼图",每种组学是拼图的一部分。
它自动从中找出若干个"潜在因子"(latent factors),每个因子代表一种
跨组学的变异模式。
比如因子1可能代表"与 T2D 相关的代谢紊乱",它在转录组中对应一组
上调的炎症基因,在代谢组中对应升高的短链脂肪酸,在宏基因组中对应
丰度变化的厚壁菌门。
核心思想:不是暴力拼接数据,而是找到各组学"共同讲述的故事"。
适用场景: - 2 种及以上组学数据的探索性整合 - 需要找出哪些因子在多组学间共享、哪些是组学特有的 - 样本量较小(几十到几百个)也能用 - 支持多组别(如多个时间点、多个分组)
技术特点:
- 基于贝叶斯因子分析模型
- 自动判断每个因子对每种组学的贡献(权重矩阵)
- Python 包 mofapy2 + R 包 MOFA2
4.2 mixOmics / DIABLO¶
白话解释:
mixOmics 是一个 R 语言工具包,专门做多组学数据的整合和变量选择。
其中最核心的方法叫 DIABLO(Data Integration Analysis for Biomarker discovery
using Latent cOmponents)。
DIABLO 的思路:
1. 从每种组学中提取几个"成分"(类似 PCA 的主成分)
2. 这些成分不是各自提取的,而是要求跨组学之间的成分最大程度"相关"
3. 同时做变量选择:每个成分只挑最重要的几十个变量(稀疏化)
白话比喻:就像从三个班级各选出一支代表队,要求这三支队伍必须"步调一致"
(高相关),而且每队只选最强的几个队员(变量选择)。
适用场景: - 有明确分组(如 T2D vs 健康对照)的监督式整合分析 - 需要做 Biomarker 筛选:找到跨组学的最少特征组合来区分分组 - 需要可解释的稀疏模型 - 适合临床研究、疾病分型
技术特点: - 基于广义 sPLS(稀疏偏最小二乘) - 输出:样本得分图、变量载荷图、circos 关联图、热图 - 纯 R 语言实现,文档和教程丰富
4.3 SNF(Similarity Network Fusion,相似网络融合)¶
白话解释:
SNF 的思路和前面的方法完全不同。它不是去降维找因子,而是:
1. 从每种组学数据分别构建一个"样本相似网络"
(谁和谁像?把相似的样本连起来)
2. 然后把多个网络"融合"成一个综合网络
3. 在融合网络上做聚类,得到整合后的样本分型
白话比喻:
你有三个老师分别根据语文、数学、英语成绩给学生分组。
SNF 不是把三科成绩拼在一起算总分,而是把三个老师各自的"学生关系图"
叠加融合,最终得到一个综合的学生分组。
适用场景: - 疾病亚型发现(如肿瘤分子分型) - 无监督聚类为主 - 不需要找具体的 biomarker,更关注样本分群 - 对噪声和缺失数据比较鲁棒
技术特点:
- 基于图/网络理论
- R 包 SNFtool,Python 也有实现
- 核心函数少,代码简洁
4.4 WGCNA(Weighted Gene Co-expression Network Analysis)¶
白话解释:
WGCNA 严格来说是单组学工具(最早用于转录组),但在多组学整合中非常常用。
它的思路:
1. 计算所有基因两两之间的相关性(谁和谁表达趋势一致)
2. 把高度相关的基因归成一个"模块"(module)
3. 看每个模块和临床表型(如 T2D 分组、BMI、血糖值)的关联
在多组学整合中的用法:
- 在转录组中找到和 T2D 强相关的模块
- 再看这些模块的 hub 基因,在蛋白质组中是否也差异表达
- 或者看这些 hub 基因对应的代谢通路,在代谢组中是否有变化
→ 实现"以转录组模块为桥梁"连接多组学数据
适用场景: - 基因共表达网络分析 - 找到与表型强关联的基因模块和 hub 基因 - 作为多组学整合的"桥梁"工具 - 样本量要求:至少 15-20 个样本
技术特点:
- R 包 WGCNA
- 计算量较大(大矩阵的相关性计算)
- 输出:模块-表型关联热图、hub 基因网络
4.5 工具速查对比¶
| 工具 | 策略类型 | 监督/无监督 | 核心方法 | 适合几种组学 | 输出重点 | 语言 |
|---|---|---|---|---|---|---|
| MOFA+ | 混合融合 | 无监督 | 贝叶斯因子分析 | 2+ | 潜在因子、权重矩阵 | Python + R |
| DIABLO | 混合融合 | 监督 | 稀疏 PLS | 2+ | Biomarker、分类 | R |
| SNF | 晚期融合 | 无监督 | 网络融合 | 2+ | 样本分型 | R / Python |
| WGCNA | 桥梁式 | 无监督 | 相关网络 | 1(可扩展) | 基因模块、hub 基因 | R |
| iCluster+ | 早期融合 | 无监督 | 联合聚类 | 2+ | 样本聚类 | R |
5. 实操教程:用 MOFA+ 做两组学整合分析¶
以下用 Python 的 mofapy2 包演示一个简化的两组学整合分析流程。
5.1 环境准备¶
# 创建 conda 环境(或使用你现有的 bioinfo 环境)
conda activate bioinfo
# 安装 MOFA+ 的 Python 端
pip install mofapy2
# 安装 R 端(在 R 中执行,用于下游可视化)
# install.packages("BiocManager")
# BiocManager::install("MOFA2")
5.2 Python 端构建模型¶
#!/usr/bin/env python3
"""
MOFA+ 多组学整合分析示例
场景:模拟"转录组 + 代谢组"整合,找到跨组学的共同变异因子
"""
import numpy as np # 数值计算库
from mofapy2.run.entry_point import entry_point # MOFA+ 模型入口
# ============================================================
# 第一步:准备模拟数据(实际项目中替换为你的真实数据)
# ============================================================
np.random.seed(42) # 设置随机种子,确保结果可重复
n_samples = 50 # 50个样本(如25个T2D + 25个健康对照)
n_genes = 500 # 转录组:500个基因的表达量
n_metabolites = 100 # 代谢组:100个代谢物的浓度
# 模拟一个"真实的"潜在因子(比如:T2D疾病相关的变异)
# 前25个样本(T2D)因子值较高,后25个(健康)较低
true_factor = np.concatenate([ # 拼接两组样本的因子值
np.random.normal(2, 0.5, 25), # T2D组:均值2,标准差0.5
np.random.normal(-2, 0.5, 25) # 健康组:均值-2,标准差0.5
])
# 基于潜在因子生成两种组学数据
# 转录组数据 = 因子 × 基因权重 + 噪声
gene_weights = np.random.normal(0, 1, n_genes) # 每个基因的因子载荷
transcriptome = np.outer(true_factor, gene_weights) # 外积生成表达矩阵
transcriptome += np.random.normal(0, 0.5, transcriptome.shape) # 加噪声
# 代谢组数据 = 因子 × 代谢物权重 + 噪声
metabolite_weights = np.random.normal(0, 1, n_metabolites) # 每个代谢物的因子载荷
metabolome = np.outer(true_factor, metabolite_weights) # 外积生成代谢矩阵
metabolome += np.random.normal(0, 0.5, metabolome.shape) # 加噪声
# ============================================================
# 第二步:初始化 MOFA+ 模型
# ============================================================
ent = entry_point() # 创建 MOFA+ 入口对象
# 设置数据:告诉MOFA+你有几种组学、几组样本
# data 的格式:data[组别][组学] = 矩阵(样本 × 特征)
# 这里只有一个组别(group0),两种组学(view0=转录组, view1=代谢组)
ent.set_data_options(
scale_groups=False, # 不按组别缩放(只有一个组别)
scale_views=False # 不按组学缩放(后面手动标准化更好)
)
# 把数据传入模型
# 格式要求:列表的列表 → data_mat[group][view] = numpy数组(样本×特征)
# 注意:此代码基于 mofapy2 >=0.7.0,不同版本 API 可能略有差异
data_mat = [[transcriptome, metabolome]] # [[组1的转录组, 组1的代谢组]]
# samples_names: 嵌套列表 [groups][samples]
# features_names: 嵌套列表 [views][features]
sample_names = [["sample_{}".format(i) for i in range(n_samples)]]
feature_names = [
["gene_{}".format(i) for i in range(n_genes)], # 视图1:转录组特征名
["metabolite_{}".format(i) for i in range(n_metabolites)] # 视图2:代谢组特征名
]
ent.set_data_matrix(
data_mat, # 数据矩阵
views_names=["Transcriptome", "Metabolome"], # 组学名称
groups_names=["All_samples"], # 组别名称
samples_names=sample_names, # 样本名称
features_names=feature_names # 特征名称
)
# ============================================================
# 第三步:配置模型参数
# ============================================================
ent.set_model_options(
factors=10, # 提取10个潜在因子(通常设5-15个)
spikeslab_weights=True, # 使用 spike-and-slab 先验(自动做变量选择)
ard_factors=True, # 自动相关性检测(自动关闭不重要的因子)
ard_weights=True # 自动关闭不重要的权重
)
ent.set_training_options(
convergence_mode="fast", # 快速收敛模式("medium"或"slow"更精确)
seed=42, # 随机种子
gpu_mode=False # 不使用GPU(小数据集CPU就够了)
)
# ============================================================
# 第四步:训练模型
# ============================================================
ent.build() # 构建模型
ent.run() # 开始训练(会看到迭代过程和ELBO值)
# ============================================================
# 第五步:保存结果
# ============================================================
output_file = "mofa_t2d_example.hdf5"
ent.save(output_file) # 保存为HDF5文件,后续在R中可视化
print(f"模型已保存到 {output_file}")
print("接下来可以用 R 的 MOFA2 包加载该文件进行可视化分析")
5.3 R 端可视化(可选)¶
# ============================================================
# 在 R 中加载 MOFA+ 结果并可视化
# ============================================================
library(MOFA2) # 加载MOFA2包
# 加载训练好的模型
model <- load_model("mofa_t2d_example.hdf5") # 读取Python保存的HDF5文件
# 查看每个因子解释了多少方差
plot_variance_explained(model) # 柱状图:每个因子在每种组学中解释的方差比例
# 如果因子1在两种组学中都解释了大量方差 → 它是跨组学共享因子(可能就是T2D信号)
# 查看因子值的分布
plot_factor(model, factor = 1) # 因子1的样本散点图
# 如果T2D和健康样本在因子1上清晰分开 → 该因子捕获了疾病信号
# 查看每种组学中哪些特征对因子1贡献最大
plot_weights(model, view = "Transcriptome", factor = 1, nfeatures = 20)
# 显示因子1权重最大的前20个基因 → 这些就是跨组学关联中最重要的基因
plot_weights(model, view = "Metabolome", factor = 1, nfeatures = 20)
# 显示因子1权重最大的前20个代谢物 → 结合上面的基因,就能解读生物学意义
5.4 结果解读思路¶
训练完成后你会关注三个问题:
1. 哪些因子是跨组学共享的?
→ 看 variance explained 图:因子在两种组学中都有较高方差解释量
→ 这些因子代表转录组和代谢组共同反映的生物学过程
2. 因子和你的分组(T2D vs 健康)有没有关联?
→ 看因子值散点图:因子值能区分两组吗?
→ 做统计检验(t检验/Wilcoxon)确认
3. 哪些具体的基因/代谢物驱动了这些因子?
→ 看 weights 图:权重绝对值最大的变量就是关键特征
→ 拿这些基因做通路富集(GO/KEGG),看落在什么通路上
→ 结合代谢物看这些通路的代谢端是否也有信号
6. 和你 T2D 项目的关联¶
你的毕业论文项目(/home/pweaz/t2d_ai_project/)目前做的是宏基因组分析(Kraken2 物种分类 + 机器学习分类器)。如果在面试中被问到"这个项目怎么往深做",多组学整合是一个很好的方向:
6.1 宏基因组 + 代谢组整合(最可行的扩展)¶
你已有的:
宏基因组 → T2D 和健康人的肠道菌群组成差异(物种丰度表)
可以加入的:
代谢组 → 粪便/血清代谢组数据(短链脂肪酸、胆汁酸、氨基酸等)
整合后能回答:
1. T2D 患者中丰度变化的菌(如 Faecalibacterium 减少),
是否和特定代谢物浓度变化(如丁酸降低)显著相关?
2. 菌群-代谢物关联网络中,哪些是"枢纽节点"?
3. 能否用菌群+代谢物的组合特征,比单用菌群,更准确地预测 T2D?
工具选择:
- MOFA+:无监督找共同因子,适合探索阶段
- DIABLO:有分组信息时,直接做 biomarker 筛选
- Spearman 相关 + 网络可视化:最简单直接的关联分析
6.2 面试话术示例¶
面试官问:你这个 T2D 项目后续可以怎么扩展?
参考回答:
"我目前做的是宏基因组层面的分析,如果要进一步探索机制,
可以整合代谢组数据。具体来说,用 MOFA+ 做无监督因子分析,
看菌群组成变化和代谢物浓度变化之间是否有共同的潜在因子;
或者用 mixOmics 的 DIABLO 方法做有监督整合,筛选能区分
T2D 和健康对照的跨组学 biomarker 组合。
这样做的意义是:单看菌群只能说'这些菌变了',结合代谢组
才能说'这些菌变了导致了什么代谢后果',从相关性往因果性
推进一步。"
6.3 公开数据资源¶
如果想实际练手,这些公开数据集有 T2D 相关的多组学数据:
| 数据集 | 内容 | 来源 |
|---|---|---|
| HMP2 (iHMP) | 纵向多组学(宏基因组+代谢组+蛋白质组) | ibdmdb.org |
| MetaHIT | 欧洲人群宏基因组 + 代谢组 | EMBL-EBI |
| Qin et al. 2012 | T2D 宏基因组经典数据集 | NCBI SRA |
| Pedersen et al. 2016 | T2D 宏基因组 + 代谢组 | NCBI SRA |
7. 常见挑战¶
7.1 数据标准化¶
问题:不同组学的数据尺度完全不同。
转录组:基因表达量可能是 0 ~ 几万(counts)
代谢组:代谢物浓度可能是 0.001 ~ 100(mmol/L)
宏基因组:物种丰度是 0 ~ 1 的比例
如果直接拼在一起,表达量大的组学会"压制"其他组学。
解决:
1. 每种组学内部先各自标准化(z-score、log变换、CLR变换等)
2. 宏基因组的组成数据要用 CLR(中心对数比)变换,
因为丰度比例是"成分数据",普通标准化会引入假相关
3. 再用整合工具(MOFA+ 等)时,让工具自动处理组学间的缩放
7.2 样本量不匹配¶
问题:并非每个样本都做了所有组学检测。
100 个样本做了转录组,但只有 60 个同时做了代谢组。
怎么办?丢弃 40 个只有转录组的样本?还是硬填缺失值?
解决:
1. MOFA+ 原生支持缺失数据:有些样本某种组学完全缺失也能训练
2. mixOmics 要求完整匹配:只取做了所有组学的 60 个样本
3. 折中方案:先用完整样本训练模型,再用缺失样本做预测
7.3 批次效应¶
问题:不同批次/实验室/时间点测的数据会有系统性偏差。
第一批测的转录组整体偏高,第二批偏低——这种差异不是生物学差异。
多组学整合时,不同组学可能在不同批次测的,批次效应更难控制。
解决:
1. 实验设计阶段:让不同分组均匀分布在每个批次
2. 计算阶段:ComBat / limma::removeBatchEffect 去批次效应
3. MOFA+:可以用 group 参数把批次信息纳入模型
4. 最重要的:在分析前,画 PCA 图看样本是不是按批次聚类而不是按生物学分组聚类
7.4 其他注意事项¶
| 挑战 | 白话解释 | 建议 |
|---|---|---|
| 过拟合 | 变量太多样本太少,模型"死记硬背" | 用交叉验证评估,用稀疏方法(sPLS)做变量选择 |
| 因果 vs 相关 | 多组学整合发现的是关联,不一定是因果 | 用时间序列数据或功能实验验证 |
| 计算资源 | 大规模多组学数据需要较多内存和计算时间 | 先降维/筛选,再做整合;MOFA+ 支持 GPU 加速 |
| 结果解读 | 得到一堆因子和权重,怎么和生物学对应 | 富集分析(GO/KEGG)、文献验证、临床关联 |
8. 常见问题¶
Q1:我做宏基因组的,没有蛋白质组和代谢组数据,多组学分析和我有关系吗?¶
有。你可以:(1) 用公开数据集(如 HMP2)练手学方法;(2) 宏基因组内部也可以做"多层"分析,比如物种组成 + 功能注释(KEGG 通路丰度)两层数据的整合,思路和多组学整合是一样的;(3) 面试时展示你理解多组学整合的策略和工具,本身就是加分项。
Q2:MOFA+ 和 mixOmics/DIABLO 我该选哪个?¶
简单判断:如果你有明确的分组(如 T2D vs 健康)且想筛选 biomarker,用 DIABLO(监督式);如果你更想探索性地看"数据里有什么共同模式",用 MOFA+(无监督)。实际项目中两个都做、互相验证是最好的。
Q3:样本量多少才够做多组学整合?¶
没有绝对标准,经验法则: - MOFA+:每组至少 15-20 个样本能跑,但 50+ 更可靠 - DIABLO:每组至少 20 个样本,变量选择后的特征数不应超过样本数 - SNF:对样本量要求相对宽松,20+ 即可 - 总之:样本数 > 每种组学选出的特征数,是基本底线
Q4:多组学整合的结果怎么发表?用什么图?¶
标准配图包括:(1) 方差解释图(每个因子在每种组学中的贡献);(2) 因子散点图(样本按因子得分着色,看分组效果);(3) 权重/载荷图(关键特征排名);(4) circos 图(不同组学特征之间的关联弧线);(5) 热图(多组学特征聚类)。mixOmics 自带 plotDiablo、circosPlot 等函数直接出图。
Q5:多组学整合和机器学习是什么关系?¶
多组学整合可以和机器学习结合:(1) 用多组学整合方法(如 MOFA+)先降维/提取因子,再把因子作为特征输入机器学习模型(如随机森林)做分类预测;(2) 你的 T2D 项目已经用了随机森林,可以直接把宏基因组特征 + 代谢组特征一起作为输入特征,这就是"早期融合 + 机器学习"的方案。
Q6:深度学习在多组学整合中有应用吗?¶
有,但目前相对前沿,样本量要求大:(1) 多模态自编码器(Multi-modal Autoencoder):用神经网络学习多组学数据的共享低维表示;(2) 图神经网络(GNN):在 SNF 构建的网络上做节点分类;(3) 注意力机制:自动学习不同组学的权重。但对于你当前的样本量和面试需求,掌握 MOFA+ 和 mixOmics 已经足够。
9. 速查表¶
┌─────────────────────────────────────────────────────────┐
│ 多组学整合分析速查表 │
├─────────────────────────────────────────────────────────┤
│ │
│ 三大融合策略: │
│ 早期融合 → 拼表格 → 适合维度相近的组学 │
│ 晚期融合 → 各自分析再合并结论 → 简单但丢失交互信息 │
│ 混合融合 → 提取中间特征再整合 → 最常用(MOFA+/DIABLO) │
│ │
│ 工具选择速查: │
│ 探索性分析(没有明确分组)→ MOFA+ │
│ Biomarker筛选(有分组标签)→ DIABLO(mixOmics) │
│ 样本分型/聚类 → SNF │
│ 基因共表达网络 → WGCNA │
│ 联合聚类 → iCluster+ │
│ │
│ 数据预处理要点: │
│ 转录组 → log2(CPM+1) 或 VST 标准化 │
│ 代谢组 → log变换 + Pareto缩放 │
│ 宏基因组(组成数据)→ CLR 变换(不要用简单z-score) │
│ 蛋白质组 → log2变换 + 中位数归一化 │
│ │
│ 质控检查清单: │
│ □ 每种组学内部先单独 QC(去离群值、低质量样本) │
│ □ 检查批次效应(PCA 着色看批次 vs 生物分组) │
│ □ 确认样本 ID 匹配(多组学的样本名必须一致!) │
│ □ 缺失数据比例(>30% 缺失的组学考虑剔除或单独处理) │
│ □ 样本量检查(每组 > 选出的特征数) │
│ │
│ R 包安装: │
│ BiocManager::install("MOFA2") │
│ BiocManager::install("mixOmics") │
│ install.packages("SNFtool") │
│ install.packages("WGCNA") │
│ │
│ Python 包安装: │
│ pip install mofapy2 │
│ pip install scikit-learn # PCA、聚类等 │
│ pip install snfpy # SNF 的 Python 实现 │
│ │
│ 面试高频问法: │
│ "你了解多组学整合分析吗?" → 三大策略 + 工具选择 │
│ "你的项目怎么扩展?" → 宏基因组+代谢组整合方案 │
│ "多组学整合的挑战?" → 标准化/样本量/批次效应 │
│ "监督 vs 无监督整合?" → DIABLO vs MOFA+ │
│ │
└─────────────────────────────────────────────────────────┘
10. 延伸资源¶
入门教程¶
- MOFA+ 官方教程:https://biofam.github.io/MOFA2/
- mixOmics 官方教程:https://mixomics.org/(含 DIABLO 详细 vignette)
- SNF 原始论文:Wang et al., Nature Methods, 2014
- 多组学整合综述:Subramanian et al., Bioinformatics, 2020
经典论文¶
- Argelaguet et al., "MOFA+: a statistical framework for comprehensive integration of multi-modal single-cell data", Genome Biology, 2020
- Singh et al., "DIABLO: an integrative approach for identifying key molecular drivers from multi-omics assays", Bioinformatics, 2019
- Qin et al., "A metagenome-wide association study of gut microbiota in type 2 diabetes", Nature, 2012(你 T2D 项目的经典参考文献)
实战数据¶
- HMP2/iHMP:人体微生物组多组学纵向数据(最推荐练手)
- TCGA 多组学:肿瘤多组学数据(基因组+转录组+甲基化+临床)
- NCI-60:60个肿瘤细胞系的多组学数据(mixOmics 自带示例数据)
进阶方向¶
- 单细胞多组学(scMulti-omics):CITE-seq、Multiome(scRNA + scATAC)
- 空间多组学:空间转录组 + 空间蛋白质组
- 因果推断:孟德尔随机化(MR)结合多组学数据推断因果关系
- 时间序列多组学:纵向多时间点采样,追踪疾病发展过程中的多组学动态变化