public IEnumerable <KeyValuePair <string, string> > AlignedSequence() { var rmIncr = 0; var seq1Incr = 0; var seq2Incr = 0; var resultMatrix = new List <KeyValuePair <string, string> >(); TracebackPath.Reverse(); foreach (var tracebackItem in TracebackPath) { if (tracebackItem == Move.DiagonalMove) // match { resultMatrix.Add(new KeyValuePair <string, string>( Sequence1[seq1Incr].ToString(), Sequence2[seq2Incr].ToString())); seq1Incr++; seq2Incr++; } else if (tracebackItem == Move.VerticalMove) { resultMatrix.Add(new KeyValuePair <string, string>( "-", Sequence2[seq2Incr].ToString())); seq2Incr++; } else { resultMatrix.Add(new KeyValuePair <string, string>( Sequence1[seq1Incr].ToString(), "-")); seq1Incr++; } rmIncr++; } return(resultMatrix); }