Back to Ruview

ruv-neural-signal

rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/README.md

0.7.03.7 KB
Original Source

ruv-neural-signal

Signal processing: filtering, spectral analysis, connectivity metrics, and artifact rejection for neural time series data.

Overview

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.

Features

  • IIR Filters (filter): Butterworth bandpass, highpass, lowpass, and notch filters in SOS (second-order sections) form for numerical stability
  • Spectral analysis (spectral): Welch PSD estimation, STFT, band power extraction, spectral entropy, and peak frequency detection
  • Hilbert transform (hilbert): FFT-based analytic signal for instantaneous phase and amplitude envelope computation
  • Artifact detection (artifact): Eye blink, muscle artifact, and cardiac artifact detection with configurable rejection
  • Connectivity metrics (connectivity): Phase locking value (PLV), coherence, imaginary coherence, amplitude envelope correlation (AEC), and all-pairs computation for connectivity matrix construction
  • Preprocessing pipeline (preprocessing): Configurable multi-stage pipeline chaining filters, artifact rejection, and re-referencing

Usage

rust
use 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();

API Reference

ModuleKey Types / Functions
filterBandpassFilter, HighpassFilter, LowpassFilter, NotchFilter, SignalProcessor
spectralcompute_psd, compute_stft, band_power, spectral_entropy, peak_frequency
hilberthilbert_transform, instantaneous_phase, instantaneous_amplitude
artifactdetect_eye_blinks, detect_muscle_artifact, detect_cardiac, reject_artifacts
connectivityphase_locking_value, coherence, imaginary_coherence, amplitude_envelope_correlation, compute_all_pairs
preprocessingPreprocessingPipeline

Feature Flags

FeatureDefaultDescription
stdYesStandard library support
simdNoSIMD-accelerated filter kernels

Integration

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.

License

MIT OR Apache-2.0