pydata / xarray

N-D labeled arrays and datasets in Python
https://xarray.dev
Apache License 2.0
3.57k stars 1.07k forks source link

NotImplementedError: Don't yet support nd fancy indexing #6490

Closed javedali99 closed 2 years ago

javedali99 commented 2 years ago

What is your issue?

Hi, I am trying to use isel method from xarray to subset netCDF file using boundary coordinates. But, I am getting the following error:

NotImplementedError: Don't yet support nd fancy indexing

Could you please help me with how to solve this issue?

Detail information on error:

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Input In [21], in <cell line: 1>()
----> 1 ds_sel = ds2011_2014.isel(lon=(ds2011_2014.lon >= left) & (ds2011_2014.lon <= right),
      2                           lat=(ds2011_2014.lat >= bottom) & (ds2011_2014.lat <= top),
      3                           )
      5 ds_sel_avg = ds_sel.mean(dim=['lat','lon'])

File ~/miniforge3/lib/python3.9/site-packages/xarray/core/dataset.py:2352, in Dataset.isel(self, indexers, drop, missing_dims, **indexers_kwargs)
   2350 indexers = either_dict_or_kwargs(indexers, indexers_kwargs, "isel")
   2351 if any(is_fancy_indexer(idx) for idx in indexers.values()):
-> 2352     return self._isel_fancy(indexers, drop=drop, missing_dims=missing_dims)
   2354 # Much faster algorithm for when all indexers are ints, slices, one-dimensional
   2355 # lists, or zero or one-dimensional np.ndarray's
   2356 indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)

File ~/miniforge3/lib/python3.9/site-packages/xarray/core/dataset.py:2416, in Dataset._isel_fancy(self, indexers, drop, missing_dims)
   2414         indexes[name] = new_index
   2415 elif var_indexers:
-> 2416     new_var = var.isel(indexers=var_indexers)
   2417 else:
   2418     new_var = var.copy(deep=False)

File ~/miniforge3/lib/python3.9/site-packages/xarray/core/variable.py:1186, in Variable.isel(self, indexers, missing_dims, **indexers_kwargs)
   1183 indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)
   1185 key = tuple(indexers.get(dim, slice(None)) for dim in self.dims)
-> 1186 return self[key]

File ~/miniforge3/lib/python3.9/site-packages/xarray/core/variable.py:779, in Variable.__getitem__(self, key)
    766 """Return a new Variable object whose contents are consistent with
    767 getting the provided key from the underlying data.
    768 
   (...)
    776 array `x.values` directly.
    777 """
    778 dims, indexer, new_order = self._broadcast_indexes(key)
--> 779 data = as_indexable(self._data)[indexer]
    780 if new_order:
    781     data = np.moveaxis(data, range(len(new_order)), new_order)

File ~/miniforge3/lib/python3.9/site-packages/xarray/core/indexing.py:1161, in NumpyIndexingAdapter.__getitem__(self, key)
   1159 def __getitem__(self, key):
   1160     array, key = self._indexing_array_and_key(key)
-> 1161     return array[key]

File ~/miniforge3/lib/python3.9/site-packages/dask/array/core.py:1904, in Array.__getitem__(self, index)
   1901     return self
   1903 out = "getitem-" + tokenize(self, index2)
-> 1904 dsk, chunks = slice_array(out, self.name, self.chunks, index2, self.itemsize)
   1906 graph = HighLevelGraph.from_collections(out, dsk, dependencies=[self])
   1908 meta = meta_from_array(self._meta, ndim=len(chunks))

File ~/miniforge3/lib/python3.9/site-packages/dask/array/slicing.py:174, in slice_array(out_name, in_name, blockdims, index, itemsize)
    171 index += (slice(None, None, None),) * missing
    173 # Pass down to next function
--> 174 dsk_out, bd_out = slice_with_newaxes(out_name, in_name, blockdims, index, itemsize)
    176 bd_out = tuple(map(tuple, bd_out))
    177 return dsk_out, bd_out

File ~/miniforge3/lib/python3.9/site-packages/dask/array/slicing.py:196, in slice_with_newaxes(out_name, in_name, blockdims, index, itemsize)
    193         where_none[i] -= n
    195 # Pass down and do work
