{"id":33148830,"url":"https://github.com/dspelaez/extended-wdm","last_synced_at":"2025-11-30T02:01:09.302Z","repository":{"id":246003311,"uuid":"819790869","full_name":"dspelaez/extended-wdm","owner":"dspelaez","description":"Python toolkit for estimating directional wave spectra of ocean waves based on wavelet transform","archived":false,"fork":false,"pushed_at":"2025-05-03T10:12:34.000Z","size":5260,"stargazers_count":14,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-27T12:53:41.602Z","etag":null,"topics":["adcps","directional-spectrum","spotter","wavelets","waves","wavestaffs","wdm"],"latest_commit_sha":null,"homepage":"https://extended-wdm.readthedocs.io/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dspelaez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-25T07:55:42.000Z","updated_at":"2025-11-04T00:55:27.000Z","dependencies_parsed_at":"2024-06-27T22:40:32.720Z","dependency_job_id":"fec0a4c1-a71b-44da-913c-2bd60b0696dd","html_url":"https://github.com/dspelaez/extended-wdm","commit_stats":null,"previous_names":["dspelaez/extended-wdm"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dspelaez/extended-wdm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dspelaez%2Fextended-wdm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dspelaez%2Fextended-wdm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dspelaez%2Fextended-wdm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dspelaez%2Fextended-wdm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dspelaez","download_url":"https://codeload.github.com/dspelaez/extended-wdm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dspelaez%2Fextended-wdm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27347672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-29T02:00:06.589Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adcps","directional-spectrum","spotter","wavelets","waves","wavestaffs","wdm"],"created_at":"2025-11-15T17:00:26.082Z","updated_at":"2025-11-30T02:01:09.295Z","avatar_url":"https://github.com/dspelaez.png","language":"Jupyter Notebook","funding_links":[],"categories":["Hydrosphere"],"sub_categories":["Waves and Currents"],"readme":"[![Documentation Status](https://readthedocs.org/projects/extended-wdm/badge/?version=latest)](https://extended-wdm.readthedocs.io/en/latest/?badge=latest)\n[![Python package](https://github.com/dspelaez/extended-wdm/actions/workflows/python-package.yml/badge.svg)](https://github.com/dspelaez/extended-wdm/actions/workflows/python-package.yml)\n[![PyPI version](https://badge.fury.io/py/ewdm.svg)](https://badge.fury.io/py/ewdm)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/dspelaez/extended-wdm/HEAD?labpath=notebooks)\n[![DOI](https://zenodo.org/badge/819790869.svg)](https://zenodo.org/doi/10.5281/zenodo.12805994)\n[![status](https://joss.theoj.org/papers/3b59fa36efc62a871bfd48acb056670d/status.svg)](https://joss.theoj.org/papers/3b59fa36efc62a871bfd48acb056670d)\n\n\u003cimg src=\"https://raw.githubusercontent.com/dspelaez/extended-wdm/main/docs/_static/logo.png\" width=\"400\"\u003e\n\n# EWDM: Extended Wavelet Directional Method\n\nWelcome 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).\n\nThis package implements the algorithms of the original WDM proposed by [Donelan et al. (1985)](10.1175/1520-0485(1996)026\u003c1901:naotdp\u003e2.0.co;2) that are suitable for spatially-distributed arrays of wave staffs; as well as the algorithms presented by [Peláez-Zapata et al. (2024)](https://doi.org/10.1175/JTECH-D-23-0058.1) for single-point triplets of wave-induced displacements, velocities, accelerations or slopes (see also [Krogstad et al., 2006](https://onepetro.org/IJOPE/article-abstract/28936/Wavelet-And-Local-Directional-Analysis-of-Ocean?redirectedFrom=fulltext)).\n\nTherefore, **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.\n\n\n**Key features** of the **EWDM** include:\n\n* Implementation of the wavelet-based algorithms for extracting directional\n  information from wave time series.\n* Tools for processing and visualising directional wave data.\n* Powered by `xarray` labelled multi-dimensional arrays.\n* Helper functions to handle commonly used data sources such as\n  [Spotter buoys](https://www.sofarocean.com/products/spotter) and\n  [CDIP](https://cdip.ucsd.edu/).\n* Documentation, examples, and comparison with conventional methods.\n\n\nWhether 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**.\n\n\n# Getting Started\n\n## Installation\n\n### Stable release\n\nYou can install EWDM using `pip`. First, make sure you have Python 3.8 or higher installed.\n\n```bash\npip install ewdm\n```\n\nThis is the preferred method to install EWDM, as it will always install the most recent stable release.\n\nIf you don't have `pip` installed, these [Python installation instructions](http://docs.python-guide.org/en/latest/starting/installation/) can guide\nyou through the process.\n\n\n### From sources\n\nThe sources for EWDM can be downloaded from the [Github repo](https://github.com/dspelaez/extended-wdm).\n\nYou can either clone the public repository:\n\n```bash\ngit clone git://github.com/dspelaez/extended-wdm\n```\n\nOr download the [tarball](https://github.com/dspelaez/extended-wdm/tarball/master):\n\n```bash\ncurl -OJL https://github.com/dspelaez/extended-wdm/tarball/master\n```\n\nOnce you have a copy of the source, you can install it with:\n\n```bash\npython setup.py install\n```\n\nOr using `pip`:\n\n```bash\npip install .\n```\n\n\n## Running tests\n\nTo install the necessary packages for development and testing, you can run the following command:\n\n```bash\npip install -e '.[test]'\n```\n\nTo run the tests, you can use the `pytest` framework by executing the following command:\n```bash\npytest tests\n```\n\n\n## Usage\n\nAfter installation, you can import and use the `ewdm` package in your Python code:\n\n```python\nimport ewdm\n```\n\n## Quick example\n\nThis example uses a CDIP buoy time series of wave-induced displacements to estimate the directional wave spectrum.\n\n```python\nimport numpy as np\nimport xarray as xr\nfrom matplotlib import pyplot as plt\n\nimport ewdm\nfrom ewdm.sources import CDIPDataSourceRealTime\nfrom ewdm.plots import plot_directional_spectrum\nplt.ion()\n\ncdip =  CDIPDataSourceRealTime(166)\ndataset = cdip.read_dataset(time_start='2024-06-09T08:30')\nspec = ewdm.Triplets(dataset)\noutput = spec.compute()\n\nfig, ax = plt.subplots()\nplot_directional_spectrum(\n    output[\"directional_spectrum\"], ax=ax, levels=None\n)\n```\n\nThis will produce a plot like this:\n\n\u003cimg src=\"notebooks/ewdm-quick-example.png\" width=\"800\"\u003e\n\n\n## Further examples\n\nFor a curated collection of examples, please refer to the [Gallery](https://extended-wdm.readthedocs.io/en/latest/gallery.html) in the documentation.\n\n\n## Related projects\n\nSeveral tools complement the functionality of **EWDM** in the analysis of ocean\nwave data. Some of the most relevant projects are:\n\n- [`WAFO`](https://www.maths.lth.se/matstat/wafo/) provides advanced statistical\n  and engineering analysis of wave fields and wave-induced loads.\n\n- [`FOWD`](https://github.com/dionhaefner/FOWD) offers a rich dataset of wave\n  parameters tailored for machine learning applications. It also provides\n  routines to compute frequently used wave parameters.\n\n- [`DIWASP`](https://github.com/metocean/diwasp) implements classical\n  Fourier-based methods for directional spectrum estimation.\n\n- Special mention to modern Python packages like\n  [`wavespectra`](https://github.com/wavespectra/wavespectra) and\n  [`oceanwaves-python`](https://github.com/openearth/oceanwaves-python), that\n  support spectral data manipulation and visualization. While these tools do not\n  estimate directional spectra from raw measurements, they can be integrated\n  with **EWDM** to enhance wave data processing workflows.\n\n\n\n## How to cite this work\n\nIf you find this software useful, please cite it using the DOI: [`10.21105/joss.07942`](https://doi.org/10.21105/joss.07942) or copy the following `bibtex` entry:\n\n```\n@article{Pelaez-Zapata2025,\n  doi = {10.21105/joss.07942},\n  url = {https://doi.org/10.21105/joss.07942},\n  year = {2025},\n  publisher = {The Open Journal},\n  volume = {10},\n  number = {109},\n  pages = {7942},\n  author = {Daniel Peláez-Zapata and Frédéric Dias},\n  title = {EWDM: A wavelet-based method for estimating directional spectra of ocean waves},\n  journal = {Journal of Open Source Software}\n}\n```\n\n\n## How to contribute\n\nEWDM is an open-source package and we welcome feedback and contributions.\n\nYou can open an issue in the GitHub issues page if you:\n\n- find a bug in the package;\n- need some new features;\n- want some supports;\n- show your own examples.\n\nPlease refer to the [Contributing guide](https://extended-wdm.readthedocs.io/en/latest/contribute.html) in the documentation for further information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdspelaez%2Fextended-wdm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdspelaez%2Fextended-wdm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdspelaez%2Fextended-wdm/lists"}