Spectral Filtering Accuracy

PyStormTracker currently uses ducc0 for spherical harmonic transforms in spectral filtering, regridding, and the calculation of kinematic derivatives. SHTns was used during early development. The benchmarks below are retained for reference.

Methodology

The recorded comparisons use root mean square error (RMSE), relative error, and Pearson correlation for ERA5 mean sea level pressure and wind data. Reference fields generated by tests/data/era5/process_era5.ncl are checked in under tests/data/era5 and treated as the expected outputs for ducc0 spectral and kinematic integration tests.

Two spatial resolutions are tested:

  • 2.5°x2.5°: A low-resolution grid (73x144) where T42 truncation (requiring ~85 latitudes) results in aliasing.

  • 0.25°x0.25°: A high-resolution grid (721x1440) where T42 truncation is alias-free.

Spherical Harmonic Transform (SHT) Engines

1. ducc0 (Current)

ducc0 is the current spherical harmonic transform engine.

  • It is installed as a core dependency.

  • It provides two-dimensional spherical harmonic analysis and synthesis on Clenshaw-Curtis and Gauss-Legendre grids, pseudo-analysis for reduced Gaussian grids, arbitrary-point synthesis, spin-1 vector transforms, and HEALPix geometry used by this project.

  • The tables below report the differences relative to reference fields generated by NCL.

2. SHTns

SHTns was a spherical harmonic transform engine in earlier versions, but it has been removed from the package code and dependencies.

Accuracy & Performance Metrics

Spectral Filtering (MSL)

Cross-Engine Accuracy (vs NCL Reference)

Resolution: 2.5°x2.5° (ERA5)

Note: Higher error in this resolution is primarily due to aliasing on the coarse grid.

Engine

Truncation

RMSE (Pa)

Rel. Error

Correlation

Time (s)

SHTns

T5-42

0.45711949

6.40e-04

0.999999897272

0.0350

ducc0

T5-42

0.05266872

7.37e-05

0.999999998663

0.0030

SHTns

T0-42

0.45729944

4.53e-06

0.999999918845

0.0009

ducc0

T0-42

0.05369308

5.31e-07

0.999999998880

0.0019

Resolution: 0.25°x0.25° (ERA5)

Note: This resolution satisfies the sampling requirement for the recorded T42 comparison.

Engine

Truncation

RMSE (Pa)

Rel. Error

Correlation

Time (s)

SHTns

T5-42

0.00003643

5.16e-08

1.000000000000

0.0665

ducc0

T5-42

0.01276583

1.81e-05

0.999999999928

0.0041

SHTns

T0-42

0.00486497

4.81e-08

0.999999999994

0.0141

ducc0

T0-42

0.02114745

2.09e-07

0.999999999831

0.0038

Kinematic Derivatives (Vorticity & Divergence)

Evaluated on 0.25°x0.25° ERA5 grid. Comparison against NCL uv2vrdvF reference.

Engine

Variable

RMSE (s⁻¹)

Correlation

Time (s)

SHTns

Vorticity

9.05e-06

0.9899

0.1017

ducc0

Vorticity

1.74e-14

1.0000

0.0576

SHTns Polar-Optimization

For the recorded 0.25° SHTns run, disabling the polar optimization threshold (polar_opt=0.0) produced:

  • Accuracy: RMSE difference is negligible (~10⁻¹⁵ Pa).

  • Performance: The default setting is approximately 1.25% faster.