GFF格式说明

gff格式是Sanger研究所定义,是一种简单的、方便的对于DNA、RNA以及蛋白质序列的特征进行描述的一种数据格式,比如序列的那里到那里是基因,已经成为序列注释的通用格式,比如基因组的基因预测,许多软件都支持输入或者输出gff格式。目前格式定义的最新版本是版本3。原始定义见SONG website
gff是存文本文件,由tab键隔开的9列组成,以下是各列的说明:
Column 1: “seqid”
序列的编号,编号的有效字符[a-zA-Z0-9.:^*$@!+_?-|]
Column 2: “source”
注释信息的来源,比如”Genescan”、”Genbank” 等,可以为空,为空用”.”点号代替
Column 3: “type”
注释信息的类型,比如Gene、cDNA、mRNA等,或者是SO对应的编号
Columns 4 & 5: “start” and “end”
开始与结束的位置,注意计数是从1开始的。结束位置不能大于序列的长度
Column 6: “score”
得分,数字,是注释信息可能性的说明,可以是序列相似性比对时的E-values值或者基因预测是的P-values值。”.”表示为空。
Column 7: “strand”
序列的方向, +表示正义链, -反义链 , ? 表示未知.
Column 8: “phase”
仅对注释类型为 “CDS”有效,表示起始编码的位置,有效值为0、1、2。
Column 9: “attributes”
以多个键值对组成的注释信息描述,键与值之间用”=“,不同的键值用”;“隔开,一个键可以有多个值,不同值用”,“分割。注意如果描述中包括tab键以及”,=;”,要用URL转义规则进行转义,如tab键用 %09代替。键是区分大小写的,以大写字母开头的键是预先定义好的,在后面可能被其他注释信息所调用。

预先定义的键包括:

  • ID 注释信息的编号,在一个GFF文件中必须唯一;
  • Name 注释信息的名称,可以重复;
  • Alias 别名
  • Parent Indicates 该注释所属的注释,值为注释信息的编号,比如外显子所属的转录组编号,转录组所属的基因的编号。值可以为多个。
  • Target Indicates: the target of a nucleotide-to-nucleotide or protein-to-nucleotide alignment.
  • Gap:The alignment of the feature to the target if the two are not collinear (e.g. contain gaps).
  • Derives_from:Used to disambiguate the relationship between one feature and another when the relationship is a temporal one rather than a purely structural “part of” one. This is needed for polycistronic genes.
  • Note 备注
  • Dbxref 数据库索引
  • Ontology_term: A cross reference to an ontology term.

例子:

蛋白质编码基因的gff格式注释

蛋白质编码基因的gff格式注释

##gff-version 3
##sequence-region ctg123 1 1497228
ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001
ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001 ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001 ctg123 . exon 1300 1500 . + . Parent=mRNA00003
ctg123 . exon 1050 1500 . + . Parent=mRNA00001,mRNA00002
ctg123 . exon 3000 3902 . + . Parent=mRNA00001,mRNA00003
ctg123 . exon 5000 5500 . + . Parent=mRNA00001,mRNA00002,mRNA00003
ctg123 . exon 7000 9000 . + . Parent=mRNA00001,mRNA00002,mRNA00003
ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001
ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001
ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001
ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001
ctg123 . CDS 1201 1500 . + 0 ID=cds00002;Parent=mRNA00002
ctg123 . CDS 5000 5500 . + 0 ID=cds00002;Parent=mRNA00002
ctg123 . CDS 7000 7600 . + 0 ID=cds00002;Parent=mRNA00002
ctg123 . CDS 3301 3902 . + 0 ID=cds00003;Parent=mRNA00003
ctg123 . CDS 5000 5500 . + 2 ID=cds00003;Parent=mRNA00003
ctg123 . CDS 7000 7600 . + 2 ID=cds00003;Parent=mRNA00003
ctg123 . CDS 3391 3902 . + 0 ID=cds00004;Parent=mRNA00003
ctg123 . CDS 5000 5500 . + 2 ID=cds00004;Parent=mRNA00003
ctg123 . CDS 7000 7600 . + 2 ID=cds00004;Parent=mRNA00003

GFF格式说明》上有10条评论

  1. 博主,你做GO注释的时候,是怎么做的?怎么可以把一系列只有基因名和登陆号的基因快速地做出饼图来?
    你用过Blast2GO吗?

  2. 以前做过这样一些分析工作,是利用GO对得到的基因进行分类,统计每类的数目,做出图,是完全手工用Excel做的,当时的基因数目不是很多,至于现在又什么更好的工具,就不太清楚了,也没用过Blast2GO。

    • gff是基因组注释的一种格式,所以许多处理基因组数据的软件包都有这些格式,比如基因预测的。另外就是涉及格式转换的,比如Genbank转换为GFF格式,可以使用bioperl中gff部分的转换脚本;gff格式比较简单,也可以自己写脚本转换,或者用excel编辑生成,需要根据具体情况而定。

      • 请教一下:
        gff3的第八列是怎么求的,指定值是在0到2之间,但是我下载的注释文件CDS那一行却用点来表示,请问一下该怎么求呢
        谢谢了

        • 请问,求这个做什么用途,这个需要根据位置来判断,你知道每3个核苷酸翻译一个氨基酸,从0开始,CDS的起始位置,除以3,余数就是这个值,用途不大,所以很多注释就省略了这个信息。

  3. 自己写脚本构建gff文件, 然后通过bp_load_gff.pl导入构建建立GFF数据库, 遇到的问题与挫折总结如下:
    1、GFF3格式, 文件的首行必须加 ##gff-version 3, 否则会造成属性(也就是第9列)键值解析问题;
    2、还是属性列, 键值之间用分号分隔, 但是注意分号后不用加空格, 否则就会是随后的键的名称前有空格

    留此为鉴.

  4. 来源于NCBI的GFF文件, 头注释内容为
    ##gff-version 3
    #!gff-spec-version 1.14
    #!source-version NCBI C++ formatter 0.2
    ##Type
    其数据格式不符合GFF3标准格式. 做这类数据处理时, 应该下载genbank格式的文件, 然后通过bioperl提供的脚本进行转换.

  5. GBrowse作图,又遇到GFF格式问题,重新阅读原定义文件,对属性列做如下总结:
    1、特殊符号的URL转义,转义的符号包括逗号、分号、等号、tab;
    2、键值中,键是区分大小写的,比如ID,Name等;
    3、Parent,Alias,Note,DBxref,Ontology_term可以有多个值,值之间用逗号分隔;

    注意:
    不同软件对于没有在规定中的键的使用的不同的处理
    最后一个键值后是否使用分号,处理的不同
    GFF3是基于feature的定义,每行定义一个feature,feature之间可以有层级联系,注释是注意给feature使用Name、Alias给feature添加名称

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请启用Javascript,以完成验证!