跳到内容

最新提交

 

历史

历史
870行(750个位置)·59.1 KB

gff3.md公司

文件元数据和控件

870行(750个位置)·59.1 KB

通用要素格式版本3(GFF3)

总结

作者:Lincoln Stein
日期:2020年8月18日
版本:1.26

尽管有许多更丰富的方法可以通过XML和关系数据库模式来表示基因组特征,但各种特殊的tab分隔的平面文件格式的顽固存在表明生物信息学社区需要一种简单的格式,这种格式可以用文本编辑器修改,也可以用grep等shell工具进行处理。GFF格式虽然被广泛使用,但已经分裂成多种不兼容的方言。当被问及为什么要修改已发布的Sanger规范时,生物信息学家经常回答说,该格式不足以满足他们的需求,他们需要对其进行扩展。建议的GFF3格式解决了GFF最常见的扩展,同时保留了与以前格式的向后兼容性。新格式:

  1. 添加一种机制,用于表示功能和子功能的多个层次分组级别。
  2. 分离组成员身份和功能名称/id的概念。
  3. 约束要从受控词汇表中获取的要素类型字段。
  4. 允许单个特征(如外显子)一次属于多个组。
  5. 提供成对对齐的显式约定。
  6. 为占用分离区域的要素提供显式约定。

GFF3验证器

GFF3验证工具位于模块代码DCC

格式说明

GFF3文件是九列、制表符分隔的纯文本文件。制表符、换行符、回车符、百分号(%)和控制字符的文字用法必须使用RFC 3986%编码; 不能对其他字符进行编码。不允许使用添加到GFF格式中的反斜杠和其他特殊转义约定。文件内容可以包括操作环境支持的集合中的任何字符,但为了便于与其他系统移植,建议使用UTF-8。

  • 选项卡(%09)
  • 换行(%0A)
  • 回车符(%0D)
  • %百分比(%25)
  • 控制字符(%00到%1F,%7F)

此外,以下字符在第9列中具有保留意义,在其他上下文中使用时必须转义:

  • ; 分号(%3B)
  • =等于(%3D)
  • &与号(%26)
  • ,逗号(%2C)

请注意,字段中允许使用未转义的空格,这意味着解析器必须在制表符上拆分,而不是在空格上拆分。在规范的早期版本中,不推荐使用“+”(加号)字符对空格进行编码,也不再允许使用。

未定义的字段被替换为“.”字符,如原始GFF规范中所述。

第1列:“seqid”
用于为当前要素建立坐标系的地标的ID。ID可以包含任何字符,但必须转义集合[a-zA-Z0-9.:^*$@!+_?-|]中不包含的任何字符。特别是,ID不能包含未转义的空格,并且不能以未转义“>”开头。
第2列:“来源”
源代码是一个自由文本限定符,用于描述生成此功能的算法或操作过程。通常,这是一个软件的名称,如“Genescan”或数据库名称,如“Genbank”。实际上,源代码用于通过向类型添加限定符来扩展功能本体,从而创建一个新的复合类型,该复合类型是类型列中类型的子类。
第3列:“类型”
功能的类型(以前称为“方法”)。这被限制为序列本体中的一个术语或SO登录号。后者使用语法SO:0000000进行区分。无论哪种情况,它都必须是sequence_feature(SO:0000110)或它的is_a子级。
第4列和第5列:“开始”和“结束”

特征的开始和结束坐标以基于1的正整数坐标给出,相对于第1列中给出的地标。开始始终小于或等于结束。对于跨越圆形特征原点的特征(例如大多数细菌基因组、质粒和一些病毒基因组),通过使end=末端位置+标志性特征的长度来满足起点小于或等于终点的要求。

对于零长度特征,例如插入点,起点等于终点,暗示的点位于地标方向上指示基础的右侧。

第6列:“分数”
功能的分数,一个浮点数。与该格式的早期版本一样,分数的语义是未定义的。强烈建议将E值用于序列相似性特征,并将P值用于从头算基因预测特征。
第7列:“股线”
功能链。+对于正链(相对于地标),-对于负链,和。用于未搁置的功能。此外?可用于与搁浅相关但未知的特征。
第8栏:“阶段”

对于“CDS”类型的特征,相位指示下一个密码子相对于当前CDS特征的5'端开始的位置(其中CDS的5'末端相对于CDS特征链)。为了澄清起见,正链上CDS功能的5'端是功能的开始,而负链上的CDS功能5'端则是功能的结束。相位是整数0、1或2中的一个,表示从当前CDS特征开始到下一个密码子开始的前向碱基数。相位“0”表示密码子开始于CDS特征的第一个核苷酸(即0个碱基向前),相位“1”表示密码元开始于此CDS特征中的第二个核苷酸,相位“2”表示密码符开始于此区域的第三个核苷酸。请注意,GFF3 CDS特征上下文中的“阶段”不应与框架的类似概念混淆,框架也是生物信息学中的一个常见概念。帧通常被计算为相对于完整开放阅读帧(ORF)或密码子(例如模3)开始的给定碱基的值,而CDS阶段描述了相对于给定CDS特征的下一个密码子的开始。

所有CDS功能都需要该阶段。

第9列:“属性”

格式标记=值中的要素属性列表。多个标记=值对由分号分隔。URL转义规则用于包含以下字符的标记或值:“,=;”。此字段中允许使用空格,但必须用%09 URL转义替换制表符。属性值不需要也不应该加引号。解析器应该将引号作为值的一部分包含在内,而不是剥离。

这些标签具有预定义的含义:

