Skip to main content

OceanTACO

docs pypi License Language: Python

OceanTACO is a multi-source sea surface variable dataset for Earth-system analysis workflows and also provides dataloaders for machine learning workflows.

Documentation page: https://oceantaco.readthedocs.io/en/latest/

Current dataset coverage includes:

  • Sea surface height (SSH): L4, L3, SWOT L3
  • Sea surface temperature (SST): L4, L3, GLORYS
  • Sea surface salinity (SSS): L4, L3 SMOS
  • Argo float profile observations (point-source)
  • Additional co-located sources including wind and GLORYS currents

The Core dataset spans 2023-03-29 until 2025-08-02 and includes the SWOT data. It is available on Hugging Face. The extended dataset spans 2015-01-01 until 2023-03-29 but precedes the SWOT era and is available on Hugging Face; see Extended dataset for how to download and use it.

SWOT mission phases (read this before comparing SWOT across dates)

The Core dataset spans two different SWOT orbits, and l3_swot behaves very differently in each. Both regimes are routinely mistaken for broken or duplicated data, so check which phase your dates fall in before filing a bug.

Phase Dates Repeat cycle What a fixed bounding box looks like
Calibration ("fast-sampling") 2023-03-29 – 2023-07-10 1 day The swath sits in the same place every day, so a daily animation or mosaic looks identical
Orbit change 2023-07-11 – 2023-07-25 — No l3_swot.nc is published on these dates
Science 2023-07-26 – 2025-08-02 21 days The swath moves every day, so a small box is empty (all-NaN) on most days

Two consequences worth stating explicitly:

  • During calibration, an unchanging picture does not mean unchanging data. The swath footprint repeats, but the values inside it do not: consecutive days differ by roughly 0.02–0.05 m on average over a 10°x10° box, with coherent mesoscale structure. Difference the days to see it.
  • During science, most days over a small box are legitimately empty. Revisits land at lags of 0, 11 and 21/22 days (the 21-day cycle plus its ascending / descending sub-cycle). All-NaN days are pixel-identical to one another, which is a second, unrelated way a mosaic can appear "the same".

SWOT is gridded at ~2 km with processing = bin_mean_no_smoothing: there is no gap-filling, so NaN always means "not observed here on this day", never zero.

Beyond the orbit-change window, 33 dates in total publish no l3_swot.nc in any region (SWOT-wide outages): 2023-05-20/21, 2023-07-11–2023-07-25, 2023-09-22–2023-09-26, 2023-12-23–2023-12-27, 2024-05-11/12, 2024-10-28, 2025-01-11/12, 2025-04-26/27. Other modalities are unaffected on those dates.

SWOT coverage over a fixed box across both mission phases

See Dataset Description for the per-phase figures. To regenerate them:

python scripts/dev/swot_phase_figures.py --out docs/images
OceanTACO Figure

Generated directly from OceanTACO sources (GLORYS SST, SSH L4, SSH SWOT, SST L4, SSS L4, Argo).

Documentation and Notebooks

If you are new to OceanTACO, start with the hosted documentation and tutorials:

OceanTACO includes several tutorial notebooks in the docs, with rendered outputs and downloadable .ipynb files, so you can get started quickly before writing your own workflows.

Installation

Most users should install directly from PyPI:

pip install oceantaco

If you want the latest development version from GitHub:

pip install "oceantaco @ git+https://github.com/nilsleh/oceanTACO.git@main"

If you have cloned this repository and want a local editable install, run the following from the repository root:

# Dataset loading + queries + visualization (default profile)
pip install -e .

# Add dataset-generation dependencies (download/format/build pipeline)
pip install -e ".[generate]"

# Full development profile
pip install -e ".[generate,tests]"

Repository Structure

Everything under ocean_taco/ is installed, and nothing else is:

  • ocean_taco/retrieve.py: native-coordinate catalog retrieval.
  • ocean_taco/catalog.py, ocean_taco/geobox.py, ocean_taco/temporal.py: catalog configuration and the spatial/temporal primitives.
  • ocean_taco/queryset.py, ocean_taco/filter.py, ocean_taco/sampling/: QuerySet construction, filtering, and reproducible draws.
  • ocean_taco/render/: renderers that turn a query into arrays, such as Resample.
  • ocean_taco/torch/: the shipped OceanTACODataset, collators, and Core loader.
  • ocean_taco/access/: source adapters for the underlying assets.
  • ocean_taco/figures/: the Hurricane Milton figure modules the tutorial notebooks import, and the QuerySet diagnostic maps.

