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 +59/−0
- ADPfusionSet.cabal +3/−2
- changelog.md +5/−0
+ 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