BiobaseVienna 0.1.0.0 → 0.2.0.0
raw patch · 5 files changed
+80/−63 lines, 5 filesdep +repadep +vectordep ~BiobaseTurnerdep ~BiobaseXNAdep ~PrimitiveArrayPVP ok
version bump matches the API change (PVP)
Dependencies added: repa, vector
Dependency ranges changed: BiobaseTurner, BiobaseXNA, PrimitiveArray, cmdargs
API changes (from Hackage documentation)
- Biobase.Vienna.Import: instance (IdxConvert a c, IdxConvert b d) => IdxConvert (a, b) (c, d)
- Biobase.Vienna.Import: instance (IdxConvert a d, IdxConvert b e, IdxConvert c f) => IdxConvert (a, b, c) (d, e, f)
- Biobase.Vienna.Import: instance (IdxConvert al ar, IdxConvert bl br, IdxConvert cl cr, IdxConvert dl dr) => IdxConvert (al, bl, cl, dl) (ar, br, cr, dr)
- Biobase.Vienna.Import: instance IdxConvert Int Int
- Biobase.Vienna.Import: instance IdxConvert Nuc Nuc
- Biobase.Vienna.Import: instance IdxConvert Pair ViennaPair
+ Biobase.Vienna: type P = Z :. ViennaPair
+ 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.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: Vienna2004 :: PrimArray (ViennaPair, ViennaPair) Int -> PrimArray PN Int -> PrimArray PN Int -> PrimArray Int Int -> PrimArray PNN Int -> Map [Nuc] Int -> Int -> Int -> Int -> Int -> PrimArray Int Int -> Int -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc)) Int -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc, Nuc)) Int -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc, Nuc, Nuc)) Int -> PrimArray PNN Int -> PrimArray PNN Int -> PrimArray PNN Int -> PrimArray Int Int -> PrimArray PNN Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> PrimArray PNN Int -> PrimArray (ViennaPair, ViennaPair) Int -> PrimArray PNN Int -> PrimArray PNN Int -> Int -> Int -> Int -> Vienna2004
+ Biobase.Vienna: Vienna2004 :: PrimArray PP Int -> PrimArray PN Int -> PrimArray PN Int -> PrimArray DIM1 Int -> PrimArray PNN Int -> Map [Nuc] Int -> Int -> Int -> Int -> Int -> PrimArray DIM1 Int -> Int -> PrimArray PPNN Int -> PrimArray PPNNN Int -> PrimArray PPNNNN Int -> PrimArray PNN Int -> PrimArray PNN Int -> PrimArray PNN Int -> PrimArray DIM1 Int -> PrimArray PNN Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> PrimArray PNN Int -> PrimArray PP Int -> PrimArray PNN Int -> PrimArray PNN Int -> Int -> Int -> Int -> Vienna2004
- Biobase.Vienna: bulgeL :: Vienna2004 -> PrimArray Int Int
+ Biobase.Vienna: bulgeL :: Vienna2004 -> PrimArray DIM1 Int
- Biobase.Vienna: coaxial :: Vienna2004 -> PrimArray (ViennaPair, ViennaPair) Int
+ Biobase.Vienna: coaxial :: Vienna2004 -> PrimArray PP Int
- Biobase.Vienna: hairpinL :: Vienna2004 -> PrimArray Int Int
+ Biobase.Vienna: hairpinL :: Vienna2004 -> PrimArray DIM1 Int
- Biobase.Vienna: iloop1x1 :: Vienna2004 -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc)) Int
+ Biobase.Vienna: iloop1x1 :: Vienna2004 -> PrimArray PPNN Int
- Biobase.Vienna: iloop2x1 :: Vienna2004 -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc, Nuc)) Int
+ Biobase.Vienna: iloop2x1 :: Vienna2004 -> PrimArray PPNNN Int
- Biobase.Vienna: iloop2x2 :: Vienna2004 -> PrimArray (ViennaPair, ViennaPair, (Nuc, Nuc, Nuc, Nuc)) Int
+ Biobase.Vienna: iloop2x2 :: Vienna2004 -> PrimArray PPNNNN Int
- Biobase.Vienna: iloopL :: Vienna2004 -> PrimArray Int Int
+ Biobase.Vienna: iloopL :: Vienna2004 -> PrimArray DIM1 Int
- Biobase.Vienna: stack :: Vienna2004 -> PrimArray (ViennaPair, ViennaPair) Int
+ Biobase.Vienna: stack :: Vienna2004 -> PrimArray PP Int
- Biobase.Vienna: type PN = (ViennaPair, Nuc)
+ Biobase.Vienna: type PN = P :. Nuc
- Biobase.Vienna: type PNN = (ViennaPair, Nuc, Nuc)
+ Biobase.Vienna: type PNN = PN :. Nuc
Files
- Biobase/Vienna.hs +19/−10
- Biobase/Vienna/Export.hs +9/−7
- Biobase/Vienna/Import.hs +37/−30
- BiobaseVienna.cabal +15/−7
- ViennaConverter.hs +0/−9
Biobase/Vienna.hs view
@@ -1,3 +1,4 @@+{-# 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@@ -8,6 +9,8 @@ module Biobase.Vienna where +import Data.Array.Repa.Index+import Data.Array.Repa.Shape import Data.ByteString (ByteString) import Data.Map (Map) @@ -15,26 +18,34 @@ 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 (ViennaPair,ViennaPair) Int+ { stack :: PrimArray PP Int , dangle3 :: PrimArray PN Int , dangle5 :: PrimArray PN Int- , hairpinL :: PrimArray Int Int+ , hairpinL :: PrimArray DIM1 Int , hairpinMM :: PrimArray PNN Int , hairpinLookup :: Map [Nuc] Int , hairpinGGG :: Int , hairpinCslope :: Int , hairpinCintercept :: Int , hairpinC3 :: Int- , bulgeL :: PrimArray Int Int+ , bulgeL :: PrimArray DIM1 Int , bulgeSingleC :: Int- , iloop1x1 :: PrimArray (ViennaPair,ViennaPair,(Nuc,Nuc)) Int- , iloop2x1 :: PrimArray (ViennaPair,ViennaPair,(Nuc,Nuc,Nuc)) Int- , iloop2x2 :: PrimArray (ViennaPair,ViennaPair,(Nuc,Nuc,Nuc,Nuc)) 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 Int Int+ , iloopL :: PrimArray DIM1 Int , multiMM :: PrimArray PNN Int , ninio :: Int , maxNinio :: Int@@ -44,7 +55,7 @@ , multiAsym :: Int , multiStrain :: Int , extMM :: PrimArray PNN Int- , coaxial :: PrimArray (ViennaPair,ViennaPair) Int -- no intervening unpaired nucleotides+ , coaxial :: PrimArray PP Int -- no intervening unpaired nucleotides , coaxStack :: PrimArray PNN Int , tStackCoax :: PrimArray PNN Int , largeLoop :: Int@@ -52,5 +63,3 @@ , intermolecularInit :: Int } -- deriving (Read,Show) -type PNN = (ViennaPair,Nuc,Nuc)-type PN = (ViennaPair,Nuc)
Biobase/Vienna/Export.hs view
@@ -3,6 +3,8 @@ 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@@ -11,7 +13,7 @@ import Biobase.Primary import Biobase.Secondary.Vienna import Data.PrimitiveArray-import Data.PrimitiveArray.Ix+import Data.PrimitiveArray.Unboxed import Biobase.Vienna @@ -87,12 +89,12 @@ type LKey = ([ViennaPair],[Nuc]) -pb2lkey (p1,b1) = ([p1],[b1])-pbb2lkey (p1,b1,b2) = ([p1],[b1,b2])-pp2lkey (k1,k2) = ([k1,k2],[])-ppbb2lkey (p1,p2,(b1,b2)) = ([p1,p2],[b1,b2])-ppbbb2lkey (p1,p2,(b1,b2,b3)) = ([p1,p2],[b1,b2,b3])-ppbbbb2lkey (p1,p2,(b1,b2,b3,b4)) = ([p1,p2],[b1,b2,b3,b4])+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.
Biobase/Vienna/Import.hs view
@@ -11,8 +11,10 @@ module Biobase.Vienna.Import where import Control.Arrow-import qualified Data.Map as M+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@@ -33,14 +35,14 @@ { stack = convert minPP maxPP $ T.stack turner , dangle3 = convert minPB maxPB $ T.dangle3 turner , dangle5 = convert minPB maxPB $ T.dangle5 turner- , hairpinL = convert 0 30 $ T.hairpinL turner+ , hairpinL = convert (Z:.0) (Z:.30) $ T.hairpinL turner , hairpinMM = convert minPBB maxPBB $ T.hairpinMM turner , hairpinLookup = M.mapKeys (read . 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 0 30 $ T.bulgeL 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@@ -48,7 +50,7 @@ , iloopMM = convert minPBB maxPBB $ T.iloopMM turner , iloop2x3MM = convert minPBB maxPBB $ T.iloop2x3MM turner , iloop1xnMM = convert minPBB maxPBB $ T.iloop1xnMM turner- , iloopL = convert 0 30 $ T.iloopL 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@@ -73,42 +75,47 @@ class IdxConvert a b where idxConvert :: a -> b -instance IdxConvert Pair ViennaPair where- idxConvert = mkViennaPair--instance IdxConvert Nuc Nuc where+instance IdxConvert DIM1 DIM1 where idxConvert = id -instance IdxConvert Int Int where- idxConvert = id+instance IdxConvert T.PNN PNN where+ idxConvert (Z:.p1:.p2:.n1:.n2) = Z:. mkViennaPair (p1,p2) :.n1:.n2 -instance (IdxConvert a c, IdxConvert b d) => IdxConvert (a,b) (c,d) where- idxConvert = idxConvert *** idxConvert+instance IdxConvert T.PN PN where+ idxConvert (Z:.p1:.p2:.n1) = Z:. mkViennaPair (p1,p2) :.n1 -instance (IdxConvert a d, IdxConvert b e, IdxConvert c f) => IdxConvert (a,b,c) (d,e,f) where- idxConvert (a,b,c) = (idxConvert a, idxConvert b, idxConvert c)+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 al ar, IdxConvert bl br, IdxConvert cl cr, IdxConvert dl dr) => IdxConvert (al,bl,cl,dl) (ar,br,cr,dr) where- idxConvert (a,b,c,d) = (idxConvert a, idxConvert b, idxConvert c, idxConvert d)+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 = minBound-maxP = maxBound-minPB = (minP,nN)-maxPB = (maxP,nU)-minPP = (minP,minP)-maxPP = (maxP,maxP)-minPBB = (minP,nN,nN)-maxPBB = (maxP,nU,nU)-minPPBB = (minP,minP,(nN,nN))-maxPPBB = (maxP,maxP,(nU,nU))-minPPBBB = (minP,minP,(nN,nN,nN))-maxPPBBB = (maxP,maxP,(nU,nU,nU))-minPPBBBB = (minP,minP,(nN,nN,nN,nN))-maxPPBBBB = (maxP,maxP,(nU,nU,nU,nU))+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))
BiobaseVienna.cabal view
@@ -1,9 +1,9 @@ name: BiobaseVienna-version: 0.1.0.0+version: 0.2.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,2011+copyright: Christian Hoener zu Siederdissen, 2010-2012 category: Bioinformatics synopsis: Import Vienna energy parameters license: GPL-3@@ -27,20 +27,28 @@ filepath, iteratee, split,- BiobaseTurner >= 0.1.1,- BiobaseXNA >= 0.5.1,- PrimitiveArray+ BiobaseTurner >= 0.2,+ BiobaseXNA >= 0.6,+ vector >= 0.9,+ repa >= 2.0,+ PrimitiveArray >= 0.1.1.2 exposed-modules: Biobase.Vienna Biobase.Vienna.Export Biobase.Vienna.Import ghc-options:- -O2+ -Odph -funbox-strict-fields -fspec-constr executable ViennaConverter build-depends:- cmdargs == 0.8.*+ cmdargs == 0.9.* main-is: ViennaConverter.hs ghc-options: -O2++source-repository head+ type: git+ location: git://github.com/choener/BiobaseVienna++
ViennaConverter.hs view
@@ -13,15 +13,6 @@ import Biobase.Vienna.Export import Biobase.Vienna.Import -{--import Biobase.Primary-import Biobase.Secondary-import Biobase.Secondary.Vienna-import Data.PrimitiveArray-import Data.PrimitiveArray.Ix-import Biobase.Vienna--}- data Options = Options