GTF與GFF文件格式的區(qū)別與轉(zhuǎn)換

GTF與GFF文件都是用于存儲注釋信息的文本類型弧满,經(jīng)常可以看到二者格式之間的相互轉(zhuǎn)換此熬。二者的名字相似庭呜,連內(nèi)容都極為相似,那么二者的差異究竟在哪里呢犀忱?

  • GFF (general feature format): 可以用于任何基因組注釋的存儲
  • GTF (gene transfer format): 嚴格的用于基因注釋信息的存儲

GFF

GFF文件是一種用來描述基因組特征的文件募谎,現(xiàn)在我們所使用的大部分都是第三版)(GFF3)。gff文件除gff1以外均由9列數(shù)據(jù)組成阴汇,前8列在gff的3個版本中信息都是相同的近哟,只是名稱不同。

第9列attributes的內(nèi)容存在很大的版本特異性鲫寄,9列信息(以gff3為例)分別是:

1 2 3 4 5 6 7 8 9
seqid annotation source feature type start end score strand phase attributes
  • seqid :參考序列的id吉执。

  • annotation source:注釋的來源。如果未知地来,則用點(.)代替戳玫。一般指明產(chǎn)生此gff3文件的軟件或方法。

  • feature type: 類型未斑,此處的名詞是相對自由的咕宿,建議使用符合SO慣例的名稱(sequenceontology),如gene蜡秽,repeat_region府阀,exon,CDS等芽突。

  • start coordinate:開始位點试浙,從1開始計數(shù)(區(qū)別于bed文件從0開始計數(shù))。

  • end coordinate:結(jié)束位點寞蚌。

  • score:得分田巴,對于一些可以量化的屬性钠糊,可以在此設(shè)置一個數(shù)值以表示程度的不同。如果為空壹哺,用點(.)代替抄伍。

  • strand:“+”表示正鏈,“-”表示負鏈截珍,“.”表示不需要指定正負鏈。

  • phase :步進箩朴。對于編碼蛋白質(zhì)的CDS來說岗喉,本列指定下一個密碼子開始的位置燕雁」崭瘢可以是0、1或2金踪,表示到達下一個密碼子需要跳過的堿基個數(shù)胡岔。

  • attributes:屬性。一個包含眾多屬性的列表枷餐,格式為“標簽=值”(tag=value)靶瘸,不同屬性之間以分號相隔,這一列最后沒有分號毛肋。如:

    ID=geneAExon1;Name=geneA;Parent=geneA;Organism=human
    
  • 幾個attributes舉例:

    • ID:type的標識怨咪;
    • Name:type的展示名稱。Name的值在可視化的時候得到展示润匙。因此诗眨,Name可以根據(jù)自己展示的需要隨意取值;
    • Parent :指明type所從屬的上一級ID孕讳。用于將exons聚集成transcript辽话,將transripts聚集成gene肄鸽。

GFF允許使用#作為注釋符號,例如很多GFF文件都會使用如下的兩行來表明其版本其創(chuàng)建日期:

## gff-version 2
## created 11/11/11 

GFF文件每一列所代表的含義前面表格中有油啤,但請注意典徘,它的第3列feature type是不受約束的,你可以使用任意的名稱益咬,但也不要太淘氣~用一些適當?shù)拿Q對于后面的分析會有很大的幫助逮诲。

我們需要注意的是GFF文件的第9列知残,從第二版開始(GFF2)吆鹤,所有的屬性都以標簽=值的方式呈現(xiàn)钉答,各個屬性之間以;作為分隔符

ID=geneAExon1;Name=geneA;Parent=geneA;Organism=human

在最新版本的GFF文件中(GFF3)司训,有一些是已經(jīng)預(yù)先定義的屬性特征宾肺,并且這些特征往往還有特殊的含義:ID這個標簽實在各行都要有的铺董;另外有一個Parent的屬性遣铝,它指明type所從屬的上一級ID爬橡。

GTF

當前所廣泛使用的GTF格式為第二版(GTF2)冻河,它主要是用來描述基因的注釋箍邮。GTF格式有兩個硬性標準:

  • 根據(jù)所使用的軟件的不同,feature types是必須注明的叨叙。
  • 第9列必須以gene_id以及transcript_id開頭
    GTF文件的第9列同GFF文件不同锭弊,雖然同樣是標簽與值配對的情況,但標簽與值之間以空格分開擂错,且每個特征之后都要有分號;(包括最后一個特征)
1 2 3 4 5 6 7 8 9
seqname source feature start end score strand frame attributes
  • seqname: 序列的名字味滞。通常格式染色體ID或是contig ID。

  • source:注釋的來源钮呀。通常是預(yù)測軟件名或是公共數(shù)據(jù)庫剑鞍。

  • start:開始位點,從1開始計數(shù)爽醋。

  • end:結(jié)束位點蚁署。

  • feature :基因結(jié)構(gòu)。CDS子房,start_codon形用,stop_codon是一定要含有的類型。

  • score :這一列的值表示對該類型存在性和其坐標的可信度证杭,不是必須的田度,可以用點“.”代替。

  • strand:鏈的正向與負向解愤,分別用加號+和減號-表示镇饺。

  • frame:密碼子偏移,可以是0送讲、1或2奸笤。

  • attributes:必須要有以下兩個值:

    • gene_id value; 表示轉(zhuǎn)錄本在基因組上的基因座的唯一的ID惋啃。 gene_id與value值用空格分開,如果值為空监右,則表示沒有對應(yīng)的基因边灭。
    • transcript_id value; 預(yù)測的轉(zhuǎn)錄本的唯一ID。transcript_id與value值用空格分開健盒,空表示沒有轉(zhuǎn)錄本绒瘦。
  • attribures之后有可能會有comments選項,以“#”開頭扣癣,一直到行末尾惰帽。