身份证件
指示功能的ID。ID属性对于具有子代的特征(例如基因和mRNA)是必需的,或者对于跨越多条线的特征是必需的,但对于其他特征是可选的。每个功能的ID在GFF文件范围内必须是唯一的。在不连续特征的情况下(即存在于多个基因组位置的单个特征),相同的ID可能出现在多个行上。所有共享一个ID的线必须共同表示一个特征。
姓名
功能的显示名称。这是要显示给用户的名称。与ID不同,没有要求名称在文件中是唯一的。
别名
功能的次名称。建议在需要特征的二级标识符时使用此标签,例如位点名称和登录号。与ID不同,不要求Alias在文件中是唯一的。
家长
指示要素的父级。亲本ID可以用于将外显子分组为转录物,将转录物分组为基因,等等。一个要素可能有多个父要素。家长可以只有用来表示关系的一部分。
目标
表示核苷酸对核苷酸或蛋白质对核苷酸比对的目标。该值的格式为“target_id start-end[strand]”,其中strand是可选的,可以是“+”或“-”。如果target_id包含空格,则必须将其转义为十六进制转义%20。
间隙
如果两者不共线(例如包含间隙),则特征与目标对齐。对齐格式的灵感来源于释放文档.
派生自(_F)
当关系是时间关系而不是纯粹的结构“一部分”时,用于消除一个特征和另一个特征之间的关系的歧义。这是多顺反子基因所必需的。有关进一步讨论,请参阅“病理病例”。
注释
自由文本注释。
数据库外部参照
数据库交叉引用。有关格式的详细信息,请参阅“本体关联和数据库交叉引用”一节。
Ontology_term(Ontology _术语)
对本体术语的交叉引用。有关详细信息,请参阅“本体关联和数据库交叉引用”一节。
是圆形(_C)
指示特征是否为圆形的标志。请参阅下面的扩展讨论。

同一类型的多个属性通过用逗号“,”字符分隔值来表示,如下所示:

父项=AF2312、AB2812、abc-3

除了父对象之外,别名、注释、Dbxref和Ontology_term属性也可以有多个值。

请注意,属性名称区分大小写。“Parent”与“Parent”不同。

所有以大写字母开头的属性都保留供以后使用。以小写字母开头的属性可以由应用程序自由使用。

典型基因

图1
图1

本节描述GFF3中蛋白质编码基因的表示。为了说明典型基因是如何表示的,请考虑图1(图1.png)。这表明一个名为EDEN的基因从位置1000延伸到位置9000。它编码三个交替剪接的转录物,分别命名为EDEN.1、EDEN.2和EDEN.3,最后一个转录物有两个交替翻译起始位点,导致产生两个蛋白质编码序列。

在EDEN.1和EDEN2的转录起始位点上游50 bp处也有一个已确定的转录因子结合位点。

以下是如何使用GFF3描述该基因:

0##gff 3.1.26版本1##序列区域ctg123 1 14972282 ctg123。基因1000 9000.+。ID=gene00001;名称=EDEN3 ctg123。TF_绑定_站点1000 1012.+。ID=tfbs00001;父级=gene000014 ctg123。mRNA 1050 9000.+。ID=mRNA00001;父级=gene00001;名称=EDEN.15 ctg123。mRNA 1050 9000.+。ID=mRNA00002;父级=gene00001;名称=EDEN.26 ctg123。mRNA 1300 9000.+。ID=mRNA00003;父级=gene00001;名称=EDEN.37 ctg123。外显子1300 1500.+。ID=外显子00001;父项=mRNA000038 ctg123。外显子1050 1500.+。ID=exon00002;父项=mRNA00001,mRNA00029 ctg123。外显子3000 3902.+。ID=exon00003;父项=mRNA00001,mRNA000310 ctg123。外显子5000 5500。ID=exon00004;父项=mRNA00001、mRNA0002、mRNA0000311 ctg123。外显子7000 9000.+。ID=exon00005;父项=mRNA00001、mRNA0002、mRNA0000312 ctg123。CDS 1201 1500.+0 ID=cds00001;父项=mRNA00001;名称=蛋白质.113 ctg123。CDS 3000 3902.+0 ID=cds00001;父项=mRNA00001;名称=蛋白质.114 ctg123。CDS 5000 5500。+0 ID=cds00001;父项=mRNA00001;名称=蛋白质.115 ctg123。CDS 7000 7600.+0 ID=cds00001;父项=mRNA00001;名称=蛋白质.116公吨123。CDS 1201 1500.+0 ID=cds00002;亲本=mRNA00002;名称=edenprotein.217 ctg123。CDS 5000 5500。+0 ID=cds00002;父项=mRNA00002;名称=edenprotein.218 ctg123。cd 7000 7600.以上0 ID=cds00002;父项=mRNA00002;名称=edenprotein.219 ctg123。CDS 3301 3902.+0 ID=cds00003;父项=mRNA00003;名称=edenprotein.320 ctg123。CDS 5000 5500。+1 ID=cds00003;父项=mRNA00003;名称=edenprotein.321 ctg123。CDS 7000 7600.+1 ID=cds00003;父项=mRNA00003;名称=edenprotein.322 ctg123。CDS 3391 3902.+0 ID=cds00004;父项=mRNA00003;名称=edenprotein.423 ctg123。CDS 5000 5500。+1 ID=cds00004;亲本=mRNA00003;名称=edenprotein.424 ctg123。cd 7000 7600.以上1 ID=cds00004;父项=mRNA00003;名称=edenprotein.4

以“##”开头的行是指令(有时称为pragmas或meta-data),提供关于文档整体的元信息。解析器应该忽略空白行,以单个“#”开头的行用于可读注释,解析器可以忽略。不允许使用行尾注释(在要素行或指令行的末尾和同一行上以#开头的注释)。

第0行使用##GFF-version杂注给出了GFF版本。第1行指示使用##序列区域杂注注释的区域的边界(一个1497228bp的区域,名为“ctg123”)。

第2行定义了基因的边界。该行的第9列为该基因分配了一个ID gene00001和一个人类可读的名称EDEN。因为基因不是更大特征的一部分,所以它没有父基因。

