Skip to content
Snippets Groups Projects
Commit 3a54ff64 authored by Bert Palm's avatar Bert Palm 🎇
Browse files

rm _dslAggregateFunc

parent 91b39fab
No related branches found
No related tags found
1 merge request!13Evaluator rework - propagate flags through evaluation
Pipeline #2469 passed with stage
in 6 minutes and 54 seconds
...@@ -18,9 +18,6 @@ from saqc.core.evaluator.transformer import ConfigTransformer ...@@ -18,9 +18,6 @@ from saqc.core.evaluator.transformer import ConfigTransformer
def _dslIsFlagged(flagger, data, flag=None): def _dslIsFlagged(flagger, data, flag=None):
return flagger.isFlagged(data.name, flag=flag) return flagger.isFlagged(data.name, flag=flag)
def _dslAggregateFunc(func, flagger, data):
flags = flagger.isFlagged(data.name)
return func(data.mask(flags))
def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: float) -> Dict[str, Any]: def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: float) -> Dict[str, Any]:
...@@ -39,9 +36,9 @@ def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: f ...@@ -39,9 +36,9 @@ def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: f
"abs": np.abs, "abs": np.abs,
"max": np.nanmax, "max": np.nanmax,
"min": np.nanmin, "min": np.nanmin,
"mean": partial(_dslAggregateFunc, np.nanmean, flagger), "mean": np.nanmean,
"sum": partial(_dslAggregateFunc, np.nansum, flagger), "sum": np.nansum,
"std": partial(_dslAggregateFunc, np.nanstd, flagger), "std": np.nanstd,
"len": len, "len": len,
"variables": set(data.columns.tolist() + flagger.getFlags().columns.tolist()), "variables": set(data.columns.tolist() + flagger.getFlags().columns.tolist()),
} }
...@@ -69,14 +66,12 @@ def compileExpression(expr, data, field, flagger, nodata=np.nan): ...@@ -69,14 +66,12 @@ def compileExpression(expr, data, field, flagger, nodata=np.nan):
def evalExpression(expr, data, field, flagger, nodata=np.nan): def evalExpression(expr, data, field, flagger, nodata=np.nan):
# NOTE:
# mask the already flagged value to make all the functions # mask the already flagged value to make all the functions
# called on the way through the evaluator ignore flagged values # called on the way through the evaluator ignore flagged values
# mask = flagger.isFlagged() mask = flagger.isFlagged()
# data_in = data.mask(mask) data_in = data.mask(mask)
local_env, code = compileExpression(expr, data, field, flagger, nodata) local_env, code = compileExpression(expr, data_in, field, flagger, nodata)
data_result, flagger_result = evalCode(code, FUNC_MAP, local_env) data_result, flagger_result = evalCode(code, FUNC_MAP, local_env)
# NOTE:
# reinject the original values, as we don't want to loose them # reinject the original values, as we don't want to loose them
# data_result[mask] = data[mask] data_result[mask] = data[mask]
return data_result, flagger_result return data_result, flagger_result
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment