SLIDE 10 . . . . . .
. . . . . . . . . . Edit Distance . . . . . . . . . Graphical Models . . . . Markov Process . . . . HMM . Summary
editDistance.cpp: printEdits()
.
editDistance.cpp
. .
int printEdits(std::string& s1, std::string& s2, Matrix615<int>& move) { std::string o1, o2, m; // output string and alignments int r = move.rowNums()-1; int c = move.colNums()-1; while( r >= 0 && c >= 0 && move.data[r][c] >= 0) { // back from the last character if ( move.data[r][c] == 0 ) { // insertion
- 1 = "-" + o1;
- 2 = s2[c-1] + o2;
m = "I" + m; --c; } else if ( move.data[r][c] == 1 ) { // delettion
- 1 = s1[r-1] + o1;
- 2 = "-" + o2;
m = "D" + m; --r; } else if ( move.data[r][c] == 2 ) { // match or mismatch
- 1 = s1[r-1] + o1; o2 = s2[c-1] + o2;
m = (s1[r-1] == s2[c-1] ? "-" : "*") + m;
} else std::cout << r << " " << c << " " << move.data[r][c] << std::endl; } std::cout << m << std::endl << o1 << std::endl << o2 << std::endl; } Hyun Min Kang Biostatistics 615/815 - Lecture 11 October 2nd, 2012 10 / 29