第3行注释转录因子结合位点。因为它在逻辑上是基因的一部分,所以它的Parent属性是gene00001。

第4-6行定义了该基因的三个剪接转录本,一行表示每个mRNA的完整范围。这些特征对于作为四个CDS的亲本以及选择性剪接集中五个外显子的结构亲本是必要的。

第7-11行识别了五个外显子。Parent属性表示外显子所属的mRNAs。请注意,几个外显子共享相同的父代,使用逗号符号表示多重亲子关系。

第12-24行表示该基因的四个CDS。每个CDS都属于其中一个mRNA。cds00003和cds00004对应于交替启动密码子,属于同一mRNA。

注意,一些特征,包括基因、其mRNA和CDS,都具有Name属性。此属性为这些功能分配了一个公共名称,但不是必需的。ID属性仅对那些具有子代的特征(基因和mRNA)或跨多行的特征是必需的。ID不需要在其所在的文件之外具有意义。因此,此文件的稍微简化版本如下所示:

##gff-3.1.26版##序列区域ctg123 1 1497228ctg123。基因1000 9000.+。ID=gene00001;名称=EDENctg123。TF_绑定_站点1000 1012.+。父级=gene00001ctg123。mRNA 1050 9000.+。ID=mRNA00001;父代=基因00001ctg123。mRNA 1050 9000.+。ID=mRNA00002;父级=gene00001ctg123。mRNA 1300 9000.+。ID=mRNA00003;父代=基因00001ctg123。外显子1300 1500.+。父项=mRNA00003ctg123。外显子1050 1500.+。父项=mRNA00001,mRNA0002ctg123。外显子3000 3902.+。父项=mRNA00001,mRNA0003ctg123。外显子5000 5500.+。父项=mRNA00001、mRNA0002、mRNA00003ctg123。外显子7000 9000.+。父项=mRNA00001、mRNA0002、mRNA00003ctg123。CDS 1201 1500.+0 ID=cds00001;父项=mRNA00001ctg123。CDS 3000 3902.+0 ID=cds00001;父项=mRNA00001ctg123。CDS 5000 5500。+0 ID=cds00001;亲本=mRNA00001ctg123。CDS 7000 7600.+0 ID=cds0001;父项=mRNA00001ctg123。CDS 1201 1500.+0 ID=cds00002;父项=mRNA00002ctg123。CDS 5000 5500。+0 ID=cds0002;父项=mRNA00002ctg123。CDS 7000 7600.+0 ID=cds00002;父项=mRNA00002ctg123。CDS 3301 3902.+0 ID=cds00003;父项=mRNA00003ctg123。CDS 5000 5500。+1 ID=cds00003;父项=mRNA00003ctg123。CDS 7000 7600.+1 ID=cds00003;父项=mRNA00003ctg123。CDS 3391 3902.+0 ID=cds00004;父项=mRNA00003ctg123。CDS 5000 5500。+1 ID=cds00004;父项=mRNA00003ctg123。cd 7000 7600.以上1 ID=cds00004;父项=mRNA00003
注释1

SO或SOFA ID:如果使用SO(或SOFA)ID而不是短名称1(“mRNA”等),请使用以下映射:

基因 销售订单:0000704
信使核糖核酸 销售订单:0000234
外显子 销售订单:0000147
光盘 销售订单:0000316

您可能希望使用的其他mRNA部分包括:

内含子 SO:0000188(与外显子冗余)
polyA_序列 SO:0000610(三个prime_UTR的一部分)
多A站点(_S) SO:0000553(基因的一部分)
五个基本要素 销售订单:0000204
三元_UTR 销售订单:0000205
注释2
“孤儿”外显子CDS等特征。从头算基因预测程序称为附加在基因组序列上的假设外显子和CDS,而不一定是已知转录物。为了处理这些特征,您可以(1)创建一个占位符mRNA,并将其用作外显子和CDS子特征的父代;或者(2)将外显子和CDS直接连接到基因上。这是SO允许的,因为part_of关系具有传递性。
注释3
UTR、拼接位点和翻译起始和终止位点。这些由外显子和CDS的组合暗示,不需要作为典型基因的一部分进行明确注释。在注释独立于特定基因的预测剪接或翻译起始/终止位点的情况下,建议它们直接连接到基因组序列,而不是连接到基因或基因的子部分。
注释4
CDS功能必须具有定义的相位场。否则,不可能推断出与部分注释基因相对应的正确多肽。
注释5
CDS中包含START和STOP密码子。也就是说,如果起始密码子和终止密码子的位置已知,CDS的前三个碱基对应该对应于起始密码子,而最后三个对应于终止密码子。

环状基因组

对于环状基因组,标志性特征应包括第9列中的Is_circular=true。在下面的例子中,从噬菌体f1开始,基因II从位置6477-831延伸到原点。特征末端表示为地标特征J02448的长度,加上从原点到基因II末端的距离(6407+831=7238)。

##gff-3.1.26版#微生物肠杆菌噬菌体f1#注意噬菌体f1,完整基因组。J02448 GenBank地区1 6407.+。ID=J02448;名称=J02448;Is_circular=真;J02448 GenBank CDS 6006 7238.+0 ID=基因II;姓名=II;注=蛋白质II;

表示拼接的非编码抄本

对于拼接的非编码转录本,例如由一些处理过的snRNAs和病毒产生的转录本,使用父特征“noncoding_transcript”和子特征“exon”

父(部分)关系

保留的Parent属性可用于在两个要素之间建立部分关系。具有Parent属性集的功能被解释为断言它是指定Parent功能的一部分。

功能必须尊重序列本体部分关系。不属于SO中列出的Part-of关系之一的两个要素之间的父关系应触发解析异常。同样,会导致循环的一组父关系也应触发异常。

