[Py008] gff文件处理2

根据第三列的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()

你可能感兴趣的:([Py008] gff文件处理2)