第3章 BLAST+ 软件安装与配置

说实话,我第一次装 BLAST 时走了不少弯路。那时候还是老版 BLAST,光依赖库就折腾了一下午。现在 BLAST+ 已经相当成熟了,但安装配置里还是有几个坑。我帮你把这些坑提前填上。

3.1 为什么非要自己装?

你可能会问,NCBI 官网不是有在线 BLAST 吗?我用过,但项目里根本行不通。

  • 数据量限制:线上版一次只能提交几万条序列,我们基因组注释动辄几百万条。
  • 速度:本地跑可以充分利用服务器 CPU 和内存。
  • 自定义数据库:线上库不全,你得能加自己的参考序列。

说白了,本地 BLAST+ 是基因组注释 Pipeline 的发动机。没有它,后面所有分析都是空谈。

3.2 版本选择

我个人习惯用最新的稳定版。写这个教程时,推荐 2.15.0+ 或更新版本。它能处理更大数据库,内存管理也更好。

下载地址别搞错了:NCBI 官网的 ftp 站点有源码包和预编译包。我建议初学者直接下预编译的,省时间。

# 以 Linux x86_64 为例
wget https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.15.0+-x64-linux.tar.gz
tar -xzvf ncbi-blast-2.15.0+-x64-linux.tar.gz

3.3 编译安装

如果你喜欢从源码编译,或者服务器是特殊架构(比如 ARM),那就走这条路。

编译的关键一步:BLAST+ 现在用 CMake 构建。别再用老版本的 `configure`。

# 解压源码包
tar -xzvf ncbi-blast-2.15.0+-src.tar.gz
cd ncbi-blast-2.15.0+-src

# 创建构建目录
mkdir build && cd build

# 配置:注意指定安装路径
cmake -B . -DCMAKE_INSTALL_PREFIX=/usr/local/blast

# 编译:用 -j 参数加速
make -j$(nproc)

# 安装
make install

我在项目中遇到过编译器版本不对导致编译失败。建议 gcc 版本不低于 8.x。

3.4 配置环境变量

装好后还得让系统找到它们。不然你每次都得输全路径。

编辑你的 ~/.bashrc 或 ~/.zshrc:

# BLAST+ 路径
export PATH=$PATH:/usr/local/blast/bin

# BLAST 数据库默认存放位置
export BLASTDB=/data/blastdb

记得 source ~/.bashrc 让它生效。

3.5 数据库准备

BLAST 不能直接读 FASTA 文件。你得先建索引。这个叫 makeblastdb 的小工具就是干这个的。

举个例子,我们给一个水稻蛋白质数据库建索引:

makeblastdb -in rice_protein.fasta -dbtype prot -title "Rice Protein DB" -parse_seqids
参数 说明 我的建议
-in 输入的 FASTA 文件 路径尽量用绝对路径
-dbtype 数据库类型:prot 或 nucl 别弄反了,否则 BLAST 报错
-title 数据库名称 最好能体现物种和版本
-parse_seqids 解析序列 ID 不加这个,后面一些功能用不了

3.6 验证安装是否成功

跑一个小测试:

blastn -version

如果看到类似下面的输出,说明装对了:

blastn: 2.15.0+
 Package: blast 2.15.0, build Sep 10 2024 09:00:00

再试试搜索一条短序列:

echo -e ">query\nATCGATCG" > test.fa
blastn -db /data/blastdb/nt -query test.fa -out test_blast_result.txt

避坑指南:我曾经在集群上装 BLAST+,没注意 BLASTDB 变量没设置。结果每次运行都报错 "BLAST database error: ..."。花了半个小时才反应过来。所以配置好环境变量后,一定要 echo $BLASTDB 确认一下。

3.7 BLAST+ 程序族一览

你装的包里有很多个小程序。每个功能不同。我把最常用的列一下:

程序名 查询序列类型 数据库类型 适用场景
blastn 核酸 核酸 DNA vs DNA 比对
blastp 蛋白质 蛋白质 蛋白 vs 蛋白 比对
blastx 核酸(翻译) 蛋白质 DNA 翻译后比对蛋白库,常用于注释未知物种
tblastn 蛋白质 核酸(翻译) 蛋白 vs DNA 翻译库,找同源基因
tblastx 核酸(翻译) 核酸(翻译) 两段 DNA 都翻译,最敏感但最慢
makeblastdb — — 建索引,必须的步骤
blastdbcmd — — 从数据库中提取子集序列

你想想看,基因组注释最常用的是 blastx,因为它能把编码区翻译成蛋白,灵敏度高。我们的 Pipeline 后面会重点用它。

3.8 本章知识体系

下面这张图把 BLAST+ 的安装与配置流程串起来了。你可以当速查表用。

BLAST+ 安装与配置流程 1. 获取 BLAST+ 源码/预编译包 2. 解压并编译安装(或直接解压) 3. 配置环境变量(PATH + BLASTDB) 4. 下载/准备参考数据库 5. 使用 makeblastdb 建索引 6. 验证:blastn -version + 测试运行 💡 注意:数据库索引一旦建好可以反复使用。集群上只要一人建索引,其他人设置好 BLASTDB 路径就行。

3.9 常见安装问题

  • 找不到共享库:运行 blastn -version 报错 error while loading shared libraries: libgnutls.so.30。解决办法:sudo apt install libgnutls30 或 yum install gnutls。
  • 权限问题:推荐安装到个人目录,比如 $HOME/blast,避免 sudo 麻烦。
  • 数据库索引损坏:makeblastdb 过程中如果中断,会留下脏数据。删掉重新建。

小技巧:我喜欢把不同物种的数据库放到各自子目录里,比如 $BLASTDB/rice/、$BLASTDB/human/。这样后续 Pipeline 配置数据库路径时更清晰。