packages feed

edges 0.4.0.1 → 0.4.0.2

raw patch · 7 files changed

+51/−47 lines, 7 filesdep ~potoki-cerealdep ~primitive-extrasPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: potoki-cereal, primitive-extras

API changes (from Hackage documentation)

- Edges.NodeCounts: nodeTargets :: Edges surce target -> Node source -> NodeCounts target
+ Edges.NodeCounts: nodeTargets :: Edges source target -> Node source -> NodeCounts target

Files

edges.cabal view
@@ -1,7 +1,7 @@ name:   edges version:-  0.4.0.1+  0.4.0.2 category:   Graphs synopsis:@@ -61,9 +61,9 @@     monad-par >=0.3.4.8 && <0.4,     pointed >=5 && <6,     potoki >=2.0.2 && <2.1,-    potoki-cereal >=0.2.1.1 && <0.3,+    potoki-cereal >=0.3 && <0.4,     primitive >=0.6.4 && <0.7,-    primitive-extras >=0.3 && <0.4,+    primitive-extras >=0.6.1 && <0.7,     profunctors >=5 && <6,     QuickCheck >=2.8.1 && <3,     semigroupoids >=5.2 && <6,
library/Edges/Cereal/Get.hs view
@@ -4,19 +4,22 @@ import Edges.Prelude import Edges.Types import Data.Serialize.Get-import PrimitiveExtras.Cereal.Get+import qualified PrimitiveExtras.PrimArray as PrimArray+import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray  +int :: Get Int+int = fromIntegral <$> getInt64le+ nodeCounts :: Get (NodeCounts entity) nodeCounts =-  NodeCounts <$> primArray getWord32le+  NodeCounts <$> PrimArray.cerealGet int getWord32le  edges :: Get (Edges a b)-edges =-  do-    targetSpace <- fromIntegral <$> getInt64le-    pma <- primMultiArray getWord32le-    return (Edges targetSpace pma)+edges = do+  targetSpace <- int+  pma <- PrimMultiArray.cerealGet int getWord32le+  return (Edges targetSpace pma)  node :: Get (Node a)-node = Node . fromIntegral <$> getInt64le+node = Node <$> int
library/Edges/Cereal/Put.hs view
@@ -4,19 +4,21 @@ import Edges.Prelude import Edges.Types import Data.Serialize.Put-import PrimitiveExtras.Cereal.Put+import qualified PrimitiveExtras.PrimArray as PrimArray+import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray  +int :: Putter Int+int = putInt64le . fromIntegral+ nodeCounts :: Putter (NodeCounts entity) nodeCounts (NodeCounts pa) =-  primArray putWord32le pa+  PrimArray.cerealPut int putWord32le pa  edges :: Putter (Edges a b)-edges (Edges targetSpaceValue mpaValue) =-  targetSpace <> mpa-  where-    targetSpace = putInt64le (fromIntegral targetSpaceValue)-    mpa = primMultiArray putWord32le mpaValue+edges (Edges targetSpaceValue mpaValue) = targetSpace <> mpa where+  targetSpace = int targetSpaceValue+  mpa = PrimMultiArray.cerealPut int putWord32le mpaValue  node :: Putter (Node a)-node (Node int) = putInt64le (fromIntegral int)+node (Node x) = int x
library/Edges/Edges.hs view
@@ -13,10 +13,9 @@ import Edges.Prelude import Edges.Types import Edges.Cereal.Instances ()-import qualified PrimitiveExtras.Monad as Monad+import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray import qualified Control.Foldl as Foldl import qualified Control.Monad.Par as Par-import qualified PrimitiveExtras.UnfoldM as UnfoldM import qualified DeferredFolds.UnfoldM as UnfoldM import qualified Test.QuickCheck.Gen as Gen @@ -55,13 +54,13 @@  primFoldableWithAmounts :: Foldable f => Int -> Int -> f (Int, Word32) -> Edges a b primFoldableWithAmounts aAmount bAmount foldable =-  Edges bAmount $ runIdentity $ Monad.primMultiArray aAmount $ \ fold ->+  Edges bAmount $ runIdentity $ PrimMultiArray.create aAmount $ \ fold ->   Identity $ Foldl.fold fold foldable  toAssocUnfoldM :: Monad m => Edges a b -> UnfoldM m (Node a, Node b) toAssocUnfoldM (Edges _ mpa) =   fmap (\ (aInt, bWord32) -> (Node aInt, Node (fromIntegral bWord32))) $-  UnfoldM.primMultiArrayAssocs mpa+  PrimMultiArray.toAssocsUnfoldM mpa  toAssocList :: Edges a b -> [(Node a, Node b)] toAssocList edges =
library/Edges/NodeCounts.hs view
@@ -12,12 +12,11 @@ import Edges.Prelude hiding (index, toList) import Edges.Types import Edges.Cereal.Instances ()-import qualified PrimitiveExtras.UnfoldM as A-import qualified PrimitiveExtras.Pure as C-import qualified PrimitiveExtras.IO as D-import qualified PrimitiveExtras.Fold as E-import qualified DeferredFolds.UnfoldM as B-import qualified Data.Vector.Unboxed as F+import qualified PrimitiveExtras.PrimArray as PrimArray+import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray+import qualified PrimitiveExtras.TVarArray as TVarArray+import qualified DeferredFolds.UnfoldM as UnfoldM+import qualified Data.Vector.Unboxed as UnboxedVector import qualified Control.Monad.Par.IO as Par import qualified Control.Monad.Par as Par hiding (runParIO) @@ -27,18 +26,18 @@  node :: Edges entity anyEntity -> Node entity -> NodeCounts entity node (Edges _ edgesPma) =-  let size = C.primMultiArrayOuterLength edgesPma+  let size = PrimMultiArray.outerLength edgesPma       in nodeWithSize size  nodeWithSize :: Int -> Node entity -> NodeCounts entity nodeWithSize size (Node index) =-  NodeCounts (C.oneHotPrimArray size index 1)+  NodeCounts (PrimArray.oneHot size index 1) -nodeTargets :: Edges surce target -> Node source -> NodeCounts target+nodeTargets :: Edges source target -> Node source -> NodeCounts target nodeTargets (Edges targetAmount edgesPma) (Node sourceIndex) =-  let indexUnfold = fmap fromIntegral (A.primMultiArrayAt edgesPma sourceIndex)-      indexFold = E.indexCounts targetAmount-      countPa = B.fold indexFold indexUnfold+  let indexUnfold = fmap fromIntegral (PrimMultiArray.toUnfoldAtM edgesPma sourceIndex)+      indexFold = PrimArray.indexCountsFold targetAmount+      countPa = UnfoldM.fold indexFold indexUnfold       in NodeCounts countPa  {-|@@ -49,19 +48,19 @@ targets :: Edges source target -> NodeCounts source -> NodeCounts target targets (Edges targetAmount edgesPma) (NodeCounts sourceCountsPa) =   unsafePerformIO $ Par.runParIO $ do-    targetCountVarTable <- liftIO (D.newTVarArray 0 targetAmount)+    targetCountVarTable <- liftIO (TVarArray.new 0 targetAmount)     Par.parFor (Par.InclusiveRange 0 (pred (sizeofPrimArray sourceCountsPa))) $ \ sourceIndex ->       case indexPrimArray sourceCountsPa sourceIndex of         0 -> return ()         sourceCount ->           liftIO $-          B.forM_ (A.primMultiArrayAt edgesPma sourceIndex) $ \ targetIndex ->-          D.modifyTVarArrayAt targetCountVarTable (fromIntegral targetIndex) (+ sourceCount)-    targetCountsPa <- liftIO (D.freezeTVarArrayAsPrimArray targetCountVarTable)+          UnfoldM.forM_ (PrimMultiArray.toUnfoldAtM edgesPma sourceIndex) $ \ targetIndex ->+          TVarArray.modifyAt targetCountVarTable (fromIntegral targetIndex) (+ sourceCount)+    targetCountsPa <- liftIO (TVarArray.freezeAsPrimArray targetCountVarTable)     return (NodeCounts targetCountsPa)  toList :: NodeCounts entity -> [Word32] toList (NodeCounts pa) = foldrPrimArray' (:) [] pa -toUnboxedVector :: NodeCounts entity -> F.Vector Word32-toUnboxedVector (NodeCounts pa) = C.primArrayUnboxedVector pa+toUnboxedVector :: NodeCounts entity -> UnboxedVector.Vector Word32+toUnboxedVector (NodeCounts pa) = PrimArray.toUnboxedVector pa
library/Edges/Potoki/Produce.hs view
@@ -5,7 +5,7 @@ import Edges.Types import Edges.NodeCounts () import Potoki.Produce-import qualified PrimitiveExtras.Pure as A+import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray import qualified Potoki.Transform as B import qualified Potoki.Cereal.Produce as C @@ -13,7 +13,7 @@ nodes :: Edges a x -> Produce (Node a) nodes (Edges _ pma) =   coerce $-  enumInRange 0 (pred (A.primMultiArrayOuterLength pma))+  enumInRange 0 (pred (PrimMultiArray.outerLength pma))  nodeCounts :: Edges a x -> (Node a -> NodeCounts b) -> Produce (Node a, NodeCounts b) nodeCounts edges nodeCounts =
library/Edges/Prelude.hs view
@@ -113,13 +113,14 @@ import Data.Primitive as Exports import Control.Monad.Primitive as Exports --- vector+-- primitive-extras --------------------------import Data.Vector as Exports (Vector)+import PrimitiveExtras.PrimMultiArray as Exports (PrimMultiArray)+import PrimitiveExtras.TVarArray as Exports (TVarArray) --- primitive-extras+-- vector --------------------------import PrimitiveExtras.Data as Exports+import Data.Vector as Exports (Vector)  -- text -------------------------