]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Core/Viz/Graph/Distances.hs
Merge branch 'dev-phylo' of https://gitlab.iscpif.fr/gargantext/haskell-gargantext...
[gargantext.git] / src / Gargantext / Core / Viz / Graph / 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.Viz.Graph.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.Viz.Graph.Distances.Matrice (measureConditional, distributional)
24 import Prelude (Enum, Bounded, minBound, maxBound)
25 import Test.QuickCheck (elements)
26 import Test.QuickCheck.Arbitrary
27
28 ------------------------------------------------------------------------
29 data Distance = Conditional | Distributional
30 deriving (Show)
31
32 measure :: Distance -> Matrix Int -> Matrix Double
33 measure Conditional = measureConditional
34 measure Distributional = distributional
35 ------------------------------------------------------------------------
36
37 withMetric :: GraphMetric -> Matrix Int -> Matrix Double
38 withMetric Order1 = measureConditional
39 withMetric Order2 = distributional
40
41 ------------------------------------------------------------------------
42 data GraphMetric = Order1 | Order2
43 deriving (Generic, Eq, Ord, Enum, Bounded, Show)
44
45 instance FromJSON GraphMetric
46 instance ToJSON GraphMetric
47 instance ToSchema GraphMetric
48 instance Arbitrary GraphMetric where
49 arbitrary = elements [ minBound .. maxBound ]
50
51 ------------------------------------------------------------------------