Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem when lon_bnds set to None in subset_bbox #256

Open
DamienIrving opened this issue Nov 9, 2022 · 0 comments
Open

Problem when lon_bnds set to None in subset_bbox #256

DamienIrving opened this issue Nov 9, 2022 · 0 comments

Comments

@DamienIrving
Copy link

  • clisops version: 0.9.3
  • Python version: 3.10.6
  • Operating System: linux

Description

I've written a command line program where argparse defines start_date, end_date, lat_bnds and lon_bnds options that are None by default (i.e. unless the user passes their desired values for those options at the command line). I then pass those values to subset_bbox as follows:

ds = subset_bbox(ds, start_date=start_date, end_date=end_date, lat_bnds=lat_bnds, lon_bnds=lon_bnds)

I figured this would work fine because in the clisops source code the default value for each of those keyword arguments is None in the subset_bbox function definition, but it fails if you pass lon_bnds=None. I think the issue might be related to how the check_lons decorator function handles the input?

What I Did

import xarray as xr
from clisops.core.subset import subset_bbox
ds = xr.tutorial.load_dataset("air_temperature")
ds
<xarray.Dataset>
Dimensions:  (lat: 25, time: 2920, lon: 53)
Coordinates:
  * lat      (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0
  * lon      (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0
  * time     (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00
Data variables:
    air      (time, lat, lon) float32 241.2 242.5 243.5 ... 296.5 296.2 295.7
Attributes:
    Conventions:  COARDS
    title:        4x daily NMC reanalysis (1948)
    description:  Data is from NMC initialized reanalysis\n(4x/day).  These a...
    platform:     Model
    references:   http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanaly...
subset_bbox(ds, lon_bnds=None)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [5], line 1
----> 1 subset_bbox(ds, lon_bnds=None)

File /g/data/xv83/dbi599/miniconda3/envs/icclim/lib/python3.10/site-packages/clisops/core/subset.py:270, in check_lons.<locals>.func_checker(*args, **kwargs)
    267         else:
    268             kwargs[lon][kwargs[lon] <= 180] -= 360
--> 270 return func(*args, **kwargs)

File /g/data/xv83/dbi599/miniconda3/envs/icclim/lib/python3.10/site-packages/clisops/core/subset.py:1211, in subset_bbox(da, lon_bnds, lat_bnds, start_date, end_date, first_level, last_level, time_values, level_values)
   1209     if lon in da.dims and lon_bnds is not None:
   1210         lon_bnds = _check_desc_coords(coord=da[lon], bounds=lon_bnds, dim=lon)
-> 1211         da = da.sel({lon: slice(*lon_bnds)})
   1213 # Curvilinear case (lat and lon are coordinates, not dimensions)
   1214 elif ((lat in da.coords) and (lon in da.coords)) or (
   1215     (lat in da.data_vars) and (lon in da.data_vars)
   1216 ):
   1217     # Define a bounding box along the dimensions
   1218     # This is an optimization, a simple `where` would work but take longer for large hi-res grids.

TypeError: iteration over a 0-d array
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant