def fft_worker(self): if _fft_worker_cache[0] != self.viewer.data.shape: timeit = TimeIt(self.viewer, 'creating FFT worker') _fft_worker_cache[0] = self.viewer.data.shape _fft_worker_cache[1] = FFTTasks(self.viewer.data.shape, options=Options(fftw_threads=4)) timeit.stop() return _fft_worker_cache[1]
class FFTViewerTask(BaseViewerTask): compute_button = Button('Compute Fourier Transform') inverse = Bool(False) traits_view = View ( Item('compute_button', show_label = False), Item('inverse'), ) _fft_worker = Any def startup(self): # import fftw routines from iocbio.ops.fft_tasks import FFTTasks self._fft_worker = FFTTasks(self.viewer.data.shape) def _compute_button_fired(self): data = self.viewer.data if not isinstance (data, numpy.ndarray) or 1: data = data[:] # tiffarray # compute fft of data if self.inverse: fdata = self._fft_worker.ifft(data) self.viewer.add_data('IFFT', fdata) else: fdata = self._fft_worker.fft(data) self.viewer.add_data('FFT', fdata) #fdata[0,0,0] = 0 #fdata = numpy.fft.fftshift (fdata) return fdata_source = ArrayDataSource(original_source = self.viewer.data_source, kind = self.viewer.data_source.kind, data = fdata) viewer = self.viewer.__class__(data_source = fdata_source) self.viewer.add_result(viewer) viewer.copy_tasks(self.viewer)
def startup(self): # import fftw routines from iocbio.ops.fft_tasks import FFTTasks self._fft_worker = FFTTasks(self.viewer.data.shape)