Giter VIP home page Giter VIP logo

allantools's Introduction

AllanTools

flake8 Status https://readthedocs.org/projects/allantools/badge/?version=latest https://coveralls.io/repos/github/aewallin/allantools/badge.svg?branch=master

A python library for calculating Allan deviation and related time & frequency statistics. LGPL v3+ license.

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
adev() Allan deviation
oadev() Overlapping Allan deviation
mdev() Modified Allan deviation
tdev() Time deviation
hdev() Hadamard deviation
ohdev() Overlapping Hadamard deviation
totdev() Total deviation
mtotdev() Modified total deviation
ttotdev() Time total deviation
htotdev() Hadamard total deviation
theo1() Theo1 deviation
mtie() Maximum Time Interval Error
tierms() Time Interval Error RMS
gradev() Gap resistant overlapping Allan deviation
gcodev() Groslambert Covariance

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

Authors

allantools's People

Contributors

aewallin avatar fmeynadier avatar telegraphic avatar ebenkler avatar yxie-git avatar mivade avatar ledatelescope avatar jleute avatar radiskis avatar folkertvanheusden avatar trimitri avatar kjh-m avatar pmembrey avatar punitjain8695 avatar chaloz avatar fossabot avatar q-wertz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.