Skip to content

Add AVISO metadata and tests#360

Open
taimoorsohail wants to merge 5 commits into
mainfrom
ts/implement-AVISO-metadata
Open

Add AVISO metadata and tests#360
taimoorsohail wants to merge 5 commits into
mainfrom
ts/implement-AVISO-metadata

Conversation

@taimoorsohail

Copy link
Copy Markdown
Collaborator

What changed

  • added a new AVISO DataWrangling module with monthly and daily surface metadata
  • generalized the CopernicusMarine extension so both GLORYS and AVISO can share the downloader path
  • exported the AVISO dataset types from DataWrangling and NumericalEarth
  • added AVISO download coverage and a surface-field metadata sanity test
  • updated the GLORYS padding test to the new generic Copernicus helper signature

Why

This wires AVISO into the existing metadata-driven download and set! workflow so SSH-related fields can be handled the same way as the other supported datasets.

Impact

Users can now construct AVISO metadata for fields like :free_surface, :ssh, :sea_level_anomaly, :ugos, and :vgos, and the test suite has coverage for both downloading and basic field usage.

Validation

  • parsed the touched Julia source and test files with Meta.parseall
  • did not run the local test suite per repo instructions in AGENTS.md

@taimoorsohail taimoorsohail marked this pull request as ready for review June 18, 2026 08:01
@codecov

codecov Bot commented Jun 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 16.85393% with 74 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/DataWrangling/AVISO/AVISO.jl 3.63% 53 Missing ⚠️
ext/NumericalEarthCopernicusMarineExt.jl 38.23% 21 Missing ⚠️

📢 Thoughts on this report? Let us know!

@taimoorsohail taimoorsohail reopened this Jun 18, 2026
@navidcy navidcy added the data wrangling 🗃️ JRA55, ECCO, ERA5, and friends label Jun 19, 2026
@navidcy

navidcy commented Jun 19, 2026

Copy link
Copy Markdown
Member

I thought AVISO was renamed to "satellite altimetry observational dataset by the Copernicus Marine and Environment
Monitoring Service (CMEMS)", no?

Comment on lines +122 to +124
pad_bounds(bounds, dataset) = begin
Δ = native_horizontal_resolution(dataset)
return (bounds[1] - 2Δ, bounds[2] + 2Δ)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
pad_bounds(bounds, dataset) = begin
Δ = native_horizontal_resolution(dataset)
return (bounds[1] - 2Δ, bounds[2] + 2Δ)
function pad_bounds(bounds, dataset)
Δ = native_horizontal_resolution(dataset)
return (bounds[1] - 2Δ, bounds[2] + 2Δ)

Comment on lines +42 to +43
DataWrangling.all_dates(::AVISODaily, variable) = DateTime(1993, 1, 1) : Day(1) : last_complete_day()
DataWrangling.all_dates(::AVISOMonthly, variable) = DateTime(1993, 1, 1) : Month(1) : last_complete_month()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

wow, the dataset it is updated every 2 days?

Comment on lines +45 to +57
const AVISO_dataset_variable_names = Dict(
:free_surface => "adt",
:ssh => "adt",
:sea_surface_height => "adt",
:absolute_dynamic_topography => "adt",
:adt => "adt",
:sea_level_anomaly => "sla",
:sla => "sla",
:zonal_geostrophic_velocity => "ugos",
:ugos => "ugos",
:meridional_geostrophic_velocity => "vgos",
:vgos => "vgos",
)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
const AVISO_dataset_variable_names = Dict(
:free_surface => "adt",
:ssh => "adt",
:sea_surface_height => "adt",
:absolute_dynamic_topography => "adt",
:adt => "adt",
:sea_level_anomaly => "sla",
:sla => "sla",
:zonal_geostrophic_velocity => "ugos",
:ugos => "ugos",
:meridional_geostrophic_velocity => "vgos",
:vgos => "vgos",
)
const AVISO_dataset_variable_names = Dict(
:free_surface => "adt",
:sea_level_anomaly => "sla",
:zonal_geostrophic_velocity => "ugos",
:meridional_geostrophic_velocity => "vgos",
)

DataWrangling.dataset_variable_name(metadata::Metadata{<:AVISODataset}) = AVISO_dataset_variable_names[metadata.name]
DataWrangling.dataset_location(::AVISODataset, name) = (Center, Center, Nothing)
DataWrangling.is_three_dimensional(::Metadata{<:AVISODataset}) = false
DataWrangling.z_interfaces(::AVISODataset) = (-1.0, 0.0)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this is not required for 2D datasets (not 100% sure though)

@simone-silvestri simone-silvestri left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I left some comments. Otherwise looks good

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

data wrangling 🗃️ JRA55, ECCO, ERA5, and friends

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants