第2章:环境搭建——装对工具,少走半年弯路
做物种丰度检测,最怕什么?不是算法选错,也不是参数调崩。我见过太多人,论文都读透了,结果卡在环境搭建上——一装就是两三天,最后还跑不起来。
说白了,工具装不对,后面全是白费劲。今天我就把这几年踩过的坑、试出来的靠谱流程,一次性讲清楚。
2.1 准备工作:先看看你的机器够不够“硬”
别急着敲命令。先搞清楚你的电脑什么配置。我当初刚入行时,用一台8GB内存的笔记本跑Kraken2,等了四个小时还没出结果——后来才发现,人家官方建议至少32GB。
| 工具 | 最低内存 | 推荐内存 | 存储空间 | 备注 |
|---|---|---|---|---|
| QIIME 2 | 8 GB | 16 GB+ | 50 GB+ | 依赖较多,建议用conda |
| MetaPhlAn 4 | 8 GB | 16 GB+ | 30 GB+ | 需要下载marker数据库 |
| Kraken 2 | 16 GB | 32 GB+ | 100 GB+ | 数据库构建非常吃内存 |
个人建议:如果你做16S扩增子,16GB勉强够用。但做宏基因组,尤其要建Kraken2数据库,至少准备64GB。不想折腾服务器?云主机按需付费也是个办法,跑完就释放,成本可控。
2.2 Conda:环境隔离的“防护罩”
我见过最惨的案例,是有人直接在base环境下一股脑装了几十个包,最后升级个numpy,整个QIIME 2崩溃了。你想想看,不同工具依赖的Python版本、库版本可能完全冲突——这时候就需要conda环境隔离。
装miniconda还是anaconda?我习惯用miniconda,轻量,够用。
# 下载并安装Miniconda(Linux为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 配置镜像源(国内用户强烈建议)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
小技巧:我习惯给每个大工具建独立环境。比如qiime2-2024.02、metaphlan4、kraken2各一个。互不干扰,哪天出问题了,删掉重来也不心疼。
2.3 QIIME 2:扩增子分析的“瑞士军刀”
QIIME 2现在迭代很快,每个版本都有不同的依赖。我的经验是:尽量用最新稳定版,但别追“抢先版”。
为什么我会这么说? 有一回我追了个rc版,结果有个插件死活装不上,查了两天issue才发现是Python版本锁死了。从那以后,我只用正式release。
# 创建QIIME 2环境(以2024.2版本为例)
conda create -n qiime2-2024.2 --file https://data.qiime2.org/distro/core/qiime2-2024.2-py38-linux-conda.yml
# 激活环境
conda activate qiime2-2024.2
# 验证安装
qiime --help
# 安装常用插件(按需选择)
conda install -c conda-forge -c bioconda q2-feature-classifier q2-phylogeny
注意:QIIME 2的插件生态很庞大。别一股脑全装。我建议先用官方“core distribution”,需要什么功能再加。否则环境容易变成“一锅粥”——我曾经一个环境装了50多个插件,后来想升级一个,整个都炸了。
2.4 MetaPhlAn 4:宏基因组物种注释的“快枪手”
MetaPhlAn靠的是它那个精选的marker基因数据库。装起来不算复杂,但数据库下载是个体力活。我第一次装的时候,没留意网络状况,下载到99%断了……嗯,从那以后我都会先检查网速和磁盘空间。
个人习惯:先单独下载数据库压缩包,解压到指定目录,再配置环境变量。不依赖安装脚本自动下载——这样即使一次没成功,下次也能续传。
# 创建并激活环境
conda create -n metaphlan4 python=3.9
conda activate metaphlan4
# 安装MetaPhlAn(直接通过pip或conda均可)
conda install -c bioconda metaphlan
# 手动下载数据库(推荐)
# 先去官网找到最新版数据库链接,再用wget下载
wget https://zenodo.org/record/.../metaphlan_database_v31.tar.gz
tar -xzf metaphlan_database_v31.tar.gz -C /path/to/db/
# 设置数据库路径
export METAPHLAN_DB=/path/to/db/metaphlan_database
# 验证安装
metaphlan --version
metaphlan --help | head -20
避坑指南:我曾经因为数据库路径配置错了,跑出来的结果全是“unclassified”。查了两天才发现是环境变量没生效。后来我把这个配置写进了~/.bashrc,省心多了。
关键配置:MetaPhlAn的--stat_avg参数决定丰度估计方式。默认用“tpm”,但我做临床样本时习惯配合“wgeom_mean”做加权几何平均,对低丰度物种更敏感。这个在参数优化章节会细讲。
2.5 Kraken 2:宏基因组物种分类的“重武器”
Kraken 2跑起来其实不算慢,但构建它的数据库……真是个“硬骨头”。默认的PlusPF数据库将近100GB,解压后更大。你别想着一次性搞定,分步走会轻松很多。
# 创建环境
conda create -n kraken2
conda activate kraken2
# 安装
conda install -c bioconda kraken2
# 构建数据库(以PlusPF为例,耗时久,内存要求高)
# 标准库构建方法(只包含细菌、古菌、病毒)
kraken2-build --standard --threads 8 --db /path/to/kraken2_db
# 如果你只想快速测试,可以下载预构建的微型库
wget https://genome-idx.s3.amazonaws.com/kraken/k2_minusb_20220926.tar.gz
tar -xzf k2_minusb_20220926.tar.gz -C /path/to/kraken2_db
# 验证
kraken2 --version
kraken2-build --version
内存警告:构建标准数据库时,一定要提前确认内存够。我有个同事用16GB内存硬跑,结果系统直接OOM(内存溢出)了。建议至少64GB。如果本地资源不够,可以考虑用预构建数据库,或者用aws、阿里云的云服务器临时开一台高配机器。
2.6 避坑总结:我这些年遇到的“环境杀手”
- Python版本冲突:QIIME 2特定版本只支持3.8,MetaPhlAn可能需要3.9,别混在同一个环境里。
- 数据库路径混乱:MetaPhlAn和Kraken2都依赖外部数据库。我建议统一用软链接或环境变量管理,不要散落在各个目录。
- 磁盘空间不足:Kraken2数据库快100GB了,QIIME 2的参考序列也不小。装之前先看看你的home目录还有多少空间。
- 网络中断:下载大文件时,我习惯用screen或tmux挂后台,再配合断点续传工具(如aria2c)。
- 环境变量不持久化:我把常用的数据库路径都写进了~/.bashrc或~/.condarc,避免每次都要手动export。
2.7 环境搭建验证:一张“体检单”
装完了别急着跑数据。我先跑个简单命令,确认每个工具都能正常工作:
# 快速验证三件套
conda activate qiime2-2024.2
qiime info --version
conda activate metaphlan4
metaphlan --version
conda activate kraken2
kraken2 --version
验证清单(核对完再往前走):
- 每个工具都能正常打印版本号或帮助信息
- 数据库路径配置正确,不存在“找不到数据库”的报错
- 用官方示例数据跑一次测试流程(比如QIIME 2的“moving pictures”教程)
- 确认内存和磁盘余量充足(至少还有30%的富余)
环境搭建这块,一开始确实有点繁琐。但你别急,慢慢来。我当初也是一遍遍装、一遍遍调试,才找到这套最稳的流程。以后你跑熟了,半小时就能搞定全部配置。