使用snpEff分為兩種情況,一種是snpEff已經(jīng)構建了相應的數(shù)據(jù)集(例如人類和小鼠),另一種是則是snpEff未提供相應的數(shù)據(jù)集(例如自己組裝的基因組)
情況1: 我們可以使用java -jar snpEff.jar databases | grep -i human的方式列出所有的數(shù)據(jù)集,然后用grep進行篩選
例如人類的基因組注釋數(shù)據(jù)集就分為GRCh37.p13.RefSeq和GRCh38.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...
輸出結果的第一列是基因組的版本號,我們根據(jù)這個版本號進行下載
java -jar snpEff.jar download GRCh38.p7.RefSeq
使用上面這種方法,我們無法保證數(shù)據(jù)下載速度,也不能保證注釋信息時刻最新,因此我更推薦自己下載相應的基因組序列和注釋文件,然后構建注釋數(shù)據(jù)集。
我們編輯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
建立數(shù)據(jù)庫之后,注釋這一步就相對簡單
java -jar snpEff.jar ann XXX input.vcf.gz > snpeff.vcf
默認情況下snpEff的注釋信息會很多,我們可以用如下幾個參數(shù)來簡化輸出
- -no-downstream
- -no-upstream
- -no-utr
- -no-intergenic
- -no-intron
比如說我們只關注CDS中的注釋信息,不考慮上游、下游、UTR、基因間區(qū)等信息
java -jar snpEff.jar ann -no-utr -no-downstream -no-upstream -no-intergenic XXX input.vcf.gz > snpeff.vcf
最終除了輸出的vcf文件外,我們還會有額外兩個文件,記錄總結性信息
- snpEff_genes.txt: 總結每個基因的突變位點數(shù)
- snpEff_summary.html: 總結突變的類型數(shù)