python - 如何找到 2 个序列之间的重叠,并将其返回

标签 python algorithm

我需要找出两个序列之间的重叠部分。重叠在第一个序列的左端和第二个序列的右端。 我希望函数找到重叠部分并将其返回。

我的序列是:

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/

相关文章:

mysql - SQL 中同一列中多个值的条件

algorithm - 寻找网络中最大流的 Ford Fulkerson 算法的运行时间分析

algorithm - 找到一个一般大小的互质数

java - 链表算法

algorithm - 给定一个有 n 个节点的红黑树,在任何根到叶路径上的红色节点的最大数量是多少?

java - 使用 Py4j 将 Python 对象发送到 Java

Python队列在获取下一个项目之前等待线程

python - 如何中断事件信息以进行记录

python - 如何自定义QComboBox

python - 进行以下数据帧宽到长格式转换的好方法?