我们在做生物分析的时候,经常会碰到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

作者:西瓜要吃我
链接:https://www.jianshu.com/p/48b5a0972301
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

GTF/GFF文件的差异及其相互转换的更多相关文章

  1. diff 比较两个文件的差异

    功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对 ...

  2. delphi 创建DBASE和FOXPRO两类DBF数据文件的差异

    delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...

  3. 文件夹差异文件对比工具 meld

    /***************************************************************************************** * 文件夹差异文件 ...

  4. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  5. 从细菌GFF文件提取CDS序列并转换为氨基酸序列

    最近在上生物信息学原理,打算记录一些课上的作业.第一次作业:如题. 基本思路: 1.从GFF中读取CDS的起始终止位置以及正负链信息.GFF格式见http://blog.sina.com.cn/s/b ...

  6. git使用记录八:不同提交的指定文件的差异

    不同提交的指定文件的差异 git diff commit-id1 commit-id2 path-to-filename

  7. 使用DOS比较两个txt文件的差异

    将两个文件放入到同一个文件夹下 DOS下提供了FC命令 点击开始->运行->输入cmd,进入DOS下,进入指定目录,输入FC a.txt b.txt进行比较,下面会显示出之间的差异

  8. rsync 文件同步(差异复制)

    Rsync 是一种快速且极其通用的文件复制工具.以其 Delta 传输算法,通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量 Rsync 的几种复制方式:Local,SSH 和 R ...

  9. git比较两个分支的文件的差异

    Git diff branch1 branch2 --stat   //显示出所有有差异的文件列表 Git diff branch1 branch2 文件名(带路径)   //显示指定文件的详细差异 ...

随机推荐

  1. C#获取当前站点的根地址

    /// <summary> /// 得到当前网站的根地址 /// </summary> /// <returns></returns> protecte ...

  2. 268. Missing Number序列中遗失的数字

    [抄题]: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is ...

  3. 虚拟机ubuntu18.04设置静态IP

    说明: 网关:192.168.8.2 待设置静态IP:192.168.8.25 1.编辑:vi /etc/netplan/01-network-manager-all.yaml 打开以后内容如下: # ...

  4. 10、差异基因topGO富集

    参考:http://www.biotrainee.com/thread-558-1-1.html http://bioconductor.org/packages/3.7/bioc/ http://w ...

  5. MCMC 破译密码 http://mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography/

    # AIM: To Decrypt a text using MCMC approach. i.e. find decryption key which we will call cipher fro ...

  6. oracle使用PLSQL免安装客户端

    2. 下载Oracle Instant Client (32-bit) 只需要下载instantclient-basic-nt-11.2.0.3.0.zip就可以了,其它的都是一些根据不同需要扩展的包 ...

  7. DataTable 转换成匿名集合类

    using System;using System.CodeDom.Compiler;using System.Collections.Generic;using System.Data;using ...

  8. docker搭建gitbook服务

    Gitbook Gitbook简介 GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书,GitBook 并非关于 Git ...

  9. Struts2 让跳转指定执行某个方法

    很多时候,我们想让jsp页面中的某个超链接,点击后执行后台的某个方法,里面该如何做呢? 这里方法很多种 我举例两种: 1.在struts.xml配置,配置如下: <package name=&q ...

  10. 利用Response.Buffer做类似异步效果

    在page_load加入以下代码 Response.Buffer = false;  //这句话非常重要 for (int i = 0; i < 10; i++) { Thread.Sleep( ...