Skip to content

Commit

Permalink
Merge pull request #484 from grlee77/joss_release
Browse files Browse the repository at this point in the history
archive reviewed JOSS text to 1.0.x and add 1.0.3 release notes
  • Loading branch information
rgommers authored Apr 8, 2019
2 parents b96bac5 + 1889f86 commit 1c12f25
Show file tree
Hide file tree
Showing 4 changed files with 211 additions and 0 deletions.
106 changes: 106 additions & 0 deletions doc/paper/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@


@Book{mallat2008wavelet,
title = {A wavelet tour of signal processing: the sparse way},
author = {Mallat, Stéphane},
year = {2008},
publisher = {Academic press}
}

@book{Daubechies1992,
author = {Daubechies, Ingrid},
title = {Ten Lectures on Wavelets},
year = {1992},
isbn = {0-89871-274-2},
publisher = {Society for Industrial and Applied Mathematics},
address = {Philadelphia, PA, USA},
doi = {10.1137/1.9781611970104},
url = {https://doi.org/10.1137/1.9781611970104}
}

@Article{cython,
author = {S. Behnel and R. Bradshaw and C. Citro and L. Dalcin and D. S. Seljebotn and K. Smith},
journal = {Computing in Science Engineering},
title = {Cython: The Best of Both Worlds},
year = {2011},
volume = {13},
number = {2},
pages = {31-39},
keywords = {C language;numerical analysis;Python language extension;Fortran code;numerical loops;Cython language;programming language;Sparse matrices;Runtime;Syntactics;Computer programs;Programming;Python;Cython;numerics;scientific computing},
doi = {10.1109/MCSE.2010.118},
ISSN = {1521-9615},
month = {March},}

@Article{scikit-image,
title = {scikit-image: image processing in {P}ython},
author = {van der Walt, {S}t\'efan and {S}ch\"onberger, {J}ohannes {L}. and
{Nunez-Iglesias}, {J}uan and {B}oulogne, {F}ran\c{c}ois and {W}arner,
{J}oshua {D}. and {Y}ager, {N}eil and {G}ouillart, {E}mmanuelle and
{Y}u, {T}ony and the scikit-image contributors},
year = {2014},
month = {6},
keywords = {Image processing, Reproducible research, Education,
Visualization, Open source, Python, Scientific programming},
volume = {2},
pages = {e453},
journal = {PeerJ},
issn = {2167-8359},
url = {http://dx.doi.org/10.7717/peerj.453},
doi = {10.7717/peerj.453}
}

@article{kymatio,
author = {Mathieu Andreux and
Tom{\'{a}}s Angles and
Georgios Exarchakis and
Roberto Leonarduzzi and
Gaspar Rochette and
Louis Thiry and
John Zarka and
St{\'{e}}phane Mallat and
Joakim And{\'{e}}n and
Eugene Belilovsky and
Joan Bruna and
Vincent Lostanlen and
Matthew J. Hirn and
Edouard Oyallon and
Sixhin Zhang and
Carmine{-}Emanuele Cella and
Michael Eickenberg},
title = {Kymatio: Scattering Transforms in Python},
journal = {CoRR},
volume = {abs/1812.11214},
year = {2018},
url = {http://arxiv.org/abs/1812.11214},
archivePrefix = {arXiv},
eprint = {1812.11214},
timestamp = {Wed, 02 Jan 2019 14:40:18 +0100},
biburl = {https://dblp.org/rec/bib/journals/corr/abs-1812-11214},
bibsource = {dblp computer science bibliography, https://dblp.org}
}

@Misc{odl,
author = {Jonas Adler and
Holger Kohr and
Axel Ringh and
Julian Moosmann and
Sebastian Banert and
Matthias J. Ehrhardt and
Gregory R. Lee and
niinimaki and
bgris and
Olivier Verdier and
Johan Karlsson and
zickert and
Willem Jan Palenstijn and
\"Oktem Ozan and
Chong Chen and
Hector Andrade Loarca and
Michael Lohmann},
title = {odlgroup/odl: ODL 0.7.0},
month = sep,
year = 2018,
doi = {10.5281/zenodo.1442734},
url = {https://doi.org/10.5281/zenodo.1442734}
}
TODO: determine real name for bgris, zickert, niinimaki
96 changes: 96 additions & 0 deletions doc/paper/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: 'PyWavelets: A Python package for wavelet analysis'
tags:
- Python
- wavelets
- wavelet packets
- discrete wavelet transform
- continuous wavelet transform
- computational harmonic analysis
authors:
- name: Gregory R. Lee
orcid: 0000-0001-8895-2740
affiliation: "1, 2" # (Multiple affiliations must be quoted)
- name: Ralf Gommers
orcid: 0000-0002-0300-3333
affiliation: "3, 4"
- name: Filip Waselewski
orcid: 0000-0003-0729-5879
affiliation:
- name: Kai Wohlfahrt
orcid: 0000-0002-0970-5539
affiliation: 5
- name: Aaron O'Leary
orcid: 0000-0003-1984-2323
affiliation:
affiliations:
- name: Department of Radiology, Cincinnati Children's Hospital Medical Center, Cincinnati, OH, USA
index: 1
- name: Department of Radiology, University of Cincinnati School of Medicine, Cincinnati, OH, USA
index: 2
- name: Scion, 49 Sala Street, Private Bag 3020, Rotorua 3046, New Zealand
index: 3
- name: FPInnovations, 2665 East Mall, Vancouver, BC V6T 1Z4, Canada
index: 4
- name: Department of Biochemistry, University of Cambridge, Old Addenbrookes Site, 80 Tennis Court Road, Cambridge, CB2 1GA, United Kingdom
index: 5

date: 24 August 2018
bibliography: paper.bib
---

# Summary

Wavelets are a popular tool for computational harmonic analysis. They provide
localization in both the temporal (or spatial) domain as well as in the
frequency domain [@Daubechies1992]. A prominent feature is the ability to
perform a multiresolution analysis [@mallat2008wavelet]. The wavelet transform
of natural signals and images tends to have most of its energy concentrated in
a small fraction of the coefficients. This sparse representation property is
key to the good performance of wavelets in applications such as data
compression and denoising. For example, the wavelet transform is a key
component of the JPEG 2000 image compression standard.

``PyWavelets`` is a Python package implementing a number of n-dimensional
discrete wavelet transforms as well as the 1D continuous wavelet transform. A
wide variety of predefined wavelets are provided and it is possible for users
to specify custom wavelet filter banks. All discrete wavelet transforms are
implemented by convolution with finite impulse response filters. The required
up/downsampling convolutions are implemented in C for good performance.
Cython [@cython] is used to wrap the C code and implement axis-specific 1D
transformations based on the low-level C routines. All multi-dimensional
transforms are implemented in Python via separable application of the 1D
transforms. The API for ``PyWavelets`` was designed to be similar to Matlab's
wavelet toolbox and functions such as the 1D, 2D and 3D discrete wavelet
transforms are tested for accuracy vs. their Matlab counterparts. PyWavelets
has additional functionality not common in other wavelet toolboxes such as
support for dimension $n > 3$ and support for both real and complex-valued
data in either single or double precision. It is also possible to transform
only a subset of axes and to vary the wavelet and signal boundary extension
mode on a per-axis basis.

``PyWavelets`` was designed for use by scientists working within a range of
applications including time-series analysis, signal processing, image
processing and medical imaging. It has already been adopted as a required
or optional dependency by a number of other software projects. For example,
it has enabled wavelet-based image denoising in scikit-image [@scikit-image].
The Operator Discretization Library (ODL) [@odl] uses PyWavelets to enable
wavelet-based regularization in iterative inverse problems such as computed
tomography image reconstruction. Another related package which is independent
of ``PyWavelets`` is Kymatio, which implements the wavelet scattering
transform in 1D-3D [@kymatio]. The current implementation in Kymatio uses
non-separable 2D and 3D wavelets defined in the frequency domain and is well
suited to signal classification tasks, but does not have a simple inverse
transform like the standard discrete wavelet transform.

A number of common 1D demo signals used in the literature and in the manuscript
by Stephan Mallat [-@mallat2008wavelet] are provided for use in teaching and for
purposes of reproducible research.

# Acknowledgements

We would to acknowledge the various PyWavelets contributors for their
contributions to the library, and specifically Holger Nahrstaedt for
contributing a continuous wavelet transform.

# References
8 changes: 8 additions & 0 deletions doc/release/1.0.3-notes.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
==============================
PyWavelets 1.0.3 Release Notes
==============================

PyWavelets 1.0.3 is functionally equivalent to the 1.0.2 release. It was made
to add the add an archive of the JOSS paper to the 1.0.x branch and serve as a
reference corresponding to the version of the software reviewed that was peer
reviewed.
1 change: 1 addition & 0 deletions doc/source/releasenotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ Release Notes
release.1.0.0
release.1.0.1
release.1.0.2
release.1.0.3

0 comments on commit 1c12f25

Please sign in to comment.