python - 在汉明距离为

python - 在汉明距离为,第1张

我有2个文件,file1和file2 文件1包含完整字符串的所有4-mer,5-mer和6-mer子串" abcdef"

file2有更长的字符串,如

ddghtgabcdtttfwe

ddghtgabdatttfwe

hhttaaddsbcdeggd

等。我想看看file2中的字符串是否在file1中的字符串中匹配,允许一些不匹配(最大汉明距离2)。例如 ddghtgabcdtttfwe和ddghtgabcdatttfwe分别是子串abcd和abcd,abcde的命中。你能在python中建议一个好方法吗

最佳答案:

1 个答案:

答案 0 :(得分:0)

部分解决方案:

def hamming(s1,s2):
    return len([(c1,c2) for (c1,c2) in zip(s1,s2) if c1 != c2])

然后:

def almostIn(s1,s2):
    n = len(s1)
    for s in (s2[i:i n] for i in range(1   len(s2)-n)):
        if hamming(s1,s) <= 2: return True
    return False

如果在s2中出现s1且汉明距离<= 2,则后面的函数将返回True。有相同数量的重新扫描相同的字符,因此这可能不是最佳的,但可能对您的预期应用程序来说足够好。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复