{- Clumpiness By Gregory W. Schwartz Contains an easier to use version of the clumpiness function. -} module Clumpiness ( getClumpiness ) where -- Cabal import Data.Tree (Tree) import Math.Clumpiness.Algorithms (generateClumpMap) import Math.Clumpiness.Types (ClumpList) -- Local import TreeTransform import Types getClumpiness :: Exclusivity -- ^ How to look at vertices with multiple labels. -> Bool -- ^ Whether the unique node IDs are predefined (recommended False unless you know what you are doing) -> Bool -- ^ Whether to look at labels in inner vertices. -> Tree NodeLabel -> ClumpList Label getClumpiness exclusivity predefinedIDs excludeInner tree = generateClumpMap (const True) propertyMap superTree where superTree = convertToSuperTree . filterExclusiveTree exclusivity . (\ x -> if excludeInner then x else innerToLeaves x ) . (\ x -> if predefinedIDs then x else addUniqueNodeIDs x ) $ tree propertyMap = getPropertyMap superTree