第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+ 的安装与配置流程串起来了。你可以当速查表用。
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 配置数据库路径时更清晰。