Newer
Older
# SPDX-FileCopyrightText: 2021 Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
#
# SPDX-License-Identifier: GPL-3.0-or-later
import numpy as np
import pandas as pd
David Schäfer
committed
def flagAll(data, field, flags, **kwargs):
# NOTE: remember to rename flag -> flag_values
flags.copy()
flags[:, field] = BAD
return data, flags
cols=2, start_date="2017-01-01", end_date="2017-12-31", freq=None, rows=None
dates = pd.date_range(start=start_date, end=end_date, freq=freq, periods=rows)
di[f"var{col}"] = pd.Series(data=dummy * col, index=dates)
return di
def dummyHistory(hist: pd.DataFrame = None, meta: list = None):
if hist is None:
return History()
if meta is None:
meta = [{}] * len(hist.columns)
return createHistoryFromData(hist, meta, copy=True)
def writeIO(content):
f = io.StringIO()
f.write(content)
f.seek(0)
return f
David Schäfer
committed
def checkDataFlagsInvariants(data, flags, field, identical=True):
"""
Check all invariants that must hold at any point for
* field
* data
* flags
* flags[field]
* flags[field].index
* between data and flags
* between data[field] and flags[field]
Parameters
----------
data : dios.DictOfSeries
data container
flags : Flags
flags container
field : str
the field in question
identical : bool, default True
whether to check indexes of data and flags to be
identical (True, default) of just for equality.
"""
assert isinstance(data, dios.DictOfSeries)
assert isinstance(flags, Flags)
# all columns in data are in flags
assert data.columns.difference(flags.columns).empty
# ------------------------------------------------------------------------
# below here, we just check on and with field
# ------------------------------------------------------------------------
assert field in data
assert field in flags
assert flags[field].dtype == float
# `pd.Index.identical` also check index attributes like `freq`
if identical:
assert data[field].index.identical(flags[field].index)
assert data[field].index.equals(flags[field].index)