Copyright | Copyright (c) 2009 Alexey Khudyakov <alexey.skladnoy@gmail.com> |
---|---|
License | BSD3 |
Maintainer | Alexey Khudyakov <alexey.skladnoy@gmail.com> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell98 |
Immutable histograms. This module exports the same API as
Generic
but specialized to unboxed vectors. Please refer
to the aforementioned module for detailed documentation.
Synopsis
- type Histogram bin a = Histogram Vector bin a
- module Data.Histogram.Bin
- histogram :: (Unbox a, Bin bin) => bin -> Vector a -> Histogram bin a
- histogramUO :: (Unbox a, Bin bin) => bin -> Maybe (a, a) -> Vector a -> Histogram bin a
- asList :: (Unbox a, Bin bin) => Histogram bin a -> [(BinValue bin, a)]
- asVector :: (Bin bin, Unbox a, Unbox (BinValue bin, a)) => Histogram bin a -> Vector (BinValue bin, a)
- readHistogram :: (Read bin, Read a, Bin bin, Unbox a) => String -> Histogram bin a
- readFileHistogram :: (Read bin, Read a, Bin bin, Unbox a) => FilePath -> IO (Histogram bin a)
- bins :: Histogram bin a -> bin
- histData :: Histogram bin a -> Vector a
- underflows :: Histogram bin a -> Maybe a
- overflows :: Histogram bin a -> Maybe a
- outOfRange :: Histogram bin a -> Maybe (a, a)
- data HistIndex b
- histIndex :: Bin b => b -> HistIndex b -> Int
- at :: (Bin bin, Unbox a) => Histogram bin a -> HistIndex bin -> a
- atV :: (Bin bin, Unbox a) => Histogram bin a -> BinValue bin -> a
- atI :: (Bin bin, Unbox a) => Histogram bin a -> Int -> a
- map :: (Unbox a, Unbox b) => (a -> b) -> Histogram bin a -> Histogram bin b
- bmap :: (Unbox a, Unbox b, Bin bin) => (BinValue bin -> a -> b) -> Histogram bin a -> Histogram bin b
- mapData :: (Unbox a, Unbox b, Bin bin) => (Vector a -> Vector b) -> Histogram bin a -> Histogram bin b
- zip :: (BinEq bin, Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Histogram bin a -> Histogram bin b -> Histogram bin c
- zipSafe :: (BinEq bin, Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Histogram bin a -> Histogram bin b -> Maybe (Histogram bin c)
- convertBinning :: (ConvertBin bin bin', Unbox a) => Histogram bin a -> Histogram bin' a
- foldl :: Unbox a => (b -> a -> b) -> b -> Histogram bin a -> b
- bfoldl :: (Bin bin, Unbox a) => (b -> BinValue bin -> a -> b) -> b -> Histogram bin a -> b
- sum :: (Unbox a, Num a) => Histogram bin a -> a
- minimum :: (Unbox a, Ord a) => Histogram bin a -> a
- minimumBy :: Unbox a => (a -> a -> Ordering) -> Histogram bin a -> a
- maximum :: (Unbox a, Ord a) => Histogram bin a -> a
- maximumBy :: Unbox a => (a -> a -> Ordering) -> Histogram bin a -> a
- minIndex :: (Ord a, Unbox a) => Histogram bin a -> Int
- minIndexBy :: Unbox a => (a -> a -> Ordering) -> Histogram bin a -> Int
- maxIndex :: (Ord a, Unbox a) => Histogram bin a -> Int
- maxIndexBy :: Unbox a => (a -> a -> Ordering) -> Histogram bin a -> Int
- minBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue bin
- minBinBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue bin
- maxBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue bin
- maxBinBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue bin
- slice :: (SliceableBin bin, Unbox a) => HistIndex bin -> HistIndex bin -> Histogram bin a -> Histogram bin a
- rebin :: (MergeableBin bin, Unbox a) => CutDirection -> Int -> (a -> a -> a) -> Histogram bin a -> Histogram bin a
- rebinFold :: (MergeableBin bin, Unbox a, Unbox b) => CutDirection -> Int -> (b -> a -> b) -> b -> Histogram bin a -> Histogram bin b
- sliceAlongX :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bY -> Histogram bX a
- sliceAlongY :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bX -> Histogram bY a
- listSlicesAlongX :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> [(BinValue bY, Histogram bX a)]
- listSlicesAlongY :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> [(BinValue bX, Histogram bY a)]
- reduceX :: (Unbox a, Unbox b, Bin bX, Bin bY) => (Histogram bX a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bY b
- breduceX :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bY -> Histogram bX a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bY b
- reduceY :: (Unbox a, Unbox b, Bin bX, Bin bY) => (Histogram bY a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bX b
- breduceY :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bX -> Histogram bY a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bX b
- liftX :: (Bin bX, Bin bY, BinEq bX', Unbox a, Unbox b) => (Histogram bX a -> Histogram bX' b) -> Histogram (Bin2D bX bY) a -> Histogram (Bin2D bX' bY) b
- liftY :: (Bin bX, Bin bY, BinEq bY', Unbox a, Unbox b) => (Histogram bY a -> Histogram bY' b) -> Histogram (Bin2D bX bY) a -> Histogram (Bin2D bX bY') b
Immutable histograms
type Histogram bin a = Histogram Vector bin a Source #
Immutable histogram. A histogram consists of a binning algorithm, an optional number of under and overflows, and data.
module Data.Histogram.Bin
Constructors
Conversion to other data types
asVector :: (Bin bin, Unbox a, Unbox (BinValue bin, a)) => Histogram bin a -> Vector (BinValue bin, a) Source #
Serialization to strings
readFileHistogram :: (Read bin, Read a, Bin bin, Unbox a) => FilePath -> IO (Histogram bin a) Source #
Accessors
underflows :: Histogram bin a -> Maybe a Source #
outOfRange :: Histogram bin a -> Maybe (a, a) Source #
Indexing
Transformations
bmap :: (Unbox a, Unbox b, Bin bin) => (BinValue bin -> a -> b) -> Histogram bin a -> Histogram bin b Source #
mapData :: (Unbox a, Unbox b, Bin bin) => (Vector a -> Vector b) -> Histogram bin a -> Histogram bin b Source #
zip :: (BinEq bin, Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Histogram bin a -> Histogram bin b -> Histogram bin c Source #
zipSafe :: (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' a Source #
Folding
Specialized folds
Slicing & rebinning
slice :: (SliceableBin bin, Unbox a) => HistIndex bin -> HistIndex bin -> Histogram bin a -> Histogram bin a Source #
rebin :: (MergeableBin bin, Unbox a) => CutDirection -> Int -> (a -> a -> a) -> Histogram bin a -> Histogram bin a Source #
rebinFold :: (MergeableBin bin, Unbox a, Unbox b) => CutDirection -> Int -> (b -> a -> b) -> b -> Histogram bin a -> Histogram bin b Source #
2D histograms
Slicing
sliceAlongX :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bY -> Histogram bX a Source #
sliceAlongY :: (Unbox a, Bin bX, Bin bY) => Histogram (Bin2D bX bY) a -> HistIndex bX -> Histogram bY a Source #
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 b Source #
breduceX :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bY -> Histogram bX a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bY b Source #
reduceY :: (Unbox a, Unbox b, Bin bX, Bin bY) => (Histogram bY a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bX b Source #
breduceY :: (Unbox a, Unbox b, Bin bX, Bin bY) => (BinValue bX -> Histogram bY a -> b) -> Histogram (Bin2D bX bY) a -> Histogram bX b Source #