s2gpp 1.0.2

Algorithm for Highly Efficient Detection of Correlation Anomalies in Multivariate Time Series
Documentation
use actix::prelude::*;
use actix_telepathy::prelude::*;
use ndarray::{ArcArray2, Array1, Array2};
use serde::{Deserialize, Serialize};

#[derive(Message)]
#[rtype(Result = "()")]
pub struct PCAMessage {
    pub data: ArcArray2<f32>,
}

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

#[derive(Debug, Clone, Message)]
#[rtype(Result = "()")]
pub enum PCAHelperMessage {
    Setup {
        neighbors: Vec<Recipient<Self>>,
        data: ArcArray2<f32>,
    },
    Decomposition {
        r: Array2<f32>,
        count: usize,
    },
    Means {
        columns_means: Array2<f32>,
        n: usize,
    },
    #[allow(dead_code)]
    Components {
        components: Array2<f32>,
        means: Array1<f32>,
    },
    Response {
        column_means: Array1<f32>,
        n: f32,
        r: Array2<f32>,
    },
}

#[derive(RemoteMessage, Serialize, Deserialize, Clone)]
pub struct PCADecompositionMessage {
    pub r: Array2<f32>,
    pub count: usize,
}

#[derive(RemoteMessage, Serialize, Deserialize, Clone)]
pub struct PCAMeansMessage {
    pub columns_means: Array2<f32>,
    pub n: usize,
}

#[derive(RemoteMessage, Serialize, Deserialize, Clone)]
pub struct PCAComponents {
    pub components: Array2<f32>,
    pub means: Array1<f32>,
}