我们在做生物分析的时候,经常会碰到GFF格式的文件以及GTF格式的注释文件。他们有着相似的名字,甚至连内容都极为相似~那么,他们究竟差在哪里呢?
GFF全称为general feature format
,这种格式主要是用来注释基因组。
GTF全称为gene transfer format
,主要是用来对基因进行注释。
数据结构
GTF文件以及GFF文件都由9列数据组成,这两种文件的前8列都是相同的(一些小的差别)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
reference sequence name | annotation source | feature type | start coordinate | end coordinate | score | strand | frame | attributes |
GFF
GFF文件是一种用来描述基因组特征的文件,现在我们所使用的大部分都是第三版)(GFF3)。GFF允许使用#
作为注释符号,例如很多GFF文件都会使用如下的两行来表明其版本其创建日期:
##gff-version 2
##created 11/11/11
GFF文件每一列所代表的含义前面表格中有,但请注意,它的第3列feature type
是不受约束的,你可以使用任意的名称,但也不要太淘气~用一些适当的名称对于后面的分析会有很大的帮助。
我们需要注意的是GFF文件的第9列,从第二版开始(GFF2),所有的属性都以标签=值
的方式呈现,各个属性之间以;
作为分隔符
ID=geneAExon1;Name=geneA;Parent=geneA;Organism=human
在最新版本的GFF文件中(GFF3),有一些是已经预先定义的属性特征,并且这些特征往往还有特殊的含义:ID
这个标签实在各行都要有的;另外有一个Parent
的属性,它表明了当前的特征是Parent特征的子集。
Contig01 PFAM gene 501 750 . + 0 ID=geneA;Name=geneA
Contig01 PFAM exon 501 650 . + 2 ID=exonA1;Parent=geneA
Contig01 PFAM exon 700 750 . + 2 ID=exonA2;Parent=geneA
GTF
当前所广泛使用的GTF格式为第二版(GTF2),它主要是用来描述基因的注释。GTF格式有两个硬性标准:
- 根据所使用的软件的不同,
feature types
是必须注明的。 - 第9列必须以
gene_id
以及transcript_id
开头
GTF文件的第9列同GFF文件不同,虽然同样是标签与值配对的情况,但标签与值之间以空格分开,且每个特征之后都要有分号;
(包括最后一个特征):
gene_id "geneA";transcript_id "geneA.1";database_id "0012";modified_by "Damian";duplicates 0;
两种文件的差异比较
列 | GTF2 | GFF3 |
---|---|---|
reference sequence name | same | same |
annotation source | same | same |
feature type | feature requirements depend on software | can be anything |
start coordinate | same | same |
5. end coordinate | same | same |
score | not used | optional |
strand | same | same |
frame | same | same |
attributes | 空格分隔 |
= 分隔 |
两种文件格式之间的转换
偷个懒,直接使用Cufflinks里面的工具gffread
#gff2gtf
gffread my.gff3 -T -o my.gtf
#gtf2gff
gffread merged.gtf -o- > merged.gff3