Python-Extract来自多个Fasta文件的最长序列?

时间:2016-03-11 11:40:24

标签: python bioinformatics fasta

我已经看到这个问题在其他地方已有答案,但涉及使用Biopython。我不想包含额外的库,因为它会减慢我的实现速度。任何人都可以建议任何方法来解决这个问题。

1 个答案:

答案 0 :(得分:1)

FASTA是一种非常简单的格式,因此您可以在几行代码中滚动自己的解析器,例如。

def iter_fasta(path):
    with open(path) as handle:
        header = None
        buf = []
        for line in handle:
            if line.isspace():
                continue  # Omit empty lines.

            line = line.strip()
            if line.startswith(">"):
                if buf:
                    assert header is not None
                    yield header, "".join(buf)
                    del buf[:]

                header = line[1:]  # Drop the '>'.
            else:
                buf.append(line)

        # Handle the last record.
        if buf:
            yield header, "".join(buf)

最长的序列将是

longest = max(iter_fasta(path), key=lambda p: len(p[1]))