Skip to content

Commit d02f186

Browse files
pavelkomarovclaude
andcommitted
paper: add Maria Protogerou and the wavelet differentiation method
Add Maria Protogerou (UW Applied Mathematics) as an author, list wavelet fitting under method family (4), add the waveletdiff capability-table row, and credit PyWavelets among the delegated dependencies. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 4e7d894 commit d02f186

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

paper/paper.bib

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,14 @@ @article{pysindy
154154
pages = {2104},
155155
doi = {10.21105/joss.02104}
156156
}
157+
158+
@article{lee2019pywavelets,
159+
author = {Gregory R. Lee and Ralf Gommers and Filip Wasilewski and Kai Wohlfahrt and Aaron O'Leary},
160+
title = {{PyWavelets}: A {Python} package for wavelet analysis},
161+
journal = {Journal of Open Source Software},
162+
year = {2019},
163+
volume = {4},
164+
number = {36},
165+
pages = {1237},
166+
doi = {10.21105/joss.01237}
167+
}

paper/paper.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ authors:
1313
affiliation: 1
1414
- name: Floris van Breugel
1515
affiliation: 2
16+
- name: Maria Protogerou
17+
affiliation: 4
1618
- name: J. Nathan Kutz
1719
affiliation: 3
1820
affiliations:
@@ -22,6 +24,8 @@ affiliations:
2224
index: 2
2325
- name: Autodesk Research, London, UK
2426
index: 3
27+
- name: Department of Applied Mathematics, University of Washington, USA
28+
index: 4
2529
date: 1 April 2026
2630
bibliography: paper.bib
2731
---
@@ -30,7 +34,7 @@ bibliography: paper.bib
3034

3135
Derivatives of measured data are a prerequisite across science and engineering: identifying governing equations, designing controllers, and processing sensor streams alike. The textbook remedy, finite differencing, amplifies noise as $1/\Delta t$ and deteriorates rapidly as data grows noisier or more finely sampled. Smoothing before differencing helps, but algorithm choice and tuning substantially affect the result, and no single approach wins universally.
3236

33-
PyNumDiff is an open-source Python package consolidating a broad suite of numerical differentiation methods under a unified API. Seven algorithm families are implemented: (1) prefiltering followed by finite difference calculation; (2) iterated finite differencing; (3) polynomial fitting [@savitzky1964]; (4) spectral and radial basis function fitting; (5) total variation regularization [@chartrand2011numerical]; (6) Kalman smoothing [@kalman1960; @rauch1965]; and (7) local approximation with linear models. @ahnert2007 provides a useful taxonomy of these families, distinguishing local methods (which estimate derivatives from a surrounding window) from global methods that fit the entire signal at once. All PyNumDiff methods return a matched pair `(x_hat, dxdt_hat)`. A companion paper [@komarov2025] benchmarks all methods across test signals and guides selection for different application scenarios.
37+
PyNumDiff is an open-source Python package consolidating a broad suite of numerical differentiation methods under a unified API. Seven algorithm families are implemented: (1) prefiltering followed by finite difference calculation; (2) iterated finite differencing; (3) polynomial fitting [@savitzky1964]; (4) spectral, radial basis function, and wavelet fitting; (5) total variation regularization [@chartrand2011numerical]; (6) Kalman smoothing [@kalman1960; @rauch1965]; and (7) local approximation with linear models. @ahnert2007 provides a useful taxonomy of these families, distinguishing local methods (which estimate derivatives from a surrounding window) from global methods that fit the entire signal at once. All PyNumDiff methods return a matched pair `(x_hat, dxdt_hat)`. A companion paper [@komarov2025] benchmarks all methods across test signals and guides selection for different application scenarios.
3438

3539

3640
# Statement of Need
@@ -57,7 +61,7 @@ x_hat, dxdt_hat = method(x, dt_or_t, **params)
5761

5862
where `x` is a NumPy array [@harris2020array] of measurements; `dt_or_t` is either a scalar step size or an array of sample locations; and keyword arguments configure the method. Explicit keyword arguments make calls self-documenting; prior positional signatures are preserved with deprecation warnings.
5963

60-
**Software architecture.** PyNumDiff is organized into seven method modules plus shared `utils` and `optimize` modules, a flat structure chosen for discoverability. Where strong alternatives exist, PyNumDiff delegates rather than reimplements: SciPy [@virtanen2020scipy] provides spline fitting, Savitzky-Golay filtering, and signal processing routines; NumPy [@harris2020array] provides the FFT; CVXPY [@diamond2016cvxpy] handles convex optimization for `robustdiff` and `tvrdiff`, as an optional dependency, keeping the base installation lightweight. The `kalman_filter` and `rts_smooth` primitives are public, letting users with known dynamical models bypass the assumed constant-derivative model of `rtsdiff`; an `innovation_fn` hook extends the filter to non-Euclidean spaces.
64+
**Software architecture.** PyNumDiff is organized into seven method modules plus shared `utils` and `optimize` modules, a flat structure chosen for discoverability. Where strong alternatives exist, PyNumDiff delegates rather than reimplements: SciPy [@virtanen2020scipy] provides spline fitting, Savitzky-Golay filtering, and signal processing routines; NumPy [@harris2020array] provides the FFT; PyWavelets [@lee2019pywavelets] provides the discrete wavelet transform for `waveletdiff`; CVXPY [@diamond2016cvxpy] handles convex optimization for `robustdiff` and `tvrdiff`, as an optional dependency, keeping the base installation lightweight. The `kalman_filter` and `rts_smooth` primitives are public, letting users with known dynamical models bypass the assumed constant-derivative model of `rtsdiff`; an `innovation_fn` hook extends the filter to non-Euclidean spaces.
6165

6266
**Method capabilities.** All non-deprecated methods support multidimensional data via `axis`; Table 1 lists additional specialized capabilities.
6367

@@ -70,6 +74,7 @@ where `x` is a NumPy array [@harris2020array] of measurements; `dt_or_t` is eith
7074
| `splinediff` | $\checkmark$ | $\checkmark$ | | |
7175
| `spectraldiff` | | | | |
7276
| `rbfdiff` | $\checkmark$ | | | |
77+
| `waveletdiff` | | | | |
7378
| `tvrdiff` | | | $\checkmark$ | |
7479
| `rtsdiff` | $\checkmark$ | $\checkmark$ | | $\checkmark$ |
7580
| `robustdiff` | $\checkmark$ | $\checkmark$ | $\checkmark$ | |

0 commit comments

Comments
 (0)