使用snpEff对VCF进行注释

作者: xuzhougeng | 来源:发表于2020-04-14 12:51 被阅读0次

    使用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进行注释

        本文链接:https://www.haomeiwen.com/subject/onbzmhtx.html