千家信息网

如何将GFF转换为GTF文件

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍了如何将GFF转换为GTF文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。存储基因和转录本的结构信息,gtf和gff
千家信息网最后更新 2024年11月23日如何将GFF转换为GTF文件

这篇文章主要介绍了如何将GFF转换为GTF文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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

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

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

1. gffread

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

gffread -T GCF_000001405.38_GRCh48.p12_genomic.gff  -o hg38.gtf

生成的gtf示例如下

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。用法如下

gff3ToGenePred  GCF_000001405.38_GRCh48.p12_genomic.gff  hg38.GenePredgenePredToGtf database hg38.GenePred hg38.gtf

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

生成的gtf示例如下

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%的场景,对于不同数据库中的文件,只需要自己写脚本提取这些信息,就可以了。

感谢你能够认真阅读完这篇文章,希望小编分享的"如何将GFF转换为GTF文件"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0