Skip to content
Snippets Groups Projects
Commit 5f3d5417 authored by Bert Palm's avatar Bert Palm 🎇
Browse files

added tests for flagger.replaceField and flagger.getFlags(..,full=True)

parent c905e58d
No related branches found
No related tags found
1 merge request!117rm flagger.rename in favor of flagger.replaceField
Pipeline #8415 passed with stage
in 5 minutes and 22 seconds
......@@ -113,16 +113,3 @@ def test_sliceFlaggerDrop(data):
assert (filtered._comments.to_df().index == expected.index).all(axis=None)
assert (filtered._causes.to_df().index == expected.index).all(axis=None)
def test_rename(data_4cols):
new_name = "mysterious"
cols = pd.Index(["var1", "var2", new_name, "var4"])
cols = cols.rename(data_4cols.columns.name)
flagger = DmpFlagger().initFlags(data_4cols)
new_flagger = flagger.rename(data_4cols.columns[2], new_name)
new_flagger.getFlags(new_name)
assert new_flagger._causes.columns.equals(cols)
assert new_flagger._comments.columns.equals(cols)
assert new_flagger._flags.columns.equals(cols)
......@@ -597,3 +597,90 @@ def test_classicUseCases(data, flagger):
dt_idx = data[field].iloc[indices].index
flagged = flagger.setFlags(field, loc=dt_idx, flag=flagger.BAD).isFlagged(field)
assert (flagged.iloc[indices] == flagged[flagged]).all()
@pytest.mark.parametrize("data", DATASETS)
@pytest.mark.parametrize("flagger", TESTFLAGGER)
def test_getFlagsWithExtras(data, flagger):
flagger = flagger.initFlags(data)
field, *_ = data.columns
flags, extra = flagger.getFlags(field, full=True)
assert isinstance(flags, pd.Series)
assert isinstance(extra, dict)
for k, v in extra.items():
assert isinstance(v, pd.Series)
assert flags.index.equals(v.index)
flags, extra = flagger.getFlags(full=True)
assert isinstance(flags, dios.DictOfSeries)
assert isinstance(extra, dict)
for k, v in extra.items():
assert isinstance(v, dios.DictOfSeries)
assert flags.columns.equals(v.columns)
for c in flags:
assert flags[c].index.equals(v[c].index)
@pytest.mark.parametrize("data", DATASETS)
@pytest.mark.parametrize("flagger", TESTFLAGGER)
def test_replace_delete(data, flagger):
flagger = flagger.initFlags(data)
field, *_ = data.columns
newflagger = flagger.replaceField(field=field, flags=None)
new, newextra = newflagger.getFlags(full=True)
assert field not in newflagger.flags
for k in newextra:
assert field not in newextra[k]
with pytest.raises(ValueError):
flagger.replaceField(field="i_dont_exist", flags=None)
@pytest.mark.parametrize("data", DATASETS)
@pytest.mark.parametrize("flagger", TESTFLAGGER)
def test_replace_insert(data, flagger):
flagger = flagger.initFlags(data)
field, *_ = data.columns
newfield = 'fooo'
flags, extra = flagger.getFlags(field, full=True)
newflagger = flagger.replaceField(field=newfield, flags=flags, **extra)
old, oldextra = flagger.getFlags(full=True)
new, newextra = newflagger.getFlags(full=True)
assert newfield in newflagger.flags
assert (newflagger._flags[newfield] == flagger._flags[field]).all()
assert newflagger._flags[newfield] is not flagger._flags[field] # not a copy
for k in newextra:
assert newfield in newextra[k]
assert (newextra[k][newfield] == oldextra[k][field]).all()
@pytest.mark.parametrize("data", DATASETS)
@pytest.mark.parametrize("flagger", TESTFLAGGER)
def test_replace_replace(data, flagger):
flagger = flagger.initFlags(data)
field, *_ = data.columns
flags, extra = flagger.getFlags(field, full=True)
# set everything to DOUBTFUL
flags[:] = flagger.BAD
for k, v in extra.items():
v[:] = flagger.BAD
extra[k] = v
newflagger = flagger.replaceField(field=field, flags=flags, **extra)
old, oldextra = flagger.getFlags(full=True)
new, newextra = newflagger.getFlags(full=True)
assert old.columns.equals(new.columns)
assert (new[field] == flagger.BAD).all()
assert oldextra.keys() == newextra.keys()
for k in newextra:
o, n = oldextra[k], newextra[k]
assert n.columns.equals(o.columns)
assert (n[field] == flagger.BAD).all()
......@@ -85,13 +85,12 @@ def test_resample(course_5, flagger):
assert np.isnan(data1[field].iloc[1])
assert np.isnan(data1[field].iloc[2])
@pytest.mark.parametrize("flagger", TESTFLAGGER)
def test_interpolateGrid(course_5, course_3, flagger):
data, _ = course_5()
data_grid, characteristics = course_3()
data['grid']=data_grid.to_df()
#data = dios.DictOfSeries(data)
data['grid'] = data_grid.to_df()
# data = dios.DictOfSeries(data)
flagger = flagger.initFlags(data)
dataInt, *_ = proc_interpolateGrid(data, 'data', flagger, '1h', 'time', grid_field='grid', inter_limit=10)
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