Flicker Noise Model

This module implements the analytic \(1/f\) noise covariance model used throughout the pipeline (Zhang et al. 2026, §2.2). Unlike the conventional DFT-diagonal approach, the covariance is defined directly in the time domain via the Wiener–Khinchin theorem, avoiding spurious periodic correlations.

The correlation function

\[\xi(\tau) = \frac{1}{\pi\tau}\,\Theta_0^\alpha\, \mathrm{Re}\!\left[\Gamma(1{-}\alpha,\,i\Theta_c)\, e^{-i\frac{\pi}{2}(1{-}\alpha)}\right], \quad \Theta_0 = \tau f_0,\; \Theta_c = \tau f_c,\]

is evaluated analytically using the upper incomplete gamma function and accelerated by a pre-trained polynomial emulator.

Covariance path selection

For evenly-spaced (consecutive) time samples, use flicker_cov(), which returns a symmetric Toeplitz matrix (or its first row) and enables the fast Levinson \(\mathcal{O}(N^2)\) log-likelihood in log_likeli().

For non-consecutive time samples (e.g., after RFI flagging), use flicker_cov_general(), which builds the full \(N\times N\) covariance matrix from pairwise time differences. Pair it with log_likeli_general() for the Cholesky-based log-likelihood, and pass consecutive=False to the noise samplers.

Emulator classes

FlickerCorrEmulator and LogDetEmulator wrap pre-trained polynomial emulators (from the MomentEmu package) for fast evaluation of the correlation function and Toeplitz log-determinant respectively. They are loaded automatically at import time from pickle files in the package directory and expose a JAX-compatible interface via .create_jax().