Compare commits
3 Commits
351850e05c
...
b22ef04317
Author | SHA1 | Date | |
---|---|---|---|
b22ef04317 | |||
d2f7d0e966 | |||
cc9089f503 |
15
poetry.lock
generated
15
poetry.lock
generated
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user