packages feed

BiobaseVienna 0.2.2.5 → 0.3.0.0

raw patch · 7 files changed

+31/−596 lines, 7 filesdep +primitivedep −bytestringdep −bytestring-lexingdep −cmdargsdep ~BiobaseTurnerdep ~BiobaseXNAdep ~PrimitiveArrayPVP ok

version bump matches the API change (PVP)

Dependencies added: primitive

Dependencies removed: bytestring, bytestring-lexing, cmdargs, containers, file-embed, filepath, iteratee, mtl, split

Dependency ranges changed: BiobaseTurner, BiobaseXNA, PrimitiveArray, vector

API changes (from Hackage documentation)

- Biobase.Vienna: Vienna2004 :: Arr0 PP Int -> Arr0 PN Int -> Arr0 PN Int -> Arr0 DIM1 Int -> Arr0 PNN Int -> Map Primary Int -> Int -> Int -> Int -> Int -> Arr0 DIM1 Int -> Int -> Arr0 PPNN Int -> Arr0 PPNNN Int -> Arr0 PPNNNN Int -> Arr0 PNN Int -> Arr0 PNN Int -> Arr0 PNN Int -> Arr0 DIM1 Int -> Arr0 PNN Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Arr0 PNN Int -> Arr0 PP Int -> Arr0 PNN Int -> Arr0 PNN Int -> Int -> Int -> Int -> Vienna2004
- Biobase.Vienna: bulgeL :: Vienna2004 -> Arr0 DIM1 Int
- Biobase.Vienna: bulgeSingleC :: Vienna2004 -> Int
- Biobase.Vienna: coaxStack :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: coaxial :: Vienna2004 -> Arr0 PP Int
- Biobase.Vienna: dangle3 :: Vienna2004 -> Arr0 PN Int
- Biobase.Vienna: dangle5 :: Vienna2004 -> Arr0 PN Int
- Biobase.Vienna: data Vienna2004
- Biobase.Vienna: extMM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: hairpinC3 :: Vienna2004 -> Int
- Biobase.Vienna: hairpinCintercept :: Vienna2004 -> Int
- Biobase.Vienna: hairpinCslope :: Vienna2004 -> Int
- Biobase.Vienna: hairpinGGG :: Vienna2004 -> Int
- Biobase.Vienna: hairpinL :: Vienna2004 -> Arr0 DIM1 Int
- Biobase.Vienna: hairpinLookup :: Vienna2004 -> Map Primary Int
- Biobase.Vienna: hairpinMM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: iloop1x1 :: Vienna2004 -> Arr0 PPNN Int
- Biobase.Vienna: iloop1xnMM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: iloop2x1 :: Vienna2004 -> Arr0 PPNNN Int
- Biobase.Vienna: iloop2x2 :: Vienna2004 -> Arr0 PPNNNN Int
- Biobase.Vienna: iloop2x3MM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: iloopL :: Vienna2004 -> Arr0 DIM1 Int
- Biobase.Vienna: iloopMM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: intermolecularInit :: Vienna2004 -> Int
- Biobase.Vienna: largeLoop :: Vienna2004 -> Int
- Biobase.Vienna: maxNinio :: Vienna2004 -> Int
- Biobase.Vienna: multiAsym :: Vienna2004 -> Int
- Biobase.Vienna: multiHelix :: Vienna2004 -> Int
- Biobase.Vienna: multiMM :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: multiNuc :: Vienna2004 -> Int
- Biobase.Vienna: multiOffset :: Vienna2004 -> Int
- Biobase.Vienna: multiStrain :: Vienna2004 -> Int
- Biobase.Vienna: ninio :: Vienna2004 -> Int
- Biobase.Vienna: stack :: Vienna2004 -> Arr0 PP Int
- Biobase.Vienna: tStackCoax :: Vienna2004 -> Arr0 PNN Int
- Biobase.Vienna: termAU :: Vienna2004 -> Int
- Biobase.Vienna: type P = Z :. ViennaPair
- Biobase.Vienna: type PN = P :. Nuc
- Biobase.Vienna: type PNN = PN :. Nuc
- Biobase.Vienna: type PP = (Z :. ViennaPair) :. ViennaPair
- Biobase.Vienna: type PPNN = (PP :. Nuc) :. Nuc
- Biobase.Vienna: type PPNNN = PPNN :. Nuc
- Biobase.Vienna: type PPNNNN = PPNNN :. Nuc
- Biobase.Vienna.Default: rnaTurner2004par :: ByteString
- Biobase.Vienna.Default: turnerRNA2004 :: (Vienna2004, Vienna2004)
- Biobase.Vienna.Export: asPar :: Vienna2004 -> Vienna2004 -> String
- Biobase.Vienna.Export: pb2lkey :: :. (:. Z t) t1 -> ([t], [t1])
- Biobase.Vienna.Export: pbb2lkey :: :. (:. (:. Z t) t1) t1 -> ([t], [t1])
- Biobase.Vienna.Export: pp2lkey :: :. (:. Z t) t -> ([t], [a])
- Biobase.Vienna.Export: ppbb2lkey :: :. (:. (:. (:. Z t) t) t1) t1 -> ([t], [t1])
- Biobase.Vienna.Export: ppbbb2lkey :: :. (:. (:. (:. (:. Z t) t) t1) t1) t1 -> ([t], [t1])
- Biobase.Vienna.Export: ppbbbb2lkey :: :. (:. (:. (:. (:. (:. Z t) t) t1) t1) t1) t1 -> ([t], [t1])
- Biobase.Vienna.Export: printBlock :: (PrimArrayOps arr b Int, PrintfArg t) => t -> Int -> (b -> LKey) -> arr b Int -> [Char]
- Biobase.Vienna.Export: printBlock22 :: (PrimArrayOps arr b Int, PrintfArg t) => t -> Int -> (b -> LKey) -> arr b Int -> [Char]
- Biobase.Vienna.Export: printBlock22H :: PrimArrayOps arr b Int => [Char] -> Int -> (b -> LKey) -> arr b Int -> [Char]
- Biobase.Vienna.Export: printBlockG :: (PrimArrayOps arr b Int, PrintfArg t) => ((LKey, Int) -> Bool) -> t -> Int -> (b -> LKey) -> arr b Int -> [Char]
- Biobase.Vienna.Export: printBlockH :: PrimArrayOps arr b Int => [Char] -> Int -> (b -> LKey) -> arr b Int -> [Char]
- Biobase.Vienna.Export: printHairpinAssocs :: IsChar a => Int -> Vienna2004 -> Vienna2004 -> [a]
- Biobase.Vienna.Export: printLine :: [(LKey, Int)] -> [Char]
- Biobase.Vienna.Export: printLinear :: (Num a, Ord a, PrimArrayOps arr t1 a, PrintfArg a, PrintfArg t) => t -> Int -> arr t1 a -> [Char]
- Biobase.Vienna.Export: printLinearH :: (Num a, Ord a, PrimArrayOps arr t a, PrintfArg a) => [Char] -> Int -> arr t a -> [Char]
- Biobase.Vienna.Export: printVal :: (Num a, Ord a, PrintfType r, PrintfArg a) => (t, a) -> r
- Biobase.Vienna.Export: showKey :: [(LKey, Int)] -> String
- Biobase.Vienna.Export: type LKey = ([ViennaPair], [Nuc])
- Biobase.Vienna.Import: class IdxConvert a b
- Biobase.Vienna.Import: deka :: Double -> Int
- Biobase.Vienna.Import: fromTurner2004 :: Turner2004 -> Vienna2004
- Biobase.Vienna.Import: idxConvert :: IdxConvert a b => a -> b
- Biobase.Vienna.Import: instance IdxConvert DIM1 DIM1
- Biobase.Vienna.Import: instance IdxConvert PN PN
- Biobase.Vienna.Import: instance IdxConvert PNN PNN
- Biobase.Vienna.Import: instance IdxConvert PP PP
- Biobase.Vienna.Import: instance IdxConvert PPNN PPNN
- Biobase.Vienna.Import: instance IdxConvert PPNNN PPNNN
- Biobase.Vienna.Import: instance IdxConvert PPNNNN PPNNNN
- Biobase.Vienna.Import: maxP :: :. Z ViennaPair
- Biobase.Vienna.Import: maxPB :: :. (:. Z ViennaPair) Nuc
- Biobase.Vienna.Import: maxPBB :: :. (:. (:. Z ViennaPair) Nuc) Nuc
- Biobase.Vienna.Import: maxPP :: :. (:. Z ViennaPair) ViennaPair
- Biobase.Vienna.Import: maxPPBB :: :. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc
- Biobase.Vienna.Import: maxPPBBB :: :. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc
- Biobase.Vienna.Import: maxPPBBBB :: :. (:. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc) Nuc
- Biobase.Vienna.Import: minP :: :. Z ViennaPair
- Biobase.Vienna.Import: minPB :: :. (:. Z ViennaPair) Nuc
- Biobase.Vienna.Import: minPBB :: :. (:. (:. Z ViennaPair) Nuc) Nuc
- Biobase.Vienna.Import: minPP :: :. (:. Z ViennaPair) ViennaPair
- Biobase.Vienna.Import: minPPBB :: :. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc
- Biobase.Vienna.Import: minPPBBB :: :. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc
- Biobase.Vienna.Import: minPPBBBB :: :. (:. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc) Nuc
- Biobase.Vienna.ImportPar: Block :: [Int] -> BL
- Biobase.Vienna.ImportPar: Lookup :: [(ByteString, Int, Int)] -> BL
- Biobase.Vienna.ImportPar: allLookups :: [(a, BL)] -> (Map Primary Int, Map Primary Int)
- Biobase.Vienna.ImportPar: blockAssocs :: PrimArrayOps arr sh Int => sh -> sh -> [sh] -> Maybe BL -> arr sh Int
- Biobase.Vienna.ImportPar: data BL
- Biobase.Vienna.ImportPar: fromBlock :: BL -> [Int]
- Biobase.Vienna.ImportPar: fromByteString :: ByteString -> (Vienna2004, Vienna2004)
- Biobase.Vienna.ImportPar: fromFile :: FilePath -> IO (Vienna2004, Vienna2004)
- Biobase.Vienna.ImportPar: fromLookup :: BL -> [(ByteString, Int, Int)]
- Biobase.Vienna.ImportPar: getInt :: ByteString -> Int
- Biobase.Vienna.ImportPar: instance Show BL
- Biobase.Vienna.ImportPar: iterBlocks :: (Monad m, Functor m) => Enumeratee ByteString [(ByteString, BL)] m a
- Biobase.Vienna.ImportPar: lookupStructure :: IsString t => [t]
- Biobase.Vienna.ImportPar: makeStructures :: (Eq a, IsString a) => [(a, BL)] -> (Vienna2004, Vienna2004)
- Biobase.Vienna.ImportPar: pbKeys :: [:. (:. Z ViennaPair) Nuc]
- Biobase.Vienna.ImportPar: pbbKeys :: [:. (:. (:. Z ViennaPair) Nuc) Nuc]
- Biobase.Vienna.ImportPar: ppKeys :: [:. (:. Z ViennaPair) ViennaPair]
- Biobase.Vienna.ImportPar: ppbbKeys :: [:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc]
- Biobase.Vienna.ImportPar: ppbbbKeys :: [:. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc]
- Biobase.Vienna.ImportPar: ppbbbbKeys :: [:. (:. (:. (:. (:. (:. Z ViennaPair) ViennaPair) Nuc) Nuc) Nuc) Nuc]
- Biobase.Vienna.ImportPar: single :: Int -> Maybe BL -> Int
- Biobase.Vienna.ImportPar: thirty :: (Enum a, Num a) => [:. Z a]
+ Biobase.Vienna: Deka :: Int -> Deka
+ Biobase.Vienna: instance Eq Deka
+ Biobase.Vienna: instance MVector MVector Deka
+ Biobase.Vienna: instance Num Deka
+ Biobase.Vienna: instance Ord Deka
+ Biobase.Vienna: instance Prim Deka
+ Biobase.Vienna: instance Read Deka
+ Biobase.Vienna: instance Show Deka
+ Biobase.Vienna: instance Unbox Deka
+ Biobase.Vienna: instance Vector Vector Deka
+ Biobase.Vienna: newtype Deka
+ Biobase.Vienna: turnerToVienna :: Turner2004 -> Vienna2004
+ Biobase.Vienna: type Vienna2004 = Turner2004Model Deka

