ViennaRNA folding based on an algebraic ring structure. This should combine the goals of few lines of codes, multiple different folding functions and extensibility.
NOTE Assume that you want '-d 3' for folding with dangles. Then you can just instanciate the folding functions, replacing only those functions where the folding changes based on the new dangle options.
NOTE compile with: -fno-method-sharing
- type ResultTables a = (Table a, Table a, Table a, Table a, Table a)
- type Pairlist = [(Int, Int)]
- class FoldFunctions a => Fold a where
Folding works on unboxed values of a Ring-type for which a FoldFunctions instance does exist. By default, we have this for Energy values. Again, we use a class as we could be interested in probabilistic backtracking or something like that.