数据库下载与管理

为什么数据库选择这么重要

Kraken2 的分类能力,说白了就靠数据库撑腰。你用的数据库质量差,结果自然不可靠。我个人的习惯是,不管用哪个数据库,先看一眼它的文档说明。PlusPFP 和 Minikraken2 我都用过,差别还真不小。

核心原则:数据库的规模直接决定分类精度和运行速度。选大了内存扛不住,选小了分类结果粗糙。你得找到自己的平衡点。

预构建数据库一览

目前主流的有三个版本。我列个表,你一看就明白。

数据库名称 内容范围 压缩包大小 推荐内存 适用场景
PlusPFP 细菌、古菌、病毒、质粒、原生质体、真菌、原生动物 ~60 GB ≥64 GB 全面分类、科研级分析
Standard 细菌、古菌、病毒、质粒 ~20 GB ≥32 GB 常规宏基因组分析
Minikraken2 细菌、古菌、病毒 ~4 GB ≥8 GB 快速测试、资源受限环境

你可能会问,这么多数据库,我该选哪个?说白了,选数据库就是选平衡点。我在项目里遇到过最头疼的事,就是下载到一半磁盘满了。嗯,这里要注意一个细节:压缩包大小和解压后的体积是两码事。PlusPFP 解压后直奔 100 GB 以上。

下载数据库的两种方式

方式一:用 kraken2-build 命令自动拉取。我比较推荐这个,省心。

# 先建一个目录
mkdir -p ~/kraken2_db/pluspfp

# 下载分类信息
kraken2-build --download-taxonomy --db ~/kraken2_db/pluspfp

# 下载文库(这里以细菌为例)
kraken2-build --download-library bacteria --db ~/kraken2_db/pluspfp

# 构建数据库
kraken2-build --build --db ~/kraken2_db/pluspfp

方式二:直接下载预构建好的 tarball。速度更快,适合带宽充足的情况。

# 下载 PlusPFP 预构建包
wget https://genome-idx.s3.amazonaws.com/kraken/k2_pluspfp_20230314.tar.gz

# 解压到目标目录
tar -xzf k2_pluspfp_20230314.tar.gz -C ~/kraken2_db/pluspfp

小技巧:我习惯同时保留 Standard 和 Minikraken2 两个库。日常分析用 Standard,快速测试用 Minikraken2。切换起来很方便。

我曾经因为路径配置不对,浪费了一整天。当时以为下载成功了,结果 Kraken2 一直报错找不到数据库。后来才发现是目录层级搞错了。你想想看,预构建包解压后自带一层目录,要特别留意。

下面这张图把整个流程串起来了,你看一眼就能记住。

数据库下载与管理流程 选择数据库类型 下载数据库 验证完整性 配置存放路径 加载使用 ⚠️ 避坑提醒 下载前检查磁盘空间 注意解压后的实际大小 路径中不要包含中文或空格

管理数据库存放路径

路径管理看着简单,坑却不少。我建议你把所有数据库统一放在一个目录下,比如 /data/kraken2_db 或者 ~/kraken2_db。

常用的管理方式有这三种:

  • 环境变量法:设置 KRAKEN2_DB_PATH,一劳永逸。
  • 符号链接法:用软链接指向当前要用的版本,切换方便。
  • 命令行指定法:每次运行用 --db 参数指定路径。
# 方法一:设置环境变量
export KRAKEN2_DB_PATH=/data/kraken2_databases
echo 'export KRAKEN2_DB_PATH=/data/kraken2_databases' >> ~/.bashrc

# 方法二:符号链接管理
ln -sf /data/kraken2_databases/pluspfp_202303 ~/current_db
kraken2 --db ~/current_db input.fasta

# 方法三:直接指定
kraken2 --db /data/kraken2_databases/minikraken2_v2 input.fasta

注意:数据库路径不要包含中文、空格或特殊字符。Kraken2 在某些版本下对这些路径处理不够友好。我曾经因为这个折腾了大半天。

验证数据库完整性

下载完别急着跑分析。先验证一下,避免白忙活。

验证分三步走:

  1. 检查文件完整性:对比官方提供的 MD5 或 SHA256 校验值。
  2. 用 kraken2-inspect 查看数据库内容:确认分类层级正确。
  3. 跑一条测试序列:确保数据库能正常加载。
# 第一步:校验文件
md5sum k2_pluspfp_20230314.tar.gz
# 与官方提供的 MD5 值对比

# 第二步:检查数据库结构
kraken2-inspect --db ~/kraken2_db/pluspfp | head -20

# 第三步:测试查询
echo ">test
ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT" | kraken2 --db ~/kraken2_db/pluspfp --fasta-input -

个人经验:我每次下载新数据库后,都会跑一遍 kraken2-inspect。这步能提前发现数据库构建是否有问题,避免分析到一半才报错。

嗯,数据库的管理其实不难,但细节决定成败。你只要把下载、路径、验证这三个环节理顺了,后面调优才能安心进行。