Skip to content

Commit a4018d9

Browse files
authored
Merge pull request #523 from grlee77/rel_notes_1.1.0
DOC: update release notes for v1.1
2 parents 2cced50 + 02f0c76 commit a4018d9

File tree

1 file changed

+118
-7
lines changed

1 file changed

+118
-7
lines changed

doc/release/1.1.0-notes.rst

Lines changed: 118 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,67 @@ PyWavelets 1.1.0 Release Notes
66

77
We 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

1122
New 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

1751
Backwards 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
2161
the complex conjugate of the result that was produced by PyWavelets 1.0.x.
2262
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+
2465

2566
Bugs 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
2970
matched the output of Matlab R2012a's ``cwt``. Howveer, older Matlab releases
3071
like R2012a had a phase that was of opposite sign to that given in textbook
3172
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
3475
comparing 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

3996
Other 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+
42105
Authors
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+
45123
Issues 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+
48131
Pull 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

Comments
 (0)