Development
To-do list
Here follows an un-ordered to do list:
Statistics and core algorithms
The mtie_phase_fast approach to MTIE, using a binary tree (see BREGNI reference)
TheoH
Confidence intervals based on identified noise-type and equivalent degrees of freedom.
Bias corrections for biased statistics (totdev, mtotdev, htotdev, theo1)
Multi-threading for faster processing of (very) large datasets
Faster algorithms for mtotdev() and htotdev() which are currently very slow
Improve documentation
Improve packaging for PyPi and/or other packaging systems: Conda?, PPA for Ubuntu/Debian?
Tests for different noise types according to IEEE 1139, include power-spectral-density calculations
Conversion between phase noise and Allan variance
Phase noise calculations and plots
Comparison to other libraries such as GPSTk
Make sure your patch does not break any of the tests, and does not significantly reduce the readability of the code.
Documentation generation
See /docs for documentation in sphinx format. On Ubuntu this requires the python-sphinx and python-numpydoc packages. html/pdf documentation using sphinx can be built locally with:
/docs$ make html
/docs$ make latexpdf
this generates html documentation in docs/_build/html and pdf documentation in docs/_build/latex.
The sphinx documentation is also auto-generated online
Tests
The tests compare the output of allantools to other programs such as Stable32. Tests may be run using py.test (http://pytest.org). Package managers may install it with different binary names (e.g. pytest-3 for the python3 version on debian).
Slow tests are marked ‘slow’ and tests failing because of a known reason are marked ‘fails’. To run all tests:
$ py.test
To exclude known failing tests:
$ py.test -m "not fails" --durations=10
To exclude tests that run slowly:
$ py.test -m "not slow" --durations=10
To exclude both (note option change) and also check docstrings is ReST files
$ py.test -k "not (slow or fails)" --durations=10 --doctest-glob='*.rst'
To run the above command without installing the package:
$ python setup.py test --addopts "-k 'not (fails or slow)'"
Test coverage may be obtained with the (https://pypi.python.org/pypi/coverage) module:
coverage run --source allantools setup.py test --addopts "-k 'not (fails or slow)'"
coverage report # Reports on standard output
coverage html # Writes annotated source code as html in ./htmlcov/
On Ubuntu this requires packages python-pytest and python-coverage.
Testing on multiple python versions can be done with tox (https://testrun.org/tox)
$ tox
Tests run continuously on Travis-CI at https://travis-ci.org/aewallin/allantools
Notes for Pypi
Creating a source distribution
python setup.py sdist
This creates a package in dist/ Testing the source distribution. The install takes a long time while compiling numpy and scipy.
$ virtualenv tmp
$ tmp/bin/pip install dist/AllanTools-2016.2.tar.gz
$ tmp/bin/python
>>> import allantools
Uploading to PyPi. (requries a ~/.pypirc with username and password)
$ twine upload dist/*
Check result at https://pypi.python.org/pypi/AllanTools