Repository-only, not part of the installed package:

  • tools/ocean_taco_generate/: data acquisition and dataset build pipeline. See the dataset generation guide.
  • tools/ocean_taco_benchmarks/: the ClimateBenchPress comparison pipeline.
  • tools/ocean_taco_figures_wip/: paper-figure code that no longer runs against the current API, kept for possible revival.
  • scripts/: QuerySet production pipeline and release checks.
  • docs/tutorials/: the tutorial notebooks, also rendered in the hosted docs.

ML sampling starts with a published QuerySet, then records an exact draw:

from ocean_taco import CatalogConfig, QuerySet, draw_queryset
from ocean_taco.render import Resample
from ocean_taco.torch import OceanTACODataset

queryset = QuerySet.from_hub(256, "eval")
draw = draw_queryset(queryset, requested_row_count=32, seed=7, record_path="run.json")
dataset = OceanTACODataset(
    queries=draw,
    sources={"l4_sst": Resample((64, 64), support_threshold=0.5)},
    catalog_config=CatalogConfig(),
)
sample = dataset[0]

Patch Size from Resolution

Use this rule of thumb when choosing patch extents:

  • patch_deg ≈ pixels * resolution_deg
  • Example: for ~0.1° data and 64 x 64 patches, choose about 6.4° patch size.

PatchSize(unit="km") is also supported; conversion to degrees is latitude-dependent for longitude.

Hugging Face Dataset Access

OceanTACO is available at:

Stream OceanTACO

TACO is cloud-native. Therefore, the dataset can be accessed remotely without downloading it to local disk, both for data analysis and machine learning workflows.

Streaming is the default: a bare CatalogConfig() reads the published catalog on Hugging Face and fetches only the granules a query touches, caching them under HF_HOME. Nothing needs to be downloaded up front.

from ocean_taco import CatalogConfig, GeoBox
from ocean_taco.retrieve import load_bbox_nc, load_hf_dataset

config = CatalogConfig()            # remote by default
catalog = load_hf_dataset(config)

sst = load_bbox_nc(
    catalog,
    "2024-06-01",
    GeoBox(-80.0, -30.0, 25.0, 50.0),
    "l4_sst",
    config=config,
)

The same applies to the ML path: pass catalog_config=CatalogConfig() to OceanTACODataset, as in the quickstart above, and batches stream from the Hub. To read a local copy instead, point at the OceanTACO directory itself with CatalogConfig(taco_path="/path/to/OceanTACO").

Download snapshot locally (huggingface_hub)

from huggingface_hub import snapshot_download

local_dir = snapshot_download(repo_id="nilsleh/OceanTACO", repo_type="dataset")
print(local_dir)

More Detailed Guide

For full examples (query save/load, train/eval dataloaders, patch-size recipes, and troubleshooting), see:

CODE LICENSE

The Code is licensed under Apache - 2.0.

DATASET LICENSE

OceanTACO is released under Creative Commons Attribution 4.0 International (CC BY 4.0). However, please see the OceanTACO Dataset Card for full license information, and required attribution, acknowledgements and citations.

Citation

OceanTACO has been accepted for publication in Earth System Science Data. Until the final version appears, please cite the preprint:

@article{lehmann2026oceantaco,
  author  = {Lehmann, Nils and Aybar, Cesar and Shah, Ando and Passaro, Marcello and Bamber, Jonathan L. and Zhu, Xiao Xiang},
  title   = {{OceanTACO}: A Multi-Sensor Global Ocean Sea Surface State Dataset},
  journal = {Earth System Science Data Discussions},
  year    = {2026},
  doi     = {10.5194/essd-2026-232},
  url     = {https://essd.copernicus.org/preprints/essd-2026-232/},
  note    = {Accepted for publication in Earth System Science Data}
}

Preprint: https://essd.copernicus.org/preprints/essd-2026-232/

Metadata

Release files for oceantaco 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oceantaco 0.1.0
File Size Uploaded
oceantaco-0.1.0.tar.gz 137.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oceantaco 0.1.0
File Interpreter ABI Platform
oceantaco-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 289.0 kB

Release files / oceantaco-0.1.0.tar.gz

Download URL oceantaco-0.1.0.tar.gz
Size 137.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3b78b751c630e757586867e7036e6649e5c7983b7e91f6abafeb92e3400a6179
BLAKE2b-256 checksum
How to use checksums
4d0024ba1bf5b85ae8280f1b3cbd70d4c46f06dd6895d1ecb3c15788d1d9bd04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / oceantaco-0.1.0-py3-none-any.whl

Download URL oceantaco-0.1.0-py3-none-any.whl
Size 151.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
096bc876ea1f16f7e53d32e85a734477a9443d6645962813b877b69e81ed1839
BLAKE2b-256 checksum
How to use checksums
76f9cc42cc4a511c0fa1387fcac8bcfb14040fdedb72f13d99d7d46b23df29fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page