Baltic Sea Drift – Preparation

Baltic Sea Drift – Preparation#

We’ll download a subset of the Baltic Sea Physics Analysis and Forecast dataset dataset which only covers a few days at 3 hour resolution.

import copernicusmarine
import xarray as xr
/miniconda3/envs/jupyter/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
copernicusmarine.login()
INFO - 2025-06-28T15:56:04Z - Downloading Copernicus Marine data requires a Copernicus Marine username and password, sign up for free at: https://data.marine.copernicus.eu/register
Copernicus Marine username:
Copernicus Marine password:
INFO - 2025-06-28T15:56:17Z - Credentials file stored in /home/jovyan/.copernicusmarine/.copernicusmarine-credentials.
True
ds = copernicusmarine.open_dataset(dataset_id="cmems_mod_bal_phy_anfc_PT1H-i")
ds
INFO - 2025-06-28T15:56:19Z - Selected dataset version: "202411"
INFO - 2025-06-28T15:56:19Z - Selected dataset part: "default"
<xarray.Dataset> Size: 15TB
Dimensions:    (depth: 56, latitude: 774, longitude: 763, time: 22668)
Coordinates:
  * depth      (depth) float32 224B 0.5016 1.516 2.548 ... 663.9 688.0 712.0
  * latitude   (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
  * longitude  (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
  * time       (time) datetime64[ns] 181kB 2022-12-02T13:00:00 ... 2025-07-04
Data variables:
    bottomT    (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    mlotst     (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    siconc     (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    sithick    (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    sla        (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    so         (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
    sob        (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
    thetao     (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
    uo         (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
    vo         (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
    wo         (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
Attributes:
    references:   https://marine.copernicus.eu/
    comment:      Data on cropped native product grid. Horizontal velocities ...
    title:        CMEMS NEMO hourly model fields
    contact:      servicedesk.cmems@mercator-ocean.eu
    source:       CMEMS BAL MFC NEMO model output converted to NetCDF
    Conventions:  CF-1.0
    institution:  Baltic MFC, PU Swedish Meteorological and Hydrological Inst...
ds_uv = (
    ds
    [["uo", "vo"]]
    .sel(time=slice("2023-01-01T00:00:00", "2023-01-10T00:00:00"))
    .isel(time=slice(None, None, 3))
    .sel(depth=5, method="nearest")
    .rename({"uo": "u", "vo": "v"})
)
ds_uv
<xarray.Dataset> Size: 345MB
Dimensions:    (time: 73, latitude: 774, longitude: 763)
Coordinates:
    depth      float32 4B 4.684
  * latitude   (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
  * longitude  (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
  * time       (time) datetime64[ns] 584B 2023-01-01 ... 2023-01-10
Data variables:
    u          (time, latitude, longitude) float32 172MB dask.array<chunksize=(1, 774, 763), meta=np.ndarray>
    v          (time, latitude, longitude) float32 172MB dask.array<chunksize=(1, 774, 763), meta=np.ndarray>
Attributes:
    references:   https://marine.copernicus.eu/
    comment:      Data on cropped native product grid. Horizontal velocities ...
    title:        CMEMS NEMO hourly model fields
    contact:      servicedesk.cmems@mercator-ocean.eu
    source:       CMEMS BAL MFC NEMO model output converted to NetCDF
    Conventions:  CF-1.0
    institution:  Baltic MFC, PU Swedish Meteorological and Hydrological Inst...
ds_uv.nbytes / 1e6
344.894944
%%time

ds_uv = ds_uv.compute()
CPU times: user 2min 44s, sys: 19.8 s, total: 3min 4s
Wall time: 4min 48s
!mkdir -p /home/jovyan/shared_materials/projects_data/
ds_uv.drop_encoding().to_netcdf("/home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc")
ds_uv = xr.open_dataset("/home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc")
ds_uv
<xarray.Dataset> Size: 345MB
Dimensions:    (time: 73, latitude: 774, longitude: 763)
Coordinates:
    depth      float32 4B ...
  * latitude   (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
  * longitude  (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
  * time       (time) datetime64[ns] 584B 2023-01-01 ... 2023-01-10
Data variables:
    u          (time, latitude, longitude) float32 172MB ...
    v          (time, latitude, longitude) float32 172MB ...
Attributes:
    references:   https://marine.copernicus.eu/
    comment:      Data on cropped native product grid. Horizontal velocities ...
    title:        CMEMS NEMO hourly model fields
    contact:      servicedesk.cmems@mercator-ocean.eu
    source:       CMEMS BAL MFC NEMO model output converted to NetCDF
    Conventions:  CF-1.0
    institution:  Baltic MFC, PU Swedish Meteorological and Hydrological Inst...
!ls -lah /home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc
-rw-r--r-- 1 jovyan jovyan 329M Jun 28 18:01 /home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc