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

import io
import re

import numpy as np
import pandas as pd

from saqc.core.core import readConfig
David Schäfer's avatar
David Schäfer committed
from saqc.flagger import (
David Schäfer's avatar
David Schäfer committed
    ContinuousFlagger,
    CategoricalFlagger,
David Schäfer's avatar
David Schäfer committed
    SimpleFlagger,
    DmpFlagger,
)
David Schäfer's avatar
David Schäfer committed
TESTNODATA = (np.nan, -9999)


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

def dummyRegisterFunc(data, field, flagger, kwarg, **kwargs):
    return data, flagger


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.strip())
    config = readConfig(fobj, data)
    fobj.seek(0)
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)]
    df.fillna("").to_csv(fobj, index=False, sep=";")
    config = readConfig(fobj, data)
    fobj.seek(0)
    return fobj, config