BiobaseTurner 0.1.1.0 → 0.2.0.0
raw patch · 3 files changed
+68/−47 lines, 3 filesdep +repadep +vectordep ~BiobaseXNAdep ~PrimitiveArrayPVP ok
version bump matches the API change (PVP)
Dependencies added: repa, vector
Dependency ranges changed: BiobaseXNA, PrimitiveArray
API changes (from Hackage documentation)
- Biobase.Turner: instance Read Turner2004
+ Biobase.Turner: type PP = (((Z :. Nuc) :. Nuc) :. Nuc) :. Nuc
+ Biobase.Turner: type PPNN = (PP :. Nuc) :. Nuc
+ Biobase.Turner: type PPNNN = PPNN :. Nuc
+ Biobase.Turner: type PPNNNN = PPNNN :. Nuc
- Biobase.Turner: Turner2004 :: PrimArray (Pair, Pair) Double -> PrimArray PN Double -> PrimArray PN Double -> PrimArray Int Double -> PrimArray PNN Double -> Map ByteString Double -> Double -> Double -> Double -> Double -> PrimArray Int Double -> Double -> PrimArray (Pair, Pair, (Nuc, Nuc)) Double -> PrimArray (Pair, Pair, (Nuc, Nuc, Nuc)) Double -> PrimArray (Pair, Pair, (Nuc, Nuc, Nuc, Nuc)) Double -> PrimArray PNN Double -> PrimArray PNN Double -> PrimArray PNN Double -> PrimArray Int Double -> PrimArray PNN Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> PrimArray PNN Double -> PrimArray (Pair, Pair) Double -> PrimArray PNN Double -> PrimArray PNN Double -> Double -> Double -> Double -> Turner2004
+ Biobase.Turner: Turner2004 :: PrimArray PP Double -> PrimArray PN Double -> PrimArray PN Double -> PrimArray DIM1 Double -> PrimArray PNN Double -> Map ByteString Double -> Double -> Double -> Double -> Double -> PrimArray DIM1 Double -> Double -> PrimArray PPNN Double -> PrimArray PPNNN Double -> PrimArray PPNNNN Double -> PrimArray PNN Double -> PrimArray PNN Double -> PrimArray PNN Double -> PrimArray DIM1 Double -> PrimArray PNN Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> PrimArray PNN Double -> PrimArray PP Double -> PrimArray PNN Double -> PrimArray PNN Double -> Double -> Double -> Double -> Turner2004
- Biobase.Turner: bulgeL :: Turner2004 -> PrimArray Int Double
+ Biobase.Turner: bulgeL :: Turner2004 -> PrimArray DIM1 Double
- Biobase.Turner: coaxial :: Turner2004 -> PrimArray (Pair, Pair) Double
+ Biobase.Turner: coaxial :: Turner2004 -> PrimArray PP Double
- Biobase.Turner: hairpinL :: Turner2004 -> PrimArray Int Double
+ Biobase.Turner: hairpinL :: Turner2004 -> PrimArray DIM1 Double
- Biobase.Turner: iloop1x1 :: Turner2004 -> PrimArray (Pair, Pair, (Nuc, Nuc)) Double
+ Biobase.Turner: iloop1x1 :: Turner2004 -> PrimArray PPNN Double
- Biobase.Turner: iloop2x1 :: Turner2004 -> PrimArray (Pair, Pair, (Nuc, Nuc, Nuc)) Double
+ Biobase.Turner: iloop2x1 :: Turner2004 -> PrimArray PPNNN Double
- Biobase.Turner: iloop2x2 :: Turner2004 -> PrimArray (Pair, Pair, (Nuc, Nuc, Nuc, Nuc)) Double
+ Biobase.Turner: iloop2x2 :: Turner2004 -> PrimArray PPNNNN Double
- Biobase.Turner: iloopL :: Turner2004 -> PrimArray Int Double
+ Biobase.Turner: iloopL :: Turner2004 -> PrimArray DIM1 Double
- Biobase.Turner: stack :: Turner2004 -> PrimArray (Pair, Pair) Double
+ Biobase.Turner: stack :: Turner2004 -> PrimArray PP Double
- Biobase.Turner: type PN = (Pair, Nuc)
+ Biobase.Turner: type PN = ((Z :. Nuc) :. Nuc) :. Nuc
- Biobase.Turner: type PNN = (Pair, Nuc, Nuc)
+ Biobase.Turner: type PNN = (((Z :. Nuc) :. Nuc) :. Nuc) :. Nuc
Files
- Biobase/Turner.hs +21/−15
- Biobase/Turner/Import.hs +32/−27
- BiobaseTurner.cabal +15/−5
Biobase/Turner.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeOperators #-} -- | The 'Turner2004' data structure reflects the RNA (and DNA) energy -- parameters known as the Turner 2004 data set.@@ -10,41 +11,48 @@ import Data.ByteString import Data.Map as M+import Data.Array.Repa.Index import Biobase.Primary import Biobase.Secondary import Data.PrimitiveArray-import Data.PrimitiveArray.Ix+import Data.PrimitiveArray.Unboxed -- | The parameters. Turner parameters are set by the Import module for -- nucleotides n,a,c,g,u. All values that are not read (or are ".") will end up -- with a value > 100K. ----- [1] Yes, such instances are easily created, but I don't want to pull in--- another library and I don't want to create an Ix instance here.--- -- TODO use 'Energy' instead of 'Double'+--+-- TODO specialized shape types for pairs? +type PP = (Z:.Nuc:.Nuc:.Nuc:.Nuc)+type PN = (Z:.Nuc:.Nuc:.Nuc)+type PNN = (Z:.Nuc:.Nuc:.Nuc:.Nuc)+type PPNN = PP:.Nuc:.Nuc+type PPNNN = PPNN:.Nuc+type PPNNNN = PPNNN:.Nuc+ data Turner2004 = Turner2004- { stack :: PrimArray (Pair,Pair) Double+ { stack :: PrimArray PP Double , dangle3 :: PrimArray PN Double , dangle5 :: PrimArray PN Double- , hairpinL :: PrimArray Int Double+ , hairpinL :: PrimArray DIM1 Double , hairpinMM :: PrimArray PNN Double , hairpinLookup :: M.Map ByteString Double , hairpinGGG :: Double , hairpinCslope :: Double , hairpinCintercept :: Double , hairpinC3 :: Double- , bulgeL :: PrimArray Int Double+ , bulgeL :: PrimArray DIM1 Double , bulgeSingleC :: Double- , iloop1x1 :: PrimArray (Pair,Pair,(Nuc,Nuc)) Double- , iloop2x1 :: PrimArray (Pair,Pair,(Nuc,Nuc,Nuc)) Double- , iloop2x2 :: PrimArray (Pair,Pair,(Nuc,Nuc,Nuc,Nuc)) Double -- yeah, 6-tuple ix instances :-( [1]+ , iloop1x1 :: PrimArray PPNN Double+ , iloop2x1 :: PrimArray PPNNN Double+ , iloop2x2 :: PrimArray PPNNNN Double , iloopMM :: PrimArray PNN Double , iloop2x3MM :: PrimArray PNN Double , iloop1xnMM :: PrimArray PNN Double- , iloopL :: PrimArray Int Double+ , iloopL :: PrimArray DIM1 Double , multiMM :: PrimArray PNN Double , ninio :: Double , maxNinio :: Double@@ -54,13 +62,11 @@ , multiAsym :: Double , multiStrain :: Double , extMM :: PrimArray PNN Double- , coaxial :: PrimArray (Pair,Pair) Double -- no intervening unpaired nucleotides+ , coaxial :: PrimArray PP Double -- no intervening unpaired nucleotides , coaxStack :: PrimArray PNN Double , tStackCoax :: PrimArray PNN Double , largeLoop :: Double , termAU :: Double , intermolecularInit :: Double- } deriving (Read,Show)+ } deriving (Show) -type PNN = (Pair,Nuc,Nuc)-type PN = (Pair,Nuc)
Biobase/Turner/Import.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE TupleSections #-} {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE OverloadedStrings #-} @@ -46,6 +48,7 @@ import qualified Data.List as L import System.FilePath.Posix import Data.Maybe (fromJust)+import Data.Array.Repa.Index import Biobase.Primary import Biobase.Secondary@@ -83,17 +86,17 @@ cstack' <- blockFromFile $ fp </> prefix ++ "coaxstack" <.> suffix tstack' <- blockFromFile $ fp </> prefix ++ "tstackcoax" <.> suffix return Turner2004- { stack = fromAssocs minPP maxPP infE $ L.zip keysPP stack'- , dangle3 = fromAssocs minPB maxPB infE $ L.zip keysPB dangle3'- , dangle5 = fromAssocs minPB maxPB infE $ L.zip keysPB dangle5'- , hairpinL = fromAssocs 0 30 infE $ L.zip [1..30] hairpinL'+ { stack = fromAssocs minPP maxPP infE $ L.zip keysPP stack'+ , dangle3 = fromAssocs minPB maxPB infE $ L.zip keysPB dangle3'+ , dangle5 = fromAssocs minPB maxPB infE $ L.zip keysPB dangle5'+ , hairpinL = fromAssocs (Z:.0) (Z:.30) infE $ L.zip d1_30 hairpinL' , hairpinMM = fromAssocs minPBB maxPBB infE $ L.zip keysPBB hairpinMM' , hairpinLookup = M.fromList $ hairpinLk3 ++ hairpinLk4 ++ hairpinLk6 , hairpinGGG = L.head $ imisc' !! 8 , hairpinCslope = L.head $ imisc' !! 9 , hairpinCintercept = L.head $ imisc' !! 10 , hairpinC3 = L.head $ imisc' !! 11- , bulgeL = fromAssocs 0 30 infE $ L.zip [1..30] bulgeL'+ , bulgeL = fromAssocs (Z:.0) (Z:.30) infE $ L.zip d1_30 bulgeL' , bulgeSingleC = L.head $ imisc' !! 13 , iloop1x1 = fromAssocs minPPBB maxPPBB infE $ L.zip keysPPBB iloop1x1' , iloop2x1 = fromAssocs minPPBBB maxPPBBB infE $ L.zip keysPPBBB iloop2x1'@@ -101,7 +104,7 @@ , iloopMM = fromAssocs minPBB maxPBB infE $ L.zip keysPBB iloopMM' , iloop2x3MM = fromAssocs minPBB maxPBB infE $ L.zip keysPBB iloop2x3MM' , iloop1xnMM = fromAssocs minPBB maxPBB infE $ L.zip keysPBB iloop1xnMM'- , iloopL = fromAssocs 0 30 infE $ L.zip [1..30] iloopL'+ , iloopL = fromAssocs (Z:.0) (Z:.30) infE $ L.zip d1_30 iloopL' , multiMM = fromAssocs minPBB maxPBB infE $ L.zip keysPBB multiMM' , ninio = L.head $ imisc' !! 2 , maxNinio = L.head $ imisc' !! 1@@ -119,32 +122,34 @@ , intermolecularInit = L.head $ imisc' !! 12 } -minPP = (minP,minP)-maxPP = (maxP,maxP)-minP = (nN,nN)-maxP = (nU,nU)-minPB = (minP,nN)-maxPB = (maxP,nU)-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))+minPP = Z:.nN:.nN:.nN:.nN -- (minP,minP)+maxPP = Z:.nU:.nU:.nU:.nU -- (maxP,maxP)+minP = Z:.nN:.nN -- (nN,nN)+maxP = Z:.nU:.nU -- (nU,nU)+minPB = minP:.nN -- (minP,nN)+maxPB = maxP:.nU -- (maxP,nU)+minPBB = minPB:.nN -- (minP,nN,nN)+maxPBB = maxPB:.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)) -keysPP = [((k1,k2),(k4,k3)) | k1 <- acgu, k3 <- acgu, k2 <- acgu, k4 <- acgu]-keysPB = [((k1,k2),k3) | k1 <- acgu, k2 <- acgu, k3 <- acgu]-keysPBB = [ ((k1,k2),k3,k4)+d1_30 = L.map (Z:.) [1..30]++keysPP = [{- ((k1,k2),(k4,k3)) -} Z:.k1:.k2:.k4:.k3 | k1 <- acgu, k3 <- acgu, k2 <- acgu, k4 <- acgu]+keysPB = [{- ((k1,k2),k3) -} Z:.k1:.k2:.k3 | k1 <- acgu, k2 <- acgu, k3 <- acgu]+keysPBB = [ {- ((k1,k2),k3,k4) -} Z:.k1:.k2:.k3:.k4 | k1 <- acgu, k3 <- acgu, k2 <- acgu, k4 <- acgu]-keysPPBB = [ ((k1,k2),(k4,k3),(k5,k6))+keysPPBB = [ {- ((k1,k2),(k4,k3),(k5,k6)) -} Z:.k1:.k2:.k4:.k3:.k5:.k6 | (k1,k2) <- plist11, k5 <- acgu, (k3,k4) <- plist11, k6 <- acgu]-keysPPBBB = [ ((k1,k2),(k4,k3),(k5,k6,k7))+keysPPBBB = [ {- ((k1,k2),(k4,k3),(k5,k6,k7)) -} Z:.k1:.k2:.k4:.k3:.k5:.k6:.k7 | (k1,k2) <- plist11, k6 <- acgu, k5 <- acgu, (k3,k4) <- plist11, k7 <- acgu]-keysPPBBBBrna = [ ((k1,k2),(k4,k3),(k5,k6,k7,k8))+keysPPBBBBrna = [ {- ((k1,k2),(k4,k3),(k5,k6,k7,k8)) -} Z:.k1:.k2:.k4:.k3:.k5:.k6:.k7:.k8 | (k1,k2) <- plist22rna, (k3,k4) <- plist22rna, k5 <- acgu, k8 <- acgu, k6 <- acgu, k7 <- acgu]-keysPPBBBBdna = [ ((k1,k2),(k4,k3),(k5,k6,k7,k8))+keysPPBBBBdna = [ {- ((k1,k2),(k4,k3),(k5,k6,k7,k8)) -} Z:.k1:.k2:.k4:.k3:.k5:.k6:.k7:.k8 | (k1,k2) <- plist22dna, (k3,k4) <- plist22dna, k5 <- acgu, k8 <- acgu, k6 <- acgu, k7 <- acgu] plist11 = [(nA,nU),(nC,nG),(nG,nC),(nU,nA),(nG,nU),(nU,nG)]
BiobaseTurner.cabal view
@@ -1,9 +1,9 @@ name: BiobaseTurner-version: 0.1.1.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 Turner RNA parameters license: GPL-3@@ -26,6 +26,10 @@ enumerations, which we handle rather... simplistically. We cannot fix one asymmetry case in dnastack.dh, as we do not change sources.+ .+ BIG FAT WARNING indexing now depends on repa shapes and index+ representations. (with a good reason coming soon). For now,+ just assume that this has performance benefits. library build-depends:@@ -36,13 +40,19 @@ filepath, iteratee, split,- BiobaseXNA,- PrimitiveArray+ BiobaseXNA >= 0.6.0.0,+ vector >= 0.9,+ repa >= 2.0,+ PrimitiveArray >= 0.1.1.2 exposed-modules: Biobase.Turner Biobase.Turner.Import ghc-options:- -O2+ -Odph -funbox-strict-fields -fspec-constr++source-repository head+ type: git+ location: git://github.com/choener/BiobaseTurner