0


,我有两个数字数据序列让我们说:
S1:1,6,4,9,8,7,5 和 S2:6,9,7,5
我想在左两个意义上找到一个序列比对- 左右。
所以我在问我之前使用了 2 种技术我实际上使用了匈牙利算法,但它不是顺序的,所以它没有给出好的结果
我使用了 Needleman-Wunsch 算法的修改版本,但我认为我可能做错了什么我已经挖掘了至少 4 个月的时间来寻找任何可以帮助我的东西,但我只找到了可能有帮助的遗传算法,但我想知道是否存在我可能还没有看到的算法?
所以正式提出我的问题:你将如何调整两个积极的数字(整数或双精度)序列?

4

1 回答 1

0

我相信您可以通过以下方式实现您的目标:

import string
from Bio import pairwise2
from Bio.pairwise2 import format_alignment

seq1 = "1649875"
seq2 = "6975"

numDict = {}
for x in range(0,10):
    for y in range(0,10):
        numDict[(str(x),str(y))] = -abs(x-y)
#print(numDict)

for a in pairwise2.align.globalds(seq1, seq2, numDict, -3, -1):
    print(format_alignment(*a)) #prints alignment with best score

#for a in pairwise2.align.globalms(seq1, seq2, 5, -5, -3, -1):
    print(format_alignment(*a))

globalds 对齐允许您使用自定义字典(在这种情况下,我创建了一个包含 1-9 范围内的数字的字典,并在配对时找到它们差异的绝对值)。如果您只想要一个统一的是/否评分系统,您可以执行类似 globalms 的操作,其中成功为 +5,失败为 -5。请注意,我建议在执行对齐时使用间隙惩罚。还要熟悉“全局”和“本地”对齐方式。关于 Pairwise2 biopython 模块的更多信息可以在这里找到:http: //biopython.org/DIST/docs/api/Bio.pairwise2-module.html

于 2017-08-04T17:55:50.973 回答