VEP安装和使用

VEP是ensembl推出的一款注释软件,VEP基于Apache-2.0许可,可以商用。与annovar和snpeff相比,对国内用户来说,VEP的安装和使用都更加复杂。但由于目前很多软件,如maftools、autoPVS1、CharGer等均基于VEP的注释结果,因此很有必要装上。

VEP的安装

最简单的安装方法是使用docker。目前最新版本是106。

docker

docker pull ensemblorg/ensembl-vep:release_106.1

但是在集群中,使用docker或singluarity要导入数据库,为了便于使用,采取逐步安装的方式。

VEP的安装需要gcc、g++和make;Perl≥5.10;需要安装 Archive::ZipDBI

VEP官方建议使用cpanm来安装这些模块。那么首先来安装cpanminus

cpan App::cpanminus

然后使用cpanm安装以下模块。

cpanm Archive::Zip
cpanm DBI
cpanm DBD::mysql
cpanm Set::IntervalTree
cpanm JSON
cpanm PerlIO::gzip

在安装Bio::DB::BigFile时提示需要Kent Source,要先下载和编译Jim Kent’s source tree。查看kent的README,编译好后再安装Bio::DB::BigFile。由于此模块是用于自定义数据库的,因此也可以先不装。

wget https://github.com/ucscGenomeBrowser/kent/archive/v335_base.tar.gz
tar xzf v335_base.tar.gz
rm v335_base.tar.gz
export KENT_SRC=$PWD/kent-335_base/src
export MACHTYPE=$(uname -m)
export CFLAGS="-fPIC"
export MYSQLINC=`mysql_config --include | sed -e 's/^-I//g'`
export MYSQLLIBS=`mysql_config --libs`
cd $KENT_SRC/lib
echo 'CFLAGS="-fPIC"' > ../inc/localEnvironment.mk
make clean && make
cd ../jkOwnLib
make clean && make
# 如果缺失某些库, 需要root
sudo apt-get install libpng-dev libssl-dev
cpanm Bio::DB::BigFile

开始装VEP,目前最新版本是106。创建cache目录可以选否(n)。然后就一切看网速咯。

git clone https://github.com/Ensembl/ensembl-vep.git
cd ensembl-vep
perl INSTALL.pl --NO_TEST -n

安装的时候,BioPerl-1.6.924.tar.gz这个东西可能会因为网络问题下载失败。可以手动安装,注意下面的Path和bash的启动文件需修改为自己的。

curl -O https://cpan.metacpan.org/authors/id/C/CJ/CJFIELDS/BioPerl-1.6.924.tar.gz
tar zxvf BioPerl-1.6.924.tar.gz
rm BioPerl-1.6.924.tar.gz
echo 'export PERL5LIB=${PERL5LIB}:##PATH_TO##/bioperl-1.6.924' >> ~/.bash_profile

数据库下载

xx

将数据库存放于Cache中,将插件存放于Plugins中。

下载数据库

然后需要下载数据库。默认的GRCh37数据库,下载refseq的够用了。

wget http://ftp.ensembl.org/pub/release-106/variation/indexed_vep_cache/homo_sapiens_refseq_vep_106_GRCh37.tar.gz
tar -zxvf homo_sapiens_refseq_vep_106_GRCh37.tar.gz

VEP包含很多插件,每个插件对应着不同的数据库,这里列举几个常用的。

dbNSFP,这是一个全家桶库,整合了非常多人群频率及有害性预测等数据库。

wget ftp://dbnsfp:dbnsfp@dbnsfp.softgenetics.com/dbNSFP4.3a.zip
unzip dbNSFP4.3a.zip
zcat dbNSFP4.3a_variant.chr1.gz | head -n1 > h
zgrep -h -v "^#chr" dbNSFP4.3a_variant.chr* | awk '$8 != "." ' | sort -T /path/to/tmp_folder -k8,8 -k9,9n - | cat h - | bgzip -c > dbNSFP4.3a_grch37.gz
tabix -s 8 -b 9 -e 9 dbNSFP4.3a_grch37.gz

dbscSNV是一个剪接位点有害性预测库。

wget ftp://dbnsfp:dbnsfp@dbnsfp.softgenetics.com/dbscSNV1.1.zip
unzip dbscSNV1.1.zip
head -n1 dbscSNV1.1.chr1 > h
cat dbscSNV1.1.chr* | grep -v ^chr | cat h - | bgzip -c > dbscSNV1.1_GRCh37.txt.gz
tabix -s 1 -b 2 -e 2 -c c dbscSNV1.1_GRCh37.txt.gz

spliceAI是illumina推出的剪接位点有害性预测软件,可以对Vcf进行计算,但在WGS和WES中,重新计算耗时较长,因此一般使用现成的注释库。现成数据库可以在下面地址下载,需要注册illumina的账号。下载后建立索引。

# 下载地址
# https://basespace.illumina.com/s/otSPW8hnhaZR
tabix -p vcf spliceai_scores.raw.snv.hg19.vcf.gz
tabix -p vcf spliceai_scores.raw.indel.hg19.vcf.gz

下载插件

根据自己的需求下载对应的插件,插件可以在VEP的github仓库中找到。插件的使用命令可参考此页

下载需要的

wget https://github.com/Ensembl/VEP_plugins/blob/release/106/dbNSFP.pm
wget https://github.com/Ensembl/VEP_plugins/blob/release/106/dbscSNV.pm
wget https://github.com/Ensembl/VEP_plugins/blob/release/106/SpliceAI.pm

注释

使用以下命令进行注释,这里的dbNSFP4.3a使用了ALL来注释所有内容,实际上可以仅指定需要的。指定–shift_3prime 1来符合NCCL要求的转录本3’原则。

vep \
	--offline --cache \
	--format vcf -e --refseq --fork 8 \
	--vcf --force_overwrite \
	--dir_cache /path/to/vep_data \
	--dir_plugins /path/to/Plugins \
	-i input.vcf \
	-o output.vcf \
	--plugin dbNSFP,dbNSFP4.3a_grch37.gz,ALL \
	--plugin dbscSNV,dbscSNV1.1_GRCh37.txt.gz \
	--plugin SpliceAI,snv=spliceai_scores.raw.snv.hg19.vcf.gz,indel=spliceai_scores.raw.indel.hg19.vcf.gz,cutoff=0.5 \
	--fasta /path/to/reference.fa --assembly GRCh37 --shift_3prime 1

建议是如果dbNSFP注释ALL,就不要加-e了。

最后推荐的注释命令

input=$1
output=$2

vep_data_dir=/path/to/vep_data
plu_data_dir=$vep_data_dir/Plu_data
plugins_dir=$vep_data_dir/Plugins
reference=/path/to/GRCh37.fasta

dbnsfp_str="CADD_phred,SIFT_pred,Polyphen2_HDIV_pred,LRT_pred,MutationTaster_pred,MutationAssessor_pred,FATHMM_pred,PROVEAN_pred,M-CAP_pred,REVEL_score"
dbnsfp_str=$dbnsfp_str",clinvar_clnsig"
fields_str="Uploaded_variation,Location,REF_ALLELE,Allele,Gene,VARIANT_CLASS,CANONICAL,HGVSc,HGVSp,Consequence,EXON,BIOTYPE"
fields_str=$fields_str",Existing_variation,gnomAD_EAS_AF,AF,EAS_AF,"
fields_str=$fields_str$dbnsfp_str",ada_score,rf_score,SpliceAI_pred"

vep \
	--offline --cache \
	--format vcf --refseq --fork 8 \
	--force_overwrite \
	--dir_cache $vep_data_dir \
	--dir_plugins $plugins_dir \
	-i $input \
	-o $output \
	--plugin dbNSFP,$plu_data_dir/dbNSFP4.3a_grch37.gz,$dbnsfp_str \
	--plugin dbscSNV,$plu_data_dir/dbscSNV1.1_GRCh37.txt.gz \
	--plugin SpliceAI,snv=$plu_data_dir/spliceai_scores.raw.snv.hg19.vcf.gz,indel=$plu_data_dir/spliceai_scores.raw.indel.hg19.vcf.gz,cutoff=0.5 \
	--fasta $reference --assembly GRCh37 \
	--shift_3prime 1 --no_escape --show_ref_allele --check_existing \
	--exclude_predicted --canonical --tab --fields $fields_str

输出是tab分隔的文本文件。