Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 smith-waterman算法选择多个对齐方式_Python 2.7_Matrix_Alignment_Dynamic Programming_Bioinformatics - Fatal编程技术网

Python 2.7 smith-waterman算法选择多个对齐方式

Python 2.7 smith-waterman算法选择多个对齐方式,python-2.7,matrix,alignment,dynamic-programming,bioinformatics,Python 2.7,Matrix,Alignment,Dynamic Programming,Bioinformatics,我想将一个小序列S1与另一个较大的核苷酸序列S2对齐,例如: S1: acgtgt S2: ttcgtgacagt... 在本例中,s1在s2中击中两个位置:cgtg和acgt,s2中有间隙。我想使用smith-waterman算法,但我的问题是:如果两条路线有两个不同的分数,即一个4,另一个3,如何从动态规划矩阵中获得两条路线?是否有任何工具或库已经做到了这一点?我试过biopython的paorwise2,它只给出tje矩阵中高分的对齐成对对齐算法,如Smith Waterman,只能提供

我想将一个小序列
S1
与另一个较大的核苷酸序列
S2
对齐,例如:

S1: acgtgt
S2: ttcgtgacagt...

在本例中,s1在s2中击中两个位置:
cgtg
acgt
,s2中有间隙。我想使用smith-waterman算法,但我的问题是:如果两条路线有两个不同的分数,即一个4,另一个3,如何从动态规划矩阵中获得两条路线?是否有任何工具或库已经做到了这一点?我试过biopython的paorwise2,它只给出tje矩阵中高分的对齐

成对对齐算法,如Smith Waterman,只能提供一个最佳对齐。较差的对齐将具有不同的回溯行走,史密斯·沃特曼使用的动态规划算法不会遵循这种回溯行走

如果有多条路线具有相同的最佳分数,S-W将只选择其中一条路线(哪一条路线是特定于实现的,因为它们具有相同的分数,所以这并不重要)

如果您真的希望返回多个对齐,并使用类似Smith Waterman的方法,则每次以不同的方式配置间隙惩罚时,必须多次重新对齐序列。我不推荐这个,因为它会很贵


您可能不想使用史密斯·沃特曼(Smith Waterman),而是想尝试类似于BLAST的方法,它将为您提供多个点击次数

所有符合替换矩阵中得分的可能对齐方式都将在回溯矩阵T中重新显示-只是某些实现可能不允许您访问T

要提取多条路线,您首先需要查看评分矩阵H并选择要追溯的分数-例如,您可以查看最高的10个分数。矩阵T中的值将告诉您回溯的路径。继续进行,直到H中的相应分数为零


不过要小心——最高的10个分数可能都是同一个排列的一部分,在这种情况下,你只会得到另一个结果的子序列。为了避免这种情况,可能最好先追溯得分最高的对齐方式,然后在第一个对齐方式未通过的单元格中查找高值。

请参阅第页的“重复匹配”一节

假设我们只对得分更高的比赛感兴趣 比某个阈值还高。这在总体上是正确的,因为 是否总是短的局部对齐,甚至有小的正分数 在完全不相关的序列之间。设y是包含 域或模体,x是我们正在寻找的序列 多个匹配项

图2.7给出了重复算法的示例。我们再次 使用矩阵F,但是递归现在不同了,因为 F(i,j)的意义。在最终对齐中,x将被划分为 在间隙对齐中匹配y部分的区域,以及 这是无与伦比的。我们将讨论分数 作为其标准间隙对齐的完整匹配区域的 分数减去阈值T。所有这些比赛分数都是正数。 F(i,j)表示j≥ 1现在是x1…i的最佳匹配分数总和, 假设席在匹配区域,并对应匹配 结束在席和YJ(他们可能不实际对齐,如果这是一个 比赛中有间隙的部分)。F(i,0)是已完成函数的最佳和 匹配分数到子序列x1…i,即假设席在 无与伦比的地区

为了达到预期的目标,我们从 像往常一样初始化F(0,0)=0,然后使用 下列递推关系:

等式(2.11)仅处理不匹配的区域和匹配的结尾 允许比赛在得分至少为T时结束。方程式 (2.12)处理匹配和扩展的开始。总分 所有匹配都是通过向矩阵F(n)中添加一个额外的单元来获得的 +1,0),使用(2.11)。每场比赛该分数将不会被减去;如果没有得分大于T的匹配项,则为0, 通过重复应用(2.11)中的第一个选项获得

单个匹配对齐可以通过从单元格追溯获得 (n+1,0)到(0,0),在每个点返回到作为 max()操作中当前单元格中分数的来源。这 回溯过程是一个全局过程,显示每个残留物的内容 在x中,将对齐到。生成的全局对齐将包含 子序列的更常规的有间隙局部对齐剖面 从x到y的子序列

请注意,该算法获得所有 一次完成本地匹配。它找到了最大的得分集 匹配,在最大化多余的组合总的意义上 超过阈值T的每个比赛分数的。改变T的值 更改算法发现的内容。增加T可能会排除匹配项。 减少它可能会分裂它们,也可能会找到新的较弱的。A. 上一节意义上的局部最优匹配将是 如果它包含得分较少的内部子路线,则将其拆分为碎片 比−T然而,这可能是我们想要的:考虑到两个相似的高 得分部分本身就很重要,用a分隔 非匹配部分得分为强负值,不清楚 报告一个匹配项还是两个匹配项更可取


为什么两条路线都要?您只对最佳解决方案感兴趣的想法是动态规划的一个非常关键的假设。根据您的具体需求(您是否只想要前两个解决方案?或者第二个解决方案中是否有其他东西让您想看到它?),这可能是非常重要的。关键是查询将在引用序列中的多个位置命中