EWDM
EWDM: A wavelet-based method for estimating directional spectra of ocean waves - Published in JOSS (2025)
Science Score: 98.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 11 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Scientific Fields
Repository
Python toolkit for estimating directional wave spectra of ocean waves based on wavelet transform
Basic Info
- Host: GitHub
- Owner: dspelaez
- License: gpl-3.0
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://extended-wdm.readthedocs.io/
- Size: 5.02 MB
Statistics
- Stars: 12
- Watchers: 1
- Forks: 4
- Open Issues: 0
- Releases: 4
Topics
Metadata Files
README.md

EWDM: Extended Wavelet Directional Method
Welcome to the GitHub repository for the Extended Wavelet Directional Method (EWDM) - a toolkit for estimating directional spectra of ocean waves using the Continuous Wavelet Transform (CWT).
This package implements the algorithms of the original WDM proposed by Donelan et al. (1985) that are suitable for spatially-distributed arrays of wave staffs; as well as the algorithms presented by Peláez-Zapata et al. (2024) for single-point triplets of wave-induced displacements, velocities, accelerations or slopes (see also Krogstad et al., 2006).
Therefore, EWDM allows the estimation of the directional wave spectrum for a variety of sources, including GPS-based buoys, pitch-roll-heave buoys, acoustic Doppler current profilers (ADCPs) and sampled points from stereo-imaging recordings.
Key features of the EWDM include:
- Implementation of the wavelet-based algorithms for extracting directional information from wave time series.
- Tools for processing and visualising directional wave data.
- Powered by
xarraylabelled multi-dimensional arrays. - Helper functions to handle commonly used data sources such as Spotter buoys and CDIP.
- Documentation, examples, and comparison with conventional methods.
Whether you are a researcher, student, or engineer in physical oceanography, EWDM provides a powerful, user-friendly toolkit for in-depth analysis of directional ocean wave spectra. We welcome contributions, feedback, and collaboration from the community to further enhance the capabilities of EWDM.
Getting Started
Installation
Stable release
You can install EWDM using pip. First, make sure you have Python 3.8 or higher installed.
bash
pip install ewdm
This is the preferred method to install EWDM, as it will always install the most recent stable release.
If you don't have pip installed, these Python installation instructions can guide
you through the process.
From sources
The sources for EWDM can be downloaded from the Github repo.
You can either clone the public repository:
bash
git clone git://github.com/dspelaez/extended-wdm
Or download the tarball:
bash
curl -OJL https://github.com/dspelaez/extended-wdm/tarball/master
Once you have a copy of the source, you can install it with:
bash
python setup.py install
Or using pip:
bash
pip install .
Running tests
To install the necessary packages for development and testing, you can run the following command:
bash
pip install -e '.[test]'
To run the tests, you can use the pytest framework by executing the following command:
bash
pytest tests
Usage
After installation, you can import and use the ewdm package in your Python code:
python
import ewdm
Quick example
This example uses a CDIP buoy time series of wave-induced displacements to estimate the directional wave spectrum.
```python import numpy as np import xarray as xr from matplotlib import pyplot as plt
import ewdm from ewdm.sources import CDIPDataSourceRealTime from ewdm.plots import plotdirectionalspectrum plt.ion()
cdip = CDIPDataSourceRealTime(166) dataset = cdip.readdataset(timestart='2024-06-09T08:30') spec = ewdm.Triplets(dataset) output = spec.compute()
fig, ax = plt.subplots() plotdirectionalspectrum( output["directional_spectrum"], ax=ax, levels=None ) ```
This will produce a plot like this:

