|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Classes | |
| class | NoiseCoefficients |
Functions | |
| Tuple[np.ndarray, np.ndarray] | compute_allan_variance (np.ndarray timeseries, float tau0, Optional[int] max_clusters=None) |
| NoiseCoefficients | fit_noise_coefficients (np.ndarray tau_arr, np.ndarray sigma2_arr) |
| float | measurement_uncertainty (float tau, NoiseCoefficients coeffs, float voltage=0.0, float sigma_base=1e-3) |
| Tuple[NoiseCoefficients, np.ndarray, np.ndarray] | analyze_sensor_noise (np.ndarray timeseries, float tau0=0.01) |
Variables | |
| logger = logging.getLogger(__name__) | |
| int | n = 10000 |
| float | tau0 = 0.01 |
| float | t = np.arange(n) * tau0 |
| float | white = np.random.randn(n) * 0.01 |
| rw = np.cumsum(np.random.randn(n) * 0.001) | |
| float | x = white + rw |
| coeffs | |
| tau_arr | |
| sigma2_arr | |
| float | sigma_1s = measurement_uncertainty(1.0, coeffs) |
Allan Variance Analysis for Pressure Transducer Noise Characterization
Paper Section 3: Decomposes measurement noise into fundamental stochastic processes:
- White noise (Q): thermal, quantization
- Flicker noise (B): 1/f, bias instability
- Bias random walk (K): long-term drift
- Rate random walk (R): acceleration of drift
σ²_A(τ) = Q²/(2τ) + 2·ln(2)·B² + K²·τ/6 + R²·τ²/20
Usage:
from allan_variance import compute_allan_variance, fit_noise_coefficients, measurement_uncertainty
| Tuple[NoiseCoefficients, np.ndarray, np.ndarray] allan_variance.analyze_sensor_noise | ( | np.ndarray | timeseries, |
| float | tau0 = 0.01 ) |
Full analysis: compute Allan variance, fit coefficients, return all.
Args:
timeseries: Voltage or ADC series
tau0: Sampling interval (s)
Returns:
(coeffs, tau_arr, sigma2_arr)
Definition at line 170 of file allan_variance.py.
References compute_allan_variance(), and fit_noise_coefficients().
| Tuple[np.ndarray, np.ndarray] allan_variance.compute_allan_variance | ( | np.ndarray | timeseries, |
| float | tau0, | ||
| Optional[int] | max_clusters = None ) |
Compute Allan variance at multiple averaging times τ = m·τ0.
Args:
timeseries: Voltage or ADC time series (1D)
tau0: Sampling interval (seconds)
max_clusters: Max cluster size (default: N/4)
Returns:
tau_arr: Averaging times [τ0, 2τ0, 4τ0, ...]
sigma2_arr: Allan variance σ²_A(τ) at each τ
Definition at line 37 of file allan_variance.py.
References max.
Referenced by analyze_sensor_noise().
| NoiseCoefficients allan_variance.fit_noise_coefficients | ( | np.ndarray | tau_arr, |
| np.ndarray | sigma2_arr ) |
Fit noise model: σ²_A(τ) = Q²/(2τ) + 2·ln(2)·B² + K²·τ/6 + R²·τ²/20
Uses least-squares on log-scale for stability.
Returns:
NoiseCoefficients(Q, B, K, R, tau_min, sigma_min)
Definition at line 85 of file allan_variance.py.
References max.
Referenced by analyze_sensor_noise().
| float allan_variance.measurement_uncertainty | ( | float | tau, |
| NoiseCoefficients | coeffs, | ||
| float | voltage = 0.0, | ||
| float | sigma_base = 1e-3 ) |
Measurement uncertainty σ_meas(v, τ) from paper Section 7.
σ²_meas = σ²_base + Q²/(2τ) + 2·ln(2)·B² + K²·τ/6 + α_v·v²
Args:
tau: Averaging time (seconds)
coeffs: Noise coefficients from fit_noise_coefficients
voltage: Optional voltage for heteroscedastic term
sigma_base: Base noise floor
Returns:
σ_meas in same units as input (PSI if voltage→PSI calibrated)
Definition at line 142 of file allan_variance.py.
References max.
| allan_variance.coeffs |
Definition at line 200 of file allan_variance.py.
| allan_variance.logger = logging.getLogger(__name__) |
Definition at line 22 of file allan_variance.py.
| int allan_variance.n = 10000 |
Definition at line 192 of file allan_variance.py.
| allan_variance.rw = np.cumsum(np.random.randn(n) * 0.001) |
Definition at line 197 of file allan_variance.py.
| allan_variance.sigma2_arr |
Definition at line 200 of file allan_variance.py.
| float allan_variance.sigma_1s = measurement_uncertainty(1.0, coeffs) |
Definition at line 203 of file allan_variance.py.
Definition at line 194 of file allan_variance.py.
| float allan_variance.tau0 = 0.01 |
Definition at line 193 of file allan_variance.py.
| allan_variance.tau_arr |
Definition at line 200 of file allan_variance.py.
| float allan_variance.white = np.random.randn(n) * 0.01 |
Definition at line 196 of file allan_variance.py.
Definition at line 198 of file allan_variance.py.