forked from awendt/pyrelacs
97 lines
2.2 KiB
Python
97 lines
2.2 KiB
Python
from typing import TypedDict, Union
|
|
from dataclasses import dataclass
|
|
import pathlib
|
|
|
|
import yaml
|
|
from IPython import embed
|
|
|
|
from pyrelacs.util.logging import config_logging
|
|
|
|
log = config_logging()
|
|
|
|
class ValueUnit(TypedDict):
|
|
value: Union[int, float]
|
|
unit: str
|
|
|
|
@dataclass
|
|
class Settings:
|
|
Repros: list[str]
|
|
Path: str
|
|
|
|
|
|
@dataclass
|
|
class Metadata:
|
|
Identifier: str
|
|
Maintainer: str
|
|
Creator: str
|
|
Location: str
|
|
Lab: str
|
|
Institute: str
|
|
University: str
|
|
Address: str
|
|
|
|
@dataclass
|
|
class Input:
|
|
inputsamplerate : ValueUnit
|
|
# BufferSize
|
|
inputtracecapacity : ValueUnit
|
|
inputunipolar : bool
|
|
inputtraceid : list[str]
|
|
inputtracescale : list[int]
|
|
inputtraceunit : list[str]
|
|
inputtracedevice : list[str]
|
|
inputtracechannel : list[int]
|
|
inputtracereference: list[str]
|
|
inputtracemaxvalue : list[int]
|
|
inputtracecenter : list[bool]
|
|
|
|
@dataclass
|
|
class Output:
|
|
outputtraceid : list[str]
|
|
outputtracedevice : list[str]
|
|
outputtracechannel : list[int]
|
|
outputtracescale : list[int]
|
|
outputtraceunit : list[str]
|
|
outputtracemaxrate : list[ValueUnit]
|
|
outputtracemodality: list[str]
|
|
|
|
@dataclass
|
|
class Data:
|
|
input: Input
|
|
output: Output
|
|
|
|
@dataclass
|
|
class SimData:
|
|
input:
|
|
inputsamplerate : 20kHz
|
|
inputtracecapacity : 600s
|
|
output:
|
|
outputtraceid : [ Sinus ]
|
|
outputtracedevice : [ ao-0 ]
|
|
outputtracechannel : [ 0 ]
|
|
outputtracescale : [ 1 ]
|
|
outputtraceunit : [ V ]
|
|
outputtracemaxrate : [ 40kHz ]
|
|
outputtracemodality: [ electric ]
|
|
|
|
@dataclass
|
|
class PyRelacs:
|
|
data: Data
|
|
simdata: SimData
|
|
|
|
@dataclass
|
|
class Config:
|
|
# Path: str
|
|
|
|
@classmethod
|
|
def load_config(cls):
|
|
pyrelacs_config_path = pathlib.Path(__file__).parent / "config.yaml"
|
|
log.debug(pyrelacs_config_path)
|
|
if not pyrelacs_config_path.is_file():
|
|
log.error("Config File was not found")
|
|
with open(pyrelacs_config_path, "r") as config_file:
|
|
try:
|
|
return yaml.full_load(config_file)
|
|
except yaml.YAMLError as e:
|
|
raise yaml.YAMLError(f"Error parsing YAML file: {e}")
|