生信必会格式:GFF和GTF的简介和转换

文章目录

    • 前言
    • GFF
        • 例子
    • GTF
        • 例子
    • GFF 转为 GTF
        • 使用 AGAT 转换
        • 使用 gffread 转换
        • 使用 GenomeTools 转换
        • 其他工具:ea-utils、TransDecoder、Kent utils
    • 闲聊
    • 参考

前言

GFF和GTF两种格式,算是生物信息学中最基本最常用(见)最重要的数据(信息)存储格式之二了。制表符分隔( tab-delimited)的文本文件,一般存储基因组注释信息。自1997年以来,这些格式有了很大的发展,尽管现在已有明确的规范,但它们具有很大的灵活性,可以容纳各种各样的信息。生信入门必备,我刚学的时候没有好好记笔记,现在补一下
生信必会格式:GFF和GTF的简介和转换_第1张图片

GFF

GFF全称为 General Feature Format,目前常用的是GFF3,也就是GFF Version3,九列,分别为:

  • seq_id:序列的编号。通常是染色体或者Contig ID,比如:Chr01 或者 scaffold_1
  • source:注释的来源。一般会是预测用软件工具或者数据库
  • type:类型,此处的名词是相对自由的,建议使用符合SO惯例的名称(sequenceontology),如gene,repeat_region,exon,CDS等
  • start:上述type起始位点。从1 起始计数
  • end:上述type结束位点
  • scoretype的分数,可以是浮点数或者整数。与早期版本的格式一样,其语义定义不明确。建议将E-value用于序列相似性特征,将P-value用于从头基因预测。
  • strandtype位于参考序列的正链(+)或者负链(+),或者非链特征(.),对于链相关特征未知的也可以用问号(?)表示
  • 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 可用于将外显子指向转录本,将转录本指向基因等。特征可能有多个ParentParent只能用来表示关系层级的一部分
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

GTF 为General Transfer Format缩写(版本为2+),九列数据,目前广泛应用的分别为:

  • seqname: 序列名称。通常是染色体或者Contig ID,比如:Chr01 或者 scaffold_1
  • source:注释的来源。一般会是预测用软件工具或者数据库
  • 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,因为对应的编码区域将在反向链上从endstart
    在这里插入图片描述
  • 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";

GFF 转为 GTF

可选择的工具有很多,这里简单举几个例子。测试GFF3文件内容参考前面GFF介绍

使用 AGAT 转换
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 转换
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";
使用 GenomeTools 转换
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、TransDecoder、Kent utils
# 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的转换,以上提到的工具都可以搞定,其实可以看到,不同工具转换之后的内容还是有一些差别的,我个人用的话会使用 AGATgffread,当然可能还有其他我不知道的工具,但是工具呢,“能抓到耗子”就好了,在不丢失必(重)要信息的情况下,用哪个,看自己喜欢喽。

参考

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

你可能感兴趣的:(NGS基础,大数据,linux)