rustkernel_temporal/
lib.rs

1//! # RustKernel Temporal Analysis
2//!
3//! GPU-accelerated temporal analysis kernels for forecasting, decomposition,
4//! detection, and volatility modeling.
5//!
6//! ## Kernels
7//!
8//! ### Forecasting (2 kernels)
9//! - `ARIMAForecast` - ARIMA(p,d,q) model fitting and forecasting
10//! - `ProphetDecomposition` - Prophet-style trend/seasonal/holiday decomposition
11//!
12//! ### Detection (2 kernels)
13//! - `ChangePointDetection` - PELT/Binary segmentation/CUSUM
14//! - `TimeSeriesAnomalyDetection` - Statistical threshold detection
15//!
16//! ### Decomposition (2 kernels)
17//! - `SeasonalDecomposition` - STL-style decomposition
18//! - `TrendExtraction` - Moving average variants
19//!
20//! ### Analysis (1 kernel)
21//! - `VolatilityAnalysis` - GARCH model volatility estimation
22
23#![warn(missing_docs)]
24
25pub mod decomposition;
26pub mod detection;
27pub mod forecasting;
28pub mod messages;
29pub mod ring_messages;
30pub mod types;
31pub mod volatility;
32
33/// Prelude for convenient imports.
34pub mod prelude {
35    pub use crate::decomposition::*;
36    pub use crate::detection::*;
37    pub use crate::forecasting::*;
38    pub use crate::messages::*;
39    pub use crate::ring_messages::*;
40    pub use crate::types::*;
41    pub use crate::volatility::*;
42}
43
44// Re-export main kernels
45pub use decomposition::{SeasonalDecomposition, TrendExtraction};
46pub use detection::{ChangePointDetection, TimeSeriesAnomalyDetection};
47pub use forecasting::{ARIMAForecast, ProphetDecomposition};
48pub use volatility::VolatilityAnalysis;
49
50// Re-export key types
51pub use types::{
52    ARIMAParams, ARIMAResult, AnomalyMethod, ChangePointMethod, ChangePointResult,
53    DecompositionResult, GARCHCoefficients, GARCHParams, ProphetResult, TimeSeries,
54    TimeSeriesAnomalyResult, TrendMethod, TrendResult, VolatilityResult,
55};
56
57/// Register all temporal kernels with a registry.
58pub fn register_all(
59    registry: &rustkernel_core::registry::KernelRegistry,
60) -> rustkernel_core::error::Result<()> {
61    use rustkernel_core::traits::GpuKernel;
62
63    tracing::info!("Registering temporal analysis kernels");
64
65    // Forecasting kernels (2)
66    registry.register_metadata(forecasting::ARIMAForecast::new().metadata().clone())?;
67    registry.register_metadata(forecasting::ProphetDecomposition::new().metadata().clone())?;
68
69    // Detection kernels (2)
70    registry.register_metadata(detection::ChangePointDetection::new().metadata().clone())?;
71    registry.register_metadata(
72        detection::TimeSeriesAnomalyDetection::new()
73            .metadata()
74            .clone(),
75    )?;
76
77    // Decomposition kernels (2)
78    registry.register_metadata(
79        decomposition::SeasonalDecomposition::new()
80            .metadata()
81            .clone(),
82    )?;
83    registry.register_metadata(decomposition::TrendExtraction::new().metadata().clone())?;
84
85    // Volatility kernel (1)
86    registry.register_metadata(volatility::VolatilityAnalysis::new().metadata().clone())?;
87
88    tracing::info!("Registered 7 temporal analysis kernels");
89    Ok(())
90}
91
92#[cfg(test)]
93mod tests {
94    use super::*;
95    use rustkernel_core::registry::KernelRegistry;
96
97    #[test]
98    fn test_register_all() {
99        let registry = KernelRegistry::new();
100        register_all(&registry).expect("Failed to register temporal kernels");
101        assert_eq!(registry.total_count(), 7);
102    }
103}