在Needleman-Wunsch和Smith-Waterman,实现追溯的最佳方法是什么?我们通常会保留两个矩阵,每个矩阵都有一个入口的前身吗?也就是说,每个条目都是UP,DIAG或LEFT。或者是否有更简单,更节省空间的回溯方式?我理解算法以及如何获得最高分,但不是追溯。谢谢!
答案 0 :(得分:0)
使用2个矩阵会起作用,但这是一种天真的方法,特别是如果大小或内存是一个问题。问题是2个单独的矩阵空间效率低。
由于在N-W中只有3个可能的回溯方向,而在S-W中只有4个可能的方向(需要添加STOP),因此可以将每个方向存储为2位。如果您的分数足够小,您可以将相应矩阵单元格的两个值打包到一个矩阵的单个单元格中,然后进行位掩码以获得分数和追溯方向。
或者,如果您仍然需要2个矩阵,则没有理由为回溯矩阵占用太多空间。您仍然可以打包回溯矩阵,以便4个回溯位置位于字节矩阵的单个单元格中。 (你必须进行类似的位掩码)。
答案 1 :(得分:-1)
我的理解是肯定的,你确实需要2个矩阵。
然后你从右下方的位置追溯。见http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm