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"]
|
docs = ["ipython", "matplotlib", "numpydoc", "sphinx"]
|
||||||
tests = ["pytest", "pytest-cov", "pytest-xdist"]
|
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]]
|
[[package]]
|
||||||
name = "decorator"
|
name = "decorator"
|
||||||
version = "5.1.1"
|
version = "5.1.1"
|
||||||
@ -1235,4 +1248,4 @@ files = [
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.11, <3.13"
|
python-versions = ">=3.11, <3.13"
|
||||||
content-hash = "4dc01682622b8aa364feedb15edecf3d3a9bffc9979e92bbbac118a43d0bbae8"
|
content-hash = "f10a3cf403151d2c96c5c45a546860eaa3883d47cdc8d719a3e49ad0d4bb95d4"
|
||||||
|
@ -34,6 +34,7 @@ pyqtgraph = "^0.13.7"
|
|||||||
pytest = "^8.3.3"
|
pytest = "^8.3.3"
|
||||||
pglive = "^0.7.6"
|
pglive = "^0.7.6"
|
||||||
pyyaml = "^6.0.2"
|
pyyaml = "^6.0.2"
|
||||||
|
dacite = "^1.8.1"
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
pyrelacs = "pyrelacs.app:main"
|
pyrelacs = "pyrelacs.app:main"
|
||||||
|
@ -1,70 +1,71 @@
|
|||||||
Settings:
|
settings:
|
||||||
Repros: [Calibration, Sinus]
|
repros: [calibration, sinus]
|
||||||
Path: ~/projects/pyrelacs/test/
|
path: ~/projects/pyrelacs/test/
|
||||||
|
|
||||||
Metadata:
|
metadata:
|
||||||
Identifier (Name): Setup1
|
SetupName : Setup1
|
||||||
Maintainer : Your name
|
Maintainer : Your name
|
||||||
Creator : Whoever
|
Creator : Whoever
|
||||||
Location (Room) : virtual
|
SetupLocation : virtual
|
||||||
Lab : XYZ-Lab
|
Lab : XYZ-Lab
|
||||||
Institute : Your institute
|
Institute : Your institute
|
||||||
University : Your university
|
University : Your university
|
||||||
Address : Your institute's address
|
Address : Your institute's address
|
||||||
|
|
||||||
PyRelacs:
|
pyrelacs:
|
||||||
Data:
|
data:
|
||||||
input:
|
input:
|
||||||
inputsamplerate : {value: 20, unit: kHz}
|
inputsamplerate : 20
|
||||||
|
inputsamplerateunit : kHz
|
||||||
# BufferSize
|
# BufferSize
|
||||||
inputtracecapacity : 600s
|
inputtracecapacity : 600
|
||||||
inputunipolar : false
|
inputtracecapacityunit : s
|
||||||
inputtraceid : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ]
|
inputunipolar : false
|
||||||
inputtracescale : [ 100, 1, 10, 1 ]
|
inputtraceid : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ]
|
||||||
inputtraceunit : [ mV, mV, mV, mV ]
|
inputtracescale : [ 100, 1, 10, 1 ]
|
||||||
inputtracedevice : [ ai-1, ai-1, ai-1, ai-1 ]
|
inputtraceunit : [ mV, mV, mV, mV ]
|
||||||
inputtracechannel : [ 0, 2, 4, 6 ]
|
inputtracedevice : [ ai-1, ai-1, ai-1, ai-1 ]
|
||||||
inputtracereference: [ ground, ground, ground, ground ]
|
inputtracechannel : [ 0, 2, 4, 6 ]
|
||||||
inputtracemaxvalue : [ 100, 2, 2, 10 ]
|
inputtracereference : [ ground, ground, ground, ground ]
|
||||||
inputtracecenter : [ true, false, false, false ]
|
inputtracemaxvalue : [ 100, 2, 2, 10 ]
|
||||||
|
inputtracecenter : [ true, false, false, false ]
|
||||||
output:
|
output:
|
||||||
outputtraceid : [ GlobalEField, GlobalEFieldAM, LocalEField, I ]
|
outputtraceid : [ GlobalEField, GlobalEFieldAM, LocalEField, I ]
|
||||||
outputtracedevice : [ ao-1, ao-1, ao-1, ao-1 ]
|
outputtracedevice : [ ao-1, ao-1, ao-1, ao-1 ]
|
||||||
outputtracechannel : [ 0, 1, 2, 3 ]
|
outputtracechannel : [ 0, 1, 2, 3 ]
|
||||||
outputtracescale : [ 1, 1, 1, 1 ]
|
outputtracescale : [ 1, 1, 1, 1 ]
|
||||||
outputtraceunit : [ V, V, V, V ]
|
outputtraceunit : [ V, V, V, V ]
|
||||||
outputtracemaxrate : [ 40kHz, 40kHz, 40kHz, 40kHz ]
|
outputtracemaxrate : [ 40, 40, 40, 40]
|
||||||
outputtracemodality: [ electric, electric, electric, current ]
|
outputtracemaxrateunit : [kHz, kHz, kHz, kHz]
|
||||||
|
outputtracemodality : [ electric, electric, electric, current ]
|
||||||
|
|
||||||
SimData:
|
sinus:
|
||||||
Sinus:
|
inputsamplerate : 20
|
||||||
input:
|
inputsamplerateunit : kHz
|
||||||
inputsamplerate : 20kHz
|
# BufferSize
|
||||||
inputtracecapacity : 600s
|
inputtracecapacity : 600
|
||||||
output:
|
inputtracecapacityunit : s
|
||||||
outputtraceid : [ Sinus ]
|
outputtraceid : [ Sinus ]
|
||||||
outputtracedevice : [ ao-0 ]
|
outputtracedevice : [ ao-0 ]
|
||||||
outputtracechannel : [ 0 ]
|
outputtracechannel : [ 0 ]
|
||||||
outputtracescale : [ 1 ]
|
outputtracescale : [ 1 ]
|
||||||
outputtraceunit : [ V ]
|
outputtraceunit : [ V ]
|
||||||
outputtracemaxrate : [ 40kHz ]
|
outputtracemaxrate : [ 40 ]
|
||||||
outputtracemodality: [ electric ]
|
outputtracemaxrateunit : [kHz]
|
||||||
|
outputtracemodality : [ electric ]
|
||||||
|
|
||||||
Devices:
|
devices:
|
||||||
DAQFlexCore:
|
DAQFlexCore:
|
||||||
AnalogOutputPins: [0,1]
|
analogoutputpins : [0,1]
|
||||||
AnalogInputPinsHigh: [0,1,2,3,4,5,6,7]
|
analoginputpinshigh : [0,1,2,3,4,5,6,7]
|
||||||
AnalogInputPinsLow: [1,2]
|
analoginputpinslow : [1,2]
|
||||||
DigitalPins: [0,1,2,3]
|
digitalpins : [0,1,2,3]
|
||||||
|
|
||||||
CS3310DIO:
|
CS3310DIO:
|
||||||
ident : attdev-1
|
ident : attdev-1
|
||||||
strobepin : 6
|
strobepin : 6
|
||||||
datainpin : 5
|
datainpin : 5
|
||||||
dataoutpin: -1
|
dataoutpin : -1
|
||||||
cspin : 4
|
cspin : 4
|
||||||
mutepin : 7
|
mutepin : 7
|
||||||
zcenpin : -1
|
zcenpin : -1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,86 +2,105 @@ from typing import TypedDict, Union
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
import pathlib
|
import pathlib
|
||||||
|
|
||||||
|
|
||||||
|
import dacite
|
||||||
import yaml
|
import yaml
|
||||||
|
from dacite import from_dict
|
||||||
from IPython import embed
|
from IPython import embed
|
||||||
|
|
||||||
from pyrelacs.util.logging import config_logging
|
from pyrelacs.util.logging import config_logging
|
||||||
|
|
||||||
log = config_logging()
|
log = config_logging()
|
||||||
|
|
||||||
class ValueUnit(TypedDict):
|
|
||||||
value: Union[int, float]
|
@dataclass
|
||||||
|
class ValueUnit:
|
||||||
|
value: int
|
||||||
unit: str
|
unit: str
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Settings:
|
class Settings:
|
||||||
Repros: list[str]
|
repros: list[str]
|
||||||
Path: str
|
path: str
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Metadata:
|
class Metadata:
|
||||||
Identifier: str
|
SetupName: str
|
||||||
Maintainer: str
|
Maintainer: str
|
||||||
Creator: str
|
Creator: str
|
||||||
Location: str
|
SetupLocation: str
|
||||||
Lab: str
|
Lab: str
|
||||||
Institute: str
|
Institute: str
|
||||||
University: str
|
University: str
|
||||||
Address: str
|
Address: str
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Input:
|
class Input:
|
||||||
inputsamplerate : ValueUnit
|
inputsamplerate: int
|
||||||
|
inputsamplerateunit: str
|
||||||
# BufferSize
|
# BufferSize
|
||||||
inputtracecapacity : ValueUnit
|
inputtracecapacity: int
|
||||||
inputunipolar : bool
|
inputtracecapacityunit: str
|
||||||
inputtraceid : list[str]
|
inputunipolar: bool
|
||||||
inputtracescale : list[int]
|
inputtraceid: list[str]
|
||||||
inputtraceunit : list[str]
|
inputtracescale: list[int]
|
||||||
inputtracedevice : list[str]
|
inputtraceunit: list[str]
|
||||||
inputtracechannel : list[int]
|
inputtracedevice: list[str]
|
||||||
|
inputtracechannel: list[int]
|
||||||
inputtracereference: list[str]
|
inputtracereference: list[str]
|
||||||
inputtracemaxvalue : list[int]
|
inputtracemaxvalue: list[int]
|
||||||
inputtracecenter : list[bool]
|
inputtracecenter: list[bool]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Output:
|
class Output:
|
||||||
outputtraceid : list[str]
|
outputtraceid: list[str]
|
||||||
outputtracedevice : list[str]
|
outputtracedevice: list[str]
|
||||||
outputtracechannel : list[int]
|
outputtracechannel: list[int]
|
||||||
outputtracescale : list[int]
|
outputtracescale: list[int]
|
||||||
outputtraceunit : list[str]
|
outputtraceunit: list[str]
|
||||||
outputtracemaxrate : list[ValueUnit]
|
outputtracemaxrate: list[int]
|
||||||
outputtracemodality: list[str]
|
outputtracemaxrateunit: list[str]
|
||||||
|
outputtracemodality: list[str]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Data:
|
class Data:
|
||||||
input: Input
|
input: Input
|
||||||
output: Output
|
output: Output
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class SimData:
|
class Sinus:
|
||||||
input:
|
inputsamplerate: int
|
||||||
inputsamplerate : 20kHz
|
inputsamplerateunit: str
|
||||||
inputtracecapacity : 600s
|
# BufferSize
|
||||||
output:
|
inputtracecapacity: int
|
||||||
outputtraceid : [ Sinus ]
|
inputtracecapacityunit: str
|
||||||
outputtracedevice : [ ao-0 ]
|
outputtraceid: list[str]
|
||||||
outputtracechannel : [ 0 ]
|
outputtracedevice: list[str]
|
||||||
outputtracescale : [ 1 ]
|
outputtracechannel: list[int]
|
||||||
outputtraceunit : [ V ]
|
outputtracescale: list[int]
|
||||||
outputtracemaxrate : [ 40kHz ]
|
outputtraceunit: list[str]
|
||||||
outputtracemodality: [ electric ]
|
outputtracemaxrate: list[int]
|
||||||
|
outputtracemaxrateunit: list[str]
|
||||||
|
outputtracemodality: list[str]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class PyRelacs:
|
class PyRelacs:
|
||||||
data: Data
|
data: Data
|
||||||
simdata: SimData
|
sinus: Sinus
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Config:
|
class Config:
|
||||||
# Path: str
|
settings: Settings
|
||||||
|
metadata: Metadata
|
||||||
|
pyrelacs: PyRelacs
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load_config(cls):
|
def load_config(cls):
|
||||||
@ -94,3 +113,14 @@ class Config:
|
|||||||
return yaml.full_load(config_file)
|
return yaml.full_load(config_file)
|
||||||
except yaml.YAMLError as e:
|
except yaml.YAMLError as e:
|
||||||
raise yaml.YAMLError(f"Error parsing YAML file: {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