{-| Module : Gargantext.Database.Lists Description : Main requests of Node to the database Copyright : (c) CNRS, 2017-Present License : AGPL + CECILL v3 Maintainer : team@gargantext.org Stability : experimental Portability : POSIX -} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE Arrows #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-} module Gargantext.Database.Action.Metrics.Lists where import Gargantext.API.Ngrams (TabType(..)) import Gargantext.Core.Types -- (NodePoly(..), NodeCorpus, ListId) import Gargantext.Database.Action.Flow (FlowCmdM) import Gargantext.Prelude hiding (sum, head) import Gargantext.Text.Metrics (Scored(..)) import Prelude hiding (null, id, map, sum) import qualified Data.Map as Map import qualified Data.Vector as Vec import qualified Gargantext.Database.Action.Metrics as Metrics {- trainModel :: FlowCmdM env ServantErr m => Username -> m Score trainModel u = do rootId <- _node_id <$> getRoot u (id:ids) <- getCorporaWithParentId rootId (s,_model) <- case length ids >0 of True -> grid 100 150 (getMetrics False -> panic "Gargantext.Database.Lists.trainModel : not enough corpora" --} getMetrics' :: FlowCmdM env err m => CorpusId -> Maybe ListId -> TabType -> Maybe Int -> m (Map.Map ListType [Vec.Vector Double]) getMetrics' cId maybeListId tabType maybeLimit = do (ngs', scores) <- Metrics.getMetrics cId maybeListId tabType maybeLimit let metrics = map (\(Scored t s1 s2) -> (listType t ngs', [Vec.fromList [s1,s2]])) scores listType t m = maybe (panic errorMsg) fst $ Map.lookup t m errorMsg = "API.Node.metrics: key absent" {- _ <- Learn.grid 100 110 metrics' metrics' --} pure $ Map.fromListWith (<>) metrics