Sensors API¶
Sensors extract a physical response at one system coordinate, then apply their measurement effects in declaration order. The clean and measured channels are both retained in simulation results.
from dynaresp import sensors
sensor = sensors.Accelerometer(
position=2.0,
effects=[sensors.GaussianNoise(standard_deviation=0.01)],
)
See the sensors guide for coordinate behavior, effect ordering, and reproducible noise.
Shared interfaces¶
Sensor ¶
Measure one kinematic quantity at one physical location or DOF.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
position
|
float
|
Physical coordinate for a continuous system, or an integer-valued DOF index for a discrete system. |
required |
noise
|
MeasurementEffect | None
|
Optional noise effect appended after every item in |
None
|
effects
|
Sequence[MeasurementEffect]
|
Measurement effects applied left-to-right after the clean structural response has been sampled. |
()
|
Effects alter only the reported measurement, never the solved structural response.
Source code in src/dynaresp/sensors/base.py
measure_clean ¶
Map a generalized response to one clean physical signal.
response must have shape (system.ndof, n_time). The returned
signal has shape (n_time,) and is not passed through measurement
effects.
Source code in src/dynaresp/sensors/base.py
apply_effects ¶
Apply configured effects in order to a copy of clean_signal.
One deterministic child stream is derived from rng for each effect,
so stochastic effects do not share generator state. The supplied
generator advances, while the input signal remains unchanged.
Source code in src/dynaresp/sensors/base.py
to_config ¶
Return a JSON-compatible sensor and effect description.
Source code in src/dynaresp/sensors/base.py
MeasurementEffect ¶
Bases: ABC
Transform a clean sensor signal without altering structural response.
Implementations receive a one-dimensional (n_time,) signal and a
dedicated NumPy generator, and must return a signal of the same shape.
Effects should not mutate their input. A :class:~dynaresp.sensors.Sensor
composes them in declaration order.
Sensor types¶
Accelerometer ¶
Bases: Sensor
Measure physical acceleration in system position units per second².
Source code in src/dynaresp/sensors/base.py
VelocitySensor ¶
Bases: Sensor
Measure physical velocity in system position units per second.
Source code in src/dynaresp/sensors/base.py
DisplacementSensor ¶
Bases: Sensor
Measure physical displacement in the system's position units.
Source code in src/dynaresp/sensors/base.py
Measurement effects¶
GaussianNoise
dataclass
¶
Bases: MeasurementEffect
Add independent zero-mean Gaussian measurement noise.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
snr_db
|
float | None
|
Desired signal-to-noise amplitude ratio in decibels. Noise
standard deviation is |
None
|
standard_deviation
|
float | None
|
Absolute noise standard deviation in the signal's units. |
None
|
Exactly one argument is required. SNR mode adapts to each clean signal; a zero signal consequently receives zero noise. Random samples come from the generator supplied by the sensor.
apply ¶
Return a noisy copy using absolute or signal-relative scale.
Source code in src/dynaresp/sensors/effects.py
Bias
dataclass
¶
Bases: MeasurementEffect
Add a constant offset in the measured signal's units.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
float
|
Offset added to every sample. |
required |
apply ¶
Return a copy with value added to every sample.
Sensitivity
dataclass
¶
Bases: MeasurementEffect
Apply a dimensionless multiplicative calibration factor.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
factor
|
float
|
Value by which every sample is multiplied. |
required |
apply ¶
Return a copy scaled by the calibration factor.
Clipping
dataclass
¶
Bases: MeasurementEffect
Clip measurements to a closed sensor range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
minimum
|
float
|
Lower limit in the measured signal's units. |
required |
maximum
|
float
|
Upper limit in the measured signal's units; it must be greater
than |
required |
apply ¶
Return a copy limited to [minimum, maximum].
Quantization
dataclass
¶
Bases: MeasurementEffect
Uniformly quantize a clipped, symmetric full-scale range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bits
|
int
|
Positive converter bit depth, producing |
required |
full_scale
|
float
|
Positive magnitude of the symmetric range
|
required |
apply ¶
Return the uniformly quantized, full-scale-clipped signal.
Source code in src/dynaresp/sensors/effects.py
Dropout
dataclass
¶
Bases: MeasurementEffect
Replace independently selected samples by a configured value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
probability
|
float
|
Per-sample replacement probability in |
required |
value
|
float
|
Replacement value in signal units. |
0.0
|
Selection uses the generator assigned to this effect by the sensor.
apply ¶
Return a copy with independently selected samples replaced.