Compare commits

...

3 Commits

4 changed files with 137 additions and 92 deletions

15
poetry.lock generated
View File

@ -142,6 +142,19 @@ files = [
docs = ["ipython", "matplotlib", "numpydoc", "sphinx"]
tests = ["pytest", "pytest-cov", "pytest-xdist"]
[[package]]
name = "dacite"
version = "1.8.1"
description = "Simple creation of data classes from dictionaries."
optional = false
python-versions = ">=3.6"
files = [
{file = "dacite-1.8.1-py3-none-any.whl", hash = "sha256:cc31ad6fdea1f49962ea42db9421772afe01ac5442380d9a99fcf3d188c61afe"},
]
[package.extras]
dev = ["black", "coveralls", "mypy", "pre-commit", "pylint", "pytest (>=5)", "pytest-benchmark", "pytest-cov"]
[[package]]
name = "decorator"
version = "5.1.1"
@ -1235,4 +1248,4 @@ files = [
[metadata]
lock-version = "2.0"
python-versions = ">=3.11, <3.13"
content-hash = "4dc01682622b8aa364feedb15edecf3d3a9bffc9979e92bbbac118a43d0bbae8"
content-hash = "f10a3cf403151d2c96c5c45a546860eaa3883d47cdc8d719a3e49ad0d4bb95d4"

View File

@ -34,6 +34,7 @@ pyqtgraph = "^0.13.7"
pytest = "^8.3.3"
pglive = "^0.7.6"
pyyaml = "^6.0.2"
dacite = "^1.8.1"
[tool.poetry.scripts]
pyrelacs = "pyrelacs.app:main"

View File

@ -1,70 +1,71 @@
Settings:
Repros: [Calibration, Sinus]
Path: ~/projects/pyrelacs/test/
settings:
repros: [calibration, sinus]
path: ~/projects/pyrelacs/test/
Metadata:
Identifier (Name): Setup1
metadata:
SetupName : Setup1
Maintainer : Your name
Creator : Whoever
Location (Room) : virtual
SetupLocation : virtual
Lab : XYZ-Lab
Institute : Your institute
University : Your university
Address : Your institute's address
PyRelacs:
Data:
pyrelacs:
data:
input:
inputsamplerate : {value: 20, unit: kHz}
inputsamplerate : 20
inputsamplerateunit : kHz
# BufferSize
inputtracecapacity : 600s
inputunipolar : false
inputtraceid : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ]
inputtracescale : [ 100, 1, 10, 1 ]
inputtraceunit : [ mV, mV, mV, mV ]
inputtracedevice : [ ai-1, ai-1, ai-1, ai-1 ]
inputtracechannel : [ 0, 2, 4, 6 ]
inputtracereference: [ ground, ground, ground, ground ]
inputtracemaxvalue : [ 100, 2, 2, 10 ]
inputtracecenter : [ true, false, false, false ]
inputtracecapacity : 600
inputtracecapacityunit : s
inputunipolar : false
inputtraceid : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ]
inputtracescale : [ 100, 1, 10, 1 ]
inputtraceunit : [ mV, mV, mV, mV ]
inputtracedevice : [ ai-1, ai-1, ai-1, ai-1 ]
inputtracechannel : [ 0, 2, 4, 6 ]
inputtracereference : [ ground, ground, ground, ground ]
inputtracemaxvalue : [ 100, 2, 2, 10 ]
inputtracecenter : [ true, false, false, false ]
output:
outputtraceid : [ GlobalEField, GlobalEFieldAM, LocalEField, I ]
outputtracedevice : [ ao-1, ao-1, ao-1, ao-1 ]
outputtracechannel : [ 0, 1, 2, 3 ]
outputtracescale : [ 1, 1, 1, 1 ]
outputtraceunit : [ V, V, V, V ]
outputtracemaxrate : [ 40kHz, 40kHz, 40kHz, 40kHz ]
outputtracemodality: [ electric, electric, electric, current ]
outputtraceid : [ GlobalEField, GlobalEFieldAM, LocalEField, I ]
outputtracedevice : [ ao-1, ao-1, ao-1, ao-1 ]
outputtracechannel : [ 0, 1, 2, 3 ]
outputtracescale : [ 1, 1, 1, 1 ]
outputtraceunit : [ V, V, V, V ]
outputtracemaxrate : [ 40, 40, 40, 40]
outputtracemaxrateunit : [kHz, kHz, kHz, kHz]
outputtracemodality : [ electric, electric, electric, current ]
SimData:
Sinus:
input:
inputsamplerate : 20kHz
inputtracecapacity : 600s
output:
outputtraceid : [ Sinus ]
outputtracedevice : [ ao-0 ]
outputtracechannel : [ 0 ]
outputtracescale : [ 1 ]
outputtraceunit : [ V ]
outputtracemaxrate : [ 40kHz ]
outputtracemodality: [ electric ]
sinus:
inputsamplerate : 20
inputsamplerateunit : kHz
# BufferSize
inputtracecapacity : 600
inputtracecapacityunit : s
outputtraceid : [ Sinus ]
outputtracedevice : [ ao-0 ]
outputtracechannel : [ 0 ]
outputtracescale : [ 1 ]
outputtraceunit : [ V ]
outputtracemaxrate : [ 40 ]
outputtracemaxrateunit : [kHz]
outputtracemodality : [ electric ]
Devices:
devices:
DAQFlexCore:
AnalogOutputPins: [0,1]
AnalogInputPinsHigh: [0,1,2,3,4,5,6,7]
AnalogInputPinsLow: [1,2]
DigitalPins: [0,1,2,3]
analogoutputpins : [0,1]
analoginputpinshigh : [0,1,2,3,4,5,6,7]
analoginputpinslow : [1,2]
digitalpins : [0,1,2,3]
CS3310DIO:
ident : attdev-1
strobepin : 6
datainpin : 5
dataoutpin: -1
cspin : 4
mutepin : 7
zcenpin : -1
ident : attdev-1
strobepin : 6
datainpin : 5
dataoutpin : -1
cspin : 4
mutepin : 7
zcenpin : -1

