- 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)
Outer part
fInteriorOuter :: BaseF (NInteLoop -> ExtFeatures (Vector (PairIdx, Double)))Source
The outer part of an interior loop. Given a certain basepair type, add the cost from the unpaired part.
Loop part
fInteriorLoop :: BaseF (NInte -> Features (Vector (PairIdx, Double)))Source
Performs the interior loop calculations between (i,j) outer and (k,l) inner part. The score based on the unpaired nucleotides is independent of both, the outer and the inner basepair type.
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)
btInteriorLoop :: Params -> Primary -> NInteLoop -> NInte -> NBT -> NBTSource
Backtrack the unpaired loop region
Inner part
fInteriorInner :: BaseF (EStem -> Features (Vector (ExtPairIdx, Double)))Source
This opens up an interior loop. For each index (i,j) we minimize over all possible basepair types.
btInteriorInner :: Params -> Primary -> NInte -> EStem -> ExtBT -> NBTSource
Backtrack from an NInte result to the corresponding EStem parts
Helper functions
fInteriorKLs :: Int -> Int -> Vector (Int, Int)Source
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 maxLength
.
TODO better name than maxLength