Skip to content

Commit 88ef6fb

Browse files
Fix regulation logic to account for listified input
1 parent 850647f commit 88ef6fb

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

sarxarray/_io.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -467,13 +467,20 @@ def _regulate_metadata(metadata, driver):
467467
)
468468

469469
if key in META_ARRAY_KEYS.keys(): # need to regulate this one separately
470-
regulated_array = np.zeros((len(metadata[key]), len(metadata[key][0])))
471-
for row in range(len(metadata[key])):
472-
for col in range(len(metadata[key][row])):
473-
regulated_array[row, col] = META_ARRAY_KEYS[key](
474-
metadata[key][row][col]
475-
)
476-
metadata[key] = np.copy(regulated_array)
470+
regulated_arrays = []
471+
for arr in metadata[key]:
472+
regulated_array = np.zeros((len(arr), len(arr[0])))
473+
for row in range(len(arr)):
474+
for col in range(len(arr[row])):
475+
regulated_array[row, col] = META_ARRAY_KEYS[key](arr[row][col])
476+
regulated_arrays.append(np.copy(regulated_array))
477+
478+
metadata[key] = [
479+
np.copy(regulated_array) for regulated_array in regulated_arrays
480+
]
481+
if len(metadata[key]) == 1:
482+
metadata[key] = metadata[key][0]
483+
477484

478485
else:
479486
# Only keep the unique values

tests/test_io.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ def test_read_metadata_doris4(self, res_files_doris4):
190190

191191
def test_read_metadata_doris5(self, res_files_doris5, caplog):
192192
with caplog.at_level(logging.WARNING): # Last file has a wrong number of pixels
193+
# also catches the multiple orbit warning
193194
metadata = sarxarray.read_metadata(res_files_doris5, driver="doris5")
194195
for key in RE_PATTERNS_DORIS5.keys():
195196
assert key in metadata
@@ -198,9 +199,10 @@ def test_read_metadata_doris5(self, res_files_doris5, caplog):
198199
elif key in META_INT_KEYS:
199200
assert isinstance(metadata[key], int)
200201
elif key in META_ARRAY_KEYS.keys():
201-
assert isinstance(metadata[key], np.ndarray)
202-
assert len(metadata[key].shape) == 2
203-
assert isinstance(metadata[key][0][0], META_ARRAY_KEYS[key])
202+
assert isinstance(metadata[key][0], np.ndarray)
203+
assert len(metadata[key]) == len(res_files_doris5)
204+
assert len(metadata[key][0].shape) == 2
205+
assert isinstance(metadata[key][0][0][0], META_ARRAY_KEYS[key])
204206
for key in RE_PATTERNS_DORIS5_IFG.keys():
205207
assert key in metadata
206208
if key in META_FLOAT_KEYS:
@@ -234,6 +236,10 @@ def test_read_metadata_doris5_onefile(self, res_files_doris5, caplog):
234236
assert isinstance(metadata[key], float)
235237
elif key in META_INT_KEYS:
236238
assert isinstance(metadata[key], int)
239+
elif key in META_ARRAY_KEYS.keys():
240+
assert isinstance(metadata[key], np.ndarray)
241+
assert len(metadata[key].shape) == 2
242+
assert isinstance(metadata[key][0][0], META_ARRAY_KEYS[key])
237243
for key in RE_PATTERNS_DORIS5_IFG.keys():
238244
assert key in metadata
239245
if key in META_FLOAT_KEYS:

0 commit comments

Comments
 (0)