Source code for ewoksxrpd.tasks.utils.calibrate_utils

from __future__ import annotations

from typing import Dict
from typing import List
from typing import Optional
from typing import Sequence
from typing import Set
from typing import Union


[docs] def parse_fixed( fixed: Optional[List[str]], parametrization: Dict[str, List[str]] ) -> Set[str]: if not fixed: return set() allowed = {"dist", "poni1", "poni2", "rot1", "rot2", "rot3", "energy"} existing = set(fixed) unexpected = existing - allowed if unexpected: raise ValueError(f"'fixed' has unexpected parameters {sorted(unexpected)}") out = set() for param in fixed: out |= set(parametrization.get(param, {param})) return out
[docs] def parse_max_rings(max_rings: Union[int, Sequence[int], None]) -> Sequence[int | None]: if isinstance(max_rings, Sequence): return max_rings if not max_rings: return [None] if not isinstance(max_rings, int) or max_rings < 0: return [None] return [max_rings]