根据第三列的type,提取mRNA及相应exon的信息。
和[Py005]是一样的,但是这次换一种处理思路。
思路:
每次读取一行,拆分为list;
将第三列的特征值追加到新命令的list(type)中;
如果第三列的特征值为mRNA,打印该行;
如果第三列的特征值为exon,并且通过true_exon函数判断符合“mRNA;exon;exon”之类的顺序,则打印该行。
import re
def true_exon(list):
list = list[::-1]
list = ";".join(list)
if re.match(r'(?:exon;)+mRNA', list):
return True
else:
return False
type = []
outGFF = open('out.gff', 'w')
for line in open('in.gff'):
line_list = line.strip().split('\t')
type.append(line_list[2])
if line_list[2] == 'mRNA':
outGFF.write(line)
if line_list[2] == 'exon' and true_exon(type):
outGFF.write(line)
outGFF.close()
网友评论