Skip to content

Patch clisops v0.16.2 #282

@cehbrecht

Description

@cehbrecht

There is an issues with clisops operations in v0.16.2:

Fix for item is not yet a valid method on dask arrays

When subsetting CMIP6 NetCDF files with Rook, you may see errors like:

pywps.app.exceptions.ProcessError: item is not yet a valid method on dask arrays

This comes from a bug in clisops, where .item() is called on a dask-backed coordinate.

Manual Patch

Until the fix is released upstream, you can patch the installed clisops library directly:

  1. Locate your clisops installation. For example, inside your Conda environment:

    $ conda activate rook
    $ python -c "import clisops, os; print(os.path.dirname(clisops.__file__))"

    This will print a path like:

    /usr/local/anaconda/envs/rook/lib/python3.11/site-packages/clisops
    
  2. Edit the file:

    clisops/utils/dataset_utils.py
    

    Around line 824, you will see:

    lon_min, lon_max = ds.coords[lon].min().item(), ds.coords[lon].max().item()
  3. Replace it with a safe variant that works with dask arrays:

    lon_min = float(ds.coords[lon].min().compute().values)
    lon_max = float(ds.coords[lon].max().compute().values)
  4. Save the file and restart your Rook service.

In short

Become root:

sudo -i

Go to the conda packages:

cd /usr/local/anaconda/envs/rook/lib/python3.11/site-packages

Edit clisops module:

vim clisops/utils/dataset_utils.py

Go to line ":824":

 lon_min, lon_max = ds.coords[lon].min().item(), ds.coords[lon].max().item()

Replace it by:

    # TODO: fix this an new clisops release
    # lon_min, lon_max = ds.coords[lon].min().item(), ds.coords[lon].max().item()
    # PATCH
    lon_min = float(ds.coords[lon].min().compute().values)
    lon_max = float(ds.coords[lon].max().compute().values)
    # PATCH END

Restart rook:

supervisorctl restart rook

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions