# PySprint
### Spectrally Refined Interferometry for Python 

[![Build Status](https://travis-ci.org/Ptrskay3/PySprint.svg?branch=master)](https://travis-ci.org/Ptrskay3/pysprint)
[![Build Status](https://dev.azure.com/leehpeter/PySprint/_apis/build/status/Ptrskay3.PySprint?branchName=master)](https://dev.azure.com/leehpeter/PySprint/_build/latest?definitionId=3&branchName=master)
[![Maintainability](https://api.codeclimate.com/v1/badges/4e876c4899af3c4435b0/maintainability)](https://codeclimate.com/github/Ptrskay3/PySprint/maintainability)
[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/Ptrskay3/PySprint.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Ptrskay3/PySprint/context:python)
[![codecov](https://codecov.io/gh/Ptrskay3/PySprint/branch/master/graph/badge.svg)](https://codecov.io/gh/Ptrskay3/PySprint)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Documentation Status](https://readthedocs.org/projects/pysprint/badge/?version=latest)](https://pysprint.readthedocs.io/en/latest/?badge=latest)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Ptrskay3/PySprint/master?filepath=index.ipynb)
| | |
|-|-|
|__Name__| PySprint|
|__PyPI package__| [![PyPI version](https://badge.fury.io/py/pysprint.svg)](https://badge.fury.io/py/pysprint) |
|__Anaconda package__| [![Anaconda-Server Badge](https://anaconda.org/ptrskay/pysprint/badges/version.svg)](https://anaconda.org/ptrskay/pysprint) |
|__Development status__ | Pre-Alpha |
|__License__| [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) |


## Description
PySprint provides an interface for Spectrally resolved interferometry in Python. 
PySprint implements all the evaluation methods described in the literature, however
the API and the software itself might change over time. Documentation is sparse
and not complete yet and the testing is in *very early stage*. We have a currently
pointless Rust extension module, which might turn into something useful later.

* ✓ Minimum-maximum method
* ✓ Phase modulated cosine function fit method
* ✓ Fourier method
* ✓ Windowed Fourier transform method
* ✓ Stationary phase point method

### Installation

PySprint requires at least [Python 3.6](https://www.python.org/downloads/) to run.

Install with

```sh
pip install pysprint
```

or install on Anaconda with:
```sh
(CURRENTLY NOT AVAILABLE) conda install -c ptrskay pysprint -c conda-forge
```

Requirements: 
* numpy
* scipy
* matplotlib 
* pandas
* Jinja2
* scikit-learn

Optional packages: 
* lmfit - for detailed curve fitting results
* numba - to speed up non uniform FFT calculation
* dask - for parallel WFT run


## Documentation

The documentation is hosted on readthedocs.io.
