GFF和GTF两种格式,算是生物信息学中最基本最常用(见)最重要的数据(信息)存储格式之二了。制表符分隔( tab-delimited)的文本文件,一般存储基因组注释信息。自1997年以来,这些格式有了很大的发展,尽管现在已有明确的规范,但它们具有很大的灵活性,可以容纳各种各样的信息。生信入门必备,我刚学的时候没有好好记笔记,现在补一下
GFF全称为 General Feature Format,目前常用的是GFF3,也就是GFF Version3,九列,分别为:
seq_id
:序列的编号。通常是染色体或者Contig ID,比如:Chr01 或者 scaffold_1source
:注释的来源。一般会是预测用软件工具或者数据库type
:类型,此处的名词是相对自由的,建议使用符合SO惯例的名称(sequenceontology),如gene,repeat_region,exon,CDS等start
:上述type
起始位点。从1 起始计数end
:上述type
结束位点score
:type
的分数,可以是浮点数或者整数。与早期版本的格式一样,其语义定义不明确。建议将E-value用于序列相似性特征,将P-value用于从头基因预测。strand
:type
位于参考序列的正链(+)或者负链(+),或者非链特征(.),对于链相关特征未知的也可以用问号(?)表示phase
:仅对注释类型为“CDS”的有效,表示起始编码的位置,有效值为0、1、2. (对于编码蛋白质的CDS,本列指定下一个密码子的起始位置。每3个核苷酸编码一个氨基酸,从0开始,CDS的长度,除以3,余数就是这个值,表示到达下一个密码子需要跳过的碱基数。“0” 表示密码子从该CDS的5‘端第一个核苷酸开始(即向前0个碱基),“1”相表示密码子从第二个核苷酸开始,“2”相表示密码子从第三个核苷酸开始。注意,GFF3 CDS的phase
不应与类似概念frame
混淆,frame
的概念也是生物信息学中的常见概念。frame
通常被计算为相对于完整开放阅读框(ORF)或密码子的开始的给定碱基值,而CDS phase
表示相对于给定CDS特征的下一个密码子的开始。)attributes
:格式为tag=value
的特征属性列表,不同的属性用分号分隔。一个键可以有多个值,不同值用“,”分割。注意如果描述中包括tab键以及“,= ;”,要用URL转义规则进行转义。tag是区分大小写的,以大写字母开头的tag是预先定义好的,在后面可以被其他注释信息调用预先定义的tag主要包括
tag | 含义 |
---|---|
ID | 注释信息的编号,在一个GFF中必须唯一 |
Name | 注释信息的名称,与ID不同,可以重复 |
Alias | 特征的其他名称。例如基因的Sambol ID、locus ID等。与ID不同,文件中不要求唯一。 |
Parent | 表示功能的上一级。Parent ID 可用于将外显子指向转录本,将转录本指向基因等。特征可能有多个Parent 。Parent 只能用来表示关系层级的一部分 |
Target | 核苷酸与核苷酸或蛋白质与核苷酸比对。该值的格式为target_id start-end[strand] ,其中strand是可选的,可以是“+”或“-”。如果target_id包含空格,则必须将其转义为 hex escape %20 |
Gap | 比对结果的Gap信息,和Target一起,用于表明序列的比对结果 |
Derives_from | 不同特征是时间关系而不是纯粹的结构关系时,用于消除一个特征与另一个特征之间的关系的歧义。多顺反子基因所必需的 |
Note | 简单的文本信息 |
Dbxref | 数据库交叉引用 |
Ontology_term | 对 Ontology term 的交叉引用 |
Is_circular | 指示特征是否为环状 |
##gff-version 3
# This is a test sample
scaffold625 maker gene 337818 343277 . + . ID=CLUHARG00000005458;Name=TUBB3_2
scaffold625 maker mRNA 337818 343277 . + . ID=CLUHART00000008717;Parent=CLUHARG00000005458
scaffold625 maker tss 337916 337918 . + . ID=CLUHART00000008717:tss;Parent=CLUHART00000008717
scaffold625 maker start_codon 337916 337918 . + . ID=CLUHART00000008717:start;Parent=CLUHART00000008717
scaffold625 maker CDS 337915 337971 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 340733 340841 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341518 341628 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341964 343033 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker stop_codon 343031 343033 . + . ID=CLUHART00000008717:stop;Parent=CLUHART00000008717
scaffold625 maker exon 337818 337971 . + . ID=CLUHART00000008717:exon1;Parent=CLUHART00000008717
scaffold625 maker exon 340733 340841 . + . ID=CLUHART00000008717:exon2;Parent=CLUHART00000008717
scaffold625 maker exon 341518 341628 . + . ID=CLUHART00000008717:exon3;Parent=CLUHART00000008717
scaffold625 maker exon 341964 343277 . + . ID=CLUHART00000008717:exon4;Parent=CLUHART00000008717
scaffold625 maker five_prime_utr 337818 337914 . + . ID=CLUHART00000008717:five_prime_utr;Parent=CLUHART00000008717
scaffold625 maker three_prime_UTR 343034 343277 . + . ID=CLUHART00000008717:three_prime_utr;Parent=CLUHART00000008717
GTF 为General Transfer Format缩写(版本为2+),九列数据,目前广泛应用的分别为:
seqname
: 序列名称。通常是染色体或者Contig ID,比如:Chr01 或者 scaffold_1source
:注释的来源。一般会是预测用软件工具或者数据库feature
:注释信息类型(基因结构),这列信息是必须的,至少包括比如CDS、start_codon、stop_codon,还可以包含5UTR、3UTR、inter、inter_CNS、intron_CNS、exon、mRNA等等start
:上述feature
起始位点。从1 起始计数end
:上述feature
结束位点score
:表示feature
的存在和坐标的置信度,可以是一个浮点数或者整数,“.” 表示为空,就是不需要strand
:该feature
位于参考序列的正链(+)或者负链(+)frame
:0 表示阅读框的第一个完整密码子位于最5’端,1 表示在第一个完整密码子之前有一个额外的碱基,2 表示在第一整个密码子之前还有两个额外的碱基。注意,frame
不是CDS长度除以3的余数(CDS mod 3)。如果链是“-”,则该区域的第一个碱基的值为end
,因为对应的编码区域将在反向链上从end
到start
。attributes
:应具有的格式为attribute_name “attribut_value”;
,每个属性必须以分号结尾并且与下一个属性之间以空格分隔,并且属性的值应该用双引号包围。并且必须包含以下两个属性:attributes | 含义 |
---|---|
gene_id “value”; | 表示转录本在基因组上的基因座的唯一ID。gene_id与value值用空格分开,如果值为空,则表示没有对应的基因。 |
transcript_id “value”; | 预测转录本的唯一ID。transcript_id与value值用空格分开,空表示没有转录本。 |
当然还可以包含以“#”开头的文件注释信息
140 Twinscan inter 5141 8522 . - . gene_id ""; transcript_id "";
140 Twinscan inter_CNS 8523 9711 . - . gene_id ""; transcript_id "";
140 Twinscan inter 9712 13182 . - . gene_id ""; transcript_id "";
140 Twinscan 3UTR 65149 65487 . - . gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan 3UTR 66823 66992 . - . gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan stop_codon 66993 66995 . - 0 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan CDS 66996 66999 . - 1 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan intron_CNS 70103 70151 . - . gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan CDS 70207 70294 . - 2 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan CDS 71696 71807 . - 0 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan start_codon 71805 71806 . - 0 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan start_codon 73222 73222 . - 2 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan CDS 73222 73222 . - 0 gene_id "140.000"; transcript_id "140.000.1";
140 Twinscan 5UTR 73223 73504 . - . gene_id "140.000"; transcript_id "140.000.1";
可选择的工具有很多,这里简单举几个例子。测试GFF3文件内容参考前面GFF介绍
agat_convert_sp_gff2gtf.pl --gff 1_test.gff -o 1_test_agat.gtf
转换之后的GTF,注意啊,这个相对比较标准的格式,还有**#**开头的文件注释信息:
##gtf-version 3
##This is a test sample
scaffold625 maker gene 337818 343277 . + . gene_id "CLUHARG00000005458"; ID "CLUHARG00000005458"; Name "TUBB3_2";
scaffold625 maker transcript 337818 343277 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717"; Parent "CLUHARG00000005458"; original_biotype "mrna";
scaffold625 maker exon 337818 337971 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:exon1"; Parent "CLUHART00000008717";
scaffold625 maker exon 340733 340841 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:exon2"; Parent "CLUHART00000008717";
scaffold625 maker exon 341518 341628 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:exon3"; Parent "CLUHART00000008717";
scaffold625 maker exon 341964 343277 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:exon4"; Parent "CLUHART00000008717";
scaffold625 maker CDS 337915 337971 . + 0 gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:cds"; Parent "CLUHART00000008717";
scaffold625 maker CDS 340733 340841 . + 0 gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:cds"; Parent "CLUHART00000008717";
scaffold625 maker CDS 341518 341628 . + 2 gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:cds"; Parent "CLUHART00000008717";
scaffold625 maker CDS 341964 343030 . + 2 gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:cds"; Parent "CLUHART00000008717";
scaffold625 maker five_prime_utr 337818 337914 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:five_prime_utr"; Parent "CLUHART00000008717";
scaffold625 maker start_codon 337916 337918 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:start"; Parent "CLUHART00000008717";
scaffold625 maker stop_codon 343031 343033 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:stop"; Parent "CLUHART00000008717";
scaffold625 maker three_prime_utr 343034 343277 . + . gene_id "CLUHARG00000005458"; transcript_id "CLUHART00000008717"; ID "CLUHART00000008717:three_prime_utr"; Parent "CLUHART00000008717"; original_biotype "three_prime_UTR";
gffread -E 1_test.gff -T -o 1_test_gffread.gtf
转换之后的GTF:
scaffold625 maker transcript 337818 343277 . + . transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker exon 337818 337971 . + . transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker exon 340733 340841 . + . transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker exon 341518 341628 . + . transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker exon 341964 343277 . + . transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker CDS 337915 337971 . + 0 transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker CDS 340733 340841 . + 0 transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker CDS 341518 341628 . + 2 transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
scaffold625 maker CDS 341964 343033 . + 2 transcript_id "CLUHART00000008717"; gene_id "CLUHARG00000005458";
gt gff3_to_gtf 1_test.gff > 1_test_genometools.gtf
转换之后的GTF:
scaffold625 maker exon 337818 337971 . + . gene_id "1"; transcript_id "1.1";
scaffold625 maker exon 340733 340841 . + . gene_id "1"; transcript_id "1.1";
scaffold625 maker exon 341518 341628 . + . gene_id "1"; transcript_id "1.1";
scaffold625 maker exon 341964 343277 . + . gene_id "1"; transcript_id "1.1";
scaffold625 maker CDS 337915 337971 . + 0 gene_id "1"; transcript_id "1.1";
scaffold625 maker CDS 340733 340841 . + 0 gene_id "1"; transcript_id "1.1";
scaffold625 maker CDS 341518 341628 . + 2 gene_id "1"; transcript_id "1.1";
scaffold625 maker CDS 341964 343033 . + 2 gene_id "1"; transcript_id "1.1";
# ea-utils
./gff2gtf-eautils test_1.gff > 1_test_ea-utils.gtf
# TransDecoder
gff3_gene_to_gtf_format.pl test_1.gff test_1.fa > 1_test_transdecoder.gtf
# Kent utils
./gff3ToGenePred.dms 1_test.gff temp.genePred ./genePredToGtf.dms file temp.genePred 1_test_genePred.gtf
GTF 到 GFF的转换,以上提到的工具都可以搞定,其实可以看到,不同工具转换之后的内容还是有一些差别的,我个人用的话会使用 AGAT 和 gffread,当然可能还有其他我不知道的工具,但是工具呢,“能抓到耗子”就好了,在不丢失必(重)要信息的情况下,用哪个,看自己喜欢喽。
http://mblab.wustl.edu/GTF22.html
http://genome.ucsc.edu/FAQ/FAQformat.html#format4
https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md