853. 多组学整合策略总结
一句话概述:多组学整合 = 把基因组、转录组、蛋白组、代谢组等不同层面的数据联合分析,发现单一组学看不到的生物学规律——像从多个摄像头的画面拼出完整的监控视频。
核心知识点速查表
| 整合策略 | 方法 | 代表工具 | 适用场景 |
|---|
| 早期整合 | 特征拼接后联合分析 | 直接concatenate | 样本量大、特征少 |
| 中期整合 | 多组学联合降维 | MOFA2, mixOmics | 探索共变异模式 |
| 晚期整合 | 各组学独立分析后合并结果 | meta分析 | 异质性大、平台不同 |
| 基于网络 | 构建多层分子网络 | WGCNA+SNF | 发现调控关系 |
| 深度学习 | 端到端多模态模型 | MOLI, DeepOmix | 预测任务 |
一、MOFA2:无监督多组学因子分析
# MOFA2 —— 多组学因子分析(2025-2026最常用的无监督整合工具)
# 原理:从多组学数据中提取共享和特有的变异因子
# 安装MOFA2
if (!requireNamespace("MOFA2", quietly = TRUE)) # 检查是否已安装
BiocManager::install("MOFA2") # 从Bioconductor安装
library(MOFA2) # 加载MOFA2
# 准备多组学数据
# 假设有3种组学:RNA-seq, 蛋白组, 代谢组
# 每种组学都是 特征×样本 的矩阵
data <- list(
"RNA" = rna_matrix, # 基因表达矩阵 (基因×样本)
"Protein" = protein_matrix, # 蛋白丰度矩阵 (蛋白×样本)
"Metabolome" = metab_matrix # 代谢物矩阵 (代谢物×样本)
)
# 创建MOFA对象
mofa_obj <- create_mofa(data) # 创建MOFA对象
# 设置模型参数
model_opts <- get_default_model_options(mofa_obj) # 获取默认参数
model_opts$num_factors <- 15 # 设置提取15个因子
train_opts <- get_default_training_options(mofa_obj) # 训练参数
train_opts$seed <- 42 # 设置随机种子(可重复性)
# 训练模型
mofa_obj <- prepare_mofa( # 准备模型
mofa_obj,
model_options = model_opts,
training_options = train_opts
)
mofa_obj <- run_mofa(mofa_obj, outfile = "mofa_model.hdf5") # 运行
# 查看因子解释的方差
plot_variance_explained(mofa_obj) # 每个因子在每种组学中解释多少方差
# → 共享因子:在多种组学中都解释方差
# → 特有因子:只在某一种组学中活跃
# 因子与样本分组的关联
plot_factor(mofa_obj, # 画因子值
factor = 1, # 第1个因子
color_by = "condition") # 按实验条件着色
# 查看因子的权重(哪些特征贡献最大)
plot_weights(mofa_obj, # 画权重
view = "RNA", # 查看RNA组学
factor = 1, # 第1个因子
nfeatures = 20) # 显示前20个特征
二、mixOmics DIABLO:有监督多组学整合
# DIABLO —— 有监督多组学整合(知道分组信息时用)
# 原理:找到在多组学中都能区分实验组的特征组合
library(mixOmics) # 加载mixOmics
# 准备数据(每种组学一个矩阵,行=样本,列=特征)
X <- list(
RNA = rna_data, # 转录组数据
Protein = prot_data, # 蛋白组数据
Metabolome = metab_data # 代谢组数据
)
Y <- factor(sample_groups) # 样本分组(如:健康/疾病)
# 设计矩阵(控制组学间的关联强度)
design <- matrix(0.1, # 默认关联强度0.1
nrow = length(X),
ncol = length(X),
dimnames = list(names(X), names(X)))
diag(design) <- 0 # 对角线设为0
# 调优:选择最佳特征数量
# 先运行初步模型
sgccda_result <- block.splsda( # sparse PLS-DA
X = X, # 多组学数据
Y = Y, # 分组标签
ncomp = 5, # 5个成分
design = design) # 设计矩阵
# 交叉验证选择最优参数
perf_result <- perf(sgccda_result, # 性能评估
validation = "Mfold", # M折交叉验证
folds = 5, # 5折
nrepeat = 10) # 重复10次
# 可视化:样本图
plotIndiv(sgccda_result, # 画样本分布
ind.names = FALSE, # 不显示样本名
legend = TRUE) # 显示图例
# 可视化:变量关联热图
cimDiablo(sgccda_result) # 跨组学特征关联热图
# 可视化:网络图(跨组学特征关联)
network(sgccda_result, # 画网络
cutoff = 0.7) # 相关性阈值0.7
三、2026年推荐整合策略
# 2026年多组学整合最佳实践
# 策略选择决策树:
# Q1: 有没有样本分组信息?
# → 有分组 → 有监督方法(DIABLO, sPLS-DA)
# → 无分组 → 无监督方法(MOFA2, JIVE)
#
# Q2: 数据规模多大?
# → 小样本(<50) → 正则化方法(mixOmics)
# → 大样本(>200) → 深度学习(MOLI, DeepOmix)
#
# Q3: 目标是什么?
# → 探索性分析 → MOFA2(因子分析)
# → 分类预测 → DIABLO(判别分析)
# → 网络推断 → WGCNA + SNF
# 实际项目中的组合策略(2026推荐)
# 1. 先用MOFA2做无监督探索(发现数据结构)
# 2. 再用DIABLO做有监督分析(找区分特征)
# 3. 用WGCNA构建共表达网络(理解调控关系)
# SNF(相似性网络融合)示例
# 适合整合异质性大的多组学数据
from snf import snf # 导入SNF
import numpy as np # 数值计算
# 计算每种组学的样本相似性矩阵
affinities = snf.make_affinity( # 构建亲和矩阵
[rna_data, protein_data, metab_data], # 3种组学
metric='euclidean', # 欧氏距离
K=20, # 近邻数
mu=0.5) # 缩放因子
# 融合多个网络
fused = snf.snf(affinities, # 网络融合
K=20) # 近邻数
# 在融合网络上做聚类
from sklearn.cluster import SpectralClustering # 谱聚类
clusters = SpectralClustering( # 谱聚类
n_clusters=3, # 3个簇
affinity='precomputed' # 预计算的亲和矩阵
).fit_predict(fused)
四、通路层面整合
# GSEA + 多组学:在通路层面整合不同组学结果
# 思路:每种组学各自做通路分析,再看哪些通路在多组学中一致富集
library(clusterProfiler) # 通路分析工具
library(org.Hs.eg.db) # 人类基因注释
# 对RNA-seq结果做GSEA
rna_gsea <- gseGO( # GO通路富集
geneList = rna_ranked_genes, # 排序的基因列表
OrgDb = org.Hs.eg.db, # 注释数据库
ont = "BP", # 生物过程
pvalueCutoff = 0.05) # P值阈值
# 对蛋白组结果做GSEA
prot_gsea <- gseGO(
geneList = prot_ranked_genes, # 蛋白组排序列表
OrgDb = org.Hs.eg.db,
ont = "BP",
pvalueCutoff = 0.05)
# 比较两种组学的通路结果
# 找到在RNA和蛋白组中都显著的通路
common_pathways <- intersect( # 取交集
rna_gsea@result$ID, # RNA富集通路
prot_gsea@result$ID) # 蛋白组富集通路
# 一致富集的通路更可信(多组学交叉验证)
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
Samples do not match | 多组学样本ID不一致 | 统一样本命名,检查交集 |
Too few samples | 样本量太小 | 减少因子数/成分数 |
Convergence not reached | MOFA训练未收敛 | 增加迭代次数或减少因子数 |
Singular matrix | 特征间共线性太强 | 先做方差过滤去除低方差特征 |
Memory error | 数据矩阵太大 | 先做特征预筛选,减少特征维度 |
速查表
# 多组学整合工具选择
无监督探索: MOFA2 (因子分析)
有监督分类: DIABLO/mixOmics (sPLS-DA)
网络融合: SNF (相似性网络融合)
共表达网络: WGCNA (加权共表达网络)
通路整合: ActivePathways, GSEA比较
深度学习: MOLI, DeepOmix, MOGONET
可视化: OmicNavigator, Cytoscape
# 整合策略决策
有分组 + 小样本 → mixOmics DIABLO
无分组 + 探索性 → MOFA2
异质数据 + 网络 → SNF
大样本 + 预测 → 深度学习方法
# MOFA2 关键概念
Factor: 潜在因子(类似PCA的主成分)
View: 不同组学数据(RNA/蛋白/代谢)
Group: 样本分组(可选)
Weight: 每个特征对因子的贡献
# 2026年推荐组合
MOFA2(探索) + DIABLO(分类) + 通路分析(解释)