s2gpp 1.0.2

Algorithm for Highly Efficient Detection of Correlation Anomalies in Multivariate Time Series
Documentation
use crate::data_store::edge::MaterializedEdge;
use crate::data_store::node::IndependentNode;
use actix::prelude::*;
use actix_telepathy::prelude::*;
use ndarray::Array1;
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
use std::collections::HashMap;

#[derive(Message)]
#[rtype(Result = "()")]
pub struct ScoreInitDone;

#[derive(Message)]
#[rtype(Result = "()")]
pub(crate) struct ScoringDone;

#[serde_as]
#[derive(RemoteMessage, Serialize, Deserialize, Default, Clone)]
pub(crate) struct NodeDegrees {
    #[serde_as(as = "Vec<(_, _)>")]
    pub degrees: HashMap<IndependentNode, usize>,
}

#[serde_as]
#[derive(RemoteMessage, Serialize, Deserialize, Default, Clone)]
pub(crate) struct EdgeWeights {
    #[serde_as(as = "Vec<(_, _)>")]
    pub weights: HashMap<MaterializedEdge, usize>,
}

#[derive(RemoteMessage, Serialize, Deserialize, Default, Clone)]
pub(crate) struct OverlapRotation {
    pub edges: Vec<MaterializedEdge>,
    pub edges_in_time: Vec<usize>,
}

#[derive(Message)]
#[rtype(Result = "()")]
pub(crate) struct ScoringHelperInstruction {
    pub start: usize,
    pub length: usize,
}

#[derive(Message, Clone)]
#[rtype(Result = "()")]
pub(crate) struct ScoringHelperResponse {
    pub start: usize,
    pub scores: Vec<f32>,
    pub first_empty: bool,
}

#[derive(RemoteMessage, Serialize, Deserialize, Default, Clone)]
pub struct SubScores {
    pub cluster_node_id: usize,
    pub scores: Array1<f32>,
    pub first_empty: bool,
}