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

import io
import re

import numpy as np
import pandas as pd
Bert Palm's avatar
Bert Palm committed
import dios.dios as dios
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(),
Bert Palm's avatar
Bert Palm committed
    # DmpFlagger(),
Bert Palm's avatar
Bert Palm committed
    # ContinuousFlagger(),
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)
Bert Palm's avatar
Bert Palm committed
    return dios.DictOfSeries(data)
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