-
Notifications
You must be signed in to change notification settings - Fork 16
Description
What happened?
xcdat isn't recognizing dimensions when regridding with xesmf, but regridding does work when using xesmf directly.
Minimal Complete Verifiable Example (MVCE)
# %% imports
import xcdat as xc
import xesmf as xe
# %% parameters
fn_source = 'source.nc'
fn_target = 'target.nc'
# %% get source / target grids
ds = xc.open_dataset('source.nc')
ngrid = xc.open_dataset('target.nc')
# %% try regridding with xcdat
dsr = ds.regridder.horizontal('tmp2m', ngrid, tool="xesmf", method="bilinear")KeyError: "No 'X' axis dimension coordinate variables were found in the xarray object. Make sure dimension coordinate variables exist, they are one dimensional, and their CF 'axis' or 'standard_name' attrs are correctly set."
# %% inspect dataset
print(ds.tmp2m)<xarray.DataArray 'tmp2m' (y: 1059, x: 1799)> Size: 8MB
array([[296.45013, 296.45013, 296.38763, ..., 299.76263, 299.70013, 299.70013],
...,
[282.76263, 282.76263, 282.76263, ..., 270.07513, 270.01263, 270.01263]],
shape=(1059, 1799), dtype=float32)
Coordinates:
latitude (y, x) float64 15MB ...
longitude (y, x) float64 15MB ...
print(ds.longitude)<xarray.DataArray 'longitude' (y: 1059, x: 1799)> Size: 15MB
[1905141 values with dtype=float64]
Coordinates:
heightAboveGround float64 8B ...
latitude (y, x) float64 15MB ...
longitude (y, x) float64 15MB ...
time object 8B ...
Dimensions without coordinates: y, x
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
axis: X
# %% try regridding with xesmf
regridder = xe.Regridder(ds, ngrid, "bilinear")
dsr = regridder(ds)Log Output
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[4], [line 2](vscode-notebook-cell:?execution_count=4&line=2)
1 # %% try regridding with xcdat
----> [2](vscode-notebook-cell:?execution_count=4&line=2) dsr = ds.regridder.horizontal("tmp2m", ngrid, tool="xesmf", method="bilinear")
File /global/u2/v/vo13/xCDAT/xcdat/xcdat/regridder/accessor.py:169, in RegridderAccessor.horizontal(self, data_var, output_grid, tool, **options)
164 except KeyError as e:
165 raise ValueError(
166 f"Tool {e!s} does not exist, valid choices {list(HORIZONTAL_REGRID_TOOLS)}"
167 ) from e
--> [169](https://vscode-remote+ssh-002dremote-002bperlmutter.vscode-resource.vscode-cdn.net/global/u2/v/vo13/xCDAT/xcdat/xcdat/regridder/accessor.py:169) input_grid = _get_input_grid(self._ds, data_var, ["X", "Y"])
170 regridder = regrid_tool(input_grid, output_grid, **options)
171 output_ds = regridder.horizontal(data_var, self._ds)
File /global/u2/v/vo13/xCDAT/xcdat/xcdat/regridder/accessor.py:377, in _get_input_grid(ds, data_var, dup_check_dims)
374 all_coords = set(ds.coords.keys())
376 for dimension in dup_check_dims:
--> [377](https://vscode-remote+ssh-002dremote-002bperlmutter.vscode-resource.vscode-cdn.net/global/u2/v/vo13/xCDAT/xcdat/xcdat/regridder/accessor.py:377) coords = get_dim_coords(ds, dimension)
379 if isinstance(coords, xr.Dataset):
380 coord = set([get_dim_coords(ds[data_var], dimension).name])
File /global/u2/v/vo13/xCDAT/xcdat/xcdat/axis.py:141, in get_dim_coords(obj, axis)
134 raise ValueError(
135 f"This DataArray has more than one dimension {dim_coord_keys} mapped to the "
136 f"'{axis}' axis, which is an unexpected behavior. Try dropping extraneous "
137 "dimensions from the DataArray first (might affect data shape)."
138 )
140 if len(dim_coord_keys) == 0:
--> [141](https://vscode-remote+ssh-002dremote-002bperlmutter.vscode-resource.vscode-cdn.net/global/u2/v/vo13/xCDAT/xcdat/xcdat/axis.py:141) raise KeyError(
142 f"No '{axis}' axis dimension coordinate variables were found in the "
143 f"xarray object. Make sure dimension coordinate variables exist, they are "
144 "one dimensional, and their CF 'axis' or 'standard_name' attrs are "
145 "correctly set."
146 )
148 dim_coords = obj[
149 dim_coord_keys if len(dim_coord_keys) > 1 else dim_coord_keys[0]
150 ].copy()
152 return dim_coords
KeyError: "No 'X' axis dimension coordinate variables were found in the xarray object. Make sure dimension coordinate variables exist, they are one dimensional, and their CF 'axis' or 'standard_name' attrs are correctly set."Anything else we need to know?
This may be related to #718 and #747.
Environment
xCDAT : 0.10.1
xesmf: 0.8.10
Metadata
Metadata
Assignees
Labels
Type
Projects
Status