added white theme, some features to processing and saving
This commit is contained in:
@@ -152,6 +152,12 @@ def gui_profile_from_dict(payload: dict[str, Any]) -> GuiProfileModel:
|
||||
gui.processing.bscan.stop_freq_mhz,
|
||||
"gui.processing.bscan",
|
||||
),
|
||||
subtract_mean_ascan=_optional_bool(
|
||||
bscan_object,
|
||||
"subtract_mean_ascan",
|
||||
gui.processing.bscan.subtract_mean_ascan,
|
||||
"gui.processing.bscan",
|
||||
),
|
||||
),
|
||||
gpr=GuiGprStateModel(
|
||||
input_positions=_optional_string(
|
||||
@@ -359,6 +365,7 @@ def gui_profile_to_dict(model: GuiProfileModel) -> dict[str, Any]:
|
||||
"gain": gui.processing.bscan.gain,
|
||||
"start_freq_mhz": gui.processing.bscan.start_freq_mhz,
|
||||
"stop_freq_mhz": gui.processing.bscan.stop_freq_mhz,
|
||||
"subtract_mean_ascan": gui.processing.bscan.subtract_mean_ascan,
|
||||
},
|
||||
"gpr": {
|
||||
"input_positions": gui.processing.gpr.input_positions,
|
||||
|
||||
@@ -42,6 +42,7 @@ class GuiBscanStateModel:
|
||||
gain: float = 1.0
|
||||
start_freq_mhz: float = 100.0
|
||||
stop_freq_mhz: float = 8800.0
|
||||
subtract_mean_ascan: bool = False
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
|
||||
@@ -9,6 +9,7 @@ from python_app.models.run_config_schema import (
|
||||
GprRxGeometryModel,
|
||||
GprTxGeometryModel,
|
||||
PreprocessAssetModel,
|
||||
PreprocessNotchModel,
|
||||
RunConfigModel,
|
||||
)
|
||||
from python_app.models.run_config_validation import load_ring_payload, load_switch_payload, validate_gpr_model
|
||||
@@ -137,6 +138,18 @@ def run_config_from_dict(payload: dict[str, Any]) -> RunConfigModel:
|
||||
_as_dict(s11_preprocess_payload.get("reference"), "preprocess.s11.reference"),
|
||||
model.preprocess.s11.reference,
|
||||
)
|
||||
notch_payload = _as_dict(preprocess_payload.get("notch"), "preprocess.notch")
|
||||
model.preprocess.notch = PreprocessNotchModel(
|
||||
enabled=bool(notch_payload.get("enabled", model.preprocess.notch.enabled)),
|
||||
taper_width_hz=float(notch_payload.get("taper_width_hz", model.preprocess.notch.taper_width_hz)),
|
||||
taper_type=str(notch_payload.get("taper_type", model.preprocess.notch.taper_type)),
|
||||
bands_hz=[],
|
||||
)
|
||||
bands_payload = notch_payload.get("bands_hz", [])
|
||||
if isinstance(bands_payload, list):
|
||||
for band in bands_payload:
|
||||
if isinstance(band, (list, tuple)) and len(band) == 2:
|
||||
model.preprocess.notch.bands_hz.append((float(band[0]), float(band[1])))
|
||||
|
||||
model.gpr.mode = str(gpr_payload.get("mode", model.gpr.mode))
|
||||
model.gpr.relative_permittivity = float(
|
||||
@@ -282,6 +295,12 @@ def run_config_to_dict(model: RunConfigModel) -> dict[str, Any]:
|
||||
"bundle_path": model.preprocess.s11.reference.bundle_path,
|
||||
},
|
||||
},
|
||||
"notch": {
|
||||
"enabled": model.preprocess.notch.enabled,
|
||||
"bands_hz": [[low_hz, high_hz] for low_hz, high_hz in model.preprocess.notch.bands_hz],
|
||||
"taper_width_hz": model.preprocess.notch.taper_width_hz,
|
||||
"taper_type": model.preprocess.notch.taper_type,
|
||||
},
|
||||
},
|
||||
"gpr": {
|
||||
"mode": model.gpr.mode,
|
||||
|
||||
@@ -8,6 +8,7 @@ from python_app.models.run_config_schema import (
|
||||
GprTxGeometryModel,
|
||||
LocatorServerRuntimeModel,
|
||||
PreprocessAssetModel,
|
||||
PreprocessNotchModel,
|
||||
PreprocessModel,
|
||||
RadarModel,
|
||||
RadarSweepModel,
|
||||
@@ -33,6 +34,7 @@ __all__ = [
|
||||
"GprTxGeometryModel",
|
||||
"LocatorServerRuntimeModel",
|
||||
"PreprocessAssetModel",
|
||||
"PreprocessNotchModel",
|
||||
"PreprocessModel",
|
||||
"RadarModel",
|
||||
"RadarSweepModel",
|
||||
|
||||
@@ -132,12 +132,23 @@ class S11PreprocessModel:
|
||||
reference: PreprocessAssetModel = field(default_factory=PreprocessAssetModel)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class PreprocessNotchModel:
|
||||
"""Optional frequency-domain notch filter applied after calibration and reference subtraction."""
|
||||
|
||||
enabled: bool = False
|
||||
bands_hz: list[tuple[float, float]] = field(default_factory=list)
|
||||
taper_width_hz: float = 40_000_000.0
|
||||
taper_type: str = "cosine"
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class PreprocessModel:
|
||||
"""Selected preprocessing artifacts for live acquisition."""
|
||||
|
||||
s21: S21PreprocessModel = field(default_factory=S21PreprocessModel)
|
||||
s11: S11PreprocessModel = field(default_factory=S11PreprocessModel)
|
||||
notch: PreprocessNotchModel = field(default_factory=PreprocessNotchModel)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
|
||||
Reference in New Issue
Block a user