From 4a190f44883fd5a4e7f5eadf785defa936d5f403 Mon Sep 17 00:00:00 2001 From: David Schaefer <david.schaefer@ufz.de> Date: Thu, 26 Aug 2021 12:56:46 +0200 Subject: [PATCH] [FIX] flagMissing needs to be masking="none" as we otherwise likely flag the masked values --- saqc/funcs/breaks.py | 13 +++++++++++-- saqc/funcs/flagtools.py | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/saqc/funcs/breaks.py b/saqc/funcs/breaks.py index ae6791afd..4d34a550a 100644 --- a/saqc/funcs/breaks.py +++ b/saqc/funcs/breaks.py @@ -20,16 +20,22 @@ from saqc.constants import * from saqc.lib.tools import groupConsecutives from saqc.lib.types import FreqString, ColumnName, IntegerWindow from saqc.funcs.changepoints import assignChangePointCluster -from saqc.core import flagging, Flags +from saqc.core.flags import Flags +from saqc.core.history import History +from saqc.core.register import _isflagged, flagging -@flagging(masking="field", module="breaks") +# NOTE: +# masking="none" as we otherwise might interprete +# the masked values as missing data +@flagging(masking="none", module="breaks") def flagMissing( data: DictOfSeries, field: ColumnName, flags: Flags, nodata: float = np.nan, flag: float = BAD, + to_mask: float = UNFLAGGED, **kwargs ) -> Tuple[DictOfSeries, Flags]: """ @@ -55,11 +61,14 @@ def flagMissing( flags : saqc.Flags The quality flags of data """ + datacol = data[field] + if np.isnan(nodata): mask = datacol.isna() else: mask = datacol == nodata + mask = ~_isflagged(flags[field], to_mask) & mask flags[mask, field] = flag return data, flags diff --git a/saqc/funcs/flagtools.py b/saqc/funcs/flagtools.py index c5553dde9..f75730b0c 100644 --- a/saqc/funcs/flagtools.py +++ b/saqc/funcs/flagtools.py @@ -82,6 +82,7 @@ def clearFlags( forceFlags : set whole column to a flag value flagUnflagged : set flag value at all unflagged positions """ + # NOTE: do we really need this? if "flag" in kwargs: kwargs = {**kwargs} # copy flag = kwargs.pop("flag") -- GitLab