GFF3格式没有强制执行一条规则,即特征必须完全包含在其父代的位置中,因为序列本体的某些元素(例如基因中的增强子)允许存在远距离顺式关系。

间隙属性

蛋白质和核苷酸比对特征通常由两个序列组成,即参考序列和“目标”,并不总是共线的。例如,考虑EST(“EST23”)和基因组片段(“chr3”)之间的以下比对:

chr3(参考)1 CAAGACCTTAAACTGGAT-TCAAT 23EST23(目标)1 CAAGACCT---CTGGATATCAAT 21

GFF格式的早期版本将此对齐表示为三个共线线段,但这使得重建有间隙的对齐变得困难。GFF3建议使用“间隙”属性明确表示间隙对齐。Gap属性的格式由一系列由空格字符分隔的(操作、长度)对组成,例如“M8 D3 M6”。每个操作都是一个单字母代码:

代码 操作
M(M) 比赛
在参考序列中插入间隙
D类 在目标中插入间隙(从引用中删除)
如果 按参考顺序向前移帧
R(右) 参照序列中的移码反转

在上面显示的EST23和chr3之间的对齐中,chr3是GFF3文件第一列中引用的引用序列,EST23是Target属性引用的序列。这给出了一个“M8 D3 M6 I1 M6”的间隙字符串。完整的GFF匹配线将显示:

chr3。匹配123。ID=匹配1;目标=EST23 1 21;间隙=M8 D3 M6 I1 M6

对于蛋白质与核苷酸的匹配,M、I和D运算适用于靶中的氨基酸残基和参考中的核苷酸碱基对中的1:3残基。也就是说,“M2”意味着将目标中的两个氨基酸残基与参考中的六个碱基对相匹配。因此,该路线:

100 atgaaggag--gtattggaatgtcggggt1 M.K.E.V.V.I.-。。N.V.G.G.公司。。

对应于GFF3线:

ctg123。核苷酸转蛋白100 129.+。ID=match008;目标值=p101 1 10;间隙=M3 I1 M2 D1 M4

此外,“间隙”属性提供了<F>向前和<R>反转移码操作符,以允许对齐中的移码。这些是在核苷酸坐标中:向前移码会向前跳过指定数量的碱基对,而反向移码会向后移动。示例:

100 atgaagag---gttattgaatgtcggcggt间隙=M3 I1 M2 F1 M41 M.K.E.V.V.I。。。N.V.G.G公司100 atgaagag---gttataatgtcggcggt间隙=M3 I1 M2 R1 M41 M.K.E.V.V.I.医学博士。N.V.G.G公司

路线

在SO中,参考序列和另一序列之间的对齐称为“匹配”。除了通用的“匹配”类型外,还有子类:

  • cDNA_匹配
  • EST_匹配
  • 翻译的核苷酸匹配
  • 核苷酸与蛋白质的匹配
  • 核苷酸基序

比赛通常包含差距;被大间隙分割的匹配通常被称为“HSPs”(高分段对),GFF以前的化身通过将对齐分解为一系列未映射的HSPs来处理有间隙的对齐。

SO没有HSP类型。相反,间隙匹配表示为单个特征,该特征占据参考序列上的不连续位置。图2显示了与之前相同的基因,但添加了一个新的轨迹,显示了序列cDNA与基因组的对齐。为了便于说明,我们显示了第二个剪接转录本(EDEN.2)的三个外显子之间的对齐区域是精确的。

图2
图2

建议使用“cDNA_match”类型的单个特征和Gap属性来表示此对齐,Gap属性指示对齐分为三个部分:

ctg123。cDNA_匹配1050 9000 6.2e-45+。ID=match00001;目标=cdna0123 12 2964;间隙=M451 D3499 M501 D1499 M2001

解析后,Target属性表明碱基12和2964之间名为“cdna0123”的序列(在cdna坐标中)与ctg123的碱基1050到9000对齐。插入空格时,“间隙”属性更容易读取:

M451型 匹配451个碱基
D3499号 跳过参考ctg123序列中的3499个碱基
M501型 匹配接下来的501个基地
D1499号 跳过参考ctg123中的1499个碱基
M2001型 与接下来的2001个基地相匹配

请注意,匹配区域是2953个碱基,这正好对应于目标的匹配子序列[122964]。cDNA中会导致参考序列出现缺口的额外碱基将使用卷烟“I”符号表示。

另一个需要注意的重要事项是,ID对应于Match,而不是目标序列。这避免了GFF前几代中出现的混淆,这使得无法区分目标序列与基因组的特定比对和目标序列与基因的所有比对。

差距表示法的一个限制是,整个路线共享相同的分数(第6列)。为了给比赛的每个组成部分一个单独的分数,可以将其分为多行,如下所示:

ctg123。cDNA_匹配1050 1500 5.8e-42+。ID=match00001;目标=cdna0123 12 462ctg123。cDNA_匹配5000 5500 8.1e-43+。ID=match00001;目标=cdna0123 463 963ctg123。cDNA_匹配7000 9000 1.4e-40+。ID=match00001;目标=cdna0123 964 2964

请注意,这三行中的每一行的ID都是相同的,这表明这些行都指向一个特征,即Match。然而,每个对齐段都有不同的分数和目标区域。

这两种表示方式可以混合使用,允许对齐的大段具有自己的GFF线条和分数,而其中的小间隙则使用Gap属性表示。

匹配项可以与参考序列的+或-链对齐。这应该在GFF行的第七列中表示,并且通过更改Target属性中开始和结束位置的顺序。为了说明这一点,图3在注释中添加了一个EST对。mjm1123.5和mum1123.3这两个EST对应于来自同一cDNA克隆的5'和3'EST读取。以下GFF3行描述了它们:

