Pywavelets

Latest version: v1.8.0

Safety actively analyzes 688917 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 4

1.0.2

compared to 1.0.1.

Bugs Fixed
==========

A bug in `iswtn` when using some combinations of user-specified axes was fixed.

A potential error related to coefficient shape mismatch during WaveletPacket
or WaveletPacket2D reconstruction was fixed.

Other Changes
=============

A deprecated import of ``Iterable`` was fixed.

The spelling of "Garrote" was fixed in the wavelet thresholding documentation. For backwards compatibility with 1.0.0, the incorrect ("garotte") spelling is also accepted for the ``mode`` parameter of ``pywt.threshold``.

The spelling of "supported" was fixed in one of the ValueError messages that can be returned by ``pywt.cwt``.

Cython language compatibility has been pinned to ``language_level = '2'``. This is in contrast to the `master` branch which is now using ``language_level = '3'``. To support this, the minimum supported Cython version
has been raised to 0.23.5.

1.0.1

PyWavelets 1.0.1 is a bug-fix release with no new features compared to 1.0.0.


Bugs Fixed
==========

Key-based assignment of coefficients to a ``FswavedecnResult`` object (i.e. via
its __setitem__ method) has been fixed.

The order that the individual subband coefficients were stacked by the
function ``pywt.ravel_coeffs`` is now guaranteed to be consistent across all
supported Python versions. Explicit alphabetic ordering of subband coefficient
names is used for consitent ordering regardless of Python version.

1.0.0

==============================

We are very pleased to announce the release of PyWavelets 1.0. We view this version number as a milestone in the project's now more than a decade long history. It reflects that PyWavelets has stabilized over the past few years, and is now a mature package which a lot of other important packages depend on. A listing of those package won't be complete, but some we are aware of are:

