第3章 VEP安装与环境配置

嗯,这一章我们来聊聊怎么把VEP装到你的机器上。你可能会想——不就装个软件吗?但我告诉你,VEP的安装还真有它的小脾气。我在好几个项目里亲手踩过坑,今天就把这些经验掰开揉碎了讲给你。

先看整体流程,我画了个图帮你理清思路:

VEP 安装流程框架 下载 VEP 安装包 检查 Perl + BioPerl 下载 / 配置缓存数据库 设置环境变量 PATH 运行验证测试 VEP 就绪 ✅ 💡 我的经验 • 建议用 tar.gz 安装 • 缓存数据库提前下载 • Perl 版本 ≥ 5.26 • 别漏了 DBI 模块

3.1 下载VEP安装包

VEP官方提供了几种获取方式。我个人最喜欢直接从GitHub下载tar.gz压缩包,干净又可控。你可以在 GitHub Releases 页面 找到最新版本。当然,这个链接不用点,你直接跑下面的命令就行:

wget https://github.com/Ensembl/ensembl-vep/archive/release/111.tar.gz
tar -xzf 111.tar.gz
cd ensembl-vep-release-111
我的习惯: 下载前先看一眼 Releases 页面上的 tag 名,有时候版本号前面会带个 'v'。直接用 wget 拉下来然后解压,比用 git clone 快得多。git clone 要拖好几MB历史记录,没必要。

另外还有一种方法——用Docker镜像。嗯,其实我不太推荐生产环境里用Docker跑VEP,一来缓存挂载麻烦,二来性能会打折扣。但如果你只是测试一下,可以试试:

docker pull ensemblorg/ensembl-vep:release_111
docker run -it --rm ensemblorg/ensembl-vep:release_111 perl /opt/vep/src/ensembl-vep/vep

说白了,装机阶段还是老老实实走源码安装最稳。你想想看,一旦缓存路径设好,后续升级也只是换个目录的事。

3.2 解决依赖:Perl与BioPerl

VEP是用Perl写的,所以你的系统里必须有一个能用的Perl。我记得有一次在CentOS 7上装,系统自带的Perl 5.16死活装不上BioPerl的某个模块。后来一查,官方要求 Perl ≥ 5.26。所以我建议你上来就先确认:

perl -v | head -2

如果版本太低,你得升级。推荐用perlbrew或者直接编译安装新版本。我这里给个编译的步骤:

wget https://www.cpan.org/src/5.0/perl-5.34.1.tar.gz
tar -xzf perl-5.34.1.tar.gz
cd perl-5.34.1
./Configure -des -Dprefix=$HOME/perl5
make -j4
make install
export PATH=$HOME/perl5/bin:$PATH

然后安装BioPerl和VEP需要用到的Perl模块。VEP自带了一个安装脚本,但说实话,那个脚本有时会卡在某些CPAN镜像上。我习惯手动安装核心模块:

cpan -i Bio::Perl DBI DBD::mysql Archive::Zip Set::IntervalTree
避坑指南: 我曾经在安装 Set::IntervalTree 时踩过大坑——这个模块依赖C编译器,而且需要 libtree 开发头文件。如果你在Ubuntu上,记得先装 libtree-dev:sudo apt install libtree-dev。CentOS上是 sudo yum install libtree-devel。

另外提一下BioPerl。虽然VEP的主程序不直接调用BioPerl,但一些辅助脚本(比如 filter_vep、variant_recoder)会用到它。我个人建议统一装上,省得后面报错再回来补装。

3.3 缓存数据库设置

VEP最核心的部分就是它的缓存数据库。没有缓存,每次跑注释都要在线查询Ensembl API,慢到你想哭。所以我强烈建议你在安装完软件后,立刻把缓存下载好。

VEP提供了两条路径:一是整个物种的全量缓存(包含everything),二是只下载FASTA和GTF的轻量缓存。嗯,我一般用全量,因为后面跑 --everything 选项时不需要再额外拉数据。但是全量缓存体积很大——人类hg38大概有20GB。所以你磁盘空间要预留够。

下载命令示例(以人类GRCh38为例):

cd ~/vep_cache
wget https://ftp.ensembl.org/pub/release-111/variation/indexed_vep_cache/homo_sapiens_vep_111_GRCh38.tar.gz
tar -xzf homo_sapiens_vep_111_GRCh38.tar.gz

下载完成后,你需要在环境变量里告诉VEP缓存的位置:

export VEP_CACHE=$HOME/vep_cache
export PATH=$HOME/ensembl-vep-release-111:$PATH

当然你也可以把这两行写进 ~/.bashrc 或 ~/.profile 里,以后每次登录自动生效。

另外,VEP还允许你把缓存放在非标准路径,用 --cache --dir_cache 参数指定。但说实话,每次敲一长串参数挺烦的。我建议统一用环境变量管理。

缓存版本 物种 基因组组装 大小(约) 下载源
release-111 Homo sapiens GRCh38 22 GB ftp.ensembl.org
release-111 Mus musculus GRCm39 15 GB ftp.ensembl.org
release-111 Drosophila melanogaster BDGP6.46 2.8 GB ftp.ensemblgenomes.org
小技巧: 如果你的网络很慢,可以用 aria2c 代替 wget,支持多线程下载。命令几乎一样:aria2c -x4 https://ftp.ensembl.org/...tar.gz。我第一次下载人类缓存的时候网络掉线了三回,后来换了aria2c,一把搞定。

3.4 验证安装

好,装完依赖,缓存也到位了。怎么知道一切是否正常?跑一条最简单的命令:

vep --help | head -5

如果能看到VEP的版本号和帮助信息,基本就成功了。再进一步,用缓存试跑一个简单的VCF文件:

echo -e "1\t100\t.\tA\tG\t.\t.\t.\tGT\t0/1" | vep --cache --dir_cache $HOME/vep_cache --species homo_sapiens --assembly GRCh38 --format vcf

你应该能在屏幕上看到注释输出,包含基因名、Consequence、Existing variation等列。如果报错说“Can't locate Bio/Perl.pm”,那就回去检查BioPerl安装。如果报“Cache not found”,检查 VEP_CACHE 路径或 --dir_cache 参数。

一键验证脚本(我常用的):

#!/bin/bash
# quick_vep_check.sh
VEP_CACHE=$HOME/vep_cache
echo "Checking VEP availability..."
which vep || { echo "VEP not in PATH"; exit 1; }
echo "Testing VEP with a dummy variant..."
echo -e "1\t100\t.\tA\tG\t.\t.\t.\tGT\t0/1" | vep --cache --dir_cache $VEP_CACHE --species homo_sapiens --assembly GRCh38 --format vcf --quiet
if [ $? -eq 0 ]; then
    echo "VEP is ready to use!"
else
    echo "VEP test failed. Please check dependencies and cache."
fi

把这个脚本保存下来,以后每次换新机器或者升级版本,跑一遍就放心了。