Skip to main content

SpotDetector

Struct SpotDetector 

Source
pub struct SpotDetector { /* private fields */ }
Expand description

Main SPOT detector for streaming anomaly detection

The SpotDetector implements the SPOT (Streaming Peaks Over Threshold) algorithm for real-time anomaly detection in streaming time series data.

§Serialization

When the serde feature is enabled, the detector can be serialized and deserialized, allowing you to save trained models and restore them later without re-training.

§Example

use libspot_rs::{SpotConfig, SpotDetector, SpotStatus};

let config = SpotConfig::default();
let mut spot = SpotDetector::new(config).unwrap();

// Fit with training data
let data: Vec<f64> = (0..1000).map(|i| (i as f64) / 100.0).collect();
spot.fit(&data).unwrap();

// Process new data points
match spot.step(15.0).unwrap() {
    SpotStatus::Normal => println!("Normal"),
    SpotStatus::Excess => println!("Excess"),
    SpotStatus::Anomaly => println!("Anomaly detected!"),
}

Implementations§

Source§

impl SpotDetector

Source

pub fn new(config: SpotConfig) -> SpotResult<Self>

Create a new SPOT detector with the given configuration

Source

pub fn fit(&mut self, data: &[f64]) -> SpotResult<()>

Fit the model using initial training data

Source

pub fn step(&mut self, value: f64) -> SpotResult<SpotStatus>

Process a single data point and return its classification

Source

pub fn quantile(&self, q: f64) -> f64

Get the quantile for a given probability

Source

pub fn probability(&self, z: f64) -> f64

Get the probability for a given value

Source

pub fn anomaly_threshold(&self) -> f64

Get the current anomaly threshold

Source

pub fn excess_threshold(&self) -> f64

Get the current excess threshold

Source

pub fn config(&self) -> Option<SpotConfig>

Get the current configuration (reconstructed)

Source

pub fn n(&self) -> usize

Get the total number of data points seen

Source

pub fn nt(&self) -> usize

Get the total number of excesses

Source

pub fn tail_parameters(&self) -> (f64, f64)

Get the current tail parameters

Source

pub fn tail_size(&self) -> usize

Get the current size of the tail data

Source

pub fn peaks_min(&self) -> f64

Get the minimum value in the peaks

Source

pub fn peaks_max(&self) -> f64

Get the maximum value in the peaks

Source

pub fn peaks_mean(&self) -> f64

Get the mean of the peaks

Source

pub fn peaks_variance(&self) -> f64

Get the variance of the peaks

Source

pub fn peaks_data(&self) -> Vec<f64>

Get the peaks data as a vector (for debugging and export)

Trait Implementations§

Source§

impl Debug for SpotDetector

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for SpotDetector

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for SpotDetector

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,