def scales(self): """Get the scales of each coefficient. Returns ------- scales : ``range`` element The scale of each coefficient, given by an integer. 0 for the lowest resolution and self.nlevels for the highest. """ if self.impl == 'pywt': if self.__variant == 'forward': discr_space = self.domain wavelet_space = self.range else: discr_space = self.range wavelet_space = self.domain shapes = pywt_coeff_shapes(discr_space.shape, self.pywt_wavelet, self.nlevels, self.pywt_pad_mode) coeff_list = [np.ones(shapes[0]) * 0] dcoeffs_per_scale = 2**discr_space.ndim - 1 for i in range(1, 1 + len(shapes[1:])): coeff_list.append( (np.ones(shapes[i]) * i, ) * dcoeffs_per_scale) coeffs = pywt_flat_array_from_coeffs(coeff_list) return wavelet_space.element(coeffs) else: raise RuntimeError("bad `impl` '{}'".format(self.impl))
def scales(self): """Get the scales of each coefficient. Returns ------- scales : ``range`` element The scale of each coefficient, given by an integer. 0 for the lowest resolution and self.nlevels for the highest. """ if self.impl == 'pywt': if self.__variant == 'forward': discr_space = self.domain wavelet_space = self.range else: discr_space = self.range wavelet_space = self.domain shapes = pywt_coeff_shapes(discr_space.shape, self.pywt_wavelet, self.nlevels, self.pywt_pad_mode) coeff_list = [np.ones(shapes[0]) * 0] dcoeffs_per_scale = 2 ** discr_space.ndim - 1 for i in range(1, 1 + len(shapes[1:])): coeff_list.append( (np.ones(shapes[i]) * i,) * dcoeffs_per_scale) coeffs = pywt_flat_array_from_coeffs(coeff_list) return wavelet_space.element(coeffs) else: raise RuntimeError("bad `impl` '{}'".format(self.impl))
def _call(self, x): """Return wavelet transform of ``x``.""" if self.impl == 'pywt': coeff_list = pywt_multi_level_decomp( x, wavelet=self.pywt_wavelet, nlevels=self.nlevels, mode=self.pywt_pad_mode) return pywt_flat_array_from_coeffs(coeff_list) else: raise RuntimeError("bad `impl` '{}'".format(self.impl))
def test_pywt_coeff_list_conversion(small_shapes, floating_dtype): """Test if converstion flat array <-> coefficient list works.""" ndim, shapes = small_shapes grouped_list, flat_list = _grouped_and_flat_arrays(shapes, dtype=float) true_flat_array = np.hstack(flat_list) flat_array = pywt_flat_array_from_coeffs(grouped_list) assert all_equal(flat_array, true_flat_array) coeff_list = pywt_coeffs_from_flat_array(flat_array, shapes) true_coeff_list = grouped_list assert all_equal(coeff_list, true_coeff_list)