BLAST 安装与配置:从零搭好分析环境

搭建一个可复现的分析环境,说白了就是让你的 BLAST 不管在谁的机器上都能跑出一样的结果。我当年刚开始做生信时,就因为环境不一致,折腾了两天才发现是系统自带的 Python 版本不同导致的——吃过亏,你就知道这步有多重要了。

安装 BLAST 有几种常见方式。我们挨个过一遍,重点聊聊 conda 这种方式,因为它最符合可重复计算的要求。

BLAST 的几种获取方式

先列个表,看看有哪些选择:

方式 优点 缺点 适用场景
conda 安装 环境隔离、版本锁定、依赖自动解决 需要安装 conda 或 mamba 可复现分析首选
NCBI 官方安装包 官方发布、稳定可靠 手动配置 PATH,版本管理麻烦 服务器部署、单次使用
源码编译 可定制优化、最新功能 编译耗时、工具链要求高 特殊优化需求或实验性版本
系统包管理器(apt/yum) 安装简单 版本老旧、不可复现 不推荐

我个人习惯用 conda。为什么呢?你想想看——你不需要手动下载、解压、改 PATH,一个命令就能装好,还能锁定环境的版本。这对于后来的人重新跑你的分析来说,太关键了。

Conda 环境搭建:把地基打稳

先检查你机器上有没有 conda。如果没有,去 Miniconda 官网 下一个安装脚本跑一遍就行。这里我不罗嗦了。

有 conda 之后,第一步是创建一个干净的环境:

conda create -n blast_env python=3.9
conda activate blast_env

为什么要新建环境?因为 BLAST 本身没依赖,但后续我们可能要用 Python 来写工作流或管理数据。隔离环境能让你的系统 Python 不被污染。

然后安装 BLAST:

conda install -c bioconda blast

等几秒,它会把 blast 和相关工具装好。装完后验证一下:

blastn -version

我建议用 mamba 替代 conda 来做安装——mamba 解决依赖的速度快多了。如果你的 conda base 里没有 mamba,先装一下:

conda install -c conda-forge mamba

然后用 mamba 安装 BLAST,体验会好很多:

mamba install -c bioconda blast

小技巧:用 mamba 装依赖多的大包时特别省心。我曾经在装一个几十个依赖的软件时,conda 卡了快半小时,换成 mamba 两分钟就解决了。

本地安装与源码编译:备选方案

如果你因为网络问题或权限限制用不了 conda,也可以从 NCBI 官网下载二进制包。我有时候在内网服务器上就是这么干的。

下载之后,解压并添加到 PATH:

wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.15.0+-x64-linux.tar.gz
tar -zxvf ncbi-blast-2.15.0+-x64-linux.tar.gz
echo 'export PATH=$PATH:/path/to/ncbi-blast-2.15.0+/bin' >> ~/.bashrc
source ~/.bashrc

为什么我不太推荐这种方式?因为手动操作容易出错——漏了某个 bin 目录、环境变量写错位置,这些坑我都踩过。而且这种安装方式,别人很难一键复现你的环境。

还有一种情况需要源码编译。比如说,你想用特定的编译优化来跑大型数据库比对。那就要走 CMake 流程了:

wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.15.0+-src.tar.gz
tar -zxvf ncbi-blast-2.15.0+-src.tar.gz
cd ncbi-blast-2.15.0+-src/c++
mkdir build && cd build
cmake -B . -DCMAKE_INSTALL_PREFIX=/usr/local/blast
make -j4
make install

嗯,这里要注意:编译对系统工具有要求——g++、cmake、make 这些都得有。我第一次编译时少装了个 cmake,报错信息看了半天才反应过。

避坑指南:我曾经在编译时忘了加 -j4 参数,单线程跑了快 20 分钟。如果你用多核机器,一定加上这个选项。

验证安装:确保一切正常

环境装好只是第一步。你得确认它真的能用。我每次装完新工具习惯跑一个简单的测试用例——这招让我避免了好几次“装完发现路径不对”的尴尬。

先确认版本信息:

blastn -version

# 输出应该类似:
# blastn: 2.15.0+
# Package: blast 2.15.0, build May 10 2024 12:00:00

再跑一个真实的 BLAST 查询。拿一段序列试试:

echo -e ">test\nACGTACGTACGTACGTACGTACGTACGTACGT" > test.fa
# 建一个小索引(用你已有的数据库或做一个 mini 库)
makeblastdb -in test.fa -dbtype nucl
# 查询自己
blastn -query test.fa -db test.fa -out result.txt
cat result.txt

输出应该包含比对结果,比如覆盖率、E-value 这些。如果没有报错,说明你的 BLAST 环境已经就绪了。

注意:测试时尽量用小序列,不然机器卡半天你也看不出问题。我刚开始试过用完整的人类基因组做测试——等得我都吃完午饭了才跑完。

本章的知识体系速览

下面这张图可以帮你理清 BLAST 安装和配置的几个关键步骤:

BLAST 安装与配置知识图谱 安装方式选择 Conda 环境搭建 本地二进制安装 源码编译安装 版本验证 测试查询 推荐用 conda+mamba 最符合可复现要求 环境就绪,可开始分析

从上图可以看清整个流程:先选一个安装方式,然后配置环境,最后验证。整个链条没断,你的 BLAST 才能用起来。

好了,环境搞定了。下一步就该搭数据库、跑真正的比对了。但那些内容,咱们留在后面慢慢聊。