From 6dbb6ce0033da02b007e0adee93ab240031b3dc5 Mon Sep 17 00:00:00 2001 From: Amelie Date: Fri, 7 Jun 2024 11:26:45 +0200 Subject: [PATCH] fix: calculate valid_mask from bias_var --- xdem/coreg/biascorr.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xdem/coreg/biascorr.py b/xdem/coreg/biascorr.py index 1edfb697..3c99e600 100644 --- a/xdem/coreg/biascorr.py +++ b/xdem/coreg/biascorr.py @@ -193,11 +193,17 @@ def _fit_biascorr( # type: ignore if all(isinstance(dem, (da.Array, Delayed)) for dem in (ref_elev, tba_elev)): diff = da.subtract(ref_elev, tba_elev) + # calculate the valid mask from which to sample from + data = [inlier_mask, da.isfinite(diff), *(da.isfinite(var) for var in bias_vars.values())] + valid_mask = da.map_blocks( + lambda *arrays: np.logical_and.reduce(arrays), *data, chunks=inlier_mask.chunks, dtype="bool" + ) + # clearing some memory del ref_elev, tba_elev # TODO the output is called mask but it's the indices. Find a nicer way to handle this - subsample_mask = self._get_subsample_indices_dask(data=inlier_mask) + subsample_mask = self._get_subsample_indices_dask(data=valid_mask) else: diff = ref_elev - tba_elev valid_mask = np.logical_and.reduce(