第3章 VEP安装与环境配置
嗯,这一章我们来聊聊怎么把VEP装到你的机器上。你可能会想——不就装个软件吗?但我告诉你,VEP的安装还真有它的小脾气。我在好几个项目里亲手踩过坑,今天就把这些经验掰开揉碎了讲给你。
先看整体流程,我画了个图帮你理清思路:
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
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
把这个脚本保存下来,以后每次换新机器或者升级版本,跑一遍就放心了。