--> 196 dsk, blockdims2 = slice_wrap_lists(out_name, in_name, blockdims, index2, itemsize)
    198 if where_none:
    199     expand = expander(where_none)

File ~/miniforge3/lib/python3.9/site-packages/dask/array/slicing.py:242, in slice_wrap_lists(out_name, in_name, blockdims, index, itemsize)
    238 where_list = [
    239     i for i, ind in enumerate(index) if is_arraylike(ind) and ind.ndim > 0
    240 ]
    241 if len(where_list) > 1:
--> 242     raise NotImplementedError("Don't yet support nd fancy indexing")
    243 # Is the single list an empty list? In this case just treat it as a zero
    244 # length slice
    245 if where_list and not index[where_list[0]].size:

NotImplementedError: Don't yet support nd fancy indexing
Environment information ``` python active environment : base active env location : /Users/javedali/miniforge3 shell level : 1 user config file : /Users/javedali/.condarc populated config files : /Users/javedali/miniforge3/.condarc /Users/javedali/.condarc conda version : 4.12.0 conda-build version : not installed python version : 3.9.10.final.0 virtual packages : __osx=12.3.1=0 __unix=0=0 __archspec=1=arm64 base environment : /Users/javedali/miniforge3 (writable) conda av data dir : /Users/javedali/miniforge3/etc/conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/osx-arm64 https://conda.anaconda.org/conda-forge/noarch package cache : /Users/javedali/miniforge3/pkgs /Users/javedali/.conda/pkgs envs directories : /Users/javedali/miniforge3/envs /Users/javedali/.conda/envs platform : osx-arm64 user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.10 Darwin/21.4.0 OSX/12.3.1 UID:GID : 501:20 netrc file : None offline mode : False ```
conda list --show-channel-urls ```python # packages in environment at /Users/javedali/miniforge3: # # Name Version Build Channel agate 1.6.3 pypi_0 pypi agate-dbf 0.2.2 pypi_0 pypi agate-excel 0.2.5 pypi_0 pypi agate-sql 0.5.8 pypi_0 pypi altair 4.2.0 pyhd8ed1ab_1 conda-forge anyio 3.5.0 py39h2804cbe_0 conda-forge appnope 0.1.2 py39h2804cbe_2 conda-forge argh 0.26.2 pyh9f0ad1d_1002 conda-forge argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge argon2-cffi-bindings 21.2.0 py39h5161555_1 conda-forge asttokens 2.0.5 pyhd8ed1ab_0 conda-forge attrs 21.4.0 pyhd8ed1ab_0 conda-forge babel 2.9.1 pyh44b312d_0 conda-forge backcall 0.2.0 pyh9f0ad1d_0 conda-forge backports 1.0 py_2 conda-forge backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge beautifulsoup4 4.10.0 pyha770c72_0 conda-forge bleach 4.1.0 pyhd8ed1ab_0 conda-forge blosc 1.21.0 h9f76cd9_0 conda-forge bokeh 2.4.2 py39h2804cbe_0 conda-forge boost-cpp 1.74.0 h3afdda6_7 conda-forge bottleneck 1.3.4 py39h43ea957_1 conda-forge branca 0.4.2 pyhd8ed1ab_0 conda-forge brotli 1.0.9 h3422bc3_6 conda-forge brotli-bin 1.0.9 h3422bc3_6 conda-forge brotlipy 0.7.0 py39h5161555_1003 conda-forge bs4 4.10.0 hd8ed1ab_0 conda-forge bzip2 1.0.8 h3422bc3_4 conda-forge c-ares 1.18.1 h3422bc3_0 conda-forge ca-certificates 2021.10.8 h4653dfc_0 conda-forge cairo 1.16.0 h933af38_1010 conda-forge certifi 2021.10.8 py39h2804cbe_2 conda-forge cffi 1.15.0 py39h52b1de0_0 conda-forge cfitsio 4.0.0 h99351b2_0 conda-forge cftime 1.6.0 py39h43ea957_1 conda-forge charset-normalizer 2.0.12 pyhd8ed1ab_0 conda-forge click 8.0.4 py39h2804cbe_0 conda-forge click-plugins 1.1.1 py_0 conda-forge cligj 0.7.2 pyhd8ed1ab_1 conda-forge cloudpickle 2.0.0 pyhd8ed1ab_0 conda-forge cmasher 1.6.3 pyhd8ed1ab_0 conda-forge colorama 0.4.4 pyh9f0ad1d_0 conda-forge colorcet 3.0.0 pyhd8ed1ab_0 conda-forge colorspacious 1.1.2 pyh24bf2e0_0 conda-forge commonmark 0.9.1 py_0 conda-forge conda 4.12.0 py39h2804cbe_0 conda-forge conda-package-handling 1.8.0 py39hb18efdd_0 conda-forge cryptography 36.0.1 py39hfb8cd70_0 conda-forge csvkit 1.0.6 pypi_0 pypi curl 7.82.0 hb0e6552_0 conda-forge cycler 0.11.0 pyhd8ed1ab_0 conda-forge cytoolz 0.11.2 py39hb18efdd_2 conda-forge dask 2022.4.1 pyhd8ed1ab_0 conda-forge dask-core 2022.4.1 pyhd8ed1ab_0 conda-forge dataclasses 0.8 pyhc8e2a94_3 conda-forge dbfread 2.0.7 pypi_0 pypi dcw-gmt 2.1.0 hce30654_0 conda-forge debugpy 1.5.1 py39hfb83b0d_0 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge distributed 2022.4.1 pyhd8ed1ab_0 conda-forge e13tools 0.9.6 pyhd8ed1ab_0 conda-forge entrypoints 0.4 pyhd8ed1ab_0 conda-forge et-xmlfile 1.1.0 pypi_0 pypi executing 0.8.3 pyhd8ed1ab_0 conda-forge expat 2.4.7 h6b3803e_0 conda-forge fftw 3.3.10 nompi_h828537f_102 conda-forge filelock 3.6.0 pyhd8ed1ab_0 conda-forge fiona 1.8.21 py39h0e921d3_0 conda-forge flit-core 3.7.1 pyhd8ed1ab_0 conda-forge folium 0.12.1.post1 pyhd8ed1ab_1 conda-forge font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge font-ttf-inconsolata 3.000 h77eed37_0 conda-forge font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge font-ttf-ubuntu 0.83 hab24e00_0 conda-forge fontconfig 2.13.96 hfb34624_2 conda-forge fonts-conda-ecosystem 1 0 conda-forge fonts-conda-forge 1 0 conda-forge fonttools 4.31.1 py39hb18efdd_0 conda-forge freetype 2.10.4 h17b34a0_1 conda-forge freexl 1.0.6 h27ca646_0 conda-forge fsspec 2022.3.0 pyhd8ed1ab_0 conda-forge future 0.18.2 py39h2804cbe_4 conda-forge gdal 3.4.2 py39h4aaee43_0 conda-forge geopandas 0.10.2 pyhd8ed1ab_1 conda-forge geopandas-base 0.10.2 pyha770c72_1 conda-forge geos 3.10.2 hbdafb3b_0 conda-forge geotiff 1.7.1 hdd9897c_0 conda-forge gettext 0.19.8.1 h049c9fb_1008 conda-forge ghostscript 9.54.0 h6b3803e_2 conda-forge ghp-import 2.0.2 pyhd8ed1ab_0 conda-forge giflib 5.2.1 h27ca646_2 conda-forge gmt 6.3.0 h4282587_4 conda-forge gshhg-gmt 2.3.7 hce30654_1003 conda-forge hdf4 4.2.15 h0ef36ac_3 conda-forge hdf5 1.12.1 nompi_hf9525e8_104 conda-forge heapdict 1.0.1 py_0 conda-forge holoviews 1.14.8 pyhd8ed1ab_0 conda-forge icu 69.1 hbdafb3b_0 conda-forge idna 3.3 pyhd8ed1ab_0 conda-forge importlib-metadata 4.11.3 py39h2804cbe_0 conda-forge importlib_metadata 4.11.3 hd8ed1ab_0 conda-forge importlib_resources 5.4.0 pyhd8ed1ab_0 conda-forge ipykernel 6.9.2 py39h32adebf_0 conda-forge ipython 8.1.1 py39h2804cbe_0 conda-forge ipython_genutils 0.2.0 py_1 conda-forge ipywidgets 7.7.0 pyhd8ed1ab_0 conda-forge isodate 0.6.1 pypi_0 pypi jbig 2.1 h3422bc3_2003 conda-forge jedi 0.18.1 py39h2804cbe_0 conda-forge jinja2 3.0.3 pyhd8ed1ab_0 conda-forge joblib 1.1.0 pyhd8ed1ab_0 conda-forge jpeg 9e h3422bc3_0 conda-forge json-c 0.15 hc6a1b29_0 conda-forge json5 0.9.5 pyh9f0ad1d_0 conda-forge jsonschema 4.4.0 pyhd8ed1ab_0 conda-forge jupyter 1.0.0 py39h2804cbe_7 conda-forge jupyter_client 7.1.2 pyhd8ed1ab_0 conda-forge jupyter_console 6.4.3 pyhd8ed1ab_0 conda-forge jupyter_core 4.9.2 py39h2804cbe_0 conda-forge jupyter_server 1.15.6 pyhd8ed1ab_0 conda-forge jupyterlab 3.3.0 pypi_0 pypi jupyterlab_pygments 0.1.2 pyh9f0ad1d_0 conda-forge jupyterlab_server 2.11.0 pyhd8ed1ab_0 conda-forge jupyterlab_widgets 1.1.0 pyhd8ed1ab_0 conda-forge jupytext 1.13.6 pypi_0 pypi kealib 1.4.14 h8a8d77f_3 conda-forge kiwisolver 1.4.0 py39h2c803a9_0 conda-forge krb5 1.19.3 hf9b2bbe_0 conda-forge lcms2 2.12 had6a04f_0 conda-forge leather 0.3.4 pypi_0 pypi lerc 3.0 hbdafb3b_0 conda-forge libblas 3.9.0 13_osxarm64_openblas conda-forge libbrotlicommon 1.0.9 h3422bc3_6 conda-forge libbrotlidec 1.0.9 h3422bc3_6 conda-forge libbrotlienc 1.0.9 h3422bc3_6 conda-forge libcblas 3.9.0 13_osxarm64_openblas conda-forge libcurl 7.82.0 hb0e6552_0 conda-forge libcxx 13.0.1 h6a5c8ee_0 conda-forge libdap4 3.20.6 h8510809_2 conda-forge libdeflate 1.10 h3422bc3_0 conda-forge libedit 3.1.20191231 hc8eb9b7_2 conda-forge libev 4.33 h642e427_1 conda-forge libffi 3.4.2 h3422bc3_5 conda-forge libgdal 3.4.2 hf30a3e3_0 conda-forge libgfortran 5.0.0.dev0 11_0_1_hf114ba7_23 conda-forge libgfortran5 11.0.1.dev0 hf114ba7_23 conda-forge libglib 2.70.2 h67e64d8_4 conda-forge libiconv 1.16 h642e427_0 conda-forge libidn2 2.3.2 h3422bc3_0 conda-forge libkml 1.3.0 h893ab4d_1014 conda-forge liblapack 3.9.0 13_osxarm64_openblas conda-forge libnetcdf 4.8.1 nompi_h96a3436_101 conda-forge libnghttp2 1.47.0 he723fca_0 conda-forge libopenblas 0.3.18 openmp_h5dd58f0_0 conda-forge libpng 1.6.37 hf7e6567_2 conda-forge libpq 14.2 h8bb6238_0 conda-forge librttopo 1.1.0 h56e3e6d_9 conda-forge libsodium 1.0.18 h27ca646_1 conda-forge libspatialindex 1.9.3 hbdafb3b_4 conda-forge libspatialite 5.0.1 he30b116_15 conda-forge libssh2 1.10.0 hb80f160_2 conda-forge libtiff 4.3.0 h77dc3b6_3 conda-forge libunistring 0.9.10 h3422bc3_0 conda-forge libuv 1.43.0 h3422bc3_0 conda-forge libwebp 1.2.2 h0d20362_0 conda-forge libwebp-base 1.2.2 h3422bc3_1 conda-forge libxcb 1.13 h9b22ae9_1004 conda-forge libxml2 2.9.12 hedbfbf4_1 conda-forge libzip 1.8.0 h3887732_1 conda-forge libzlib 1.2.11 hee7b306_1013 conda-forge littleutils 0.2.2 py_0 conda-forge llvm-openmp 13.0.1 h455960f_1 conda-forge locket 0.2.0 py_2 conda-forge lux-api 0.2.3 pyhd8ed1ab_1 conda-forge lux-widget 0.1.11 pyhd8ed1ab_0 conda-forge lz4 4.0.0 py39h2da5f5f_1 conda-forge lz4-c 1.9.3 hbdafb3b_1 conda-forge mapclassify 2.4.3 pyhd8ed1ab_0 conda-forge markdown 3.3.6 pyhd8ed1ab_0 conda-forge markupsafe 2.1.1 py39hb18efdd_0 conda-forge matplotlib 3.5.1 py39hdf13c20_0 conda-forge matplotlib-base 3.5.1 py39h5aa4fe7_0 conda-forge matplotlib-inline 0.1.3 pyhd8ed1ab_0 conda-forge mergedeep 1.3.4 pyhd8ed1ab_0 conda-forge mistune 0.8.4 py39h5161555_1005 conda-forge mkdocs 1.2.3 pyhd8ed1ab_0 conda-forge mkdocs-autorefs 0.4.1 pyhd8ed1ab_1 conda-forge mkdocs-custommill 1.2.6 pypi_0 pypi mkdocs-git-revision-date-plugin 0.3.1 pypi_0 pypi mkdocs-gitbook 0.0.1 pypi_0 pypi mkdocs-jupyter 0.19.0 pypi_0 pypi mkdocs-material 8.1.6 pypi_0 pypi mkdocs-material-extensions 1.0.3 pypi_0 pypi mkdocs-windmill 1.0.4 pypi_0 pypi mkdocstrings 0.18.0 pyhd8ed1ab_0 conda-forge mpmath 1.2.1 pyhd8ed1ab_0 conda-forge msgpack-python 1.0.3 py39h2c803a9_1 conda-forge munch 2.5.0 py_0 conda-forge munkres 1.1.4 pyh9f0ad1d_0 conda-forge nbclassic 0.3.7 pyhd8ed1ab_0 conda-forge nbclient 0.5.13 pyhd8ed1ab_0 conda-forge nbconvert 6.4.0 pypi_0 pypi nbformat 5.2.0 pyhd8ed1ab_0 conda-forge ncurses 6.3 hc470f4d_0 conda-forge nest-asyncio 1.5.4 pyhd8ed1ab_0 conda-forge netcdf4 1.5.8 nompi_py39h37a926c_101 conda-forge networkx 2.7.1 pyhd8ed1ab_0 conda-forge nodejs 17.4.0 habd0e26_0 conda-forge notebook 6.4.10 pyha770c72_0 conda-forge notebook-shim 0.1.0 pyhd8ed1ab_0 conda-forge nspr 4.32 hbdafb3b_1 conda-forge nss 3.74 h353d031_0 conda-forge numpy 1.22.3 py39h690d673_0 conda-forge openjpeg 2.4.0 h062765e_1 conda-forge openpyxl 3.0.9 pypi_0 pypi openssl 1.1.1n h90dfc92_0 conda-forge outdated 0.2.1 pyhd8ed1ab_0 conda-forge packaging 21.3 pyhd8ed1ab_0 conda-forge pandas 1.4.1 pypi_0 pypi pandas-flavor 0.2.0 py_0 conda-forge pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge panel 0.12.6 pyhd8ed1ab_0 conda-forge param 1.12.0 pyh6c4a22f_0 conda-forge parsedatetime 2.4 pypi_0 pypi parso 0.8.3 pyhd8ed1ab_0 conda-forge partd 1.2.0 pyhd8ed1ab_0 conda-forge patsy 0.5.2 pyhd8ed1ab_0 conda-forge pcre 8.45 hbdafb3b_0 conda-forge pexpect 4.8.0 pyh9f0ad1d_2 conda-forge pickleshare 0.7.5 py_1003 conda-forge pillow 9.0.1 py39hd72dd6b_2 conda-forge pingouin 0.5.1 pyhd8ed1ab_0 conda-forge pip 22.0.4 pyhd8ed1ab_0 conda-forge pixman 0.40.0 h27ca646_0 conda-forge plotly-orca 3.4.2 0 conda-forge poppler 22.01.0 hb0e405e_1 conda-forge poppler-data 0.4.11 hd8ed1ab_0 conda-forge postgresql 14.2 h8fdef8c_0 conda-forge proj 9.0.0 hb719e4a_1 conda-forge prometheus_client 0.13.1 pyhd8ed1ab_0 conda-forge prompt-toolkit 3.0.27 pyha770c72_0 conda-forge prompt_toolkit 3.0.27 hd8ed1ab_0 conda-forge psutil 5.9.0 py39h5161555_0 conda-forge pthread-stubs 0.4 h27ca646_1001 conda-forge ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge pycosat 0.6.3 py39h5161555_1009 conda-forge pycparser 2.21 pyhd8ed1ab_0 conda-forge pyct 0.4.6 py_0 conda-forge pyct-core 0.4.6 py_0 conda-forge pygeos 0.12.0 py39h01e0a3a_1 conda-forge pygments 2.11.2 pyhd8ed1ab_0 conda-forge pygmt 0.6.1 pyhd8ed1ab_0 conda-forge pymdown-extensions 9.2 pyhd8ed1ab_0 conda-forge pyopenssl 22.0.0 pyhd8ed1ab_0 conda-forge pyparsing 3.0.7 pyhd8ed1ab_0 conda-forge pyproj 3.3.0 py39he3649a3_2 conda-forge pyrsistent 0.18.1 py39h5161555_0 conda-forge pysocks 1.7.1 py39h2804cbe_4 conda-forge python 3.9.10 hd16f9c5_2_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python-slugify 5.0.2 pypi_0 pypi python_abi 3.9 2_cp39 conda-forge pytimeparse 1.1.8 pypi_0 pypi pytz 2021.3 pyhd8ed1ab_0 conda-forge pyviz_comms 2.1.0 pyhd8ed1ab_0 conda-forge pyyaml 6.0 py39h5161555_3 conda-forge pyyaml-env-tag 0.1 pyhd8ed1ab_0 conda-forge pyzmq 22.3.0 py39h02c6a76_1 conda-forge readline 8.1 hedafd6a_0 conda-forge requests 2.27.1 pyhd8ed1ab_0 conda-forge requests-file 1.5.1 pyh9f0ad1d_0 conda-forge rich 12.0.0 pyhd8ed1ab_0 conda-forge rtree 0.9.7 py39hb28b0e7_3 conda-forge ruamel_yaml 0.15.80 py39h5161555_1006 conda-forge scikit-learn 1.0.2 py39hef7049f_0 conda-forge scipy 1.8.0 py39h5060c3b_1 conda-forge seaborn 0.11.2 hd8ed1ab_0 conda-forge seaborn-base 0.11.2 pyhd8ed1ab_0 conda-forge send2trash 1.8.0 pyhd8ed1ab_0 conda-forge setuptools 60.10.0 py39h2804cbe_0 conda-forge shapely 1.8.0 py39h01e0a3a_5 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge sniffio 1.2.0 py39h2804cbe_2 conda-forge sortedcontainers 2.4.0 pyhd8ed1ab_0 conda-forge soupsieve 2.3.1 pyhd8ed1ab_0 conda-forge sqlite 3.37.1 h7e3ccbd_0 conda-forge stack_data 0.2.0 pyhd8ed1ab_0 conda-forge statsmodels 0.13.2 py39h20ef057_0 conda-forge tabulate 0.8.9 pyhd8ed1ab_0 conda-forge tblib 1.7.0 pyhd8ed1ab_0 conda-forge terminado 0.13.3 py39h2804cbe_0 conda-forge testpath 0.6.0 pyhd8ed1ab_0 conda-forge text-unidecode 1.3 pypi_0 pypi threadpoolctl 3.1.0 pyh8a188c0_0 conda-forge tiledb 2.7.1 h29b8279_0 conda-forge tk 8.6.12 he1e0b03_0 conda-forge tldextract 3.2.0 pyhd8ed1ab_0 conda-forge toolz 0.11.2 pyhd8ed1ab_0 conda-forge tornado 6.1 py39h5161555_2 conda-forge tqdm 4.63.0 pyhd8ed1ab_0 conda-forge traitlets 5.1.1 pyhd8ed1ab_0 conda-forge typing_extensions 4.1.1 pyha770c72_0 conda-forge tzcode 2022a h1c322ee_0 conda-forge tzdata 2022a h191b570_0 conda-forge unicodedata2 14.0.0 py39h5161555_0 conda-forge urllib3 1.26.9 pyhd8ed1ab_0 conda-forge watchdog 2.1.6 py39h5161555_1 conda-forge wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge webencodings 0.5.1 py_1 conda-forge websocket-client 1.3.1 pyhd8ed1ab_0 conda-forge wget 1.20.3 hb616509_1 conda-forge wheel 0.37.1 pyhd8ed1ab_0 conda-forge widgetsnbextension 3.6.0 py39h2804cbe_0 conda-forge xarray 2022.3.0 pyhd8ed1ab_0 conda-forge xerces-c 3.2.3 hff64b9e_4 conda-forge xlrd 2.0.1 pypi_0 pypi xorg-libxau 1.0.9 h27ca646_0 conda-forge xorg-libxdmcp 1.1.3 h27ca646_0 conda-forge xyzservices 2022.3.0 pyhd8ed1ab_0 conda-forge xz 5.2.5 h642e427_1 conda-forge yaml 0.2.5 h3422bc3_2 conda-forge zeromq 4.3.4 hbdafb3b_1 conda-forge zict 2.1.0 pyhd8ed1ab_0 conda-forge zipp 3.7.0 pyhd8ed1ab_1 conda-forge zlib 1.2.11 hee7b306_1013 conda-forge zstd 1.5.2 h861e0a7_0 conda-forge ```
max-sixty commented 2 years ago

