diff --git a/saqc/flagger/dmpflagger.py b/saqc/flagger/dmpflagger.py index 10c83de4aa172da55f929316d06e20cd0633cb6d..884679e7d1f5cd082b24e98c2d373d6b1968b7d1 100644 --- a/saqc/flagger/dmpflagger.py +++ b/saqc/flagger/dmpflagger.py @@ -245,3 +245,7 @@ class DmpFlagger(CategoricalFlagger): new._causes = causes new._comments = comments return new + + @property + def SUSPICIOUS(self): + return FLAGS[-2] diff --git a/saqc/flagger/positionalflagger.py b/saqc/flagger/positionalflagger.py index c3a72c7082ff48a4c119591833ed4c6a28bfc857..aa730dfb44fb0fd3b4d4fec5fd3292823511750b 100644 --- a/saqc/flagger/positionalflagger.py +++ b/saqc/flagger/positionalflagger.py @@ -1,13 +1,15 @@ #! /usr/bin/env python # -*- coding: utf-8 -*- +import json from copy import deepcopy import pandas as pd from dios import DictOfSeries from saqc.flagger.baseflagger import BaseFlagger, COMPARATOR_MAP -from saqc.lib.tools import assertScalar, toSequence +from saqc.flagger.dmpflagger import DmpFlagger +from saqc.lib.tools import toSequence FLAGS = ("-1", "0", "1", "2") @@ -105,6 +107,22 @@ class PositionalFlagger(BaseFlagger): data[col_name] = col return DictOfSeries(data) + def toDmpFlagger(self): + self = PositionalFlagger().initFlags(flags=self._flags) + dmp_flagger = DmpFlagger().initFlags(data=self._flags) + flag_map = { + self.BAD: dmp_flagger.BAD, + self.SUSPICIOUS: dmp_flagger.SUSPICIOUS, + self.GOOD: dmp_flagger.GOOD, + } + for pos_flag, dmp_flag in flag_map.items(): + loc = self.isFlagged(flag=pos_flag, comparator="==") + dmp_flagger._flags.aloc[loc] = dmp_flag + + dmp_flagger._comments.loc[:] = self._flags.to_df().applymap(lambda v: json.dumps({"flag": v})) + dmp_flagger._causes.loc[:] = "OTHER" + return dmp_flagger + @property def UNFLAGGED(self): return FLAGS[0]