OceanVal: automated ocean model validation

OceanVal: automated ocean model validation#

Point OceanVal at your model output. Get back a complete validation report.

OceanVal is a Python package that automates the slow and tedious parts of ocean model validation. It matches your simulation output against gridded and in-situ observations, computes validation statistics, and builds a polished, shareable HTML report, all with a few lines of code.

import oceanval

oceanval.add_gridded_comparison(
    name="temperature",
    model_variable="thetao",
    recipe={"temperature": "woa23"},
    start=2005,
    end=2014,
    climatology=True,
)

oceanval.matchup(sim_dir="/path/to/model/output", start=2005, end=2014)
oceanval.validate()

See a real example report built by OceanVal.

Why OceanVal?#

  • Fast to first result: install from conda-forge and validate a simulation the same day, not after weeks of scripting.

  • Built-in observation recipes: WOA23, COBE2, OCC-CI, GLODAP, and NSBC

    datasets are ready to use, with data downloaded and processed for you.

    See Data Recipes.

  • Rigorous statistics: bias, RMSD, correlation, seasonality, spatial patterns, and vertical profiles, computed like-for-like on matched data.

  • Publication-quality reports: an HTML report you can send to collaborators, with figures, tables, and methods documented automatically.

  • Works with your model: NEMO, CMEMS, CMIP-style output, and any CF-compliant NetCDF files. FVCOM output is supported via preprocessing.

  • Reproducible and hackable: every report is generated from Jupyter notebooks you can inspect, edit, and rebuild with oceanval.rebuild().

  • Compare simulations: build side-by-side comparison reports for multiple runs with oceanval.compare().

How it works#

1. REGISTER        2. MATCH               3. REPORT
observations  -->  model + observations  -->  HTML validation report
(built-in           (oceanval.matchup)        (oceanval.validate)
recipes or
your own data)
  1. Register the observations to validate against, either with a built-in recipe or your own gridded/in-situ data.

  2. Match your model output with those observations using oceanval.matchup(). OceanVal finds your files, regrids, and pairs model values with observed values.

  3. Report with oceanval.validate(), which computes the statistics and builds the HTML report in your working directory.

Start here#

I want to…

Go to

Install OceanVal

Installation and a quick example

Run my first validation

Quickstart

Understand the full workflow

How to use OceanVal

Use built-in observation datasets

Data Recipes

Check my data is compatible

Compatible data

Fix a problem

OceanVal Q&A

Look up a function

API Reference

About#

OceanVal is developed by the Marine Systems Modelling group at Plymouth Marine Laboratory. It is open source and developed on GitHub, where bug reports and feature requests are welcome.