diversity-0.2.0.5: src/src-lib/Diversity/Print.hs
-- Print module
-- By G.W. Schwartz
--
{- | Collection of functions for the printing of data (converting data
structures into strings for use with writing to output files).
-}
module Diversity.Print ( printDiversity
, printRarefaction
, printRarefactionCurve ) where
-- Built in
import Data.List
import qualified Data.Map as M
-- Local
import Diversity.Types
import Diversity.Diversity
-- Return the results of the diversity analysis in string form for saving
-- to a file
printDiversity :: Label -> Order -> Window -> PositionMap -> String
printDiversity label order window positionMap = header ++ body
where
header = "label,order,window,position,weight,diversity\n"
body = unlines
. map mapLine
. M.toAscList
$ positionMap
mapLine (p, xs) = intercalate "," . line p $ xs
line p xs = [ label
, show order
, show window
, show p
, show . length $ xs
, show . diversity order $ xs
]
-- Return the results of the rarefaction analysis in string form for saving
-- to a file
printRarefaction :: Bool -> Label -> Window -> PositionMap -> String
printRarefaction fastBin label window positionMap = header ++ body
where
header = "label,window,position,weight,percent_above\n"
body = unlines
. map mapLine
. M.toAscList
$ positionMap
mapLine (p, xs) = intercalate "," . line p $ xs
line p xs = [ label
, show window
, show p
, show . length $ xs
, show . rarefactionViable . rarefactionCurve fastBin $ xs
]
-- Return the results of the rarefaction analysis of the entire curve in
-- string form for saving to a file
printRarefactionCurve :: Bool -> Label -> Window -> PositionMap -> String
printRarefactionCurve fastBin label window positionMap = header ++ body
where
header = "label,window,position,weight,curve\n"
body = unlines
. map mapLine
. M.toAscList
$ positionMap
mapLine (p, xs) = intercalate "," . line p $ xs
line p xs = [ label
, show window
, show p
, show . length $ xs
, intercalate "/" . map show . rarefactionCurve fastBin $ xs
]