- [scikit-image](https://scikit-image.org) - image processing in Python
- [imagehash](https://github.com/JohannesBuchner/imagehash) - perceptual image hashing
- [pyradiomics](https://github.com/Radiomics/pyradiomics) - extraction of Radiomics features from 2D and 3D images and binary masks
- [tomopy](https://github.com/tomopy/tomopy) - Tomographic Reconstruction in Python
- [SpikeSort](https://github.com/btel/SpikeSort) - Spike sorting library implemented in Python/NumPy/PyTables
- [ODL](https://github.com/odlgroup/odl) - operator discretization library

This release requires Python 2.7 or >=3.5 and NumPy 1.9.1 or greater. The 1.0 release will be the last release supporting Python 2.7. It will be a Long Term Support (LTS) release, meaning that we will backport critical bug
fixes to 1.0.x for as long as Python itself does so (i.e. until 1 Jan 2020).

New features
============

New 1D test signals
-------------------
Many common synthetic 1D test signals have been implemented in the new function ``pywt.data.demo_signals`` to encourage reproducible research. To get a list of the available signals, call ``pywt.data.demo_signals('list')``.
These signals have been validated to match the test signals of the same name from the [Wavelab](https://statweb.stanford.edu/~wavelab) toolbox (with the kind permission of Dr. David Donoho).

C99 complex support
-------------------
The Cython modules and underlying C library can now be built with C99 complex support when supported by the compiler. Doing so improves performance when running wavelet transforms on complex-valued data. On POSIX systems (Linux, Mac OS X), C99 complex support is enabled by default at build time. The user can set the environment variable ``USE_C99_COMPLEX`` to 0 or 1 to manually disable or enable C99 support at compile time.

complex-valued CWT
------------------
The continuous wavelet transform, ``cwt``, now also accepts complex-valued data.

More flexible specification of some continuous wavelets
-------------------------------------------------------
The continous wavelets ``"cmor"``, ``"shan"`` and ``"fbsp"`` now let the user specify attributes such as their center frequency and bandwidth that were previously fixed. See more on this in the section on deprecated features.

Fully Separable Discrete Wavelet Transfrom
------------------------------------------
A new variant of the multilevel n-dimensional DWT has been implemented. It is known as the fully separable wavelet transform (FSWT). The functions ``fswavedecn`` ``fswaverecn`` correspond to the forward and inverse transforms, respectively. This differs from the existing ``wavedecn`` and ``waverecn`` in dimensions >= 2 in that all levels of decomposition are performed along a single axis prior to moving on to the next.

New thresholding methods
------------------------
``pywt.threshold`` now supports non-negative Garotte thresholding (``mode='garotte'``). There is also a new function ``pywt.threshold_firm`` that implements firm (semi-soft) thresholding. Both of the these new thresholding methods are intermediate between soft and hard thresholding.

New anti-symmetric boundary modes
---------------------------------
Two new boundary handling modes for the discrete wavelet transforms have been implemented. These correspond to whole-sample and half-sample anti-symmetric boundary conditions (``antisymmetric`` and ``antireflect``).

New functions to ravel and unravel wavedecn coefficients
--------------------------------------------------------
The function ``ravel_coeffs`` can be used to ravel all coefficients from ``wavedec``, ``wavedec2`` or ``wavedecn`` into a single 1D array. Unraveling back into a list of individual n-dimensional coefficients can be performed by
``unravel_coeffs``.

New functions to determine multilevel DWT coefficient shapes and sizes
----------------------------------------------------------------------
The new function ``wavedecn_size`` outputs the total number of coefficients that will be produced by a ``wavedecn`` decomposition. The function ``wavedecn_shapes`` returns full shape information for all coefficient arrays produced by ``wavedecn``. These functions provide the size/shape information without having to explicitly compute a transform.

Deprecated features
===================

The continous wavelets with names ``"cmor"``, ``"shan"`` and ``"fbsp"`` should now be modified to include formerly hard-coded attributes such as their center frequency and bandwidth. Use of the bare names "cmor". "shan" and "fbsp" is now deprecated. For "cmor" (and "shan"), the form of the wavelet name is now "cmorB-C" ("shanB-C") where B and C are floats representing the bandwidth frequency and center frequency. For "fbsp" the form should now incorporate three floats as in "fbspM-B-C" where M is the spline order and B and C are the bandwidth and center frequencies.


Backwards incompatible changes
==============================

Python 2.6, 3.3 and 3.4 are no longer supported.

The order of coefficients returned by ``swt2`` and input to ``iswt2`` have been reversed so that the decomposition levels are now returned in descending rather than ascending order. This makes these 2D stationary wavelet functions consistent with all of the other multilevel discrete transforms in PyWavelets.

For ``wavedec``, ``wavedec2`` and ``wavedecn``, the ability for the user to specify a ``level`` that is greater than the value returned by ``dwt_max_level`` has been restored. A ``UserWarning`` is raised instead of a ``ValueError`` in this case.

Bugs Fixed
==========

Assigning new data to the ``Node`` or ``Node2D`` no longer forces a cast to ``float64`` when the data is one of the other dtypes supported by the dwt (``float32``, ``complex64``, ``complex128``).

Calling ``pywt.threshold`` with ``mode='soft'`` now works properly for complex-valued inputs.

A segfault when running multiple `swt2` or `swtn` transforms concurrently has been fixed.

Several instances of deprecated numpy multi-indexing that caused warnings in numpy >=1.15 have been resolved.

The 2d inverse stationary wavelet transform, `iswt2`, now supports non-square inputs (an unnecessary check for square inputs was removed).

Wavelet packets no longer convert float32 to float64 upon assignment to nodes.

Doctests have been updated to also work with NumPy >= 1.14,

Indexing conventions have been updated to avoid FutureWarnings in NumPy 1.15.


Other changes
=============

Python 3.7 is now officially supported.


Authors
=======

* 0-tree +
* Jacopo Antonello +
* Matthew Brett +
* Saket Choudhary +
* Michael V. DePalatis +
* Daniel Goertzen +
* Ralf Gommers
* Mark Harfouche +
* John Kirkham +
* Dawid Laszuk +
* Gregory R. Lee
* Michel Pelletier +
* Balint Reczey +
* SylvainLan +
* Daniele Tricoli
* Kai Wohlfahrt

A total of 16 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.

0.5.2

==============================

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


Bugs Fixed
==========

The ``pywt.data.nino`` data reader is now compatible with numpy 1.12. (273)

The ``wp_scalogram.py`` demo is now compatibile with matplotlib 2.0. (276)

Fixed a sporadic segmentation fault affecting stationary wavelet transforms of
multi-dimensional data. (289)

``idwtn`` now treats coefficients set to None to be treated as zeros (291).
This makes the behavior consistent with its docstring as well as idwt2.
Previously this raised an error.

The tests are now included when installing from wheels or when running
``python setup.py install``. (292)

A bug leading to a potential ``RuntimeError`` was fixed in ``waverec``.
This bug only affected transforms where the data was >1D and the transformed
axis was not the first axis of the array. (294).

Authors
=======

* Ralf Gommers
* Gregory R. Lee

0.5.1

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`.

0.5.0

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](https://github.com/PyWavelets/pywt/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av0.5.0)

Pull requests merged in this release: see [here](https://github.com/PyWavelets/pywt/pulls?q=is%3Apr+is%3Aclosed+milestone%3Av0.5.0)

Page 3 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.