Rosalind overlap graphs

发布于 2024-03-10  3 次阅读


def grph(path):
    def is_overlap(s, t, k=3):
        return s[-k:] == t[:k]

    with open(path) as fp:
        seqs = []
        names = []
        current_seq = ""
        for line in fp:
            line = line.strip()
            if line.startswith('>'):
                if current_seq:
                    seqs.append(current_seq)
                    current_seq = ""
                names.append(line[1:])  # 去掉 ">" 符号
            else:
                current_seq += line
        # 处理最后一个序列
        if current_seq:
            seqs.append(current_seq)

    res = []
    for i in range(len(seqs)):
        for j in range(len(seqs)):
            if i != j and is_overlap(seqs[i], seqs[j]):
                res.append(f"{names[i]} {names[j]}")

    result = '\n'.join(res)
    return result

print(grph(r'rosalind_grph.txt'))
最后更新于 2024-03-10