【发布时间】:2012-04-09 13:00:21
【问题描述】:
好的,这就是我想要做的:
获取两个以上的字符串并“对齐”它们(没有 DNA/RNA 序列等,只是常规字符串,每个字符串中的项目不超过 1000 个)
我已经完成了一些成对对齐(对齐两个字符串)的工作,但是当我尝试对齐多个字符串时,“间隙”给我带来了一些问题。
示例(我目前正在测试):
ABCDEF
ABGHCEEF
AJKLBCDYEOF
AB--CDEF
ABGHCEEF
=======================
AB--C-EF
A-B--C--E-F
AJKLBCDYEOF
=======================
A----C--E-F
还有另一个(更具说明性的)示例:
http://nest.drkameleon.com
http://www.google.com
http://www.yahoo.com
http://nest.drkameleon.com
http://-www.--google--.com
=======================
http://----.------le--.com
http://----.------le--.com
http://-www.-----yahoo.com
=======================
http://----.----------.com
我目前在做什么:
- 对字符串进行排序(较长的字符串排在最前面)
- 对齐第一对:A-B 并得到结果(比如说
R1) - 然后对齐第二对:
R1和C(结果为R2) - 然后对齐第三对:
R2和D - 等等……
那么你的想法是什么?我怎么能这样做呢?有没有更好的办法? (当然,一定有……)
我宁愿在 Perl/Python 或类似的东西中这样做,但是任何类型的代码/参考都会受到欢迎! :-)
【问题讨论】:
-
您能否发布一些输入和输出的示例?我不是 100% 你真正想做的事。
-
还可以看看这篇文章,它详细解释了python中的LCS问题。 wordaligned.org/articles/longest-common-subsequence#toc21
-
@Li-aungYip 这就是我的意思:stackoverflow.com/questions/10065293/how-to-align-2-strings
-
@luke14free 这是正确的;虽然,它只处理成对对齐。我需要的是一种对齐超过 2 个字符串序列的方法...
-
我建议你给我们一些样本组来处理,这样我们就可以知道字符串的不同之处以及它们的相似之处。
标签: python objective-c perl lcs sequence-alignment