ctg123。EST匹配1200 3200 2.2e-30+。ID=匹配00002;目标值=mjm1123.5 5 506;间隙=M301 D1499 M201ctg123。EST_match 7000 9000 7.4e-32-。ID=match00003;目标=mjm1123.3 1 502;间隙=M101 D1499 M401

请注意,无论路线方向如何,目标指示的子序列始终使用EST的坐标系。对于3'EST,第七列包含一个“-”,表示匹配的是ctg123的反向补码。Gap属性不会因这种反向互补而改变,而是以通常的方式从左到右读取。

应用程序可能希望将EST对分组为单个功能。这可以通过创建从第一个EST的左端延伸到最后一个EST右端的隐含cDNA_match来实现,并指示此cDNA匹配是两个EST之父。匹配部分使用SO“match_part”术语。match_part可以用作任何类型匹配的子部分。

ctg123。cDNA_匹配1200 9000。ID=cDNA00001ctg123。match_part 1200 3200 2.2e-30+。ID=match00002;父级=cDNA00001;目标值=mjm1123.5 5 506;间隙=M301 D1499 M201ctg123。match_part 7000 9000 7.4e-32-。ID=match00003;父级=cDNA00001;目标=mjm1123.3 1 502;间隙=M101 D1499 M401

图3
图3

成绩单相关比对

核苷酸对核苷酸和蛋白质对核苷酸比对中的绞合表示是GFF文件中常见的混淆源。本节将尝试对此进行解释。

案例1:与+链转录本对齐

考虑一对与基因组匹配的EST:

===============================基因组------------------->成绩单------>        <----EST_A(5')EST_B(3')

EST_A是一个5’EST,其序列(如FASTA文件中所示)与基因组序列在同一条链中。它表示为:

ctg123。EST匹配1000 1500.+。ID=match001;目标=EST_A 1 500+

第7列中的链字段为“+”,表示匹配的是基因组的前链。Target属性中的可选链字段也是+,表示对齐是指向隐含的底层转录物的正链。

现在让我们考虑EST_B,它是一个3'EST。其序列如FASTA文件中所示,与基因组序列的反向补体对齐。它表示为:

ctg123。EST匹配2000 2500.+。ID=match002;目标=EST_B 1 500-

第7列中的链字段为“+”,表示与基因组前面的转录特征相匹配。Target属性中的strand字段为-,表示EST序列应该反向补码,以便与底层转录本对齐。

案例2:与a-strand转录本对齐

情况正好相反:

基因组<--------------------成绩单------>        <----EST_D(3')EST_C(5')

在这种情况下,5’EST_C与基因组正向链的反向补体对齐,而3’EST_D直接与正向链对齐。具体如下:

ctg123。EST匹配2000 2500.-。ID=match001;目标=EST_C 1 500+ctg123。EST匹配1000 1500.-。ID=match001;目标=EST_D 1 500-

第一行表明转录物位于基因组的-链上,EST_C与转录物正向链对齐。第二行在第7列中使用-表示转录物在负链上,在Target字段中使用-表示EST_D与转录物的负链对齐。

困惑的?只需记住,为了显示的目的,源股和目标股将相乘在一起。+/+或-/-对齐表示参考序列和目标序列可以直接对齐。+/-或-/+比对表明靶标必须反向互补,才能与参考序列的正链比对。

类似的规则适用于TBLASTX比对,该比对依赖于将源的六帧平移与目标的六帧翻译进行匹配。考虑两个基因组在正向排列,其排列由基因A和B的翻译支持,其中一个位于正链上,另一个位于负链上:

基因组X------>        <----基因A基因B基因组Y

这两条路线将表示为:

X TBLASTX translated_nucleotide_match 1000 1500.+翻译。ID=匹配A;目标=Y 500 1000+X TBLASTX translated_nnucleotide_match 2000 2500.-。ID=匹配B;目标=Y 1500 2000-

请注意,第一次对齐是+/+,第二次对齐是-/-。两者都表明基因组X和Y的序列可以直接对齐。

现在我们来看看两个反平行排列的基因组:

基因组X------>        <----基因A基因B基因组Y

这两条路线将表示为:

X TBLASTX translated_nnucleotide_匹配1000 1500.+。ID=匹配A;目标=Y 500 1000-X TBLASTX translated_nnucleotide_match 2000 2500.-。ID=匹配B;目标=Y 1500 2000+

第一个匹配表明基因组X的正链特征与基因组Y的负链特征对齐。第二个匹配表明,基因组X的负链特性与基因组Y中的正链特性对齐。在这两种情况下,结果是将基因组X的正链与基因组Y上的负链对齐。

本体关联和数据库交叉引用

两个保留属性Ontology_term和Dbxref可用于在GFF3要素和另一数据库中包含的数据记录之间建立链接。Ontology_term保留用于与本体的关联,例如基因本体。Dbxref用于所有其他交互参考。虽然这两个概念之间没有明确的界限,但馆长往往会以不同的方式对待本体关联,因此本体术语被赋予了自己的保留属性标签。

Ontology_term和Dbxref的值都是交叉引用对象的ID,格式为“DBTAG:ID”。DBTAG表示可以在哪个数据库中找到引用的对象,ID表示该数据库中对象的标识符。ID可以包含未转义的冒号,但DBTAG不能,因此解析代码应该在属性值中遇到的第一个冒号上进行拆分。

每种类型ID的格式因数据库而异。可以在以下位置找到数据库、数据库的DBTAG和URL转换规则的权威列表,这些规则可用于获取给定ID的对象:ftp://ftp.geneontology.org/pub/go/doc/go.xrf_abbs网站

有关更多详细信息,请访问:ftp://ftp.geneontology.org/pub/go/doc/go.xrf_abbs_spec

以下是一些常见的示例:

