From c96293fd93112db34d7c894d636cfc9435fecbfb Mon Sep 17 00:00:00 2001 From: David Schaefer <david.schaefer@ufz.de> Date: Wed, 12 Jun 2019 13:19:31 +0200 Subject: [PATCH] removed the getFlags method from the flagger inetrface --- core.py | 8 ++++---- flagger/baseflagger.py | 12 ++++-------- flagger/dmpflagger.py | 19 ++++--------------- 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/core.py b/core.py index a389b50fb..ecc803d50 100644 --- a/core.py +++ b/core.py @@ -99,8 +99,8 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan): raise NameError( f"function name {func_name} is not definied (variable '{varname}, 'line: {idx + 1})") - old = flagger.getFlags(fchunk[varname]) - new = flagger.getFlags(ffchunk[varname]) + old = flagger.isFlagged(fchunk[varname]) + new = flagger.isFlagged(ffchunk[varname]) mask = old != new # flag a timespan after the condition is met @@ -258,7 +258,7 @@ def readData(fname, index_col, nans): if __name__ == "__main__": - from flagger import PositionalFlagger + from flagger import DmpFlagger datafname = "resources/data.csv" metafname = "resources/meta.csv" @@ -267,5 +267,5 @@ if __name__ == "__main__": nans=["-9999", "-9999.0"]) meta = prepareMeta(pd.read_csv(metafname), data) - flagger = PositionalFlagger() + flagger = DmpFlagger() pdata, pflags = runner(meta, flagger, data) diff --git a/flagger/baseflagger.py b/flagger/baseflagger.py index e8705cb93..3c8a93121 100644 --- a/flagger/baseflagger.py +++ b/flagger/baseflagger.py @@ -44,7 +44,7 @@ class BaseFlagger: if flag is None: flag = self.flags.max() else: - self._check_flag(flag) + self._checkFlag(flag) flags = flags.copy() flags[flags < flag] = flag return flags.values @@ -57,14 +57,10 @@ class BaseFlagger: def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike: if flag is None: return pd.notnull(flags) & (flags > self.flags[0]) - else: - self._check_flag(flag) - return flags >= flag - - def getFlags(self, flags: ArrayLike): - return flags + self._checkFlag(flag) + return flags == flag - def _check_flag(self, flag): + def _checkFlag(self, flag): if flag not in self.flags: raise ValueError(f"Invalid flag '{flag}'. " f"Possible choices are {list(self.flags.categories)[1:]}") diff --git a/flagger/dmpflagger.py b/flagger/dmpflagger.py index e6ea00f3e..49642b677 100644 --- a/flagger/dmpflagger.py +++ b/flagger/dmpflagger.py @@ -46,7 +46,7 @@ class DmpFlagger(BaseFlagger): if flag is None: flag = self.flags.max() else: - self._check_flag(flag) + self._checkFlag(flag) flags = self._reduceColumns(flags) mask = flags[FlagFields.FLAG] < flag @@ -55,20 +55,9 @@ class DmpFlagger(BaseFlagger): return flags.values def isFlagged(self, flags, flag=None): - f = self.getFlags(flags) - return super().isFlagged(f, flag) - - def getFlags(self, flags): - if isinstance(flags, pd.Series): - f = flags - elif isinstance(flags, pd.DataFrame): - if isinstance(flags.columns, pd.MultiIndex): - f = flags.xs(FlagFields.FLAG, level=ColumnLevels.FLAGS, axis=1) - else: - f = flags.loc[:, FlagFields.FLAG] - else: - raise TypeError - return f.squeeze() + flags = self._reduceColumns(flags) + flagcol = flags.loc[:, FlagFields.FLAG].squeeze() + return super().isFlagged(flagcol, flag) def _reduceColumns(self, flags): flags = flags.copy() -- GitLab