#! /usr/bin/env python # -*- coding: utf-8 -*- import pytest import numpy as np from test.common import initData from saqc.flagger import PositionalFlagger @pytest.fixture def data(): return initData(cols=2) def test_initFlags(data): flagger = PositionalFlagger().initFlags(data=data) assert (flagger.isFlagged() == False).all(axis=None) assert (flagger.flags == flagger.UNFLAGGED).all(axis=None) def test_setFlags(data): flagger = PositionalFlagger().initFlags(data=data) field = data.columns[0] mask = np.zeros(len(data[field]), dtype=bool) mask[1:10:2] = True flagger = flagger.setFlags(field=field, loc=mask, flag=flagger.SUSPICIOUS) assert (flagger.flags.loc[mask, field] == "91").all(axis=None) assert (flagger.flags.loc[~mask, field] == "90").all(axis=None) flagger = flagger.setFlags(field=field, loc=~mask, flag=flagger.BAD) assert (flagger.flags.loc[~mask, field] == "902").all(axis=None) assert (flagger.flags.loc[mask, field] == "910").all(axis=None) assert (flagger.flags[data.columns[1]] == "-1").all(axis=None) def test_isFlagged(data): flagger = PositionalFlagger().initFlags(data=data) field = data.columns[0] mask_sus = np.zeros(len(data[field]), dtype=bool) mask_sus[1:20:2] = True flagger = flagger.setFlags(field=field, loc=mask_sus, flag=flagger.SUSPICIOUS) assert (flagger.isFlagged(field=field, comparator=">=", flag=flagger.SUSPICIOUS)[mask_sus] == True).all(axis=None) assert (flagger.isFlagged(field=field, comparator=">", flag=flagger.SUSPICIOUS) == False).all(axis=None) mask_bad = np.zeros(len(data[field]), dtype=bool) mask_bad[1:10:2] = True flagger = flagger.setFlags(field=field, loc=mask_bad, flag=flagger.BAD) assert (flagger.isFlagged(field=field, comparator=">")[mask_sus] == True).all(axis=None) assert (flagger.isFlagged(field=field, comparator=">=", flag=flagger.BAD)[mask_bad] == True).all(axis=None) assert (flagger.isFlagged(field=field, comparator=">", flag=flagger.BAD) == False).all(axis=None)