ANNOVAR | 变异注释【上】

一、简介

  • 会得到一系列变异数据,这些变异数据只是告诉我们在基因组的某个位置发生了一段序列的改变,至于这个改变会不会影响生物学功能,我们并不清楚。而注释就是将基因组的序列变异数据转化为我们更关心的生物学功能变化的信息。

  • Annovar常被用在人类基因组的注释上,其实,它也可以对人类以外的基因组数据进行注释。比如,老鼠基因组的注释上。需要自己进行建立注释信息。

  • ANNOVAR是一个perl编写的命令行工具,能在安装了perl解释器的多种操作系统上执行。允许多种输入文件格式,包括最常被使用的VCF格式。输出文件也有多种格式,包括注释过的VCF文件、用tab或者逗号分隔的text文件。

  • ANNOVAR能快速注释遗传变异并预测其功能。类似的variants注释软件还有 VEP, snpEff, VAAST, AnnTools等等.

ANNOVAR 注释变异可以分成有基于基因、基于染色体区间和变异数据等三种类型. 这三种注释分别针对于每一个variant的不同方面:

  1. 基于基因的注释(gene-based annotation)
    注释结果为突变位点位于基因的相对位置,是否改变氨基酸编码,确定受影响的氨基酸,获得变异位点的HGVS命名方式,揭示variant与已知基因直接的关系以及对其产生的功能性影响。可灵活使用RefSeq genes, UCSC genes, ENSEMBL genes, GENCODE genes或许多其他基因定义系统。

  2. 基于染色体区间的注释(region-based annotation)
    识别特定基因组区域的变异,例如,44个物种中的保守区域,预测的转录因子结合位点, segmental duplication regions, GWAS hits, ChIP-Seq peaks, RNA-Seq peaks等等许多其他的在基因组区间的注释;

  3. 变异数据库的注释 / 基于过滤的注释( filter-based annotation )
    则给出这个variant的一系列信息,如: population frequency in different populations 和various types of variant-deleteriousness prediction scores, 这些可被用来过滤掉一些公共的及 probably(大概,肯定的成分较大,是most likely) nondeleterious variants. 包括Clinvar, dbSNP, Cosmic, ExAC, gnomAD等等,突变数据库整理可参考从 vcf 文件准备 ANNOVAR 数据库。鉴定特定数据库中记录的变异,例如,该变异位点是否在dbSNP中有报道,在千人基因组计划中的等位基因频率如何等等。

ANNOVAR 数据库文件实际上为特定格式的文本文件,其数据库文件命名规则为: ${path_database}/${buildver}_${database_name}.txt

ANNOVAR 所有注释结果都在 vcf 文件 INFO 列添加key-value

二、ANNOVAR的下载

下载地址

填写登记表,下载ANNOVAR软件(http://annovar.openbio informatics.org/),解压文件

tar xvfz annovar.latest.tar.gz

解压后生成annovar文件夹,里面有6个perl脚本程序和2个文件夹。

### ANNOVAR 的文件结构
|-- annotate_variation.pl              # 主程序,功能包括下载数据库,三种不同的注释
|-- coding_change.pl                   # 可用来推断蛋白质序列
|-- convert2annovar.pl                 # 将多种格式转为.avinput的程序
|-- retrieve_seq_from_fasta.pl         # 用于自行建立其他物种的转录本
|-- table_annovar.pl                   # 注释程序,可一次性完成三种类型的注释
|-- variants_reduction.pl              # 可用来更灵活地定制过滤注释流程
|-- example                            # 存放示例文件
|-- humandb                            # 人类注释数据库

自带了humandb是已经建立好的hg19或者GRCh37等常用的数据库,可用于人的注释。 如果要进行其他注释,需要使用 -downdb命令下载数据库到 humandb/ 目录。

三、注释

perl retrieve_seq_from_fasta.pl 
  --format refGene 
  --seqfile zunla.fasta  zunla_refGene.txt 
  --out zunla_refGeneMrna.fa

1. 用ANNOVAR注释人类基因组variants信息

1.1 下载所有需要的注释信息库

对于基于基因的注释的数据库已经在下好的 ANNOVAR package中了。如果要进行其他注释,需要按以下命令下载数据库到 ‘humandb/’ 目录里:

perl annotate_variation.pl --downdb --buildver hg19 cytoBand humandb/
perl annotate_variation.pl --downdb --webfrom annovar --buildver hg19 1000g2014oct humandb/
perl annotate_variation.pl --downdb --webfrom annovar --buildver hg19 exac03 humandb/
perl annotate_variation.pl --downdb --webfrom annovar --buildver hg19 ljb26_all humandb/
perl annotate_variation.pl --downdb --webfrom annovar --buildver hg19 clinvar_20140929 humandb/
perl annotate_variation.pl --downdb --webfrom annovar --buildver hg19 snp138 humandb/

# -buildver: 基因组对应版本
# -webfrom annovar: 从annovar库里下载;如果annovar库中没有,则不用写该选项,会从UCSC中下载
# refGene: 数据库名称
# humandb/: 下载至该目录

这里下载的是几个通常用到的数据库:
1)cytoBand 是每个细胞间band(cytogenetic band)的染色体坐标信息 ,
2)1000g2014oct
    for alternative allele frequency in the 1000 Genomes Project (version October 2014),
    是2014年10版,1000基因组项目(和ExAV 外显子集合联合一样,是公开、开放的数据库)
    里面供选择的等位基因频率信息
3)exac03
    for the variants reported in the Exome Aggregation Consortium (version 0.3),
    是0.3版外显子集合联合中报道过的variants.
4)ljb26_all
    for various functional deleteriousness prediction scores from the dbNSFP database (version 2.6),
     dbNSFP: A Lightweight Database of Human NonsynonymousSNPs and TheirFunctionalPredictions on ResearchGate
5)clinvar_20140929
    for the variants reported in the ClinVar database (version 20140929)
    ClinVar是美国国家生物技术信息中心(NCBI)于2012年11月宣布、2013年4月正式启动的公共、免费数据库。作为核心数据库,ClinVar数据库整合了十多个不同类型数据库、通过标准的命名法来描述疾病,同时支持科研人员将数据下载到本地中,开展更为个性化的研究。在遗传变异和临床表型方面,NCBI和不同的研究组已经建立了各种各样的数据库,数据信息相对比较分散,ClinVar数据库的目的在于整合这些分散的数据、将变异、临床表型、实证数据以及功能注解与分析等四个方面的信息,通过专家评审,逐步形成一个标准的、可信的、稳定的遗传变异-临床表型相关的数据库。
6)snp138
    for the dbSNP database (version 138).

注意:
  (i) 第一个命令中不包含 --webfrom annovar 选项, 因此是从the UCSC Genome Browser annotation database下载文件的;
  (ii) --buildver hg19 选项是针对hg19这一版的基因组的;
  (iii) 运行上面命令后,在 humandb/ 目录下会多几个以 hg19为前缀的文件。

1.2 table_annovar.pl注释variants

输入下列命令,用之前下载好的注释数据库来注释vcf格式文件中的variants。ANNOVAR 所有注释结果都在 vcf 文件 INFO 列添加key-value。输出的csv文件将包含输入的5列主要信息以及各个数据库里的注释。

perl table_annovar.pl <variant.vcf> humandb/ --outfile final --buildver hg19 
  --protocol refGene,cytoBand,1000g2014oct_eur,1000g2014oct_afr,exac03,ljb26_all,clinvar_20140929,snp138 
  --operation g,r,f,f,f,f,f,f 
  --vcfinput

<variant.vcf> 参考输入的vcf文件的名称
  --protocol 选项后跟注释来源数据库的准确名称
  --operation选项后跟注释的类型:
    g 表示基于基因的注释(gene-based annotation);
    r 表示基于区域的注释(region-based annotation);
    f 表示基于筛选子的注释( filter-based annotation);
  --outfile 选项是指定输出文件的前缀

关键步骤:
  1、确保注释数据库的名称正确并且是按你想要在输出文件中显示的顺序排列的;
  2、确保 --operation指定的注释类型顺序和--protocol指定的数据库顺序是一致的;
  3、确保每个protocal名称或注释类型之间只有一个逗号,并且没有空白。

  • final.hg19_multianno.vcf.输出文件应该是以个VCF格式文件,INFO那列以 key=value 形式、 ;分割成几个小区域. eg:Func.refGene=intronic;Gene.refGene=SAMD11. 每个键值对代表一个ANNOVAR注释信息。输出文件可以用为VCF格式文件设计的基因分析软件进一步处理。

  • final.hg19_multianno.txt. 每一行代表一个variant 。用tab分隔,多余列为加上的注释信息,顺序按 --protocol选项所设定的注释类型argument。

