这里借助biopython
模块
参考链接是 https://biopython.org/wiki/GFF_Parsing
这里BCBio
模块里GFF()
函数解析的内容和Bio
模块里SeqIO()
函数解析的内容很像
cds和外显子的关系
cds 是 coding sequence 的缩写
具体关系看下图 来自链接 https://www.jianshu.com/p/cc5cd7053d6e
开头结尾的外显子区可能会比cds长 ,因为开头结尾的外显子可能包括 UTR,非翻译区
处于中间的外显子和cds等同
首先是根据gff文件获取每条染色体的长度
from BCBio import GFF
in_handle = open("tunisia.gff",'r')
for rec in GFF.parse(in_handle):
for feature in rec.features:
if feature.type == "region":
chromo = feature.qualifiers['ID'][0]
chrid = chromo.split(":")[0]
chrLen = chromo.split("..")[1]
print(chrid,chrLen)
这里你的ID可能需要换成其他,这个得根据具体gff文件的内容定
获取gff文件里的基因都有哪些类型
from BCBio import GFF
from collections import Counter
biotype = []
in_handle = open("tunisia.gff",'r')
for rec in GFF.parse(in_handle):
for feature in rec.features:
if feature.type == "gene":
biotype.append(feature.qualifiers['gene_biotype'][0])
in_handle.close()
len(biotype)
biotype[0:15]
Counter(biotype)
统计每个蛋白编码基因有几个转录本
这里需要记住的是每个feature
对应的还有sub_feature
这个是和SeqIO
解析genbank
文件有差别的地方
gene
对应的 sub_features
是mRNA
,mRNA
对应的sub_features
是exon
或者cds
in_handle = open("pra-2.gff",'r')
for rec in GFF.parse(in_handle):
for feature in rec.features:
if feature.type == "gene":
gene_name = feature.qualifiers["gene"][0]
i = 0
for subfeature in feature.sub_features:
i = i + 1
print(gene_name, i)
去除指定基因类型的注释文件,
比如这个例子是去除注释文件中的所有蛋白编码基因
in_handle = open("tunisia.gff",'r')
fw = open("pra-3.gff",'w')
for rec in GFF.parse(in_handle):
tmp = rec.features
i = 0
index2delete = []
for feature in rec.features:
i = i + 1
if feature.type == "gene" and feature.qualifiers["gene_biotype"][0] == "protein_coding":
index2delete.append(i-1)
for counter,index in enumerate(index2delete):
index = index - counter
tmp.pop(index)
rec.features = tmp
GFF.write([rec],fw)
fw.close()
这里用到按照索引删除列表中的元素 ,这个逻辑暂时没有想明白,代码是
list_given = [1, 2, 3, 4, 5, 6, 7, 8, 9]
index_to_delete = [1, 3, 6]
for counter, index in enumerate(index_to_delete):
index = index - counter
list_given.pop(index)
————————————————
版权声明:本文为CSDN博主「CAAT9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/exm_further/article/details/112251558
好了今天的内容暂时先到这里了
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!