@javedali99 please could you supply an MVCE?

javedali99 commented 2 years ago

@javedali99 please could you supply an MVCE?

# download data
for yr in range(2011,2015): 
    url = f'https://downloads.psl.noaa.gov/Datasets/cpc_us_precip/RT/precip.V1.0.{yr}.nc'
    savename = url.split('/')[-1]
    urllib.request.urlretrieve(url,savename)

# combine netcdf files
ds2011_2014 = xr.open_mfdataset('precip.V1.0.*.nc', concat_dim='time', combine='nested')

# coordinates
top = 40
bottom = 37
left = 258
right = 265.4 

# subsetting the data based on boundary coordinates
ds_sel = ds2011_2014.isel(lon=(ds2011_2014.lon >= left) & (ds2011_2014.lon <= right),
                          lat=(ds2011_2014.lat >= bottom) & (ds2011_2014.lat <= top),
                          )
max-sixty commented 2 years ago

I'm getting a different error around the encoding — please could the MVCE not use external data? Check out the link on the label, or the issue template, for more tips. Thanks

```python --------------------------------------------------------------------------- KeyError Traceback (most recent call last) File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/file_manager.py:199, in CachingFileManager._acquire_with_cache_info(self, needs_lock) 198 try: --> 199 file = self._cache[self._key] 200 except KeyError: File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/lru_cache.py:53, in LRUCache.__getitem__(self, key) 52 with self._lock: ---> 53 value = self._cache[key] 54 self._cache.move_to_end(key) KeyError: [, ('/home/jovyan/precip.V1.0.2014.nc',), 'r', (('clobber', True), ('diskless', False), ('format', 'NETCDF4'), ('persist', False))] During handling of the above exception, another exception occurred: OSError Traceback (most recent call last) Input In [5], in 1 # combine netcdf files ----> 2 ds2011_2014 = xr.open_mfdataset('precip.V1.0.*.nc', concat_dim='time', combine='nested', engine='netcdf4') File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/api.py:908, in open_mfdataset(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs) 905 open_ = open_dataset 906 getattr_ = getattr --> 908 datasets = [open_(p, **open_kwargs) for p in paths] 909 closers = [getattr_(ds, "_close") for ds in datasets] 910 if preprocess is not None: File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/api.py:908, in (.0) 905 open_ = open_dataset 906 getattr_ = getattr --> 908 datasets = [open_(p, **open_kwargs) for p in paths] 909 closers = [getattr_(ds, "_close") for ds in datasets] 910 if preprocess is not None: File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/api.py:495, in open_dataset(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, backend_kwargs, *args, **kwargs) 483 decoders = _resolve_decoders_kwargs( 484 decode_cf, 485 open_backend_dataset_parameters=backend.open_dataset_parameters, (...) 491 decode_coords=decode_coords, 492 ) 494 overwrite_encoded_chunks = kwargs.pop("overwrite_encoded_chunks", None) --> 495 backend_ds = backend.open_dataset( 496 filename_or_obj, 497 drop_variables=drop_variables, 498 **decoders, 499 **kwargs, 500 ) 501 ds = _dataset_from_backend_dataset( 502 backend_ds, 503 filename_or_obj, (...) 510 **kwargs, 511 ) 512 return ds File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/netCDF4_.py:553, in NetCDF4BackendEntrypoint.open_dataset(self, filename_or_obj, mask_and_scale, decode_times, concat_characters, decode_coords, drop_variables, use_cftime, decode_timedelta, group, mode, format, clobber, diskless, persist, lock, autoclose) 532 def open_dataset( 533 self, 534 filename_or_obj, (...) 549 autoclose=False, 550 ): 552 filename_or_obj = _normalize_path(filename_or_obj) --> 553 store = NetCDF4DataStore.open( 554 filename_or_obj, 555 mode=mode, 556 format=format, 557 group=group, 558 clobber=clobber, 559 diskless=diskless, 560 persist=persist, 561 lock=lock, 562 autoclose=autoclose, 563 ) 565 store_entrypoint = StoreBackendEntrypoint() 566 with close_on_error(store): File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/netCDF4_.py:382, in NetCDF4DataStore.open(cls, filename, mode, format, group, clobber, diskless, persist, lock, lock_maker, autoclose) 376 kwargs = dict( 377 clobber=clobber, diskless=diskless, persist=persist, format=format 378 ) 379 manager = CachingFileManager( 380 netCDF4.Dataset, filename, mode=mode, kwargs=kwargs 381 ) --> 382 return cls(manager, group=group, mode=mode, lock=lock, autoclose=autoclose) File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/netCDF4_.py:330, in NetCDF4DataStore.__init__(self, manager, group, mode, lock, autoclose) 328 self._group = group 329 self._mode = mode --> 330 self.format = self.ds.data_model 331 self._filename = self.ds.filepath() 332 self.is_remote = is_remote_uri(self._filename) File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/netCDF4_.py:391, in NetCDF4DataStore.ds(self) 389 @property 390 def ds(self): --> 391 return self._acquire() File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/netCDF4_.py:385, in NetCDF4DataStore._acquire(self, needs_lock) 384 def _acquire(self, needs_lock=True): --> 385 with self._manager.acquire_context(needs_lock) as root: 386 ds = _nc4_require_group(root, self._group, self._mode) 387 return ds File /srv/conda/envs/notebook/lib/python3.8/contextlib.py:113, in _GeneratorContextManager.__enter__(self) 111 del self.args, self.kwds, self.func 112 try: --> 113 return next(self.gen) 114 except StopIteration: 115 raise RuntimeError("generator didn't yield") from None File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/file_manager.py:187, in CachingFileManager.acquire_context(self, needs_lock) 184 @contextlib.contextmanager 185 def acquire_context(self, needs_lock=True): 186 """Context manager for acquiring a file.""" --> 187 file, cached = self._acquire_with_cache_info(needs_lock) 188 try: 189 yield file File /srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/backends/file_manager.py:205, in CachingFileManager._acquire_with_cache_info(self, needs_lock) 203 kwargs = kwargs.copy() 204 kwargs["mode"] = self._mode --> 205 file = self._opener(*self._args, **kwargs) 206 if self._mode == "w": 207 # ensure file doesn't get overridden when opened again 208 self._mode = "a" File src/netCDF4/_netCDF4.pyx:2307, in netCDF4._netCDF4.Dataset.__init__() File src/netCDF4/_netCDF4.pyx:1925, in netCDF4._netCDF4._ensure_nc_success() OSError: [Errno -101] NetCDF: HDF error: b'/home/jovyan/precip.V1.0.2014.nc'
dcherian commented 2 years ago
# subsetting the data based on boundary coordinates
ds_sel = ds2011_2014.isel(lon=(ds2011_2014.lon >= left) & (ds2011_2014.lon <= right),
                          lat=(ds2011_2014.lat >= bottom) & (ds2011_2014.lat <= top),
                          )

Please use the sel method instead of a boolean mask. This will work for this dataset because lat and lon are dimension coordinates.

See https://docs.xarray.dev/en/stable/user-guide/indexing.html

javedali99 commented 2 years ago

Thanks @dcherian @max-sixty.

I solved the issue with re-installing xarray and cfgrib individually and re-starting the kernel.

max-sixty commented 2 years ago

OK, cheers @javedali99 !