Skip to content

compat.allantools

Drop-in functions with allantools-style signatures, computed by ntpstats.

Code written for allantools <https://github.com/aewallin/allantools>_ can switch with one import::

# import allantools as at
from ntpstats.compat import allantools as at
taus, devs, errs, ns = at.oadev(phase, rate=1.0, data_type="phase", taus="octave")

Every function takes (data, rate=1.0, data_type="phase", taus=None) and returns (taus_used, devs, errs, ns) as allantools does:

  • data_type="freq" data are integrated to phase (x[0] = 0);
  • taus is "octave" (the default), "decade", "all" or an array of averaging times in seconds (rounded to multiples of 1/rate);
  • errs is dev / sqrt(ns), and points with ns < 2 are dropped.

Deliberate differences:

  • mtotdev/ttotdev return the raw NIST SP 1065 eq. (27) value, like allantools; :func:ntpstats.stability.compute bias-corrects by default.
  • theo1 returns taus of 0.75 * m / rate (the effective tau).
  • htotdev is raw (no bias correction), like mtotdev; m = 1 is the overlapping HDEV.

For confidence intervals, noise identification and gap handling use :func:ntpstats.stability.compute directly.

frequency2phase(freqdata, rate)

Integrate fractional frequency to phase (seconds), with x[0] = 0.

phase2frequency(phase, rate)

Fractional frequency from phase (seconds).

adev(data, rate=1.0, data_type='phase', taus=None)

Allan deviation (non-overlapping).

oadev(data, rate=1.0, data_type='phase', taus=None)

Overlapping Allan deviation.

mdev(data, rate=1.0, data_type='phase', taus=None)

Modified Allan deviation.

tdev(data, rate=1.0, data_type='phase', taus=None)

Time deviation.

ohdev(data, rate=1.0, data_type='phase', taus=None)

Overlapping Hadamard deviation.

hdev(data, rate=1.0, data_type='phase', taus=None)

Hadamard deviation (non-overlapping, from phase decimated by m).

totdev(data, rate=1.0, data_type='phase', taus=None)

Total deviation.

mtotdev(data, rate=1.0, data_type='phase', taus=None)

Modified total deviation (raw, without bias correction, as allantools).

ttotdev(data, rate=1.0, data_type='phase', taus=None)

Time total deviation (raw, without bias correction, as allantools).

theo1(data, rate=1.0, data_type='phase', taus=None)

Theo1 deviation; returned taus are the effective 0.75 * m / rate.

mtie(data, rate=1.0, data_type='phase', taus=None)

Maximum time interval error.

tierms(data, rate=1.0, data_type='phase', taus=None)

RMS time interval error.

htotdev(data, rate=1.0, data_type='phase', taus=None)

Hadamard total deviation (raw, without bias correction).