第二章 安装与配置:把Kraken2请进你的系统

好了,咱们正式开工。这一章不讲虚的,就讲怎么把Kraken2装好、跑通。我见过太多人卡在安装这一步,有的折腾一整天最后发现是环境变量没配对。嗯,咱们今天就把这事一次性搞定。

2.1 安装前的准备

先看看你的机器够不够格。Kraken2对硬件的要求其实不算苛刻,但有几个硬指标你得心里有数。

组件 最低要求 推荐配置
CPU 4核 16核以上
内存 8 GB 64 GB(大数据库时需128 GB)
磁盘 20 GB 100 GB SSD
操作系统 Linux / macOS Ubuntu 20.04+ / CentOS 7+

我个人习惯先检查系统里有没有预装的依赖。用下面这条命令扫一眼,缺什么补什么。

gcc --version
make --version
perl --version

如果你用的是CentOS或者RHEL,记得先把EPEL源打开。不然你可能会发现某些包怎么都装不上,那个坑我踩过。

2.2 方式一:用Conda安装(推荐)

说实话,我最推荐新手用conda。省心,干净,出了问题删掉重来也很方便。

先装Miniconda,官网下载就行,别用Anaconda那个巨无霸——你想想看,一个分类工具而已,犯不着拖个几百兆的环境下来。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

装完之后,创建一个独立环境专门跑Kraken2。我最开始用conda时也踩过不少坑,后来养成了一个习惯:每个工具单独一个环境,互不干扰。

conda create -n kraken2 -c bioconda kraken2
conda activate kraken2

小技巧:如果你网络比较慢,可以加个国内镜像。在~/.condarc里配上清华或中科大的源,下载速度能快好几倍。

装好后验证一下:

kraken2 --version

如果能看到版本号,恭喜你,装上了。

2.3 方式二:从源码编译安装

conda虽然方便,但有些场景你得自己编译。比如你需要在特定的CPU上做指令集优化,或者你想调试Kraken2内部的代码。这时候就得走源码这条路。

先拉代码:

git clone https://github.com/DerrickWood/kraken2.git
cd kraken2

然后编译:

./install_kraken2.sh /usr/local/bin

这个过程其实很快,几秒钟就完事。编译完会在你指定的目录下生成几个可执行文件。我一般习惯把它们放到/usr/local/bin下面,省得再配PATH。

注意:如果你的GCC版本低于4.8,编译可能会报错。我以前在CentOS 6的老机器上遇到过,升级GCC到7.3后就正常了。

编译完成后,目录结构大概是这样的:

kraken2/
├── kraken2
├── kraken2-build
├── kraken2-inspect
├── scripts/
│   ├── classify_parallel.sh
│   └── ...

三个核心工具:kraken2用来分类,kraken2-build构建数据库,kraken2-inspect检查数据库内容。

2.4 环境变量设置

这一步千万别跳。我见过有人装好了,一运行就报command not found,急得满头大汗来找我。

说白了,系统得知道你的Kraken2在哪儿。把你安装的路径加到PATH里就行。

export PATH="/usr/local/bin:$PATH"

为了让每次登录都生效,把它写到~/.bashrc或者~/.zshrc里:

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

如果你用conda,激活环境后PATH会自动带上,这倒不用操心。但如果是自己编译安装的,一定要配好。

环境变量配置完成后,务必用which kraken2确认一下路径是否正确。如果返回的不是你预期的目录,那一定是你配错了。

2.5 测试运行

装好了、配好了,现在跑个最简单的测试。

先下载一个迷你数据库(标准数据库太大,测试没必要):

kraken2-build --download-taxonomy --db test_db
kraken2-build --download-library bacteria --db test_db
kraken2-build --build --db test_db

这一步可能需要几分钟,取决于你的网络。等它构建完成,找一条细菌序列试试:

echo ">test
AGCTAGCTAGCTAGCTAGCT" | kraken2 --db test_db --fasta-input /dev/stdin

如果看到类似下面这样的输出,说明一切正常:

1 sequence classified (100.00%)

我第一次跑这个测试的时候,看到那个100%心里还挺踏实的。不过你也要注意,测试数据和正式数据差别很大,跑通只是第一步。

另外,我建议你把测试结果保存下来,方便以后对比——万一哪天升级了版本或者改了参数,你可以回头看看测试结果有没有变化。

kraken2 --db test_db --report test_report.tsv sample.fasta

生成的report文件会告诉你每条序列的分类情况,可以用来快速验证数据库是否正常工作。

下面这张图把整个安装和验证的流程串起来了,你可以对照着走一遍:

Kraken2 安装配置流程图 检查系统依赖 Conda 安装 源码编译安装 创建独立环境 conda create -n kraken2 编译 ./install_kraken2.sh /path 配置环境变量 PATH 测试运行 → 验证输出版本 ① ② 两种安装方式 最终汇到同一入口

看到这里,你应该已经能把Kraken2跑起来了。安装这一步虽然基础,但基础不牢,后面优化、调参全是空中楼阁。我当年刚接触这个工具时也是从这一步开始的,花了一个下午才把所有依赖配齐——现在有了conda和清晰的文档,已经快太多了。