[FEAT] Implements log distributional function with accelerate (#50).
[gargantext.git] / src / Gargantext / Core / Viz / Graph / Tools.hs
index 36a7a975f389dbc05348cbcc2af961bb0c8a7040..46bf82ff5fa3e7c291915ba02d44bae7c1baf4b7 100644 (file)
@@ -24,12 +24,13 @@ import Gargantext.Prelude
 import Gargantext.Core.Statistics
 import Gargantext.Core.Viz.Graph
 import Gargantext.Core.Viz.Graph.Bridgeness (bridgeness)
-import Gargantext.Core.Viz.Graph.Distances (Distance(..), measure)
+import Gargantext.Core.Methods.Distances (Distance(..), measure)
 import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex, map2mat, mat2map, Index)
 import Gargantext.Core.Viz.Graph.IGraph (mkGraphUfromEdges)
-import Gargantext.Core.Viz.Graph.Proxemy (confluence)
+import Gargantext.Core.Methods.Graph.BAC.Proxemy (confluence)
 import GHC.Float (sin, cos)
 import qualified IGraph as Igraph
+import IGraph.Random -- (Gen(..))
 import qualified IGraph.Algorithms.Layout as Layout
 import qualified Data.Vector.Storable as Vec
 import qualified Data.Map  as Map
@@ -46,7 +47,7 @@ cooc2graph' distance threshold myCooc = distanceMap
   where
     (ti, _) = createIndices myCooc
     myCooc' = toIndex ti myCooc
-    matCooc = map2mat 0 (Map.size ti) $ Map.filter (> 0) myCooc'
+    matCooc = map2mat 0 (Map.size ti) $ Map.filter (> 1) myCooc'
     distanceMat = measure distance matCooc
     distanceMap = Map.filter (> threshold) $ mat2map distanceMat
 
@@ -200,12 +201,12 @@ getCoord ACP labels m n = to2d $ maybe (panic "Graph.Tools no coordinate") ident
 
 -- | KamadaKawai Layout
 -- TODO TEST: check labels, nodeId and coordinates
-layout :: Map (Int, Int) Double -> Int -> IO (Double, Double)
-layout m n = maybe (panic "") identity <$> Map.lookup n <$> coord
+layout :: Map (Int, Int) Double -> Int -> Gen -> (Double, Double)
+layout m n gen = maybe (panic "") identity $ Map.lookup n $ coord
   where
-    coord :: IO (Map Int (Double,Double))
-    coord = Map.fromList <$> List.zip (Igraph.nodes g) <$> (Layout.getLayout g p)
+    coord :: (Map Int (Double,Double))
+    coord = Map.fromList $ List.zip (Igraph.nodes g) $ (Layout.layout g p gen)
     --p = Layout.defaultLGL
-    p = Layout.defaultKamadaKawai
+    p = Layout.kamadaKawai
     g = mkGraphUfromEdges $ map fst $ List.filter (\e -> snd e > 0) $ Map.toList m