I am trying to understand the Zuker Algorithm.
What is happening during initialisation? I know in Nussinov the diagonal is filled with 0s. Are the diagonals filled with infinite energy during Zuker´s initialisation?
Also, what is happening during recursion?
I know unlike Nussinov, Zuker pays attention to stacking energies and loop structures, not individual basepairs. But how? How does the algorithm calculate the energies for stacking and loop structures at position 1 if there is no info about its neighbors yet?
I understand there are 2 matrices - V and W. Is it correct that V is part of W? And is it correct that V keeps information about stack interactions and how much energy a stack of base pairs contributes - like keeping score on a multiplier?
Is there a code or example (I would prefer R), which demonstrates how the algorithm goes over a sequence? Like a demonstration. I thought of one myself, but I am not sure if its correct:
sequence <- c(1, 2, 3, 4, 5,6,7,8,9,10,11,12,13,14,15)
n <- length(sequence)
for (l in 2:n) {
for (i in 1:(n - l + 1)) {
j <- i + l - 1
cat("i =", i, "j =", j, "\n")
}
}
src
for MFold and especially RNAfold. RNAfold is in C. $\endgroup$