[FIX] compilation
[gargantext.git] / src / Gargantext / Core / Viz / Graph / Tools / IGraph.hs
index 9b35247e141cca747789bdf3f644ed329257df9e..2bf469cf0394d74d3db5a6ba77cae23c721e5c86 100644 (file)
@@ -17,17 +17,17 @@ module Gargantext.Core.Viz.Graph.Tools.IGraph
 
 import Data.Serialize
 import Data.Singletons (SingI)
+import Gargantext.Core.Viz.Graph.Index
+import Graph.Types (ClusterNode(..))
 import IGraph hiding (mkGraph, neighbors, edges, nodes, Node, Graph)
 import Protolude
-import Gargantext.Core.Viz.Graph.Index
-import Graph.Types
 import qualified Data.List                   as List
+import qualified Data.Map                    as Map
 import qualified IGraph                      as IG
 import qualified IGraph.Algorithms.Clique    as IG
 import qualified IGraph.Algorithms.Community as IG
 import qualified IGraph.Algorithms.Structure as IG
 import qualified IGraph.Random               as IG
-import qualified Data.Map                    as Map
 
 ------------------------------------------------------------------
 -- | Main Types
@@ -63,18 +63,17 @@ spinglass :: Seed -> Map (Int, Int) Double -> IO [ClusterNode]
 spinglass s g = toClusterNode
              <$> map catMaybes
              <$> map (map (\n -> Map.lookup n fromI))
-             <$> partitions_spinglass' s g'''
+             <$> List.concat
+             <$> mapM (partitions_spinglass' s) g'
   where
-    g'   = toIndex toI g
-    g''  = mkGraphUfromEdges (Map.keys g')
-    g''' = case IG.isConnected g'' of
-      True -> g''
-      False -> case head (IG.decompose g'') of
-        Nothing    -> panic "[G.C.V.G.T.Igraph: not connected graph]"
-        Just g'''' -> g''''
+    -- Not connected components of the graph make crash spinglass
+    g' = IG.decompose $ mkGraphUfromEdges
+                      $ Map.keys
+                      $ toIndex toI g
 
     (toI, fromI) = createIndices g
 
+
 -- | Tools to analyze graphs
 partitions_spinglass' :: (Serialize v, Serialize e)
                          => Seed -> IG.Graph 'U v e -> IO [[Int]]