View File

@ -2,86 +2,105 @@ from typing import TypedDict, Union
from dataclasses import dataclass
import pathlib
import dacite
import yaml
from dacite import from_dict
from IPython import embed
from pyrelacs.util.logging import config_logging
log = config_logging()
class ValueUnit(TypedDict):
value: Union[int, float]
@dataclass
class ValueUnit:
value: int
unit: str
@dataclass
class Settings:
Repros: list[str]
Path: str
repros: list[str]
path: str
@dataclass
class Metadata:
Identifier: str
SetupName: str
Maintainer: str
Creator: str
Location: str
SetupLocation: str
Lab: str
Institute: str
University: str
Address: str
@dataclass
class Input:
inputsamplerate : ValueUnit
inputsamplerate: int
inputsamplerateunit: str
# BufferSize
inputtracecapacity : ValueUnit
inputunipolar : bool
inputtraceid : list[str]
inputtracescale : list[int]
inputtraceunit : list[str]
inputtracedevice : list[str]
inputtracechannel : list[int]
inputtracecapacity: int
inputtracecapacityunit: str
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]
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]
outputtraceid: list[str]
outputtracedevice: list[str]
outputtracechannel: list[int]
outputtracescale: list[int]
outputtraceunit: list[str]
outputtracemaxrate: list[int]
outputtracemaxrateunit: list[str]
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 ]
class Sinus:
inputsamplerate: int
inputsamplerateunit: str
# BufferSize
inputtracecapacity: int
inputtracecapacityunit: str
outputtraceid: list[str]
outputtracedevice: list[str]
outputtracechannel: list[int]
outputtracescale: list[int]
outputtraceunit: list[str]
outputtracemaxrate: list[int]
outputtracemaxrateunit: list[str]
outputtracemodality: list[str]
@dataclass
class PyRelacs:
data: Data
simdata: SimData
sinus: Sinus
@dataclass
class Config:
# Path: str
settings: Settings
metadata: Metadata
pyrelacs: PyRelacs
@classmethod
def load_config(cls):
@ -94,3 +113,14 @@ class Config:
return yaml.full_load(config_file)
except yaml.YAMLError as e:
raise yaml.YAMLError(f"Error parsing YAML file: {e}")
if __name__ == "__main__":
pyrelacs_config_path = pathlib.Path(__file__).parent.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:
data = yaml.full_load(config_file)
embed()
exit()