]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Core/Methods/Distances.hs
[Types] organization, using more Lenses
[gargantext.git] / src / Gargantext / Core / Methods / Distances.hs
1 {-|
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
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE Strict #-}
13
14 module Gargantext.Core.Methods.Distances
15 where
16
17 import Data.Aeson
18 import Data.Array.Accelerate (Matrix)
19 import Data.Swagger
20 import GHC.Generics (Generic)
21 import Gargantext.Prelude (Ord, Eq, Int, Double)
22 import Gargantext.Prelude (Show)
23 import Gargantext.Core.Methods.Distances.Accelerate.Conditional (measureConditional)
24 import Gargantext.Core.Methods.Distances.Accelerate.Distributional (distributional)
25 import Prelude (Enum, Bounded, minBound, maxBound)
26 import Test.QuickCheck (elements)
27 import Test.QuickCheck.Arbitrary
28
29 ------------------------------------------------------------------------
30 data Distance = Conditional | Distributional
31 deriving (Show)
32
33 measure :: Distance -> Matrix Int -> Matrix Double
34 measure Conditional = measureConditional
35 measure Distributional = distributional
36 ------------------------------------------------------------------------
37
38 withMetric :: GraphMetric -> Matrix Int -> Matrix Double
39 withMetric Order1 = measureConditional
40 withMetric Order2 = distributional
41
42 ------------------------------------------------------------------------
43 data GraphMetric = Order1 | Order2
44 deriving (Generic, Eq, Ord, Enum, Bounded, Show)
45
46 instance FromJSON GraphMetric
47 instance ToJSON GraphMetric
48 instance ToSchema GraphMetric
49 instance Arbitrary GraphMetric where
50 arbitrary = elements [ minBound .. maxBound ]
51
52 ------------------------------------------------------------------------