wavy on WEkEO

WEkEO (wekeo.copernicus.eu) provides a workspace where you can run scripts and Jupyter notebooks on a cloud for free. As such WEkEO is a great platform to try out wavy in a lightweight context. Here are some quick instructions on how to install wavy on WEkEO:

Open a new command window on your WEkEO workspace and install python environment for wavyopen (with a python version >3.10 & <3.14):

mamba create --name wavyopen python=3.12 --channel conda-forge
conda activate wavyopen
mamba install wavyopen

Note

For some reason on WEkEO you need to use conda activate wavyopen instead of mamba activate wavyopen.

Install jupiter kernel:

mamba install -n wavyopen ipykernel

Add it to jupyter:

python -m ipykernel install --user --name wavyopen --display-name "Python (wavyopen)"

Restart JupyterLab Kernel List and refresh your JupyterLab tab in WEkEO. Go to Kernel → Change Kernel, and you should see Python (wavyopen) in the list, choose this one.

Create a project directory and the usual setup with config, data, and scripts. Now, you can almost proceed as usual but a minor hack needs to be made for the invisible dot-files.

To create an .env file at the project root directory, first create a file called something visible like envtmp and put in all information wavy needs like:

WAVY_CONFIG=

For the use of copernicusmarine use:

COPERNICUSMARINE_SERVICE_USERNAME=
COPERNICUSMARINE_SERVICE_PASSWORD=

for FROST add:

CLIENT_ID=
CLIENT_SECRET=

Then cp your envtmp to .env, i.e.

cp envtmp .env

to establish the invisible .env-file and voilà, everything should be in place.

As usual you have to ammend your config scripts to efficiently use wavy. This is done as usual but let’s do one example with it. Go to your config directory and run:

wavyCFG --f satellite_cfg.yaml --path ./. --t minimal

Then open satellite_cfg.yaml and ammend the paths for downloading (trgt_tmplt) and for wavy_input (src_tmplt). In my case the config file then looks like:

cmems_L3_NRT:
    name: {s3a: s3a, s3b: s3b, c2: c2, j3: j3, h2b: h2b, h2c: h2c, al: al, cfo: cfo, s6a: s6a, swon: swon}
    download:
        copernicus:
            dataset_id: cmems_obs-wave_glo_phy-swh_nrt_name-l3_PT1S
            trgt_tmplt: '/home/jovyan/projects/test_wavy/sat/L3/name'
            path_date_incr_unit: m
            path_date_incr: 1
            strsub: [name]
            server: nrt.cmems-du.eu
            time_incr: h
    wavy_input:
        src_tmplt: '/home/jovyan/projects/test_wavy/sat/L3/name'
        fl_tmplt: null
        strsub: [name]
        path_date_incr_unit: m
        path_date_incr: 1
    reader: read_local_ncfiles
    collector: get_remote_files_copernicusmarine
    vardef: {Hs: VAVH, U: WIND_SPEED}
    coords: null
    misc: {processing_level: null, provider: null, obs_type: null}
    tags: null

Then, wavy can download satellite data and retrieve FROST data. For satellite do e.g.:

wavyDownload --sd 20250101 --ed 20250102 --nID cmems_L3_NRT --name s3a

Now, you can try out lines like in the other tutorials, e.g.:

_images/wavy_WEkEO_example.png

In the Jupyter notebook on WEkEO it may be beneficial to tune down the quite verbose output from wavy starting the processing cells with:

%%capture captured_output

Note

For some reason on WEkEO the wavyopen conda environment looses its name and you cannot activate simply by conda activate wavyopen. In this case please query the conda environments and activate the correct one without a name like: