使用snpEff对VCF进行注释

使用snpEff分为两种情况,一种是snpEff已经构建了相应的数据集(例如人类和小鼠),另一种是则是snpEff未提供相应的数据集(例如自己组装的基因组)

情况1: 我们可以使用java -jar snpEff.jar databases | grep -i human的方式列出所有的数据集,然后用grep进行筛选

例如人类的基因组注释数据集就分为GRCh37.p13.RefSeqGRCh38.p7.RefSeq两种

Candidatus_paraburkholderia_schumannianae  Candidatus_paraburkholderia_schumannianae...
GRCh37.p13.RefSeq  Human genome GRCh37 using RefSeq transcripts...
GRCh38.p7.RefSeq  Human genome GRCh38 using RefSeq transcripts...
Pediculus_humanus Pediculus_humanus...

输出结果的第一列是基因组的版本号,我们根据这个版本号进行下载

java -jar snpEff.jar download GRCh38.p7.RefSeq

使用上面这种方法,我们无法保证数据下载速度,也不能保证注释信息时刻最新,因此我更推荐自己下载相应的基因组序列和注释文件,然后构建注释数据集。

我们编辑snpEff文件夹下的snpEff.config, 增加新的物种信息。尽管能够在该文件的任何一行添加信息,但是为了方便查找,建议在# Databases & Genomes后增加记录。

# XXX
XXX.genome : 物种名

这里的XXX是物种注释信息的版本号,XXX要和data下的文件夹对应

mkdir -p data/XXX

在data下面存放两个文件

  • sequences.fa.gz: 参考基因组
  • genes.gff.gz: 注释文件,GFF3格式(也可以是GFF2格式)

之后就可以用build子命令进行构建

java -jar snpEff.jar build -gff3 -v XXX
# -v: verbose
# -gff3/gff2/-gtf22

建立数据库之后,注释这一步就相对简单

java -jar snpEff.jar ann XXX input.vcf.gz > snpeff.vcf

默认情况下snpEff的注释信息会很多,我们可以用如下几个参数来简化输出

  • -no-downstream
  • -no-upstream
  • -no-utr
  • -no-intergenic
  • -no-intron

比如说我们只关注CDS中的注释信息,不考虑上游、下游、UTR、基因间区等信息

java -jar snpEff.jar ann -no-utr -no-downstream -no-upstream -no-intergenic XXX input.vcf.gz > snpeff.vcf

最终除了输出的vcf文件外,我们还会有额外两个文件,记录总结性信息

  • snpEff_genes.txt: 总结每个基因的突变位点数
  • snpEff_summary.html: 总结突变的类型数

你可能感兴趣的:(使用snpEff对VCF进行注释)