Skip to content

[FEAT] Add the OVIDE MOC-intensity reader, plus a y-axis label-wrap helper - #183

Merged
eleanorfrajka merged 1 commit into
mainfrom
feat-ovide
Aug 14, 2026
Merged

eleanorfrajka merged 1 commit into
mainfrom
feat-ovide

Conversation

@eleanorfrajka

Copy link
Copy Markdown
Collaborator

Summary

Adds OVIDE as a new array: the monthly MOC-intensity time series across the Greenland-Portugal A25 OVIDE line (Mercier et al., SEANOE 10.17882/46445), a satellite-altimetry-plus-Argo estimate. Also adds a small plotting helper that wraps long variable labels so they fit a plot y-axis.

OVIDE reader

  • New array ovide, served through read.ovide() (a blended/estimated product). Source is a single SEANOE netCDF (46195.nc), licence CC-BY-NC-4.0. Reader modelled on the existing single-file altimetry readers.
  • The file provides two MOC indices on different monthly time axes: an in-situ index over 2002-2015 (AVISO surface velocities combined with the time-varying Argo/ISAS interior) and an altimetry proxy over 1993-2015 (AVISO combined with a fixed 2002-2015 mean Argo/ISAS interior), plus the in-situ ensemble standard deviation. Their monthly timestamps coincide exactly, so the reader reindexes them onto a single 1993-2015 TIME axis (the in-situ series is NaN before 2002) rather than carrying two time coordinates.
  • Served variables: MOC_SIGMA1 (in-situ index), MOC_SIGMA1_PROXY (altimetry proxy), MOC_SIGMA1_ERR (ensemble standard deviation). The MOC index is the maximum of the overturning streamfunction in sigma1 space (potential density referenced to 1000 dbar), so MOC_SIGMA1/MOC_SIGMA1_PROXY carry standard_name: ocean_meridional_overturning_streamfunction with cell_methods: "SIGMA1: maximum" and reference_pressure: 1000; the uncertainty carries no standard_name.
  • Metadata in metadata/ovide.yml (title, citation, licence, weblink, contributors, institution) passes array_schema.json. Attribution is verified, not guessed: the three author ORCIDs were confirmed against the ORCID API and added to contributor_registry.yml, and the institution (Laboratoire d'Oceanographie Physique et Spatiale, LOPS) with EDMO code 4536 was added to institution_registry.yml.
  • Wired into data_sources/__init__.py, read.py (read.ovide, SUPPORTED_STANDARDIZATION, __all__), and defaults.py (ARRAY_NAMES + description). Tests in tests/test_ovide.py (fast registration + schema checks; a slow integration test of the two-index merge).
  • README array table updated.

Plot label wrapping

  • Adds plotters._vlabel(label, width=24), which word-wraps a long axis label onto multiple lines at word boundaries (short names are returned unchanged). Wired into plot_amoc_timeseries, which the report timeseries plots route through, so long standardised long_name labels no longer overflow the y-axis. The docstring notes it can later grow into a registry-based name translator.

Verification

429 fast tests pass; the slow OVIDE integration test passes against the downloaded file; ruff and ruff-format clean.

Breaking changes and migration

None. OVIDE is a new array (additive); _vlabel is an internal plotting helper.

@eleanorfrajka
eleanorfrajka merged commit 7642556 into main Aug 14, 2026
7 checks passed
@eleanorfrajka
eleanorfrajka deleted the feat-ovide branch August 14, 2026 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant