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

unified signatures of flagGeneric and the implemented test, moved the latter to funcs

parent 2619e769
No related branches found
No related tags found
No related merge requests found
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from funcs import funcs
import funcs
import numpy as np
......@@ -12,19 +12,19 @@ class Fields:
FLAGS = "Flag*"
class Params:
NAME = "name"
FUNC = "func"
FLAGPERIOD = "flag_period"
FLAGVALUES = "flag_values"
FLAG = "flag"
# class Params:
# NAME = "name"
# FUNC = "func"
# FLAGPERIOD = "flag_period"
# FLAGVALUES = "flag_values"
# FLAG = "flag"
FUNCMAP = {
"maintenance": funcs.flagMaintenance,
"man_flag": funcs.flagManual,
"MAD": funcs.flagMad,
"constant": funcs.flagConstant
"manflag": funcs.flagManual,
"mad": funcs.flagMad,
"constant": funcs.flagConstant,
"generic": funcs.flagGeneric
}
NODATA = np.nan
......@@ -6,7 +6,8 @@ from math import ceil
import numpy as np
import pandas as pd
from config import Fields, FUNCMAP, Params, NODATA
from config import Fields, FUNCMAP, NODATA
from funcs import Params
from dsl import evalCondition, parseFlag
from flagger import PositionalFlagger, BaseFlagger
from lib.types import ArrayLike
......@@ -34,14 +35,6 @@ def flagNext(flagger: BaseFlagger, flags: ArrayLike, n: int) -> ArrayLike:
return flags
def flagGeneric(data, flags, field, flagger, **flag_params):
to_flag = evalCondition(
flag_params[Params.FUNC], flagger,
data, flags, field, nodata=NODATA)
fchunk = flagger.setFlag(flags=flags.loc[to_flag, field], **flag_params)
flags.loc[to_flag, field] = fchunk
return flags
......@@ -103,10 +96,7 @@ def flaggingRunner(meta, flagger, data, flags=None):
func = FUNCMAP.get(flag_name, None)
if func:
dchunk, fchunk = func(dchunk, fchunk, varname,
flagger, **flag_params)
elif flag_name == "generic":
fchunk = flagGeneric(dchunk, fchunk, varname,
flagger, **flag_params)
flagger, nodata=NODATA, **flag_params)
else:
raise RuntimeError(
"malformed flag field ('{:}') for variable: {:}"
......
#! /usr/bin/env python
# -*- coding: utf-8 -*-
class Params:
NAME = "name"
FUNC = "func"
FLAGPERIOD = "flag_period"
FLAGVALUES = "flag_values"
FLAG = "flag"
from .functions import *
......@@ -4,9 +4,22 @@
import numpy as np
import pandas as pd
from lib.tools import valueRange, slidingWindowIndices
from dsl import evalCondition
from . import Params
def flagMaintenance(data, flags, field, flagger, **kwargs):
def flagGeneric(data, flags, field, flagger, nodata=np.nan, **flag_params):
to_flag = evalCondition(
flag_params[Params.FUNC], flagger,
data, flags, field, nodata=nodata)
try:
fchunk = flagger.setFlag(flags=flags.loc[to_flag, field], **flag_params)
except:
import ipdb; ipdb.set_trace()
flags.loc[to_flag, field] = fchunk
return data, flags
......
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