[Py008]|[Py008] gff文件处理2

根据第三列的type,提取mRNA及相应exon的信息。
【[Py008]|[Py008] gff文件处理2】和[Py005]是一样的,但是这次换一种处理思路。
思路:
? 每次读取一行,拆分为list;
? 将第三列的特征值追加到新命令的list(type)中;
? 如果第三列的特征值为mRNA,打印该行;
? 如果第三列的特征值为exon,并且通过true_exon函数判断符合“mRNA; exon; exon”之类的顺序,则打印该行。
?

import redef true_exon(list): list = list[::-1] list = "; ".join(list) if re.match(r'(?:exon; )+mRNA', list): return True else: return Falsetype = [] 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()

    推荐阅读