-
Notifications
You must be signed in to change notification settings - Fork 5
Description
The macrostate MFE and pfunc computation is incorrect (when not using rna_turner1999 parameters).
Assume the following structure (lonely base pairs are allowed; last line gives names for structural components)
(...).(...).(...).(...)
CaaaGaCaaaGaCaaaGaCaaaG
aaaaaXbbbbbYcccccZddddd
The enum candidate for this structure in the macrostate grammar is (<- are manual annotations to relate sub-structures):
trafo(
ambd_Pr(
drem( <0,0> hl( <0,1> <1,4> <4,5> ) <5,5> ) <- (...) = aaaaa
<5,6> <- X
ambd_Pr(
drem( <6,6> hl( <6,7> <7,10> <10,11> ) <11,11> ) <- (...) = bbbbb
<11,12> <- Y
ambd_Pr(
drem( <12,12> hl( <12,13> <13,16> <16,17> ) <17,17> ) <- (...) = ccccc
<17,18> <- Z
cadd_Pr_Pr_Pr(
drem( <18,18> hl( <18,19> <19,22> <22,23> ) <23,23> ) <- (...) = ddddd
nil( <23,23> )
)
)
)
)
)
The MFE algebra needs to internally choose from multiple options (instead of passing these options as individual candidates to the general choice function, as microstate does, which comes with an inflation of candidates in the search space rendering probability computation impossible): consider the leftmost two stems aaaaaXbbbbb which correspond the topmost ambd_Pr call. The unpaired base X can either dangle from right onto stem a or from left onto stem b or not dangle at all. However, if it dangles from left onto b we also need to consider if this is a more favorable situation than dangling X and Y onto b and forming an "external mismatch".
With Turner1999 parameters, the external mismatch was identical to left + right dangling, thus it could be computed stepwise. With the newer Turner2004 parameters, this is no longer the case and an external mismatch (ViennaPackage) can yield better energy than left and right dangle (ViennaPackage) together.
How can macrostate correctly decide here, without ending up with exponential many situations?
The problem recurses: while making the decision for X, we need to consider Y. However, the dangling of Z is dependent on Y :-/