packages feed

hmm-lapack 0.3.0.2 → 0.3.0.3

raw patch · 8 files changed

+22/−38 lines, 8 filesdep ~lapackdep ~semigroupsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: lapack, semigroups

API changes (from Hackage documentation)

- Math.HiddenMarkovModel: deviation :: (InvIndexed sh, Eq sh, Real prob, Ord prob) => T distr sh prob -> T distr sh prob -> prob
+ Math.HiddenMarkovModel: deviation :: (C sh, Eq sh, Real prob, Ord prob) => T distr sh prob -> T distr sh prob -> prob

Files

hmm-lapack.cabal view
@@ -1,5 +1,5 @@ Name:                hmm-lapack-Version:             0.3.0.2+Version:             0.3.0.3 Synopsis:            Hidden Markov Models using LAPACK primitives Description:   Hidden Markov Models implemented using LAPACK data types and operations.@@ -41,7 +41,7 @@   Changes.md  Source-Repository this-  Tag:         0.3.0.2+  Tag:         0.3.0.3   Type:        darcs   Location:    http://hub.darcs.net/thielema/hmm-lapack @@ -67,7 +67,7 @@     Math.HiddenMarkovModel.Utility     Math.HiddenMarkovModel.CSV   Build-Depends:-    lapack >=0.2 && <0.3,+    lapack >=0.2.2 && <0.3,     fixed-length >=0.2.1 && <0.3,     tfp >=1.0 && <1.1,     netlib-ffi >=0.1.1 && <0.2,
src/Math/HiddenMarkovModel.hs view
@@ -26,12 +26,11 @@ import Math.HiddenMarkovModel.Private           (T(..), Trained(..), mergeTrained, toCells, parseCSV) import Math.HiddenMarkovModel.Utility-          (SquareMatrix, squareConstant,+          (SquareMatrix, squareConstant, distance,            randomItemProp, normalizeProb, attachOnes)  import qualified Numeric.LAPACK.Matrix as Matrix import qualified Numeric.LAPACK.Vector as Vector-import qualified Numeric.LAPACK.Scalar as Scalar  import qualified Numeric.Netlib.Class as Class @@ -182,27 +181,12 @@ should suffice for defining an abort criterion. -} deviation ::-   (Shape.InvIndexed sh, Eq sh, Class.Real prob, Ord prob) =>+   (Shape.C sh, Eq sh, Class.Real prob, Ord prob) =>    T distr sh prob -> T distr sh prob -> prob deviation hmm0 hmm1 =-   deviationVec (initial hmm0) (initial hmm1)+   distance (initial hmm0) (initial hmm1)    `max`-   deviationVec (transition hmm0) (transition hmm1)--deviationVec ::-   (Shape.InvIndexed sh, Eq sh, Class.Real a) =>-   StorableArray.Array sh a -> StorableArray.Array sh a -> a-deviationVec =-   getDeviation $ Class.switchReal deviationVecAux deviationVecAux--newtype Deviation f a = Deviation {getDeviation :: f a -> f a -> a}--deviationVecAux ::-   (Shape.InvIndexed sh, Eq sh, Ord a, Class.Real a, Scalar.RealOf a ~ a) =>-   Deviation (StorableArray.Array sh) a-deviationVecAux =-   Deviation $ \x y ->-      Scalar.absolute $ snd $ Vector.argAbsMaximum $ Vector.sub x y+   distance (transition hmm0) (transition hmm1)   toCSV ::
src/Math/HiddenMarkovModel/CSV.hs view
@@ -114,7 +114,6 @@ parseVectorCells =    parseVectorFields =<< getRow --- ToDo: Maybe check row consistency already here? parseVectorFields ::    (Read a, Class.Real a) =>    CSV.CSVRow -> CSVParser (Vector ZeroInt a)
src/Math/HiddenMarkovModel/Distribution.hs view
@@ -314,7 +314,6 @@                 (error "Distribution.normalize: undefined array element")) $           distr --- ToDo: could be managed by semigroup maybePlus :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a maybePlus f mx my = liftA2 f mx my <|> mx <|> my 
src/Math/HiddenMarkovModel/Example/SineWave.hs view
@@ -11,10 +11,10 @@ import qualified Math.HiddenMarkovModel as HMM import qualified Math.HiddenMarkovModel.Distribution as Distr import Math.HiddenMarkovModel.Utility-         (normalizeProb, squareFromLists, hermitianFromList, singleton)+         (normalizeProb, squareFromLists, hermitianFromList)  import qualified Numeric.LAPACK.Vector as Vector-import Numeric.LAPACK.Vector (Vector)+import Numeric.LAPACK.Vector (Vector, singleton)  import qualified Data.Array.Comfort.Boxed as Array import qualified Data.Array.Comfort.Shape as Shape
src/Math/HiddenMarkovModel/Example/TrafficLightPrivate.hs view
@@ -44,7 +44,6 @@    symbolFromCell = maybeRead  --- data State = StateRed | StateYellowDown | StateGreen | StateYellowUp data State = StateRed | StateYellowRG | StateGreen | StateYellowGR    deriving (Eq, Ord, Enum, Bounded) 
src/Math/HiddenMarkovModel/Test.hs view
@@ -11,7 +11,7 @@ import qualified Math.HiddenMarkovModel.Normalized as Normalized import qualified Math.HiddenMarkovModel.Private as Priv import qualified Math.HiddenMarkovModel.Distribution as Distr-import Math.HiddenMarkovModel.Utility (SquareMatrix, squareFromLists)+import Math.HiddenMarkovModel.Utility (SquareMatrix, squareFromLists, distance)  import qualified Numeric.LAPACK.Vector as Vector import qualified Numeric.LAPACK.ShapeStatic as ShapeStatic@@ -123,12 +123,6 @@         Priv.zetaFromAlphaBeta recipLikelihood alphas betas,         uncurry Normalized.zetaFromAlphaBeta $         Normalized.alphaBeta hmm sequ)---distance ::-   (Shape.C sh, Eq sh) =>-   Vector.Vector sh Double -> Vector.Vector sh Double -> Double-distance x y = Vector.normInf (Vector.sub x y)   {- |
src/Math/HiddenMarkovModel/Utility.hs view
@@ -50,10 +50,7 @@ vectorDim :: Shape.C sh => Vector sh a -> Int vectorDim = Shape.size . StorableArray.shape -singleton :: (Class.Real a) => a -> Vector () a-singleton = Vector.constant () - hermitianFromList ::    (Shape.C sh, Storable a) => sh -> [a] -> Hermitian.Hermitian sh a hermitianFromList = Hermitian.fromList MatrixShape.RowMajor@@ -70,3 +67,15 @@  diagonal :: (Shape.C sh, Class.Real a) => Vector sh a -> Diagonal sh a diagonal = Triangular.diagonal MatrixShape.RowMajor+++newtype Distance f a = Distance {getDistance :: f a -> f a -> a}++distance ::+   (Shape.C sh, Eq sh, Class.Real a) =>+   Vector sh a -> Vector sh a -> a+distance =+   getDistance $+   Class.switchReal+      (Distance $ (Vector.normInf .) . Vector.sub)+      (Distance $ (Vector.normInf .) . Vector.sub)