2. 用Annovar注释人类以外的基因组(Gene-based annotation)

Annovar常被用在人类基因组的注释上,其实,它也可以对人类以外的基因组数据进行注释。annovar一般只包含人类基因组注释数据库,其他的物种需要自己进行建立注释信息。

2.1 以注释小鼠基因组为例

一般如果你想看是否有某种物种,如小鼠mm9的注释库时,命令行运行

perl annotate_variation.pl -builder mm9 -downdb avdblist -webfrom annovar ./

会生成一个mm9开头的文件,里面包含小鼠mm9有多少注释数据库,然后自己可以构建一个mousedb数据库 先在annovar文件夹里面创建mousedb文件夹(名字可自取),命令mkdir mousedb 然后使用annovar文件夹下的perl程序annotate_variation.pl

perl annotate_variation.pl -downdb -buildver mm9 -webfrom annovar refGene mousedb/

这个命令能实现的是帮忙下载mm9的refGene的文件,保存在mousedb文件下,自动解压后文件名为mm9_refGene.txt。 然后程序会提示使用以下两个命令继续建库

annotate_variation.pl --buildver mm9 --downdb seq mousedb/mm9_seq
retrieve_seq_from_fasta.pl mousedb/mm9_refGene.txt -seqdir mousedb/mm9_seq -format refGene -outfile mousedb/mm9_refGeneMrna.fa

同样在annovar文件下运行这两个perl程序

perl annotate_variation.pl --buildver mm9 --downdb seq mousedb/mm9_seq

通过这个命令,会在mousedb下创建文件夹mm9_seq,并且在里面下载mm9的基因组文件chromFa.tar.gz,perl程序帮忙解压后是按染色体分开的fasta格式文件。 然后继续运行perl程序

perl retrieve_seq_from_fasta.pl mousedb/mm9_refGene.txt -seqdir mousedb/mm9_seq -format refGene -outfile mousedb/mm9_refGeneMrna.fa

该程序会会在mousedb下创建mm9_refGeneMrna.fa文件,是根据mm9_refGene.txt的信息,重新构建成的老鼠转录表达基因fasta格式文件 这样老鼠mm9 annovar gene based注释库就弄好了 以文本文件test.input为案例进行测试 生成test.input的txt格式文件,根据annovar官网介绍,只要这最基本的五列信息就可以进行注释,五列分别染色体名称,染色体上的位置,染色体上的位置,参考基因组碱基,变异碱基。

1       19215217        19215217        T       C
1       33803084        33803084        A       G
1       33803198        33803198        A       G
1       37499237        37499237        T       C
1       37499238        37499238        T       C
1       37500003        37500003        T       C
1       43826936        43826936        T       C
1       58853960        58853960        A       G
1       58854487        58854487        A       G
1       60436865        60436865        T       C

然后使用perl程序进行gene based的注释

perl annotate_variation.pl -out test -build mm9 test.input mousedb

注释后会生成test.variant_function,test.exonic_variant_function和test.log文件,前两个即为所需要的文件。用这个例子输出test.exonic_variant_function文件输出为空文件,因为这些位点没有在exonic区域的,所以没有结果。如果有位点在exonic中,则在test.exonic_variant_function中会更具体的描述为同义突变还是非同义突变

intronic        Tfap2b  1       19215217        19215217        T       C
UTR3            Bag2    1       33803084        33803084        A       G
UTR3            Bag2    1       33803198        33803198        A       G
UTR3            Mgat4a  1       37499237        37499237        T       C
UTR3            Mgat4a  1       37499238        37499238        T       C
UTR3            Mgat4a  1       37500003        37500003        T       C
intronic        Uxs1    1       43826936        43826936        T       C
intronic        Casp8   1       58853960        58853960        A       G
intronic        Casp8   1       58854487        58854487        A       G
intronic        Cyp20a1 1       60436865        60436865        T       C

2.2 以注释大猩猩基因组(with the genome build identifier as panTro2.)为例。

