@@ -6,26 +6,67 @@ PyWavelets 1.1.0 Release Notes
6
6
7
7
We are very pleased to announce the release of PyWavelets 1.1.
8
8
9
- This release requires Python >=3.5 and has dropped Python 2.7 support.
9
+ This release includes enhanced functionality for both the stationary wavelet
10
+ transforms (``swt ``, ``swt2 ``, ``swtn ``) as well as the continuous wavelet
11
+ transform (``cwt ``). In addition, there are a handful of bug fixes as
12
+ described in more detail below.
13
+
14
+ This release has dropped Python 2.7 support and now requires Python >= 3.5.
15
+
16
+
17
+ In addition to these changes to the software itself, a paper describing
18
+ PyWavelets was recently published in The Journal of Open Source Software:
19
+ https://joss.theoj.org/papers/10.21105/joss.01237
20
+
10
21
11
22
New features
12
23
============
13
24
14
- Deprecated features
15
- ===================
25
+ - All ``swt `` functions now have a new ``trim_approx `` option that can be used
26
+ to exclude the approximation coefficients from all but the final level of
27
+ decomposition. This mode makes the output of these functions consistent with
28
+ the format of the output from the corresponding ``wavedec `` functions.
29
+
30
+ - All ``swt `` functions also now have a new ``norm `` option that, when set to
31
+ ``True `` and used in combination with ``trim_approx=True ``, gives a partition
32
+ of variance across the transform coefficients. In other words, the sum of
33
+ the variances of all coefficients is equal to the variance of the original
34
+ data. This partitioning of variance makes the ``swt `` transform more similar
35
+ to the multiple-overlap DWT (MODWT) described in Percival and Walden's book,
36
+ "Wavelet Methods for Time Series Analysis". (#476)
37
+
38
+ A demo of this new ``swt `` functionality is available at
39
+ https://github.com/PyWavelets/pywt/blob/master/demo/swt_variance.py
40
+
41
+ - The continuous wavelet transform (``cwt ``) now offers an FFT-based
42
+ implementation in addition to the previous convolution based one. The new
43
+ ``method `` argument can be set to either ``'conv' `` or ``'fft' `` to select
44
+ between these two implementations. (#490).
45
+
46
+ - The ``cwt `` now also has ``axis `` support so that CWTs can be applied in
47
+ batch along any axis of an n-dimensional array. This enables faster batch
48
+ transformation of signals. (#509)
49
+
16
50
17
51
Backwards incompatible changes
18
52
==============================
19
53
20
- When using complex-valued wavelets with the ``cwt ``, the output will now be
54
+ - When the input to ``cwt `` is single precision, the computations are now
55
+ performed in single precision. This was done both for efficiency and to make
56
+ ``cwt `` handle dtypes consistently with the discrete transforms in
57
+ PyWavelets. This is a change from the prior behaviour of always performing
58
+ the ``cwt `` in double precision. (#507)
59
+
60
+ - When using complex-valued wavelets with the ``cwt ``, the output will now be
21
61
the complex conjugate of the result that was produced by PyWavelets 1.0.x.
22
62
This was done to account for a bug described below. The magnitude of the
23
- ``cwt `` coefficients will still match those from previous releases.
63
+ ``cwt `` coefficients will still match those from previous releases. (#439)
64
+
24
65
25
66
Bugs Fixed
26
67
==========
27
68
28
- For a ``cwt `` with complex wavelets, the results in PyWavelets 1.0.x releases
69
+ - For a ``cwt `` with complex wavelets, the results in PyWavelets 1.0.x releases
29
70
matched the output of Matlab R2012a's ``cwt ``. Howveer, older Matlab releases
30
71
like R2012a had a phase that was of opposite sign to that given in textbook
31
72
definitions of the CWT (Eq. 2 of Torrence and Compo's review article, "A
@@ -34,16 +75,86 @@ were the complex conjugates of the expected result. This was validated by
34
75
comparing the results of a transform using ``cmor1.0-1.0 `` as compared to the
35
76
``cwt `` implementation available in Matlab R2017b as well as the function
36
77
``wt.m `` from the Lancaster University Physics department's
37
- `MODA toolbox <https://github.com/luphysics/MODA >`_
78
+ `MODA toolbox <https://github.com/luphysics/MODA >`_. (#439)
79
+
80
+ - For some boundary modes and data sizes, round-trip ``dwt ``/``idwt `` can
81
+ result in an output that has one additional coefficient. Prior to this
82
+ relese, this could cause a failure during ``WaveletPacket `` or
83
+ ``WaveletPacket2D `` reconstruction. These wavelet packet transforms have now
84
+ been fixed and round-trip wavelet packet transforms always preserve the
85
+ original data shape. (#448)
86
+
87
+ - All inverse transforms now handle mixed precision coefficients consistently.
88
+ Prior to this release some inverse transform raised an error upon
89
+ encountering mixed precision dtypes in the wavelet subbands. In release 1.1,
90
+ when the user-provided coefficients are a mixture of single and double
91
+ precision, all coefficients will be promoted to double precision. (#450)
92
+
93
+ - A bug that caused a failure for ``iswtn `` when using user-provided ``axes ``
94
+ with non-uniform shape along the transformed axes has been fixed. (#462)
38
95
39
96
Other changes
40
97
=============
41
98
99
+ - The PyWavelet test suite now uses ``pytest `` rather than ``nose ``. (#477)
100
+
101
+ - Cython code has been updated to use ``language_level=3 ``. (#435)
102
+
103
+ - PyWavelets has adopted the SciPy Code of Conduct. (#521)
104
+
42
105
Authors
43
106
=======
44
107
108
+ * Pavle Boškoski +
109
+ * Luke M Craig +
110
+ * Corey Goldberg
111
+ * Ralf Gommers
112
+ * Gregory R. Lee
113
+ * Pavle Boškoski +
114
+ * Lokesh Ravindranathan
115
+ * Alexandre Sauve +
116
+ * Arfon Smith +
117
+ * Valentin Valls +
118
+
119
+ A total of 10 people contributed to this release.
120
+ People with a "+" by their names contributed a patch for the first time.
121
+ This list of names is automatically generated, and may not be fully complete.
122
+
45
123
Issues closed for v1.1.0
46
124
------------------------
47
125
126
+ - `#389 <https://github.com/PyWavelets/pywt/issues/389 >`__: Change test suite from nose to pytest
127
+ - `#445 <https://github.com/PyWavelets/pywt/issues/445 >`__: Batch load for pywt.cwt
128
+ - `#449 <https://github.com/PyWavelets/pywt/issues/449 >`__: Coefficients arrays must have the same dtype error in iswt function
129
+
130
+
48
131
Pull requests for v1.1.0
49
132
------------------------
133
+
134
+ - `#434 <https://github.com/PyWavelets/pywt/pull/434 >`__: Drop Python 2.7 testing on CI and update docs for Python 3.5+...
135
+ - `#435 <https://github.com/PyWavelets/pywt/pull/435 >`__: set language_level=3 for Cython
136
+ - `#436 <https://github.com/PyWavelets/pywt/pull/436 >`__: Fix deprecated import for Iterable
137
+ - `#438 <https://github.com/PyWavelets/pywt/pull/438 >`__: Fix spelling of "Garrote"
138
+ - `#439 <https://github.com/PyWavelets/pywt/pull/439 >`__: fix the phase of CWT when using complex mother wavelets
139
+ - `#442 <https://github.com/PyWavelets/pywt/pull/442 >`__: document the numpy.pad equivalent of 'antireflect'
140
+ - `#446 <https://github.com/PyWavelets/pywt/pull/446 >`__: Spelling correction
141
+ - `#448 <https://github.com/PyWavelets/pywt/pull/448 >`__: Properly trim wavelet packet node coefficients during reconstruction
142
+ - `#450 <https://github.com/PyWavelets/pywt/pull/450 >`__: handle mixed dtype cofficients correctly across inverse transforms
143
+ - `#462 <https://github.com/PyWavelets/pywt/pull/462 >`__: fix bug in iswtn for data of arbitrary shape when using user-specified...
144
+ - `#463 <https://github.com/PyWavelets/pywt/pull/463 >`__: TST: fix misc. doctest failures (test_doc.py)
145
+ - `#471 <https://github.com/PyWavelets/pywt/pull/471 >`__: user-friendly error messages about multilevel DWT format
146
+ - `#476 <https://github.com/PyWavelets/pywt/pull/476 >`__: swt normalization and option to trim the approximation coefficients
147
+ - `#477 <https://github.com/PyWavelets/pywt/pull/477 >`__: MAINT/TST: update tests to use pytest
148
+ - `#490 <https://github.com/PyWavelets/pywt/pull/490 >`__: cwt with fft convolution support
149
+ - `#495 <https://github.com/PyWavelets/pywt/pull/495 >`__: BLD: add missing import of warnings module to setup.py
150
+ - `#499 <https://github.com/PyWavelets/pywt/pull/499 >`__: register markers for pytest 4.5 compatibility
151
+ - `#502 <https://github.com/PyWavelets/pywt/pull/502 >`__: fix docstring's scale2frequency parameter order
152
+ - `#506 <https://github.com/PyWavelets/pywt/pull/506 >`__: Guard against trying to transform along size 0 axes
153
+ - `#507 <https://github.com/PyWavelets/pywt/pull/507 >`__: preserve single precision in CWT
154
+ - `#509 <https://github.com/PyWavelets/pywt/pull/509 >`__: add axis support to cwt
155
+ - `#510 <https://github.com/PyWavelets/pywt/pull/510 >`__: add demo using swt with norm=True to analyze variance across...
156
+ - `#511 <https://github.com/PyWavelets/pywt/pull/511 >`__: MAINT: split bundled licenses into a separate file
157
+ - `#514 <https://github.com/PyWavelets/pywt/pull/514 >`__: Small typo in the doc
158
+ - `#516 <https://github.com/PyWavelets/pywt/pull/516 >`__: Fix docstrings to avoid sphinx warnings
159
+ - `#521 <https://github.com/PyWavelets/pywt/pull/521 >`__: DOC: adopt the SciPy Code of Conduct
160
+ - `#525 <https://github.com/PyWavelets/pywt/pull/525 >`__: test against Python 3.8
0 commit comments