ViennaRNA-bindings 0.1.0.0 → 0.1.1.0
raw patch · 7 files changed
+81/−38 lines, 7 files
Files
- BioInf/ViennaRNA/Bindings.hs +6/−3
- BioInf/ViennaRNA/Bindings/FFI/CoFold.chs +15/−17
- BioInf/ViennaRNA/Bindings/FFI/Fold.chs +1/−2
- BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs +30/−12
- ViennaRNA-bindings.cabal +10/−4
- cbits/ffiwrap_part_func.c +8/−0
- changelog +11/−0
BioInf/ViennaRNA/Bindings.hs view
@@ -13,8 +13,8 @@ import qualified Data.Array.IArray as A -import BioInf.ViennaRNA.Bindings.FFI.Fold as FFI-import BioInf.ViennaRNA.Bindings.FFI.CoFold as FFI+import BioInf.ViennaRNA.Bindings.FFI.CoFold as FFI+import BioInf.ViennaRNA.Bindings.FFI.Fold as FFI import BioInf.ViennaRNA.Bindings.FFI.PartFunc as FFI -- | Fold a sequence into an optimal secondary structure. Returns a pair of@@ -35,7 +35,10 @@ -- pair probability table. part :: String -> IO (Double,String,A.Array (Int,Int) Double)-part = ffiPartitionFunction+part = ffi_pf_fold++partConstrained :: String -> String -> IO (Double, String, A.Array (Int,Int) Double)+partConstrained = ffi_pf_fold_constrained
BioInf/ViennaRNA/Bindings/FFI/CoFold.chs view
@@ -8,28 +8,26 @@ , CofoldF (..) ) where -import Foreign.C.String-import Foreign.C.Types-import Foreign.Marshal.Alloc-import Foreign.Ptr-import Foreign.Storable-import GHC.Float-import Unsafe.Coerce+import Control.Applicative+import Control.Monad+import Foreign.C.String+import Foreign.C.Types+import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.Ptr+import Foreign.Storable+import GHC.Float import qualified Data.Array.IArray as A-import Foreign.Marshal.Array-import Control.Applicative-import Control.Monad--import BioInf.ViennaRNA.Bindings.FFI.Utils+import Unsafe.Coerce -import Debug.Trace+import BioInf.ViennaRNA.Bindings.FFI.Utils -#include <ViennaRNA/fold.h>-#include <ViennaRNA/data_structures.h>-#include <ViennaRNA/cofold.h>-#include <ViennaRNA/part_func_co.h>+#include "cofold.h"+#include "data_structures.h"+#include "fold.h"+#include "part_func_co.h" {#pointer *cofoldF as CofoldFPtr -> CofoldF #}
BioInf/ViennaRNA/Bindings/FFI/Fold.chs view
@@ -17,8 +17,7 @@ --#include <ViennaRNA/fold.h>+#include "fold.h" ffiFold :: String -> IO (Double,String) ffiFold inp = withCAString inp $ \cinp ->
BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs view
@@ -1,34 +1,52 @@ {-# LANGUAGE ForeignFunctionInterface #-} module BioInf.ViennaRNA.Bindings.FFI.PartFunc- ( ffiPartitionFunction+ ( ffi_pf_fold+ , ffi_pf_fold_constrained ) where -import Foreign.C.String-import Foreign.C.Types-import Foreign.Marshal.Alloc-import Foreign.Marshal.Array-import Foreign.Ptr-import GHC.Float+import Foreign.C.String+import Foreign.C.Types+import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.Ptr+import GHC.Float import qualified Data.Array.IArray as A-import Unsafe.Coerce+import Unsafe.Coerce import BioInf.ViennaRNA.Bindings.FFI.Utils -#include <ViennaRNA/part_func.h>+#include "part_func.h" -ffiPartitionFunction :: String -> IO (Double,String,A.Array (Int,Int) Double)-ffiPartitionFunction i =+ffi_pf_fold :: String -> IO (Double,String,A.Array (Int,Int) Double)+ffi_pf_fold i = withCAString i $ \ci -> withCAString i $ \cs -> do let n = length i let z = n * (n+1) `div` 2 +1- e <- {#call pf_fold #} ci cs+ e <- {#call ffiwrap_pf_fold_constrained #} ci cs 0 s <- peekCAString cs bp <- {#call export_bppm #} xs <- peekArray z (bp :: Ptr CDouble) let ar = A.accumArray (const id) 0 ((1,1),(n,n)) $ zip [ (ii,jj) | ii <- [n,n-1..1], jj <- [n,n-1..ii]] (drop 1 $ map unsafeCoerce xs) return (cf2d e, s, ar)++ffi_pf_fold_constrained :: String -> String -> IO (Double,String,A.Array (Int,Int) Double)+ffi_pf_fold_constrained i s =+ withCAString i $ \ci ->+ withCAString s $ \cs -> do+ let n = length i+ let z = n * (n+1) `div` 2 +1+ e <- {#call ffiwrap_pf_fold_constrained #} ci cs 1+ s <- peekCAString cs+ bp <- {#call export_bppm #}+ xs <- peekArray z (bp :: Ptr CDouble)+ let ar = A.accumArray (const id) 0 ((1,1),(n,n)) $ zip [ (ii,jj) | ii <- [n,n-1..1], jj <- [n,n-1..ii]] (drop 1 $ map unsafeCoerce xs)+ return (cf2d e, s, ar)++#c+float ffiwrap_pf_fold_constrained (const char *sequence, char *structure, int constrained);+#endc
ViennaRNA-bindings.cabal view
@@ -1,10 +1,10 @@ name: ViennaRNA-bindings-version: 0.1.0.0+version: 0.1.1.0 synopsis: ViennaRNA v2 bindings homepage: http://www.tbi.univie.ac.at/~choener/ license: OtherLicense license-file: LICENSE-author: Christian Hoener zu Siederdissen (bindings) 2013, The ViennaRNA Team (library) 1994-2013+author: Christian Hoener zu Siederdissen (bindings) 2013-4, The ViennaRNA Team (library) 1994-2014 maintainer: choener@tbi.univie.ac.at copyright: The ViennaRNA Team 1994-2013 category: Bioinformatics, FFI@@ -22,8 +22,12 @@ ViennaRNA package. . If you use this software, please cite:- R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011),- "ViennaRNA Package 2.0", Algorithms for Molecular Biology: 6:26+ .+ @+ R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011)+ ViennaRNA Package 2.0+ Algorithms for Molecular Biology: 6:26+ @ extra-source-files: cbits/circfold.inc@@ -55,6 +59,7 @@ include/PS_dot.h include/subopt.h include/utils.h+ changelog library@@ -83,6 +88,7 @@ cbits/part_func.c cbits/part_func_co.c cbits/cofold.c+ cbits/ffiwrap_part_func.c cc-options: include-dirs: include includes: config.h
+ cbits/ffiwrap_part_func.c view
@@ -0,0 +1,8 @@++#include "part_func.h"++float ffiwrap_pf_fold_constrained (const char *sequence, char *structure, int constrained)+{+ return pf_fold_par (sequence, structure, 0, 1, constrained, 0);+}+
+ changelog view
@@ -0,0 +1,11 @@+0.1.1.0+-------++- breaking changes to PartFunc.chs+- constrained partition function folding+- includes should now all be local (that one was bad)++0.1.0.0+-------++- relevant cbits are now provided as part of the cabal package