Revision 891984064999c1158e15ae7bfeaed7bfeb8e1837 authored by LElgueddari on 10 May 2019, 09:14:34 UTC, committed by Jyh-Miin Lin on 10 May 2019, 09:14:34 UTC
* Initial commit of documentation fixing

* [NUFFT_HSA]: Adding verbosity level and warning instead of prints

* [NUFFT_hsa]: now pep8 compliant

* [Helper]: Adding the verbosity

* [NUFFT_hsa]: Adding the verbosity on the helper

* [NUFFT_hsa]: pycodestyle issues

* [nufft_cpu]: pycodestyle compatibility
1 parent 6742ec5
Raw File
README.md
# PyNUFFT: Python non-uniform fast Fourier transform


The fast Fourier transform (FFT) is the standard method that estimates the frequency components at equispaced locations. For non-equispaced locations, FFT is not useful and the discrete Fourier transform 
(DFT) is required. 

Alternatively, NUFFT is the fast algorithm for calculating the frequency components at non-equispaced locations.

A minimal "getting start" tutorial is available at http://jyhmiinlin.github.io/pynufft/ .

Please use Python3. PyNUFFT has been tested with Python 3.4 and 3.6. However, it should work with Python 3.5. 


### New in version 2019.1.1

Version 2019.1.1 is a beta version. 

Installation in Windows 10 has been tested. 


### Summary

PyNUFFT implements the min-max NUFFT of Fessler and Sutton, with the following features:

- Written in pure Python.
- Based on Python numerical libraries, such as Numpy, Scipy (matplotlib for displaying examples).
- Provides the Python interface including forward transform, adjoint transform and other routines.
- Provides 1D/2D/3D examples for further developments.
- (Experimental) support of NVIDIA's graphic processing units (GPUs) and opencl devices (GPUs or a multi-core CPU)

### Bugs

- Experimental support for Python2. Some tests pass Python2.7.15 but the full support for Python2 is still pending (especially the GPU part).

- Kernel size of 5-7 has been tested. The numerical accuracy is limited to single-precision.  

- I am still writing examples. However tests/test_init.py might give you an indication whether NUFFT_cpu and NUFFT_hsa are working properly.

### Other nufft implementations in Python:

- Python-nufft: Python bindings to Fortran nufft. (https://github.com/dfm/Python-nufft/), MIT license

- pynfft: Python bindings around the NFFT C-library, which uses the speed of FFTW, (https://github.com/ghisvail/pyNFFT), GPL v3

- nfft: Pure Python implementation of 1D nfft (https://github.com/jakevdp/nfft). 

- nufftpy: Pure Python NUFFT of Python-nufft (https://github.com/jakevdp/nufftpy). 

- mripy: A Python based MRI package (https://github.com/peng-cao/mripy), which combines Numba and NUFFT.

- BART provides a Python wrapper.

### Acknowledgements

PyNUFFT was funded by the Cambridge Commonwealth, European and International Trust (Cambridge, UK) and Ministry of Education, Taiwan. I am grateful for valuable comments from many experts. 

I acknowledge the NVIDIA Corporation with the donation of a Titan X Pascal and a Quadro P6000 GPU used for developing the GPU code. Thanks to the authors of Michigan Image 
Reconstruction Toolbox (MIRT) for releasing the original min-max interpolator code. However, errors in PyNUFFT are not related to MIRT and please contact me at 
jyhmiinlin@gmail.com or open an issue. 


The interpolator is designed using the Fessler and Sutton's min-max NUFFT algorithm:
Fessler JA, Sutton BP. Nonuniform fast Fourier transforms using min-max interpolation. IEEE Trans Signal Process 2003;51(2):560-574.

If you find PyNUFFT useful, please cite:

Lin, Jyh-Miin. "Python Non-Uniform Fast Fourier Transform (PyNUFFT): An Accelerated Non-Cartesian MRI Package on a Heterogeneous Platform (CPU/GPU)." Journal of Imaging 4.3 (2018): 51.

@article{lin2018python,
  title={Python Non-Uniform Fast {F}ourier Transform ({PyNUFFT}): An Accelerated Non-{C}artesian {MRI} Package on a Heterogeneous Platform ({CPU/GPU})},
  author={Lin, Jyh-Miin},
  journal={Journal of Imaging},
  volume={4},
  number={3},
  pages={51},
  year={2018},
  publisher={Multidisciplinary Digital Publishing Institute}
}
back to top