第二章 安装与配置:把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
装好后验证一下:
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。
编译完成后,目录结构大概是这样的:
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和清晰的文档,已经快太多了。