您的位置:

GTFF文件详解

一、从GTF文件下载开始

下载GTFF(Gene Transfer Format)文件可以通过很多网站进行,只需通过基因或基因组名称搜索即可。一般来说,GTFF文件在生物医学研究的基因分析中经常被使用。

以下是Python脚本的实例,可通过指定基因名自动下载GTF文件:

import urllib.request

def download_gtf(gene):
    url = "https://ftp.ncbi.nih.gov/genomes/refseq/vertebrate_other/Homo_sapiens/annotation_releases/109.20210212/GCF_000001405.39_GRCh38.p13/GCF_000001405.39_GRCh38.p13_genomic.gtf.gz"
    file_name = gene + ".gtf.gz"
    urllib.request.urlretrieve(url, file_name)

download_gtf("TP53")

二、GTFF文件中的mRNA

GTFF文件中包含了所有的mRNA(编码一条蛋白质基因),基因型和外显子组(exon)信息等,因此,它的解析对于研究生物信息学非常重要。

在下面的Python脚本中,我们从下载下来的GTF文件中寻找出第一个mRNA,并打印出来:

def find_first_mrna(gtf_file):
    with open(gtf_file, 'r') as f:
        for line in f:
            if "mRNA" in line:
                print(line)
                break

find_first_mrna("TP53.gtf")

三、打开并制作GTFF文件

GTFF文件可以使用文本编辑器(如Sublime Text和Notepad++)打开。为了制作自己的GTFF文件,只需按照GFF(General Feature Format)的格式编写一个文本文件即可。以下是一个简单的例子:

##gff-version 3
chr1    Ensembl gene    11869   14409   .       +       .       gene_id "ENSG00000223972"; gene_name "OR4F5"; gene_source "ensembl"; gene_biotype "protein_coding";
chr1    miRNA   exon    11869   12227   .       +       .       gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "1";
chr1    miRNA   exon    12613   12721   .       +       .       gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "2";
chr1    miRNA   exon    13221   14409   .       +       .       gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "3";
chr1    Ensembl transcript      11869   14409   .       +       .       gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; gene_name "OR4F5"; gene_source "ensembl"; gene_biotype "protein_coding"; transcript_name "OR4F5-202"; transcript_source "ensembl"; transcript_biotype "protein_coding";

四、GTFF文件是什么

GTFF文件是一个用于描述生物进化基因组特性的通用文件格式,其中包含了有关DNA序列的注释信息。在研究生物信息学方面,对GTFF文件的处理是至关重要的,并且它常常与GFF文件进行比较使用,这两个文件格式都被广泛应用于基因组注释和数据规整。

五、使用GTFF文件

GTFF文件在生物医学研究中经常被使用,可以通过 BioPython 库进行解析及数据分析。以下是一个简单的示例程序,可以将GTF文件转换成CSV表格:

import csv
from collections import defaultdict
from typing import List

def parse_gtf(gtf_file_path: str):
    """
    :param gtf_file_path: path to the input GTF file
    :return: parsed GTF data, as a dictionary
    """
    gtf_data = defaultdict(list)
    with open(gtf_file_path) as gtf_file:
        gtf_reader = csv.reader(gtf_file, delimiter='\t')
        for row in gtf_reader:
            if row[0].startswith("#"):
                continue
            gtf_data[row[2]].append(row)
    return dict(gtf_data)

def write_to_csv(data: List[dict], csv_file_path: str):
    """
    :param data: list of data dictionaries, each representing a row
    :param csv_file_path: path to the output CSV file
    :return: None
    """
    with open(csv_file_path, mode='w') as csv_file:
        fieldnames = data[0].keys()
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writeheader()
        for row in data:
            writer.writerow(row)

gtf_data = parse_gtf('TP53.gtf')
write_to_csv(gtf_data['exon'], 'TP53_exons.csv')

六、如何打开和查看GTFF文件

GTFF文件可以使用文本编辑器(例如 Sublime Text 和 Notepad++)打开和查看。一些命令行工具,例如Gffread,也可以对GTFF文件进行解析和查看。

七、GTFF文件转换成表格

在研究生物信息学方面,需要将GTFF文件转换为表格进行数据分析和可视化。以下是一个简单的Python脚本示例,用于将GTF文件转换为表格形式:

import csv

def gtf_to_table(gtf_file):
    with open(gtf_file, 'r') as f, open('output.txt', 'w') as out:
        writer = csv.writer(out, delimiter='\t')
        for line in f:
            if not line.startswith('#'):
                feature = line.split('\t')
                info = feature[8]
                gene_id = ""
                transcript_id = ""
                gene_name = ""
                
                info = info.split('; ')

                for i in range(len(info)):
                    if 'gene_id' in info[i]:
                        gene_id = info[i].split()[-1][1:-1]
                    elif 'transcript_id' in info[i]:
                        transcript_id = info[i].split()[-1][1:-1]
                    elif 'gene_name' in info[i]:
                        gene_name = info[i].split()[-1][1:-1]

                writer.writerow([feature[0], feature[3], feature[4], feature[2], gene_id, transcript_id, gene_name])

gtf_to_table('TP53.gtf')

八、GFF文件和GTFF文件的选择

GFF(General Feature Format)和GTFF文件格式都被广泛应用于基因组注释和数据规整方面。GFF文件是GFF格式的文本文件,其目的是为了描述一个物种的基因组结构信息。GTFF文件是GFF格式的子集,它描述的是参考基因组序列的注释信息,由于其包含比GFF文件更多的富信息,因此在许多基因组注释任务中得以广泛应用。