我需要找出两个序列之间的重叠部分。重叠在第一个序列的左端和第二个序列的右端。 我希望函数找到重叠部分并将其返回。
我的序列是:
s1 = "CGATTCCAGGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC"
s2 = "GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTCGTCCAGACCCCTAGC"
我的函数应该命名
def getOverlap(left, right)
以s1
为左序列,s2
为右序列。
结果应该是
'GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC'
感谢任何帮助。
最佳答案
看看 difflib
图书馆,更准确地说是 find_longest_match()
:
import difflib
def get_overlap(s1, s2):
s = difflib.SequenceMatcher(None, s1, s2)
pos_a, pos_b, size = s.find_longest_match(0, len(s1), 0, len(s2))
return s1[pos_a:pos_a+size]
s1 = "CGATTCCAGGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC"
s2 = "GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTCGTCCAGACCCCTAGC"
print(get_overlap(s1, s2)) # GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC
关于python - 如何找到 2 个序列之间的重叠,并将其返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128763/