对于gene-based annotation, ANNOVAR需要 genePred format 的 gene definition file和 FASTA format 的 transcript sequence file;

第一步:输入以下命令,下载大猩猩基因组定义文件( gene definition file)及序列的 FASTA 文件到chimpdb/目录

perl annotate_variation.pl --downdb --buildver panTro2 gene chimpdb/
perl annotate_variation.pl --downdb --buildver panTro2 seq chimpdb/panTro2_seq

运行过程中,出现下列提示

---------------------------ADDITIONAL PROCEDURE---------------------------
--------------------------------------------------------------------------
NOTICE: the FASTA file for the genome is not available to download but can be generated by the ANNOVAR software.
PLEASE RUN THE FOLLOWING TWO COMMANDS CONSECUTIVELY TO GENERATE THE FASTA FILES (you may need to change -seqdir to -seqfile for some genomes):

    annotate_variation.pl --buildver panTro2 --downdb seq chimpdb/panTro2_seq
    retrieve_seq_from_fasta.pl chimpdb/panTro2_refGene.txt -seqdir chimpdb/panTro2_seq -format refGene -outfile chimpdb/panTro2_refGeneMrna.fa

第二步:注意ANNOVAR数据库中只包含人类基因组已建好的转录本,不包含其他物种的。故需要按以下命令自行建立对应物种的transcript FASTA file

perl retrieve_seq_from_fasta.pl chimpdb/panTro2_refGene.txt 
  --seqdir chimpdb/panTro2_seq 
  --format refGene 
  --outfile chimpdb/panTro2_refGeneMrna.fa

--seqdir说明下载的序列文件的所在目录;
--format说明 gene definition file的格式.;
--outfile 指定输出mRNA 序列文件的名称;

关键:跟在--outfile后的输出文件名应该是 <buildver>_refGeneMrna.fa这种形式,否则下一步找不到正确的 transcript FASTA sequence file.

第三步:注释variants,with the chimpanzee gene annotation:

perl table_annovar.pl <variant.vcf> chimpdb/ 
  --vcfinput 
  --outfile final 
  --buildver panTro2 
  --protocol refGene 
  --operation g

<variant.vcf> input VCF file;
chimpdb/ directory of the downloaded data;

第四步:输出结果文件核对。 final.panTro2_multianno.txt file. The gene annotation for chimpanzee is added after the input variants.

关键:如果没有现成可用的gene definition file ,可以将基因预测工具产生的 GFF3 or GTF 文件转换成 gene definition file.

三、构建自定义注释库

ANNOVAR可以从服务器下载注释库,但是主要针对人类基因组,那么需要分析、注释其它的物种测序结果,怎么办呢,需要自建注释库。

1 以注释辣椒基因组为例

第一步:准备工作
首先,需要参考基因组的序列和注释文件,这里是名为zunla辣椒

zunla.fasta      # zunla 的参考基因组序列
zunla.gff3       # zunla 的注释文件,我这里是gff3

ANNOVAR 建库需要 genePred 文件,因而需要准备几个转换 gff3 到 genePred 格式的软件

gffread           # gff3 to gtf
gtfToGenePred     # gtf to genePred

gffread的下载地址,需要自行编译。编译过程会自行下载https://github.com/gpertea/gclib,也可以预先下载,然后make。

git clone https://github.com/gpertea/gffread
cd gffread
make release

推荐直接conda安装

conda install gffread

gtfToGenePred的下载地址,已经编译好了,下载直接使用,他属于UCSC工具包,因而在conda环境安装gtfToGenePred的命令为

conda install ucsc-gtftogenepred

conda直接安装gtftogenepred没成功,需要加上UCSC前缀。

第二步:建立注释库

创建辣椒注释库的文件夹pepperdb,然后进去

mkdir pepperdb
cd pepperdb

转换gff3 为 gtf,推荐使用GTF格式,因为有些GFF3格式文件转换可能不正确

gffread zunla.gff -T -o zunla.gtf

转换gtf 为 GenePred

gtfToGenePred -genePredExt zunla.gtf zunla.txt

建立注释库

perl retrieve_seq_from_fasta.pl 
  --format refGene 
  --seqfile zunla.fasta  zunla_refGene.txt 
  --out zunla_refGeneMrna.fa

