【基因组学工具】变异注释SnpEff
写在前面
在进行基因组学研究中,总避免不了对一些SNP和Indel进行分析,如何去注释它们的,就需要用到SnpEff,SnpEff是一个变异注释和预测变异影响(氨基酸和核酸改变)的工具。
1.介绍
安装
因为是用JAVA编写的,所以需要提前安装JAVA。
http://snpeff.sourceforge.net/download.html
概括介绍
Input:通常是VCF(variant call format)文件,也接受BED文件(如来自ChIP-Seq peaker)
Output:注释变异并预测对已知基因的影响。
内置数据库包含超过2500个基因组,包括大多数哺乳动物,植物,细菌和真菌基因组。
变异类型
Type | What is means | Example |
---|---|---|
SNP | Single-Nucleotide Polymorphism | Reference = 'A', Sample = 'C' |
Ins | Insertion | Reference = 'A', Sample = 'AGT' |
Del | Deletion | Reference = 'AC', Sample = 'C' |
MNP | Multiple-nucleotide polymorphism | Reference = 'ATA', Sample = 'GTC' |
MIXED | Multiple-nucleotide and an InDel | Reference = 'ATA', Sample = 'GTCAGT' |
数据库
从4.0版本开始,SnpEff自动下载和安装所有数据库。
查看支持的数据库。
$ java -jar snpEff.jar databases | less
寻找特定的数据库。
$ java -jar snpEff.jar databases | grep -i musculus
GRCm38.68 Mus_musculus OK http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.69 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.70 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.71 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.72 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.73 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
GRCm38.74 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
NCBIM37.64 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
NCBIM37.65 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
NCBIM37.66 Mus_musculus http://sourceforge.net/projects/snpeff/files/databases/v3.4/snpEff_v3.4_Mus_musculus.zip
2.启动 SnpEff
基本例子:使用SnpEff进行注释
以系统提供的vcf样本为例。examples/test.chr22.vcf
$ java -Xmx4g -jar snpEff.jar GRCh37.75 examples/test.chr22.vcf > test.chr22.ann.vcf #-Xmx4g指定使用4g内存,
# Here is how the output looks like
$ head examples/test.chr22.ann.vcf
##SnpEffVersion="4.1 (build 2015-01-07), by Pablo Cingolani"
##SnpEffCmd="SnpEff GRCh37.75 examples/test.chr22.vcf "
##INFO=
##INFO=
##INFO=
#CHROM POS ID REF ALT QUAL FILTER INFO
22 17071756 . T C . . ANN=C|3_prime_UTR_variant|MODIFIER|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.*11A>G|||||11|,C|downstream_gene_variant|MODIFIER|FABP5P11|ENSG00000240122|transcript|ENST00000430910|processed_pseudogene||n.*397A>G|||||4223|
22 17072035 . C T . . ANN=T|missense_variant|MODERATE|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.1406G>A|p.Gly469Glu|1666/2034|1406/1674|469/557||,T|downstream_gene_variant|MODIFIER|FABP5P11|ENSG00000240122|transcript|ENST00000430910|processed_pseudogene||n.*397G>A|||||3944|
22 17072258 . C A . . ANN=A|missense_variant|MODERATE|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.1183G>T|p.Gly395Cys|1443/2034|1183/1674|395/557||,A|downstream_gene_variant|MODIFIER|FABP5P11|ENSG00000240122|transcript|ENST00000430910|processed_pseudogene||n.*397G>T|||||3721|
22 17072674 . G A . . ANN=A|missense_variant|MODERATE|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.767C>T|p.Pro256Leu|1027/2034|767/1674|256/557||,A|downstream_gene_variant|MODIFIER|FABP5P11|ENSG00000240122|transcript|ENST00000430910|processed_pseudogene||n.*397C>T|||||3305|
第八列ANN
是SnpEff添加的注释信息,老版本的会使用EFF
。
添加-v
(verbose)参数显示详细的分析过程,便于纠正报错。可以看到第一次指定数据库也是下载安装基因组的过程,第二次就会直接调用本地版本。
输出结果会生成一个html文件,会显示基本的统计信息和对变异的分析。
3.命令和命令行参数
运行加速:
一是不做统计。如果vcf文件中没有成百上千个样本的话,应该使用-noStats
来提高运行速度。
二是使用多线程。参数-t
来实现。
过滤
对输出结果进行过滤。
使用SnpSift filter
实现输出结果的过滤。
Command line option | Meaning |
---|---|
-no-downstream | Do not show DOWNSTREAM changes |
-no-intergenic | Do not show INTERGENIC changes |
-no-intron | Do not show INTRON changes |
-no-upstream | Do not show UPSTREAM changes |
-no-utr | Do not show 5_PRIME_UTR or 3_PRIME_UTR changes |
-no EffectType | Do not show 'EffectType' (it can be used several times) e.g: -no INTERGENIC -no SPLICE_SITE_REGION
|
经典转录本
一个基因中经典的转录本被定义为蛋白编码转录本中最长的CDS,如果一个基因中没有一个转录本是蛋白编码的,那么它就是最长的cDNA。使用-canon
来调用经典转录本功能。
4.输入和输出文件
介绍vcf文件
vcf文件是tab分隔的,通常包含以下八个内容。Chromosome name,Position,Variant's ID,Reference genome,Alternative (i.e. variant),Quality score,Filter (whether or not the variant passed quality filters),INFO : Generic information about this variant. SnpEff adds annotation information in this column.
示例:
#CHROM POS ID REF ALT QUAL FILTER INFO
20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2
20 17330 . T A 3 q10 NS=3;DP=11;AF=0.017
vcf的输出
vcf也是默认的标准输出。
vcf输出文件的ANN区域
示例:
ANN=T|missense_variant|MODERATE|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.1406G>A|p.Gly469Glu|1666/2034|1406/1674|469/557||,T|downstream_gene_variant|MODIFIER|FABP5P11|ENSG00000240122|transcript|ENST00000430910|processed_pseudogene||n.*397G>A|||||3944|
一个变异通常由超过一个注释,多个注释用逗号来分隔,每个注释的子区域都用|
来分隔。
Annotation : T|missense_variant|MODERATE|CCT8L2|ENSG00000198445|transcript|ENST00000359963|protein_coding|1/1|c.1406G>A|p.Gly469Glu|1666/2034|1406/1674|469/557| |
SubField number : 1| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |15| 16
对注释的子区域进行解读:
1.Allele(or ALT):变异位点
2.Annotation (a.k.a. effect):使用序列本体术语来注释影响。
3.Putative_impact: 对基本影响的简单估计(HIGH, MODERATE, LOW, MODIFIER)
4.Gene Names:常用的基因名(HGNC)
5.Gene ID
6.Feature type:哪种类型的特征, (e.g. transcript, motif, miRNA, etc.)。
7.Feature ID:可能是Transcript ID (preferably using version number), Motif ID, miRNA, ChipSeq peak, Histone mark, etc。
8.Transcript biotype:“Coding”, “Noncoding”
9.Rank / total:外显子或内含子等级/总的外显子或内含子数量。
10.HGVS.c:使用HGVS符号的变异。
11.HGVS.p:
12.cDNA_position / cDNA_len:在cDNA或转录本cDNA的位置。
13.CDS_position / CDS_len:
14.Protein_position / Protein_len:
15.Distance to feature:可以是空的。
16.Errors, Warnings or Information messages: 影响注释准确性的错误,警告或提示信息。
每个vcf行的多条注释:
出现多条注释的原因:
1.一个变异影响多个基因,如一个变异可以是一个基因的下游或者另一个基因的上游。
2.基因有多个转录本,单个变异影响每个转录本。
5.癌症样本
6.添加注释
SnpEff也能对非编码区和调节区域进行注释。
只对少数几个物种有效(如人,鼠等)
进行该注释前,首先该看看自己研究的这个物种有没有调节性的数据库。