EMBL序列登录号的dbxref:
Dbxref=“EMBL:AA816246”
将dbxref转换为NCBI gi编号:
Dbxref=“NCBI_gi:10727410”
指GO关联的Ontology_term
Ontology_term=“GO:0046703”

其他语法

注释行以“#”符号开头。不允许使用行尾注释(在功能或指令行的末尾和同一行上以“#”开头的注释)。指令行(有时称为杂注或元数据)前面有“##”。允许使用特定于应用程序的指令,但不要求解析器支持这些指令。指定了以下指令:

##gff-3.1.26版
GFF版本遵循3.#.#格式此指令必须存在,必须是文件的最上面一行。版本号始终以3开头,第二个和第三个数字是可选的,分别表示主要修订版和次要修订版。
##sequence-region序列号开始结束
此文件引用的序列段,格式为“seqid start-end”。此元素是可选的,但强烈建议使用,因为它允许解析器对特性执行边界检查。可能有多个##sequence-region指令,每个指令对应文件正文中引用的一个引用序列,但是对于任何给定的seqid,只能给出一个##sequence-rregion指令。虽然任何或所有地标特征都不需要##sequence-region杂注,但当给定某个地标特征上的所有特征(具有该seqid)时,必须包含在该##sequence-region指令定义的范围内。当地标要素标记为is_circular属性时,允许此规则的例外。在这种情况下,该地标上包含的要素可能会将其坐标延伸到上述边界之外。
##feature-ontology URI

此指令指示GFF3文件使用位于所示URI或URL的功能类型本体。可以添加多个URI,在这种情况下,这些URI将被合并(如果无法合并,则引发异常)。已发布序列本体的URI为:

##属性本体URI
此指令指示GFF3使用位于所示URI或URL的属性名称本体。此指令可能会多次出现以加载多个URI,在这种情况下,它们会被合并(如果无法合并,则引发异常)。目前不存在正式的属性本体,因此该属性用于将来的扩展。
##源本体URI
此指令指示GFF3使用位于所示URI或URL的源名称本体。此指令可能会多次出现以加载多个URI,在这种情况下,它们会被合并(如果无法合并,则引发异常)。目前不存在正式的源本体,因此该属性用于将来的扩展。
##物种NCBI_Taxonomy_URI
此指令指示注释适用的物种。首选格式是NCBI URL,它以以下任一格式指向相关物种页面:
##基因组构建源buildName

用于文件中给定坐标的基因组组装构建名称。请指定程序集的源及其名称。示例(括号是注释):

