{-# LANGUAGE TypeOperators #-} -- | The Vienna 2004 model is a mirror of the Turner data structure. The -- difference is that The ViennaRNA package uses an explicit annotation for RNA -- basepairs. -- -- Furthermore, all energies are stored in parts of 1/100, using Ints instead -- of Doubles. 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 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 :: PrimArray PP Int , dangle3 :: PrimArray PN Int , dangle5 :: PrimArray PN Int , hairpinL :: PrimArray DIM1 Int , hairpinMM :: PrimArray PNN Int , hairpinLookup :: Map [Nuc] Int , hairpinGGG :: Int , hairpinCslope :: Int , hairpinCintercept :: Int , hairpinC3 :: Int , bulgeL :: PrimArray DIM1 Int , bulgeSingleC :: Int , iloop1x1 :: PrimArray PPNN Int , iloop2x1 :: PrimArray PPNNN Int , iloop2x2 :: PrimArray PPNNNN Int , iloopMM :: PrimArray PNN Int , iloop2x3MM :: PrimArray PNN Int , iloop1xnMM :: PrimArray PNN Int , iloopL :: PrimArray DIM1 Int , multiMM :: PrimArray PNN Int , ninio :: Int , maxNinio :: Int , multiOffset :: Int , multiNuc :: Int , multiHelix :: Int , multiAsym :: Int , multiStrain :: Int , extMM :: PrimArray PNN Int , coaxial :: PrimArray PP Int -- no intervening unpaired nucleotides , coaxStack :: PrimArray PNN Int , tStackCoax :: PrimArray PNN Int , largeLoop :: Int , termAU :: Int , intermolecularInit :: Int } -- deriving (Read,Show)