@@ -6,26 +6,67 @@ 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+
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+
1021
1122New features
1223============
1324
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+
1650
1751Backwards incompatible changes
1852==============================
1953
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
2161the complex conjugate of the result that was produced by PyWavelets 1.0.x.
2262This 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+
2465
2566Bugs Fixed
2667==========
2768
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
2970matched the output of Matlab R2012a's ``cwt ``. Howveer, older Matlab releases
3071like R2012a had a phase that was of opposite sign to that given in textbook
3172definitions 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
3475comparing the results of a transform using ``cmor1.0-1.0 `` as compared to the
3576``cwt `` implementation available in Matlab R2017b as well as the function
3677``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)
3895
3996Other changes
4097=============
4198
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+
42105Authors
43106=======
44107
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+
45123Issues closed for v1.1.0
46124------------------------
47125
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+
48131Pull requests for v1.1.0
49132------------------------
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