HaskellAnalysisProgram-0.1.0: src/MetaHS/Extensions/MacroLevelAggregation/Distribution.hs
{-|
Module : MetaHS.MacroLevelAggregation
Description : The MetaHS Macro-level aggregation method: distribution
Copyright : Copyright (C) 2017-2019 H.H.R.F. Vos, S. Kamps
License : -- This file is distributed under the terms of the Apache License 2.0.
For more information, see the file "LICENSE", which is included in the distribution.
Stability : experimental
Calculates the distribution of the metric values corresponding to supplied Relation Key.
-}
module MetaHS.Extensions.MacroLevelAggregation.Distribution
where
import MetaHS.Extensions.MacroLevelAggregation.Utils
import qualified MetaHS.DataModel.MetaModel as MetaModel
import MetaHS.EDSL.MetaModel
import qualified Data.Set as Set
-- | Calculates the distribution of the metric values corresponding to supplied Relation Key.
distribution :: RelationKey -- ^ The MetaModel Relation Key (E.g., LCOM).
-> MetaModel.MetaModel -- ^ The MetaModel Containing the associated key.
-> Set.Set (Int, Int) -- ^ The set containing tuple(s) (Frequency, MetricValue)
distribution key mm = Set.fromList [(countValues x xs, x) | x <- xs]
where
xs = getMetricElements key mm
countValues x = length.filter(==x)