ANN: PyWavelets 0.4.0 release

179 views
Skip to first unread message

Gregory Lee

unread,
Dec 28, 2015, 11:40:43 PM12/28/15
to PyWavelets
Dear all,

On behalf of the PyWavelets development team I am pleased to announce the release of PyWavelets 0.4.0. This release is the result of 6 months effort by the developers.  There are several new features as well as performance improvements and some changes to modernize/streamline the API.  Full details are included in the release notes below.

This release requires Python 2.6, 2.7 or 3.3-3.5 and Numpy 1.6.2 or greater. Sources and release notes can be found on https://pypi.python.org/pypi/PyWavelets and https://github.com/PyWavelets/pywt/releases.

As always, new contributors are welcome to join us at https://github.com/PyWavelets/pywt

Cheers,
Greg


==============================
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 in this release:
https://github.com/PyWavelets/pywt/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av0.4.0

Pull requests merged in this release:
https://github.com/PyWavelets/pywt/pulls?q=is%3Apr+is%3Aclosed+milestone%3Av0.4.0

zst...@gmail.com

unread,
Feb 22, 2016, 1:39:12 PM2/22/16
to PyWavelets
Many thanks for keeping this great project alive!

Is this the correct place to discuss issues? I've been using ISWT by Mike Marino for quite a while, but with the recent release of PyWT it got much slower for me. The bottleneck appears to be new idwt's np.iscomplexobj() call. Since it only slows down iswt(), I suspect the fancy indexing in iswt() is the reason.

Ralf Gommers

unread,
Feb 27, 2016, 5:11:22 PM2/27/16
to pywav...@googlegroups.com
On Mon, Feb 22, 2016 at 1:36 PM, <zst...@gmail.com> wrote:
Many thanks for keeping this great project alive!

Is this the correct place to discuss issues?

Either here or on https://github.com/PyWavelets/pywt. If you know that it's a bug (and that includes performance regressions), then it's better to file an issue on GitHub straight away.
 
I've been using ISWT by Mike Marino for quite a while, but with the recent release of PyWT it got much slower for me. The bottleneck appears to be new idwt's np.iscomplexobj() call. Since it only slows down iswt(), I suspect the fancy indexing in iswt() is the reason.

Please open an issue, with a self-contained example so we can reproduce it. Or a pull request would be even better of course:)

Cheers,
Ralf



--
You received this message because you are subscribed to the Google Groups "PyWavelets" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pywavelets+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

zst...@gmail.com

unread,
Feb 28, 2016, 10:49:07 AM2/28/16
to PyWavelets
Ok I created an issue with a test script. I'd be happy to PR but this matter is over my head.
Reply all
Reply to author
Forward
0 new messages