我想将一个小序列S1
与另一个较大的核苷酸序列S2
对齐,例如:
S1: acgtgt
S2: ttcgtgacagt...
在这个示例中,s1在s2中的2个位置命中:cgtg
和acgt
,s2中的间隙为2.我想使用史密斯水手算法,但我的问题是:如果2个路线有2个不同的得分,即一个4和另外3个如何从动态programimg矩阵获得2个对齐?是否有任何工具或库可以执行此操作?我从biopython尝试了paorwise2,它只给出了在矩阵
答案 0 :(得分:2)
成对对齐算法(如Smith-Waterman)仅提供一个最佳对齐。较差的对齐将具有不同的回溯步骤,而Smith-Waterman使用的动态编程算法将不会遵循该跟踪步行。
如果有多个具有相同最佳分数的路线,则S-W将仅选择其中一个路线(哪一个是特定于实施的,因为它们具有相同的分数并不重要)。
如果你真的想要返回多个路线并使用类似Smith-Waterman的东西,那么每次配置差距惩罚时,你必须多次重新对齐序列。我不推荐这个,因为它会非常昂贵。
不要使用史密斯 - 沃特曼,你可能想尝试像BLAST那样会给你多次点击
答案 1 :(得分:0)
符合替换矩阵中得分的所有可能的比对都在回溯矩阵T中重现 - 只是某些实现可能无法让您访问T。
要提取多个路线,您首先需要查看得分矩阵H并选择要追溯的分数 - 例如,您可能会查看最高的10个分数。矩阵T中的值将告诉您追溯的路线。继续前进,直到H中的相应分数为零。
要小心 - 10个最高分可能都是同一个对齐的一部分,在这种情况下,你只得到一个结果,这是另一个结果的子序列。为避免这种情况,最好先追溯得分最高的对齐,然后在第一个对齐方式未通过的单元格中查找高值。
答案 2 :(得分:0)
请参阅Durbin - Biological Sequence Analysis
中的重复匹配部分让我们假设我们只对得分更高的比赛感兴趣 超过一些门槛T.这一般都是正确的,因为那里 总是短的局部比对,甚至是小的正分数 在完全不相关的序列之间。设y为包含的序列 域或主题,x是我们正在寻找的序列 多场比赛。
重复算法的一个例子如图2.7所示。我们又来了 使用矩阵F,但现在复发是不同的,因为 F(i,j)的含义。在最终对齐中,x将被分区为 在有缺口的路线中与y的部分匹配的区域,以及与该区域相匹配的区域 是无与伦比的。我们将谈论得分 已完成的匹配区域作为其标准间隙对齐 得分减去阈值T.所有这些匹配分数都是正数。 j≥1的F(i,j)现在是x1 ... i匹配得分的最佳总和, 假设xi在匹配区域,并且相应的匹配 以xi和yj结尾(如果是a,则它们实际上可能不对齐 比赛的缺口部分)。 F(i,0)是完成的最佳总和 将分数与子序列x1 ... i匹配,即假设xi在a中 无与伦比的地区。
为了达到预期的目标,我们从一开始 像往常一样初始化F(0,0)= 0,然后使用。填充矩阵 以下重现关系:
公式(2.11)仅处理不匹配的区域和匹配的结尾 当比赛得分至少为T时,允许比赛结束。方程 (2.12)处理匹配和扩展的开始。总分 通过向矩阵添加额外的单元格来获得所有匹配,F(n + 1,0),使用(2.11)。每个比赛的分数将减去T;如果没有得分大于T的匹配则为0, 通过重复应用(2.11)中的第一个选项获得。
在 可以通过从细胞追溯获得个体匹配比对 (n + 1,0)到(0,0),在每个点返回到的单元格 max()操作中当前单元格中得分的来源。这个 回溯程序是一个全局程序,显示每个残留物 在x中将对齐。生成的全局对齐将包含 更常规的间隙局部对齐子序列的部分 x对y的子序列。
注意算法获得所有 本地比赛一次传球。它找到了最大得分集 匹配,在最大化多余的总和的意义上 每个比赛得分高于阈值T.改变T的值 改变算法找到的内容。增加T可以排除匹配。 减少它可能会分裂它们,以及寻找新的较弱的那些。一个 在前一节意义上的局部最佳匹配将是 如果它包含内部子对齐得分较少,则分成几部分 比-T。然而,这可能是想要的:给出两个相似的高点 得分段本身就很重要,由一个分开 非匹配部分具有强烈的负分,目前尚不清楚 是否最好报一两场比赛。