Skip to content
Snippets Groups Projects
Commit ca1c9de1 authored by David Schäfer's avatar David Schäfer
Browse files

some nice simplifications to the evaluator

parent 5d629662
No related branches found
No related tags found
No related merge requests found
......@@ -13,8 +13,6 @@ from saqc.core.config import Params
from saqc.funcs.register import FUNC_MAP
def _dslInner(flagger, func, data):
return func(data.mask(flagger.isFlagged(data.name)))
def _dslIsFlagged(flagger, data, flag=None):
......@@ -22,9 +20,8 @@ def _dslIsFlagged(flagger, data, flag=None):
def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: float) -> Dict[str, Any]:
partialInner = partial(_dslInner, flagger)
return {
"data": data,
"data": data.mask(flagger.isFlagged()),
"field": field,
"this": field,
"flagger": flagger,
......@@ -37,13 +34,13 @@ def initLocalEnv(data: pd.DataFrame, field: str, flagger: BaseFlagger, nodata: f
"ismissing": lambda data: ((data == nodata) | pd.isnull(data)),
"isflagged": partial(_dslIsFlagged, flagger),
"abs": partial(partialInner, np.abs),
"max": partial(partialInner, np.nanmax),
"min": partial(partialInner, np.nanmin),
"mean": partial(partialInner, np.nanmean),
"sum": partial(partialInner, np.nansum),
"std": partial(partialInner, np.nanstd),
"len": partial(partialInner, len),
"abs": np.abs,
"max": np.nanmax,
"min": np.nanmin,
"mean": np.nanmean,
"sum": np.nansum,
"std": np.nanstd,
"len": len,
}
......
......@@ -20,7 +20,7 @@ def compileExpression(expr, flagger, nodata=np.nan):
data = initData()
field = data.columns[0]
tree = parseExpression(expr)
env = initLocalEnv(data, field, flagger, nodata)
env = initLocalEnv(data, field, flagger.initFlags(data), nodata)
dsl_transformer = DslTransformer(env, {})
transformed_tree = MetaTransformer(dsl_transformer, flagger.signature).visit(tree)
code = compileTree(transformed_tree)
......
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