histogram-fill-0.7.4.0: Library for histograms creation.

Stabilityexperimental
MaintainerAlexey Khudyakov <alexey.skladnoy@gmail.com>
Safe HaskellNone

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

Immutable histograms

type Histogram bin a = Histogram Vector bin aSource

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

Constructors

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

Conversion 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

Serialization to strings

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

Indexing

data HistIndex b Source

Point inside histogram's domain. It could be either bin index or bin value. First and Last constructors are useful for histogram slicing.

Constructors

Index Int

Index for a bin

Value (BinValue b)

Value

First

Bin with index 0

Last

Bin maximum index.

Instances

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

Convert HistIndex to actual index

at :: (Bin bin, Unbox a) => Histogram bin a -> HistIndex bin -> aSource

atV :: (Bin bin, Unbox a) => Histogram bin a -> BinValue bin -> aSource

atI :: (Bin bin, Unbox a) => Histogram bin a -> Int -> aSource

Transformations

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

Specialized folds

sum :: (Bin bin, Unbox a, Num a) => Histogram bin a -> aSource

minimum :: (Bin bin, Unbox a, Ord a) => Histogram bin a -> aSource

minimumBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> aSource

maximum :: (Bin bin, Unbox a, Ord a) => Histogram bin a -> aSource

maximumBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> aSource

minIndex :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> IntSource

minIndexBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> IntSource

maxIndex :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> IntSource

maxIndexBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> IntSource

minBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue binSource

minBinBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue binSource

maxBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue binSource

maxBinBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue binSource

Slicing & rebinning

slice :: (SliceableBin bin, Unbox a) => HistIndex bin -> HistIndex bin -> Histogram bin a -> Histogram bin aSource

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

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

2D histograms

Slicing

sliceAlongX :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bY -> Histogram bX aSource

sliceAlongY :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bX -> Histogram bY aSource

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

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

breduceX :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bY -> Histogram bX a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bY bSource

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

breduceY :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bX -> Histogram bY a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bX bSource

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