这样我们的建库就完成了,获得两个重要的文件

zunla_refGeneMrna.fa
zunla_refGene.txt

强调:关于文件的命名,按照常规逻辑,这两个文件肯定不能随便命名,不然annovar无法识别!摸索了一下,前缀就是下面build参数使用的名字,这里就是zunla,下面注释就要使用“-build zunla”这个参数,对于基于基因注释的txt文件命名就是refGene,连起来就是 zunla_refGene.txt。而fa文件前缀一样,后面有稍稍差别为refGeneMrna,连起来就是zunla_refGeneMrna.fa。

第三步:转换需要注释的vcf文件

BB3.HC.vcf是HaplotypeCaller得到的vcf文件,转换成适用annovar的文件格式。得到的BB3.avinput就是我们需要注释的文件

perl convert2annovar.pl -format vcf4 BB3.HC.vcf > BB3.avinput

ANNOVAR主要使用convert2annovar.pl程序进行转换,转换后文件是精简过的,主要包含前面提到的5列内容,如果要将原格式的文件的所有内容都包含在转换后的.avinput文件中,可以使用-includeinfo参数;如果需要分开每个sample输出单一的.avinput文件,可以使用-allsample参数,等等。

ANNOVAR还主要支持以下格式转换:

  • SAMtools pileup format
  • Complete Genomics format
  • GFF3-SOLiD calling format
  • SOAPsnp calling format
  • MAQ calling format
  • CASAVA calling format

第四步:annotate_variation注释

perl annotate_variation.pl 
  -geneanno               # 表示使用基于基因的注释
  -dbtype refGene         # 表示使用"refGene"类型的数据库
  -out BB3                # 表示输出以BB3为前缀的结果文件
  -build zunla 
  BB3.avinput 
  pepperdb/

-geneanno -dbtype refGene是默认值,可以省略,那么命令也可以写成

perl annotate_variation.pl 
  -out BB3 
  -build zunla 
  BB3.avinput 
  pepperdb/

得到结果文件:

BB3.exonic_variant_function     # 外显子区域突变的功能、类型等
BB3.variant_function            # 突变的基因及位置
BB3.log                         # 日志文件

第五步:table_annovar.pl注释

table_annovar.pl是ANNOVAR多个脚本的封装,可以一次性完成三种类型的注释。

我这里只有regGene类型的注释库,那么注释命令为

perl table_annovar.pl  
  BB3.avinput pepperdb/  
  -buildver zunla               # 使用zunla注释库
  -out BB3 
  -remove                       # 清除所有临时文件
  -protocol refGene             # 注释库类型为refgene
  -operation g                  # 操作子为g
  -nastring .                   # 缺省值用“.”代替
  -csvout                       # 输出csv文件
image.png

table_annovar.pl也可以不经过转换,直接对vcf文件进行注释,添加-vcfinput参数就行,注释的内容将会放在vcf文件的“INFO”那一栏。但是需要注意的是不能和-csvout参数同时使用,命令如下

perl table_annovar.pl 
  BB3.HC.vcf 
  pepperdb/  
  -buildver zunla 
  -out BB3 
  -protocol refGene 
  -operation g 
  -nastring .  
  -vcfinput 
  -polish

所以,两种输入格式

  • VCF文件:用 -vcfinput指定
  • avinput
    每行代表一个位点
    前5列依次为:chromosome, start position, end position, the reference nucleotides, the observed nucleotides
    reference nucleotides:不知道时可设置为0
    observed nucleotides: insertion,deletion,block subsititution可用-表示
    其余列:可有可无,如果有,在输出文件中会原样输出。
more BB3.avinput
1       948921  948921  T       C       comments: rs15842, a SNP in 5' UTR of ISG15
1       13211293        13211294        TC      -       comments: rs59770105, a 2-bp deletion
1       11403596        11403596        -       AT      comments: rs35561142, a 2-bp insertion
1       105492231       105492231       A       ATAAA   comments: rs10552169, a block substitution
1       67705958        67705958        G       A       comments: rs11209026 (R381Q), a SNP in IL23R associated 