Files

Biobase/Vienna.hs view
@@ -1,66 +1,37 @@-{-# LANGUAGE TypeOperators #-}+{-# 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.+-- 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 Data.Array.Repa.Index-import Data.Array.Repa.Shape-import Data.ByteString (ByteString)-import Data.Map (Map)+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 Data.PrimitiveArray-import Data.PrimitiveArray.Unboxed.Zero-import Biobase.Primary-import Biobase.Secondary.Vienna+import Biobase.Turner -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 -- no intervening unpaired nucleotides-  , coaxStack :: Arr0 PNN Int-  , tStackCoax :: Arr0 PNN Int-  , largeLoop :: Int-  , termAU :: Int-  , intermolecularInit :: Int-  } -- deriving (Read,Show)++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) 
− Biobase/Vienna/Default.hs
@@ -1,22 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}---- | A set of default Turner 2004 parameters in ViennaRNA format.--module Biobase.Vienna.Default where--import Data.FileEmbed-import qualified Data.ByteString.Char8 as B--import Biobase.Vienna-import Biobase.Vienna.ImportPar------ |--turnerRNA2004 :: (Vienna2004,Vienna2004)-turnerRNA2004 = fromByteString rnaTurner2004par---- | embedded parameter file for Turner2004 parameters--rnaTurner2004par = $(embedFile "parfiles/rna_turner2004.par")
− Biobase/Vienna/Export.hs
@@ -1,141 +0,0 @@-{-# LANGUAGE NoMonomorphismRestriction #-}--module Biobase.Vienna.Export where--import Control.Arrow-import Data.Array.Repa.Index-import Data.Array.Repa.Shape-import Data.List (intersperse)-import Data.List.Split-import qualified Data.Map as M-import Text.Printf-import qualified Data.Vector.Unboxed as VU--import Biobase.Primary-import Biobase.Secondary.Vienna-import Data.PrimitiveArray-import Data.PrimitiveArray.Unboxed.Zero--import Biobase.Vienna------ * Export as a ViennaRNA 2004 ".par" file--asPar :: Vienna2004 -> Vienna2004 -> String-asPar trnr trnrH = hdr ++ blocks ++ mlps ++ ninios ++ misc ++ triloops ++ tetra ++ hexa ++ "\n#END" where-  hdr = "## RNAfold parameter file v2.0\n\n"-  mlps = printf "# ML_params\n%7d %7d %7d %7d %7d %7d\n\n"-    (multiNuc trnr) (multiNuc trnrH)-    (multiOffset trnr) (multiOffset trnrH)-    (multiHelix trnr) (multiHelix trnrH)-  ninios = printf "# NINIO\n%7d %7d %7d\n\n"-    (ninio trnr) (ninio trnrH) (maxNinio trnr)-  misc = printf "# Misc\n %7d %7d %7d %7d\n\n"-    (intermolecularInit trnr) (intermolecularInit trnrH) (termAU trnr) (termAU trnrH)-  triloops = "# Triloops\n" ++ printHairpinAssocs 5 trnr trnrH ++ "\n"-  tetra = "# Tetraloops\n" ++ printHairpinAssocs 6 trnr trnrH ++ "\n"-  hexa = "# Hexaloops\n" ++ printHairpinAssocs 8 trnr trnrH ++ "\n"-  blocks = concat $ zipWith (++)-    -- entropy terms-    [ printBlock "stack"                7 pp2lkey     $ stack trnr-    , printBlock "mismatch_hairpin"     5 pbb2lkey    $ hairpinMM trnr-    , printBlock "mismatch_interior"    5 pbb2lkey    $ iloopMM trnr-    , printBlock "mismatch_interior_1n" 5 pbb2lkey    $ iloop1xnMM trnr-    , printBlock "mismatch_interior_23" 5 pbb2lkey    $ iloop2x3MM trnr-    , printBlock "mismatch_multi"       5 pbb2lkey    $ multiMM trnr-    , printBlock "mismatch_exterior"    5 pbb2lkey    $ extMM trnr-    , printBlock "dangle5"              5 pb2lkey     $ dangle5 trnr-    , printBlock "dangle3"              5 pb2lkey     $ dangle3 trnr-    , printBlock "int11"                5 ppbb2lkey   $ iloop1x1 trnr-    , printBlock "int21"                5 ppbbb2lkey  $ iloop2x1 trnr-    , printBlock22 "int22"              4 ppbbbb2lkey $ iloop2x2 trnr-    , printLinear "hairpin"            10             $ hairpinL trnr-    , printLinear "bulge"              10             $ bulgeL trnr-    , printLinear "interior"           10             $ iloopL trnr-    ]-    -- enthalpy terms-    [ printBlockH "stack"                7 pp2lkey     $ stack trnrH-    , printBlockH "mismatch_hairpin"     5 pbb2lkey    $ hairpinMM trnrH-    , printBlockH "mismatch_interior"    5 pbb2lkey    $ iloopMM trnrH-    , printBlockH "mismatch_interior_1n" 5 pbb2lkey    $ iloop1xnMM trnrH-    , printBlockH "mismatch_interior_23" 5 pbb2lkey    $ iloop2x3MM trnrH-    , printBlockH "mismatch_multi"       5 pbb2lkey    $ multiMM trnrH-    , printBlockH "mismatch_exterior"    5 pbb2lkey    $ extMM trnrH-    , printBlockH "dangle5"              5 pb2lkey     $ dangle5 trnrH-    , printBlockH "dangle3"              5 pb2lkey     $ dangle3 trnrH-    , printBlockH "int11"                5 ppbb2lkey   $ iloop1x1 trnrH-    , printBlockH "int21"                5 ppbbb2lkey  $ iloop2x1 trnrH-    , printBlock22H "int22"              4 ppbbbb2lkey $ iloop2x2 trnrH-    , printLinearH "hairpin"            10             $ hairpinL trnrH-    , printLinearH "bulge"              10             $ bulgeL trnrH-    , printLinearH "interior"           10             $ iloopL trnrH-    ]------ * Helper functions---- | Show the key of the line, minus the changing last key--showKey :: [(LKey,Int)] -> String-showKey xs =-  "   /* " ++-  (concat $ intersperse "," $ init $ (map show ps) ++ (map show ns)) ++-  " */"-  where-    (ps,ns) = fst $ head xs---- | Transform from tuple-based keys to a pair of list-based keys.--type LKey = ([ViennaPair],[Nuc])--pb2lkey (Z:.p1:.b1) = ([p1],[b1])-pbb2lkey (Z:.p1:.b1:.b2) = ([p1],[b1,b2])-pp2lkey (Z:.k1:.k2) = ([k1,k2],[])-ppbb2lkey (Z:.p1:.p2:.b1:.b2) = ([p1,p2],[b1,b2])-ppbbb2lkey (Z:.p1:.p2:.b1:.b2:.b3) = ([p1,p2],[b1,b2,b3])-ppbbbb2lkey (Z:.p1:.p2:.b1:.b2:.b3:.b4) = ([p1,p2],[b1,b2,b3,b4])---- | Print a block.--printBlock = printBlockG noNP where-  noNP ((ps,ns),v) = not $ any (==vpNP) ps || any (==nIMI) ns--printBlockH s = printBlock (s ++ "_enthalpies")--printBlock22 = printBlockG noNSNPE where-  noNSNPE ((ps,ns),v) = not $ any (==vpNP) ps || any (==vpNS) ps || any (==nN) ns || any (==nIMI) ns--printBlock22H s = printBlock22 (s ++ "_enthalpies")--printBlockG fltr s k tolkey xs' =-  let-    xs = filter fltr $ map (first tolkey)  $ assocs xs'-  in-    printf "# %s\n" s ++-    (concatMap printLine $ splitEvery k xs) ++-    "\n"--printLine xs =-  concatMap printVal xs ++ " " ++ showKey xs ++-  printf "\n"--printVal (k,v)-  | v > 10000 = printf "   INF"-  | otherwise = printf "%6d" v---- | A linear block is more boring--printLinear s k xs' = let xs = assocs xs' in-    printf "# %s\n" s ++-    (concatMap (\ys -> concatMap printVal ys ++ "\n") $ splitEvery k xs) ++-    "\n"--printHairpinAssocs l trnr trnrH = res where-  res = concat $ zipWith (\(k,v) vH -> printf "%s %7d %7d\n" (concatMap show k) v vH) xs ys-  xs = filter ((==l).length.fst) $ map (\(k,v) -> (mkString k,v)) $ M.assocs $ hairpinLookup trnr-  ys = map snd $ filter ((==l).length.fst) $ map (\(k,v) -> (mkString k,v)) $ M.assocs $ hairpinLookup trnrH-  mkString = let convT x = if x =='T' then 'U' else x in map (convT . fromNuc) . toList--printLinearH s = printLinear (s ++ "_enthalpies")
− Biobase/Vienna/Import.hs
@@ -1,121 +0,0 @@-{-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleInstances #-}---- | There are two import scenarios: (i) importing from a ViennaRNA parameter--- file (version 2004 only) and (ii) importing from a Turner2004 data--- structure.------ TODO (i) is missing right now--module Biobase.Vienna.Import where--import Control.Arrow-import Data.Array.Repa.Index-import Data.Array.Repa.Shape-import qualified Data.ByteString.Char8 as BS-import qualified Data.Map as M--import Biobase.Primary-import Biobase.Secondary-import Biobase.Secondary.Vienna-import Data.PrimitiveArray-import qualified Biobase.Turner as T--import Biobase.Vienna------ * Transforming a Turner2004 data structure into a Vienna2004 data structure.---- | From a 'Turner2004' data structure via lists of key/value pairs.--fromTurner2004 :: T.Turner2004 -> Vienna2004-fromTurner2004 turner = Vienna2004-  { stack = convert minPP maxPP $ T.stack turner-  , dangle3 = convert minPB maxPB $ T.dangle3 turner-  , dangle5 = convert minPB maxPB $ T.dangle5 turner-  , hairpinL = convert (Z:.0) (Z:.30) $ T.hairpinL turner-  , hairpinMM = convert minPBB maxPBB $ T.hairpinMM turner-  , hairpinLookup = M.mapKeys (mkPrimary . BS.unpack) . M.map deka $ T.hairpinLookup turner-  , hairpinGGG = deka $ T.hairpinGGG turner-  , hairpinCslope = deka $ T.hairpinCslope turner-  , hairpinCintercept = deka $ T.hairpinCintercept turner-  , hairpinC3 = deka $ T.hairpinC3 turner-  , bulgeL = convert (Z:.0) (Z:.30) $ T.bulgeL turner-  , bulgeSingleC = deka $ T.bulgeSingleC turner-  , iloop1x1 = convert minPPBB maxPPBB $ T.iloop1x1 turner-  , iloop2x1 = convert minPPBBB maxPPBBB $ T.iloop2x1 turner-  , iloop2x2 = convert minPPBBBB maxPPBBBB $ T.iloop2x2 turner-  , iloopMM = convert minPBB maxPBB $ T.iloopMM turner-  , iloop2x3MM = convert minPBB maxPBB $ T.iloop2x3MM turner-  , iloop1xnMM = convert minPBB maxPBB $ T.iloop1xnMM turner-  , iloopL = convert (Z:.0) (Z:.30) $ T.iloopL turner-  , multiMM = convert minPBB maxPBB $ T.multiMM turner-  , ninio = deka $ T.ninio turner-  , maxNinio = deka $ T.maxNinio turner-  , multiOffset = deka $ T.multiOffset turner-  , multiNuc = deka $ T.multiNuc turner-  , multiHelix = deka $ T.multiHelix turner-  , multiAsym = deka $ T.multiAsym turner-  , multiStrain = deka $ T.multiStrain turner-  , extMM = convert minPBB maxPBB $ T.extMM turner-  , coaxial = convert minPP maxPP $ T.coaxial turner-  , coaxStack = convert minPBB maxPBB $ T.coaxStack turner-  , tStackCoax = convert minPBB maxPBB $ T.tStackCoax turner-  , largeLoop = deka $ T.largeLoop turner-  , termAU = deka $ T.termAU turner-  , intermolecularInit = deka $ T.intermolecularInit turner-  } where convert mn mx = fromAssocs mn mx 999999 . map (idxConvert *** deka) . assocs---- conversion of indices------ (roll your eyes)--class IdxConvert a b where-  idxConvert :: a -> b--instance IdxConvert DIM1 DIM1 where-  idxConvert = id--instance IdxConvert T.PNN PNN where-  idxConvert (Z:.p1:.p2:.n1:.n2) = Z:. mkViennaPair (p1,p2) :.n1:.n2--instance IdxConvert T.PN PN where-  idxConvert (Z:.p1:.p2:.n1) = Z:. mkViennaPair (p1,p2) :.n1--instance IdxConvert T.PPNNNN PPNNNN where-  idxConvert (Z:.p11:.p12:.p21:.p22:.n1:.n2:.n3:.n4) = Z:. mkViennaPair (p11,p12) :. mkViennaPair (p21,p22) :.n1:.n2:.n3:.n4--instance IdxConvert T.PPNNN PPNNN where-  idxConvert (Z:.p11:.p12:.p21:.p22:.n1:.n2:.n3) = Z:. mkViennaPair (p11,p12) :. mkViennaPair (p21,p22) :.n1:.n2:.n3--instance IdxConvert T.PPNN PPNN where-  idxConvert (Z:.p11:.p12:.p21:.p22:.n1:.n2) = Z:. mkViennaPair (p11,p12) :. mkViennaPair (p21,p22) :.n1:.n2--instance IdxConvert T.PP PP where-  idxConvert (Z:.p11:.p12:.p21:.p22) = Z:. mkViennaPair (p11,p12) :. mkViennaPair (p21,p22)------ | Transform energies to the vienna Int-based variant------ (which is round (e*100)).--deka = round . (*100)--minP = Z:.vpNP -- minBound-maxP = Z:.vpNS -- maxBound-minPB = minP:.nN -- (minP,nN)-maxPB = maxP:.nU -- (maxP,nU)-minPP = minP:.vpNP -- (minP,minP)-maxPP = maxP:.vpNS -- (maxP,maxP)-minPBB = minP:.nN:.nN -- (minP,nN,nN)-maxPBB = maxP:.nU:.nU -- (maxP,nU,nU)-minPPBB = minPP:.nN:.nN -- (minP,minP,(nN,nN))-maxPPBB = maxPP:.nU:.nU -- (maxP,maxP,(nU,nU))-minPPBBB = minPPBB:.nN -- (minP,minP,(nN,nN,nN))-maxPPBBB = maxPPBB:.nU -- (maxP,maxP,(nU,nU,nU))-minPPBBBB = minPPBBB:.nN -- (minP,minP,(nN,nN,nN,nN))-maxPPBBBB = maxPPBBB:.nU -- (maxP,maxP,(nU,nU,nU,nU))-
− Biobase/Vienna/ImportPar.hs
@@ -1,164 +0,0 @@-{-# LANGUAGE DoAndIfThenElse #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-}---- | Import ViennaRNA parameter files (*par files). Imports Turner2004 files.--module Biobase.Vienna.ImportPar where--import Data.Iteratee as I-import Data.Iteratee.Char as I-import Data.Iteratee.IO as I-import Data.ByteString.Char8 as BS-import Prelude as P-import Data.Array.Repa.Index-import Data.Array.Repa.Shape-import qualified Data.Map as M-import Control.Monad.Identity-import Data.Maybe (fromJust)--import Data.PrimitiveArray-import Data.PrimitiveArray.Unboxed.Zero-import Biobase.Secondary.Vienna-import Biobase.Primary--import Biobase.Vienna-import Biobase.Vienna.Import--import Debug.Trace------ | split the input into different blocks. Each block has a name (prefixed #--- in the file) and some data.---data BL-  = Block {fromBlock :: [Int]}-  | Lookup {fromLookup :: [(ByteString,Int,Int)]}-  deriving (Show)--lookupStructure =-  [ "# Triloops"-  , "# Tetraloops"-  , "# Hexaloops"-  ]--iterBlocks = enumLinesBS ><> I.filter (not . BS.null) ><> convStream f where-  f = do-    h <- I.head -- the # prefix-    if h `P.elem` lookupStructure-    then do-      xs' <- I.takeWhile ((/='#') . BS.head)-      let xs = P.map (\[w,x,y] -> (w,getInt x, getInt y)) . P.map BS.words $ xs'-      return [(h, Lookup xs)]-    else do-      xs' <- I.takeWhile ((/='#') . BS.head)-      let xs = P.map getInt . P.concat . P.map BS.words . P.map (BS.takeWhile (/='/')) $ xs'-      return [(h, Block xs)]--getInt :: ByteString -> Int-getInt s-  | s == "INF" = 999999-  | otherwise  = read . BS.unpack $ s--fromFile :: FilePath -> IO (Vienna2004,Vienna2004)-fromFile fp = do-  i <- enumFile 8192 fp (joinI $ iterBlocks stream2list)-  bs <- run i-  return $ makeStructures bs--fromByteString :: ByteString -> (Vienna2004,Vienna2004)-fromByteString s = runIdentity $ do-  i <- enumPure1Chunk s (joinI $ iterBlocks stream2list)-  bs <- run i-  return $ makeStructures bs--makeStructures bs =-  let vEner = Vienna2004-        { stack = blockAssocs minPP maxPP ppKeys   $ lookup "# stack"   bs-        , dangle3 = blockAssocs minPB maxPB pbKeys $ lookup "# dangle3" bs-        , dangle5 = blockAssocs minPB maxPB pbKeys $ lookup "# dangle5" bs-        , hairpinL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# hairpin" bs-        , hairpinMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_hairpin" bs-        , hairpinLookup = fst $ allLookups bs-        , hairpinGGG = 999999-        , hairpinCslope = 999999-        , hairpinCintercept = 999999-        , hairpinC3 = 999999-        , bulgeL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# bulge" bs-        , bulgeSingleC = 999999-        , iloop1x1 = blockAssocs minPPBB maxPPBB ppbbKeys $ lookup "# int11" bs-        , iloop2x1 = blockAssocs minPPBBB maxPPBBB ppbbbKeys $ lookup "# int21" bs-        , iloop2x2 = blockAssocs minPPBBBB maxPPBBBB ppbbbbKeys $ lookup "# int22" bs-        , iloopMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior" bs-        , iloop2x3MM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior_23" bs-        , iloop1xnMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior_1n" bs-        , iloopL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# interior" bs-        , multiMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_multi" bs-        , ninio = single 0 $ lookup "# NINIO" bs-        , maxNinio = single 2 $ lookup "# NINIO" bs-        , multiOffset = single 2 $ lookup "# ML_params" bs-        , multiNuc = single 0 $ lookup "# ML_params" bs-        , multiHelix = single 4 $ lookup "# ML_params" bs-        , multiAsym = 999999-        , multiStrain = 999999-        , extMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_exterior" bs-        , coaxial = fromAssocs minPP maxPP 999999 []-        , coaxStack = fromAssocs minPBB maxPBB 999999 []-        , tStackCoax = fromAssocs minPBB maxPBB 999999 []-        , largeLoop = 999999-        , termAU = single 2 $ lookup "# Misc" bs-        , intermolecularInit = 999999-        }-      vEnth = Vienna2004-        { stack = blockAssocs minPP maxPP ppKeys   $ lookup "# stack_enthalpies"   bs-        , dangle3 = blockAssocs minPB maxPB pbKeys $ lookup "# dangle3_enthalpies" bs-        , dangle5 = blockAssocs minPB maxPB pbKeys $ lookup "# dangle5_enthalpies" bs-        , hairpinL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# hairpin_enthalpies" bs-        , hairpinMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_hairpin_enthalpies" bs-        , hairpinLookup = snd $ allLookups bs-        , hairpinGGG = 999999-        , hairpinCslope = 999999-        , hairpinCintercept = 999999-        , hairpinC3 = 999999-        , bulgeL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# bulge_enthalpies" bs-        , bulgeSingleC = 999999-        , iloop1x1 = blockAssocs minPPBB maxPPBB ppbbKeys $ lookup "# int11_enthalpies" bs-        , iloop2x1 = blockAssocs minPPBBB maxPPBBB ppbbbKeys $ lookup "# int21_enthalpies" bs-        , iloop2x2 = blockAssocs minPPBBBB maxPPBBBB ppbbbbKeys $ lookup "# int22_enthalpies" bs-        , iloopMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior_enthalpies" bs-        , iloop2x3MM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior_23_enthalpies" bs-        , iloop1xnMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_interior_1n_enthalpies" bs-        , iloopL = blockAssocs (Z:.0) (Z:.30) thirty $ lookup "# interior_enthalpies" bs-        , multiMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_multi_enthalpies" bs-        , ninio = 999999-        , maxNinio = 999999-        , multiOffset = 999999-        , multiNuc = 999999-        , multiHelix = 999999-        , multiAsym = 999999-        , multiStrain = 999999-        , extMM = blockAssocs minPBB maxPBB pbbKeys $ lookup "# mismatch_exterior_enthalpies" bs-        , coaxial = fromAssocs minPP maxPP 999999 []-        , coaxStack = fromAssocs minPBB maxPBB 999999 []-        , tStackCoax = fromAssocs minPBB maxPBB 999999 []-        , largeLoop = 999999-        , termAU = 999999-        , intermolecularInit = 999999-        }-  in (vEner,vEnth)--single k (Just (Block xs)) = xs !! k-thirty = P.map (Z:.) [0..30]-pbKeys = [ (Z:.x:.y) | x<-cgnsP, y<-nacgu ]-ppKeys = [ (Z:.x:.y) | x<-cgnsP, y<-cgnsP ]-pbbKeys = [ (Z:.a:.b:.c) | a<-cgnsP, b<-nacgu, c<-nacgu ]-ppbbKeys = [ pp:.a:.b | pp<-ppKeys, a<-nacgu, b<-nacgu ]-ppbbbKeys = [ ppbb:.a | ppbb<-ppbbKeys, a<-nacgu ]-ppbbbbKeys = [ Z:.a:.b:.c:.d:.e:.f | a<-cguaP, b<-cguaP, c<-acgu, d<-acgu, e<-acgu, f<-acgu ]-blockAssocs minKey maxKey keys (Just (Block xs)) = fromAssocs minKey maxKey 999999 $ P.zip keys xs-allLookups bs = (M.fromList $ P.map (\(a,b,c) -> (a,b)) ls, M.fromList $ P.map (\(a,b,c) -> (a,c)) ls) where-  ls = P.map (\(a,b,c) -> (mkPrimary a,b,c)) $ P.concatMap (fromLookup . snd) $ P.filter (isL . snd) bs-  isL (Lookup _) = True-  isL _          = False
BiobaseVienna.cabal view
@@ -1,9 +1,9 @@ name:           BiobaseVienna-version:        0.2.2.5+version:        0.3.0.0 author:         Christian Hoener zu Siederdissen maintainer:     choener@tbi.univie.ac.at homepage:       http://www.tbi.univie.ac.at/~choener/-copyright:      Christian Hoener zu Siederdissen, 2010-2012+copyright:      Christian Hoener zu Siederdissen, 2010-2013 category:       Bioinformatics synopsis:       Import Vienna energy parameters license:        GPL-3@@ -14,12 +14,7 @@ description:                 Importer and Exporter for Vienna energy files. Allows                 converting Turner parameter files to Vienna parameter files.-                .-                This is the 2011 post-library split version, hence not-                deprecated anymore. -- extra-source-files:   parfiles/rna_turner2004.par @@ -28,41 +23,17 @@ library   build-depends:     base >3 && <5,-    bytestring        >= 0.9,-    bytestring-lexing >= 0.4,-    containers        >= 0.4,-    file-embed        >= 0.0.4.1,-    filepath          >= 1,-    iteratee          >= 0.8.8,-    mtl               >= 2,-    split             >= 0.1.4,-    vector            == 0.9.*   ,-    BiobaseTurner     == 0.2.2.4 ,-    BiobaseXNA        == 0.6.2.5 ,-    PrimitiveArray    == 0.2.2.0+    primitive         >= 0.5     ,+    vector            >= 0.10    ,+    BiobaseTurner     >= 0.3.0.0 ,+    BiobaseXNA        >= 0.7     ,+    PrimitiveArray    >= 0.5   exposed-modules:     Biobase.Vienna-    Biobase.Vienna.Default-    Biobase.Vienna.Export-    Biobase.Vienna.Import-    Biobase.Vienna.ImportPar   ghc-options:     -O2 -funbox-strict-fields ---executable ViennaConverter-  build-depends:-    cmdargs == 0.9.*-  main-is:-    ViennaConverter.hs-  ghc-options:-    -O2 -funbox-strict-fields--- source-repository head   type: git   location: git://github.com/choener/BiobaseVienna- 
− ViennaConverter.hs
@@ -1,59 +0,0 @@-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE DeriveDataTypeable #-}---- | Convert Turner parameter files into Vienna energy files. Either into a--- ".par" file (which is used by the Haskell RNAFold as well) or multiple ".C"--- and ".H" files for inclusion into the ViennaRNA package.--module Main where--import System.Console.CmdArgs--import Biobase.Turner.Import-import Biobase.Vienna.Export-import Biobase.Vienna.Import----data Options = Options-  { dir :: FilePath-  , dna :: Bool-  } deriving (Show,Data,Typeable)--options = Options-  { dir = def &= args-  , dna = False &= help "apply dna prefix (default: false)"-  }--main :: IO ()-main = do-  Options{..} <- cmdArgs options-  let prefix = if dna then "dna" else ""-  trnr  <- fmap fromTurner2004 $ fromDir dir prefix "dat"-  trnrH <- fmap fromTurner2004 $ fromDir dir prefix "dh"-  putStrLn $ asPar trnr trnrH-  --mapM_ print $ int22symmetry $ iloop2x2 trnr-  return ()--{- symmetry checking-int22symmetry :: PrimArray I22K Int -> [( (I22K,Int) , (I22K,Int) )]-int22symmetry arr = filter (\(a,b) -> snd a /= snd b)-                  . map (\k -> ((k,arr!k),(swp k, arr! swp k)))-                  $ keys-  where-    keys = [ (p1,p2,(b1,b2,b3,b4))-           | p1 <- cguaP, p2 <- cguaP-           , b1 <- acgu, b2 <- acgu, b3 <- acgu, b4 <- acgu-           ]-    swp (p1,p2,(b1,b2,b3,b4)) = ( p2-                                , p1-                                , ( b3-                                  , b4-                                  , b1-                                  , b2-                                  )-                                )--type I22K = (ViennaPair,ViennaPair,(Nuc,Nuc,Nuc,Nuc))---}