我正面临追溯全局序列比对的问题。我的第一个序列是ATTGCGCGCAT,第二个序列是ATGCTTAACCA。回溯结果应为A T T G C _ _ _ G C G C A T A _ T G C T A A C _ C A _但是我使用的代码无法输出该结果。
我曾尝试浏览谷歌以供参考,但很少引用用Java编写的回溯。
private static void traceback(String seqOne, String seqTwo,int[][]matrix) {
StringBuilder s1 = new StringBuilder(), s2 = new StringBuilder();
for ( int i = seqOne.length(), j = seqTwo.length(); i > 0 && j > 0; ) {
if (i > 0 && j > 0 && (matrix[i][j] == matrix[i - 1][j - 1]) ) {
s1.append(seqOne.charAt(--i));
s2.append(seqTwo.charAt(--j));
} else if ( i > 0 && (matrix[i][j] == matrix[i - 1][j] + 1) ) {
s1.append(seqOne.charAt(--i));
s2.append("-");
} else if ( j > 0 && (matrix[i][j] == matrix[i][j - 1] + 1) ) {
s2.append(seqTwo.charAt(--j));
s1.append("-");
}
}
System.out.println();
System.out.println(s1.reverse().toString());
System.out.println(s2.reverse().toString());
}