Waterman-Smith-Beyer算法长序列对齐偏移问题求助
Waterman-Smith-Beyer算法长序列对齐偏移问题
正在开发文本比对器,实现Waterman-Smith-Beyer(SWB)算法时遇到异常:短序列对齐结果正常,但长序列会整体偏移至右侧,无法匹配正确位置。
对齐示例对比
正确对齐结果:
HOLYWATERISABLESSING ----WATER---BLESSING
实际得到的错误结果:
HOLYWATERISABLESSING -------WATERBLESSING
基础测试情况
短序列如"ABA"与"BA"、"ABA"与"AA"的对齐均符合预期。移除SWB算法的「新间隙罚分」(退化为Needleman-Wunsch算法)后,对齐恢复正常;矩阵初始化的首行首列输出符合预期。
已尝试的排查操作
- 调整矩阵初始化顺序
- 修改匹配得分
- 反转计分逻辑
- 调整指针矩阵
以上操作均无效,仅设置极高匹配得分时能得到预期输出,但会引发其他输入场景的错误。
问题猜测
推测问题出在SWB算法的「新间隙罚分」对应的得分矩阵计算环节。
补充测试结果
- "HOLYWATERISABLESSING"与"HOLYWATERBLESSING"对齐符合预期;
- "HOLYWATERISABLESSING"与"HOLYERISSING"仍出现右偏移;
- 为短序列添加前部匹配字符时对齐会出现多个间隙,移除尾部部分字符正常,但移除特定字符或过多尾部字符时,会再次出现整体右偏移。
内容的提问来源于stack exchange,提问作者dawnandrew100
相关产品推荐
相关产品推荐

