Latest release

PyWavelets v0.5.1

@grlee77 grlee77 released this Nov 29, 2016 · 83 commits to master since this release

PyWavelets 0.5.1 Release Notes

PyWavelets 0.5.1 is a bug-fix release with no new features compared to 0.5.0

Bugs Fixed

In release 0.5.0 the wrong edge mode was used for the following three
deprecated modes: ppd, sp1, and per. All deprecated edge mode
names are now correctly converted to the corresponding new names.

One-dimensional discrete wavelet transforms did not properly respect the
axis argument for complex-valued data. Prior to this release, the last
axis was always transformed for arrays with complex dtype. This fix affects
dwt, idwt, wavedec, waverec.

Downloads

PyWavelets v0.5.0

@grlee77 grlee77 released this Nov 3, 2016 · 83 commits to master since this release

PyWavelets 0.5.0 Release Notes

PyWavelets is a Python toolbox implementing both discrete and continuous
wavelet transforms (mathematical time-frequency transforms) with a wide range
of built-in wavelets. C/Cython are used for the low-level routines, enabling
high performance. Key Features of PyWavelets are:

  • 1D, 2D and nD Forward and Inverse Discrete Wavelet Transform (DWT and IDWT)
  • 1D, 2D and nD Multilevel DWT and IDWT
  • 1D and 2D Forward and Inverse Stationary Wavelet Transform
  • 1D and 2D Wavelet Packet decomposition and reconstruction
  • 1D Continuous Wavelet Transform
  • When multiple valid implementations are available, we have chosen to maintain consistency with |MATLAB|'s Wavelet Toolbox.

PyWavelets 0.5.0 is the culmination of 1 year of work. In addition to
several new features, substantial refactoring of the underlying C and Cython
code have been made.

This release requires Python 2.6, 2.7 or 3.3-3.5 and NumPy 1.9.1 or greater.
This will be the final release supporting Python 2.6 and 3.3.

Highlights of this release include:

  • 1D continuous wavelet transforms
  • new discrete wavelets added (additional Debauchies and Coiflet wavelets)
  • new 'reflect' extension mode for discrete wavelet transforms
  • faster performance for multilevel forward stationary wavelet transforms (SWT)
  • n-dimensional support added to forward SWT
  • routines to convert multilevel DWT coefficients to and from a single array
  • axis support for multilevel DWT
  • substantial refactoring/reorganization of the underlying C and Cython code

New features

1D Continous Wavelet Transforms

A wide range of continous wavelets are now available. These include the
following:

  • Gaussian wavelets (gaus1...gaus8)
  • Mexican hat wavelet (mexh)
  • Morlet wavelet (morl)
  • Complex Gaussian wavelets (cgau1...cgau8)
  • Shannon wavelet (shan)
  • Frequency B-Spline wavelet (fbsp)
  • Complex Morlet wavelet (cmor)

Also, see the new CWT-related demo: demo/cwt_analysis.py

New discrete wavelets

Additional Debauchies wavelets (db20...db38) and Coiflets
(coif6...coif17) have been added.

New extension mode: reflect

Discrete wavelet transforms support a new extension mode, reflect. This
mode pads an array symmetrically, but without repeating the edge value. As an
example::

 pad      array      pad
4 3 2 | 1 2 3 4 5 | 4 3 2

This differs from symmetric, which repeats the values at the boundaries::

 pad      array      pad
3 2 1 | 1 2 3 4 5 | 5 4 3

Multilevel DWT Coefficient Handling

New routines to convert the coefficients returned by multilevel DWT routines
to and from a single n-dimensional array have been added.
pywt.coeffs_to_array concatenates the output of wavedec, wavedec2
or wavedecn into a single numpy array. pywt.array_to_coeffs can be
used to transform back from a single coefficient array to a format appropriate
for waverec, waverec2 or waverecn.

More C function calls release the GIL

Cython code calling the wavelet filtering routines (DWT and SWT) now releases
the global interpreter lock (GIL) where possible. A potential use case is in
speeding up the batch computation of several large DWTs using multi-threading
(e.g. via concurrent.futures).

Multilevel wavelet transforms along specific axes

