Skip to content
Snippets Groups Projects
test_pattern_rec.py 1.34 KiB
Newer Older
Juliane Geller's avatar
Juliane Geller committed
#! /usr/bin/env python

# SPDX-FileCopyrightText: 2021 Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
#
# SPDX-License-Identifier: GPL-3.0-or-later

Juliane Geller's avatar
Juliane Geller committed
# -*- coding: utf-8 -*-

import pytest
Bert Palm's avatar
Bert Palm committed
import dios
Juliane Geller's avatar
Juliane Geller committed

David Schäfer's avatar
David Schäfer committed
from saqc.constants import BAD, UNFLAGGED
from saqc.core import initFlagsLike
David Schäfer's avatar
David Schäfer committed
from saqc.funcs.pattern import flagPatternByDTW
Bert Palm's avatar
Bert Palm committed
from tests.common import initData
from pandas.testing import assert_series_equal
Juliane Geller's avatar
Juliane Geller committed


@pytest.fixture
def data():
    return initData(cols=1, start_date="2016-01-01", end_date="2018-12-31", freq="1D")


@pytest.fixture
def field(data):
    return data.columns[0]


@pytest.mark.parametrize('plot', [True,False])
@pytest.mark.parametrize('normalize', [True,False])
def test_flagPattern_dtw(plot, normalize):
    data = pd.Series(0, index=pd.date_range(start="2000", end="2001", freq="1d"))
Bert Palm's avatar
Bert Palm committed
    data.iloc[10:18] = [0, 5, 6, 7, 6, 8, 5, 0]
    pattern = data.iloc[10:18]
Juliane Geller's avatar
Juliane Geller committed

    data = dios.DictOfSeries(dict(data=data, pattern_data=pattern))
    flags = initFlagsLike(data, name="data")
Bert Palm's avatar
Bert Palm committed
    data, flags = flagPatternByDTW(
        data,
        "data",
        flags,
        reference="pattern_data",
        plot=plot,
        normalize=normalize,
        flag=BAD,
Juliane Geller's avatar
Juliane Geller committed

Bert Palm's avatar
Bert Palm committed
    assert all(flags["data"].iloc[10:18] == BAD)
    assert all(flags["data"].iloc[:9] == UNFLAGGED)
    assert all(flags["data"].iloc[18:] == UNFLAGGED)