From f3050a745b8d4979bf1a83b69b422485dc54e397 Mon Sep 17 00:00:00 2001 From: ppinchuk Date: Tue, 4 Feb 2025 12:15:34 -0700 Subject: [PATCH] Use `rex_unscale` --- rex/external/rexarray.py | 34 ++++++++++------------------------ rex/resource.py | 11 ++--------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/rex/external/rexarray.py b/rex/external/rexarray.py index 75374ea7..f4713c78 100644 --- a/rex/external/rexarray.py +++ b/rex/external/rexarray.py @@ -13,31 +13,23 @@ import h5py import numpy as np import dask.array as da - from xarray import coding -from xarray.backends.common import ( - AbstractDataStore, - BackendArray, - BackendEntrypoint, - _normalize_path, - _open_remote_file, - find_root_and_group, -) +from xarray.backends.common import (AbstractDataStore, BackendArray, + BackendEntrypoint, _normalize_path, + _open_remote_file, find_root_and_group) from xarray.backends.file_manager import CachingFileManager, DummyFileManager from xarray.backends.locks import (HDF5_LOCK, combine_locks, ensure_lock, get_write_lock) from xarray.backends.store import StoreBackendEntrypoint from xarray.core import indexing -from xarray.core.utils import ( - FrozenDict, - emit_user_level_warning, - is_remote_uri, - read_magic_number_from_file, - try_read_magic_number_from_file_or_path, - close_on_error, -) +from xarray.core.utils import (FrozenDict, emit_user_level_warning, + is_remote_uri, read_magic_number_from_file, + try_read_magic_number_from_file_or_path, + close_on_error) from xarray.core.variable import Variable +from rex.utilities import rex_unscale + TI_DTYPE = np.dtype('datetime64[ns]') _SA_FN = Path(__file__).parent / "standard_attrs.json" @@ -213,13 +205,7 @@ def _getitem(self, key): return np.array([col[self.meta_index] for col in meta_info], dtype=self.dtype) - return self._unscale_like_rex(array[key]) - - def _unscale_like_rex(self, data): - if self.adder == 0: - return data / self.scale_factor - - return data * self.scale_factor + self.adder + return rex_unscale(array[key], self.scale_factor, self.adder) def get_array(self, needs_lock=True): ds = self.datastore._acquire(needs_lock) diff --git a/rex/resource.py b/rex/resource.py index e2b8d919..4d9e683c 100644 --- a/rex/resource.py +++ b/rex/resource.py @@ -15,7 +15,7 @@ from rex.sam_resource import SAMResource from rex.utilities.exceptions import ResourceKeyError, ResourceRuntimeError from rex.utilities.parse_keys import parse_keys, parse_slice -from rex.utilities.utilities import check_tz, get_lat_lon_cols +from rex.utilities.utilities import check_tz, get_lat_lon_cols, rex_unscale logger = logging.getLogger(__name__) @@ -537,14 +537,7 @@ def _unscale_data(self, data): Unscaled dataset array """ data = data.astype('float32') - - if self.adder != 0: - data *= self.scale_factor - data += self.adder - else: - data /= self.scale_factor - - return data + return rex_unscale(data, self.scale_factor, self.adder) def _get_ds_slice(self, ds_slice): """