From 373fabe61abd7367198d8b56eb180add626938ce Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Wed, 7 Jun 2023 13:59:12 -0500 Subject: [PATCH] snapshot... --- modules/util/util.py | 150 +++++++++++++++++++++---------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/modules/util/util.py b/modules/util/util.py index 93ae51c3..76a9090c 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -333,6 +333,81 @@ def get_median(tile_2d): return np.nanmedian(tile) +def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None, scale_factor_name='scale_factor', add_offset_name='add_offset', + fill_value_name='_FillValue', valid_range_name='valid_range', actual_range_name='actual_range', fill_value=None): + hfds = h5f[grid_name] + attrs = hfds.attrs + if attrs is None: + raise GenericException('No attributes object for: '+grid_name) + + ylen, xlen = hfds.shape + + if half_width is not None: + j_l = j_c-half_width + i_l = i_c-half_width + if j_l < 0 or i_l < 0: + return None + + j_r = j_c+half_width+1 + i_r = i_c+half_width+1 + if j_r >= ylen or i_r >= xlen: + return None + else: + j_l = j_c + j_r = j_c + num_j + 1 + i_l = i_c + i_r = i_c + num_i + 1 + + grd_vals = hfds[j_l:j_r, i_l:i_r] + + if fill_value_name is not None: + attr = attrs.get(fill_value_name) + if attr is not None: + if np.isscalar(attr): + fill_value = attr + else: + fill_value = attr[0] + grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) + elif fill_value is not None: + grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) + + if valid_range_name is not None: + attr = attrs.get(valid_range_name) + if attr is not None: + low = attr[0] + high = attr[1] + grd_vals = np.where(grd_vals < low, np.nan, grd_vals) + grd_vals = np.where(grd_vals > high, np.nan, grd_vals) + + if scale_factor_name is not None: + attr = attrs.get(scale_factor_name) + if attr is not None: + if np.isscalar(attr): + scale_factor = attr + else: + scale_factor = attr[0] + grd_vals = grd_vals * scale_factor + + if add_offset_name is not None: + attr = attrs.get(add_offset_name) + if attr is not None: + if np.isscalar(attr): + add_offset = attr + else: + add_offset = attr[0] + grd_vals = grd_vals + add_offset + + if actual_range_name is not None: + attr = attrs.get(actual_range_name) + if attr is not None: + low = attr[0] + high = attr[1] + grd_vals = np.where(grd_vals < low, np.nan, grd_vals) + grd_vals = np.where(grd_vals > high, np.nan, grd_vals) + + return grd_vals + + def get_grid_values_all(h5f, grid_name, scale_factor_name='scale_factor', add_offset_name='add_offset', fill_value_name='_FillValue', valid_range_name='valid_range', actual_range_name='actual_range', fill_value=None, stride=None): hfds = h5f[grid_name] @@ -588,81 +663,6 @@ def get_cartopy_crs(satellite, domain): return geos, xlen, xmin, xmax, ylen, ymin, ymax -def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None, scale_factor_name='scale_factor', add_offset_name='add_offset', - fill_value_name='_FillValue', valid_range_name='valid_range', actual_range_name='actual_range', fill_value=None): - hfds = h5f[grid_name] - attrs = hfds.attrs - if attrs is None: - raise GenericException('No attributes object for: '+grid_name) - - ylen, xlen = hfds.shape - - if half_width is not None: - j_l = j_c-half_width - i_l = i_c-half_width - if j_l < 0 or i_l < 0: - return None - - j_r = j_c+half_width+1 - i_r = i_c+half_width+1 - if j_r >= ylen or i_r >= xlen: - return None - else: - j_l = j_c - j_r = j_c + num_j + 1 - i_l = i_c - i_r = i_c + num_i + 1 - - grd_vals = hfds[j_l:j_r, i_l:i_r] - - if fill_value_name is not None: - attr = attrs.get(fill_value_name) - if attr is not None: - if np.isscalar(attr): - fill_value = attr - else: - fill_value = attr[0] - grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) - elif fill_value is not None: - grd_vals = np.where(grd_vals == fill_value, np.nan, grd_vals) - - if valid_range_name is not None: - attr = attrs.get(valid_range_name) - if attr is not None: - low = attr[0] - high = attr[1] - grd_vals = np.where(grd_vals < low, np.nan, grd_vals) - grd_vals = np.where(grd_vals > high, np.nan, grd_vals) - - if scale_factor_name is not None: - attr = attrs.get(scale_factor_name) - if attr is not None: - if np.isscalar(attr): - scale_factor = attr - else: - scale_factor = attr[0] - grd_vals = grd_vals * scale_factor - - if add_offset_name is not None: - attr = attrs.get(add_offset_name) - if attr is not None: - if np.isscalar(attr): - add_offset = attr - else: - add_offset = attr[0] - grd_vals = grd_vals + add_offset - - if actual_range_name is not None: - attr = attrs.get(actual_range_name) - if attr is not None: - low = attr[0] - high = attr[1] - grd_vals = np.where(grd_vals < low, np.nan, grd_vals) - grd_vals = np.where(grd_vals > high, np.nan, grd_vals) - - return grd_vals - - def concat_dict_s(t_dct_0, t_dct_1): keys_0 = list(t_dct_0.keys()) nda_0 = np.array(keys_0) -- GitLab