diff --git a/pyaml/common/element_holder.py b/pyaml/common/element_holder.py index 49a5811d..5b345ebd 100644 --- a/pyaml/common/element_holder.py +++ b/pyaml/common/element_holder.py @@ -2,6 +2,8 @@ Module handling element references for simulators and control system """ +import fnmatch +import re from typing import TYPE_CHECKING from ..arrays.bpm_array import BPMArray @@ -35,15 +37,24 @@ class ElementHolder(object): def __init__(self): # Device handle - self.__MAGNETS: dict = {} - self.__CFM_MAGNETS: dict = {} - self.__SERIALIZED_MAGNETS: dict = {} - self.__BPMS: dict = {} - self.__RFPLANT: dict = {} - self.__RFTRANSMITTER: dict = {} - self.__DIAG: dict = {} - self.__TUNING_TOOLS = {} - self.__ALL: dict = {} + self.__MAGNETS: dict[str, Magnet] = {} + self.__CFM_MAGNETS: dict[str, CombinedFunctionMagnet] = {} + self.__SERIALIZED_MAGNETS: dict[str, SerializedMagnets] = {} + self.__BPMS: dict[str, BPM] = {} + self.__RFPLANT: dict[str, RFPlant] = {} + self.__RFTRANSMITTER: dict[str, RFTransmitter] = {} + self.__DIAG: dict[str, Element] = {} + self.__TUNING_TOOLS: dict[str, Element] = {} + self.__ALL: dict[str, Element] = {} + + self.__by_class_elements: dict[type, dict] = { + Magnet: self.__MAGNETS, + CombinedFunctionMagnet: self.__CFM_MAGNETS, + SerializedMagnets: self.__SERIALIZED_MAGNETS, + BPM: self.__BPMS, + RFPlant: self.__RFPLANT, + RFTransmitter: self.__RFTRANSMITTER, + } # Array handle self.__MAGNET_ARRAYS: dict = {} @@ -62,24 +73,53 @@ def post_init(self): def fill_device(self, elements: list[Element]): raise PyAMLException("ElementHolder.fill_device() is not subclassed") + def find_elements(self, filter: str) -> list[str]: + if filter.startswith("re:"): + pattern = re.compile(rf"{filter[3:]}") + elements = [k for k in self.__ALL.keys() if pattern.fullmatch(k)] + elif "*" in filter or "?" in filter: + elements = [k for k in self.__ALL.keys() if fnmatch.fnmatch(k, filter)] + else: + elements = [filter] + + return elements + def fill_array( - self, arrayName: str, elementNames: list[str], get_func, constructor, ARR: dict + self, + array_name: str, + element_names: list[str], + get_func, + constructor, + ARR: dict, ): + # Handle wildcard, regexp and exclusion pattern + all_names: list[str] = [] + excluded_names: list[str] = [] + for name in element_names: + if name.startswith("~"): + names = self.find_elements(name[1:]) + excluded_names.extend(names) + else: + names = self.find_elements(name) + all_names.extend(names) + + [all_names.remove(name) for name in excluded_names] + a = [] - for name in elementNames: + for n in all_names: try: - m = get_func(name) + m = get_func(n) except Exception as err: raise PyAMLException( - f"{constructor.__name__} {arrayName} : {err} @index {len(a)}" + f"{constructor.__name__} {array_name} : {err} @index {len(a)}" ) from None if m in a: raise PyAMLException( - f"{constructor.__name__} {arrayName} : " + f"{constructor.__name__} {array_name} : " f"duplicate name {name} @index {len(a)}" ) from None a.append(m) - ARR[arrayName] = constructor(arrayName, a) + ARR[array_name] = constructor(array_name, a) def __add(self, array, element: Element): if element.get_name() in self.__ALL: # Ensure name unicity @@ -187,7 +227,11 @@ def get_all_serialized_magnets(self) -> list[SerializedMagnets]: def fill_bpm_array(self, arrayName: str, elementNames: list[str]): self.fill_array( - arrayName, elementNames, self.get_bpm, BPMArray, self.__BPM_ARRAYS + arrayName, + elementNames, + self.get_bpm, + BPMArray, + self.__BPM_ARRAYS, ) def get_bpm(self, name: str) -> Element: diff --git a/tests/config/EBSOrbit.yaml b/tests/config/EBSOrbit.yaml index 0ea959d6..466de1a9 100644 --- a/tests/config/EBSOrbit.yaml +++ b/tests/config/EBSOrbit.yaml @@ -15,1199 +15,19 @@ arrays: - type: pyaml.arrays.magnet name: HCorr elements: - - SH1A-C04-H - - SJ1A-C04-H - - SJ2A-C04-H - - SJ1B-C04-H - - SH2B-C04-H - - SJ1D-C04-H - - SJ2E-C04-H - - SJ1E-C04-H - - SH3E-C04-H - - SH1A-C05-H - - SD1A-C05-H - - SF2A-C05-H - - SD1B-C05-H - - SH2B-C05-H - - SD1D-C05-H - - SF2E-C05-H - - SD1E-C05-H - - SH3E-C05-H - - SH1A-C06-H - - SD1A-C06-H - - SF2A-C06-H - - SD1B-C06-H - - SH2B-C06-H - - SD1D-C06-H - - SF2E-C06-H - - SD1E-C06-H - - SH3E-C06-H - - SH1A-C07-H - - SD1A-C07-H - - SF2A-C07-H - - SD1B-C07-H - - SH2B-C07-H - - SD1D-C07-H - - SF2E-C07-H - - SD1E-C07-H - - SH3E-C07-H - - SH1A-C08-H - - SD1A-C08-H - - SF2A-C08-H - - SD1B-C08-H - - SH2B-C08-H - - SD1D-C08-H - - SF2E-C08-H - - SD1E-C08-H - - SH3E-C08-H - - SH1A-C09-H - - SD1A-C09-H - - SF2A-C09-H - - SD1B-C09-H - - SH2B-C09-H - - SD1D-C09-H - - SF2E-C09-H - - SD1E-C09-H - - SH3E-C09-H - - SH1A-C10-H - - SD1A-C10-H - - SF2A-C10-H - - SD1B-C10-H - - SH2B-C10-H - - SD1D-C10-H - - SF2E-C10-H - - SD1E-C10-H - - SH3E-C10-H - - SH1A-C11-H - - SD1A-C11-H - - SF2A-C11-H - - SD1B-C11-H - - SH2B-C11-H - - SD1D-C11-H - - SF2E-C11-H - - SD1E-C11-H - - SH3E-C11-H - - SH1A-C12-H - - SD1A-C12-H - - SF2A-C12-H - - SD1B-C12-H - - SH2B-C12-H - - SD1D-C12-H - - SF2E-C12-H - - SD1E-C12-H - - SH3E-C12-H - - SH1A-C13-H - - SD1A-C13-H - - SF2A-C13-H - - SD1B-C13-H - - SH2B-C13-H - - SD1D-C13-H - - SF2E-C13-H - - SD1E-C13-H - - SH3E-C13-H - - SH1A-C14-H - - SD1A-C14-H - - SF2A-C14-H - - SD1B-C14-H - - SH2B-C14-H - - SD1D-C14-H - - SF2E-C14-H - - SD1E-C14-H - - SH3E-C14-H - - SH1A-C15-H - - SD1A-C15-H - - SF2A-C15-H - - SD1B-C15-H - - SH2B-C15-H - - SD1D-C15-H - - SF2E-C15-H - - SD1E-C15-H - - SH3E-C15-H - - SH1A-C16-H - - SD1A-C16-H - - SF2A-C16-H - - SD1B-C16-H - - SH2B-C16-H - - SD1D-C16-H - - SF2E-C16-H - - SD1E-C16-H - - SH3E-C16-H - - SH1A-C17-H - - SD1A-C17-H - - SF2A-C17-H - - SD1B-C17-H - - SH2B-C17-H - - SD1D-C17-H - - SF2E-C17-H - - SD1E-C17-H - - SH3E-C17-H - - SH1A-C18-H - - SD1A-C18-H - - SF2A-C18-H - - SD1B-C18-H - - SH2B-C18-H - - SD1D-C18-H - - SF2E-C18-H - - SD1E-C18-H - - SH3E-C18-H - - SH1A-C19-H - - SD1A-C19-H - - SF2A-C19-H - - SD1B-C19-H - - SH2B-C19-H - - SD1D-C19-H - - SF2E-C19-H - - SD1E-C19-H - - SH3E-C19-H - - SH1A-C20-H - - SD1A-C20-H - - SF2A-C20-H - - SD1B-C20-H - - SH2B-C20-H - - SD1D-C20-H - - SF2E-C20-H - - SD1E-C20-H - - SH3E-C20-H - - SH1A-C21-H - - SD1A-C21-H - - SF2A-C21-H - - SD1B-C21-H - - SH2B-C21-H - - SD1D-C21-H - - SF2E-C21-H - - SD1E-C21-H - - SH3E-C21-H - - SH1A-C22-H - - SD1A-C22-H - - SF2A-C22-H - - SD1B-C22-H - - SH2B-C22-H - - SD1D-C22-H - - SF2E-C22-H - - SD1E-C22-H - - SH3E-C22-H - - SH1A-C23-H - - SD1A-C23-H - - SF2A-C23-H - - SD1B-C23-H - - SH2B-C23-H - - SD1D-C23-H - - SF2E-C23-H - - SD1E-C23-H - - SH3E-C23-H - - SH1A-C24-H - - SD1A-C24-H - - SF2A-C24-H - - SD1B-C24-H - - SH2B-C24-H - - SD1D-C24-H - - SF2E-C24-H - - SD1E-C24-H - - SH3E-C24-H - - SH1A-C25-H - - SD1A-C25-H - - SF2A-C25-H - - SD1B-C25-H - - SH2B-C25-H - - SD1D-C25-H - - SF2E-C25-H - - SD1E-C25-H - - SH3E-C25-H - - SH1A-C26-H - - SD1A-C26-H - - SF2A-C26-H - - SD1B-C26-H - - SH2B-C26-H - - SD1D-C26-H - - SF2E-C26-H - - SD1E-C26-H - - SH3E-C26-H - - SH1A-C27-H - - SD1A-C27-H - - SF2A-C27-H - - SD1B-C27-H - - SH2B-C27-H - - SD1D-C27-H - - SF2E-C27-H - - SD1E-C27-H - - SH3E-C27-H - - SH1A-C28-H - - SD1A-C28-H - - SF2A-C28-H - - SD1B-C28-H - - SH2B-C28-H - - SD1D-C28-H - - SF2E-C28-H - - SD1E-C28-H - - SH3E-C28-H - - SH1A-C29-H - - SD1A-C29-H - - SF2A-C29-H - - SD1B-C29-H - - SH2B-C29-H - - SD1D-C29-H - - SF2E-C29-H - - SD1E-C29-H - - SH3E-C29-H - - SH1A-C30-H - - SD1A-C30-H - - SF2A-C30-H - - SD1B-C30-H - - SH2B-C30-H - - SD1D-C30-H - - SF2E-C30-H - - SD1E-C30-H - - SH3E-C30-H - - SH1A-C31-H - - SD1A-C31-H - - SF2A-C31-H - - SD1B-C31-H - - SH2B-C31-H - - SD1D-C31-H - - SF2E-C31-H - - SD1E-C31-H - - SH3E-C31-H - - SH1A-C32-H - - SD1A-C32-H - - SF2A-C32-H - - SD1B-C32-H - - SH2B-C32-H - - SD1D-C32-H - - SF2E-C32-H - - SD1E-C32-H - - SH3E-C32-H - - SH1A-C01-H - - SD1A-C01-H - - SF2A-C01-H - - SD1B-C01-H - - SH2B-C01-H - - SD1D-C01-H - - SF2E-C01-H - - SD1E-C01-H - - SH3E-C01-H - - SH1A-C02-H - - SD1A-C02-H - - SF2A-C02-H - - SD1B-C02-H - - SH2B-C02-H - - SD1D-C02-H - - SF2E-C02-H - - SD1E-C02-H - - SH3E-C02-H - - SH1A-C03-H - - SI1A-C03-H - - SI2A-C03-H - - SI1B-C03-H - - SH2B-C03-H - - SI1D-C03-H - - SI2E-C03-H - - SI1E-C03-H - - SH3E-C03-H + - S*-H - type: pyaml.arrays.magnet name: VCorr elements: - - SH1A-C04-V - - SJ1A-C04-V - - SJ2A-C04-V - - SJ1B-C04-V - - SH2B-C04-V - - SJ1D-C04-V - - SJ2E-C04-V - - SJ1E-C04-V - - SH3E-C04-V - - SH1A-C05-V - - SD1A-C05-V - - SF2A-C05-V - - SD1B-C05-V - - SH2B-C05-V - - SD1D-C05-V - - SF2E-C05-V - - SD1E-C05-V - - SH3E-C05-V - - SH1A-C06-V - - SD1A-C06-V - - SF2A-C06-V - - SD1B-C06-V - - SH2B-C06-V - - SD1D-C06-V - - SF2E-C06-V - - SD1E-C06-V - - SH3E-C06-V - - SH1A-C07-V - - SD1A-C07-V - - SF2A-C07-V - - SD1B-C07-V - - SH2B-C07-V - - SD1D-C07-V - - SF2E-C07-V - - SD1E-C07-V - - SH3E-C07-V - - SH1A-C08-V - - SD1A-C08-V - - SF2A-C08-V - - SD1B-C08-V - - SH2B-C08-V - - SD1D-C08-V - - SF2E-C08-V - - SD1E-C08-V - - SH3E-C08-V - - SH1A-C09-V - - SD1A-C09-V - - SF2A-C09-V - - SD1B-C09-V - - SH2B-C09-V - - SD1D-C09-V - - SF2E-C09-V - - SD1E-C09-V - - SH3E-C09-V - - SH1A-C10-V - - SD1A-C10-V - - SF2A-C10-V - - SD1B-C10-V - - SH2B-C10-V - - SD1D-C10-V - - SF2E-C10-V - - SD1E-C10-V - - SH3E-C10-V - - SH1A-C11-V - - SD1A-C11-V - - SF2A-C11-V - - SD1B-C11-V - - SH2B-C11-V - - SD1D-C11-V - - SF2E-C11-V - - SD1E-C11-V - - SH3E-C11-V - - SH1A-C12-V - - SD1A-C12-V - - SF2A-C12-V - - SD1B-C12-V - - SH2B-C12-V - - SD1D-C12-V - - SF2E-C12-V - - SD1E-C12-V - - SH3E-C12-V - - SH1A-C13-V - - SD1A-C13-V - - SF2A-C13-V - - SD1B-C13-V - - SH2B-C13-V - - SD1D-C13-V - - SF2E-C13-V - - SD1E-C13-V - - SH3E-C13-V - - SH1A-C14-V - - SD1A-C14-V - - SF2A-C14-V - - SD1B-C14-V - - SH2B-C14-V - - SD1D-C14-V - - SF2E-C14-V - - SD1E-C14-V - - SH3E-C14-V - - SH1A-C15-V - - SD1A-C15-V - - SF2A-C15-V - - SD1B-C15-V - - SH2B-C15-V - - SD1D-C15-V - - SF2E-C15-V - - SD1E-C15-V - - SH3E-C15-V - - SH1A-C16-V - - SD1A-C16-V - - SF2A-C16-V - - SD1B-C16-V - - SH2B-C16-V - - SD1D-C16-V - - SF2E-C16-V - - SD1E-C16-V - - SH3E-C16-V - - SH1A-C17-V - - SD1A-C17-V - - SF2A-C17-V - - SD1B-C17-V - - SH2B-C17-V - - SD1D-C17-V - - SF2E-C17-V - - SD1E-C17-V - - SH3E-C17-V - - SH1A-C18-V - - SD1A-C18-V - - SF2A-C18-V - - SD1B-C18-V - - SH2B-C18-V - - SD1D-C18-V - - SF2E-C18-V - - SD1E-C18-V - - SH3E-C18-V - - SH1A-C19-V - - SD1A-C19-V - - SF2A-C19-V - - SD1B-C19-V - - SH2B-C19-V - - SD1D-C19-V - - SF2E-C19-V - - SD1E-C19-V - - SH3E-C19-V - - SH1A-C20-V - - SD1A-C20-V - - SF2A-C20-V - - SD1B-C20-V - - SH2B-C20-V - - SD1D-C20-V - - SF2E-C20-V - - SD1E-C20-V - - SH3E-C20-V - - SH1A-C21-V - - SD1A-C21-V - - SF2A-C21-V - - SD1B-C21-V - - SH2B-C21-V - - SD1D-C21-V - - SF2E-C21-V - - SD1E-C21-V - - SH3E-C21-V - - SH1A-C22-V - - SD1A-C22-V - - SF2A-C22-V - - SD1B-C22-V - - SH2B-C22-V - - SD1D-C22-V - - SF2E-C22-V - - SD1E-C22-V - - SH3E-C22-V - - SH1A-C23-V - - SD1A-C23-V - - SF2A-C23-V - - SD1B-C23-V - - SH2B-C23-V - - SD1D-C23-V - - SF2E-C23-V - - SD1E-C23-V - - SH3E-C23-V - - SH1A-C24-V - - SD1A-C24-V - - SF2A-C24-V - - SD1B-C24-V - - SH2B-C24-V - - SD1D-C24-V - - SF2E-C24-V - - SD1E-C24-V - - SH3E-C24-V - - SH1A-C25-V - - SD1A-C25-V - - SF2A-C25-V - - SD1B-C25-V - - SH2B-C25-V - - SD1D-C25-V - - SF2E-C25-V - - SD1E-C25-V - - SH3E-C25-V - - SH1A-C26-V - - SD1A-C26-V - - SF2A-C26-V - - SD1B-C26-V - - SH2B-C26-V - - SD1D-C26-V - - SF2E-C26-V - - SD1E-C26-V - - SH3E-C26-V - - SH1A-C27-V - - SD1A-C27-V - - SF2A-C27-V - - SD1B-C27-V - - SH2B-C27-V - - SD1D-C27-V - - SF2E-C27-V - - SD1E-C27-V - - SH3E-C27-V - - SH1A-C28-V - - SD1A-C28-V - - SF2A-C28-V - - SD1B-C28-V - - SH2B-C28-V - - SD1D-C28-V - - SF2E-C28-V - - SD1E-C28-V - - SH3E-C28-V - - SH1A-C29-V - - SD1A-C29-V - - SF2A-C29-V - - SD1B-C29-V - - SH2B-C29-V - - SD1D-C29-V - - SF2E-C29-V - - SD1E-C29-V - - SH3E-C29-V - - SH1A-C30-V - - SD1A-C30-V - - SF2A-C30-V - - SD1B-C30-V - - SH2B-C30-V - - SD1D-C30-V - - SF2E-C30-V - - SD1E-C30-V - - SH3E-C30-V - - SH1A-C31-V - - SD1A-C31-V - - SF2A-C31-V - - SD1B-C31-V - - SH2B-C31-V - - SD1D-C31-V - - SF2E-C31-V - - SD1E-C31-V - - SH3E-C31-V - - SH1A-C32-V - - SD1A-C32-V - - SF2A-C32-V - - SD1B-C32-V - - SH2B-C32-V - - SD1D-C32-V - - SF2E-C32-V - - SD1E-C32-V - - SH3E-C32-V - - SH1A-C01-V - - SD1A-C01-V - - SF2A-C01-V - - SD1B-C01-V - - SH2B-C01-V - - SD1D-C01-V - - SF2E-C01-V - - SD1E-C01-V - - SH3E-C01-V - - SH1A-C02-V - - SD1A-C02-V - - SF2A-C02-V - - SD1B-C02-V - - SH2B-C02-V - - SD1D-C02-V - - SF2E-C02-V - - SD1E-C02-V - - SH3E-C02-V - - SH1A-C03-V - - SI1A-C03-V - - SI2A-C03-V - - SI1B-C03-V - - SH2B-C03-V - - SI1D-C03-V - - SI2E-C03-V - - SI1E-C03-V - - SH3E-C03-V + - S*-V - type: pyaml.arrays.magnet name: Skews elements: - - SH1A-C04-SQ - - SJ1A-C04-SQ - - SJ2A-C04-SQ - - SJ1B-C04-SQ - - SH2B-C04-SQ - - SJ1D-C04-SQ - - SJ2E-C04-SQ - - SJ1E-C04-SQ - - SH3E-C04-SQ - - SH1A-C05-SQ - - SD1A-C05-SQ - - SF2A-C05-SQ - - SD1B-C05-SQ - - SH2B-C05-SQ - - SD1D-C05-SQ - - SF2E-C05-SQ - - SD1E-C05-SQ - - SH3E-C05-SQ - - SH1A-C06-SQ - - SD1A-C06-SQ - - SF2A-C06-SQ - - SD1B-C06-SQ - - SH2B-C06-SQ - - SD1D-C06-SQ - - SF2E-C06-SQ - - SD1E-C06-SQ - - SH3E-C06-SQ - - SH1A-C07-SQ - - SD1A-C07-SQ - - SF2A-C07-SQ - - SD1B-C07-SQ - - SH2B-C07-SQ - - SD1D-C07-SQ - - SF2E-C07-SQ - - SD1E-C07-SQ - - SH3E-C07-SQ - - SH1A-C08-SQ - - SD1A-C08-SQ - - SF2A-C08-SQ - - SD1B-C08-SQ - - SH2B-C08-SQ - - SD1D-C08-SQ - - SF2E-C08-SQ - - SD1E-C08-SQ - - SH3E-C08-SQ - - SH1A-C09-SQ - - SD1A-C09-SQ - - SF2A-C09-SQ - - SD1B-C09-SQ - - SH2B-C09-SQ - - SD1D-C09-SQ - - SF2E-C09-SQ - - SD1E-C09-SQ - - SH3E-C09-SQ - - SH1A-C10-SQ - - SD1A-C10-SQ - - SF2A-C10-SQ - - SD1B-C10-SQ - - SH2B-C10-SQ - - SD1D-C10-SQ - - SF2E-C10-SQ - - SD1E-C10-SQ - - SH3E-C10-SQ - - SH1A-C11-SQ - - SD1A-C11-SQ - - SF2A-C11-SQ - - SD1B-C11-SQ - - SH2B-C11-SQ - - SD1D-C11-SQ - - SF2E-C11-SQ - - SD1E-C11-SQ - - SH3E-C11-SQ - - SH1A-C12-SQ - - SD1A-C12-SQ - - SF2A-C12-SQ - - SD1B-C12-SQ - - SH2B-C12-SQ - - SD1D-C12-SQ - - SF2E-C12-SQ - - SD1E-C12-SQ - - SH3E-C12-SQ - - SH1A-C13-SQ - - SD1A-C13-SQ - - SF2A-C13-SQ - - SD1B-C13-SQ - - SH2B-C13-SQ - - SD1D-C13-SQ - - SF2E-C13-SQ - - SD1E-C13-SQ - - SH3E-C13-SQ - - SH1A-C14-SQ - - SD1A-C14-SQ - - SF2A-C14-SQ - - SD1B-C14-SQ - - SH2B-C14-SQ - - SD1D-C14-SQ - - SF2E-C14-SQ - - SD1E-C14-SQ - - SH3E-C14-SQ - - SH1A-C15-SQ - - SD1A-C15-SQ - - SF2A-C15-SQ - - SD1B-C15-SQ - - SH2B-C15-SQ - - SD1D-C15-SQ - - SF2E-C15-SQ - - SD1E-C15-SQ - - SH3E-C15-SQ - - SH1A-C16-SQ - - SD1A-C16-SQ - - SF2A-C16-SQ - - SD1B-C16-SQ - - SH2B-C16-SQ - - SD1D-C16-SQ - - SF2E-C16-SQ - - SD1E-C16-SQ - - SH3E-C16-SQ - - SH1A-C17-SQ - - SD1A-C17-SQ - - SF2A-C17-SQ - - SD1B-C17-SQ - - SH2B-C17-SQ - - SD1D-C17-SQ - - SF2E-C17-SQ - - SD1E-C17-SQ - - SH3E-C17-SQ - - SH1A-C18-SQ - - SD1A-C18-SQ - - SF2A-C18-SQ - - SD1B-C18-SQ - - SH2B-C18-SQ - - SD1D-C18-SQ - - SF2E-C18-SQ - - SD1E-C18-SQ - - SH3E-C18-SQ - - SH1A-C19-SQ - - SD1A-C19-SQ - - SF2A-C19-SQ - - SD1B-C19-SQ - - SH2B-C19-SQ - - SD1D-C19-SQ - - SF2E-C19-SQ - - SD1E-C19-SQ - - SH3E-C19-SQ - - SH1A-C20-SQ - - SD1A-C20-SQ - - SF2A-C20-SQ - - SD1B-C20-SQ - - SH2B-C20-SQ - - SD1D-C20-SQ - - SF2E-C20-SQ - - SD1E-C20-SQ - - SH3E-C20-SQ - - SH1A-C21-SQ - - SD1A-C21-SQ - - SF2A-C21-SQ - - SD1B-C21-SQ - - SH2B-C21-SQ - - SD1D-C21-SQ - - SF2E-C21-SQ - - SD1E-C21-SQ - - SH3E-C21-SQ - - SH1A-C22-SQ - - SD1A-C22-SQ - - SF2A-C22-SQ - - SD1B-C22-SQ - - SH2B-C22-SQ - - SD1D-C22-SQ - - SF2E-C22-SQ - - SD1E-C22-SQ - - SH3E-C22-SQ - - SH1A-C23-SQ - - SD1A-C23-SQ - - SF2A-C23-SQ - - SD1B-C23-SQ - - SH2B-C23-SQ - - SD1D-C23-SQ - - SF2E-C23-SQ - - SD1E-C23-SQ - - SH3E-C23-SQ - - SH1A-C24-SQ - - SD1A-C24-SQ - - SF2A-C24-SQ - - SD1B-C24-SQ - - SH2B-C24-SQ - - SD1D-C24-SQ - - SF2E-C24-SQ - - SD1E-C24-SQ - - SH3E-C24-SQ - - SH1A-C25-SQ - - SD1A-C25-SQ - - SF2A-C25-SQ - - SD1B-C25-SQ - - SH2B-C25-SQ - - SD1D-C25-SQ - - SF2E-C25-SQ - - SD1E-C25-SQ - - SH3E-C25-SQ - - SH1A-C26-SQ - - SD1A-C26-SQ - - SF2A-C26-SQ - - SD1B-C26-SQ - - SH2B-C26-SQ - - SD1D-C26-SQ - - SF2E-C26-SQ - - SD1E-C26-SQ - - SH3E-C26-SQ - - SH1A-C27-SQ - - SD1A-C27-SQ - - SF2A-C27-SQ - - SD1B-C27-SQ - - SH2B-C27-SQ - - SD1D-C27-SQ - - SF2E-C27-SQ - - SD1E-C27-SQ - - SH3E-C27-SQ - - SH1A-C28-SQ - - SD1A-C28-SQ - - SF2A-C28-SQ - - SD1B-C28-SQ - - SH2B-C28-SQ - - SD1D-C28-SQ - - SF2E-C28-SQ - - SD1E-C28-SQ - - SH3E-C28-SQ - - SH1A-C29-SQ - - SD1A-C29-SQ - - SF2A-C29-SQ - - SD1B-C29-SQ - - SH2B-C29-SQ - - SD1D-C29-SQ - - SF2E-C29-SQ - - SD1E-C29-SQ - - SH3E-C29-SQ - - SH1A-C30-SQ - - SD1A-C30-SQ - - SF2A-C30-SQ - - SD1B-C30-SQ - - SH2B-C30-SQ - - SD1D-C30-SQ - - SF2E-C30-SQ - - SD1E-C30-SQ - - SH3E-C30-SQ - - SH1A-C31-SQ - - SD1A-C31-SQ - - SF2A-C31-SQ - - SD1B-C31-SQ - - SH2B-C31-SQ - - SD1D-C31-SQ - - SF2E-C31-SQ - - SD1E-C31-SQ - - SH3E-C31-SQ - - SH1A-C32-SQ - - SD1A-C32-SQ - - SF2A-C32-SQ - - SD1B-C32-SQ - - SH2B-C32-SQ - - SD1D-C32-SQ - - SF2E-C32-SQ - - SD1E-C32-SQ - - SH3E-C32-SQ - - SH1A-C01-SQ - - SD1A-C01-SQ - - SF2A-C01-SQ - - SD1B-C01-SQ - - SH2B-C01-SQ - - SD1D-C01-SQ - - SF2E-C01-SQ - - SD1E-C01-SQ - - SH3E-C01-SQ - - SH1A-C02-SQ - - SD1A-C02-SQ - - SF2A-C02-SQ - - SD1B-C02-SQ - - SH2B-C02-SQ - - SD1D-C02-SQ - - SF2E-C02-SQ - - SD1E-C02-SQ - - SH3E-C02-SQ - - SH1A-C03-SQ - - SI1A-C03-SQ - - SI2A-C03-SQ - - SI1B-C03-SQ - - SH2B-C03-SQ - - SI1D-C03-SQ - - SI2E-C03-SQ - - SI1E-C03-SQ - - SH3E-C03-SQ + - S*-SQ - type: pyaml.arrays.bpm name: BPM elements: - - BPM_C04-01 - - BPM_C04-02 - - BPM_C04-03 - - BPM_C04-04 - - BPM_C04-05 - - BPM_C04-06 - - BPM_C04-07 - - BPM_C04-08 - - BPM_C04-09 - - BPM_C04-10 - - BPM_C05-01 - - BPM_C05-02 - - BPM_C05-03 - - BPM_C05-04 - - BPM_C05-05 - - BPM_C05-06 - - BPM_C05-07 - - BPM_C05-08 - - BPM_C05-09 - - BPM_C05-10 - - BPM_C06-01 - - BPM_C06-02 - - BPM_C06-03 - - BPM_C06-04 - - BPM_C06-05 - - BPM_C06-06 - - BPM_C06-07 - - BPM_C06-08 - - BPM_C06-09 - - BPM_C06-10 - - BPM_C07-01 - - BPM_C07-02 - - BPM_C07-03 - - BPM_C07-04 - - BPM_C07-05 - - BPM_C07-06 - - BPM_C07-07 - - BPM_C07-08 - - BPM_C07-09 - - BPM_C07-10 - - BPM_C08-01 - - BPM_C08-02 - - BPM_C08-03 - - BPM_C08-04 - - BPM_C08-05 - - BPM_C08-06 - - BPM_C08-07 - - BPM_C08-08 - - BPM_C08-09 - - BPM_C08-10 - - BPM_C09-01 - - BPM_C09-02 - - BPM_C09-03 - - BPM_C09-04 - - BPM_C09-05 - - BPM_C09-06 - - BPM_C09-07 - - BPM_C09-08 - - BPM_C09-09 - - BPM_C09-10 - - BPM_C10-01 - - BPM_C10-02 - - BPM_C10-03 - - BPM_C10-04 - - BPM_C10-05 - - BPM_C10-06 - - BPM_C10-07 - - BPM_C10-08 - - BPM_C10-09 - - BPM_C10-10 - - BPM_C11-01 - - BPM_C11-02 - - BPM_C11-03 - - BPM_C11-04 - - BPM_C11-05 - - BPM_C11-06 - - BPM_C11-07 - - BPM_C11-08 - - BPM_C11-09 - - BPM_C11-10 - - BPM_C12-01 - - BPM_C12-02 - - BPM_C12-03 - - BPM_C12-04 - - BPM_C12-05 - - BPM_C12-06 - - BPM_C12-07 - - BPM_C12-08 - - BPM_C12-09 - - BPM_C12-10 - - BPM_C13-01 - - BPM_C13-02 - - BPM_C13-03 - - BPM_C13-04 - - BPM_C13-05 - - BPM_C13-06 - - BPM_C13-07 - - BPM_C13-08 - - BPM_C13-09 - - BPM_C13-10 - - BPM_C14-01 - - BPM_C14-02 - - BPM_C14-03 - - BPM_C14-04 - - BPM_C14-05 - - BPM_C14-06 - - BPM_C14-07 - - BPM_C14-08 - - BPM_C14-09 - - BPM_C14-10 - - BPM_C15-01 - - BPM_C15-02 - - BPM_C15-03 - - BPM_C15-04 - - BPM_C15-05 - - BPM_C15-06 - - BPM_C15-07 - - BPM_C15-08 - - BPM_C15-09 - - BPM_C15-10 - - BPM_C16-01 - - BPM_C16-02 - - BPM_C16-03 - - BPM_C16-04 - - BPM_C16-05 - - BPM_C16-06 - - BPM_C16-07 - - BPM_C16-08 - - BPM_C16-09 - - BPM_C16-10 - - BPM_C17-01 - - BPM_C17-02 - - BPM_C17-03 - - BPM_C17-04 - - BPM_C17-05 - - BPM_C17-06 - - BPM_C17-07 - - BPM_C17-08 - - BPM_C17-09 - - BPM_C17-10 - - BPM_C18-01 - - BPM_C18-02 - - BPM_C18-03 - - BPM_C18-04 - - BPM_C18-05 - - BPM_C18-06 - - BPM_C18-07 - - BPM_C18-08 - - BPM_C18-09 - - BPM_C18-10 - - BPM_C19-01 - - BPM_C19-02 - - BPM_C19-03 - - BPM_C19-04 - - BPM_C19-05 - - BPM_C19-06 - - BPM_C19-07 - - BPM_C19-08 - - BPM_C19-09 - - BPM_C19-10 - - BPM_C20-01 - - BPM_C20-02 - - BPM_C20-03 - - BPM_C20-04 - - BPM_C20-05 - - BPM_C20-06 - - BPM_C20-07 - - BPM_C20-08 - - BPM_C20-09 - - BPM_C20-10 - - BPM_C21-01 - - BPM_C21-02 - - BPM_C21-03 - - BPM_C21-04 - - BPM_C21-05 - - BPM_C21-06 - - BPM_C21-07 - - BPM_C21-08 - - BPM_C21-09 - - BPM_C21-10 - - BPM_C22-01 - - BPM_C22-02 - - BPM_C22-03 - - BPM_C22-04 - - BPM_C22-05 - - BPM_C22-06 - - BPM_C22-07 - - BPM_C22-08 - - BPM_C22-09 - - BPM_C22-10 - - BPM_C23-01 - - BPM_C23-02 - - BPM_C23-03 - - BPM_C23-04 - - BPM_C23-05 - - BPM_C23-06 - - BPM_C23-07 - - BPM_C23-08 - - BPM_C23-09 - - BPM_C23-10 - - BPM_C24-01 - - BPM_C24-02 - - BPM_C24-03 - - BPM_C24-04 - - BPM_C24-05 - - BPM_C24-06 - - BPM_C24-07 - - BPM_C24-08 - - BPM_C24-09 - - BPM_C24-10 - - BPM_C25-01 - - BPM_C25-02 - - BPM_C25-03 - - BPM_C25-04 - - BPM_C25-05 - - BPM_C25-06 - - BPM_C25-07 - - BPM_C25-08 - - BPM_C25-09 - - BPM_C25-10 - - BPM_C26-01 - - BPM_C26-02 - - BPM_C26-03 - - BPM_C26-04 - - BPM_C26-05 - - BPM_C26-06 - - BPM_C26-07 - - BPM_C26-08 - - BPM_C26-09 - - BPM_C26-10 - - BPM_C27-01 - - BPM_C27-02 - - BPM_C27-03 - - BPM_C27-04 - - BPM_C27-05 - - BPM_C27-06 - - BPM_C27-07 - - BPM_C27-08 - - BPM_C27-09 - - BPM_C27-10 - - BPM_C28-01 - - BPM_C28-02 - - BPM_C28-03 - - BPM_C28-04 - - BPM_C28-05 - - BPM_C28-06 - - BPM_C28-07 - - BPM_C28-08 - - BPM_C28-09 - - BPM_C28-10 - - BPM_C29-01 - - BPM_C29-02 - - BPM_C29-03 - - BPM_C29-04 - - BPM_C29-05 - - BPM_C29-06 - - BPM_C29-07 - - BPM_C29-08 - - BPM_C29-09 - - BPM_C29-10 - - BPM_C30-01 - - BPM_C30-02 - - BPM_C30-03 - - BPM_C30-04 - - BPM_C30-05 - - BPM_C30-06 - - BPM_C30-07 - - BPM_C30-08 - - BPM_C30-09 - - BPM_C30-10 - - BPM_C31-01 - - BPM_C31-02 - - BPM_C31-03 - - BPM_C31-04 - - BPM_C31-05 - - BPM_C31-06 - - BPM_C31-07 - - BPM_C31-08 - - BPM_C31-09 - - BPM_C31-10 - - BPM_C32-01 - - BPM_C32-02 - - BPM_C32-03 - - BPM_C32-04 - - BPM_C32-05 - - BPM_C32-06 - - BPM_C32-07 - - BPM_C32-08 - - BPM_C32-09 - - BPM_C32-10 - - BPM_C01-01 - - BPM_C01-02 - - BPM_C01-03 - - BPM_C01-04 - - BPM_C01-05 - - BPM_C01-06 - - BPM_C01-07 - - BPM_C01-08 - - BPM_C01-09 - - BPM_C01-10 - - BPM_C02-01 - - BPM_C02-02 - - BPM_C02-03 - - BPM_C02-04 - - BPM_C02-05 - - BPM_C02-06 - - BPM_C02-07 - - BPM_C02-08 - - BPM_C02-09 - - BPM_C02-10 - - BPM_C03-01 - - BPM_C03-02 - - BPM_C03-03 - - BPM_C03-04 - - BPM_C03-05 - - BPM_C03-06 - - BPM_C03-07 - - BPM_C03-08 - - BPM_C03-09 - - BPM_C03-10 + - BPM* devices: - type: pyaml.diagnostics.tune_monitor name: BETATRON_TUNE diff --git a/tests/config/EBSTune-patterns.yaml b/tests/config/EBSTune-patterns.yaml new file mode 100644 index 00000000..bb877d65 --- /dev/null +++ b/tests/config/EBSTune-patterns.yaml @@ -0,0 +1,1781 @@ +type: pyaml.accelerator +facility: ESRF +machine: sr +energy: 6e9 +description: "Accelerator configuration for EBS storage ring" +simulators: + - type: pyaml.lattice.simulator + description: "EBS lattice" + lattice: sr/lattices/ebs.mat + name: design +controls: + - type: tango.pyaml.controlsystem + tango_host: ebs-simu-3:10000 + name: live +data_folder: /data/store +arrays: + - type: pyaml.arrays.magnet + name: QForTune + elements: + - QD2* + - QF1* + - type: pyaml.arrays.magnet + name: QForTest + elements: + - QD2* + - QF1* + - ~QF1E-C05 + - ~Q???-C06 +devices: +- type: pyaml.magnet.quadrupole + description: "QF1E-C04 quadrupole" + name: QF1E-C04 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00054 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c04-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C05 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.996841 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c05-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C05 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00191 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c05-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C06 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0003 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c06-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C06 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997615 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c06-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C07 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998152 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c07-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C07 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00262 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c07-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C08 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00319 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c08-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C08 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.996180929 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c08-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C09 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00206 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c09-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C09 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999285 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c09-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C10 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00232 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c10-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C10 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998212 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c10-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C11 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999225 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c11-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C11 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998033 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c11-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C12 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998748 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c12-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C12 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0023 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c12-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C13 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00337 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c13-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C13 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00403 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c13-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C14 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00182 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c14-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C14 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998303 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c14-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C15 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998748 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c15-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C15 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.994098 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c15-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C16 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00232 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c16-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C16 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.99884 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c16-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C17 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0079 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c17-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C17 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999523 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c17-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C18 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c18-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C18 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999854 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c18-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C19 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.99845 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c19-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C19 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c19-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C20 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00095 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c20-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C20 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.996753 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c20-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C21 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00334 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c21-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C21 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997707 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c21-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C22 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00152 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c22-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C22 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998124 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c22-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C23 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.996662 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c23-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C23 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0017 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c23-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C24 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999642 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c24-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C24 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00042 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c24-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C25 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00471 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c25-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C25 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00393 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c25-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C26 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.992906 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c26-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C26 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00268 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c26-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C27 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00248 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c27-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C27 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00203 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c27-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C28 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998030791 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c28-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C28 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00232 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c28-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C29 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.995052 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c29-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C29 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00155 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c29-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C30 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998271 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c30-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C30 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999702 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c30-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C31 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998005 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c31-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C31 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999463 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c31-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C32 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997794 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c32-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C32 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00203 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c32-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C01 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00504 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c01-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C01 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998212 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c01-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C02 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0037 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c02-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1E-C02 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00093 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c02-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QF1A-C03 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0025 + crosstalk: 1.0 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QF1_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qf1/c03-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C04 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999305341 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c04-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C05 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997452918 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c05-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C05 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997993208 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c05-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C06 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.006031322 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c06-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C06 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998547233 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c06-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C07 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.002327856 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c07-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C07 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.000154369 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c07-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C08 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.009580478 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c08-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C08 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.00447669 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c08-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C09 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0015563 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c09-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C09 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997221365 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c09-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C10 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.005954167 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c10-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C10 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.006725723 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c10-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C11 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.994535144 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c11-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C11 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999550256 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c11-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C12 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001479145 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c12-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C12 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.000321811 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c12-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C13 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.006715036 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c13-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C13 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0036395 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c13-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C14 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997684471 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c14-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C14 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.000385922 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c14-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C15 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999010167 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c15-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C15 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998392922 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c15-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C16 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999318789 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c16-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C16 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.996926967 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c16-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C17 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.000849027 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c17-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C17 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.003392444 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c17-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C18 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001312133 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c18-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C18 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.005402902 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c18-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C19 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.995846789 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c19-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C19 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.005877011 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c19-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C20 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001016211 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c20-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C20 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999010167 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c20-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C21 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.007265811 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c21-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C21 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998238611 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c21-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C22 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998161456 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c22-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C22 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.004642522 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c22-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C23 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001479145 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c23-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C23 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001942078 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c23-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C24 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999087322 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c24-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C24 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998547233 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c24-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C25 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001698055 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c25-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C25 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999704567 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c25-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C26 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999164478 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c26-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C26 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.000694659 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c26-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C27 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.99945971 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c27-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C27 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999922816 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c27-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C28 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999922816 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c28-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C28 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.997838839 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c28-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C29 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.003318926 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c29-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C29 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.004179589 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c29-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C30 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.999010167 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c30-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C30 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.9987787 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c30-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C31 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.004411056 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c31-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C31 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0029451 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c31-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C32 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.009426167 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c32-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C32 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.0050283 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c32-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C01 + model: + type: pyaml.magnet.linear_model + calibration_factor: 0.998533498 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c01-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C01 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.003485189 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c01-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C02 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.001389318 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c02-a/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2E-C02 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.006108478 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c02-e/current + unit: A +- type: pyaml.magnet.quadrupole + name: QD2A-C03 + model: + type: pyaml.magnet.linear_model + calibration_factor: 1.002096389 + crosstalk: 0.99912 + curve: + type: pyaml.configuration.csvcurve + file: sr/magnet_models/QD2_strength.csv + unit: 1/m + powerconverter: + type: tango.pyaml.attribute + attribute: srmag/vps-qd2/c03-a/current + unit: A +- type: pyaml.diagnostics.tune_monitor + name: BETATRON_TUNE + tune_h: + type: tango.pyaml.attribute_read_only + attribute: srdiag/beam-tune/main/Qh + unit: mm + tune_v: + type: tango.pyaml.attribute_read_only + attribute: srdiag/beam-tune/main/Qv + unit: mm +- type: pyaml.tuning_tools.tune + name: DEFAULT_TUNE_CORRECTION + quad_array: QForTune + betatron_tune: BETATRON_TUNE + delta: 1e-4 diff --git a/tests/config/EBSTune-range.yaml b/tests/config/EBSTune-range.yaml index 3422a53c..b598044c 100644 --- a/tests/config/EBSTune-range.yaml +++ b/tests/config/EBSTune-range.yaml @@ -15,130 +15,8 @@ arrays: - type: pyaml.arrays.magnet name: QForTune elements: - - QD2E-C04 - - QD2A-C05 - - QD2E-C05 - - QD2A-C06 - - QD2E-C06 - - QD2A-C07 - - QD2E-C07 - - QD2A-C08 - - QD2E-C08 - - QD2A-C09 - - QD2E-C09 - - QD2A-C10 - - QD2E-C10 - - QD2A-C11 - - QD2E-C11 - - QD2A-C12 - - QD2E-C12 - - QD2A-C13 - - QD2E-C13 - - QD2A-C14 - - QD2E-C14 - - QD2A-C15 - - QD2E-C15 - - QD2A-C16 - - QD2E-C16 - - QD2A-C17 - - QD2E-C17 - - QD2A-C18 - - QD2E-C18 - - QD2A-C19 - - QD2E-C19 - - QD2A-C20 - - QD2E-C20 - - QD2A-C21 - - QD2E-C21 - - QD2A-C22 - - QD2E-C22 - - QD2A-C23 - - QD2E-C23 - - QD2A-C24 - - QD2E-C24 - - QD2A-C25 - - QD2E-C25 - - QD2A-C26 - - QD2E-C26 - - QD2A-C27 - - QD2E-C27 - - QD2A-C28 - - QD2E-C28 - - QD2A-C29 - - QD2E-C29 - - QD2A-C30 - - QD2E-C30 - - QD2A-C31 - - QD2E-C31 - - QD2A-C32 - - QD2E-C32 - - QD2A-C01 - - QD2E-C01 - - QD2A-C02 - - QD2E-C02 - - QD2A-C03 - - QF1E-C04 - - QF1A-C05 - - QF1E-C05 - - QF1A-C06 - - QF1E-C06 - - QF1A-C07 - - QF1E-C07 - - QF1A-C08 - - QF1E-C08 - - QF1A-C09 - - QF1E-C09 - - QF1A-C10 - - QF1E-C10 - - QF1A-C11 - - QF1E-C11 - - QF1A-C12 - - QF1E-C12 - - QF1A-C13 - - QF1E-C13 - - QF1A-C14 - - QF1E-C14 - - QF1A-C15 - - QF1E-C15 - - QF1A-C16 - - QF1E-C16 - - QF1A-C17 - - QF1E-C17 - - QF1A-C18 - - QF1E-C18 - - QF1A-C19 - - QF1E-C19 - - QF1A-C20 - - QF1E-C20 - - QF1A-C21 - - QF1E-C21 - - QF1A-C22 - - QF1E-C22 - - QF1A-C23 - - QF1E-C23 - - QF1A-C24 - - QF1E-C24 - - QF1A-C25 - - QF1E-C25 - - QF1A-C26 - - QF1E-C26 - - QF1A-C27 - - QF1E-C27 - - QF1A-C28 - - QF1E-C28 - - QF1A-C29 - - QF1E-C29 - - QF1A-C30 - - QF1E-C30 - - QF1A-C31 - - QF1E-C31 - - QF1A-C32 - - QF1E-C32 - - QF1A-C01 - - QF1E-C01 - - QF1A-C02 - - QF1E-C02 - - QF1A-C03 + - QD2* + - QF1* devices: - type: pyaml.magnet.quadrupole name: QF1E-C04 diff --git a/tests/config/EBSTune.yaml b/tests/config/EBSTune.yaml index 04f25524..c1f71a3a 100644 --- a/tests/config/EBSTune.yaml +++ b/tests/config/EBSTune.yaml @@ -17,130 +17,8 @@ arrays: - type: pyaml.arrays.magnet name: QForTune elements: - - QD2E-C04 - - QD2A-C05 - - QD2E-C05 - - QD2A-C06 - - QD2E-C06 - - QD2A-C07 - - QD2E-C07 - - QD2A-C08 - - QD2E-C08 - - QD2A-C09 - - QD2E-C09 - - QD2A-C10 - - QD2E-C10 - - QD2A-C11 - - QD2E-C11 - - QD2A-C12 - - QD2E-C12 - - QD2A-C13 - - QD2E-C13 - - QD2A-C14 - - QD2E-C14 - - QD2A-C15 - - QD2E-C15 - - QD2A-C16 - - QD2E-C16 - - QD2A-C17 - - QD2E-C17 - - QD2A-C18 - - QD2E-C18 - - QD2A-C19 - - QD2E-C19 - - QD2A-C20 - - QD2E-C20 - - QD2A-C21 - - QD2E-C21 - - QD2A-C22 - - QD2E-C22 - - QD2A-C23 - - QD2E-C23 - - QD2A-C24 - - QD2E-C24 - - QD2A-C25 - - QD2E-C25 - - QD2A-C26 - - QD2E-C26 - - QD2A-C27 - - QD2E-C27 - - QD2A-C28 - - QD2E-C28 - - QD2A-C29 - - QD2E-C29 - - QD2A-C30 - - QD2E-C30 - - QD2A-C31 - - QD2E-C31 - - QD2A-C32 - - QD2E-C32 - - QD2A-C01 - - QD2E-C01 - - QD2A-C02 - - QD2E-C02 - - QD2A-C03 - - QF1E-C04 - - QF1A-C05 - - QF1E-C05 - - QF1A-C06 - - QF1E-C06 - - QF1A-C07 - - QF1E-C07 - - QF1A-C08 - - QF1E-C08 - - QF1A-C09 - - QF1E-C09 - - QF1A-C10 - - QF1E-C10 - - QF1A-C11 - - QF1E-C11 - - QF1A-C12 - - QF1E-C12 - - QF1A-C13 - - QF1E-C13 - - QF1A-C14 - - QF1E-C14 - - QF1A-C15 - - QF1E-C15 - - QF1A-C16 - - QF1E-C16 - - QF1A-C17 - - QF1E-C17 - - QF1A-C18 - - QF1E-C18 - - QF1A-C19 - - QF1E-C19 - - QF1A-C20 - - QF1E-C20 - - QF1A-C21 - - QF1E-C21 - - QF1A-C22 - - QF1E-C22 - - QF1A-C23 - - QF1E-C23 - - QF1A-C24 - - QF1E-C24 - - QF1A-C25 - - QF1E-C25 - - QF1A-C26 - - QF1E-C26 - - QF1A-C27 - - QF1E-C27 - - QF1A-C28 - - QF1E-C28 - - QF1A-C29 - - QF1E-C29 - - QF1A-C30 - - QF1E-C30 - - QF1A-C31 - - QF1E-C31 - - QF1A-C32 - - QF1E-C32 - - QF1A-C01 - - QF1E-C01 - - QF1A-C02 - - QF1E-C02 - - QF1A-C03 + - QD2* + - QF1* devices: - type: pyaml.magnet.quadrupole description: "QF1E-C04 quadrupole" diff --git a/tests/config/bad_conf_duplicate_4.yaml b/tests/config/bad_conf_duplicate_4.yaml new file mode 100644 index 00000000..95beb2f2 --- /dev/null +++ b/tests/config/bad_conf_duplicate_4.yaml @@ -0,0 +1,24 @@ +type: pyaml.accelerator +facility: ESRF +machine: sr +energy: 6e9 +simulators: + - type: pyaml.lattice.simulator + lattice: sr/lattices/ebs.mat + name: design +data_folder: /data/store +arrays: + - type: pyaml.arrays.magnet + name: HCORR + elements: + - SH1A-C0?-H + - SH1A-C02-H # duplicate name in array + - type: pyaml.arrays.magnet + name: VCORR + elements: + - SH1A-C01-V + - SH1A-C02-V +devices: + - sr/quadrupoles/QF1AC01.yaml + - sr/correctors/SH1AC01.yaml + - sr/correctors/SH1AC02.yaml diff --git a/tests/config/sr.yaml b/tests/config/sr.yaml index 92d4a84c..b223852e 100644 --- a/tests/config/sr.yaml +++ b/tests/config/sr.yaml @@ -15,35 +15,28 @@ arrays: - type: pyaml.arrays.magnet name: HCORR elements: - - SH1A-C01-H - - SH1A-C02-H + - SH1A-C0?-H - type: pyaml.arrays.magnet name: VCORR elements: - - SH1A-C01-V - - SH1A-C02-V + - SH1A-C0?-V - type: pyaml.arrays.magnet name: HVCORR elements: - - SH1A-C01-H - - SH1A-C02-H - - SH1A-C01-V - - SH1A-C02-V + - re:^SH1A-C0[12]-H$ + - re:^SH1A-C0[12]-V$ - type: pyaml.arrays.cfm_magnet name: CFM elements: - - SH1A-C01 - - SH1A-C02 + - SH1A-C0? - type: pyaml.arrays.bpm name: BPMS elements: - - BPM_C04-01 - - BPM_C04-02 + - BPM_C04-* - type: pyaml.arrays.element name: ElArray elements: - - BPM_C04-01 - - BPM_C04-02 + - re:^BPM_C04-0[12]$ - SH1A-C01-V - SH1A-C02-H devices: diff --git a/tests/test_errors.py b/tests/test_errors.py index a71d28b4..04b17608 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -24,6 +24,10 @@ def test_tune(install_test_package): assert "element BPM_C04-06 already defined" in str(exc) assert "line 58, column 3" in str(exc) + with pytest.raises(PyAMLConfigException) as exc: + ml: Accelerator = Accelerator.load("tests/config/bad_conf_duplicate_4.yaml") + assert "MagnetArray HCORR : duplicate name SH1A-C02-H @index 2" in str(exc) + sr: Accelerator = Accelerator.load("tests/config/EBSTune.yaml") m1 = sr.live.get_magnet("QF1E-C04") m2 = sr.design.get_magnet("QF1A-C05") diff --git a/tests/test_load_conf_with_code.py b/tests/test_load_conf_with_code.py new file mode 100644 index 00000000..ceb4747d --- /dev/null +++ b/tests/test_load_conf_with_code.py @@ -0,0 +1,13 @@ +from pathlib import Path + +from pyaml.accelerator import Accelerator + + +def test_load_conf_with_code(): + parent_folder = Path(__file__).parent + config_path = parent_folder.joinpath("config", "EBSOrbit.yaml").resolve() + + sr: Accelerator = Accelerator.load(config_path) + bpms = sr.live.get_bpms("BPM") + assert bpms is not None + assert len(bpms) == 320 diff --git a/tests/test_patterns.py b/tests/test_patterns.py new file mode 100644 index 00000000..4fde9c1c --- /dev/null +++ b/tests/test_patterns.py @@ -0,0 +1,25 @@ +import numpy as np +import pytest + +from pyaml.accelerator import Accelerator + + +def test_tune(): + sr: Accelerator = Accelerator.load( + "tests/config/EBSTune-patterns.yaml", ignore_external=True + ) + sr.design.get_lattice().disable_6d() + + quadForTune = sr.design.get_magnets("QForTune") + assert len(quadForTune.names()) == 124 + + quadForTest = sr.design.get_magnets("QForTest") + assert sr.design.get_magnet("QF1E-C06") is not None + assert sr.design.get_magnet("QF1E-C05") is not None + assert "QF1E-C05" not in quadForTest.names() + assert all( + [ + not (name.startswith("Q") and name.endswith("-C06")) + for name in quadForTest.names() + ] + )