Skip to content
Snippets Groups Projects
common.py 1.37 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 prepareMeta, readMeta
David Schäfer's avatar
David Schäfer committed
from saqc.flagger import SimpleFlagger, DmpFlagger
from saqc.core.config import Fields as F
David Schäfer's avatar
David Schäfer committed
TESTNODATA = (np.nan, -9999)


David Schäfer's avatar
David Schäfer committed
TESTFLAGGER = (SimpleFlagger(), DmpFlagger())

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)
    meta = prepareMeta(readMeta(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(metadict, data):
    df = pd.DataFrame(metadict)[_getKeys(metadict)]
    meta = prepareMeta(df, data)
    meta.to_csv(fobj, index=False)
    fobj.seek(0)
    return fobj, meta