Temporary hackery until all base libraries understand newtype Energy. And yes, for testing too.
- class (Show a, Ring a, Unbox a, Prim a) => FoldFunctions a where
- stackOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- stackIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- hairpinOpt :: TurnerTables a -> Primary -> Int -> Int -> a
- hairpinIdx :: TurnerTables a -> Primary -> Int -> Int -> [a]
- largeInteriorLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- largeInteriorLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- tabbedInteriorLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- tabbedInteriorLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- bulgeLOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- bulgeLIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- bulgeROpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- bulgeRIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- interior1xnLOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- interior1xnLIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- interior1xnROpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- interior1xnRIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- multibranchIJLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- multibranchIJLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- multibranchUnpairedJOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- multibranchUnpairedJIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- multibranchKJHelixOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- multibranchKJHelixIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Int, a)]
- multibranchAddKJHelixOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> a
- multibranchAddKJHelixIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]
- multibranchCloseOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> a
- multibranchCloseIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]
- externalLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> a
- externalLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]
- externalAddLoopOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> a
- externalAddLoopIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]
- calcNinio :: a -> a -> Int -> a
- calcTermAU :: a -> ViennaPair -> a
- calcLargeLoop :: Int -> a
- class FoldFunctions a => Fold a where
- fold :: TurnerTables a -> Primary -> ResultTables a
- foldST :: TurnerTables a -> Primary -> ST s (ResultTables a)
- backtrack :: TurnerTables a -> Primary -> ResultTables a -> a -> [(Secondary, a)]
Documentation
class (Show a, Ring a, Unbox a, Prim a) => FoldFunctions a whereSource
The folding functions. It could happen that we need different folding functions with the same type, hence the class-based approach. The default instance uses the usual ring methods.
stackOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
stackIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
hairpinOpt :: TurnerTables a -> Primary -> Int -> Int -> aSource
hairpinIdx :: TurnerTables a -> Primary -> Int -> Int -> [a]Source
largeInteriorLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
largeInteriorLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
tabbedInteriorLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
tabbedInteriorLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
bulgeLOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
bulgeLIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
bulgeROpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
bulgeRIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
interior1xnLOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
interior1xnLIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
interior1xnROpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
interior1xnRIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
multibranchIJLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
multibranchIJLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
multibranchUnpairedJOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
multibranchUnpairedJIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
multibranchKJHelixOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
multibranchKJHelixIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Int, a)]Source
multibranchAddKJHelixOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> aSource
multibranchAddKJHelixIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]Source
multibranchCloseOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> aSource
multibranchCloseIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]Source
externalLoopOpt :: TurnerTables a -> Primary -> Table a -> Int -> Int -> aSource
externalLoopIdx :: TurnerTables a -> Primary -> Table a -> Int -> Int -> [(Cell, a)]Source
externalAddLoopOpt :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> aSource
externalAddLoopIdx :: TurnerTables a -> Primary -> Table a -> Table a -> Int -> Int -> [(Int, a)]Source
calcNinio :: a -> a -> Int -> aSource
Calculate the ninio asymmetric malus. Can not be written using ring
functions alone as a min
or max
functions is required.
:: a | |
-> ViennaPair | |
-> a | Apply terminal AU penalty |
Applies a terminal AU/GU penalty, where required.
TODO shouldn't this be just: if CG||GC then one else termAU?
calcLargeLoop :: Int -> aSource
large hairpin loops >30 require special calculations that involve
floor
, rounding and other stuff that can not be handled by the Ring
class alone
class FoldFunctions a => Fold a whereSource
fold :: TurnerTables a -> Primary -> ResultTables aSource
foldST :: TurnerTables a -> Primary -> ST s (ResultTables a)Source
backtrack :: TurnerTables a -> Primary -> ResultTables a -> a -> [(Secondary, a)]Source