use axon_encoder::prelude::*;
fn main() {
let mut encoder = PredictiveEncoder::try_new(10, vec![(3.0, 1), (8.0, 2)], 1)
.expect("valid PredictiveEncoder");
let stream: Vec<f32> = vec![
5.0, 5.1, 4.9, 5.0, 5.2, 5.1, 4.8, 5.0, 5.0, 5.1, 15.0, 5.0, 5.0, 5.1, 4.9, -5.0, ];
println!("=== Predictive (Anomaly) Encoding ===");
println!("Deviation thresholds: 3.0 (mild), 8.0 (severe)\n");
for (step, &value) in stream.iter().enumerate() {
let output = encoder.encode(&[value]);
let label = if output.spikes.is_empty() {
"normal".to_string()
} else {
format!("ANOMALY ({} spike(s))", output.spikes.len())
};
println!("Step {:2}: value = {:6.1} -> {}", step, value, label);
}
}