flandre/flandre/utils/Config.py
2025-06-10 20:35:01 +08:00

57 lines
1.2 KiB
Python

import dataclasses
import json
@dataclasses.dataclass
class ImagingConfig:
focus_start: int = 0
focus_end: int = 1500
focus_max: int = 100
focus_min: int = 0
focus_mmax: int = 8192
uafm: bool = False
bscan_start: int = 0
bscan_end: int = 1500
bscan_max: int = 100
bscan_min: int = 0
bscan_mmax: int = 8192
dct_start: int = 300
dct_end: int = 550
eid: int = 0
beta: int = 1
tgcl: int = 0
changed_field: str = None
changed_field_orig_value: str | int = None
@staticmethod
def from_file(input_format, focus_mode, folder=None):
try:
return ImagingConfig(
**json.load((folder / f"icfg_{input_format}_{focus_mode}.json").open())
)
except Exception:
return ImagingConfig()
def save(self, input_format: str, focus_mode: str, folder=None):
json.dump(
self.__dict__, (folder / f"icfg_{input_format}_{focus_mode}.json").open("w")
)
@dataclasses.dataclass
class DeviceConfig:
second_per_y_pix: float = 2e-8
meter_per_x_pix: float = 2e-4
rows: int = 1500
cols: int = 256
v1: int = 1915
v1x: int = 1915
v2: int = 5900
y1: float = 1e-3