【发布时间】:2014-03-04 16:45:36
【问题描述】:
在 Needleman-Wunsch 和 Smith-Waterman 中,实现回溯的最佳方式是什么?我们是否通常保留两个矩阵,一个与每个条目的前任?也就是说,每个条目将是 UP、DIAG 或 LEFT。还是有更简单、更节省空间的方法来进行回溯?我了解算法以及如何获得最高分,但不了解追溯。谢谢!
【问题讨论】:
标签: bioinformatics
在 Needleman-Wunsch 和 Smith-Waterman 中,实现回溯的最佳方式是什么?我们是否通常保留两个矩阵,一个与每个条目的前任?也就是说,每个条目将是 UP、DIAG 或 LEFT。还是有更简单、更节省空间的方法来进行回溯?我了解算法以及如何获得最高分,但不了解追溯。谢谢!
【问题讨论】:
标签: bioinformatics
使用 2 个矩阵会起作用,但这是一种天真的方法,尤其是在大小或内存是一个问题的情况下。问题是 2 个单独的矩阵空间效率低。
由于 N-W 中的回溯只有 3 个可能的方向,而 S-W 中只有 4 个可能的方向(您需要添加 STOP),您可以将每个方向存储为 2 位。如果您的分数足够小,您可以将相应矩阵单元格的两个值打包到一个矩阵的单个单元格中,然后进行位掩码以获得分数和回溯方向。
或者,如果您仍然想要 2 个矩阵,则没有理由为回溯矩阵占用这么多空间。您仍然可以打包回溯矩阵,以便 4 个回溯位置位于字节矩阵的单个单元格中。 (您必须进行类似的位掩码)。
【讨论】:
我的理解是肯定的,你确实需要 2 个矩阵。
然后你从右下角往回追溯。见http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm
【讨论】: