clawft_kernel/sensor_graph/mod.rs
1//! Spatio-temporal GNN for distributed sonobuoy / sensor arrays (KG-013 / WEFT-354).
2//!
3//! K-STEMIT-style dual-branch architecture adapted from ice-penetrating radar
4//! (arXiv:2604.09922) to underwater acoustic sensing:
5//!
6//! - **Spatial**: GraphSAGE on a buoy-position graph with inverse-distance
7//! (and optional propagation-delay) edge weights — learned beamforming
8//! over irregular arrays.
9//! - **Temporal**: Gated linear unit (GLU) convolution over per-buoy acoustic
10//! time series — learned matched filtering for transients.
11//! - **Physics prior**: ocean acoustic node features (SSP, thermocline, sea
12//! state, current, bottom type) projected into the same hidden space.
13//! - **Adaptive fusion**: learnable `α ∈ [0,1]` balances spatial vs temporal;
14//! physics residual is added with a fixed scale (or learnable γ).
15//! - **Classification head**: linear → logits for detection / species-style labels.
16//!
17//! Pure Rust, no GPU / no ndarray. Behind the `sensor` feature flag.
18//!
19//! Design note: [`docs/plans/weft-354-k-stemit.md`](../../../../docs/plans/weft-354-k-stemit.md).
20
21mod fixture;
22mod graph;
23mod layers;
24mod model;
25mod train;
26
27pub use fixture::{
28 SyntheticConfig, SyntheticDataset, SyntheticSample, class_name, generate_synthetic_array,
29};
30pub use graph::{SensorEdge, SensorGraph, SensorNode};
31pub use layers::{GraphSageLayer, Linear, TemporalGlu};
32pub use model::{ForwardOutput, KstemitConfig, KstemitModel};
33pub use train::{EvalMetrics, TrainConfig, TrainResult, evaluate, train_sgd};