cat example/ex1.avinput
1   948921  948921  T   C   comments: rs15842, a SNP in 5' UTR of ISG15
1   1404001 1404001 G   T   comments: rs149123833, a SNP in 3' UTR of ATAD3C
1   5935162 5935162 A   T   comments: rs1287637, a splice site variant in NPHP4
1   162736463   162736463   C   T   comments: rs1000050, a SNP in Illumina SNP arrays
1   84875173    84875173    C   T   comments: rs6576700 or SNP_A-1780419, a SNP in Affymetrix SNP arrays
1   13211293    13211294    TC  -   comments: rs59770105, a 2-bp deletion
1   11403596    11403596    -   AT  comments: rs35561142, a 2-bp insertion
1   105492231   105492231   A   ATAAA   comments: rs10552169, a block substitution
1   67705958    67705958    G   A   comments: rs11209026 (R381Q), a SNP in IL23R associated with Crohn's disease
2   234183368   234183368   A   G   comments: rs2241880 (T300A), a SNP in the ATG16L1 associated with Crohn's disease

该格式每列以tab分割,最重要的地方为前5列,分别是:

  1. 染色体(Chromosome)
  2. 起始位置(Start)
  3. 结束位置(End)
  4. 参考等位基因(Reference Allele)
  5. 替代等位基因(Alternative Allele)
  6. 剩下为注释部分(可选)。

ANNOVAR主要也是依靠这5处信息对数据库进行比对,进而注释变异。

报错:

chmod 777 table_annovar.pl

问题依旧!

没办法,只能跑去table_annovar.pl脚本的444行看一下具体代码

1.  #generate gene anno
2.  my $sc;
3.  $sc = $SC_PREFIX .  "annotate_variation.pl -geneanno -buildver $buildver -dbtype $protocol -outfile $tempfile.$protocol -exonsort -nofirstcodondel $queryfile $dbloc";  #20191010: add -nofirstcodondel
4.  $argument and $sc .=  " $argument";
5.  $intronhgvs and $sc .=  " -splicing_threshold $intronhgvs";

7.  if  ($thread)  {
8.  $sc .=  " -thread $thread";
9.  }
10.  if  ($maxgenethread)  {
11.  $sc .=  " -maxgenethread $maxgenethread";
12.  }

14.  print STDERR "\nNOTICE: Running with system command <$sc>\n";
15.  system ($sc)  and  die  "Error running system command: <$sc>\n";

444行的内容为system ($sc) and die "Error running system command: <$sc>\n";
看得出来,这里执行了system系统命令,往上查找变量$sc的值,发现这里调用了annotate_variation.pl脚本,同样

chmod 777 annotate_variation.pl

为了避免别的脚本权限问题,干脆全部777

chmod 777 *

成功解决权限问题。

2 以构建拟南芥(Arabidopsis thaliana)的注释所需文件为例

第一步:准备
下载Arabidopsis 的 GTF file 和 genome FASTA file,到 ‘atdb’目录下。解压文件。 地址

mkdir atdb                                                                                                                                                
cd atdb         
wget ftp://ftp.ensemblgenomes.org/pub/release-27/plants/fasta/arabidopsis_thaliana/dna/Arabidopsis_thaliana.TAIR10.27.dna.genome.fa.gz                    
wget ftp://ftp.ensemblgenomes.org/pub/release-27/plants/gtf/arabidopsis_thaliana/Arabidopsis_thaliana.TAIR10.27.gtf.gz                                                                                                                                                                                                                   
gunzip Arabidopsis_thaliana.TAIR10.27.dna.genome.fa.gz             
gunzip Arabidopsis_thaliana.TAIR10.27.gtf.gz  

**第二步:
用 gtfToGenePred 工具将 GTF file 转换 GenePred file

gtfToGenePred -genePredExt Arabidopsis_thaliana.TAIR10.27.gtf AT_refGene.txt 

用retrieve_seq_from_fasta.pl生成 transcript FASTA file

perl ../retrieve_seq_from_fasta.pl --format refGene --seqfile Arabidopsis_thaliana.TAIR10.27.dna.genome.fa AT_refGene.txt AT_refGeneMrna.fa 

After this step, the annotation database files needed for gene-based annotation are ready. Now you can annotate a given VCF file using the procedure starting from B(iii). Please note that the ‘--buildver’ argument should be set to ‘AT’.
参考http://annovar.openbioinformatics.org/en/latest/user-guide/gene/ for more details.bases and other arguments are the same as in the human genome annotation.

