生物信息编程Py100Skills

[Py005] gff文件处理1

2018-10-17  本文已影响0人  安哥生个信

根据第3列的type,提取mRNA及相应exon的信息

思路:

​ 每次读取一行,提取到mRNA特征值后,写出该行;

​ 判断下一行是否具有mRNA或exon特征值,如果有的话,递归自动判断下下一行

import re
import sys

sys.setrecursionlimit(1000000)  # 设置最高递归次数

def autoNext(file, out):
    content = next(file)
    if re.search("\tmRNA\t", content) or re.search(r"\texon\t", content):
        out.write(content)
        return autoNext(file, out)


with open("genome.gff", "r") as gff:
    outGFF = open("mRNA.tmp.gff", "w")
    try:
        while gff:
            line = next(gff)
            if re.search(r"\tmRNA\t", line):
                outGFF.write(line)
                autoNext(gff, outGFF)
                outGFF.flush() # 及时清理缓存
    except StopIteration: # 防止最后next完最后一行后报错
        pass
    outGFF.close()
上一篇下一篇

猜你喜欢

热点阅读