AllanTools
A python library for calculating Allan deviation and related time & frequency statistics. LGPL v3+ license.
Development at https://github.com/aewallin/allantools
Installation package at https://pypi.python.org/pypi/AllanTools
Discussion group at https://groups.google.com/d/forum/allantools
Documentation available at https://allantools.readthedocs.org
Input data should be evenly spaced observations of either fractional frequency, or phase in seconds. Deviations are calculated for given tau values in seconds.
Function |
Description |
Comment |
|---|---|---|
adev() |
Allan deviation |
Classic - use only if required - relatively poor confidence. |
oadev() |
Overlapping Allan deviation |
General purpose - most widely used - first choice |
mdev() |
Modified Allan deviation |
Used to distinguish between White and Flicker Phase Modulation. |
tdev() |
Time deviation |
Based on modified Allan variance. |
hdev() |
Hadamard deviation |
Rejects frequency drift, and handles divergent noise. |
ohdev() |
Overlapping Hadamard deviation |
Better confidence than normal Hadamard. |
pdev() |
Parabolic deviation |
Estimate uncertainty of Omega-counter data |
totdev() |
Total deviation |
Better confidence at long averages for Allan deviation. |
mtotdev() |
Modified total deviation |
Modified Total deviation. Better confidence at long averages for modified Allan |
ttotdev() |
Time total deviation |
|
htotdev() |
Hadamard total deviation |
|
theo1() |
Theo1 deviation |
Theo1 is a two-sample variance with improved confidence and extended averaging factor range. |
mtie() |
Maximum Time Interval Error |
|
tierms() |
Time Interval Error RMS |
|
gradev() |
Gap resistant overlapping Allan deviation |
|
gcodev() |
Groslambert Covariance |
Improved three-corner-hat analysis |
Noise generators for creating synthetic datasets are also included:
violet noise with f^2 PSD
white noise with f^0 PSD
pink noise with f^-1 PSD
Brownian or random walk noise with f^-2 PSD
More details on available statistics and noise generators : full list of available functions
see /tests for tests that compare allantools output to other (e.g. Stable32) programs. More test data, benchmarks, ipython notebooks, and comparisons to known-good algorithms are welcome!
Installation
Install from pypi:
pip install allantools
Latest version + examples, tests, test data, iPython notebooks : clone from github, then install
python setup.py install
(see python setup.py –help install for install options)
These commands should be run as root for system-wide installation, or you can use the –user option to install for your account only. Exact command names may vary depending on your OS / package manager / target python version.
Basic usage
Minimal example, phase data
We can call allantools with only one parameter - an array of phase data. This is suitable for time-interval measurements at 1 Hz, for example from a time-interval-counter measuring the 1PPS output of two clocks.
>>> import allantools >>> x = allantools.noise.white(10000) # Generate some phase data, in seconds. >>> (taus, adevs, errors, ns) = allantools.oadev(x)
when only one input parameter is given, phase data in seconds is assumed when no rate parameter is given, rate=1.0 is the default when no taus parameter is given, taus=’octave’ is the default
Frequency data example
Note that allantools assumes non-dimensional frequency data input. Normalization, by e.g. dividing all data points with the average frequency, is left to the user.
>>> import allantools >>> import pylab as plt >>> import numpy as np >>> t = np.logspace(0, 3, 50) # tau values from 1 to 1000 >>> y = allantools.noise.white(10000) # Generate some frequency data >>> r = 12.3 # sample rate in Hz of the input data >>> (t2, ad, ade, adn) = allantools.oadev(y, rate=r, data_type="freq", taus=t) # Compute the overlapping ADEV >>> fig = plt.loglog(t2, ad) # Plot the results >>> # plt.show()
New in 2016.11 : simple top-level API, using dedicated classes for data handling and plotting.
import allantools # https://github.com/aewallin/allantools/
import numpy as np
# Compute a deviation using the Dataset class
a = allantools.Dataset(data=np.random.rand(1000))
a.compute("mdev")
# New in 2019.7 : write results to file
a.write_results("output.dat")
# Plot it using the Plot class
b = allantools.Plot()
# New in 2019.7 : additional keyword arguments are passed to
# matplotlib.pyplot.plot()
b.plot(a, errorbars=True, grid=True)
# You can override defaults before "show" if needed
b.ax.set_xlabel("Tau (s)")
b.show()
Jupyter notebooks with examples
Jupyter notebooks are interactive python scripts, embedded in a browser, allowing you to manipulate data and display plots like easily. For guidance on installing jupyter, please refer to https://jupyter.org/install.
See /examples for some examples in notebook format.
github formats the notebooks into nice web-pages, for example
Metadata
Release files for AllanTools 2024.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| allantools-2024.6.tar.gz | 4.1 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| allantools-2024.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.1 MB
Release files / allantools-2024.6.tar.gz
| Download URL | allantools-2024.6.tar.gz |
|---|---|
| Size | 4.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4380c74de834ac869aefc899038e784ef1dd396370be89d6836abffbe484289
|
|
BLAKE2b-256 checksum How to use checksums |
ab811adc1ffe918959f3df124aef8e1dde380a6d2ce24528c5da8107596b3e02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / allantools-2024.6-py3-none-any.whl
| Download URL | allantools-2024.6-py3-none-any.whl |
|---|---|
| Size | 47.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d0d20e3c45245c4aff5346c59ae0f6e56ed61e691e481a06ffbab94875df2c9
|
|
BLAKE2b-256 checksum How to use checksums |
e4a1d32722ff0475739230c28d3f1194cf16d360d4b328ff590f8ea4a00e6fca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Security for AllanTools 2024.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.