-
Notifications
You must be signed in to change notification settings - Fork 47
Support one-file open_dataset #1479
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
base: main
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -353,7 +353,7 @@ def list_grid_names( | |
|
|
||
| def open_dataset( | ||
| grid_filename_or_obj: str | os.PathLike[Any] | dict | Dataset, | ||
| filename_or_obj: str | os.PathLike[Any], | ||
| filename_or_obj: str | os.PathLike[Any] | None = None, | ||
|
||
| chunks=None, | ||
| chunk_grid: bool = True, | ||
| use_dual: bool | None = False, | ||
|
|
@@ -368,10 +368,12 @@ def open_dataset( | |
| Strings and Path objects are interpreted as a path to a grid file. Xarray Datasets assume that | ||
| each member variable is in the UGRID conventions and will be used to create a ``ux.Grid``. Similarly, a dictionary | ||
| containing UGRID variables can be used to create a ``ux.Grid`` | ||
| filename_or_obj : str | os.PathLike[Any] | ||
| filename_or_obj : str | os.PathLike[Any], optional | ||
| String or Path object as a path to a netCDF file or an OpenDAP URL that | ||
| stores the actual data set. It is the same ``filename_or_obj`` in | ||
| ``xarray.open_dataset``. | ||
| ``xarray.open_dataset``. If omitted, ``grid_filename_or_obj`` is also | ||
| used as the data source, allowing combined grid-and-data files to be | ||
| opened with a single argument. | ||
| chunks : int, dict, 'auto' or None, default: None | ||
| If provided, used to load the grid into dask arrays. | ||
|
|
||
|
|
@@ -406,10 +408,22 @@ def open_dataset( | |
|
|
||
| >>> import uxarray as ux | ||
| >>> ux_ds = ux.open_dataset("grid_file.nc", "data_file.nc") | ||
|
|
||
| Open a dataset stored in a single combined grid-and-data file | ||
|
|
||
| >>> ux_ds = ux.open_dataset("combined_file.nc") | ||
| """ | ||
| if grid_kwargs is None: | ||
| grid_kwargs = {} | ||
|
|
||
| if filename_or_obj is None: | ||
| if isinstance(grid_filename_or_obj, (str, os.PathLike)): | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Limiting what was originally possible (dict, xr.dataset) doesn't look like a great idea. I am not sure if we could support dict with this, but I am pretty sure we should for xr.dataset. I think the main check should be on whether a good Grid object could be opened out of the file object here or not.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. xr.Dataset should also work in the one-input case. I’ll update the implementation |
||
| filename_or_obj = grid_filename_or_obj | ||
| else: | ||
rajeeja marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| raise ValueError( | ||
| "If filename_or_obj is omitted, grid_filename_or_obj must be a file path." | ||
| ) | ||
rajeeja marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| # Construct a Grid, validate parameters, and correct chunks | ||
| uxgrid, corrected_chunks = _get_grid( | ||
| grid_filename_or_obj, chunks, chunk_grid, use_dual, grid_kwargs, **kwargs | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need another test case to make sure the single file has proper grid definitions in it (i.e. If not throw exception)