Skip to content
Snippets Groups Projects
Commit e4627d9a authored by Peter Lünenschloß's avatar Peter Lünenschloß
Browse files

Merge branch 'develop' into SEEFOdataStuff

parents c2e52d8f 0a4e4d9b
No related branches found
No related tags found
2 merge requests!193Release 1.4,!188Release 1.4
Pipeline #7320 canceled with stage
attrs==19.3.0
attrs==20.1.0
Click==7.1.2
cycler==0.10.0
dios==0.6.0
......@@ -9,7 +9,7 @@ joblib==0.16.0
llvmlite==0.34.0
mlxtend==0.17.3
matplotlib==3.3.1
more-itertools==8.4.0
more-itertools==8.5.0
numba==0.51.1
numpy==1.19.1
outlier==0.2
......
......@@ -60,6 +60,9 @@ def _prepInput(flagger, data, flags):
raise TypeError("data should not use MultiIndex")
data = dios.to_dios(data)
if not hasattr(data.columns, "str"):
raise TypeError("expected dataframe columns of type string")
if not isinstance(flagger, BaseFlagger):
# NOTE: we should generate that list automatically,
# it won't ever be complete otherwise
......
......@@ -46,7 +46,7 @@ class BaseFlagger(ABC):
@property
def flags(self):
return self._flags
return self._flags.copy()
def initFlags(self, data: diosT = None, flags: diosT = None) -> BaseFlaggerT:
"""
......@@ -93,10 +93,10 @@ class BaseFlagger(ABC):
raise TypeError(f"flagger of type '{self.__class__}' needed")
if inplace:
self._flags = mergeDios(self.flags, other.flags, subset=subset, join=join)
self._flags = mergeDios(self._flags, other._flags, subset=subset, join=join)
return self
else:
return self.copy(flags=mergeDios(self.flags, other.flags, subset=subset, join=join))
return self.copy(flags=mergeDios(self._flags, other._flags, subset=subset, join=join))
def slice(self, field: FieldsT = None, loc: LocT = None, drop: FieldsT = None, inplace=False) -> BaseFlaggerT:
""" Return a potentially trimmed down copy of self. """
......@@ -137,7 +137,9 @@ class BaseFlagger(ABC):
field = slice(None) if field is None else self._check_field(field)
indexer = (loc, field)
return self.flags.aloc[indexer]
# this is a bug in `dios.aloc`, which may return a shallow copied dios, if `slice(None)` is passed
# as row indexer. Thus is because pandas `.loc` return a shallow copy if a null-slice is passed to a series.
return self._flags.copy().aloc[indexer]
def setFlags(self, field: str, loc: LocT = None, flag: FlagT = None, force: bool = False, inplace=False, **kwargs) -> BaseFlaggerT:
"""Overwrite existing flags at loc.
......@@ -263,12 +265,12 @@ class BaseFlagger(ABC):
# https://git.ufz.de/rdm-software/saqc/issues/46
failed = []
if isinstance(field, str):
if field not in self.flags:
if field not in self._flags:
failed += [field]
else:
try:
for f in field:
if f not in self.flags:
if f not in self._flags:
failed += [f]
# not iterable, probably a slice or
# any indexer we dont have to check
......
......@@ -74,14 +74,14 @@ class DmpFlagger(CategoricalFlagger):
# implicit set self._flags, and make deepcopy of self aka. DmpFlagger
newflagger = super().initFlags(data=data, flags=flags)
newflagger._causes = newflagger.flags.astype(str)
newflagger._comments = newflagger.flags.astype(str)
newflagger._causes = newflagger._flags.astype(str)
newflagger._comments = newflagger._flags.astype(str)
newflagger._causes[:], newflagger._comments[:] = "", ""
return newflagger
def slice(self, field=None, loc=None, drop=None, inplace=False):
newflagger = super().slice(field=field, loc=loc, drop=drop, inplace=inplace)
flags = newflagger.flags
flags = newflagger._flags
newflagger._causes = self._causes.aloc[flags, ...]
newflagger._comments = self._comments.aloc[flags, ...]
return newflagger
......@@ -94,7 +94,7 @@ class DmpFlagger(CategoricalFlagger):
def merge(self, other: DmpFlaggerT, subset: Optional[List] = None, join: str = "merge", inplace=False):
assert isinstance(other, DmpFlagger)
flags = mergeDios(self.flags, other.flags, subset=subset, join=join)
flags = mergeDios(self._flags, other._flags, subset=subset, join=join)
causes = mergeDios(self._causes, other._causes, subset=subset, join=join)
comments = mergeDios(self._comments, other._comments, subset=subset, join=join)
if inplace:
......
alabaster==0.7.12
appdirs==1.4.4
astor==0.8.1
attrs==19.3.0
attrs==20.1.0
Babel==2.8.0
black==20.8b1
certifi==2020.6.20
......@@ -24,7 +24,7 @@ Markdown==3.2.2
MarkupSafe==1.1.1
matplotlib==3.3.1
mlxtend==0.17.2
more-itertools==8.2.0
more-itertools==8.5.0
numba==0.51.1
numpy==1.19.1
outlier==0.2
......@@ -44,7 +44,7 @@ python-intervals==1.10.0
pytz==2019.3
PyWavelets==1.1.1
recommonmark==0.6.0
regex==2020.6.8
regex==2020.7.14
requests==2.24.0
scikit-learn==0.22.1
scipy==1.4.1
......
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