总脚本如下

下载物种基因序列、注释文件
wget -c ftp://ftp.ensemblgenomes.org/pub/release-27/plants/fasta/arabidopsis_thaliana/dna/Arabidopsis_thaliana.TAIR10.27.dna.genome.fa.gz
wget -c ftp://ftp.ensemblgenomes.org/pub/release-27/plants/gtf/arabidopsis_thaliana/Arabidopsis_thaliana.TAIR10.27.gtf.gz
gzip -d Arabidopsis_thaliana.TAIR10.27.dna.genome.fa.gz
gzip -d Arabidopsis_thaliana.TAIR10.27.gtf.gz

#gtf文件格式转换
wget -c http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/gtfToGenePred
gtfToGenePred -genePredExt Arabidopsis_thaliana.TAIR10.27.gtf AT_refGene.txt
 
# 另一种格式转换方法,https://github.com/chengcz/pyGTF

# 使用软件包提供脚本build物种数据库,数据库buildver为AT,名称为refGene
perl retrieve_seq_from_fasta.pl --format refGene --seqfile Arabidopsis_thaliana.TAIR10.27.dna.genome.fa AT_refGene.txt --out AT_refGeneMrna.fa

五、批量注释

/home/jmzeng/bio-soft/annovar/convert2annovar.pl -format vcf4  Sample3.varscan.snp.vcf > Sample3.annovar
/home/jmzeng/bio-soft/annovar/convert2annovar.pl -format vcf4  Sample4.varscan.snp.vcf > Sample4.annovar
/home/jmzeng/bio-soft/annovar/convert2annovar.pl -format vcf4  Sample5.varscan.snp.vcf > Sample5.annovar

然后用下面这个脚本批量注释

Reading gene annotation from /home/jmzeng/bio-soft/annovar/humandb/hg19_refGene.txt ... Done with 50914 transcripts (including 11516 without coding sequence annotation) for 26271 unique genes

最后查看结果可知,真正在外显子上面的突变并不多

23515 Sample3.anno.exonic_variant_function
23913 Sample4.anno.exonic_variant_function
24009 Sample5.anno.exonic_variant_function

annovar软件就是把我们得到的十万多个snp分类了,看看这些snp分别是基因的哪些位置,是否引起蛋白突变

downstream
exonic
exonic;splicing
intergenic
intronic
ncRNA_exonic
ncRNA_intronic
ncRNA_splicing
ncRNA_UTR3
ncRNA_UTR5
splicing
upstream
upstream;downstream
UTR3
UTR5
UTR5;UTR3

六、一步到位:table_annovar.pl 可以同时进行3种注释

perl table_annovar.pl example/ex1.avinput humandb/ -buildver hg19 -out myanno -remove -protocol refGene,cytoBand,exac03,avsnp147,dbnsfp30a -operation gx,r,f,f,f -nastring . -csvout -polish -xref example/gene_xref.txt
#-remove: remove all temporary files
#-operation:g,gene-based; gx,gene-based with cross-reference annotation (from -xref argument);r, region-based; f,filter-based.
#-nastring:没有对应注释,则输出`.`
#-csvout:结果用,分隔;去掉则采用默认,用Tab分隔
#-xref: whether a known genetic disease is caused by defects in this gene (this information was suffplied in the  example/gene_xref.txt file in the command line) 这一项没有也OK

其中(每种数据库对应的类型参考官网)
g,gene-based,对应数据库为refGene,ensGene等
r,region-based,对应数据库为cytoBand等
f,filter-based,对应数据库为exac03,avsnp147,dbnsfp30a等

  • 3种注释分开进行:annotate_variation.pl

1 gene-based

perl annotate_variation.pl -geneanno -dbtype refGene -buildver hg19 example/ex1.avinput humandb/  

结果文件在example/中,ex1.avinput.variant_functionex1.avinput.exonic_variant_function
(1)ex1.avinput.variant_function

[root@localhost example]# head ex1.avinput.variant_function
UTR5    ISG15(NM_005101:c.-33T>C)       1       948921  948921  T       C       comments: rs15842, a SNP in 5' UTR of ISG15
UTR3    ATAD3C(NM_001039211:c.*91G>T)   1       1404001 1404001 G       T       comments: rs149123833, a SNP in 3' UTR of ATAD3C

