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