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
attrs==19.1.0
llvmlite==0.28.0
more-itertools==7.0.0
numba==0.43.1
numba==0.46.0
numpy==1.16.2
pandas==0.24.2
pluggy==0.9.0
......@@ -10,6 +10,5 @@ py==1.8.0
pytest==4.4.0
python-dateutil==2.8.0
pytz==2018.9
PyYAML==5.1
scipy==1.3.0
six==1.12.0
......@@ -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
4. the window is continued by `dx` to the next data-slot.
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
`flagger`
6. all potential outlier, that are detected `count`-many times, are promoted to real outlier and flagged by the `flagger`
:param data: pandas dataframe. holding the data
: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
for i in range(0, len(arr) - wsz + 1, step):
yield i, i + wsz
for start, end in loopfun(d.index, winsz, dx):
# mask points that have been already discarded
mask = counters[start:end] > 0
......
......@@ -19,9 +19,6 @@ def findIndex(iterable, value, start):
while i < len(iterable):
v = iterable[i]
if v >= value:
# if v == value:
# include the end_date if present
# return i + 1
return i
i = i + 1
return -1
......@@ -45,8 +42,9 @@ def slidingWindowIndices(dates, window_size, iter_delta=None):
if isinstance(dates, pd.DataFrame):
dates = dates.index
dates = np.array(dates, dtype=np.int64)
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)
if iter_delta:
......
......@@ -9,9 +9,13 @@ from saqc.flagger.baseflagger import BaseFlagger
from saqc.flagger.dmpflagger import DmpFlagger
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.funcs.spike_detection import (
flagSpikes_SpektrumBased,
flagMad,
slidingOutlier,
flagSpikes_Basic)
TESTFLAGGERS = [
BaseFlagger(['NIL', 'GOOD', 'BAD']),
......@@ -56,16 +60,16 @@ def test_slidingOutlier(spiky_data, flagger, method):
# test for numeric input
data = spiky_data[0].to_frame()
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
_, flag_result = slidingOutlier(data, flags, 'spiky_data', flagger, winsz='1500min', dx='250min', 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])
tests = [
slidingOutlier(data, flags, 'spiky_data', flagger, winsz=300, dx=50, method=method),
slidingOutlier(data, flags, 'spiky_data', flagger, winsz='1500min', dx='250min', method=method)
]
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)
......
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