- fInteriorOuter :: BaseF (NInteLoop -> ExtFeatures (Vector (PairIdx, Double)))
- btInteriorOuter :: Params -> Primary -> EStem -> NInteLoop -> NBT -> ExtBT
- fInteriorLoop :: BaseF (NInte -> Features (Vector (PairIdx, Double)))
- btInteriorLoop :: Params -> Primary -> NInteLoop -> NInte -> NBT -> NBT
- fInteriorInner :: BaseF (EStem -> Features (Vector (ExtPairIdx, Double)))
- btInteriorInner :: Params -> Primary -> NInte -> EStem -> ExtBT -> NBT
- fInteriorKLs :: Int -> Int -> Vector (Int, Int)
The outer part of an interior loop. Given a certain basepair type, add the cost from the unpaired part.
NOTE / TODO -- fusion enabled for this function (due to it taking 50% of the time), full fusion is still dependent on other factors and needs to be checked (in particular, we still have allocation events)
Backtrack the unpaired loop region
This opens up an interior loop. For each index (i,j) we minimize over all possible basepair types.
Backtrack from an NInte result to the corresponding EStem parts
Since backtracking interior loops is mostly selfcontained, we encapsulate the above three functions -- which we can't do easily with the forward calculations as they actually have to save on runtime.
Given the outer indices (i,j), produces delta_i and delta_j so that
i+delta_i and j-delta_j are the inner indices.
fInteriorKLs should fuse
and should make sure that l-k>=4 is always true (maxd). Furthermore the
maximal unpaired length of both sides combined is determined by
TODO better name than