我想以最佳方式比对两个DNA序列,但我有长度为L的空位罚函数,如果L是3的倍数,则对于某些常数a,罚分为* L.如果L不是3的倍数,则对于某些常数b,罚分为b * L.
我应该设计一个O(n * m)算法,其中n和m是DNA序列的长度,找到最佳比对。但关于这一点的棘手部分是我必须跟踪它所延伸的差距的大小。例如,如果我有两个连续的间隙并进一步扩展一个间隙,我需要用 L - b (L-1)更新分数,但我无法制定处理此问题的子问题情况很好。我已经考虑引入一个新的参数L来“猜测”最终间隙的长度,但这很容易超过O(n * m)。
有没有办法有效地制定这些子问题?任何重要的意见将不胜感激。
答案 0 :(得分:0)
你能澄清一下连续差距是什么意思吗?如果我正确理解你,你的场景的示例对齐将如下所示: AAATTTGGGAA ---- CCCGG AAATTTCGGAA ----- GCGG 然而,包括两条线上的匹配间隙都没有实现。上面的对齐方式与此相同: AAATTTGGGAACCCGG AAATTTCGGAA-GCGG 间隙罚款应仅在任何给定时间与单股相关。为了衡量更改对齐参数如何影响对齐输出,我建议查看biopython Pairwise2模块(可能包括间隙罚分/间隙延长罚分)。 http://biopython.org/DIST/docs/api/Bio.pairwise2-module.html