The axis specific transform support introduced in the prior release was
extended to the multilevel DWT transforms. All wavedec* and waverec*
routines have a new axis (1D) or axes (2D, nD) keyword argument. If
unspecified the default behaviour is to transform all axes of the input.

Faster multilevel stationary wavelet transforms

Stationary wavelet transforms are now faster when the number of levels is
greater than one. The improvement can be very large (multiple orders of
magnitude) for transforms with a large number of levels.

Deprecated features

Backwards incompatible changes

A FutureWarning was added to swt2 and iswt2 to warn about a pending
backwards incompatible change to the order of the coefficients in the list
returned by these routines. The actual change will not occur until the next
release. Transform coefficients will be returned in descending rather than
ascending order. This change is being made for consistency with all other
existing multi-level transforms in PyWavelets.

Bugs Fixed

demo/image_blender.py was updated to support the new api of Pillow 3.x

A bug related to size of assumed size_t on some platforms/compilers
(e.g. Windows with mingw64) was fixed.

Fix to memory leak in (i)dwt_axis

Fix to a performance regression in idwt and iswt that was introduced
in v0.4.0.

Fixed a bug in dwtn and idwtn for data with complex dtype when
axes != None.

Other changes

The minimum supported numpy version has been increased to 1.9.1.

Test coverage (including for the Cython and C code) via
Codecov <https://codecov.io/>_ was added and the overall test coverage has
been improved.

A substantial overhaul of the C extension code has been performed. Custom
templating is no longer used. The intention is to make this code easier to
maintain and expand in the future.

The Cython code has been split out into a multiple files to hopefully make
relevant portions of the wrappers easier to find for future developers.

setup.py now relies on setuptools in all cases (rather than distutils).

Authors

  • Jonathan Dan +
  • Ralf Gommers
  • David Menéndez Hurtado
  • Gregory R. Lee
  • Holger Nahrstaedt +
  • Daniel M. Pelt +
  • Alexandre Saint +
  • Scott Sievert +
  • Kai Wohlfahrt
  • Frank Yu +

A total of 10 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: see here

Pull requests merged in this release: see here

Downloads

PyWavelets v0.4.0

@grlee77 grlee77 released this Dec 28, 2015 · 440 commits to master since this release

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: see here

Pull requests merged in this release: see here

Downloads

PyWavelets v0.3.0

@rgommers rgommers released this Jul 30, 2015 · 782 commits to master since this release

PyWavelets 0.3.0 Release Notes

PyWavelets 0.3.0 is the first release of the package in 3 years. It is the
result of a significant effort of a growing development team to modernize the
package, to provide Python 3.x support and to make a start with providing new
features as well as improved performance. A 0.4.0 release will follow
shortly, and will contain more significant new features as well as
changes/deprecations 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:

  • Support for Python 3.x (>=3.3)
  • Added a test suite (based on nose, coverage up to 61% so far)
  • Maintenance work: C style complying to the Numpy style guide, improved
    templating system, more complete docstrings, pep8/pyflakes compliance, and
    more.

New features

Test suite

The test suite can be run with nosetests pywt or with::

>>> import pywt
>>> pywt.test()

n-D Inverse Discrete Wavelet Transform

The function pywt.idwtn, which provides n-dimensional inverse DWT, has been
added. It complements idwt, idwt2 and dwtn.

Thresholding

The function pywt.threshold has been added. It unifies the four thresholding
functions that are still provided in the pywt.thresholding namespace.

Backwards incompatible changes

None in this release.

Other changes

Development has moved to a new repo <https://github.com/PyWavelets/pywt>_.
Everyone with an interest in wavelets is welcome to contribute!

Building wheels, building with python setup.py develop and many other
standard ways to build and install PyWavelets are supported now.

Authors

  • Ankit Agrawal +
  • François Boulogne +
  • Ralf Gommers +
  • David Menéndez Hurtado +
  • Gregory R. Lee +
  • David McInnis +
  • Helder Oliveira +
  • Filip Wasilewski
  • Kai Wohlfahrt +

A total of 9 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: see here

Pull requests merged in this release: see here

Downloads