區(qū)別

gtf2的內(nèi)容和gff3也是很相似的,區(qū)別只在其中的3列:

- GTF2 GFF3
feature type 根據(jù)軟件名稱注明 可以是任意名稱
attributes 空格分隔 ‘=’分隔

格式轉(zhuǎn)換

使用Cufflinks里面的工具"gffread":

#gff2gtf
gffread my.gff3 -T -o my.gtf
#gtf2gff
gffread merged.gtf -o- > merged.gff3

使用腳本進行格式轉(zhuǎn)換

GTF to GFF

import sys

inFile = open(sys.argv[1],'r')

for line in inFile:
  #skip comment lines that start with the '#' character
  if line[0] != '#':
    #split line into columns by tab
    data = line.strip().split('\t')

    #parse the transcript/gene ID. I suck at using regex, so I usually just do a series of splits.
    #transcript_id和gene_ids是GTF第九列肯定存在的
    transcriptID = data[-1].split('transcript_id')[-1].split(';')[0].strip()[1:-1]
    geneID = data[-1].split('gene_id')[-1].split(';')[0].strip()[1:-1]

    #replace the last column with a GFF formatted attributes columns
    #I added a GID attribute just to conserve all the GTF data
    data[-1] = "ID=" + transcriptID + ";GID=" + geneID

    #print out this new GFF line
    print '\t'.join(data)

腳本運行

python myScript.py myFile.gtf > myFile.gff

GTF to GFF

import sys

inFile = open(sys.argv[1],'r')

for line in inFile:
  #skip comment lines that start with the '#' character
  if line[0] != '#':
    #split line into columns by tab
    data = line.strip().split('\t')

    ID = ''

    #if the feature is a gene 
    if data[2] == "gene":
      #get the id
      ID = data[-1].split('ID=')[-1].split(';')[0]

    #if the feature is anything else
    else:
      # get the parent as the ID
      ID = data[-1].split('Parent=')[-1].split(';')[0]
    
    #modify the last column
    data[-1] = 'gene_id "' + ID + '"; transcript_id "' + ID

    #print out this new GTF line
    print '\t'.join(data)

參考資料:

  1. Method: GFF/GTF conversion and differences
  2. NGS數(shù)據(jù)格式之gff/gtf
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末父虑,一起剝皮案震驚了整個濱河市该酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌士嚎,老刑警劉巖呜魄,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異航邢,居然都是意外死亡耕赘,警方通過查閱死者的電腦和手機骄蝇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門膳殷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人九火,你說我怎么就攤上這事赚窃。” “怎么了岔激?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵勒极,是天一觀的道長。 經(jīng)常有香客問我虑鼎,道長辱匿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任炫彩,我火速辦了婚禮匾七,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘江兢。我一直安慰自己昨忆,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布杉允。 她就那樣靜靜地躺著邑贴,像睡著了一般席里。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拢驾,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天奖磁,我揣著相機與錄音,去河邊找鬼繁疤。 笑死署穗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的嵌洼。 我是一名探鬼主播案疲,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼麻养!你這毒婦竟也來了褐啡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鳖昌,失蹤者是張志新(化名)和其女友劉穎备畦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體许昨,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡懂盐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了糕档。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莉恼。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖速那,靈堂內(nèi)的尸體忽然破棺而出俐银,到底是詐尸還是另有隱情,我是刑警寧澤端仰,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布捶惜,位于F島的核電站,受9級特大地震影響荔烧,放射性物質(zhì)發(fā)生泄漏吱七。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一鹤竭、第九天 我趴在偏房一處隱蔽的房頂上張望踊餐。 院中可真熱鬧,春花似錦诺擅、人聲如沸市袖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苍碟。三九已至酒觅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間微峰,已是汗流浹背舷丹。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜓肆,地道東北人颜凯。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像仗扬,于是被迫代替她去往敵國和親症概。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 原文:http://blog.sina.com.cn/s/blog_751bd9440102v72b.html 一...
    簡單點lili閱讀 4,102評論 0 8
  • fastafasta格式是最基本的表示序列信息(核苷酸或者蛋白質(zhì))的格式早芭。這里簡單介紹下彼城,fasta格式的文件通常...
    tianzhanlan閱讀 4,904評論 0 10
  • 我們在做生物分析的時候,經(jīng)常會碰到GFF格式的文件以及GTF格式的注釋文件退个。他們有著相似的名字募壕,甚至連內(nèi)容都極為相...
    dasdadf閱讀 53,128評論 4 63
  • 慢慢看,憋著急语盈!很有用舱馅! 前言: 首先呢,在你的Linux系統(tǒng)中新建一個文件刀荒,Thanos.txt(紫薯俠賜予你力...
    劉小澤閱讀 3,284評論 6 33
  • 英雄兮項羽代嗤,這天下之主不要也罷,就留給那工于心計的劉邦照棋,上天入地资溃,碧落黃泉武翎,自有你遨游之處烈炭。 —— 題記 項羽究竟...
    幽幽墨嘆閱讀 373評論 0 0