Source code for MRI_FFT.OneD

"""For use when a 1D output array is required.

It contains a single class:

- "Direct1d", for directly calculating the inverse Fourier's Transform
"""
__author__ = 'Thomas Bealing'

import numpy
import pyfftw
import psutil
import os

pyfftw.interfaces.cache.enable()
p = psutil.Process(os.getpid())
p.nice(psutil.HIGH_PRIORITY_CLASS)


[docs]class Direct1d(object): """Calculates the inverse Fourier's transform of a 3D numpy array directly""" # TODO: add data validation on array1D
[docs] def ifft1D(self, array1D): """Calculates the 1D inverse Fourier's Transform of array1D :param array1D: An array of k-space data :type array1D: A complex or real 1D numpy array :return: The transformed array :rtype: A complex64 1D numpy array """ if len(array1D.shape) != 1: raise ValueError('Invalid array1D: Expected a 1D numpy array') input = pyfftw.n_byte_align(array1D, 16, 'complex64') # FFTW Setup (requires data before this setup can run) ifft_F = pyfftw.FFTW(input, input, planner_effort='FFTW_ESTIMATE', direction='FFTW_BACKWARD', threads=1, axes=(0,), planning_timelimit=0.0) # Run the FFT return ifft_F()