gtf文件转化为bed12

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gtf文件转化为bed12相关的知识,希望对你有一定的参考价值。

参考技术A bed文件的定义:
【生信】数据格式:bed12格式详解 - (jianshu.com)

bed文件定义中有12列,其中前三列是必须的。
bed12表示包含12列的bed文件,包含的信息最完整。
bed文件官方网页: https://m.ensembl.org/info/website/upload/bed.html

前三列:

这个例子也只给了前9列的信息

先使用convert2bed把gtf转化为bed6文件。再使用别人开发的工具把bed6文件转化为bed12文件。

或者使用gtf2bed
链接:
https://gffutils.readthedocs.io/en/latest/gtf2bed.html
参考:
https://www.jianshu.com/p/847801e8bf92
这篇文章作者写了一个python脚本可以把bed6转化为bed12。

本来我是想使用bedtools 把bed12文件提取出fasta文件,得到read的序列信息
所以才这么折腾

后面查了一下,可以直接使用cufflink中的gffread把gtf文件提取出对应的fasta文件
参考链接:
https://www.jianshu.com/p/566954bd5711
或者使用Tophat中的gtf_to_fasta

参考: https://www.tqwba.com/x_d/jishu/204915.html

python 在管道中将GTF转换为GFF转换

#!/usr/bin/python
# Slightly adapted from http://blog.nextgenetics.net/?e=27

import sys

def main():
    for line in sys.stdin.xreadlines():
      #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.
        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)


if __name__ == '__main__':
    main()

以上是关于gtf文件转化为bed12的主要内容,如果未能解决你的问题,请参考以下文章

基因组注释文件(GTF/GFF)格式介绍

基因组注释文件(二) gff 和 gtf文件格式说明

Cuffmerge

读取gff/gtf文件的内容

gwas分析时数据格式转换

25转录本(transcript)组成(gtf文件的第三列)