packages feed

ADPfusionSet 0.0.0.1 → 0.0.0.2

raw patch · 3 files changed

+67/−2 lines, 3 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ ADP.Fusion.Term.PeekIndex.Set1: PeekIndex :: PeekIndex i
+ ADP.Fusion.Term.PeekIndex.Set1: data PeekIndex i
+ ADP.Fusion.Term.PeekIndex.Set1: instance (GHC.Show.Show i, GHC.Show.Show (ADP.Fusion.Core.Classes.RunningIndex i), GHC.Show.Show (ADP.Fusion.Core.Classes.Elm ls i)) => GHC.Show.Show (ADP.Fusion.Core.Classes.Elm (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i) i)
+ ADP.Fusion.Term.PeekIndex.Set1: instance ADP.Fusion.Core.Classes.Build (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i)
+ ADP.Fusion.Term.PeekIndex.Set1: instance ADP.Fusion.Core.Classes.Element ls i => ADP.Fusion.Core.Classes.Element (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i) i
+ ADP.Fusion.Term.PeekIndex.Set1: instance ADP.Fusion.Core.Multi.TermStaticVar (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k i)) (Data.PrimitiveArray.Index.Set.BS1 k i)
+ ADP.Fusion.Term.PeekIndex.Set1: instance ADP.Fusion.Core.Multi.TmkCtx1 m ls (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k t)) (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k t)) (Data.PrimitiveArray.Index.Set.BS1 k t)
+ ADP.Fusion.Term.PeekIndex.Set1: instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I))) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)

Files

+ ADP/Fusion/Term/PeekIndex/Set1.hs view
@@ -0,0 +1,59 @@++module ADP.Fusion.Term.PeekIndex.Set1 where++import Data.Strict.Tuple+import Data.Vector.Fusion.Stream.Monadic hiding (flatten)+import Debug.Trace+import Prelude hiding (map)++import Data.PrimitiveArray hiding (map)++import ADP.Fusion.Core hiding (PeekIndex, ElmPeekIndex)++import ADP.Fusion.Core.Set1++++data PeekIndex i = PeekIndex++instance Build (PeekIndex i)++instance+  ( Element ls i+  ) => Element (ls :!: PeekIndex i) i where+    data Elm (ls :!: PeekIndex i) i = ElmPeekIndex !i !(RunningIndex i) !(Elm ls i)+    type Arg (ls :!: PeekIndex i)   = Arg ls :. i+    getArg (ElmPeekIndex x _  ls)    = getArg ls :. x+    getIdx (ElmPeekIndex _ i  _ )    = i+    {-# Inline getArg #-}+    {-# Inline getIdx #-}++deriving instance (Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: PeekIndex i) i)++type instance TermArg (PeekIndex i) = i++instance+  ( TmkCtx1 m ls (PeekIndex (BS1 k t)) (BS1 k t)+  ) => MkStream m (ls :!: PeekIndex (BS1 k t)) (BS1 k t) where+  mkStream (ls :!: PeekIndex) sv us is+    = map (\(ss,ee,ii) -> ElmPeekIndex ee ii ss)+    . addTermStream1 PeekIndex sv us is+    $ mkStream ls (termStaticVar (PeekIndex :: PeekIndex (BS1 k t)) sv is) us (termStreamIndex (PeekIndex :: PeekIndex (BS1 k t)) sv is)+  {-# Inline mkStream #-}++instance+  ( TstCtx m ts s x0 i0 is (BS1 k I)+  ) => TermStream m (TermSymbol ts (PeekIndex (BS1 k I))) s (is:.BS1 k I) where+  termStream (ts:|PeekIndex) (cs:.IStatic r) (us:.u) (is:.BS1 i b)+    = map (\(TState s ii ee) ->+              let RiBs1I bs1 = getIndex (getIdx s) (Proxy :: PRI is (BS1 k I))+              in TState s (ii:.:RiBs1I bs1) (ee:.bs1) )+    . termStream ts cs us is+  {-# Inline termStream #-}++instance TermStaticVar (PeekIndex (BS1 k i)) (BS1 k i) where+  termStaticVar   _ isv _ = isv+  termStreamIndex _ _  ix = ix+  {-# Inline [0] termStaticVar #-}+  {-# Inline [0] termStreamIndex #-}+
ADPfusionSet.cabal view
@@ -1,5 +1,5 @@ name:           ADPfusionSet-version:        0.0.0.1+version:        0.0.0.2 author:         Christian Hoener zu Siederdissen, 2016-2017 copyright:      Christian Hoener zu Siederdissen, 2016-2017 homepage:       https://github.com/choener/ADPfusionSet@@ -11,7 +11,7 @@ build-type:     Simple stability:      experimental cabal-version:  >= 1.10.0-tested-with:    GHC == 7.10.3, GHC == 8.0.1+tested-with:    GHC == 8.0.2, GHC == 8.2.1 synopsis:       Dynamic programming for Set data structures. description:                 <http://www.bioinf.uni-leipzig.de/Software/gADP/ generalized Algebraic Dynamic Programming>@@ -89,6 +89,7 @@ --    ADP.Fusion.Term.Edge.Set2 --    ADP.Fusion.Term.Epsilon.Set     ADP.Fusion.Term.Epsilon.Set1+    ADP.Fusion.Term.PeekIndex.Set1     ADP.Fusion.Term.Singleton.Set1 --    ADP.Fusion.Term.Singleton.Set2     ADP.Fusion.Term.Singleton.Type
changelog.md view
@@ -1,6 +1,11 @@ 0.0.0.1 ------- +- include PeekIndex.Set1 as a short-term fix for MutationOrder++0.0.0.1+-------+ - initial split off the ADPfusion core package - Boundary and EdgeBoundary index structures are handled to allow for summary   statistics collection in set DP algorithms