Skip to content
Snippets Groups Projects
common.py 1.61 KiB
Newer Older
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import io
import re

import numpy as np
import pandas as pd

David Schäfer's avatar
David Schäfer committed
from saqc.core.core import prepareConfig, readConfig
from saqc.flagger.simpleflagger import SimpleFlagger
from saqc.flagger.dmpflagger import DmpFlagger
from saqc.flagger.categoricalflagger import CategoricalBaseFlagger
from saqc.flagger.continuousflagger import ContinuousBaseFlagger
David Schäfer's avatar
David Schäfer committed
TESTNODATA = (np.nan, -9999)


David Schäfer's avatar
David Schäfer committed
TESTFLAGGER = (
    CategoricalBaseFlagger(['NIL', 'GOOD', 'BAD']),
David Schäfer's avatar
David Schäfer committed
    SimpleFlagger(),
    DmpFlagger(),
    ContinuousBaseFlagger(),
David Schäfer's avatar
David Schäfer committed

def initData(cols=2, start_date="2017-01-01", end_date="2017-12-31", freq="1h"):
David Schäfer's avatar
David Schäfer committed
    dates = pd.date_range(start=start_date, end=end_date, freq=freq)
    data = {}
    dummy = np.arange(len(dates))
    for col in range(1, cols+1):
        data[f"var{col}"] = dummy*(col)
    return pd.DataFrame(data, index=dates)
def initMetaString(metastring, data):
    cleaned = re.sub(r"\s*,\s*", r",",
                     re.sub(r"\|", r",",
                            re.sub(r"\n[ \t]+", r"\n",
                                   metastring)))
    fobj = io.StringIO(cleaned)
David Schäfer's avatar
David Schäfer committed
    meta = prepareConfig(readConfig(fobj), data)
    fobj.seek(0)
    return fobj, meta
def _getKeys(metadict):
    keys = list(metadict[0].keys())
    for row in metadict[1:]:
        for k in row.keys():
            if k not in keys:
                keys.append(k)
    return keys


def initMetaDict(config_dict, data):
    df = pd.DataFrame(config_dict)[_getKeys(config_dict)]
David Schäfer's avatar
David Schäfer committed
    meta = prepareConfig(df, data)
    meta.to_csv(fobj, index=False)
    fobj.seek(0)
    return fobj, meta