第1列:variant effects,将变异分类,如intergenic, intronic, non-synonymous SNP, frameshift deletion, large-scale duplication等
第2列:基因名,Symbol,括号中为NM_22222,为refGene编号
其余列:输入文件ex1.avinput的内容

(2)ex1.avinput.exonic_variant_function

[root@localhost example]# head  ex1.avinput.exonic_variant_function
line9   nonsynonymous SNV       IL23R:NM_144701:exon9:c.G1142A:p.R381Q, 1       67705958        67705958       GA       comments: rs11209026 (R381Q), a SNP in IL23R associated with Crohn's disease
line10  nonsynonymous SNV       ATG16L1:NM_017974:exon8:c.A841G:p.T281A,ATG16L1:NM_001190267:exon9:c.A550G:p.T184A,ATG16L1:NM_030803:exon9:c.A898G:p.T300A,ATG16L1:NM_001190266:exon9:c.A646G:p.T216A,ATG16L1:NM_198890:exon5:c.A409G:p.T137A,  2       234183368       234183368       A       G       comments: rs2241880 (T300A), a SNP in the ATG16L1 associated with Crohn's disease
line11  nonsynonymous SNV       NOD2:NM_022162:exon4:c.C2104T:p.R702W,NOD2:NM_001293557:exon3:c.C2023T:p.R675W,16       50745926        50745926        C       T       comments: rs2066844 (R702W), a non-synonymous SNP in NOD2

第1列:该变异在input文件的行号
第2列:对编码基因的影响,frameshift,nonsynonymous等
第3列:被影响的基因或转录本,其中NM_22222,为refGene编号
其余列:同输入文件

用awk操作时,分隔符设定为\t;不设置时,空格也被当做分隔符,会造成错位

[root@localhost example]# head  ex1.avinput.exonic_variant_function|awk -F '\t' '{print $2}'
nonsynonymous SNV
nonsynonymous SNV
nonsynonymous SNV
nonsynonymous SNV
frameshift insertion
frameshift deletion
frameshift deletion
stoploss
stopgain
frameshift substitution

[root@localhost example]# head  ex1.avinput.exonic_variant_function|awk '{print $2}'
nonsynonymous
nonsynonymous
nonsynonymous
nonsynonymous
frameshift
frameshift
frameshift
stoploss
stopgain
frameshift

2 region-based

perl annotate_variation.pl -regionanno -dbtype cytoBand -buildver hg19 example/ex1.avinput humandb/ 

鉴定各变异的cytogenetic band,如1p36.33
结果文件在example中,ex1.avinput.hg19_cytoBand

[root@localhost example]# more ex1.avinput.hg19_cytoBand
cytoBand        1p36.33 1       948921  948921  T       C       comments: rs15842, a SNP in 5' UTR of ISG15
cytoBand        1p36.33 1       1404001 1404001 G       T       comments: rs149123833, a SNP in 3' UTR of ATAD3C
cytoBand        1p36.31 1       5935162 5935162 A       T       comments: rs1287637, a splice site variant in NP
HP4
cytoBand        1q23.3  1       162736463       162736463       C       T       comments: rs1000050, a SNP in Il
lumina SNP arrays

第1列:cytoBand
第2列:1p21.1
其余列:同输入文件

3 ilter

perl annotate_variation.pl -filter -dbtype exac03 -buildver hg19 example/ex1.avinput humandb/

结果文件在example/中,ex1.avinput.hg19_exac03_filtered(exac03中没有报道的位点)和ex1.avinput.hg19_exac03_dropped(exac03中报道的位点,包含其等位基因频率)

https://www.jianshu.com/p/84c818207240
https://www.plob.org/article/9976.html

snpEff
https://www.bioinfo-scrounger.com/archives/268/

重要
http://www.bio-info-trainee.com/2028.html
https://www.jianshu.com/p/cea3b179b8a9

ANNOVAR注释变异VCF结果说明
https://www.omicsclass.com/article/464
https://www.omicsclass.com/article/804
http://blog.sina.com.cn/s/blog_71df25810102ybtt.html

Hui Y, Kai W. Genomic variant annotation and prioritization with ANNOVAR and wANNOVAR[J]. Nature Protocols, 2015, 10(10).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345