前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解GFF转换为GTF文件

详解GFF转换为GTF文件

作者头像
生信修炼手册
发布2020-05-08 16:41:25
4.2K0
发布2020-05-08 16:41:25
举报
文章被收录于专栏:生信修炼手册生信修炼手册

欢迎关注”生信修炼手册”!

存储基因和转录本的结构信息,gtf和gff3两种格式都可以。在实际分析时,会需要转换两种格式。比如,NCBI 只提供了GFF格式的下载文件,我们需要转换成GTF文件之后再使用。

完成这一任务,可以自己编写脚本,也可以借助现成的工具。接下来看下每种工具的使用方法和特点。使用NCBI的GFF文件进行测试,链接如下

ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/001/405/GCF_000001405.38_GRCh38.p12/GCF_000001405.38_GRCh38.p12_genomic.gff.gz

1. gffread

gffread是由cufflinks的开发团队提供的一款读取gff文件的工具,可以实现gff文件转换为gtf文件,用法如下

代码语言:javascript
复制
gffread -T GCF_000001405.38_GRCh38.p12_genomic.gff  -o hg38.gtf

生成的gtf示例如下

代码语言:javascript
复制
NC_000001.11    BestRefSeq      exon    11874   12227   .       +       .       transcript_id "rna0"; gene_id "gene0"; gene_name "DDX11L1";

gffread 生成的gtf文件中只提供了exonCDS这两种类型的结构信息,第九列的属性也只有transcript_id, gene_id, gene_name这3种属性,最关键的是, 这些ID没有任何含义,我们更想要的是基因的Entrez ID和转录本的RefSeq 编号。

2. UCSC

UCSC采用GenePred 格式存储基因和转录本的结构信息, 通过UCSC的小工具,我们可以借助GenePred格式来实现GFF转换成GTF。用法如下

代码语言:javascript
复制
gff3ToGenePred  GCF_000001405.38_GRCh38.p12_genomic.gff  hg38.GenePred
genePredToGtf database hg38.GenePred hg38.gtf

首先用gff3ToGenePred转换为GenePred格式,然后在利用genePredToGtf转换为GTF格式。

生成的gtf示例如下

代码语言:javascript
复制
NC_012920.1    hg38.GenePred    transcript    15956    16023    .    -    .    gene_id "gene60958"; transcript_id "rna171196";  gene_name "gene60958";

相比gffreads, UCSC提供的类型更多,包括以下几种

1. exon 2. CDS 3. start_codon 4. stop_codon 5. transcript

虽然区间的类型变多了,但是属性的问题和gffread是一样的,除了gene_name属性有价值外,其他属性都没有价值。

当然,网上也有各种别人编写的脚本,但是或多或少多都存在问题。最佳的方案还是自己来编写,首先需要搞清楚GTF文件中,我们需要哪些类型的区间信息。

对于GTF的实际使用而言,只需要exon区间信息就可以区分不同的转录本了,而且在定量的过程中,也是只需要参考exon的位置信息。所以,自己编写转换脚本,只需要保留eoxn信息。

另外一个问题就是,第九列提供哪些属性。根据我的经验,只需要以下6个属性

  1. gene_id
  2. gene_name
  3. transcript_id
  4. transcript_name
  5. gene_type
  6. transcript_type

gene_id可以用来保存不同数据库中的基因ID,比如NCBI Entrez Id, Ensembl gene Id, 当然也可以和gene_name属性保持一致;gene_name属性用来保存gene symbol, 相比id, symbol在文章中的使用频率更高。

transcript_idtranscript_name表征转录本的id和名称,可以是RefSeq ID,也可以是Ensembl transcript id, 用于区分不同的转录本。

gene_typetranscript_type表示基因和转录本的类型,比如是protein_coding, 还是lncRNA, rRNA等。在分析时,我们通常会根据类型选择其中的部分转录本来分析,比如只分析蛋白编码的转录本。

以上6种属性就能够满足几乎100%的场景,对于不同数据库中的文件,只需要自己写脚本提取这些信息,就可以了。

·end·

—如果喜欢,快分享给你的朋友们吧—

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. gffread
  • 2. UCSC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档