https://github.com/jyhmiinlin/pynufft
Revision 2ad4af2993691473570433f3994b55580ce41764 authored by Your Name on 16 December 2016, 16:37:05 UTC, committed by Your Name on 16 December 2016, 16:37:05 UTC
change the version to 0.3
1 parent 21ce5cf
Raw File
Tip revision: 2ad4af2993691473570433f3994b55580ce41764 authored by Your Name on 16 December 2016, 16:37:05 UTC
update setup.py
Tip revision: 2ad4af2
README.md
### pynufft 0.3: A Pythonic non-uniform fast Fourier transform

## Pythonic Non-uniform fast Fourier transform (NUFFT)

FFT is the standard method for calculating the frequency components of a signal. However, FFT only applies to equispaced grids. 

NUFFT can calculate the frequency components at non-equispaced locations.


## Installation:

for pypi:

pip install pynufft

from github:

git clone https://github.com/jyhmiinlin/pynufft

## 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. Therefore, the external dependency has been avoided. 

Numpy, Scipy, Matplotlib are prerequisites.

## Summary

Please find the example in test_2D().

The forward transform (the foward() method) involves the following steps:
1. Scaling (the x2xx() method)
2. FFT (the xx2k() method)
3. Convert kspectrum from array to vector: (the k2vec() method)
4. Interpolation (the vec2y() method)

The adjoint transform (the bacward() 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, you can download commercial Python packages to accelerate pynufft. These commercial packages such as Anaconda or Intel Python are free for 

## Other nufft implementations in Python:

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

pynfft: Python bindings of the C-library NFFT which is built on top of FFTW (https://github.com/ghisvail/pyNFFT), GPL v3

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

## Acknowlegements

Pynufft received financial supports from the Ministry of Science and Technology under grant MOST 105-2221-E-002-142-MY3.

If you find pynufft useful, please cite:

Lin J-M, Patterson AJ, Chang H-C, Gillard JH, Graves MJ. An iterative reduced field-of-view reconstruction for periodically rotated overlapping parallel lines with enhanced reconstruction ($
(http://www.ncbi.nlm.nih.gov/pubmed/26429249)

pynufft was based on the min-max MATLAB NUFFT program, described in the following paper:
Fessler JA, Sutton BP. Nonuniform fast Fourier transforms using min-max interpolation. IEEE Trans Signal Process 2003;51(2):560-574.

back to top