[Py005] gff文件处理1

作者: 安哥生个信 | 来源:发表于2018-10-17 12:19 被阅读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()
    

    相关文章

      网友评论

        本文标题:[Py005] gff文件处理1

        本文链接:https://www.haomeiwen.com/subject/qwglzftx.html