MOFA2 快速上手:5 步完成多组学数据整合与因子分析
【免费下载链接】MOFA2Multi-Omics Factor Analysis项目地址: https://gitcode.com/gh_mirrors/mo/MOFA2
如果你在同一批样本上测了多种组学(比如 RNA-seq、ATAC-seq、甲基化),却始终搞不清每一层数据各自贡献了什么变异,MOFA2 要解决的就是这个问题。它用概率因子分析模型对多组学数据做无监督整合:把各层观测的变异分解成少量共享的"潜在因子",再告诉你每个因子背后是哪些分子特征在驱动。MOFA2 是一个 R 包(当前版本 1.23.0),训练时通过 reticulate(R 与 Python 的桥梁)调用 Python 端的 mofapy2 完成计算,分析画图则留在 R 里完成。
它适合两类人:手上有多组学数据的生物信息研究者,以及想用因子分析做降维、聚类和特征发现的普通用户。
它到底能帮你干什么
场景一:把多组学压成一张"总地图"。每个因子对每个样本都有一个取值,因子矩阵本质上就是一份整合了所有组学层的降维结果。你可以直接拿它给样本聚类、做散点图,或者用correlate_factors_with_covariates检验哪些因子和年龄、疾病状态等协变量相关。
场景二:搞清楚每个因子由什么特征撑起。训练完以后,plot_top_weights能展示每个因子的头部特征(基因、峰等),再配合run_enrichment做富集分析,就能把"因子 3 显著富集于细胞周期基因"这类生物学结论落下来。
如果你的样本还有时间或空间维度(比如发育时序、组织位置),包内置的 MEFISTO 框架可以让因子沿时间/空间平滑变化,见 vignettes/MEFISTO_temporal.Rmd。
5 分钟跑起来:最小上手路径
先备环境:R ≥ 4.0,另加一个装了mofapy2、numpy、pandas、h5py、scipy、sklearn的 Python 3 环境。然后装包:
remotes::install_git("https://gitcode.com/gh_mirrors/mo/MOFA2")不想准备真实数据?包自带模拟数据生成器,4 行代码就能把完整流程跑通:
library(MOFA2) data <- make_example_data(n_views = 2, n_samples = 200, n_features = 1000, n_factors = 10)[[1]] obj <- create_mofa(data) # 建对象 obj <- prepare_mofa(obj) # 应用默认数据/模型/训练选项 obj <- run_mofa(obj) # 连上 Python 端开始训练训练日志会逐轮打印 ELBO(模型似然下界),收敛后模型存在model.hdf5里。接下来用get_factors拿因子、get_variance_explained看每个因子解释了多少方差、plot_data_overview检查数据长什么样。
数据怎么喂进去
- 长表格(推荐多组学复杂数据):5 列
sample、feature、view、group(可省)、value,缺失值不用自己补 - 矩阵列表:每个 view 一个矩阵,样本为行、特征为列
- 也支持从 Seurat、MultiAssayExperiment 对象直接转换
只想用 Python?
R 包只是入口之一,底层 mofapy2 本身独立可用:
from mofapy2.run.entry_point import entry_point ent = entry_point() ent.set_data_df(data) # 长表格:sample/feature/view/group/value ent.set_model_options(factors=5) ent.build(); ent.run(); ent.save("model.hdf5")关键参数速查:调哪几个、怎么调
所有选项都能用get_default_data_options/get_default_model_options/get_default_training_options取到默认值,再按需覆盖。真正需要关注的就这几个:
| 参数 | 归属 | 默认值 | 什么时候改 |
|---|---|---|---|
num_factors | 模型选项 | 10 | 先设 5–15,跑完看方差解释率再定 |
likelihoods | 模型选项 | gaussian | 按 view 设;计数数据用poisson,二值用bernoulli |
scale_views | 数据选项 | FALSE | 各层数值范围差异大时打开 |
convergence_mode | 训练选项 | fast | 探索用 fast,出最终模型换medium或slow |
maxiter | 训练选项 | 1000 | 数据量大、没收敛时上调 |
gpu_mode | 训练选项 | FALSE | 装了 cupy 且有 GPU 时打开 |
seed | 训练选项 | 随机 | 设固定值保证结果可复现 |
训练前有两步预处理比调参更重要:
- 归一化成连续值:RNA-seq 这类计数数据先做 size factor 归一化 + log 变换,模型对连续值表现最好
- 筛选高变特征(HVGs):每层各选一批高变特征,训练更快、因子推断更稳;层之间维度差很多时,对大的层选得更狠一些
另外注意:因子分析要求样本量至少 15 个左右,且各层数据要来自同一批样本(允许个别样本缺某一层)。
目录速览:代码都在哪
| 目录 | 一句话说明 |
|---|---|
| R/ | 全部源码:create_mofa、prepare_mofa、run_mofa、绘图与下游分析函数都在这 |
| inst/scripts/ | R 和 Python 的模板脚本,想抄一份直接改的入口 |
| vignettes/ | 官方教程:R 端训练入门、MEFISTO 时序、下游分析 |
| tests/ | 单元测试,改动源码后可以跑一遍回归 |
完整可复制的流程参考 inst/scripts/template_script.R,教程看 vignettes/getting_started_R.Rmd。
下一步与常见坑 ⚠️
run_mofa报错,九成是 Python 环境:确认reticulate连到的是那个装齐了 mofapy2 六件套的环境,多环境时用reticulate::use_python("路径")显式指定- 跳过预处理直接跑:不归一化、不选高变特征,不仅训练慢,因子也基本没法解释
- 多组(groups)功能别碰太早:它是进阶特性,官方明确建议新手先不用
- 模型怎么存:
run_mofa产出model.hdf5;在 R 端分析的话把save_data = TRUE存进 hdf5,后续取数方便
想继续深入:先读下游分析教程,重点玩plot_factors、correlate_factors_with_covariates和run_enrichment这三个函数——多组学故事基本就是靠它们讲完的。
【免费下载链接】MOFA2Multi-Omics Factor Analysis项目地址: https://gitcode.com/gh_mirrors/mo/MOFA2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考