Further examples
For a curated collection of examples, please refer to the Gallery in the documentation.
Related projects
Several tools complement the functionality of EWDM in the analysis of ocean wave data. Some of the most relevant projects are:
WAFOprovides advanced statistical and engineering analysis of wave fields and wave-induced loads.FOWDoffers a rich dataset of wave parameters tailored for machine learning applications. It also provides routines to compute frequently used wave parameters.DIWASPimplements classical Fourier-based methods for directional spectrum estimation.Special mention to modern Python packages like
wavespectraandoceanwaves-python, that support spectral data manipulation and visualization. While these tools do not estimate directional spectra from raw measurements, they can be integrated with EWDM to enhance wave data processing workflows.
How to cite this work
If you find this software useful, please cite it using the DOI: 10.21105/joss.07942 or copy the following bibtex entry:
@article{Pelaez-Zapata2025,
doi = {10.21105/joss.07942},
url = {https://doi.org/10.21105/joss.07942},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {109},
pages = {7942},
author = {Daniel Peláez-Zapata and Frédéric Dias},
title = {EWDM: A wavelet-based method for estimating directional spectra of ocean waves},
journal = {Journal of Open Source Software}
}
How to contribute
EWDM is an open-source package and we welcome feedback and contributions.
You can open an issue in the GitHub issues page if you:
- find a bug in the package;
- need some new features;
- want some supports;
- show your own examples.
Please refer to the Contributing guide in the documentation for further information.
Owner
- Name: Daniel Peláez Zapata
- Login: dspelaez
- Kind: user
- Location: Paris
- Company: UCD/ENS
- Website: dspelaez.github.io
- Repositories: 34
- Profile: https://github.com/dspelaez
Postdoctoral researcher at ENS Paris-Saclay. I study how the atmosphere and the ocean interact, focusing on the role of ocean surface waves.
JOSS Publication
EWDM: A wavelet-based method for estimating directional spectra of ocean waves
Authors
Tags
python physical oceanography ocean surface waves directional wave spectra continuous wavelet transformCitation (CITATION.cff)
cff-version: 1.2.0
title:
EWDM: A wavelet-based method for estimating directional spectra of ocean waves
message: 'If you use this software, please cite it as below.'
type: software
authors:
- family-names: Peláez-Zapata
given-names: Daniel
orcid: 'https://orcid.org/0000-0001-5862-6194'
affiliation: ENS Paris-Saclay
- family-names: Dias
given-names: Frédéric
orcid: 'https://orcid.org/0000-0002-5123-4929'
affiliation: ENS Paris-Saclay
identifiers:
- type: doi
value: 10.21105/joss.07942
repository-code: 'https://github.com/dspelaez/extended-wdm'
url: 'https://extended-wdm.readthedocs.io/'
keywords:
- ocean waves
- wavelets
- directional wave spectrum
version: 1.1
date-released: '2025-05-02'
GitHub Events
Total
- Create event: 1
- Release event: 1
- Issues event: 10
- Watch event: 9
- Issue comment event: 7
- Push event: 51
- Pull request event: 5
- Fork event: 3
Last Year
- Create event: 1
- Release event: 1
- Issues event: 10
- Watch event: 9
- Issue comment event: 7
- Push event: 51
- Pull request event: 5
- Fork event: 3
Committers
Last synced: 4 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Daniel Pelaez-Zapata | d****a@e****r | 57 |
| Daniel Pelaez Zapata | d****z@g****m | 50 |
| Daniel Pelaez-Zapata | d****a@p****e | 10 |
| Romain Caneill | r****l@e****g | 3 |
| yangleir | y****r@q****m | 1 |
| miniufo | m****o@1****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 7
- Total pull requests: 3
- Average time to close issues: 10 days
- Average time to close pull requests: 28 days
- Total issue authors: 2
- Total pull request authors: 3
- Average comments per issue: 1.43
- Average comments per pull request: 1.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 7
- Pull requests: 3
- Average time to close issues: 10 days
- Average time to close pull requests: 28 days
- Issue authors: 2
- Pull request authors: 3
- Average comments per issue: 1.43
- Average comments per pull request: 1.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- rcaneill (5)
- miniufo (2)
Pull Request Authors
- rcaneill (2)
- miniufo (2)
- yangleir (2)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- sphinx ==7.3.7
- sphinx-rtd-theme ==2.0.0
- matplotlib *
- numpy *
- scipy *
- tqdm *
- xarray *
