Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
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
Przemyslaw Kaminski
haskell-gargantext
Commits
e134e1b8
Commit
e134e1b8
authored
Feb 19, 2019
by
Alexandre Delanoë
Committed by
Quentin Lobbé
Mar 15, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Code Review] Morning Code Quentin and Alexandre.
parent
555ea5e0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
14 deletions
+36
-14
Phylo.hs
src/Gargantext/Viz/Phylo.hs
+1
-1
Example.hs
src/Gargantext/Viz/Phylo/Example.hs
+35
-13
No files found.
src/Gargantext/Viz/Phylo.hs
View file @
e134e1b8
...
...
@@ -151,7 +151,7 @@ makeLenses ''Phylo
makeLenses
''
P
hyloParam
makeLenses
''
P
hyloExport
makeLenses
''
S
oftware
makeLenses
''
P
hyloGroup
-- | JSON instances
$
(
deriveJSON
(
unPrefix
"_phylo_"
)
''
P
hylo
)
...
...
src/Gargantext/Viz/Phylo/Example.hs
View file @
e134e1b8
...
...
@@ -27,10 +27,11 @@ TODO:
module
Gargantext.Viz.Phylo.Example
where
import
Control.Lens
hiding
(
both
)
import
qualified
Data.List
as
List
import
Data.Text
(
Text
,
unwords
,
toLower
,
words
)
import
Data.Tuple.Extra
import
Data.Semigroup
(
Semigroup
)
import
Data.Map
(
Map
)
import
qualified
Data.Map
as
Map
import
qualified
Data.Vector
as
Vector
...
...
@@ -68,6 +69,11 @@ type Occurrences = Int
--------------------------------------------------------------------
data
PhyloError
=
LevelDoesNotExist
|
LevelUnassigned
deriving
(
Show
)
data
PhyloField
=
PhyloField
{
phyloField_id
::
Int
...
...
@@ -123,35 +129,51 @@ corpusToFis f = Map.map (\d -> fisWithSizePolyMap (Segment 1 20) 1 (map f d))
------------------------------------------------------------------------
-- | STEP 4 | -- Build level -1 and 0 of the Phylo
-- makePointer :: a -> PhyloGroup -> PhyloGroup -> PhyloGroup
-- makePointer field source target = source {field = _phylo_groupId target : field source}
addPointer
::
Semigroup
field
=>
ASetter
source
target
identity
(
field
->
field
)
->
field
->
source
->
target
addPointer
field
targetPointer
source
=
set
field
(
<>
targetPointer
)
source
alterLvl
::
PhyloGroup
->
PhyloGroup
alterLvl
g
=
g
{
_phylo_groupId
=
((
Tuple
.
fst
$
Tuple
.
fst
$
_phylo_groupId
g
,
0
),
Tuple
.
snd
$
_phylo_groupId
g
)}
alterLvl'
::
PhyloGroup
->
PhyloGroup
alterLvl'
(
PhyloGroup
((
dates
,
_lvl
),
ix
)
gLabel
gNgrams
gPeriodParents
gPeriodChilds
gLevelParent
gLevelChilds
)
=
PhyloGroup
gId'
gLabel
gNgrams'
gPeriodParents
gPeriodChilds
gLevelParent
gLevelChilds
where
gId'
=
((
dates
,
0
),
ix
)
gNgrams'
=
gNgrams
-- | for the moment level 0 is just a copy of level -1
level0PhyloGroups
::
[
PhyloGroup
]
level0PhyloGroups
=
map
alterLvl
initPhyloGroups
--
level0PhyloGroups :: [PhyloGroup]
--
level0PhyloGroups = map alterLvl initPhyloGroups
findIdx
::
Ngrams
->
Int
findIdx
n
=
Maybe
.
fromJust
$
Vector
.
elemIndex
n
phyloNgrams
findIdx
n
=
case
(
Vector
.
elemIndex
n
phyloNgrams
)
of
Nothing
->
panic
"PhyloError"
Just
i
->
i
ngramsToGroup
::
[
Ngrams
]
->
Text
->
Int
->
Int
->
Int
->
Int
->
PhyloGroup
ngramsToGroup
terms
label
idx
lvl
from
to
=
PhyloGroup
(((
from
,
to
),
lvl
),
idx
)
label
(
map
(
\
x
->
findIdx
x
)
terms
)
[]
[]
[]
[]
docsToGroups
::
(
Date
,
Date
)
->
[
Document
]
->
[
PhyloGroup
]
docsToGroups
::
(
Date
,
Date
)
->
Corpus
->
[
PhyloGroup
]
docsToGroups
k
v
=
map
(
\
x
->
ngramsToGroup
[
Tuple
.
snd
x
]
(
Tuple
.
snd
x
)
(
Tuple
.
fst
x
)
(
-
1
)
(
Tuple
.
fst
k
)
(
Tuple
.
snd
k
)
)
$
zip
[
1
,
2
..
]
$
(
List
.
nub
.
List
.
concat
)
$
map
(
words
.
text
)
v
)
$
zip
[
1
..
]
$
(
List
.
nub
.
List
.
concat
)
$
map
(
words
.
text
)
v
data
Levels
=
Level_m1
|
Level_0
|
Level_1
|
Level_2
|
Level_N
deriving
(
Show
,
Eq
,
Enum
,
Bounded
)
toPhyloGroups
::
Levels
->
Map
(
Date
,
Date
)
Corpus
->
[
PhyloGroup
]
toPhyloGroups
lvl
corpus
=
case
lvl
of
Level_m1
->
List
.
concat
$
Map
.
elems
$
Map
.
mapWithKey
docsToGroups
corpus
_
->
panic
(
"error phylo to be defined"
)
toPhyloGroups
::
a
->
Int
->
[
PhyloGroup
]
toPhyloGroups
m
lvl
=
case
lvl
of
(
-
1
)
->
List
.
concat
$
Map
.
elems
$
Map
.
mapWithKey
docsToGroups
phyloTerms
-- | aka: level -1
initPhyloGroups
::
[
PhyloGroup
]
initPhyloGroups
=
toPhyloGroups
phyloTerms
(
-
1
)
initPhyloGroups
=
toPhyloGroups
Level_m1
phyloTerms
------------------------------------------------------------------------
...
...
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