PyWavelets 0.4.0 Release Notes

PyWavelets 0.4.0 is the culmination of 6 months of work. In addition to several new features, some changes and deprecations have been made to streamline the API.

This release requires Python 2.6, 2.7 or 3.3-3.5 and NumPy 1.6.2 or greater.

Highlights of this release include:

  • 1D and 2D inverse stationary wavelet transforms
  • Substantially faster 2D and nD discrete wavelet transforms
  • Complex number support
  • nD versions of the multilevel DWT and IDWT

New features

1D and 2D inverse stationary wavelet transforms

1D (iswt) and 2D (iswt2) inverse stationary wavelet transforms were added. These currently only support even length inputs.

Faster 2D and nD wavelet transforms

The multidimensional DWT and IDWT code was refactored and is now an order of magnitude faster than in previous releases. The following functions benefit: dwt2, idwt2, dwtn, idwtn.

Complex floating point support

64 and 128-bit complex data types are now supported by all wavelet transforms.

nD implementation of the multilevel DWT and IDWT

The existing 1D and 2D multilevel transforms were supplemented with an nD implementation.

Wavelet transforms can be applied along a specific axis/axes

All wavelet transform functions now support explicit specification of the axis or axes upon which to perform the transform.

Example Datasets

Two additional 2D grayscale images were added (camera, ascent). The previously existing 1D ECG data (ecg) and the 2D aerial image (aero) used in the demos can also now be imported via functions defined in pywt.data (e.g. camera = pywt.data.camera())

Deprecated features

A number of functions have been renamed, the old names are deprecated and will be removed in a future release:

  • intwave, renamed to integrate_wavelet
  • centrfrq, renamed to central_frequency
  • scal2frq, renamed to scale2frequency
  • orthfilt, renamed to orthogonal_filter_bank

Integration of general signals (i.e. not wavelets) with integrate_wavelet is deprecated.

The MODES object and its attributes are deprecated. The new name is Modes, and the attribute names are expanded:

  • zpd, renamed to zero
  • cpd, renamed to constant
  • sp1, renamed to smooth
  • sym, renamed to symmetric
  • ppd, renamed to periodic
  • per, renamed to periodization

Backwards incompatible changes

idwt no longer takes a correct_size parameter. As a consequence, idwt2 inputs must match exactly in length. For multilevel transforms, where arrays differing in size by one element may be produced, use the waverec functions from the multilevel module instead.

Bugs Fixed

float32 inputs were not always respected. All transforms now return float32 outputs when called using float32 inputs.

Incorrect detail coefficients were returned by downcoef when level > 1.

Other changes

Much of the API documentation is now autogenerated from the corresponding function docstrings. The numpydoc sphinx extension is now needed to build the documentation.

Authors

  • Thomas Arildsen +
  • François Boulogne
  • Ralf Gommers
  • Gregory R. Lee
  • Michael Marino +
  • Aaron O’Leary +
  • Daniele Tricoli +
  • Kai Wohlfahrt

A total of 8 people contributed to this release. People with a “+” by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Issues closed for v0.4.0

  • #46: Independent test comparison
  • #95: Simplify Matlab tests
  • #97: BUG: erroneous detail coefficients returned by downcoef with...
  • #140: demo/dwt_signal_decomposition.py : TypeError: object of type...
  • #141: Documentation needs update: ImportError: cannot import name ‘multilevel’

Pull requests for v0.4.0

  • #55: [RFC] Api changes
  • #59: Refactor convolution.c.src
  • #64: MAINT: make LH, HL variable names in idwt2 consistent with dwt2
  • #67: ENH: add wavedecn and waverecn functions
  • #68: ENH: Faster dwtn and idwtn
  • #88: DOC minor edit about possible naming
  • #93: Added implementation of iswt and iswt2
  • #98: fix downcoef detail coefficients for level > 1
  • #99: complex support in all dwt and idwt related functions
  • #100: replace mlabwrap with python-matlab-bridge in Matlab tests
  • #102: Replace some .src expansion with macros
  • #104: Faster idwtn/dwtn
  • #106: make sure transforms respect float32 dtype
  • #109: DOC: fix broken link in sidebar for html docs.
  • #112: Complex fix
  • #113: TST: don’t build .exe installers on Appveyor anymore, only wheels.
  • #116: [RFC] ENH: Add axis argument to dwt
  • #117: MAINT: remove deprecated for loop syntax from Cython code
  • #121: Fix typo
  • #123: MAINT: remove some unused imports
  • #124: switch travis from python 3.5-dev to 3.5
  • #130: Add axis argument to multidim
  • #138: WIP: Documentation updates for v0.4.0
  • #139: Autogenerate function API docs
  • #142: fix broken docstring examples in _multilevel.py
  • #143: handle None properly in waverec
  • #144: Add importable images
  • #145: DOC: Document MSVC versions