()
| 87 | |
| 88 | |
| 89 | def test_data_reconstruction_delete_nodes_nd(): |
| 90 | x = np.array([[1, 2, 3, 4, 5, 6, 7, 8]] * 8, dtype=np.float64) |
| 91 | wp = pywt.WaveletPacketND(data=x, wavelet='db1', mode='symmetric') |
| 92 | |
| 93 | # The user must supply either data or axes |
| 94 | assert_raises(ValueError, pywt.WaveletPacketND, data=None, wavelet='db1', |
| 95 | axes=None) |
| 96 | |
| 97 | new_wp = pywt.WaveletPacketND(data=None, wavelet='db1', mode='symmetric', |
| 98 | axes=range(x.ndim)) |
| 99 | |
| 100 | new_wp['ad'+'da'] = wp['ad'+'da'].data |
| 101 | new_wp['ad'*2] = wp['ad'+'da'].data |
| 102 | new_wp['ad'+'dd'] = np.zeros((2, 2), dtype=np.float64) |
| 103 | new_wp['aa'] = [[3.0, 7.0, 11.0, 15.0]] * 4 |
| 104 | new_wp['dd'] = np.zeros((4, 4), dtype=np.float64) |
| 105 | new_wp['da'] = wp['da'] # all zeros |
| 106 | |
| 107 | assert_allclose(new_wp.reconstruct(update=False), |
| 108 | np.array([[1.5, 1.5, 3.5, 3.5, 5.5, 5.5, 7.5, 7.5]] * 8), |
| 109 | rtol=1e-12) |
| 110 | |
| 111 | new_wp['ad'+'aa'] = wp['ad'+'aa'].data |
| 112 | assert_allclose(new_wp.reconstruct(update=False), x, rtol=1e-12) |
| 113 | |
| 114 | del(new_wp['ad'+'aa']) |
| 115 | # TypeError on accessing deleted node |
| 116 | assert_raises(TypeError, lambda: new_wp['ad'+'aa']) |
| 117 | |
| 118 | new_wp['ad'+'aa'] = wp['ad'+'aa'].data |
| 119 | assert_(new_wp.data is None) |
| 120 | |
| 121 | assert_allclose(new_wp.reconstruct(update=True), x, rtol=1e-12) |
| 122 | assert_allclose(new_wp.data, x, rtol=1e-12) |
| 123 | |
| 124 | # TODO: decompose=True |
| 125 | |
| 126 | |
| 127 | def test_wavelet_packet_dtypes(): |
nothing calls this directly
no test coverage detected