# pynufft: Python non-uniform fast Fourier transform FFT is the standard method that estimates the frequency components on equispaced grids. NUFFT can calculate the frequency components outside grids. ### Installation: From pypi: $ pip install pynufft From github: $ git clone https://github.com/jyhmiinlin/pynufft $ python setup.py install ### Example: Inside the Python environment, type: >>> import pynufft.pynufft >>> pynufft.pynufft.test_2D() # test the 2D case ### Features pynufft is written in Python, using the standard Numpy/Scipy packages. Numpy, Scipy, Matplotlib are prerequisites. ### Summary Please find the example in test_2D(). The forward transform (the forward() method) involves the following steps: 1. Scaling (the x2xx() method) 2. FFT (the xx2k() method) 3. Convert spectrum from array to vector: (the k2vec() method) 4. Interpolation (the vec2y() method) The adjoint transform (the adjoint() method) involves the following steps: 1. Adjoint interpolation (the y2vec() method) 2. Convert kspectrum from vector to array: (the vec2k() method) 3. IFFT (the k2xx() method) 4. Rescaling (the x22x() method) If y is the data from the forward transform: >>>> y=pynufft.forward(image) The inverse transform (the inverse_DC() method) implemented the density compensation method of J. Pipe, Magnetic Resonance in Medicine, 1999 >>>>image=pynufft.inverse_DC(y) k-space spectrum can be obtained from the data (y): >>>>kspectrum = pynufft.y2k_DC(y) ### Limitations The speed of pynufft is suboptimal, because FFTW is currently unsupported in Numpy/Scipy. However, pynufft can enjoy the full speed of MKL FFT inside the Anaconda Python environment. ### 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 nufftpy: Pure Python NUFFT of Python-nufft (https://github.com/jakevdp/nufftpy). ### Acknowledgements pynufft was funded by the Ministry of Science and Technology, Cambridge Overseas Trust and Ministry of Education. If you find pynufft useful, please cite Fessler's min-max NUFFT paper. Fessler JA, Sutton BP. Nonuniform fast Fourier transforms using min-max interpolation. IEEE Trans Signal Process 2003;51(2):560-574. Please open an issue if you have any question related to pynufft. ### Bibtex of this page @Misc{pynufft, author = {Jyh-Miin Lin}, title = {{Pynufft}: {Python} non-uniform fast {F}ourier transform}, year = {2013--}, url = "https://github.com/jyhmiinlin/pynufft", note = {Online; https://github.com/jyhmiinlin/pynufft; Dec 2016} }