def test_fourier_trafo_init_plan(impl, odl_floating_dtype): dtype = odl_floating_dtype # Not supported, skip if dtype == np.dtype('float16') and impl == 'pyfftw': return shape = 10 halfcomplex, _ = _params_from_dtype(dtype) space_discr = odl.uniform_discr(0, 1, shape, dtype=dtype) ft = FourierTransform(space_discr, impl=impl, halfcomplex=halfcomplex) if impl != 'pyfftw': with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None # With temporaries ft.create_temporaries(r=True, f=False) if impl != 'pyfftw': with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None ft.create_temporaries(r=False, f=True) if impl != 'pyfftw': with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None
def test_fourier_trafo_init_plan(impl, floating_dtype): # Not supported, skip if floating_dtype == np.dtype("float16") and impl == "pyfftw": return shape = 10 halfcomplex, _ = _params_from_dtype(floating_dtype) space_discr = odl.uniform_discr(0, 1, shape, dtype=floating_dtype) ft = FourierTransform(space_discr, impl=impl, halfcomplex=halfcomplex) if impl != "pyfftw": with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None # With temporaries ft.create_temporaries(r=True, f=False) if impl != "pyfftw": with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None ft.create_temporaries(r=False, f=True) if impl != "pyfftw": with pytest.raises(ValueError): ft.init_fftw_plan() with pytest.raises(ValueError): ft.clear_fftw_plan() else: ft.init_fftw_plan() # Make sure plan can be used ft._fftw_plan(ft.domain.element().asarray(), ft.range.element().asarray()) ft.clear_fftw_plan() assert ft._fftw_plan is None
def test_fourier_trafo_create_temp(): shape = 10 space_discr = odl.uniform_discr(0, 1, shape, dtype="complex64") ft = FourierTransform(space_discr) ft.create_temporaries() assert ft._tmp_r is not None assert ft._tmp_f is not None ift = ft.inverse assert ift._tmp_r is not None assert ift._tmp_f is not None ft.clear_temporaries() assert ft._tmp_r is None assert ft._tmp_f is None
def test_fourier_trafo_create_temp(): shape = 10 space_discr = odl.uniform_discr(0, 1, shape, dtype='complex64') ft = FourierTransform(space_discr) ft.create_temporaries() assert ft._tmp_r is not None assert ft._tmp_f is not None ift = ft.inverse assert ift._tmp_r is not None assert ift._tmp_f is not None ft.clear_temporaries() assert ft._tmp_r is None assert ft._tmp_f is None
def test_fourier_trafo_call(impl, floating_dtype): # Test if all variants can be called without error # Not supported, skip if floating_dtype == np.dtype("float16") and impl == "pyfftw": return shape = 10 halfcomplex, _ = _params_from_dtype(floating_dtype) space_discr = odl.uniform_discr(0, 1, shape, dtype=floating_dtype) ft = FourierTransform(space_discr, impl=impl, halfcomplex=halfcomplex) ift = ft.inverse one = space_discr.one() assert np.allclose(ift(ft(one)), one) # With temporaries ft.create_temporaries() ift = ft.inverse # shares temporaries one = space_discr.one() assert np.allclose(ift(ft(one)), one)
def test_fourier_trafo_call(impl, floating_dtype): # Test if all variants can be called without error # Not supported, skip if floating_dtype == np.dtype('float16') and impl == 'pyfftw': return shape = 10 halfcomplex, _ = _params_from_dtype(floating_dtype) space_discr = odl.uniform_discr(0, 1, shape, dtype=floating_dtype) ft = FourierTransform(space_discr, impl=impl, halfcomplex=halfcomplex) ift = ft.inverse one = space_discr.one() assert np.allclose(ift(ft(one)), one) # With temporaries ft.create_temporaries() ift = ft.inverse # shares temporaries one = space_discr.one() assert np.allclose(ift(ft(one)), one)