Back to Ruview

ruv-neural-sensor

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

0.7.03.5 KB
Original Source

ruv-neural-sensor

Sensor data acquisition for NV diamond, OPM, EEG, and simulated sources.

Overview

ruv-neural-sensor provides uniform sensor interfaces for multiple neural magnetometry and electrophysiology sensor types. Each sensor backend implements the SensorSource trait from ruv-neural-core, producing MultiChannelTimeSeries data. The crate also includes calibration utilities and real-time signal quality monitoring.

Features

  • Simulated sensor (simulator feature, default): Synthetic multi-channel data generation with configurable alpha rhythm injection, noise floor control, and event injection (spikes, artifacts)
  • NV diamond (nv_diamond feature): Nitrogen-vacancy diamond magnetometer interface with configurable sensitivity and channel layout
  • OPM (opm feature): Optically pumped magnetometer array with configurable geometry
  • EEG (eeg feature): Electroencephalography sensor interface
  • Calibration: Gain/offset correction, noise floor estimation, and cross-calibration between reference and target channels
  • Quality monitoring: Real-time SNR estimation, artifact probability scoring, and saturation detection with configurable alert thresholds

Usage

rust
use ruv_neural_sensor::simulator::{SimulatedSensorArray, SensorEvent};
use ruv_neural_sensor::{SensorSource, SensorType};

// Create a simulated 16-channel array at 1000 Hz
let mut sim = SimulatedSensorArray::new(16, 1000.0);
sim.inject_alpha(100.0); // 100 fT alpha rhythm

// Read 500 samples via the SensorSource trait
let data = sim.read_chunk(500).unwrap();
assert_eq!(data.num_channels, 16);
assert_eq!(data.num_samples, 500);

// Inject a spike event
sim.inject_event(SensorEvent::Spike {
    channel: 0,
    amplitude_ft: 500.0,
    sample_offset: 100,
});

// Calibrate channels
use ruv_neural_sensor::calibration::{CalibrationData, calibrate_channel};
let cal = CalibrationData {
    gains: vec![2.0],
    offsets: vec![10.0],
    noise_floors: vec![1.0],
};
let corrected = calibrate_channel(100.0, 0, &cal); // (100 - 10) * 2 = 180

// Monitor signal quality
use ruv_neural_sensor::quality::QualityMonitor;
let mut monitor = QualityMonitor::new(2);
let qualities = monitor.check_quality(&[&data.data[0], &data.data[1]]);

API Reference

ModuleKey Types / Functions
simulatorSimulatedSensorArray, SensorEvent
nv_diamondNvDiamondArray, NvDiamondConfig
opmOpmArray, OpmConfig
eegEegArray, EegConfig
calibrationCalibrationData, calibrate_channel, cross_calibrate
qualityQualityMonitor, SignalQuality

Feature Flags

FeatureDefaultDescription
simulatorYesSynthetic test data generator
nv_diamondNoNV diamond magnetometer backend
opmNoOptically pumped magnetometer backend
eegNoEEG sensor backend

Integration

Depends on ruv-neural-core for the SensorSource trait and MultiChannelTimeSeries type. Produced data feeds into ruv-neural-signal for preprocessing and filtering.

License

MIT OR Apache-2.0