Skip to content

Commit

Permalink
Fix HDF5 utility file handler not decoding byte arrays consistently
Browse files Browse the repository at this point in the history
  • Loading branch information
djhoese committed Nov 4, 2020
1 parent 9ccddbf commit 14d9681
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
16 changes: 10 additions & 6 deletions satpy/readers/hdf5_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def __init__(self, filename, filename_info, filetype_info):
super(HDF5FileHandler, self).__init__(
filename, filename_info, filetype_info)
self.file_content = {}
self._attrs_cache = {}

try:
file_handle = h5py.File(self.filename, 'r')
Expand All @@ -51,20 +52,22 @@ def __init__(self, filename, filename_info, filetype_info):
file_handle.close()

def _collect_attrs(self, name, attrs):
attrs_cache = self._attrs_cache.setdefault(name, {})
for key, value in attrs.items():
value = np.squeeze(value)
fc_key = "{}/attr/{}".format(name, key)
try:
self.file_content[fc_key] = np2str(value)
value = np2str(value)
except ValueError:
self.file_content[fc_key] = value
# use the original value
pass
except AttributeError:
# A HDF5 reference ?
value = self.get_reference(name, key)
if value is None:
LOG.warning("Value cannot be converted - skip setting attribute %s", fc_key)
else:
self.file_content[fc_key] = value
continue
self.file_content[fc_key] = attrs_cache[key] = value

def get_reference(self, name, key):
"""Get reference."""
Expand Down Expand Up @@ -94,9 +97,10 @@ def __getitem__(self, key):
# these datasets are closed and inaccessible when the file is closed, need to reopen
dset = h5py.File(self.filename, 'r')[key]
dset_data = da.from_array(dset, chunks=CHUNK_SIZE)
attrs = self._attrs_cache.get(key, dset.attrs)
if dset.ndim == 2:
return xr.DataArray(dset_data, dims=['y', 'x'], attrs=dset.attrs)
return xr.DataArray(dset_data, attrs=dset.attrs)
return xr.DataArray(dset_data, dims=['y', 'x'], attrs=attrs)
return xr.DataArray(dset_data, attrs=attrs)

return val

Expand Down
12 changes: 4 additions & 8 deletions satpy/readers/hy2_scat_l2b_h5.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,12 @@ def get_dataset(self, key, info):
dims = ['y', 'x']
if self[key['name']].ndim == 3:
dims = ['y', 'x', 'selection']
data = self[key['name']]
if key['name'] in 'wvc_row_time':
data = xr.DataArray(da.from_array(self[key['name']][:]),
attrs={'fill_value': self[key['name']].attrs['fill_value']},
name=key['name'],
dims=['y', ])
data = data.rename({data.dims[0]: 'y'})
else:
data = xr.DataArray(da.from_array(self[key['name']][:],
chunks=CHUNK_SIZE),
name=key['name'], dims=dims)

dim_map = {curr_dim: new_dim for curr_dim, new_dim in zip(data.dims, dims)}
data = data.rename(dim_map)
data = self._mask_data(key['name'], data)
data = self._scale_data(key['name'], data)

Expand Down

0 comments on commit 14d9681

Please sign in to comment.