42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""One-shot workflow for capturing a full calibration set."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from python_app.models.dataset_model import SweepCollection
|
|
from python_app.models.run_config_model import RunConfigModel
|
|
from python_app.storage.npz_store import NpzStore
|
|
from python_app.workflows.sequential_capture_workflow import (
|
|
DEFAULT_CALIBRATION_MEDIAN_SWEEP_COUNT,
|
|
SequentialCaptureSession,
|
|
)
|
|
|
|
|
|
def capture_calibration_set(
|
|
config: RunConfigModel,
|
|
set_name: str,
|
|
store: NpzStore,
|
|
*,
|
|
median_sweep_count: int = DEFAULT_CALIBRATION_MEDIAN_SWEEP_COUNT,
|
|
) -> tuple[str, SweepCollection]:
|
|
"""Capture all switch combinations and persist them as calibration set."""
|
|
if config.is_multi_device:
|
|
raise RuntimeError(
|
|
"LibreVNA multi-device S21 through calibration is not supported by this one-shot full-set helper. "
|
|
"Use the sequential preprocess capture flow so each virtual combo can be connected through "
|
|
"and captured explicitly."
|
|
)
|
|
|
|
session = SequentialCaptureSession(
|
|
config=config,
|
|
kind="s21_calibration",
|
|
set_name=set_name,
|
|
median_sweep_count=median_sweep_count,
|
|
)
|
|
try:
|
|
session.open()
|
|
while not session.is_complete():
|
|
session.capture_current_combo()
|
|
return session.finalize(store)
|
|
finally:
|
|
session.close()
|