2. 环境搭建:从零准备MOFA调优实验台
好,咱们开始动手。说实话,环境搭建这个环节,看着简单,但坑不少。我见过太多同学卡在「装包失败」这一步,然后跑来问「老师我哪步错了?」。其实吧,很多时候就是Python版本没对齐,或者虚拟环境没切对。
这一章咱们就把这事彻底搞定。目标就一个——把你的电脑变成一台能跑MOFA的工作站。
2.1 Python虚拟环境:为什么不能偷懒?
你想想看,做数据分析项目,哪个不用装十几个包?numpy、pandas、scikit-learn、mofapy……如果全装到系统Python里,那画面太美我不敢看。项目A要numpy 1.21,项目B要numpy 1.19,直接撞车。
虚拟环境就是干这个用的。它给每个项目单独开一间「小房间」,包互不干扰。我在项目里遇到过好几次依赖冲突,最后都是用虚拟环境解决的。所以我建议你从一开始就养成这个习惯。
| 工具 | 推荐场景 | 个人倾向 |
|---|---|---|
| venv | Python 3.3+ 自带,轻量 | 我首选这个,省事 |
| conda | 需要非Python依赖(如C库) | MOFA不需要,conda有点重 |
| pipenv | 兼顾依赖锁定与项目管理 | 适合团队,个人用稍显繁琐 |
venv。理由很简单——Python装完就能用,不用额外装工具。而且pip现在也能解析依赖冲突了,配合 pip-tools 基本够用。
好,咱们直接上手。假设你已经在终端里打开项目目录:
python3 -m venv mofa_env
source mofa_env/bin/activate
看到命令行前面多了 (mofa_env),说明虚拟环境已激活。这时候你安装的任何包都不会污染系统环境。
2.2 安装mofapy:两种路径
mofapy是MOFA的Python接口。你可以在PyPI上直接装,也可以从GitHub装最新版。我建议先装稳定版。
pip install mofapy
等一两分钟,如果看到类似这样的输出,就算装好了:
Successfully installed mofapy-1.6.2 numpy-1.24.3 scipy-1.10.1 h5py-3.8.0
如果你想用最新开发版(比如修复了某个bug),可以走GitHub安装:
pip install git+https://github.com/bioFAM/MOFA.git
h5py 编译错误的情况。这时候可以试试先单独装h5py:
pip install h5py
pip install mofapy
主要原因是h5py在某些系统上需要HDF5库,提前装好可以跳过自动编译。
2.3 三大依赖库:numpy、pandas、scikit-learn
这三兄弟是数据分析的标配。mofapy本身会依赖numpy和scipy,但pandas和scikit-learn需要你手动装。它们的版本要搭配好,不然跑模型时会出莫名其妙的问题。
| 库 | 建议版本 | 为什么选这个版本 |
|---|---|---|
| numpy | ≥1.21.0 | 1.21之后改进了矩阵运算性能 |
| pandas | ≥1.3.0 | 1.3开始支持更好的缺失值处理 |
| scikit-learn | ≥1.0.0 | 1.0版本API稳定,向下兼容好 |
实操时,你可以一次性装完:
pip install numpy pandas scikit-learn
如果你用的是国内镜像,比如清华源,可以把下载速度拉满:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pandas scikit-learn
2.4 验证安装:写个「健康检查」脚本
装完了别急着往下走。我习惯写个验证脚本,确认每个包都能正常导入,版本也对得上。
import numpy as np
import pandas as pd
import sklearn
import mofapy
print("numpy:", np.__version__)
print("pandas:", pd.__version__)
print("scikit-learn:", sklearn.__version__)
print("mofapy:", mofapy.__version__)
print("✅ 所有依赖就绪!")
运行结果应该长这样:
numpy: 1.24.3
pandas: 1.5.3
scikit-learn: 1.2.2
mofapy: 1.6.2
✅ 所有依赖就绪!
如果哪个包报 ModuleNotFoundError,就回去用pip重新装。如果版本比建议的低,也可以升下级。
check_env.py,以后换机器或给别人部署环境时,跑一遍就能快速确认。
2.5 MOFA的数据格式:提前熟悉
在开始调优之前,你得知道MOFA要什么样的数据。不然你准备好了一堆Excel表,结果发现格式对不上,那就尴尬了。
MOFA接收的是两个层:输入数据和样本分组。输入数据是一个矩阵,行是特征(比如基因、蛋白质),列是样本。样本分组告诉模型哪些样本属于同一个组。
| 文件/数据 | 格式要求 | 示例 |
|---|---|---|
| 输入数据矩阵 | CSV或TSV,行为特征,列为样本 | features x samples |
| 样本分组文件 | 两列:样本ID、组标签 | sample_1, group_A |
| 缺失值处理 | 用 NaN 填充 | NA 或空白会被自动处理 |
说白了,你只需要准备好两个CSV。一个装数据,一个装分组标签。后面咱们调模型时,会手把手教你写解析代码。
2.6 本章知识结构:一张图看清
说了这么多,咱们用一张流程图来收尾。我把它画成了从「创建环境」到「数据就绪」的完整链路:
看到这张图你就知道了。咱们的顺序是:环境 → 装包 → 验证 → 数据。一步到位,不走回头路。
2.7 最后再啰嗦两句
可能有人觉得「搭建环境」不算核心内容,想直接跳到调模型。我刚开始做项目时也是这么想的,结果花在「装不上包、版本不对、格式报错」上的时间比调模型还多。
所以这一章你认真走一遍,后面30个章节都会省心。嗯,咱们下节就要开始实战了,到时候你直接用这个环境跑代码就行,不用再手忙脚乱。