pub struct PerFeatureCusum<const D: usize> { /* private fields */ }Expand description
D parallel two-sided CUSUMs sharing one (slack, threshold)
configuration.
§Examples
use anomstream_core::{PerFeatureCusum, PerFeatureCusumConfig};
let mut det = PerFeatureCusum::<2>::new(PerFeatureCusumConfig {
slack: 0.5,
threshold: 5.0,
});
det.observe(&[100.0, 200.0]); // seeds references
for _ in 0..20 {
det.observe(&[105.0, 200.0]);
}Implementations§
Source§impl<const D: usize> PerFeatureCusum<D>
impl<const D: usize> PerFeatureCusum<D>
Sourcepub const fn new(config: PerFeatureCusumConfig) -> Self
pub const fn new(config: PerFeatureCusumConfig) -> Self
Build an empty detector.
Sourcepub const fn config(&self) -> &PerFeatureCusumConfig
pub const fn config(&self) -> &PerFeatureCusumConfig
Active configuration.
Sourcepub const fn total_samples(&self) -> u64
pub const fn total_samples(&self) -> u64
Observations ingested so far.
Sourcepub const fn accumulators(&self) -> &[PerFeatureCusumAccumulator; D]
pub const fn accumulators(&self) -> &[PerFeatureCusumAccumulator; D]
Per-dimension accumulator snapshot (read-only).
Sourcepub fn active_drifts(&self) -> usize
pub fn active_drifts(&self) -> usize
Count of features currently in an active drift
(drift_samples > 0).
Sourcepub fn set_reference(&mut self, means: &[f64; D])
pub fn set_reference(&mut self, means: &[f64; D])
Override the auto-learned reference mean per dimension. Useful when feeding a stable external baseline (e.g. an EWMA mean) rather than the first observation.
Sourcepub fn observe(&mut self, input: &[f64; D]) -> PerFeatureCusumResult<D>
pub fn observe(&mut self, input: &[f64; D]) -> PerFeatureCusumResult<D>
Ingest input, returning per-feature magnitudes and any
alerts that fired. Always updates the accumulators.
Trait Implementations§
Source§impl<const D: usize> Clone for PerFeatureCusum<D>
impl<const D: usize> Clone for PerFeatureCusum<D>
Source§fn clone(&self) -> PerFeatureCusum<D>
fn clone(&self) -> PerFeatureCusum<D>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const D: usize> Debug for PerFeatureCusum<D>
impl<const D: usize> Debug for PerFeatureCusum<D>
Source§impl<'de, const D: usize> Deserialize<'de> for PerFeatureCusum<D>
impl<'de, const D: usize> Deserialize<'de> for PerFeatureCusum<D>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl<const D: usize> Freeze for PerFeatureCusum<D>
impl<const D: usize> RefUnwindSafe for PerFeatureCusum<D>
impl<const D: usize> Send for PerFeatureCusum<D>
impl<const D: usize> Sync for PerFeatureCusum<D>
impl<const D: usize> Unpin for PerFeatureCusum<D>
impl<const D: usize> UnsafeUnpin for PerFeatureCusum<D>
impl<const D: usize> UnwindSafe for PerFeatureCusum<D>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more