{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE StandaloneDeriving #-} -- | 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 (which this library does not anymore!) -- -- Furthermore, all energies are stored in parts of 1/100, using Ints instead -- of Doubles. module Biobase.Vienna where import qualified Data.Vector.Unboxed as VU import qualified Data.Vector.Generic as VG import qualified Data.Vector.Generic.Mutable as VGM import Data.Primitive.Types import Biobase.Turner newtype Deka = Deka Int deriving (Eq,Ord,Num,Read,Show) deriving instance Prim Deka deriving instance VGM.MVector VU.MVector Deka deriving instance VG.Vector VU.Vector Deka deriving instance VU.Unbox Deka type Vienna2004 = Turner2004Model Deka turnerToVienna :: Turner2004 -> Vienna2004 turnerToVienna = emap (\(Energy e) -> Deka $ round $ 100 * e)