PyWavelets 1.1.0
PyWavelets 1.1.0
.. contents::
We are very pleased to announce the release of PyWavelets 1.1.
This release includes enhanced functionality for both the stationary wavelet
transforms (swt, swt2, swtn) as well as the continuous wavelet
transform (cwt). In addition, there are a handful of bug fixes as
described in more detail below.
This release has dropped Python 2.7 support and now requires Python >= 3.5.
In addition to these changes to the software itself, a paper describing
PyWavelets was recently published in The Journal of Open Source Software:
https://joss.theoj.org/papers/10.21105/joss.01237
New features
-
All
swtfunctions now have a newtrim_approxoption that can be used
to exclude the approximation coefficients from all but the final level of
decomposition. This mode makes the output of these functions consistent with
the format of the output from the correspondingwavedecfunctions. -
All
swtfunctions also now have a newnormoption that, when set to
Trueand used in combination withtrim_approx=True, gives a partition
of variance across the transform coefficients. In other words, the sum of
the variances of all coefficients is equal to the variance of the original
data. This partitioning of variance makes theswttransform more similar
to the multiple-overlap DWT (MODWT) described in Percival and Walden's book,
"Wavelet Methods for Time Series Analysis". (#476)A demo of this new
swtfunctionality is available at
https://github.com/PyWavelets/pywt/blob/master/demo/swt_variance.py -
The continuous wavelet transform (
cwt) now offers an FFT-based
implementation in addition to the previous convolution based one. The new
methodargument can be set to either'conv'or'fft'to select
between these two implementations. (#490). -
The
cwtnow also hasaxissupport so that CWTs can be applied in
batch along any axis of an n-dimensional array. This enables faster batch
transformation of signals. (#509)
Backwards incompatible changes
-
When the input to
cwtis single precision, the computations are now
performed in single precision. This was done both for efficiency and to make
cwthandle dtypes consistently with the discrete transforms in
PyWavelets. This is a change from the prior behaviour of always performing
thecwtin double precision. (#507) -
When using complex-valued wavelets with the
cwt, the output will now be
the complex conjugate of the result that was produced by PyWavelets 1.0.x.
This was done to account for a bug described below. The magnitude of the
cwtcoefficients will still match those from previous releases. (#439)
Bugs Fixed
-
For a
cwtwith complex wavelets, the results in PyWavelets 1.0.x releases
matched the output of Matlab R2012a'scwt. Howveer, older Matlab releases
like R2012a had a phase that was of opposite sign to that given in textbook
definitions of the CWT (Eq. 2 of Torrence and Compo's review article, "A
Practical Guide to Wavelet Analysis"). Consequently, the wavelet coefficients
were the complex conjugates of the expected result. This was validated by
comparing the results of a transform usingcmor1.0-1.0as compared to the
cwtimplementation available in Matlab R2017b as well as the function
wt.mfrom the Lancaster University Physics department's
MODA toolbox <https://github.com/luphysics/MODA>_. (#439) -
For some boundary modes and data sizes, round-trip
dwt/idwtcan
result in an output that has one additional coefficient. Prior to this
relese, this could cause a failure duringWaveletPacketor
WaveletPacket2Dreconstruction. These wavelet packet transforms have now
been fixed and round-trip wavelet packet transforms always preserve the
original data shape. (#448) -
All inverse transforms now handle mixed precision coefficients consistently.
Prior to this release some inverse transform raised an error upon
encountering mixed precision dtypes in the wavelet subbands. In release 1.1,
when the user-provided coefficients are a mixture of single and double
precision, all coefficients will be promoted to double precision. (#450) -
A bug that caused a failure for
iswtnwhen using user-providedaxes
with non-uniform shape along the transformed axes has been fixed. (#462)