Data.Graph.Analysis
 Maintainer Ivan.Miljenovic@gmail.com
 Contents Re-exporting other modules Importing data Result analysis
Description

This is the root module of the Graphalyze library, which aims to provide a way of analysing the relationships inherent in discrete data as a graph.

This was written as part of my mathematics honours thesis, Graph-Theoretic Analysis of the Relationships in Discrete Data.

Synopsis
version :: String
module Data.Graph.Analysis.Types
module Data.Graph.Analysis.Utils
module Data.Graph.Analysis.Algorithms
module Data.Graph.Analysis.Visualisation
module Data.Graph.Analysis.Reporting
data ImportParams a = Params {
 dataPoints :: [a] relationships :: [(a, a)] roots :: [a] directed :: Bool
}
defaultParams :: ImportParams a
importData :: Ord a => ImportParams a -> GraphData a
manipulateNodes :: (a -> b) -> GraphData a -> GraphData b
lengthAnalysis :: [[a]] -> (Int, Int, [(Int, [a])])
classifyRoots :: Eq a => GraphData a -> ([LNode a], [LNode a], [LNode a])
Documentation
 version :: String Source
The library version.
Re-exporting other modules
module Data.Graph.Analysis.Types
module Data.Graph.Analysis.Utils
module Data.Graph.Analysis.Algorithms
module Data.Graph.Analysis.Visualisation
module Data.Graph.Analysis.Reporting
Importing data
 data ImportParams a Source
This represents the information that's being passed in that we want to analyse. If the graph is undirected, it is better to list each edge once rather than both directions.
Constructors
Params
 dataPoints :: [a] The discrete points. relationships :: [(a, a)] The relationships between the points. roots :: [a] The expected roots of the graph. If directed = False, then this is ignored. directed :: Bool False if relationships are symmetric (i.e. an undirected graph).
 defaultParams :: ImportParams a Source
Default values for ImportParams, with no roots and a directed graph.
 importData :: Ord a => ImportParams a -> GraphData a Source
Import data into a format suitable for analysis. This function is edge-safe: if any datums are listed in the edges of ImportParams that aren't listed in the data points, then those edges are ignored. Thus, no sanitation of the relationships in ImportParams is necessary.
 manipulateNodes :: (a -> b) -> GraphData a -> GraphData b Source
Apply a function to the nodes after processing. This might be useful in circumstances where you want to reduce the data type used to a simpler one, etc.
Result analysis
Extra functions for data analysis.
 lengthAnalysis :: [[a]] -> (Int, Int, [(Int, [a])]) Source
Returns the mean and standard deviations of the lengths of the sublists, as well all those lists more than one standard deviation longer than the mean.
 classifyRoots :: Eq a => GraphData a -> ([LNode a], [LNode a], [LNode a]) Source

Compare the actual roots in the graph with those that are expected (i.e. those in wantedRoots). Returns (in order):

• Those roots that are expected (i.e. elements of wantedRoots that are roots).
• Those roots that are expected but not present (i.e. elements of wantedRoots that aren't roots.
• Unexpected roots (i.e. those roots that aren't present in wantedRoots).