rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/README.md
Signal processing: filtering, spectral analysis, connectivity metrics, and artifact rejection for neural time series data.
ruv-neural-signal provides a complete digital signal processing pipeline for
multi-channel neural magnetic field and electrophysiology data. It covers IIR
filtering in second-order sections form, FFT-based spectral analysis, Hilbert
transform for instantaneous phase extraction, artifact detection and rejection,
cross-channel connectivity metrics, and a configurable multi-stage preprocessing
pipeline.
filter): Butterworth bandpass, highpass, lowpass, and notch
filters in SOS (second-order sections) form for numerical stabilityspectral): Welch PSD estimation, STFT, band power
extraction, spectral entropy, and peak frequency detectionhilbert): FFT-based analytic signal for instantaneous
phase and amplitude envelope computationartifact): Eye blink, muscle artifact, and cardiac
artifact detection with configurable rejectionconnectivity): Phase locking value (PLV), coherence,
imaginary coherence, amplitude envelope correlation (AEC), and all-pairs
computation for connectivity matrix constructionpreprocessing): Configurable multi-stage pipeline
chaining filters, artifact rejection, and re-referencinguse ruv_neural_signal::{
BandpassFilter, PreprocessingPipeline, SignalProcessor,
compute_psd, band_power, hilbert_transform, instantaneous_phase,
compute_all_pairs, ConnectivityMetric,
};
use ruv_neural_core::FrequencyBand;
// Apply a bandpass filter (8-13 Hz alpha band)
let filter = BandpassFilter::new(8.0, 13.0, 1000.0, 4).unwrap();
let filtered = filter.apply(&raw_signal);
// Compute power spectral density (Welch method)
let psd = compute_psd(&signal, 1000.0, 256, 128);
let alpha_power = band_power(&psd, 1000.0, 8.0, 13.0);
// Extract instantaneous phase via Hilbert transform
let analytic = hilbert_transform(&signal);
let phases = instantaneous_phase(&analytic);
// Compute all-pairs connectivity matrix
let connectivity_matrix = compute_all_pairs(
&multi_channel_data,
ConnectivityMetric::PhaseLockingValue,
);
// Run full preprocessing pipeline
let pipeline = PreprocessingPipeline::default();
let clean_data = pipeline.process(&raw_data).unwrap();
| Module | Key Types / Functions |
|---|---|
filter | BandpassFilter, HighpassFilter, LowpassFilter, NotchFilter, SignalProcessor |
spectral | compute_psd, compute_stft, band_power, spectral_entropy, peak_frequency |
hilbert | hilbert_transform, instantaneous_phase, instantaneous_amplitude |
artifact | detect_eye_blinks, detect_muscle_artifact, detect_cardiac, reject_artifacts |
connectivity | phase_locking_value, coherence, imaginary_coherence, amplitude_envelope_correlation, compute_all_pairs |
preprocessing | PreprocessingPipeline |
| Feature | Default | Description |
|---|---|---|
std | Yes | Standard library support |
simd | No | SIMD-accelerated filter kernels |
Depends on ruv-neural-core for MultiChannelTimeSeries and FrequencyBand types.
Feeds processed data into ruv-neural-graph for connectivity graph construction.
Uses rustfft for FFT operations and ndarray for matrix computations.
MIT OR Apache-2.0