最近一项目被RefSeq数据库中gff注释格式折磨死,流程总是不能正确识别,各种方法改了格式,勉强运行,后续步骤继续报错,想着以后肯定还有更多这种情况,自己对文件格式的理解,写了格式转换脚本。
GFF和GTF格式非常类似,都被用来基因结构注释,由9列表示不同意义的特征组成,多行共同注释一个基因的详细结构。然而两者又有很大差异,脚本处理起来也是不同。相比而言GTF处理起来简单些,第三列feature
可能是gene, transcript, exon, CDS这少数几种情况,最重要的描述基因类型名称的第九列attr
很统一,都会包括一般常用的gene_id, gene_biotype, transcript_id, transcript_biotype等特征。而GFF文件包括一个明确的层级关系,gene是transcript(存在mRNA,lncRNA,ncRNA,rRNA,tRNA等多种不同组织方式)的父节点,而transcript又是exon和CDS的父节点,特征层级不同也决定了第九列attr
的注释信息不同,gene id, name等信息也是层次关系关联,文件处理较麻烦。
NCBI RefSeq数据库中GFF注释格式感觉更是复杂怪异,废话不多说,直接上代码,愚蠢方法手撕GFF
1 | #!/usr/bin/env python |
GFF格式包括gene, transcript, exon(CDS)三个层级,其中transcript进行上下关联最为重要,这里脚本以transcript作为键值进行数据处理,另外脚本还有一个假设就是gene, transcript对应ID在文件中唯一。