]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Viz/Phylo/Aggregates/Fis.hs
[Phylo][Merge] Fix warnings and adding Eq instance to Phylo for Behavior test.
[gargantext.git] / src / Gargantext / Viz / Phylo / Aggregates / Fis.hs
1 {-|
2 Module : Gargantext.Viz.Phylo.Tools
3 Description : Phylomemy Tools to build/manage it
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
8 Portability : POSIX
9
10
11 -}
12
13 {-# LANGUAGE NoImplicitPrelude #-}
14 {-# LANGUAGE FlexibleContexts #-}
15 {-# LANGUAGE OverloadedStrings #-}
16
17 module Gargantext.Viz.Phylo.Aggregates.Fis
18 where
19
20 import Data.List (head)
21 import Data.Map (Map)
22 import Data.Text (words)
23 import Data.Tuple (fst, snd)
24 import Gargantext.Prelude hiding (head)
25 import Gargantext.Text.Metrics.FrequentItemSet (fisWithSizePolyMap, Size(..))
26 import Gargantext.Viz.Phylo
27 import Gargantext.Viz.Phylo.Tools
28 import qualified Data.Map as Map
29
30
31 -- | To Filter Fis by support
32 filterFisBySupport :: Bool -> Int -> Map (Date, Date) [Fis] -> Map (Date, Date) [Fis]
33 filterFisBySupport empty min' m = case empty of
34 True -> Map.map (\l -> filterMinorFis min' l) m
35 False -> Map.map (\l -> keepFilled (filterMinorFis) min' l) m
36
37
38 -- | To filter Fis with small Support, to preserve nonempty periods please use : filterFisBySupport False
39 filterMinorFis :: Int -> [Fis] -> [Fis]
40 filterMinorFis min' l = filter (\fis -> snd fis > min') l
41
42
43 -- | To filter nested Fis
44 filterFisByNested :: Map (Date, Date) [Fis] -> Map (Date, Date) [Fis]
45 filterFisByNested = map (\l -> let cliqueMax = filterNestedSets (head $ map fst l) (map fst l) []
46 in filter (\fis -> elem (fst fis) cliqueMax) l)
47
48
49 -- | To transform a list of Documents into a Frequent Items Set
50 docsToFis :: Map (Date, Date) [Document] -> Map (Date, Date) [Fis]
51 docsToFis docs = map (\d -> Map.toList
52 $ fisWithSizePolyMap (Segment 1 20) 1 (map (words . text) d)) docs