histogram-fill-0.6.2.0: Library for histograms creation.

Stabilityexperimental
MaintainerAlexey Khudyakov <alexey.skladnoy@gmail.com>
Safe HaskellSafe-Infered

Data.Histogram

Contents

Description

Immutable histograms. This module export same APi as Generic but specialzed to unboxed vectors. Refer aforementioned module for documentation.

Synopsis

Immutable histogram

Data type

type Histogram bin a = Histogram Vector bin aSource

Immutable histogram. Histogram consists of binning algorithm, optional number of under and overflows, and data.

histogram :: (Unbox a, Bin bin) => bin -> Vector a -> Histogram bin aSource

histogramUO :: (Unbox a, Bin bin) => bin -> Maybe (a, a) -> Vector a -> Histogram bin aSource

data HistIndex b Source

Point inside histogram's domain. It could be either bin index or bin value.

Constructors

Index Int

Index for a bin

Value (BinValue b)

Value

Instances

histIndex :: Bin b => b -> HistIndex b -> IntSource

Convert HistIndex to actual index

Read histograms from string

readHistogram :: (Read bin, Read a, Bin bin, Unbox a) => String -> Histogram bin aSource

readFileHistogram :: (Read bin, Read a, Bin bin, Unbox a) => FilePath -> IO (Histogram bin a)Source

Accessors

bins :: Histogram bin a -> binSource

outOfRange :: Histogram bin a -> Maybe (a, a)Source

Convert to other data types

asList :: (Unbox a, Bin bin) => Histogram bin a -> [(BinValue bin, a)]Source

asVector :: (Bin bin, Unbox a, Unbox (BinValue bin), Unbox (BinValue bin, a)) => Histogram bin a -> Vector (BinValue bin, a)Source

Modification

map :: (Unbox a, Unbox b) => (a -> b) -> Histogram bin a -> Histogram bin bSource

bmap :: (Unbox a, Unbox b, Bin bin) => (BinValue bin -> a -> b) -> Histogram bin a -> Histogram bin bSource

mapData :: (Unbox a, Unbox b, Bin bin) => (Vector a -> Vector b) -> Histogram bin a -> Histogram bin bSource

zip :: (Bin bin, BinEq bin, Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Histogram bin a -> Histogram bin b -> Histogram bin cSource

zipSafe :: (Bin bin, BinEq bin, Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Histogram bin a -> Histogram bin b -> Maybe (Histogram bin c)Source

Type conversion

convertBinning :: (ConvertBin bin bin', Unbox a) => Histogram bin a -> Histogram bin' aSource

Folding

foldl :: (Bin bin, Unbox a) => (b -> a -> b) -> b -> Histogram bin a -> bSource

bfoldl :: (Bin bin, Unbox a) => (b -> BinValue bin -> a -> b) -> b -> Histogram bin a -> bSource

Slicing & rebinning

sliceSource

Arguments

:: (SliceableBin bin, Unbox a) 
=> HistIndex bin

Lower inclusive bound

-> HistIndex bin

Upper inclusive bound

-> Histogram bin a

Histogram to slice

-> Histogram bin a 

rebinSource

Arguments

:: (MergeableBin bin, Unbox a) 
=> CutDirection 
-> Int 
-> (a -> a -> a)

Accumulation function

-> Histogram bin a 
-> Histogram bin a 

rebinFoldSource

Arguments

:: (MergeableBin bin, Unbox a, Unbox b) 
=> CutDirection 
-> Int 
-> (b -> a -> b)

Accumulation function

-> b

Initial value

-> Histogram bin a 
-> Histogram bin b 

Rebin histogram

2D histograms

Slicing

sliceAlongXSource

Arguments

:: (Unbox a, Bin bX, Bin bY) 
=> Histogram (Bin2D bX bY) a

2D histogram

-> HistIndex bY

Position along Y axis

-> Histogram bX a 

sliceAlongYSource

Arguments

:: (Unbox a, Bin bX, Bin bY) 
=> Histogram (Bin2D bX bY) a

2D histogram

-> HistIndex bX

Position along X axis

-> Histogram bY a 

listSlicesAlongX :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> [(BinValue bY, Histogram bX a)]Source

listSlicesAlongY :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> [(BinValue bX, Histogram bY a)]Source

Reducing along axis

reduceXSource

Arguments

:: (Unbox a, Unbox b, Bin bX, Bin bY) 
=> (Histogram bX a -> b)

Function to reduce single slice along X axis

-> Histogram (Bin2D bX bY) a

2D histogram

-> Histogram bY b 

reduceYSource

Arguments

:: (Unbox a, Unbox b, Bin bX, Bin bY) 
=> (Histogram bY a -> b)

Function to reduce histogram along Y axis

-> Histogram (Bin2D bX bY) a

2D histogram

-> Histogram bX b 

Lift histogram transform to 2D

liftX :: (Bin bX, Bin bY, Bin bX', BinEq bX', Unbox a, Unbox b) => (Histogram bX a -> Histogram bX' b) -> Histogram (Bin2D bX bY) a -> Histogram (Bin2D bX' bY) bSource

liftY :: (Bin bX, Bin bY, Bin bY', BinEq bY', Unbox a, Unbox b) => (Histogram bY a -> Histogram bY' b) -> Histogram (Bin2D bX bY) a -> Histogram (Bin2D bX bY') bSource