The Hybrid Coordinate Ocean Model (HYCOM) is an open-source data-assimilative computer model used to simulate and predict ocean circulation, temperature, salinity, and water velocity. These are Icechunks from the data on AWS Open Data.
๐ View data in browser ยท ๐ป Data access (code) ยท ๐ฆ Data access (HYCOM.org)
HYCOM ocean model output, published as
Icechunk stores on
Source Cooperative so that a whole archive
opens in about a second as one lazy xarray datacube.
This is the first of several; more HYCOM experiments will be added the same way, one repository each.
The stores are virtual: each holds only Zarr metadata and byte-range references. The arrays stay in the provider's original NetCDF files, nothing is copied or rewritten, and every read of a science value goes to the provider's bucket. A store therefore works only as long as its source does, and reads exactly what the source files contain. That costs one extra step when opening โ see How to open it โ and it is why the browser viewer needs the workaround described below.
โ ๏ธ Read this first: the data will not draw unless you disable CORS
The viewer loads, lists the variables and draws the map graticule, and then stops โ because the science arrays are not in the stores. They are in the provider's bucket, and a browser reading a virtual store therefore talks to two hosts. Source Cooperative allows it; the GOFS 3.1 reanalysis bucket on AWS has no CORS configuration (checked 2026-09-19), so your browser refuses to hand those bytes to the page. Nothing the viewer or this repository can contain will waive that; only the bucket's owner can.
One gridlook build, published alongside the data at
hycom/viewer/, serves every store here: the store to open rides in the URL
fragment, which the host never sees, and the viewer's dataset picker lists them all. Each
dataset's README has links per variable.
Python โฅ 3.12. No credentials are needed. Each dataset's README has the specifics; the shape is always this:
icechunk 1.x will not work.
icechunk.http_storagedoes not exist in icechunk 1.x (it arrived in 2.0), andicechunk.credentials.HttpAccessarrived in 2.1. Every icechunk 2.x release needs Python 3.12 or newer, so on an older Pythonpip install icechunkquietly installs 1.1.x, and the code below fails withAttributeError: module 'icechunk' has no attribute 'http_storage'. Check what you have:python -c "import icechunk; print(icechunk.__version__)".
Select first, then chunk. These are large archives of small chunks โ the reanalysis has
2.57 million chunks per 4-D variable โ and handing dask the whole thing with chunks={}
costs seconds and about a gigabyte on every operation. chunks=None is still lazy. Select
the times and region you want, then call .chunk({"time": 1}) on that selection so dask
streams it instead of loading it at once.
One directory per dataset in the
GitHub repository, each with its own README โ
coverage, variables, gaps, known problems, what to expect from reads โ plus its build
notebooks, requirements.txt and source manifest. On Source Cooperative the same files are
under docs/<dataset>/.
Each dataset is built in the same order: a written plan, a smoke test into a temporary local
repository, the same test written to ocean-icechunks/test-repo/hycom/ with a viewer and a
short README, and only then the published store, which is validated anonymously from its
public URL against an independent reader.
This work is released under Apache-2.0. You are free to use, copy, modify, and redistribute it, including commercially. If you use it in published work, in a presentation, or in another repository, please give attribution:
Holmes, E.E. and Signell, R. (2026). HYCOM as virtual Icechunk stores. ocean-icechunks/hycom. https://github.com/ocean-icechunks/hycom
Rich Signell is named because this work rests on his: he showed that the uncompressed NetCDF-3 files of this archive can be given virtual chunks, one per depth level, without rewriting them. None of his code is used here, but the approach is his. Please cite it too:
Signell, R. (2024). Using Kerchunk with uncompressed NetCDF 64-bit offset files: Cloud-optimized access to HYCOM Ocean Model output on AWS Open Data. Pangeo (Medium). https://medium.com/pangeo/using-kerchunk-with-uncompressed-netcdf-64-bit-offset-files-cloud-optimized-access-to-hycom-ocean-9008ba6d0d67
Signell, R. (2024). hycom-kerchunk. https://github.com/rsignell/hycom-kerchunk
The data is not ours, and the stores contain none of it โ only references to the provider's files. Each dataset's README gives its terms and the acknowledgement its provider asks for. For HYCOM data, hycom.org recommends:
Funding for the development of HYCOM has been provided by the National Ocean Partnership Program and the Office of Naval Research. Data assimilative products using HYCOM are funded by the U.S. Navy. Computer time was made available by the DoD High Performance Computing Modernization Program. The output is publicly available at https://hycom.org.
To look at the data anyway, install a CORS-disabling browser extension (search your browser's extension store for "CORS unblock" or "Allow CORS"), enable it, and reload the viewer. Such an extension switches off a real security protection for the sites you enable it on, so turn it back off when you are done โ or use a separate browser profile for it.
The code path below has no such problem: this affects browsers only.