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