我有一些绳子
['SGALWDV', 'GALWDVP', 'ALWDVPS', 'LWDVPSP', 'WDVPSPV']
这些字符串部分重叠。如果您手动重叠它们,您将得到:
^{pr2}$
我想要一种从重叠字符串列表到python中最终压缩字符串的方法。我觉得这一定是一个问题,有人已经解决了,并试图避免重蹈覆辙。我现在能想到的方法要么是蛮力,要么是使用生物塞隆和序列比对器变得比我想要的更复杂。我只想用简单的方式把它们合并起来。在
有人对用python实现这一点的好方法有什么建议吗?谢谢!在
Tags:
要确定两个字符串
a
和b
的重叠,可以检查b
的前缀是否是a
的后缀。然后,您可以在一个简单的循环中使用该检查,聚合结果并根据重叠对列表中的下一个字符串进行切片。在或使用
^{pr2}$reduce
:这可能不是超高效的,复杂度大约为O(nk),n是列表中的字符串数,k是每个字符串的平均长度。只需测试
b
的假定重叠的最后一个字符是否是a
的最后一个字符,从而减少生成器表达式中字符串切片和函数调用的数量,从而提高效率:下面是一个快速排序解决方案:
输出:
^{pr2}$此程序按每个元素第一个字符的索引值对
s
进行排序,试图找到最大化第一个元素与所需输出之间重叠距离的字符串。在我提出的解决方案有一个更具挑战性的测试列表:
基本上,代码将每个字符串/片段与列表中的第一个进行比较,并找到最佳匹配(大部分重叠)。它逐步合并列表,合并最佳匹配项并删除单个字符串。代码假定字符串/片段之间没有无法填充的间隙(否则答案可能不会导致尽可能长的汇编)。可以通过将起始字符串/片段随机化来解决)。还假设不存在反向补码(contig assembly的错误假设),这将导致无意义/不匹配的字符串/片段。我已经包含了一种限制最小匹配要求(更改bestMatch[0]值)以防止错误匹配的方法。最后一个假设是所有匹配都是精确的。在装配序列时允许不匹配的灵活性使得问题变得相当复杂。我可以提供一个解决方案,组装错配应要求。在
相关问题 更多 >
编程相关推荐