2 Module : Gargantext.Graph.Distances
3 Description : Distance management tools
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE Strict #-}
14 module Gargantext.Core.Viz.Graph.Distances
18 import Data.Array.Accelerate (Matrix)
20 import GHC.Generics (Generic)
21 import Gargantext.Prelude (Ord, Eq, Int, Double)
22 import Gargantext.Prelude (Show)
23 import Gargantext.Core.Viz.Graph.Distances.Matrice (measureConditional, distributional)
24 import Prelude (Enum, Bounded, minBound, maxBound)
25 import Test.QuickCheck (elements)
26 import Test.QuickCheck.Arbitrary
28 ------------------------------------------------------------------------
29 data Distance = Conditional | Distributional
32 measure :: Distance -> Matrix Int -> Matrix Double
33 measure Conditional = measureConditional
34 measure Distributional = distributional
35 ------------------------------------------------------------------------
37 withMetric :: GraphMetric -> Matrix Int -> Matrix Double
38 withMetric Order1 = measureConditional
39 withMetric Order2 = distributional
41 ------------------------------------------------------------------------
42 data GraphMetric = Order1 | Order2
43 deriving (Generic, Eq, Ord, Enum, Bounded, Show)
45 instance FromJSON GraphMetric
46 instance ToJSON GraphMetric
47 instance ToSchema GraphMetric
48 instance Arbitrary GraphMetric where
49 arbitrary = elements [ minBound .. maxBound ]
51 ------------------------------------------------------------------------