module Biobase.Vienna where
import Data.Array.Repa.Index
import Data.Array.Repa.Shape
import Data.ByteString (ByteString)
import Data.Map (Map)
import Data.PrimitiveArray
import Data.PrimitiveArray.Unboxed.Zero
import Biobase.Primary
import Biobase.Secondary.Vienna
type P = Z:.ViennaPair
type PN = P:.Nuc
type PNN = PN:.Nuc
type PP = Z:.ViennaPair:.ViennaPair
type PPNN = PP:.Nuc:.Nuc
type PPNNN = PPNN:.Nuc
type PPNNNN = PPNNN:.Nuc
data Vienna2004 = Vienna2004
{ stack :: Arr0 PP Int
, dangle3 :: Arr0 PN Int
, dangle5 :: Arr0 PN Int
, hairpinL :: Arr0 DIM1 Int
, hairpinMM :: Arr0 PNN Int
, hairpinLookup :: Map Primary Int
, hairpinGGG :: Int
, hairpinCslope :: Int
, hairpinCintercept :: Int
, hairpinC3 :: Int
, bulgeL :: Arr0 DIM1 Int
, bulgeSingleC :: Int
, iloop1x1 :: Arr0 PPNN Int
, iloop2x1 :: Arr0 PPNNN Int
, iloop2x2 :: Arr0 PPNNNN Int
, iloopMM :: Arr0 PNN Int
, iloop2x3MM :: Arr0 PNN Int
, iloop1xnMM :: Arr0 PNN Int
, iloopL :: Arr0 DIM1 Int
, multiMM :: Arr0 PNN Int
, ninio :: Int
, maxNinio :: Int
, multiOffset :: Int
, multiNuc :: Int
, multiHelix :: Int
, multiAsym :: Int
, multiStrain :: Int
, extMM :: Arr0 PNN Int
, coaxial :: Arr0 PP Int
, coaxStack :: Arr0 PNN Int
, tStackCoax :: Arr0 PNN Int
, largeLoop :: Int
, termAU :: Int
, intermolecularInit :: Int
}