##基因组构建NCBI B36(人类)##基因组构建WormBase ws110(蠕虫)##基因组构建FlyBase r4.1(果蝇)
###
此指令(一行中有三个#符号)表示到目前为止看到的所有对要素ID的正向引用都已解决。在看到这个指令后,串行处理文件的程序可以关闭它创建的任何打开的对象并返回它们,从而允许对文件进行迭代访问。否则,在到达文件末尾之前,软件无法知道某个功能已由其子功能完全填充。建议使用###符号终止复杂特征,例如典型基因。
##美国金融服务贸易协会

此符号表示文件的注释部分位于末尾,文件的其余部分包含FASTA格式的一个或多个序列(核苷酸或蛋白质)。这允许将功能和序列捆绑在一起。文件中包含的所有FASTA序列必须包含在文件末尾,并且不能与要素线交错。一旦遇到##FASTA节,就不允许出现超出有效FASTA序列的其他内容。

示例:

##gff-3.1.26版##序列区域ctg123 1 1497228ctg123。基因1000 9000.+。ID=gene00001;名称=EDENctg123。TF_绑定_站点1000 1012.+。ID=tfbs00001;父级=gene00001ctg123。mRNA 1050 9000.+。ID=mRNA00001;父级=gene00001;名称=EDEN.1ctg123。五元_UTR 1050 1200.+。父项=mRNA00001ctg123。CDS 1201 1500.+0 ID=cds00001;父项=mRNA00001ctg123。CDS 3000 3902.+0 ID=cds00001;父项=mRNA00001ctg123。CDS 5000 5500。+0 ID=cds00001;亲本=mRNA00001ctg123。CDS 7000 7600.+0 ID=cds00001;父项=mRNA00001ctg123。三元_UTR 7601 9000.+。父项=mRNA00001ctg123。cDNA_匹配1050 1500 5.8e-42+。ID=match00001;目标=cdna0123+12+462ctg123。cDNA_匹配5000 5500 8.1e-43+。ID=match00001;目标=cdna0123+463+963ctg123。cDNA_匹配7000 9000 1.4e-40+。ID=match00001;目标=cdna0123+964+2964##美国金融服务贸易协会>ctg123型cttctgggcgtacccgattctcggagaacttgccgcaccattccgccttgtgttcatgctgcctgcatgttcattgtctcggctacgctgtatctttcctcggtgtgcctcgtgcacggagtcgagaaaaccaaaaaaaaaagaaattaaatatttattgctgtggtttgatgtgttttttataatgattttgatgtgaccaattactttcttaaatgaaatgtaatcttaaatgtatttccgacgaatttcgaggcctaaagtgacgccattcgtatttgattggtttactatacgaataatgaatttcaggtc标签标签标签标签标签标签标签标签aatctagcatatcgaaattcgaggcctgaagtgacgcaattc...>巨潮0123ttcaagtgctcagtcaatcatgatccagtatcaccaatattttggcagctctcaagggataaaatttggatatactcggtggagctcagcgctcgattataactaaagtgaaagtgagaagtcatatcgctgattcgcgaaatttgaaggtcgagatatctgcatagtgaaagaaaaatcacagagatataaaggagccaacktttgttggaccgtcaaacacggctgtaaaatttgattgtgttaaagg

为了与Artemis工具输出的GFF版本向后兼容,以字符>开头的GFF行创建隐含的##FASTA指令。

病理案例

下一节讨论如何表示原核生物和真核生物遗传学中出现的“病理”案例。其中大多数与生物体处理转录本的无休止的创造性方式有关。

单个外显子基因

在这种情况下,一个未分割的转录本编码一个CDS。

----->XXXXXXX*-------->

优选的表示是创建基因、转录物、外显子和CDS:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=resAchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX YYYY.+。父级=tran01

一些团体会发现这是多余的。有效的替代方法是省略外显子特征:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=resAchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01chrX公司。CDS XXXX YYYY.+。父项=tran01

不建议将CDS直接亲合到基因上,因为这将不可能确定UTR(因为基因可能有效地包括未转录的调控区域)。

还要注意,将这两种风格混合在一起,例如一个生物体同时具有拼接和未拼接的转录本,很容易导致处理GFF3文件的人员混淆。

多顺反子转录物

在这种情况下,单个(可能是拼接的)转录本编码多个开放阅读框架,生成独立的蛋白质产物。

----->XXXXXXX*-->BBBBBB*-->ZZZZ*-->AAAAAA*-----

由于单个转录物对应于可以通过遗传分析识别的多个基因,因此这里建议的解决方案是创建四个“基因”对象,并使它们成为单个转录物的父代。该转录本将包含一个外显子(在未切片的情况下)和四个单独的CDS:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=resAchrX公司。基因XXXX YYYY.+。ID=基因02;名称=resBchrX公司。基因XXXX YYYY.+。ID=基因03;名称=resXchrX公司。基因XXXX YYYY.+。ID=基因04;名称=resZchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01,gene02,gene03,gene04chrX公司。外显子XXXX YYYY.+。ID=exon00001;父级=tran01chrX公司。CDS XXXX YYYY.+。父项=tran01;派生_源=gene01chrX公司。CDS XXXX YYYY.+。父项=tran01;派生_源=基因02chrX公司。CDS-XXXX-YYYY.+。父项=tran01;派生_源=基因03chrX公司。CDS XXXX YYYY.+。父项=tran01;派生_from=gene04

要消除哪些基因编码哪些CDS之间的关系的歧义,可以使用Derives_from关系。

含有内含子的基因

当蛋白质的一部分被剪接出来,两个多肽片段重新连接成为功能蛋白质时,就会出现内含子。剪接出来的部分称为“内含子”,它本身可能具有固有的分子活性:

----->XXXXXX年/年/年*-------(yyyyy是intein)

首选的表示是创建一个基因、一个转录本、一个外显子和一个CDS。CDS使用“Derives_from”标签产生前多肽,该多肽又产生两种成熟的多肽,分别用于内含子和侧翼蛋白:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=resAchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX YYYY.+。ID=cds01;父级=tran01chrX公司。多肽XXXX YYYY.+。ID=poly01;派生_from=cds01chrX公司。成熟多肽XXXX YYYY.+。ID=poly02;父级=poly01chrX。成熟多肽XXXX YYYY.+。ID=poly02;父级=poly01chrX公司。内页XXXX YYYY.+。ID=poly03;父级=poly01

由于侧翼成熟多肽在基因组上具有不连续的坐标,因此它以相同的ID出现两次。

如果intein立即降级,您可能不希望显式注释它,并且它的行将从示例中删除。然而,如果它具有分子活性,它可能对应于一个基因,在这种情况下:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=resAchrX公司。基因XXXX YYYY.+。ID=基因02;name=内部AchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01,gene02chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX YYYY.+。ID=cds01;父级=tran01chrX公司。多肽XXXX YYYY.+。ID=poly01;派生_from=cds01chrX公司。成熟多肽XXXX YYYY.+。ID=poly02;父级=poly01;衍生自=基因01chrX公司。成熟多肽XXXX YYYY.+。ID=poly02;父级=poly01;派生_源=gene01chrX公司。内页XXXX YYYY.+。ID=poly03;父级=poly01;派生_源=基因02

术语“多肽”是SO的一部分。术语“成熟多肽”和“内含子”计划在待发布版本中添加。

转剪接转录本

当两个基因通过转剪接反应参与处理的转录物时,就会发生这种情况:

拼接的领导====~==>----->XXXXXXX*----->

表示这一点的最简单方法是显示mRNA在两个不连续的基因组位置上分裂:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=my_genechrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01chrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX YYYY.+。ID=cds01;父级=tran01

然而,这并不能说明转录本的哪一部分来自拼接的前导。首选表示法明确添加了剪接先导基因、primary_transcript和剪接先导RNA的特征:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=my_genechrX公司。基因XXXX YYYY.+。ID=基因02;name=领导基因chrX公司。信使核糖核酸XXXX YYYY.+。ID=tran01;父级=gene01,gene02chrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01,gene02chrX公司。主脚本XXXX YYYY.+。ID=pt01;父项=tran01;派生_源=gene01chrX公司。拼接领导RNA XXXX YYYY.+。ID=sl01;父项=tran01;派生_源=基因02chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX YYYY.+。ID=cds01;父级=tran01

如图所示,mRNA来自两个基因(“my_gene”和先导基因),在基因组上占据间断坐标。primary_transcript编码mRNA的主体,是该mRNA的一部分(作为其父代)。同样的关系也适用于剪接先导RNA。Derives_from关系用于指示哪些基因分别产生初级转录和剪接先导。

外显子和CDS特征以正常方式出现。

编程移帧

当核糖体在翻译过程中进行编程移码以跳过帧内终止密码子时,就会发生这种情况。移码可能向前或向后进行。

------------------------->信使核糖核酸===============

其表现是使CDS不连续:

chrX公司。基因XXXX YYYY.+。ID=基因01;名称=my_genechrX公司。信使核糖核酸XXXX YYYY.+。ID=tran01;父级=基因01;Ontology_term=SO:1000069chrX公司。外显子XXXX YYYY.+。父级=tran01chrX公司。CDS XXXX年+0 ID=cds01;父级=tran01chrX公司。CDS YYYY-1 ZZZ.+0 ID=cds01;父级=tran01

代表新阅读框架的CDS片段将始终具有0相,因为核糖体正在移动,从而重新定义密码子。

建议用适当的SO转录物属性标记mRNA,例如“minus_1_translational_frameshift”(SO:1000069)。这将允许通过查询恢复所有此类编程移码mRNA。“plus_1_translational_frameshift”的加入号是SO:1001263。

歌剧院

当多顺反子转录物中的基因受到顺调控元件的共同调控时,就会出现经典的操纵子:

调节元件*操作子----->XXXXXXX*-->BBBBBB*-->ZZZZ*-->AAAAAA*-----

GFF3中可以这样表示:

chrX公司。XXXX YYYY.+操作。ID=操作01;名称=my_operonchrX公司。发起人XXXX YYYY.+。父级=operaton01chrX公司。基因XXXX YYYY.+。ID=基因01;父级=operon01;名称=resAchrX公司。基因XXXX YYYY.+。ID=基因02;父级=operon01;名称=resBchrX公司。基因XXXX YYYY.+。ID=基因03;父级=operon01;名称=resXchrX公司。基因XXXX YYYY.+。ID=基因04;父级=operon01;名称=resZchrX公司。mRNA XXXX YYYY.+。ID=tran01;父级=gene01,gene02,gene03,gene04chrX公司。外显子XXXX YYYY.+。ID=exon00001;父级=tran01chrX公司。CDS XXXX YYYY.+。父项=tran01;派生_源=gene01chrX公司。CDS-XXXX-YYYY.+。父项=tran01;派生_源=基因02chrX。CDS XXXX YYYY.+。父项=tran01;派生_源=基因03chrX公司。CDS XXXX YYYY.+。父项=tran01;派生_from=gene04

调控元件(本例中为“启动子”)是通过Parent标签的操纵子的一部分。这四个基因是操纵子的一部分,产生的mRNA由四个基因倍增而成,如前面的例子所示。

在撰写本文时,启动子和其他顺调控元件不能成为操纵子的一部分,但这种限制正在被重新考虑。

miRNA延伸

mirGFF3格式改编自GFF3定义,以包含来自miRNA-seq数据的miRNA/isomiRs信息。主要区别在于属性列,其中这些字段是必填的:变量、雪茄、命中、表达式和过滤器。要了解每一个的更多信息,请访问主存储库https://github.com/miRTop/mirGFF3网址


更改日志

1.26 2020年8月18日星期二
  • 更多内部链接(感谢Juke34)。
  • 在示例中切换到实际的GFF3版本号。
  • 变更日志中的标准化日期格式。
  • 修复了打字错误(多亏了lbergelson)和格式。
  • UTF-8现在是唯一推荐的字符编码。
2019年9月24日星期二1.25
  • 根据与jbethune的讨论,对CDS阶段进行了澄清。
2019年7月15日星期一1.24
  • 在病理病例中增加miRNA延伸。
2016年10月3日星期五1.23
  • 在第3列“类型”下添加了允许的SO:0000110 sequence_feature。
2016年5月2日(星期一)
  • 从HTML转换为Markdown。
1.21 2013年2月26日星期二
  • 对逃避约定的澄清。
  • 明确要求开始和结束的值是基于一的正整数。
  • 澄清在属性值中使用引号。
  • 澄清以#开头的行并排除内联注释。
  • 澄清##gff版本杂注在一个文件中只出现一次。
  • 对##序列区域杂注的澄清。
2010年12月15日星期三1.20
  • 在ID属性的描述中添加了语言,以澄清不连续的特征可以存在于多行上并共享相同的ID。
1.19 2010年7月6日星期二
  • 修复了“Alignments”部分中EST_match和match_part示例中的坐标错误。
  • 将多个属性值约束为Parent、Alias、Note、Dbxref和Ontology_term属性。
1.18 2010年6月24日星期四
  • 在规范中添加了关于圆形基因组的部分。
1.17 2010年6月2日星期三
  • 更改了规范,在第3列中包括序列本体(SO)Sequence_feature术语以及SOFA术语。(SOFA是SO的一个子集)。
1.16 2010年5月25日星期二
  • 修复了更多错误的CDS阶段。
  • 始终将(三|五)_prime_utr更改为(三|5)_prim_utr。
  • 全程将(3'|5')-UTR更改为(3|5)_prime_UTR。
  • 在FASTA杂注示例中,向CDS功能添加了ID属性(多行功能需要)。
2009年8月31日星期一1.15
  • 修复了典型基因示例中不正确的CDS阶段。
1.14 2008年8月25日星期一
  • 为物种和内部版本号添加元直径。
1.13 2007年5月23日星期三
  • 坚持CDS包含起始密码子和结束密码子。
1.12 2007年4月5日星期四
  • 在成对EST示例中,使用“match_part”作为cDNA_match的子部分。
  • 所有CDS功能都需要阶段。
1.11 2006年12月1日星期五
  • 阐明了相对于反向股特征的相位定义。
2006年9月14日星期四1.10
  • 为新的SO网站重新格式化。
1.09 2006年9月6日星期三
  • 有关GFF3验证器的信息。
1.08 2006年7月18日星期二
  • 添加了SO版本的URL。
1.07 2006年5月24日星期三
  • 修正了相位描述(由于CVS故障暂时丢失)。
1.06 2006年5月24日星期三
  • 放松逃生规则。
  • 修正了Gordon Gremme发现的打字错误。
1.05 2006年5月23日星期二
  • 修复了示例中的所有ID,使其内部一致。此前,由于标识符中的零数量不一致(mRNA00001与mRNA0001),一些例子没有得到验证。