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

bump up numba version

parent 555102c9
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ atomicwrites==1.3.0 ...@@ -2,7 +2,7 @@ atomicwrites==1.3.0
attrs==19.1.0 attrs==19.1.0
llvmlite==0.28.0 llvmlite==0.28.0
more-itertools==7.0.0 more-itertools==7.0.0
numba==0.43.1 numba==0.46.0
numpy==1.16.2 numpy==1.16.2
pandas==0.24.2 pandas==0.24.2
pluggy==0.9.0 pluggy==0.9.0
...@@ -10,6 +10,5 @@ py==1.8.0 ...@@ -10,6 +10,5 @@ py==1.8.0
pytest==4.4.0 pytest==4.4.0
python-dateutil==2.8.0 python-dateutil==2.8.0
pytz==2018.9 pytz==2018.9
PyYAML==5.1
scipy==1.3.0 scipy==1.3.0
six==1.12.0 six==1.12.0
...@@ -32,8 +32,7 @@ def slidingOutlier(data, flags, field, flagger, winsz, dx, count=1, deg=1, z=3.5 ...@@ -32,8 +32,7 @@ def slidingOutlier(data, flags, field, flagger, winsz, dx, count=1, deg=1, z=3.5
3. the outlier `method` detect potential outlier 3. the outlier `method` detect potential outlier
4. the window is continued by `dx` to the next data-slot. 4. the window is continued by `dx` to the next data-slot.
5. processing continue at 1. until end of data. 5. processing continue at 1. until end of data.
5. all potential outlier, that are detected `count`-many times, are promoted to real outlier and flagged by the 6. all potential outlier, that are detected `count`-many times, are promoted to real outlier and flagged by the `flagger`
`flagger`
:param data: pandas dataframe. holding the data :param data: pandas dataframe. holding the data
:param flags: pandas dataframe. holding the flags :param flags: pandas dataframe. holding the flags
...@@ -108,6 +107,7 @@ def slidingOutlier(data, flags, field, flagger, winsz, dx, count=1, deg=1, z=3.5 ...@@ -108,6 +107,7 @@ def slidingOutlier(data, flags, field, flagger, winsz, dx, count=1, deg=1, z=3.5
for i in range(0, len(arr) - wsz + 1, step): for i in range(0, len(arr) - wsz + 1, step):
yield i, i + wsz yield i, i + wsz
for start, end in loopfun(d.index, winsz, dx): for start, end in loopfun(d.index, winsz, dx):
# mask points that have been already discarded # mask points that have been already discarded
mask = counters[start:end] > 0 mask = counters[start:end] > 0
......
...@@ -19,9 +19,6 @@ def findIndex(iterable, value, start): ...@@ -19,9 +19,6 @@ def findIndex(iterable, value, start):
while i < len(iterable): while i < len(iterable):
v = iterable[i] v = iterable[i]
if v >= value: if v >= value:
# if v == value:
# include the end_date if present
# return i + 1
return i return i
i = i + 1 i = i + 1
return -1 return -1
...@@ -45,8 +42,9 @@ def slidingWindowIndices(dates, window_size, iter_delta=None): ...@@ -45,8 +42,9 @@ def slidingWindowIndices(dates, window_size, iter_delta=None):
if isinstance(dates, pd.DataFrame): if isinstance(dates, pd.DataFrame):
dates = dates.index dates = dates.index
dates = np.array(dates, dtype=np.int64) dates = np.array(dates, dtype=np.int64)
if np.any(np.diff(dates) <= 0): if np.any(np.diff(dates) <= 0):
raise ValueError("strictly monotic index needed") raise ValueError("strictly monotonic index needed")
window_size = pd.to_timedelta(window_size).to_timedelta64().astype(np.int64) window_size = pd.to_timedelta(window_size).to_timedelta64().astype(np.int64)
if iter_delta: if iter_delta:
......
...@@ -9,9 +9,13 @@ from saqc.flagger.baseflagger import BaseFlagger ...@@ -9,9 +9,13 @@ from saqc.flagger.baseflagger import BaseFlagger
from saqc.flagger.dmpflagger import DmpFlagger from saqc.flagger.dmpflagger import DmpFlagger
from saqc.flagger.simpleflagger import SimpleFlagger from saqc.flagger.simpleflagger import SimpleFlagger
from saqc.funcs.spike_detection import flagSpikes_SpektrumBased, flagMad, slidingOutlier, flagSpikes_Basic
from saqc.lib.tools import getPandasData from saqc.lib.tools import getPandasData
from saqc.funcs.spike_detection import (
flagSpikes_SpektrumBased,
flagMad,
slidingOutlier,
flagSpikes_Basic)
TESTFLAGGERS = [ TESTFLAGGERS = [
BaseFlagger(['NIL', 'GOOD', 'BAD']), BaseFlagger(['NIL', 'GOOD', 'BAD']),
...@@ -56,16 +60,16 @@ def test_slidingOutlier(spiky_data, flagger, method): ...@@ -56,16 +60,16 @@ def test_slidingOutlier(spiky_data, flagger, method):
# test for numeric input # test for numeric input
data = spiky_data[0].to_frame() data = spiky_data[0].to_frame()
flags = flagger.initFlags(data) flags = flagger.initFlags(data)
_, flag_result = slidingOutlier(data, flags, 'spiky_data', flagger, winsz=300, dx=50, method=method)
flag_result = getPandasData(flag_result, 0)
test_sum = (flag_result[spiky_data[1]] == flagger.BAD).sum()
assert test_sum == len(spiky_data[1])
# test for offset input tests = [
_, flag_result = slidingOutlier(data, flags, 'spiky_data', flagger, winsz='1500min', dx='250min', method=method) slidingOutlier(data, flags, 'spiky_data', flagger, winsz=300, dx=50, method=method),
flag_result = getPandasData(flag_result, 0) slidingOutlier(data, flags, 'spiky_data', flagger, winsz='1500min', dx='250min', method=method)
test_sum = (flag_result[spiky_data[1]] == flagger.BAD).sum() ]
assert test_sum == len(spiky_data[1])
for _, test_flags in tests:
flag_result = flagger.getFlags(test_flags)
test_sum = (flag_result.iloc[spiky_data[1]] == flagger.BAD).sum()
assert int(test_sum) == len(spiky_data[1])
@pytest.mark.parametrize('flagger', TESTFLAGGERS) @pytest.mark.parametrize('flagger', TESTFLAGGERS)
......
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