From 0c9e4a9bb2030579191e2c813c8d57d866dcae8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= <mueller.seb@posteo.de> Date: Mon, 17 Jul 2023 17:59:04 +0200 Subject: [PATCH] info: better fail info for mask missmatch --- src/finam/data/grid_tools.py | 10 ++++++++-- src/finam/data/tools.py | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/finam/data/grid_tools.py b/src/finam/data/grid_tools.py index 7cd370a7..050cd1c4 100644 --- a/src/finam/data/grid_tools.py +++ b/src/finam/data/grid_tools.py @@ -24,8 +24,14 @@ def check_mask_equal(grid1, grid2): if mask1 is None and mask2 is None: return True # only one None is not fine - if mask1 is None or mask2 is None: - return False + # if mask1 is None or mask2 is None: + # return False + + # None mask and no masked values are equally fine + if mask1 is None: + return not np.any(mask2) + if mask2 is None: + return not np.any(mask1) # compare return np.all(grid1.to_canonical(mask1) == grid2.to_canonical(mask2)) diff --git a/src/finam/data/tools.py b/src/finam/data/tools.py index 08471f3a..9b02e89a 100644 --- a/src/finam/data/tools.py +++ b/src/finam/data/tools.py @@ -11,6 +11,7 @@ from ..errors import FinamDataError, FinamMetaDataError # pylint: disable-next=unused-import from . import cf_units, grid_spec from .grid_base import Grid, GridBase +from .grid_tools import check_mask_equal # set default format to cf-convention for pint.dequantify # some problems with degree_Celsius and similar here @@ -657,6 +658,19 @@ class Info: if self.grid is not None and not self.grid.compatible_with(incoming.grid): if not (ignore_none and incoming.grid is None): fail_info["grid"] = (incoming.grid, self.grid) + if not check_mask_equal(self.grid, incoming.grid): + in_mask = ( + np.sum(incoming.grid.mask) + if incoming.grid.mask is not None + else 0 + ) + out_mask = ( + np.sum(self.grid.mask) if self.grid.mask is not None else 0 + ) + fail_info["mask"] = ( + f"{in_mask} point(s) masked", + f"{out_mask} point(s) masked", + ) success = False for k, v in self.meta.items(): -- GitLab