Type Alias sampling::histogram::BinningU64
source · pub type BinningU64 = BinningWithWidth<u64>;
Expand description
Efficient binning for u64
with bins of width 1
Aliased Type§
struct BinningU64 { /* private fields */ }
Implementations§
source§impl BinningU64
impl BinningU64
sourcepub fn new_inclusive(
start: u64,
end_inclusive: u64,
bin_width: u64
) -> Result<Self, <u64 as HasUnsignedVersion>::Unsigned>
pub fn new_inclusive( start: u64, end_inclusive: u64, bin_width: u64 ) -> Result<Self, <u64 as HasUnsignedVersion>::Unsigned>
Create a new Binning
- both borders are inclusive
- each bin has width 1
Panics
- if
start
is smaller thanend_inclusive
- if bin_width <= 0
sourcepub const fn range_inclusive(&self) -> RangeInclusive<u64>
pub const fn range_inclusive(&self) -> RangeInclusive<u64>
sourcepub fn multi_valued_bin_iter(&self) -> impl Iterator<Item = (u64, u64)>
pub fn multi_valued_bin_iter(&self) -> impl Iterator<Item = (u64, u64)>
Iterator over all the bins
Since the bins have width 1, a bin can be defined by its corresponding value which we can iterate over.
Example
use sampling::histogram::BinningU64;
let binning = BinningU64::new_inclusive(2,7,2).unwrap();
let vec: Vec<_> = binning.multi_valued_bin_iter().collect();
assert_eq!(&vec, &[(2, 3), (4, 5), (6, 7)]);
sourcepub fn bins_m1(&self) -> <u64 as HasUnsignedVersion>::Unsigned
pub fn bins_m1(&self) -> <u64 as HasUnsignedVersion>::Unsigned
The amount of bins -1
- minus 1 because if the bins are going over the entire range of the type, then I cannot represent the number of bins as this type
Example
If we look at an u8 and the range from 0 to 255, then this is 256 bins, which cannot be represented as u8. To combat this, I return bins - 1. This works, because we always have at least 1 bin
sourcepub fn get_bin_index_native<V: Borrow<u64>>(
&self,
val: V
) -> Option<<u64 as HasUnsignedVersion>::Unsigned>
pub fn get_bin_index_native<V: Borrow<u64>>( &self, val: V ) -> Option<<u64 as HasUnsignedVersion>::Unsigned>
Trait Implementations§
source§impl Binning<u64> for BinningU64
impl Binning<u64> for BinningU64
source§fn get_bin_index<V: Borrow<u64>>(&self, val: V) -> Option<usize>
fn get_bin_index<V: Borrow<u64>>(&self, val: V) -> Option<usize>
Get the respective bin index
- Note: Obviously this breaks when the bin index cannot be represented as
usize
source§fn not_inside<V: Borrow<u64>>(&self, val: V) -> bool
fn not_inside<V: Borrow<u64>>(&self, val: V) -> bool
Opposite of is_inside
- I could also have called this
is_outside
, but I didn’t
source§fn first_border(&self) -> u64
fn first_border(&self) -> u64
get the left most border (inclusive)
source§fn distance<V: Borrow<u64>>(&self, v: V) -> f64
fn distance<V: Borrow<u64>>(&self, v: V) -> f64
calculates some sort of absolute distance to the nearest valid bin
- if a value corresponds to a valid bin, the distance is zero
source§fn bin_iter(&self) -> Box<dyn Iterator<Item = Bin<u64>>>
fn bin_iter(&self) -> Box<dyn Iterator<Item = Bin<u64>>>
Iterates over all bins
- Note: This implementation usees a more efficient representations of the bins underneath, but is capable of returning the bins in this representation on request
- Note also that this
Binning
implements another method for the bin borders, i.e.,multi_valued_bin_iter
. Consider using that instead, as it is more efficient
source§fn get_bin_len(&self) -> usize
fn get_bin_len(&self) -> usize
Get the number of underlying bins Read more
source§fn last_border(&self) -> u64
fn last_border(&self) -> u64
get last border from the rightNote: this border might be inclusive or exclusive Read more
source§fn last_border_is_inclusive(&self) -> bool
fn last_border_is_inclusive(&self) -> bool
True if last border is inclusive, false otherwise Read more