Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
158
Issues
158
List
Board
Labels
Milestones
Merge Requests
11
Merge Requests
11
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
c776b0ec
Commit
c776b0ec
authored
Jun 18, 2019
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[GRAPH] With FGL without IGraph, runTest is OK.
parent
7c2cdbd2
Pipeline
#479
failed with stage
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
131 additions
and
15 deletions
+131
-15
package.yaml
package.yaml
+1
-0
FGL.hs
src/Gargantext/Viz/Graph/FGL.hs
+57
-0
IGraph.hs
src/Gargantext/Viz/Graph/IGraph.hs
+62
-0
Proxemy.hs
src/Gargantext/Viz/Graph/Proxemy.hs
+10
-14
Tools.hs
src/Gargantext/Viz/Graph/Tools.hs
+1
-1
No files found.
package.yaml
View file @
c776b0ec
...
...
@@ -110,6 +110,7 @@ library:
-
filepath
-
fullstop
-
fclabels
-
fgl
-
fast-logger
-
filelock
-
full-text-search
...
...
src/Gargantext/Viz/Graph/FGL.hs
0 → 100644
View file @
c776b0ec
{-| Module : Gargantext.Viz.Graph.FGL
Description : FGL main functions used in Garg
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
Main FGL funs/types to ease portability with IGraph.
-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE ConstraintKinds #-}
module
Gargantext.Viz.Graph.FGL
where
import
Gargantext.Prelude
import
qualified
Data.Graph.Inductive
as
FGL
import
Data.List
as
List
------------------------------------------------------------------
-- | Main Types
type
Graph_Undirected
=
FGL
.
Gr
()
()
type
Graph_Directed
=
FGL
.
Gr
()
()
type
Graph
=
FGL
.
Graph
type
Node
=
FGL
.
Node
type
Edge
=
FGL
.
Edge
------------------------------------------------------------------
-- | Main Functions
mkGraph
::
[
Node
]
->
[
Edge
]
->
Graph_Undirected
mkGraph
=
FGL
.
mkUGraph
neighbors
::
Graph
gr
=>
gr
a
b
->
Node
->
[
Node
]
neighbors
=
FGL
.
neighbors
-- | TODO bug: if graph is undirected, we need to filter
-- nub . (map (\(n1,n2) -> if n1 < n2 then (n1,n2) else (n2,n1))) . FGL.edges
edges
::
Graph
gr
=>
gr
a
b
->
[
Edge
]
edges
=
FGL
.
edges
nodes
::
Graph
gr
=>
gr
a
b
->
[
Node
]
nodes
=
FGL
.
nodes
------------------------------------------------------------------
-- | Main sugared functions
mkGraphUfromEdges
::
[(
Int
,
Int
)]
->
Graph_Undirected
mkGraphUfromEdges
es
=
mkGraph
ns
es
where
ns
=
List
.
nub
(
a
<>
b
)
where
(
a
,
b
)
=
List
.
unzip
es
src/Gargantext/Viz/Graph/IGraph.hs
0 → 100644
View file @
c776b0ec
{-| Module : Gargantext.Viz.Graph.IGraph
Description : IGraph main functions used in Garg
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
Main IGraph funs/types to ease portability with FGL.
-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE DataKinds #-}
module
Gargantext.Viz.Graph.IGraph
where
import
Data.Serialize
(
Serialize
)
import
Data.Singletons
(
SingI
)
import
Gargantext.Prelude
import
IGraph
hiding
(
mkGraph
,
neighbors
,
edges
,
nodes
,
Node
,
Graph
)
import
qualified
IGraph
as
IG
import
qualified
Data.List
as
List
------------------------------------------------------------------
-- | Main Types
type
Graph_Undirected
=
IG
.
Graph
'U
()
()
type
Graph_Directed
=
IG
.
Graph
'D
()
()
type
Node
=
IG
.
Node
type
Graph
=
IG
.
Graph
------------------------------------------------------------------
-- | Main Functions
mkGraph
::
(
SingI
d
,
Ord
v
,
Serialize
v
,
Serialize
e
)
=>
[
v
]
->
[
LEdge
e
]
->
IG
.
Graph
d
v
e
mkGraph
=
IG
.
mkGraph
neighbors
::
IG
.
Graph
d
v
e
->
IG
.
Node
->
[
Node
]
neighbors
=
IG
.
neighbors
edges
::
IG
.
Graph
d
v
e
->
[
Edge
]
edges
=
IG
.
edges
nodes
::
IG
.
Graph
d
v
e
->
[
Node
]
nodes
=
IG
.
nodes
------------------------------------------------------------------
-- | Main sugared functions
mkGraphUfromEdges
::
[(
Int
,
Int
)]
->
Graph_Undirected
mkGraphUfromEdges
es
=
mkGraph
(
List
.
replicate
n
()
)
$
zip
es
$
repeat
()
where
(
a
,
b
)
=
List
.
unzip
es
n
=
List
.
length
(
List
.
nub
$
a
<>
b
)
mkGraphDfromEdges
::
[(
Int
,
Int
)]
->
Graph_Directed
mkGraphDfromEdges
=
undefined
src/Gargantext/Viz/Graph/Proxemy.hs
View file @
c776b0ec
...
...
@@ -19,18 +19,19 @@ Références:
module
Gargantext.Viz.Graph.Proxemy
where
--import Debug.SimpleReflect
import
Gargantext.Prelude
import
Data.Map
(
Map
)
import
qualified
Data.Map
as
Map
import
qualified
Data.List
as
List
import
Gargantext.Viz.Graph.IGraph
--import Gargantext.Viz.Graph.IGraph
import
Gargantext.Viz.Graph.FGL
type
Length
=
Int
type
FalseReflexive
=
Bool
type
NeighborsFilter
=
Graph_Undirected
->
Node
->
[
Node
]
type
We
=
Bool
similarity_conf_x_y
::
Graph_Undirected
->
(
Node
,
Node
)
->
Length
->
FalseReflexive
->
We
->
Double
similarity_conf_x_y
g
(
x
,
y
)
l
r
we
=
similarity
where
...
...
@@ -102,15 +103,6 @@ spreading g ms r nf = Map.fromListWith (+) $ List.concat $ map pvalue (Map.keys
------------------------------------------------------------------------
-- | Graph Tools
mkGraphUfromEdges
::
[(
Int
,
Int
)]
->
Graph_Undirected
mkGraphUfromEdges
es
=
mkGraph
(
List
.
replicate
n
()
)
$
zip
es
$
repeat
()
where
(
a
,
b
)
=
List
.
unzip
es
n
=
List
.
length
(
List
.
nub
$
a
<>
b
)
mkGraphDfromEdges
::
[(
Int
,
Int
)]
->
Graph_Directed
mkGraphDfromEdges
=
undefined
filterNeighbors
::
Graph_Undirected
->
Node
->
[
Node
]
filterNeighbors
g
n
=
List
.
nub
$
neighbors
g
n
...
...
@@ -128,7 +120,13 @@ ecount = fromIntegral . List.length . List.nub . edges
-- | Behavior tests
graphTest
::
Graph_Undirected
graphTest
=
mkGraphUfromEdges
[(
0
,
1
),(
0
,
2
),(
0
,
4
),(
0
,
5
),(
1
,
0
),(
1
,
3
),(
1
,
8
),(
2
,
0
),(
2
,
3
),(
2
,
4
),(
2
,
5
),(
2
,
6
),(
2
,
16
),(
3
,
1
),(
3
,
2
),(
3
,
4
),(
3
,
5
),(
3
,
6
),(
3
,
18
),(
4
,
0
),(
4
,
2
),(
4
,
3
),(
4
,
6
),(
5
,
0
),(
5
,
2
),(
5
,
3
),(
5
,
8
),(
6
,
2
),(
6
,
3
),(
6
,
4
),(
7
,
8
),(
7
,
9
),(
7
,
10
),(
7
,
13
),(
8
,
1
),(
8
,
5
),(
8
,
7
),(
8
,
9
),(
8
,
10
),(
8
,
11
),(
8
,
12
),(
8
,
13
),(
9
,
7
),(
9
,
8
),(
9
,
12
),(
9
,
13
),(
10
,
7
),(
10
,
8
),(
10
,
11
),(
10
,
17
),(
11
,
8
),(
11
,
10
),(
11
,
12
),(
12
,
8
),(
12
,
9
),(
12
,
11
),(
13
,
7
),(
13
,
8
),(
13
,
9
),(
13
,
20
),(
14
,
16
),(
14
,
17
),(
14
,
18
),(
14
,
20
),(
15
,
16
),(
15
,
17
),(
15
,
18
),(
15
,
20
),(
16
,
2
),(
16
,
14
),(
16
,
15
),(
16
,
18
),(
16
,
20
),(
17
,
10
),(
17
,
14
),(
17
,
15
),(
17
,
18
),(
17
,
20
),(
18
,
3
),(
18
,
14
),(
18
,
15
),(
18
,
16
),(
18
,
17
),(
18
,
19
),(
18
,
20
),(
19
,
18
),(
19
,
20
),(
20
,
13
),(
20
,
14
),(
20
,
15
),(
20
,
16
),(
20
,
17
),(
20
,
18
),(
20
,
19
)]
graphTest
=
mkGraphUfromEdges
graphTest_data
graphTest_data
::
[(
Int
,
Int
)]
graphTest_data
=
[(
0
,
1
),(
0
,
2
),(
0
,
4
),(
0
,
5
),(
1
,
3
),(
1
,
8
),(
2
,
3
),(
2
,
4
),(
2
,
5
),(
2
,
6
),(
2
,
16
),(
3
,
4
),(
3
,
5
),(
3
,
6
),(
3
,
18
),(
4
,
6
),(
5
,
8
),(
7
,
8
),(
7
,
9
),(
7
,
10
),(
7
,
13
),(
8
,
9
),(
8
,
10
),(
8
,
11
),(
8
,
12
),(
8
,
13
),(
9
,
12
),(
9
,
13
),(
10
,
11
),(
10
,
17
),(
11
,
12
),(
13
,
20
),(
14
,
16
),(
14
,
17
),(
14
,
18
),(
14
,
20
),(
15
,
16
),(
15
,
17
),(
15
,
18
),(
15
,
20
),(
16
,
18
),(
16
,
20
),(
17
,
18
),(
17
,
20
),(
18
,
19
),(
18
,
20
),(
19
,
20
)]
graphTest_data'
::
[(
Int
,
Int
)]
graphTest_data'
=
[(
0
,
1
),(
0
,
2
),(
0
,
4
),(
0
,
5
),(
1
,
0
),(
1
,
3
),(
1
,
8
),(
2
,
0
),(
2
,
3
),(
2
,
4
),(
2
,
5
),(
2
,
6
),(
2
,
16
),(
3
,
1
),(
3
,
2
),(
3
,
4
),(
3
,
5
),(
3
,
6
),(
3
,
18
),(
4
,
0
),(
4
,
2
),(
4
,
3
),(
4
,
6
),(
5
,
0
),(
5
,
2
),(
5
,
3
),(
5
,
8
),(
6
,
2
),(
6
,
3
),(
6
,
4
),(
7
,
8
),(
7
,
9
),(
7
,
10
),(
7
,
13
),(
8
,
1
),(
8
,
5
),(
8
,
7
),(
8
,
9
),(
8
,
10
),(
8
,
11
),(
8
,
12
),(
8
,
13
),(
9
,
7
),(
9
,
8
),(
9
,
12
),(
9
,
13
),(
10
,
7
),(
10
,
8
),(
10
,
11
),(
10
,
17
),(
11
,
8
),(
11
,
10
),(
11
,
12
),(
12
,
8
),(
12
,
9
),(
12
,
11
),(
13
,
7
),(
13
,
8
),(
13
,
9
),(
13
,
20
),(
14
,
16
),(
14
,
17
),(
14
,
18
),(
14
,
20
),(
15
,
16
),(
15
,
17
),(
15
,
18
),(
15
,
20
),(
16
,
2
),(
16
,
14
),(
16
,
15
),(
16
,
18
),(
16
,
20
),(
17
,
10
),(
17
,
14
),(
17
,
15
),(
17
,
18
),(
17
,
20
),(
18
,
3
),(
18
,
14
),(
18
,
15
),(
18
,
16
),(
18
,
17
),(
18
,
19
),(
18
,
20
),(
19
,
18
),(
19
,
20
),(
20
,
13
),(
20
,
14
),(
20
,
15
),(
20
,
16
),(
20
,
17
),(
20
,
18
),(
20
,
19
)]
-- | Tests
-- >>> runTest_Confluence_Proxemy
...
...
@@ -178,8 +176,6 @@ runTest_Confluence_Proxemy = (runTest_conf_is_ok, runTest_prox_is_ok)
where
look'
x'
m'
=
maybe
(
panic
"nokey"
)
identity
$
Map
.
lookup
x'
m'
--prox : longueur balade = 0
test_prox
::
Node
->
[(
Node
,
[(
Node
,
Double
)])]
test_prox
0
=
[
(
0
,[(
0
,
1.0000
),(
1
,
0.0000
),(
2
,
0.0000
),(
3
,
0.0000
),(
4
,
0.0000
),(
5
,
0.0000
),(
6
,
0.0000
),(
7
,
0.0000
),(
8
,
0.0000
),(
9
,
0.0000
),(
10
,
0.0000
),(
11
,
0.0000
),(
12
,
0.0000
),(
13
,
0.0000
),(
14
,
0.0000
),(
15
,
0.0000
),(
16
,
0.0000
),(
17
,
0.0000
),(
18
,
0.0000
),(
19
,
0.0000
),(
20
,
0.0000
)])
...
...
src/Gargantext/Viz/Graph/Tools.hs
View file @
c776b0ec
...
...
@@ -26,7 +26,7 @@ import Gargantext.Viz.Graph
--import Gargantext.Viz.Graph.Bridgeness (bridgeness)
import
Gargantext.Viz.Graph.Distances.Matrice
(
measureConditional
)
import
Gargantext.Viz.Graph.Index
(
createIndices
,
toIndex
,
map2mat
,
mat2map
)
import
Gargantext.Viz.Graph.
Proxemy
(
mkGraphUfromEdges
)
import
Gargantext.Viz.Graph.
IGraph
(
mkGraphUfromEdges
)
import
GHC.Float
(
sin
,
cos
)
import
qualified
IGraph
as
Igraph
import
qualified
IGraph.Algorithms.Layout
as
Layout
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment