[−][src]Trait ndhistogram::axis::Axis
An binned axis coresponding to one dimension of an N-dimensional Histogram.1
An Axis is composed of a map from some coordinate space to linear bin number, and the inverse map. For examples see Uniform, UniformNoFlow, Category and CategoryNoFlow. Most use cases should be covered by the builtin Axis implementations. However, you may implement the Axis trait if you have specialist needs.
Examples
Parity Axis
Imagine we wanted a
use ndhistogram::axis::Axis; use ndhistogram::{ndhistogram, Histogram}; enum Parity { Even, Odd } struct ParityAxis {} impl Axis for ParityAxis { type Coordinate = i32; type BinInterval = Parity; fn index(&self, coordinate: &Self::Coordinate) -> Option<usize> { if coordinate % 2 == 0 { Some(0) } else { Some(1) } } fn numbins(&self) -> usize { 2 } fn bin(&self, index: usize) -> Option<Self::BinInterval> { if index == 0 { Some(Parity::Even) } else { Some(Parity::Odd) } } } let mut hist = ndhistogram!(ParityAxis{}; i32); hist.fill(&1); hist.fill_with(&2, 4); assert_eq!(hist.value(&1), Some(&1)); assert_eq!(hist.value(&2), Some(&4));
Associated Types
type Coordinate
[src]
The type representing a location on this axis.
type BinInterval
[src]
The type of an interval representing the set of Coordinates that correspond to a histogram bin
Required methods
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
Map from coordinate to bin number. Returns an option as not all valid coordinates are necessarily contained within a bin.
pub fn numbins(&self) -> usize
[src]
The number of bins in this axis, including underflow and overflow.
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
Map from bin number to axis to the interval covering the range of coordinates that this bin contains. Returns an option in case an index >= Axis::numbins is given.
Provided methods
pub fn indices(&self) -> Box<dyn Iterator<Item = usize>>
[src]
An iterator over bin numbers
pub fn iter(&self) -> Box<dyn Iterator<Item = (usize, Self::BinInterval)> + '_>
[src]
An iterator over bin numbers and bin intervals
pub fn bins(&self) -> Box<dyn Iterator<Item = Self::BinInterval> + '_>
[src]
An iterator over bin intervals.
Implementations on Foreign Types
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis, D16: Axis, D17: Axis, D18: Axis, D19: Axis, D20: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate, D16::Coordinate, D17::Coordinate, D18::Coordinate, D19::Coordinate, D20::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval, D16::BinInterval, D17::BinInterval, D18::BinInterval, D19::BinInterval, D20::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis, D16: Axis, D17: Axis, D18: Axis, D19: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate, D16::Coordinate, D17::Coordinate, D18::Coordinate, D19::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval, D16::BinInterval, D17::BinInterval, D18::BinInterval, D19::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis, D16: Axis, D17: Axis, D18: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate, D16::Coordinate, D17::Coordinate, D18::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval, D16::BinInterval, D17::BinInterval, D18::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis, D16: Axis, D17: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate, D16::Coordinate, D17::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval, D16::BinInterval, D17::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis, D16: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate, D16::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval, D16::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis, D15: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate, D15::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval, D15::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis, D14: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate, D14::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval, D14::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis, D13: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate, D13::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval, D13::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis, D12: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11, D12)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate, D12::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval, D12::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis, D11: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10, D11)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate, D11::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval, D11::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis, D10: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9, D10)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate, D10::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval, D10::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis, D9: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8, D9)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate, D9::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval, D9::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis, D8: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7, D8)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate, D8::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval, D8::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis, D7: Axis> Axis for (X, Y, Z, T, D4, D5, D6, D7)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate, D7::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval, D7::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis, D6: Axis> Axis for (X, Y, Z, T, D4, D5, D6)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate, D6::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval, D6::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis, D5: Axis> Axis for (X, Y, Z, T, D4, D5)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate, D5::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval, D5::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis, D4: Axis> Axis for (X, Y, Z, T, D4)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate, D4::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval, D4::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis, T: Axis> Axis for (X, Y, Z, T)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate, T::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval, T::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis, Z: Axis> Axis for (X, Y, Z)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate, Z::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval, Z::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis, Y: Axis> Axis for (X, Y)
[src]
type Coordinate = (X::Coordinate, Y::Coordinate)
type BinInterval = (X::BinInterval, Y::BinInterval)
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
impl<X: Axis> Axis for (X,)
[src]
type Coordinate = X::Coordinate
type BinInterval = X::BinInterval
pub fn index(&self, coordinate: &Self::Coordinate) -> Option<usize>
[src]
pub fn numbins(&self) -> usize
[src]
pub fn bin(&self, index: usize) -> Option<Self::BinInterval>
[src]
Implementors
impl<T> Axis for Variable<T> where
T: PartialOrd + Copy,
[src]
T: PartialOrd + Copy,