subsample-0.1.0.0: src/Load.hs
{- Load
Gregory W. Schwartz
Collects the functions pertaining to loading the input data.
-}
{-# LANGUAGE BangPatterns #-}
module Load
( getStatusMap
) where
-- Standard
import Data.Semigroup
import qualified Data.Foldable as F
import qualified Data.Map.Strict as Map
import qualified Data.Sequence as Seq
import qualified Data.Set as Set
-- Cabal
import qualified Data.Text as T
import qualified Data.Vector as V
-- Local
import Types
import Utility
-- | Find the samples within each status.
getStatusMap :: StatusCol
-> SampleCol
-> V.Vector (Map.Map T.Text T.Text)
-> StatusMap
getStatusMap (StatusCol statusCol) (SampleCol sampleCol) =
StatusMap
. Map.map (Seq.fromList . Set.toList . Set.fromList . F.toList)
. Map.fromListWith (Seq.><)
. fmap (\ !m -> ( Status . lookupWithErr statusCol $ m
, Seq.singleton . Sample . lookupWithErr sampleCol $ m
)
)
. V.toList