Skip to content

feat(training): use DCT in PlotSpectrum to compute spectra on regional domains#2

Open
cbovalo wants to merge 9 commits into
mainfrom
feat/spectrum_regional_domains
Open

feat(training): use DCT in PlotSpectrum to compute spectra on regional domains#2
cbovalo wants to merge 9 commits into
mainfrom
feat/spectrum_regional_domains

Conversation

@cbovalo

@cbovalo cbovalo commented May 12, 2026

Copy link
Copy Markdown

Description

This PR introduces the DCT as the way to compute spectra on regional domains.

What problem does this change solve?

Currently, spectra on regional domains are computed using Spherical Harmonic Transforms through the library SHTOOLS. It assumes that the domain is global. Even if this library could be used for arbitrary domains, the DCT is more suited for this task.

What issue or task does this change relate to?

Fixes ecmwf#1055

As a contributor to the Anemoi framework, please ensure that your changes include unit tests, updates to any affected dependencies and documentation, and have been tested in a parallel setting (i.e., with multiple GPUs). As a reviewer, you are also responsible for verifying these aspects and requesting changes if they are not adequately addressed. For guidelines about those please refer to https://anemoi.readthedocs.io/en/latest/

By opening this pull request, I affirm that all authors agree to the Contributor License Agreement.

@cbovalo cbovalo marked this pull request as ready for review May 12, 2026 15:18
@cbovalo cbovalo changed the title feat(training): add DCT when computing spectra on regional domains feat(training): use DCT too compute spectra on regional domains May 12, 2026
@cbovalo cbovalo changed the title feat(training): use DCT too compute spectra on regional domains feat(training): use DCT to compute spectra on regional domains May 12, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the training diagnostics power-spectrum plotting to automatically choose between spherical-harmonic spectra (SHT) for global-like domains and a DCT-based spectrum computation for regional domains, with accompanying unit tests.

Changes:

  • Added a global-coverage heuristic and automatic backend selection (sht vs dct) in plot_power_spectrum.
  • Implemented a new DCT-based regional spectrum computation and routed compute_spectra through a method parameter.
  • Added unit tests to verify backend auto-selection behavior in the plotting path.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
training/tests/unit/diagnostics/test_plotting_callbacks.py Adds tests verifying plot_power_spectrum selects SHT/DCT based on detected coverage (plus formatting adjustments).
training/src/anemoi/training/diagnostics/plots.py Implements global-vs-regional detection and adds a DCT-based spectra backend exposed via compute_spectra(..., method=...).
training/src/anemoi/training/diagnostics/callbacks/plot.py Formatting-only adjustments in plotting callback loops and argument wrapping.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread training/src/anemoi/training/diagnostics/plots.py
Comment thread training/src/anemoi/training/diagnostics/plots.py Outdated
Comment thread training/src/anemoi/training/diagnostics/plots.py
Comment thread training/src/anemoi/training/diagnostics/plots.py
@cbovalo cbovalo changed the title feat(training): use DCT to compute spectra on regional domains feat(training): use DCT in PlotSpectrum to compute spectra on regional domains Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Training fails when using focus_area in PlotSpectrum callback

2 participants