[refactor] some more imports refactoring

parent d68e6080
...@@ -160,7 +160,6 @@ library ...@@ -160,7 +160,6 @@ library
Gargantext.Core.Types.Phylo Gargantext.Core.Types.Phylo
Gargantext.Core.Utils Gargantext.Core.Utils
Gargantext.Core.Utils.Prefix Gargantext.Core.Utils.Prefix
Gargantext.Core.Viz.Graph
Gargantext.Core.Viz.Graph.Index Gargantext.Core.Viz.Graph.Index
Gargantext.Core.Viz.Graph.Tools Gargantext.Core.Viz.Graph.Tools
Gargantext.Core.Viz.Graph.Tools.IGraph Gargantext.Core.Viz.Graph.Tools.IGraph
...@@ -327,6 +326,7 @@ library ...@@ -327,6 +326,7 @@ library
Gargantext.Core.Utils.DateUtils Gargantext.Core.Utils.DateUtils
Gargantext.Core.Viz Gargantext.Core.Viz
Gargantext.Core.Viz.Chart Gargantext.Core.Viz.Chart
Gargantext.Core.Viz.Graph
Gargantext.Core.Viz.Graph.API Gargantext.Core.Viz.Graph.API
Gargantext.Core.Viz.Graph.Bridgeness Gargantext.Core.Viz.Graph.Bridgeness
Gargantext.Core.Viz.Graph.FGL Gargantext.Core.Viz.Graph.FGL
......
...@@ -47,7 +47,6 @@ import Gargantext.Core.NodeStory (ArchiveList, HasNodeStory, NodeListStory, a_hi ...@@ -47,7 +47,6 @@ import Gargantext.Core.NodeStory (ArchiveList, HasNodeStory, NodeListStory, a_hi
import Gargantext.Core.Types (ListType(..), NodeId, ListId) import Gargantext.Core.Types (ListType(..), NodeId, ListId)
import Gargantext.Database.Action.Metrics.NgramsByContext (getOccByNgramsOnlyFast) import Gargantext.Database.Action.Metrics.NgramsByContext (getOccByNgramsOnlyFast)
import Gargantext.Database.Query.Table.Ngrams qualified as TableNgrams import Gargantext.Database.Query.Table.Ngrams qualified as TableNgrams
import Gargantext.Database.Query.Table.Node.Error (HasNodeError)
import Gargantext.Database.Schema.Ngrams (NgramsType) import Gargantext.Database.Schema.Ngrams (NgramsType)
import Gargantext.Prelude hiding ((%)) import Gargantext.Prelude hiding ((%))
import Gargantext.Prelude.Clock (hasTime, getTime) import Gargantext.Prelude.Clock (hasTime, getTime)
...@@ -68,7 +67,7 @@ getRepo listIds = do ...@@ -68,7 +67,7 @@ getRepo listIds = do
getNodeStory :: HasNodeStory env err m getNodeStory :: HasNodeStory env err m
=> ListId -> m ArchiveList => ListId -> m ArchiveList
getNodeStory l = do getNodeStory l = do
f <- getNodeListStory f <- getNodeListStory
liftBase $ f l liftBase $ f l
...@@ -118,10 +117,10 @@ getListNgrams nodeIds ngramsType = listNgramsFromRepo nodeIds ngramsType ...@@ -118,10 +117,10 @@ getListNgrams nodeIds ngramsType = listNgramsFromRepo nodeIds ngramsType
<$> getRepo nodeIds <$> getRepo nodeIds
getTermsWith :: (HasNodeStory env err m, Eq a, Hashable a) getTermsWith :: (HasNodeStory env err m, Hashable a)
=> (NgramsTerm -> a) -> [ListId] => (NgramsTerm -> a) -> [ListId]
-> NgramsType -> Set ListType -> NgramsType -> Set ListType
-> m (HashMap a [a]) -> m (HashMap a [a])
getTermsWith f ls ngt lts = HM.fromListWith (<>) getTermsWith f ls ngt lts = HM.fromListWith (<>)
<$> map toTreeWith <$> map toTreeWith
<$> HM.toList <$> HM.toList
...@@ -256,8 +255,7 @@ dumpJsonTableMap fpath nodeId ngramsType = do ...@@ -256,8 +255,7 @@ dumpJsonTableMap fpath nodeId ngramsType = do
-- | Helper function to set scores on an `NgramsTable`. -- | Helper function to set scores on an `NgramsTable`.
setNgramsTableScores :: forall env err m t. setNgramsTableScores :: forall env err m t.
( Each t t NgramsElement NgramsElement ( Each t t NgramsElement NgramsElement
, HasNodeStory env err m , HasNodeStory env err m )
, HasNodeError err )
=> NodeId => NodeId
-> ListId -> ListId
-> TableNgrams.NgramsType -> TableNgrams.NgramsType
......
...@@ -31,8 +31,7 @@ import Gargantext.Core.Methods.Similarities (GraphMetric(..)) ...@@ -31,8 +31,7 @@ import Gargantext.Core.Methods.Similarities (GraphMetric(..))
import Gargantext.Core.NodeStory (HasNodeStory) import Gargantext.Core.NodeStory (HasNodeStory)
import Gargantext.Core.Types.Main (ListType(..)) import Gargantext.Core.Types.Main (ListType(..))
import Gargantext.Core.Viz.Graph.API (recomputeGraph) import Gargantext.Core.Viz.Graph.API (recomputeGraph)
import Gargantext.Core.Viz.Graph.Tools (PartitionMethod(..), BridgenessMethod(..)) import Gargantext.Core.Viz.Graph.Types (PartitionMethod(..), BridgenessMethod(..), Strength)
import Gargantext.Core.Viz.Graph.Types (Strength)
import Gargantext.Core.Viz.Phylo (PhyloSubConfigAPI(..), subConfigAPI2config) import Gargantext.Core.Viz.Phylo (PhyloSubConfigAPI(..), subConfigAPI2config)
import Gargantext.Core.Viz.Phylo.API.Tools (flowPhyloAPI) import Gargantext.Core.Viz.Phylo.API.Tools (flowPhyloAPI)
import Gargantext.Database.Action.Flow (reIndexWith) import Gargantext.Database.Action.Flow (reIndexWith)
......
...@@ -50,7 +50,7 @@ def fast_maximal_cliques(g): ...@@ -50,7 +50,7 @@ def fast_maximal_cliques(g):
module Gargantext.Core.Methods.Graph.MaxClique module Gargantext.Core.Methods.Graph.MaxClique
where where
import Data.Graph.Inductive hiding (Graph, neighbors, subgraph, (&)) import Data.Graph.Inductive hiding (Graph, neighbors, subgraph, (&))
import Data.List (nub) import Data.List (nub)
...@@ -59,7 +59,8 @@ import Data.Set (fromList, isSubsetOf) ...@@ -59,7 +59,8 @@ import Data.Set (fromList, isSubsetOf)
import Gargantext.Core.Methods.Similarities (Similarity) import Gargantext.Core.Methods.Similarities (Similarity)
import Gargantext.Core.Viz.Graph.FGL (Graph_Undirected, degree, neighbors, mkGraphUfromEdges) import Gargantext.Core.Viz.Graph.FGL (Graph_Undirected, degree, neighbors, mkGraphUfromEdges)
import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex) import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex)
import Gargantext.Core.Viz.Graph.Tools (cooc2graph',cooc2graph'', Threshold) import Gargantext.Core.Viz.Graph.Tools (cooc2graph',cooc2graph'')
import Gargantext.Core.Viz.Graph.Types (Threshold)
import Gargantext.Core.Viz.Phylo import Gargantext.Core.Viz.Phylo
import Gargantext.Prelude import Gargantext.Prelude
......
...@@ -17,6 +17,7 @@ module Gargantext.Core.Viz.Chart ...@@ -17,6 +17,7 @@ module Gargantext.Core.Viz.Chart
import Data.HashMap.Strict qualified as HashMap import Data.HashMap.Strict qualified as HashMap
import Data.List qualified as List import Data.List qualified as List
import Data.Map.Strict (toList) import Data.Map.Strict (toList)
import Data.Set qualified as Set
import Data.Vector qualified as V import Data.Vector qualified as V
import Gargantext.API.Ngrams.NgramsTree import Gargantext.API.Ngrams.NgramsTree
import Gargantext.API.Ngrams.Tools import Gargantext.API.Ngrams.Tools
...@@ -34,7 +35,6 @@ import Gargantext.Database.Query.Table.NodeContext (selectDocsDates) ...@@ -34,7 +35,6 @@ import Gargantext.Database.Query.Table.NodeContext (selectDocsDates)
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Prelude hiding (toList) import Gargantext.Prelude hiding (toList)
import qualified Data.Set as Set
histoData :: CorpusId -> DBCmd err Histo histoData :: CorpusId -> DBCmd err Histo
......
...@@ -9,18 +9,22 @@ Portability : POSIX ...@@ -9,18 +9,22 @@ Portability : POSIX
-} -}
{-# LANGUAGE TemplateHaskell #-}
module Gargantext.Core.Viz.Graph module Gargantext.Core.Viz.Graph
where ( -- REPL utilities
graphV3ToGraph
, graphV3ToGraphWithFiles
, mergeGraphNgrams
, readGraphFromJson
)
where
import Data.Aeson qualified as DA import Data.Aeson qualified as DA
import Data.ByteString.Lazy as DBL (readFile, writeFile) import Data.ByteString.Lazy as DBL (readFile, writeFile)
import Data.HashMap.Strict (HashMap, lookup) import Data.HashMap.Strict (HashMap, lookup)
import Data.Text qualified as Text import Data.Text qualified as Text
import Gargantext.API.Ngrams.Types (NgramsTerm(..), NgramsRepoElement(..), mSetToList) import Gargantext.API.Ngrams.Types (NgramsTerm(..), NgramsRepoElement(..), mSetToList)
import Gargantext.Core.Viz.Graph.Types import Gargantext.Core.Viz.Graph.Types (Attributes(..), AttributesV3(..), Edge(..), EdgeV3(..), Graph(..), GraphV3(..), Node(..), NodeV3(..), graph_nodes)
import Gargantext.Database.Admin.Types.Hyperdata.Prelude import Gargantext.Database.Admin.Types.Hyperdata.Prelude (set)
import Gargantext.Database.Schema.Ngrams (NgramsType(..)) import Gargantext.Database.Schema.Ngrams (NgramsType(..))
import Gargantext.Prelude import Gargantext.Prelude
import Text.Read qualified as Text import Text.Read qualified as Text
......
...@@ -16,7 +16,7 @@ Portability : POSIX ...@@ -16,7 +16,7 @@ Portability : POSIX
{-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeOperators #-}
module Gargantext.Core.Viz.Graph.API module Gargantext.Core.Viz.Graph.API
where where
import Control.Lens (set, (^.), _Just, (^?), at) import Control.Lens (set, (^.), _Just, (^?), at)
import Data.Aeson import Data.Aeson
...@@ -31,9 +31,9 @@ import Gargantext.API.Prelude (GargM, GargServer) ...@@ -31,9 +31,9 @@ import Gargantext.API.Prelude (GargM, GargServer)
import Gargantext.Core.Methods.Similarities (Similarity(..), GraphMetric(..), withMetric) import Gargantext.Core.Methods.Similarities (Similarity(..), GraphMetric(..), withMetric)
import Gargantext.Core.NodeStory (HasNodeStory, NodeListStory, a_version, unNodeStory) import Gargantext.Core.NodeStory (HasNodeStory, NodeListStory, a_version, unNodeStory)
import Gargantext.Core.Types.Main (ListType(MapTerm)) import Gargantext.Core.Types.Main (ListType(MapTerm))
import Gargantext.Core.Viz.Graph.GEXF () import Gargantext.Core.Viz.Graph.GEXF () -- MimeRender instances
import Gargantext.Core.Viz.Graph.Tools -- (cooc2graph) import Gargantext.Core.Viz.Graph.Tools (cooc2graphWith)
import Gargantext.Core.Viz.Graph.Types (Graph, GraphMetadata(..), HyperdataGraph(..), HyperdataGraphAPI(..), LegendField(..), ListForGraph(..), MultiPartite(..), Partite(..), Strength(Strong), hyperdataGraph, gm_edgesStrength, gm_list, gm_metric, gm_startForceAtlas, graph_metadata, hyperdataCamera, lfg_version) import Gargantext.Core.Viz.Graph.Types (BridgenessMethod(..), Graph, GraphMetadata(..), HyperdataGraph(..), HyperdataGraphAPI(..), LegendField(..), ListForGraph(..), MultiPartite(..), Partite(..), PartitionMethod(..), Strength(Strong), hyperdataGraph, gm_edgesStrength, gm_list, gm_metric, gm_startForceAtlas, graph_metadata, hyperdataCamera, lfg_version)
import Gargantext.Database.Action.Metrics.NgramsByContext (getContextsByNgramsOnlyUser) import Gargantext.Database.Action.Metrics.NgramsByContext (getContextsByNgramsOnlyUser)
import Gargantext.Database.Action.Node (mkNodeWithParent) import Gargantext.Database.Action.Node (mkNodeWithParent)
import Gargantext.Database.Admin.Config (userMaster) import Gargantext.Database.Admin.Config (userMaster)
......
...@@ -14,61 +14,41 @@ Portability : POSIX ...@@ -14,61 +14,41 @@ Portability : POSIX
{-# LANGUAGE BangPatterns, ScopedTypeVariables #-} {-# LANGUAGE BangPatterns, ScopedTypeVariables #-}
module Gargantext.Core.Viz.Graph.Tools module Gargantext.Core.Viz.Graph.Tools
where ( cooc2graph'
, cooc2graph''
, cooc2graphWith
, doSimilarityMap )
where
import Data.Aeson
import Data.HashMap.Strict (HashMap) import Data.HashMap.Strict (HashMap)
import Data.HashMap.Strict qualified as HashMap import Data.HashMap.Strict qualified as HashMap
import Data.HashSet qualified as HashSet import Data.HashSet qualified as HashSet
import Data.List qualified as List import Data.List qualified as List
import Data.Map.Strict qualified as Map import Data.Map.Strict qualified as Map
import Data.Set qualified as Set import Data.Set qualified as Set
import Data.Swagger hiding (items)
import Data.Text qualified as Text import Data.Text qualified as Text
import Data.Vector.Storable qualified as Vec import Data.Vector.Storable qualified as Vec
import Gargantext.API.Ngrams.Types (NgramsTerm(..)) import Gargantext.API.Ngrams.Types (NgramsTerm(..))
import Gargantext.Core.Methods.Similarities (Similarity(..), measure) import Gargantext.Core.Methods.Similarities (Similarity(..), measure)
import Gargantext.Core.Statistics import Gargantext.Core.Statistics (Dimension(..), pcaReduceTo)
import Gargantext.Core.Viz.Graph.Bridgeness (bridgeness, Bridgeness(..), Partitions, nodeId2comId, {-recursiveClustering,-} recursiveClustering', setNodes2clusterNodes) import Gargantext.Core.Viz.Graph.Bridgeness (bridgeness, Bridgeness(..), Partitions, nodeId2comId, {-recursiveClustering,-} recursiveClustering', setNodes2clusterNodes)
import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex, map2mat, mat2map, Index, MatrixShape(..)) import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex, map2mat, mat2map, Index, MatrixShape(..))
import Gargantext.Core.Viz.Graph.Tools.IGraph (mkGraphUfromEdges, spinglass, spinglass') import Gargantext.Core.Viz.Graph.Tools.IGraph (spinglass, spinglass')
import Gargantext.Core.Viz.Graph.Tools.Infomap (infomap) import Gargantext.Core.Viz.Graph.Tools.Infomap (infomap)
import Gargantext.Core.Viz.Graph.Types (Attributes(..), Edge(..), Graph(..), MultiPartite(..), Node(..), Partite(..), Strength(..)) import Gargantext.Core.Viz.Graph.Types (Attributes(..), BridgenessMethod(..), Edge(..), Graph(..), Layout(..), MultiPartite(..), Node(..), Occurrences, Partite(..), PartitionMethod(..), Strength(..), Threshold)
import Gargantext.Core.Viz.Graph.Utils (edgesFilter, nodesFilter) import Gargantext.Core.Viz.Graph.Utils (edgesFilter, nodesFilter)
import Gargantext.Database.Schema.Ngrams (NgramsType(..)) import Gargantext.Database.Schema.Ngrams (NgramsType(..))
import Gargantext.Prelude import Gargantext.Prelude
import Graph.BAC.ProxemyOptim qualified as BAC import Graph.BAC.ProxemyOptim qualified as BAC
import Graph.Types (ClusterNode) import Graph.Types (ClusterNode)
import IGraph qualified as Igraph
import IGraph.Algorithms.Layout qualified as Layout
import IGraph.Random -- (Gen(..))
import Test.QuickCheck (elements)
import Test.QuickCheck.Arbitrary
data PartitionMethod = Spinglass | Confluence | Infomap
deriving (Generic, Eq, Ord, Enum, Bounded, Show)
instance FromJSON PartitionMethod
instance ToJSON PartitionMethod
instance ToSchema PartitionMethod
instance Arbitrary PartitionMethod where
arbitrary = elements [ minBound .. maxBound ]
data BridgenessMethod = BridgenessMethod_Basic | BridgenessMethod_Advanced
deriving (Generic, Eq, Ord, Enum, Bounded, Show)
instance FromJSON BridgenessMethod
instance ToJSON BridgenessMethod
instance ToSchema BridgenessMethod
instance Arbitrary BridgenessMethod where
arbitrary = elements [ minBound .. maxBound ]
------------------------------------------------------------- -------------------------------------------------------------
defaultClustering :: Map (Int, Int) Double -> IO [ClusterNode] -- defaultClustering :: Map (Int, Int) Double -> IO [ClusterNode]
-- defaultClustering x = pure $ BAC.defaultClustering x -- -- defaultClustering x = pure $ BAC.defaultClustering x
defaultClustering x = spinglass 1 x -- defaultClustering x = spinglass 1 x
------------------------------------------------------------- -------------------------------------------------------------
type Threshold = Double
cooc2graph' :: Ord t => Similarity cooc2graph' :: Ord t => Similarity
-> Double -> Double
...@@ -156,8 +136,6 @@ cooc2graphWith' _doPartitions _bridgenessMethod multi similarity@Distributional ...@@ -156,8 +136,6 @@ cooc2graphWith' _doPartitions _bridgenessMethod multi similarity@Distributional
type Reverse = Bool
doSimilarityMap :: Similarity doSimilarityMap :: Similarity
-> Threshold -> Threshold
-> Strength -> Strength
...@@ -220,7 +198,6 @@ doSimilarityMap distriType threshold strength myCooc = (distanceMap, toIndex ti ...@@ -220,7 +198,6 @@ doSimilarityMap distriType threshold strength myCooc = (distanceMap, toIndex ti
---------------------------------------------------------- ----------------------------------------------------------
-- | From data to Graph -- | From data to Graph
type Occurrences = Int
nodeTypeWith :: MultiPartite -> NgramsTerm -> NgramsType nodeTypeWith :: MultiPartite -> NgramsTerm -> NgramsType
nodeTypeWith (MultiPartite (Partite s1 t1) (Partite _s2 t2)) t = nodeTypeWith (MultiPartite (Partite s1 t1) (Partite _s2 t2)) t =
...@@ -283,13 +260,11 @@ data2graph multi labels' occurences bridge conf partitions = ...@@ -283,13 +260,11 @@ data2graph multi labels' occurences bridge conf partitions =
------------------------------------------------------------------------ ------------------------------------------------------------------------
data Layout = KamadaKawai | ACP | ForceAtlas
-- setCoord' :: (Int -> (Double, Double)) -> (Int, Node) -> Node
setCoord' :: (Int -> (Double, Double)) -> (Int, Node) -> Node -- setCoord' f (i,n) = n { node_x_coord = x, node_y_coord = y }
setCoord' f (i,n) = n { node_x_coord = x, node_y_coord = y } -- where
where -- (x,y) = f i
(x,y) = f i
-- | ACP -- | ACP
...@@ -334,16 +309,16 @@ getCoord ACP labels m n = to2d $ maybe (panic "Graph.Tools no coordinate") ident ...@@ -334,16 +309,16 @@ getCoord ACP labels m n = to2d $ maybe (panic "Graph.Tools no coordinate") ident
toVec n' ns' m'' = (n', Vec.fromList $ map (\n'' -> maybe 0 identity $ Map.lookup (n',n'') m'') ns') toVec n' ns' m'' = (n', Vec.fromList $ map (\n'' -> maybe 0 identity $ Map.lookup (n',n'') m'') ns')
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- | KamadaKawai Layout -- -- | KamadaKawai Layout
-- TODO TEST: check labels, nodeId and coordinates -- -- TODO TEST: check labels, nodeId and coordinates
layout :: Map (Int, Int) Double -> Int -> Gen -> (Double, Double) -- layout :: Map (Int, Int) Double -> Int -> Gen -> (Double, Double)
layout m n gen = maybe (panic "") identity $ Map.lookup n $ coord -- layout m n gen = maybe (panic "") identity $ Map.lookup n $ coord
where -- where
coord :: (Map Int (Double,Double)) -- coord :: (Map Int (Double,Double))
coord = Map.fromList $ List.zip (Igraph.nodes g) $ (Layout.layout g p gen) -- coord = Map.fromList $ List.zip (Igraph.nodes g) $ (Layout.layout g p gen)
--p = Layout.defaultLGL -- --p = Layout.defaultLGL
p = Layout.kamadaKawai -- p = Layout.kamadaKawai
g = mkGraphUfromEdges $ map fst $ List.filter (\e -> snd e > 0) $ Map.toList m -- g = mkGraphUfromEdges $ map fst $ List.filter (\e -> snd e > 0) $ Map.toList m
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
-- MISC Tools -- MISC Tools
......
...@@ -13,50 +13,51 @@ Reference: ...@@ -13,50 +13,51 @@ Reference:
-} -}
module Gargantext.Core.Viz.Graph.Tools.IGraph module Gargantext.Core.Viz.Graph.Tools.IGraph
where ( spinglass
, spinglass' )
import Data.Serialize where
import Data.List qualified as List
import Data.Map.Strict qualified as Map
import Data.Serialize (Serialize)
import Data.Set qualified as Set
import Data.Singletons (SingI) import Data.Singletons (SingI)
import Gargantext.Core.Viz.Graph.Index import Gargantext.Core.Viz.Graph.Index (createIndices, toIndex)
import Gargantext.Prelude
import Graph.Types (ClusterNode(..)) import Graph.Types (ClusterNode(..))
import IGraph hiding (mkGraph, neighbors, edges, nodes, Node, Graph) import IGraph hiding (mkGraph, neighbors, edges, nodes, Node, Graph)
import Protolude import IGraph qualified as IG
import Gargantext.Prelude (saveAsFileDebug) import IGraph.Algorithms.Community qualified as IG
import qualified Data.List as List import IGraph.Algorithms.Structure qualified as IG
import qualified Data.Map.Strict as Map import IGraph.Random qualified as IG
import qualified IGraph as IG -- import IGraph.Algorithms.Clique qualified 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.Set as Set
------------------------------------------------------------------ ------------------------------------------------------------------
-- | Main Types -- | Main Types
type Graph_Undirected = IG.Graph 'U () () type Graph_Undirected = IG.Graph 'U () ()
type Graph_Directed = IG.Graph 'D () () -- type Graph_Directed = IG.Graph 'D () ()
type Node = IG.Node -- type Node = IG.Node
type Graph = IG.Graph -- type Graph = IG.Graph
------------------------------------------------------------------ ------------------------------------------------------------------
-- | Main Graph management Functions -- | Main Graph management Functions
neighbors :: IG.Graph d v e -> IG.Node -> [IG.Node] -- neighbors :: IG.Graph d v e -> IG.Node -> [IG.Node]
neighbors = IG.neighbors -- neighbors = IG.neighbors
edges :: IG.Graph d v e -> [Edge] -- edges :: IG.Graph d v e -> [Edge]
edges = IG.edges -- edges = IG.edges
nodes :: IG.Graph d v e -> [IG.Node] -- nodes :: IG.Graph d v e -> [IG.Node]
nodes = IG.nodes -- nodes = IG.nodes
------------------------------------------------------------------ ------------------------------------------------------------------
-- | Partitions -- | Partitions
maximalCliques :: IG.Graph d v e -> [[Int]] -- maximalCliques :: IG.Graph d v e -> [[Int]]
maximalCliques g = IG.maximalCliques g (min',max') -- maximalCliques g = IG.maximalCliques g (min',max')
where -- where
min' = 0 -- min' = 0
max' = 0 -- max' = 0
------------------------------------------------------------------ ------------------------------------------------------------------
type Seed = Int type Seed = Int
......
...@@ -246,6 +246,30 @@ instance FromField HyperdataGraphAPI ...@@ -246,6 +246,30 @@ instance FromField HyperdataGraphAPI
data PartitionMethod = Spinglass | Confluence | Infomap
deriving (Generic, Eq, Ord, Enum, Bounded, Show)
instance FromJSON PartitionMethod
instance ToJSON PartitionMethod
instance ToSchema PartitionMethod
instance Arbitrary PartitionMethod where
arbitrary = elements [ minBound .. maxBound ]
data BridgenessMethod = BridgenessMethod_Basic | BridgenessMethod_Advanced
deriving (Generic, Eq, Ord, Enum, Bounded, Show)
instance FromJSON BridgenessMethod
instance ToJSON BridgenessMethod
instance ToSchema BridgenessMethod
instance Arbitrary BridgenessMethod where
arbitrary = elements [ minBound .. maxBound ]
data Layout = KamadaKawai | ACP | ForceAtlas
type Occurrences = Int
type Threshold = Double
type Reverse = Bool
---------------------- defaults ---------------------- defaults
......
...@@ -282,8 +282,7 @@ addDocumentsToHyperCorpus ncs mb_hyper la corpusId docs = do ...@@ -282,8 +282,7 @@ addDocumentsToHyperCorpus ncs mb_hyper la corpusId docs = do
------------------------------------------------------------------------ ------------------------------------------------------------------------
flowCorpusUser :: ( HasNodeError err flowCorpusUser :: ( HasValidationError err
, HasValidationError err
, HasNLPServer env , HasNLPServer env
, HasTreeError err , HasTreeError err
, HasNodeStory env err m , HasNodeStory env err m
......
...@@ -73,7 +73,8 @@ import Gargantext.Prelude ...@@ -73,7 +73,8 @@ import Gargantext.Prelude
import Gargantext.Prelude.Crypto.Hash (Hash) import Gargantext.Prelude.Crypto.Hash (Hash)
createNodes :: ( DbCmd' env err m, HasNodeError err createNodes :: ( DbCmd' env err m
, HasNodeError err
, MkCorpus c , MkCorpus c
) )
=> User => User
...@@ -156,9 +157,7 @@ docNgrams lang nt ts doc = ...@@ -156,9 +157,7 @@ docNgrams lang nt ts doc =
-- TODO Type NodeDocumentUnicised -- TODO Type NodeDocumentUnicised
insertDocs :: ( DbCmd' env err m insertDocs :: ( DbCmd' env err m
-- , FlowCorpus a
, FlowInsertDB a , FlowInsertDB a
, HasNodeError err
) )
=> UserId => UserId
-> CorpusId -> CorpusId
...@@ -210,8 +209,7 @@ insertMasterDocs ncs c lang hs = do ...@@ -210,8 +209,7 @@ insertMasterDocs ncs c lang hs = do
buildSocialList :: ( HasNodeError err buildSocialList :: ( HasValidationError err
, HasValidationError err
, HasNLPServer env , HasNLPServer env
, HasTreeError err , HasTreeError err
, HasNodeStory env err m , HasNodeStory env err m
...@@ -294,9 +292,7 @@ toInserted = ...@@ -294,9 +292,7 @@ toInserted =
documentIdWithNgrams :: HasNodeError err documentIdWithNgrams :: (a -> DBCmd err (HashMap.HashMap b (Map NgramsType Int, TermsCount)))
=> (a
-> DBCmd err (HashMap.HashMap b (Map NgramsType Int, TermsCount)))
-> [Indexed NodeId a] -> [Indexed NodeId a]
-> DBCmd err [DocumentIdWithNgrams a b] -> DBCmd err [DocumentIdWithNgrams a b]
documentIdWithNgrams f = traverse toDocumentIdWithNgrams documentIdWithNgrams f = traverse toDocumentIdWithNgrams
......
...@@ -17,7 +17,6 @@ import Data.HashMap.Strict qualified as HashMap ...@@ -17,7 +17,6 @@ import Data.HashMap.Strict qualified as HashMap
import Data.List qualified as List import Data.List qualified as List
import Gargantext.API.Ngrams.Types (NgramsTerm(..)) import Gargantext.API.Ngrams.Types (NgramsTerm(..))
import Gargantext.Core.Methods.Similarities (Similarity(..)) import Gargantext.Core.Methods.Similarities (Similarity(..))
-- import Gargantext.Core.Viz.Graph
import Gargantext.Core.Viz.Graph.Tools (doSimilarityMap) import Gargantext.Core.Viz.Graph.Tools (doSimilarityMap)
import Gargantext.Core.Viz.Graph.Tools.IGraph (spinglass) import Gargantext.Core.Viz.Graph.Tools.IGraph (spinglass)
import Gargantext.Core.Viz.Graph.Types import Gargantext.Core.Viz.Graph.Types
......
{-|
Module : Test.Ngrams.Query.PaginationCorpus
Description : Tests
Copyright : (c) CNRS, 2024-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ScopedTypeVariables #-}
module Test.Ngrams.Query.PaginationCorpus where module Test.Ngrams.Query.PaginationCorpus where
import Prelude import Prelude
import Data.Aeson import Data.Aeson
import Data.Map.Strict (Map) import Data.Map.Strict (Map)
import Gargantext.API.Ngrams
import Gargantext.API.Ngrams.Types import Gargantext.API.Ngrams.Types
import Gargantext.Core.Types.Main import Gargantext.Core.Types.Main
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment