STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
allan_variance Namespace Reference

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)

Detailed Description

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

Function Documentation

◆ analyze_sensor_noise()

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().

◆ compute_allan_variance()

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().

◆ fit_noise_coefficients()

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().

◆ measurement_uncertainty()

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.

Variable Documentation

◆ coeffs

allan_variance.coeffs

Definition at line 200 of file allan_variance.py.

◆ logger

allan_variance.logger = logging.getLogger(__name__)

Definition at line 22 of file allan_variance.py.

◆ n

int allan_variance.n = 10000

Definition at line 192 of file allan_variance.py.

◆ rw

allan_variance.rw = np.cumsum(np.random.randn(n) * 0.001)

Definition at line 197 of file allan_variance.py.

◆ sigma2_arr

allan_variance.sigma2_arr

Definition at line 200 of file allan_variance.py.

◆ sigma_1s

float allan_variance.sigma_1s = measurement_uncertainty(1.0, coeffs)

Definition at line 203 of file allan_variance.py.

◆ t

float allan_variance.t = np.arange(n) * tau0

Definition at line 194 of file allan_variance.py.

◆ tau0

float allan_variance.tau0 = 0.01

Definition at line 193 of file allan_variance.py.

◆ tau_arr

allan_variance.tau_arr

Definition at line 200 of file allan_variance.py.

◆ white

float allan_variance.white = np.random.randn(n) * 0.01

Definition at line 196 of file allan_variance.py.

◆ x

float allan_variance.x = white + rw

Definition at line 198 of file allan_variance.py.