一、从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文件更多的富信息,因此在许多基因组注释任务中得以广泛应用。