From 57e7497947db76755885f746d38f5abbe67b1dc0 Mon Sep 17 00:00:00 2001 From: Bert Palm <bert.palm@ufz.de> Date: Wed, 24 Apr 2019 17:01:18 +0200 Subject: [PATCH] simplified evaluator --- dsl/evaluator.py | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/dsl/evaluator.py b/dsl/evaluator.py index f91586190..88bfc0116 100644 --- a/dsl/evaluator.py +++ b/dsl/evaluator.py @@ -110,34 +110,21 @@ def evalExpression(expr: str, flagger: BaseFlagger, fcols = fidx.values dcols = namespace["data"].columns.values - if namespace.get("target") == "flags": - # We are forced to work on flags + try: if field in fcols: - out = namespace["flags"][field] - elif field in dcols: - # Up to now there are no flagging information on the requested - # field, so return a fresh new unflagged vector - datacol = namespace["data"][field] - dummy = pd.DataFrame(index=datacol.index, columns=[field]) - out = flagger.initFlags(dummy) - else: - _raiseNameError(field, expr) - - elif field in dcols and field in fcols: - # Return all unflagged (original) data - datacol = namespace["data"][field] - flagcol = namespace["flags"][field] - out = np.ma.masked_array(datacol, mask=flagger.isFlagged(flagcol)) - - elif field in dcols and field not in fcols: - # Return all data, because we have no flagging information - out = namespace["data"][field].values - - elif field not in dcols and field in fcols: - # Return only flag information, because we have no data - out = namespace["flags"][field].values + flagcol = namespace["flags"][field] + out = flagcol - else: + if namespace.get("target") != "flags": + + if field in dcols: + datacol = namespace["data"][field] + out = datacol + + if field in dcols and field in fcols: + out = np.ma.masked_array(datacol, mask=flagger.isFlagged(flagcol)) + + except KeyError: _raiseNameError(field, expr) return out -- GitLab