From b81edfb770462b95d4b6961e938ea41103507a75 Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Fri, 19 Jun 2026 17:55:17 +0200 Subject: [PATCH 01/10] First integration test. --- .github/workflows/dt4acc-integration.yml | 129 ++ pyproject.toml | 5 + tests/integration/data/fodo_1gev_6d.m | 172 +++ tests/integration/data/fodo_1gev_6d.yaml | 1164 +++++++++++++++++ .../integration/data/fodo_1gev_6d_pyaml.json | 782 +++++++++++ .../integration/data/fodo_1gev_6d_pyaml.yaml | 986 ++++++++++++++ tests/integration/test_dt4acc_twin_smoke.py | 35 + 7 files changed, 3273 insertions(+) create mode 100644 .github/workflows/dt4acc-integration.yml create mode 100644 tests/integration/data/fodo_1gev_6d.m create mode 100644 tests/integration/data/fodo_1gev_6d.yaml create mode 100644 tests/integration/data/fodo_1gev_6d_pyaml.json create mode 100644 tests/integration/data/fodo_1gev_6d_pyaml.yaml create mode 100644 tests/integration/test_dt4acc_twin_smoke.py diff --git a/.github/workflows/dt4acc-integration.yml b/.github/workflows/dt4acc-integration.yml new file mode 100644 index 000000000..fc575aa0e --- /dev/null +++ b/.github/workflows/dt4acc-integration.yml @@ -0,0 +1,129 @@ +name: dt4acc integration + +on: + workflow_dispatch: + inputs: + dt4acc_image_uri: + description: "Apptainer ORAS image URI for the dt4acc twin" + required: false + default: "oras://gitlab-registry.synchrotron-soleil.fr/software-control-system/digitaltwin/dt4acc/dt4acc-soleil-twin/dt4acc-soleil-twin:latest" + pull_request: + branches: ["main"] + paths: + - ".github/workflows/dt4acc-integration.yml" + - "pyaml/**" + - "tests/integration/**" + - "pyproject.toml" + +permissions: + contents: read + +jobs: + smoke: + runs-on: ubuntu-latest + timeout-minutes: 30 + + defaults: + run: + shell: bash -el {0} + + env: + TANGO_HOST: 127.0.0.1:10000 + DT4ACC_IMAGE_URI: ${{ inputs.dt4acc_image_uri || 'oras://gitlab-registry.synchrotron-soleil.fr/software-control-system/digitaltwin/dt4acc/dt4acc-soleil-twin/dt4acc-soleil-twin:latest' }} + DT4ACC_REGISTRY_USER: ${{ secrets.DT4ACC_REGISTRY_USER }} + DT4ACC_REGISTRY_PASSWORD: ${{ secrets.DT4ACC_REGISTRY_PASSWORD }} + + steps: + - uses: actions/checkout@v4 + + - name: Set up Apptainer + uses: eWaterCycle/setup-apptainer@v2 + + - name: Set up Python environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-name: pyaml-dt4acc-integration + create-args: >- + -c conda-forge + python=3.12 + pip + pytest + pytango + cache-environment: true + + - name: Install pyAML and Tango backend + run: | + python -m pip install --upgrade pip + python -m pip install -e ".[test]" + python -m pip install --no-deps \ + "tango-pyaml @ git+https://github.com/python-accelerator-middle-layer/tango-pyaml.git" + python -c "import tango; import tango.pyaml" + + - name: Log in to GitLab registry + if: ${{ env.DT4ACC_REGISTRY_USER != '' && env.DT4ACC_REGISTRY_PASSWORD != '' }} + run: | + printf '%s' "${DT4ACC_REGISTRY_PASSWORD}" | + apptainer registry login \ + --username "${DT4ACC_REGISTRY_USER}" \ + --password-stdin \ + oras://gitlab-registry.synchrotron-soleil.fr + + - name: Pull dt4acc twin image + run: | + mkdir -p "${RUNNER_TEMP}/apptainer" + apptainer pull --force --disable-cache \ + "${RUNNER_TEMP}/apptainer/dt4acc-soleil-twin.sif" \ + "${DT4ACC_IMAGE_URI}" + + - name: Start dt4acc twin + run: | + LOG_FILE="${RUNNER_TEMP}/dt4acc-twin.log" + PID_FILE="${RUNNER_TEMP}/dt4acc-twin.pid" + + apptainer run \ + --bind "${GITHUB_WORKSPACE}/tests/integration/data:/data:ro" \ + "${RUNNER_TEMP}/apptainer/dt4acc-soleil-twin.sif" \ + --force-kill-db \ + --tango-host "${TANGO_HOST}" \ + --accelerator-setup-file "/data/fodo_1gev_6d_pyaml.json" \ + --lattice-file "/data/fodo_1gev_6d.m" \ + > "${LOG_FILE}" 2>&1 & + + echo "$!" > "${PID_FILE}" + export TWIN_PID="$(cat "${PID_FILE}")" + export LOG_FILE + + timeout 420 bash -c ' + until grep -q "Calculation heartbeat: simulator/ringsimulator/ringsimulator reachable" "${LOG_FILE}"; do + if ! kill -0 "${TWIN_PID}" 2>/dev/null; then + cat "${LOG_FILE}" + exit 1 + fi + sleep 2 + done + ' + + - name: Run pyAML dt4acc smoke test + env: + PYAML_DT4ACC_INTEGRATION: "1" + run: | + python -m pytest -v tests/integration/test_dt4acc_twin_smoke.py + + - name: Stop dt4acc twin + if: always() + run: | + PID_FILE="${RUNNER_TEMP}/dt4acc-twin.pid" + if [ -f "${PID_FILE}" ]; then + kill "$(cat "${PID_FILE}")" 2>/dev/null || true + wait "$(cat "${PID_FILE}")" 2>/dev/null || true + fi + if [ -f "${RUNNER_TEMP}/dt4acc-twin.log" ]; then + tail -n 200 "${RUNNER_TEMP}/dt4acc-twin.log" || true + fi + + - name: Upload dt4acc logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: dt4acc-twin-log + path: ${{ runner.temp }}/dt4acc-twin.log diff --git a/pyproject.toml b/pyproject.toml index 470b48047..a9ebee41b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -126,3 +126,8 @@ skip-magic-trailing-comma = false python_version = "3.11" strict = false ignore_missing_imports = true + +[tool.pytest.ini_options] +markers = [ + "integration: tests requiring an external integration runtime", +] diff --git a/tests/integration/data/fodo_1gev_6d.m b/tests/integration/data/fodo_1gev_6d.m new file mode 100644 index 000000000..a4dd689cb --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d.m @@ -0,0 +1,172 @@ +function ring = fodo_1gev_6d() +ring = {... + atringparam('FODO_1GeV_6D', 1000000000.0, 1, 'Particle', struct('name', 'relativistic', 'rest_energy', 0.0, 'charge', -1.0), 'beam_current', 0.0, 'cell_harmnumber', 90.0);... + atrfcavity('RF_001', 0.0, 300000.0, 351319286.71874994, 90, 1000000000.0, 'UUID', 'RF_001_cc245d84ca2b4ba9b54051069a4cfb8f');... + atquadrupole('QF_001', 0.4, 1.2580503144087112, 'UUID', 'QF_001_f2013521b99e4a76bed1db7ec67464b0');... + atsextupole('SF_001', 0.1, 2.1149384071729247, 'UUID', 'SF_001_f934c7cf2c704132acfce86bc2419e36');... + atdrift('DRs_001', 0.4);... + atsbend('B_001', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_001_6182cf9bb0184f0bb9afc6655b5a6be6');... + atdrift('DR_001', 0.5);... + atquadrupole('QD_001', 0.4, -1.3094253462460304, 'UUID', 'QD_001_15812e1906ee4bc7b94abb8ccd910f5b');... + atsextupole('SD_001', 0.1, -3.4137638639939585, 'UUID', 'SD_001_4e39bd9617e7428486da49e4b5cc3981');... + atdrift('DRs_002', 0.4);... + atsbend('B_002', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_002_8fd91332121b43c79d649fb2a1a18ca6');... + atdrift('DR_002', 0.5);... + atquadrupole('QF_002', 0.4, 1.2580503144087112, 'UUID', 'QF_002_d8a6e63c07c94aed87878d113cf22194');... + atsextupole('SF_002', 0.1, 2.1149384071729247, 'UUID', 'SF_002_f7c48af5504649a09b8e9434b2509ce4');... + atdrift('DRs_003', 0.4);... + atsbend('B_003', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_003_fb4cc089236e4345b0a3f4a39ae6f49b');... + atdrift('DR_003', 0.5);... + atquadrupole('QD_002', 0.4, -1.3094253462460304, 'UUID', 'QD_002_c212a1d7ea41484f925303959213cc32');... + atsextupole('SD_002', 0.1, -3.4137638639939585, 'UUID', 'SD_002_178b0b0cfcc046c6ac9a1eac2328963e');... + atdrift('DRs_004', 0.4);... + atsbend('B_004', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_004_00d0b0b840a74028b751a6a7f72025fa');... + atdrift('DR_004', 0.5);... + atquadrupole('QF_003', 0.4, 1.2580503144087112, 'UUID', 'QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40');... + atsextupole('SF_003', 0.1, 2.1149384071729247, 'UUID', 'SF_003_bd75202a28b243d0bc604fa6e8ad0dd2');... + atdrift('DRs_005', 0.4);... + atsbend('B_005', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_005_270a6ec2a6ea465a959a5f47f2434fb0');... + atdrift('DR_005', 0.5);... + atquadrupole('QD_003', 0.4, -1.3094253462460304, 'UUID', 'QD_003_ad775f317e7b4408a72e09c7db4236ad');... + atsextupole('SD_003', 0.1, -3.4137638639939585, 'UUID', 'SD_003_63a3ec9ceeef453f8e793acc437ce116');... + atdrift('DRs_006', 0.4);... + atsbend('B_006', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_006_730f427ca9814851801be691784b96e9');... + atdrift('DR_006', 0.5);... + atquadrupole('QF_004', 0.4, 1.2580503144087112, 'UUID', 'QF_004_ce31bb358fad4cc7aadb86711031acd0');... + atsextupole('SF_004', 0.1, 2.1149384071729247, 'UUID', 'SF_004_faa5bb6858e64051a54f4f01340684e6');... + atdrift('DRs_007', 0.4);... + atsbend('B_007', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_007_c74ee44ff12e425b9bcb21277c6efc59');... + atdrift('DR_007', 0.5);... + atquadrupole('QD_004', 0.4, -1.3094253462460304, 'UUID', 'QD_004_82625fab961945c0aba57174ebcbf51f');... + atsextupole('SD_004', 0.1, -3.4137638639939585, 'UUID', 'SD_004_3e0e59ac94f945f2be40eccc30f3a2d3');... + atdrift('DRs_008', 0.4);... + atsbend('B_008', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_008_47727693f2b14c6089c1b12a0331c942');... + atdrift('DR_008', 0.5);... + atquadrupole('QF_005', 0.4, 1.2580503144087112, 'UUID', 'QF_005_d812a0f116044852a2dfc809ca0b87bf');... + atsextupole('SF_005', 0.1, 2.1149384071729247, 'UUID', 'SF_005_ab16d309e1e341e58d7ae1598098bb69');... + atdrift('DRs_009', 0.4);... + atsbend('B_009', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_009_ddd2050e98164ab9b3d3b052188a3247');... + atdrift('DR_009', 0.5);... + atquadrupole('QD_005', 0.4, -1.3094253462460304, 'UUID', 'QD_005_03b6d72e666d4632b6e9a3c2b15ceca7');... + atsextupole('SD_005', 0.1, -3.4137638639939585, 'UUID', 'SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe');... + atdrift('DRs_010', 0.4);... + atsbend('B_010', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_010_184685f07007416aa94cc3b7797433af');... + atdrift('DR_010', 0.5);... + atquadrupole('QF_006', 0.4, 1.2580503144087112, 'UUID', 'QF_006_d39cefd95c88492885796863d4df1b68');... + atsextupole('SF_006', 0.1, 2.1149384071729247, 'UUID', 'SF_006_09d95d77b39a463283b0660c4478c409');... + atdrift('DRs_011', 0.4);... + atsbend('B_011', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_011_66708404736c4a74bbd88f2776ba6757');... + atdrift('DR_011', 0.5);... + atquadrupole('QD_006', 0.4, -1.3094253462460304, 'UUID', 'QD_006_49e8c0b7e66348338865c77d9317c6bf');... + atsextupole('SD_006', 0.1, -3.4137638639939585, 'UUID', 'SD_006_284911364f3c44b2abdc13acb2df46b3');... + atdrift('DRs_012', 0.4);... + atsbend('B_012', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_012_63cc84ca3a804b889757df9285fd44ac');... + atdrift('DR_012', 0.5);... + atquadrupole('QF_007', 0.4, 1.2580503144087112, 'UUID', 'QF_007_7414601f613f4115b9fe0b78eceaa2ce');... + atsextupole('SF_007', 0.1, 2.1149384071729247, 'UUID', 'SF_007_b3fa2def44a24425a5ad414abc5bbca1');... + atdrift('DRs_013', 0.4);... + atsbend('B_013', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_013_046c935da3f54e75beade9ed565219ad');... + atdrift('DR_013', 0.5);... + atquadrupole('QD_007', 0.4, -1.3094253462460304, 'UUID', 'QD_007_79fa1ac91a7f43eda443200923990327');... + atsextupole('SD_007', 0.1, -3.4137638639939585, 'UUID', 'SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55');... + atdrift('DRs_014', 0.4);... + atsbend('B_014', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_014_2ead304932de4ce4b6382bbac997c85a');... + atdrift('DR_014', 0.5);... + atquadrupole('QF_008', 0.4, 1.2580503144087112, 'UUID', 'QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea');... + atsextupole('SF_008', 0.1, 2.1149384071729247, 'UUID', 'SF_008_00a14620b0a5428b821ddb84d2639e5c');... + atdrift('DRs_015', 0.4);... + atsbend('B_015', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_015_b7dd580aac5147a3af0bb2817408e27e');... + atdrift('DR_015', 0.5);... + atquadrupole('QD_008', 0.4, -1.3094253462460304, 'UUID', 'QD_008_1cb9b3401b644658908260616570424d');... + atsextupole('SD_008', 0.1, -3.4137638639939585, 'UUID', 'SD_008_3b849a66bca1453cac95fa0ccba58166');... + atdrift('DRs_016', 0.4);... + atsbend('B_016', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_016_b83b8bedbb624a8ebfa7f6166daf3613');... + atdrift('DR_016', 0.5);... + atquadrupole('QF_009', 0.4, 1.2580503144087112, 'UUID', 'QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5');... + atsextupole('SF_009', 0.1, 2.1149384071729247, 'UUID', 'SF_009_6f725f3f495f428696a8419b73f22774');... + atdrift('DRs_017', 0.4);... + atsbend('B_017', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_017_04ad34df6c2e4dfca0d6fb797d68df69');... + atdrift('DR_017', 0.5);... + atquadrupole('QD_009', 0.4, -1.3094253462460304, 'UUID', 'QD_009_232f21c02a03457698d31ec2d4265a02');... + atsextupole('SD_009', 0.1, -3.4137638639939585, 'UUID', 'SD_009_cf86e64cfe764c12b94262c41ceabbfb');... + atdrift('DRs_018', 0.4);... + atsbend('B_018', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_018_0b98487fcf314e7e8452dc7399397835');... + atdrift('DR_018', 0.5);... + atquadrupole('QF_010', 0.4, 1.2580503144087112, 'UUID', 'QF_010_94782da4ed5e4898b91d7e864140c277');... + atsextupole('SF_010', 0.1, 2.1149384071729247, 'UUID', 'SF_010_f626388a02d64cfd83c9b1614982a5fb');... + atdrift('DRs_019', 0.4);... + atsbend('B_019', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_019_7d367c5a53bb4df4b7ecde53d5604f53');... + atdrift('DR_019', 0.5);... + atquadrupole('QD_010', 0.4, -1.3094253462460304, 'UUID', 'QD_010_56f8b47113df4cec8b2fc3ab38c69869');... + atsextupole('SD_010', 0.1, -3.4137638639939585, 'UUID', 'SD_010_eafccc3719664195b4107df7527a8a0a');... + atdrift('DRs_020', 0.4);... + atsbend('B_020', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_020_fa8a3d3ea2814c44b7815c8a5cd9d933');... + atdrift('DR_020', 0.5);... + atquadrupole('QF_011', 0.4, 1.2580503144087112, 'UUID', 'QF_011_b575ed5454c54128b2ed3d6b7e64ddad');... + atsextupole('SF_011', 0.1, 2.1149384071729247, 'UUID', 'SF_011_bd73fc4fbc0640efb117cac154b34c33');... + atdrift('DRs_021', 0.4);... + atsbend('B_021', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_021_0d732787af974b9eb0d4c1cc70db1a3d');... + atdrift('DR_021', 0.5);... + atquadrupole('QD_011', 0.4, -1.3094253462460304, 'UUID', 'QD_011_ae7b2c76f21b429c962ff3c33a38cd70');... + atsextupole('SD_011', 0.1, -3.4137638639939585, 'UUID', 'SD_011_773d914fde034e8697ac966f74ca0611');... + atdrift('DRs_022', 0.4);... + atsbend('B_022', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_022_96a000342e284ca68faaecbcd4b0904a');... + atdrift('DR_022', 0.5);... + atquadrupole('QF_012', 0.4, 1.2580503144087112, 'UUID', 'QF_012_cb52fb6f374840b0a50180a089da49d1');... + atsextupole('SF_012', 0.1, 2.1149384071729247, 'UUID', 'SF_012_02daf05ef4ab46ea86bdb3be90162251');... + atdrift('DRs_023', 0.4);... + atsbend('B_023', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_023_ffdf1ba0d350458fb3def9db81636f68');... + atdrift('DR_023', 0.5);... + atquadrupole('QD_012', 0.4, -1.3094253462460304, 'UUID', 'QD_012_29f2185aa29a4c02be3bbfdd5bad13e3');... + atsextupole('SD_012', 0.1, -3.4137638639939585, 'UUID', 'SD_012_ff9262ea95744358b360235d7a459cec');... + atdrift('DRs_024', 0.4);... + atsbend('B_024', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_024_e1fb35bf800a43448163b0cf01569c19');... + atdrift('DR_024', 0.5);... + atquadrupole('QF_013', 0.4, 1.2580503144087112, 'UUID', 'QF_013_2793a62cd78744c9ab4ca5e2843a72a2');... + atsextupole('SF_013', 0.1, 2.1149384071729247, 'UUID', 'SF_013_4532d63397d644d28e1af1a480a60c07');... + atdrift('DRs_025', 0.4);... + atsbend('B_025', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_025_2ce6a646af5642e0afc30d9f79863f48');... + atdrift('DR_025', 0.5);... + atquadrupole('QD_013', 0.4, -1.3094253462460304, 'UUID', 'QD_013_03843b2e6ee24e16aa6572f5cb18f4a8');... + atsextupole('SD_013', 0.1, -3.4137638639939585, 'UUID', 'SD_013_ef033612a3274ef3ab886afd81614dca');... + atdrift('DRs_026', 0.4);... + atsbend('B_026', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_026_8651fc68043842628e6ee1d25af0424c');... + atdrift('DR_026', 0.5);... + atquadrupole('QF_014', 0.4, 1.2580503144087112, 'UUID', 'QF_014_c09c7e604b3a41fa818b44d04c844b25');... + atsextupole('SF_014', 0.1, 2.1149384071729247, 'UUID', 'SF_014_bf4393ec53954372bd5e4f140491465b');... + atdrift('DRs_027', 0.4);... + atsbend('B_027', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_027_c832ae3f14b14804a63bce49c896f737');... + atdrift('DR_027', 0.5);... + atquadrupole('QD_014', 0.4, -1.3094253462460304, 'UUID', 'QD_014_62633bc5afcd4fc9a19de70a983baa5c');... + atsextupole('SD_014', 0.1, -3.4137638639939585, 'UUID', 'SD_014_78a18b94b6f1422fb69dbcbd2ae90d67');... + atdrift('DRs_028', 0.4);... + atsbend('B_028', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_028_25d59d6cbd90410c9ba5ed8424d442d1');... + atdrift('DR_028', 0.5);... + atquadrupole('QF_015', 0.4, 1.2580503144087112, 'UUID', 'QF_015_63634bfdccc44de586db6ee28071ccb4');... + atsextupole('SF_015', 0.1, 2.1149384071729247, 'UUID', 'SF_015_a988680835664d109306ad1694a48382');... + atdrift('DRs_029', 0.4);... + atsbend('B_029', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_029_dc2c0a36c7d64072b3e597a3b40f4b3e');... + atdrift('DR_029', 0.5);... + atquadrupole('QD_015', 0.4, -1.3094253462460304, 'UUID', 'QD_015_b2cc0d3ab8f741729a7abf3d9426a958');... + atsextupole('SD_015', 0.1, -3.4137638639939585, 'UUID', 'SD_015_8b7f143df262464e9f5c1eae4b83ce14');... + atdrift('DRs_030', 0.4);... + atsbend('B_030', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_030_225d0545f13b49b58c1ab5222727ae20');... + atdrift('DR_030', 0.5);... + atquadrupole('QF_016', 0.4, 1.2580503144087112, 'UUID', 'QF_016_965422d59ef3488f84c68f5ecaee6c6b');... + atsextupole('SF_016', 0.1, 2.1149384071729247, 'UUID', 'SF_016_e67c83cfbce2433f9152de49f928d25d');... + atdrift('DRs_031', 0.4);... + atsbend('B_031', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_031_8e33e0d3bfdf491da8ca3d8dd66e1b81');... + atdrift('DR_031', 0.5);... + atquadrupole('QD_016', 0.4, -1.3094253462460304, 'UUID', 'QD_016_63fce39354a946818c2bfd76adb61760');... + atsextupole('SD_016', 0.1, -3.4137638639939585, 'UUID', 'SD_016_626878061df544a08c4c061e57a4e3a1');... + atdrift('DRs_032', 0.4);... + atsbend('B_032', 1.0, 0.19634954084936207, 0.0, 'UUID', 'B_032_2d3c2be8fe5f41abb120ab3438a4ef66');... + atdrift('DR_032', 0.5);... +}; + function v=False() + v=false; + end + function v=True() + v=true; + end +end diff --git a/tests/integration/data/fodo_1gev_6d.yaml b/tests/integration/data/fodo_1gev_6d.yaml new file mode 100644 index 000000000..32402eae3 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d.yaml @@ -0,0 +1,1164 @@ +RF_001: + UUID: RF_001_cc245d84ca2b4ba9b54051069a4cfb8f + Lattice: + FamName: RF_001 + Class: RFCavity + Length: 0.0 + Controllable: true + Nomenclature: + TANGO: AN01-SD/RF-CAV/CAV + Localisation: + S_pos: 0.0 + Cell: 1 +QF_001: + UUID: QF_001_f2013521b99e4a76bed1db7ec67464b0 + Lattice: + FamName: QF_001 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-QP/QF.01 + Localisation: + S_pos: 0.0 + Cell: 1 +SF_001: + UUID: SF_001_f934c7cf2c704132acfce86bc2419e36 + Lattice: + FamName: SF_001 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-SX/SF.01 + Localisation: + S_pos: 0.4 + Cell: 1 +B_001: + UUID: B_001_6182cf9bb0184f0bb9afc6655b5a6be6 + Lattice: + FamName: B_001 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-DIP/B.01 + Localisation: + S_pos: 0.9 + Cell: 1 +QD_001: + UUID: QD_001_15812e1906ee4bc7b94abb8ccd910f5b + Lattice: + FamName: QD_001 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-QP/QD.01 + Localisation: + S_pos: 2.4 + Cell: 1 +SD_001: + UUID: SD_001_4e39bd9617e7428486da49e4b5cc3981 + Lattice: + FamName: SD_001 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-SX/SD.01 + Localisation: + S_pos: 2.8 + Cell: 1 +B_002: + UUID: B_002_8fd91332121b43c79d649fb2a1a18ca6 + Lattice: + FamName: B_002 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN01-AR/EM-DIP/B.02 + Localisation: + S_pos: 3.3 + Cell: 1 +QF_002: + UUID: QF_002_d8a6e63c07c94aed87878d113cf22194 + Lattice: + FamName: QF_002 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-QP/QF.01 + Localisation: + S_pos: 4.8 + Cell: 2 +SF_002: + UUID: SF_002_f7c48af5504649a09b8e9434b2509ce4 + Lattice: + FamName: SF_002 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-SX/SF.01 + Localisation: + S_pos: 5.2 + Cell: 2 +B_003: + UUID: B_003_fb4cc089236e4345b0a3f4a39ae6f49b + Lattice: + FamName: B_003 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-DIP/B.01 + Localisation: + S_pos: 5.7 + Cell: 2 +QD_002: + UUID: QD_002_c212a1d7ea41484f925303959213cc32 + Lattice: + FamName: QD_002 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-QP/QD.01 + Localisation: + S_pos: 7.2 + Cell: 2 +SD_002: + UUID: SD_002_178b0b0cfcc046c6ac9a1eac2328963e + Lattice: + FamName: SD_002 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-SX/SD.01 + Localisation: + S_pos: 7.6 + Cell: 2 +B_004: + UUID: B_004_00d0b0b840a74028b751a6a7f72025fa + Lattice: + FamName: B_004 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN02-AR/EM-DIP/B.02 + Localisation: + S_pos: 8.1 + Cell: 2 +QF_003: + UUID: QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 + Lattice: + FamName: QF_003 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-QP/QF.01 + Localisation: + S_pos: 9.6 + Cell: 3 +SF_003: + UUID: SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 + Lattice: + FamName: SF_003 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-SX/SF.01 + Localisation: + S_pos: 10.0 + Cell: 3 +B_005: + UUID: B_005_270a6ec2a6ea465a959a5f47f2434fb0 + Lattice: + FamName: B_005 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-DIP/B.01 + Localisation: + S_pos: 10.5 + Cell: 3 +QD_003: + UUID: QD_003_ad775f317e7b4408a72e09c7db4236ad + Lattice: + FamName: QD_003 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-QP/QD.01 + Localisation: + S_pos: 12.0 + Cell: 3 +SD_003: + UUID: SD_003_63a3ec9ceeef453f8e793acc437ce116 + Lattice: + FamName: SD_003 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-SX/SD.01 + Localisation: + S_pos: 12.4 + Cell: 3 +B_006: + UUID: B_006_730f427ca9814851801be691784b96e9 + Lattice: + FamName: B_006 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN03-AR/EM-DIP/B.02 + Localisation: + S_pos: 12.9 + Cell: 3 +QF_004: + UUID: QF_004_ce31bb358fad4cc7aadb86711031acd0 + Lattice: + FamName: QF_004 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-QP/QF.01 + Localisation: + S_pos: 14.4 + Cell: 4 +SF_004: + UUID: SF_004_faa5bb6858e64051a54f4f01340684e6 + Lattice: + FamName: SF_004 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-SX/SF.01 + Localisation: + S_pos: 14.8 + Cell: 4 +B_007: + UUID: B_007_c74ee44ff12e425b9bcb21277c6efc59 + Lattice: + FamName: B_007 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-DIP/B.01 + Localisation: + S_pos: 15.3 + Cell: 4 +QD_004: + UUID: QD_004_82625fab961945c0aba57174ebcbf51f + Lattice: + FamName: QD_004 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-QP/QD.01 + Localisation: + S_pos: 16.8 + Cell: 4 +SD_004: + UUID: SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 + Lattice: + FamName: SD_004 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-SX/SD.01 + Localisation: + S_pos: 17.2 + Cell: 4 +B_008: + UUID: B_008_47727693f2b14c6089c1b12a0331c942 + Lattice: + FamName: B_008 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN04-AR/EM-DIP/B.02 + Localisation: + S_pos: 17.7 + Cell: 4 +QF_005: + UUID: QF_005_d812a0f116044852a2dfc809ca0b87bf + Lattice: + FamName: QF_005 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-QP/QF.01 + Localisation: + S_pos: 19.2 + Cell: 5 +SF_005: + UUID: SF_005_ab16d309e1e341e58d7ae1598098bb69 + Lattice: + FamName: SF_005 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-SX/SF.01 + Localisation: + S_pos: 19.6 + Cell: 5 +B_009: + UUID: B_009_ddd2050e98164ab9b3d3b052188a3247 + Lattice: + FamName: B_009 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-DIP/B.01 + Localisation: + S_pos: 20.1 + Cell: 5 +QD_005: + UUID: QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 + Lattice: + FamName: QD_005 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-QP/QD.01 + Localisation: + S_pos: 21.6 + Cell: 5 +SD_005: + UUID: SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe + Lattice: + FamName: SD_005 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-SX/SD.01 + Localisation: + S_pos: 22.0 + Cell: 5 +B_010: + UUID: B_010_184685f07007416aa94cc3b7797433af + Lattice: + FamName: B_010 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN05-AR/EM-DIP/B.02 + Localisation: + S_pos: 22.5 + Cell: 5 +QF_006: + UUID: QF_006_d39cefd95c88492885796863d4df1b68 + Lattice: + FamName: QF_006 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-QP/QF.01 + Localisation: + S_pos: 24.0 + Cell: 6 +SF_006: + UUID: SF_006_09d95d77b39a463283b0660c4478c409 + Lattice: + FamName: SF_006 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-SX/SF.01 + Localisation: + S_pos: 24.4 + Cell: 6 +B_011: + UUID: B_011_66708404736c4a74bbd88f2776ba6757 + Lattice: + FamName: B_011 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-DIP/B.01 + Localisation: + S_pos: 24.9 + Cell: 6 +QD_006: + UUID: QD_006_49e8c0b7e66348338865c77d9317c6bf + Lattice: + FamName: QD_006 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-QP/QD.01 + Localisation: + S_pos: 26.4 + Cell: 6 +SD_006: + UUID: SD_006_284911364f3c44b2abdc13acb2df46b3 + Lattice: + FamName: SD_006 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-SX/SD.01 + Localisation: + S_pos: 26.8 + Cell: 6 +B_012: + UUID: B_012_63cc84ca3a804b889757df9285fd44ac + Lattice: + FamName: B_012 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN06-AR/EM-DIP/B.02 + Localisation: + S_pos: 27.3 + Cell: 6 +QF_007: + UUID: QF_007_7414601f613f4115b9fe0b78eceaa2ce + Lattice: + FamName: QF_007 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-QP/QF.01 + Localisation: + S_pos: 28.8 + Cell: 7 +SF_007: + UUID: SF_007_b3fa2def44a24425a5ad414abc5bbca1 + Lattice: + FamName: SF_007 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-SX/SF.01 + Localisation: + S_pos: 29.2 + Cell: 7 +B_013: + UUID: B_013_046c935da3f54e75beade9ed565219ad + Lattice: + FamName: B_013 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-DIP/B.01 + Localisation: + S_pos: 29.7 + Cell: 7 +QD_007: + UUID: QD_007_79fa1ac91a7f43eda443200923990327 + Lattice: + FamName: QD_007 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-QP/QD.01 + Localisation: + S_pos: 31.2 + Cell: 7 +SD_007: + UUID: SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 + Lattice: + FamName: SD_007 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-SX/SD.01 + Localisation: + S_pos: 31.6 + Cell: 7 +B_014: + UUID: B_014_2ead304932de4ce4b6382bbac997c85a + Lattice: + FamName: B_014 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN07-AR/EM-DIP/B.02 + Localisation: + S_pos: 32.1 + Cell: 7 +QF_008: + UUID: QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea + Lattice: + FamName: QF_008 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-QP/QF.01 + Localisation: + S_pos: 33.6 + Cell: 8 +SF_008: + UUID: SF_008_00a14620b0a5428b821ddb84d2639e5c + Lattice: + FamName: SF_008 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-SX/SF.01 + Localisation: + S_pos: 34.0 + Cell: 8 +B_015: + UUID: B_015_b7dd580aac5147a3af0bb2817408e27e + Lattice: + FamName: B_015 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-DIP/B.01 + Localisation: + S_pos: 34.5 + Cell: 8 +QD_008: + UUID: QD_008_1cb9b3401b644658908260616570424d + Lattice: + FamName: QD_008 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-QP/QD.01 + Localisation: + S_pos: 36.0 + Cell: 8 +SD_008: + UUID: SD_008_3b849a66bca1453cac95fa0ccba58166 + Lattice: + FamName: SD_008 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-SX/SD.01 + Localisation: + S_pos: 36.4 + Cell: 8 +B_016: + UUID: B_016_b83b8bedbb624a8ebfa7f6166daf3613 + Lattice: + FamName: B_016 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN08-AR/EM-DIP/B.02 + Localisation: + S_pos: 36.9 + Cell: 8 +QF_009: + UUID: QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 + Lattice: + FamName: QF_009 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-QP/QF.01 + Localisation: + S_pos: 38.4 + Cell: 9 +SF_009: + UUID: SF_009_6f725f3f495f428696a8419b73f22774 + Lattice: + FamName: SF_009 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-SX/SF.01 + Localisation: + S_pos: 38.8 + Cell: 9 +B_017: + UUID: B_017_04ad34df6c2e4dfca0d6fb797d68df69 + Lattice: + FamName: B_017 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-DIP/B.01 + Localisation: + S_pos: 39.3 + Cell: 9 +QD_009: + UUID: QD_009_232f21c02a03457698d31ec2d4265a02 + Lattice: + FamName: QD_009 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-QP/QD.01 + Localisation: + S_pos: 40.8 + Cell: 9 +SD_009: + UUID: SD_009_cf86e64cfe764c12b94262c41ceabbfb + Lattice: + FamName: SD_009 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-SX/SD.01 + Localisation: + S_pos: 41.2 + Cell: 9 +B_018: + UUID: B_018_0b98487fcf314e7e8452dc7399397835 + Lattice: + FamName: B_018 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN09-AR/EM-DIP/B.02 + Localisation: + S_pos: 41.7 + Cell: 9 +QF_010: + UUID: QF_010_94782da4ed5e4898b91d7e864140c277 + Lattice: + FamName: QF_010 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-QP/QF.01 + Localisation: + S_pos: 43.2 + Cell: 10 +SF_010: + UUID: SF_010_f626388a02d64cfd83c9b1614982a5fb + Lattice: + FamName: SF_010 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-SX/SF.01 + Localisation: + S_pos: 43.6 + Cell: 10 +B_019: + UUID: B_019_7d367c5a53bb4df4b7ecde53d5604f53 + Lattice: + FamName: B_019 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-DIP/B.01 + Localisation: + S_pos: 44.1 + Cell: 10 +QD_010: + UUID: QD_010_56f8b47113df4cec8b2fc3ab38c69869 + Lattice: + FamName: QD_010 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-QP/QD.01 + Localisation: + S_pos: 45.6 + Cell: 10 +SD_010: + UUID: SD_010_eafccc3719664195b4107df7527a8a0a + Lattice: + FamName: SD_010 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-SX/SD.01 + Localisation: + S_pos: 46.0 + Cell: 10 +B_020: + UUID: B_020_fa8a3d3ea2814c44b7815c8a5cd9d933 + Lattice: + FamName: B_020 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN10-AR/EM-DIP/B.02 + Localisation: + S_pos: 46.5 + Cell: 10 +QF_011: + UUID: QF_011_b575ed5454c54128b2ed3d6b7e64ddad + Lattice: + FamName: QF_011 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-QP/QF.01 + Localisation: + S_pos: 48.0 + Cell: 11 +SF_011: + UUID: SF_011_bd73fc4fbc0640efb117cac154b34c33 + Lattice: + FamName: SF_011 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-SX/SF.01 + Localisation: + S_pos: 48.4 + Cell: 11 +B_021: + UUID: B_021_0d732787af974b9eb0d4c1cc70db1a3d + Lattice: + FamName: B_021 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-DIP/B.01 + Localisation: + S_pos: 48.9 + Cell: 11 +QD_011: + UUID: QD_011_ae7b2c76f21b429c962ff3c33a38cd70 + Lattice: + FamName: QD_011 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-QP/QD.01 + Localisation: + S_pos: 50.4 + Cell: 11 +SD_011: + UUID: SD_011_773d914fde034e8697ac966f74ca0611 + Lattice: + FamName: SD_011 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-SX/SD.01 + Localisation: + S_pos: 50.8 + Cell: 11 +B_022: + UUID: B_022_96a000342e284ca68faaecbcd4b0904a + Lattice: + FamName: B_022 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN11-AR/EM-DIP/B.02 + Localisation: + S_pos: 51.3 + Cell: 11 +QF_012: + UUID: QF_012_cb52fb6f374840b0a50180a089da49d1 + Lattice: + FamName: QF_012 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-QP/QF.01 + Localisation: + S_pos: 52.8 + Cell: 12 +SF_012: + UUID: SF_012_02daf05ef4ab46ea86bdb3be90162251 + Lattice: + FamName: SF_012 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-SX/SF.01 + Localisation: + S_pos: 53.2 + Cell: 12 +B_023: + UUID: B_023_ffdf1ba0d350458fb3def9db81636f68 + Lattice: + FamName: B_023 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-DIP/B.01 + Localisation: + S_pos: 53.7 + Cell: 12 +QD_012: + UUID: QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 + Lattice: + FamName: QD_012 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-QP/QD.01 + Localisation: + S_pos: 55.2 + Cell: 12 +SD_012: + UUID: SD_012_ff9262ea95744358b360235d7a459cec + Lattice: + FamName: SD_012 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-SX/SD.01 + Localisation: + S_pos: 55.6 + Cell: 12 +B_024: + UUID: B_024_e1fb35bf800a43448163b0cf01569c19 + Lattice: + FamName: B_024 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN12-AR/EM-DIP/B.02 + Localisation: + S_pos: 56.1 + Cell: 12 +QF_013: + UUID: QF_013_2793a62cd78744c9ab4ca5e2843a72a2 + Lattice: + FamName: QF_013 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-QP/QF.01 + Localisation: + S_pos: 57.6 + Cell: 13 +SF_013: + UUID: SF_013_4532d63397d644d28e1af1a480a60c07 + Lattice: + FamName: SF_013 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-SX/SF.01 + Localisation: + S_pos: 58.0 + Cell: 13 +B_025: + UUID: B_025_2ce6a646af5642e0afc30d9f79863f48 + Lattice: + FamName: B_025 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-DIP/B.01 + Localisation: + S_pos: 58.5 + Cell: 13 +QD_013: + UUID: QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 + Lattice: + FamName: QD_013 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-QP/QD.01 + Localisation: + S_pos: 60.0 + Cell: 13 +SD_013: + UUID: SD_013_ef033612a3274ef3ab886afd81614dca + Lattice: + FamName: SD_013 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-SX/SD.01 + Localisation: + S_pos: 60.4 + Cell: 13 +B_026: + UUID: B_026_8651fc68043842628e6ee1d25af0424c + Lattice: + FamName: B_026 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN13-AR/EM-DIP/B.02 + Localisation: + S_pos: 60.9 + Cell: 13 +QF_014: + UUID: QF_014_c09c7e604b3a41fa818b44d04c844b25 + Lattice: + FamName: QF_014 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-QP/QF.01 + Localisation: + S_pos: 62.4 + Cell: 14 +SF_014: + UUID: SF_014_bf4393ec53954372bd5e4f140491465b + Lattice: + FamName: SF_014 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-SX/SF.01 + Localisation: + S_pos: 62.8 + Cell: 14 +B_027: + UUID: B_027_c832ae3f14b14804a63bce49c896f737 + Lattice: + FamName: B_027 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-DIP/B.01 + Localisation: + S_pos: 63.3 + Cell: 14 +QD_014: + UUID: QD_014_62633bc5afcd4fc9a19de70a983baa5c + Lattice: + FamName: QD_014 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-QP/QD.01 + Localisation: + S_pos: 64.8 + Cell: 14 +SD_014: + UUID: SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 + Lattice: + FamName: SD_014 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-SX/SD.01 + Localisation: + S_pos: 65.2 + Cell: 14 +B_028: + UUID: B_028_25d59d6cbd90410c9ba5ed8424d442d1 + Lattice: + FamName: B_028 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN14-AR/EM-DIP/B.02 + Localisation: + S_pos: 65.7 + Cell: 14 +QF_015: + UUID: QF_015_63634bfdccc44de586db6ee28071ccb4 + Lattice: + FamName: QF_015 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-QP/QF.01 + Localisation: + S_pos: 67.2 + Cell: 15 +SF_015: + UUID: SF_015_a988680835664d109306ad1694a48382 + Lattice: + FamName: SF_015 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-SX/SF.01 + Localisation: + S_pos: 67.6 + Cell: 15 +B_029: + UUID: B_029_dc2c0a36c7d64072b3e597a3b40f4b3e + Lattice: + FamName: B_029 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-DIP/B.01 + Localisation: + S_pos: 68.1 + Cell: 15 +QD_015: + UUID: QD_015_b2cc0d3ab8f741729a7abf3d9426a958 + Lattice: + FamName: QD_015 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-QP/QD.01 + Localisation: + S_pos: 69.6 + Cell: 15 +SD_015: + UUID: SD_015_8b7f143df262464e9f5c1eae4b83ce14 + Lattice: + FamName: SD_015 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-SX/SD.01 + Localisation: + S_pos: 70.0 + Cell: 15 +B_030: + UUID: B_030_225d0545f13b49b58c1ab5222727ae20 + Lattice: + FamName: B_030 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN15-AR/EM-DIP/B.02 + Localisation: + S_pos: 70.5 + Cell: 15 +QF_016: + UUID: QF_016_965422d59ef3488f84c68f5ecaee6c6b + Lattice: + FamName: QF_016 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-QP/QF.01 + Localisation: + S_pos: 72.0 + Cell: 16 +SF_016: + UUID: SF_016_e67c83cfbce2433f9152de49f928d25d + Lattice: + FamName: SF_016 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-SX/SF.01 + Localisation: + S_pos: 72.4 + Cell: 16 +B_031: + UUID: B_031_8e33e0d3bfdf491da8ca3d8dd66e1b81 + Lattice: + FamName: B_031 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-DIP/B.01 + Localisation: + S_pos: 72.9 + Cell: 16 +QD_016: + UUID: QD_016_63fce39354a946818c2bfd76adb61760 + Lattice: + FamName: QD_016 + Class: Quadrupole + Length: 0.4 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-QP/QD.01 + Localisation: + S_pos: 74.4 + Cell: 16 +SD_016: + UUID: SD_016_626878061df544a08c4c061e57a4e3a1 + Lattice: + FamName: SD_016 + Class: Sextupole + Length: 0.1 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-SX/SD.01 + Localisation: + S_pos: 74.8 + Cell: 16 +B_032: + UUID: B_032_2d3c2be8fe5f41abb120ab3438a4ef66 + Lattice: + FamName: B_032 + Class: Bend + Length: 1.0 + Controllable: true + Nomenclature: + TANGO: AN16-AR/EM-DIP/B.02 + Localisation: + S_pos: 75.3 + Cell: 16 diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.json b/tests/integration/data/fodo_1gev_6d_pyaml.json new file mode 100644 index 000000000..dd2d44f64 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d_pyaml.json @@ -0,0 +1,782 @@ +[ + { + "_id": { + "$oid": "d15381c0-cc52-502c-be3a-a83763e36c53" + }, + "uuid": "RF_001", + "type": "RFCavity", + "FamName": "RF_001", + "name": "AN01-SD/RF-CAV/CAV", + "magnetic_strength": 1.0, + "pc": "AN01-SD/RF-CAV/CAV-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "e724bab8-a93d-5f58-b71d-77c328c216c6" + }, + "uuid": "QF_001", + "type": "Quadrupole", + "FamName": "QF_001", + "name": "AN01-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN01-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "c4412657-22e4-51a0-8c14-63ec441fd561" + }, + "uuid": "SF_001", + "type": "Sextupole", + "FamName": "SF_001", + "name": "AN01-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN01-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "a1374bd0-e17c-5c40-8836-8e292561557c" + }, + "uuid": "QD_001", + "type": "Quadrupole", + "FamName": "QD_001", + "name": "AN01-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN01-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "ed183939-2643-5d91-9dd4-d1cc15cd38e9" + }, + "uuid": "SD_001", + "type": "Sextupole", + "FamName": "SD_001", + "name": "AN01-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN01-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "be0d6359-5495-580b-894a-84df5a1c9567" + }, + "uuid": "QF_002", + "type": "Quadrupole", + "FamName": "QF_002", + "name": "AN02-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN02-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "cf78afb7-e69b-5dab-9c36-371f5bdfae90" + }, + "uuid": "SF_002", + "type": "Sextupole", + "FamName": "SF_002", + "name": "AN02-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN02-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "1e566985-7506-5ab9-94e7-0d524c200ba6" + }, + "uuid": "QD_002", + "type": "Quadrupole", + "FamName": "QD_002", + "name": "AN02-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN02-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "9df96046-682f-5c9a-995a-96bdaf3cc092" + }, + "uuid": "SD_002", + "type": "Sextupole", + "FamName": "SD_002", + "name": "AN02-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN02-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "d641a664-7b56-5b06-a8bb-4846437fd7e5" + }, + "uuid": "QF_003", + "type": "Quadrupole", + "FamName": "QF_003", + "name": "AN03-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN03-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5f527b9a-1f42-5d81-ba3a-c83e124f2f68" + }, + "uuid": "SF_003", + "type": "Sextupole", + "FamName": "SF_003", + "name": "AN03-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN03-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "441509d5-b256-57c0-97da-3c28fc0df9a7" + }, + "uuid": "QD_003", + "type": "Quadrupole", + "FamName": "QD_003", + "name": "AN03-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN03-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "61b5cd3f-e0e5-5b9a-b129-d0e0736d43df" + }, + "uuid": "SD_003", + "type": "Sextupole", + "FamName": "SD_003", + "name": "AN03-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN03-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "891e22f3-ff24-5622-9510-52ab5b24aa09" + }, + "uuid": "QF_004", + "type": "Quadrupole", + "FamName": "QF_004", + "name": "AN04-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN04-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "feeb9f15-e30a-5608-937d-9639ecf3ea14" + }, + "uuid": "SF_004", + "type": "Sextupole", + "FamName": "SF_004", + "name": "AN04-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN04-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "7521c207-693f-5acd-87d7-dfcacd349c4a" + }, + "uuid": "QD_004", + "type": "Quadrupole", + "FamName": "QD_004", + "name": "AN04-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN04-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "49544335-fb60-5b52-8cee-0d4ccff1b867" + }, + "uuid": "SD_004", + "type": "Sextupole", + "FamName": "SD_004", + "name": "AN04-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN04-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "0ef21fd1-cac7-5fc9-8a73-894bf34e081b" + }, + "uuid": "QF_005", + "type": "Quadrupole", + "FamName": "QF_005", + "name": "AN05-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN05-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "af7075b1-26ad-5a31-ab08-8f7062e6ca60" + }, + "uuid": "SF_005", + "type": "Sextupole", + "FamName": "SF_005", + "name": "AN05-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN05-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5670d70b-4721-5811-979e-176485b8d42b" + }, + "uuid": "QD_005", + "type": "Quadrupole", + "FamName": "QD_005", + "name": "AN05-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN05-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "58dd07d3-7836-57f3-83e4-85e8285859a2" + }, + "uuid": "SD_005", + "type": "Sextupole", + "FamName": "SD_005", + "name": "AN05-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN05-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "ae5e0eca-9b54-5b91-9402-b7b1dfd130e4" + }, + "uuid": "QF_006", + "type": "Quadrupole", + "FamName": "QF_006", + "name": "AN06-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN06-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "490aa48d-c1e7-5a94-910e-973778191436" + }, + "uuid": "SF_006", + "type": "Sextupole", + "FamName": "SF_006", + "name": "AN06-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN06-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "1624f49f-7550-55ef-97b5-55ee7070d911" + }, + "uuid": "QD_006", + "type": "Quadrupole", + "FamName": "QD_006", + "name": "AN06-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN06-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "e41d50e9-71ca-5f0b-8a75-100d380472ef" + }, + "uuid": "SD_006", + "type": "Sextupole", + "FamName": "SD_006", + "name": "AN06-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN06-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "6af09284-24c8-5345-8406-2cf231e50ef6" + }, + "uuid": "QF_007", + "type": "Quadrupole", + "FamName": "QF_007", + "name": "AN07-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN07-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "72137e58-e406-5afa-88e9-8a18a9d3733c" + }, + "uuid": "SF_007", + "type": "Sextupole", + "FamName": "SF_007", + "name": "AN07-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN07-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5ba832fa-ebd6-57a6-80dd-65bc942bafb6" + }, + "uuid": "QD_007", + "type": "Quadrupole", + "FamName": "QD_007", + "name": "AN07-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN07-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "33b3c2cb-0b2a-5b42-b3b7-f0e4c6d898e4" + }, + "uuid": "SD_007", + "type": "Sextupole", + "FamName": "SD_007", + "name": "AN07-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN07-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5a814706-c71b-5e90-a6c9-a99caec58b23" + }, + "uuid": "QF_008", + "type": "Quadrupole", + "FamName": "QF_008", + "name": "AN08-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN08-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5030394b-4dc0-5837-9742-9180be5a02cd" + }, + "uuid": "SF_008", + "type": "Sextupole", + "FamName": "SF_008", + "name": "AN08-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN08-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "19da961b-a51c-5ede-8d3a-8043e259efb9" + }, + "uuid": "QD_008", + "type": "Quadrupole", + "FamName": "QD_008", + "name": "AN08-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN08-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "a24217f8-eb3d-52a0-865e-41e718b2cc6e" + }, + "uuid": "SD_008", + "type": "Sextupole", + "FamName": "SD_008", + "name": "AN08-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN08-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "767d73ae-6a19-55c5-988c-90237d81bb8d" + }, + "uuid": "QF_009", + "type": "Quadrupole", + "FamName": "QF_009", + "name": "AN09-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN09-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "b2d6f337-468b-5c4b-9ee7-cc918db90251" + }, + "uuid": "SF_009", + "type": "Sextupole", + "FamName": "SF_009", + "name": "AN09-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN09-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "f3bee840-0f4b-5729-9082-d0f504402a5c" + }, + "uuid": "QD_009", + "type": "Quadrupole", + "FamName": "QD_009", + "name": "AN09-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN09-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "d6ec300a-f287-5121-8a59-4c08fe713af1" + }, + "uuid": "SD_009", + "type": "Sextupole", + "FamName": "SD_009", + "name": "AN09-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN09-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "7cc0e235-03e3-5712-93ba-8d1875a88b86" + }, + "uuid": "QF_010", + "type": "Quadrupole", + "FamName": "QF_010", + "name": "AN10-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN10-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "10e4d9de-339c-5e84-a92f-d08a8b287169" + }, + "uuid": "SF_010", + "type": "Sextupole", + "FamName": "SF_010", + "name": "AN10-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN10-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "11e7b1e5-3f55-59ca-857e-649e4c70d020" + }, + "uuid": "QD_010", + "type": "Quadrupole", + "FamName": "QD_010", + "name": "AN10-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN10-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "caa38e33-b165-5e0b-aed4-93881fb730cd" + }, + "uuid": "SD_010", + "type": "Sextupole", + "FamName": "SD_010", + "name": "AN10-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN10-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "4cfd1215-053e-5000-b3b7-864f9917d3f0" + }, + "uuid": "QF_011", + "type": "Quadrupole", + "FamName": "QF_011", + "name": "AN11-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN11-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "f7661cb1-ad6c-5eda-8356-326147467f47" + }, + "uuid": "SF_011", + "type": "Sextupole", + "FamName": "SF_011", + "name": "AN11-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN11-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "ff6cbf40-2dc3-534c-a08d-c41ced2aaf4c" + }, + "uuid": "QD_011", + "type": "Quadrupole", + "FamName": "QD_011", + "name": "AN11-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN11-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "3698ebc4-17fd-59a9-99c6-6ca2ab2e344b" + }, + "uuid": "SD_011", + "type": "Sextupole", + "FamName": "SD_011", + "name": "AN11-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN11-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "a436f15b-0d11-525b-a8c9-cc547ab8aa5d" + }, + "uuid": "QF_012", + "type": "Quadrupole", + "FamName": "QF_012", + "name": "AN12-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN12-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "51d28361-2ec8-5807-a1f9-a57aabc9fb56" + }, + "uuid": "SF_012", + "type": "Sextupole", + "FamName": "SF_012", + "name": "AN12-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN12-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "6f2bb822-ee84-5676-87c0-128140e00935" + }, + "uuid": "QD_012", + "type": "Quadrupole", + "FamName": "QD_012", + "name": "AN12-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN12-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "26b08f28-d728-58e8-a1e3-eb0e9062382c" + }, + "uuid": "SD_012", + "type": "Sextupole", + "FamName": "SD_012", + "name": "AN12-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN12-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "33f55d8d-9c26-5e23-badf-673bb94fa6b2" + }, + "uuid": "QF_013", + "type": "Quadrupole", + "FamName": "QF_013", + "name": "AN13-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN13-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "46763d57-709a-59d0-b30a-cd86510396d4" + }, + "uuid": "SF_013", + "type": "Sextupole", + "FamName": "SF_013", + "name": "AN13-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN13-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "47d6c1b1-fa5a-5b8a-a9fa-63eb22fb872d" + }, + "uuid": "QD_013", + "type": "Quadrupole", + "FamName": "QD_013", + "name": "AN13-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN13-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "b8349a86-6b07-56ca-8f16-d14933706ba1" + }, + "uuid": "SD_013", + "type": "Sextupole", + "FamName": "SD_013", + "name": "AN13-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN13-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "263e1dbc-3d4f-5216-8a48-00e7959cf09b" + }, + "uuid": "QF_014", + "type": "Quadrupole", + "FamName": "QF_014", + "name": "AN14-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN14-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "71bd34de-3569-59d1-84a0-42fbb8f62e79" + }, + "uuid": "SF_014", + "type": "Sextupole", + "FamName": "SF_014", + "name": "AN14-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN14-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "7917210d-4e8a-552b-b880-9f83a2abec35" + }, + "uuid": "QD_014", + "type": "Quadrupole", + "FamName": "QD_014", + "name": "AN14-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN14-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "fcffc304-d2e9-58bc-910a-4d786fd318f7" + }, + "uuid": "SD_014", + "type": "Sextupole", + "FamName": "SD_014", + "name": "AN14-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN14-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "27eb37f0-4514-54ed-8a8e-fed9464ac4d9" + }, + "uuid": "QF_015", + "type": "Quadrupole", + "FamName": "QF_015", + "name": "AN15-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN15-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "5b091057-f5b8-5093-a6d9-1de44709069a" + }, + "uuid": "SF_015", + "type": "Sextupole", + "FamName": "SF_015", + "name": "AN15-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN15-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "1cb4f347-2707-5a41-9eda-f501b47691cd" + }, + "uuid": "QD_015", + "type": "Quadrupole", + "FamName": "QD_015", + "name": "AN15-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN15-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "eff92193-25bf-54cb-885d-6558818ef03e" + }, + "uuid": "SD_015", + "type": "Sextupole", + "FamName": "SD_015", + "name": "AN15-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN15-AR/EM-SX/SD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "56b7f625-5e4a-5398-80b5-5efe544d2550" + }, + "uuid": "QF_016", + "type": "Quadrupole", + "FamName": "QF_016", + "name": "AN16-AR/EM-QP/QF.01", + "magnetic_strength": 1.0, + "pc": "AN16-AR/EM-QP/QF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "7f021924-5767-5a2e-bb85-fbbfe90a2c1f" + }, + "uuid": "SF_016", + "type": "Sextupole", + "FamName": "SF_016", + "name": "AN16-AR/EM-SX/SF.01", + "magnetic_strength": 1.0, + "pc": "AN16-AR/EM-SX/SF.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "beac2750-fca8-5a2f-98c0-ff8c805f8724" + }, + "uuid": "QD_016", + "type": "Quadrupole", + "FamName": "QD_016", + "name": "AN16-AR/EM-QP/QD.01", + "magnetic_strength": 1.0, + "pc": "AN16-AR/EM-QP/QD.01-pc", + "k": 1.0 + }, + { + "_id": { + "$oid": "cabf0416-14f9-5442-8aac-a652f60f50d3" + }, + "uuid": "SD_016", + "type": "Sextupole", + "FamName": "SD_016", + "name": "AN16-AR/EM-SX/SD.01", + "magnetic_strength": 1.0, + "pc": "AN16-AR/EM-SX/SD.01-pc", + "k": 1.0 + } +] diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml new file mode 100644 index 000000000..f616b9540 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -0,0 +1,986 @@ +type: pyaml.accelerator +facility: Synchrotron SOLEIL +machine: sr +data_folder: /data/store +energy: 1000000000.0 +simulators: +- type: pyaml.lattice.simulator + lattice: fodo_1gev_6d.m + name: design + linker: + type: pyaml.lattice.attribute_linker + attribute_name: UUID +controls: +- type: tango.pyaml.controlsystem + name: live + tango_host: 127.0.0.1:10000 +arrays: +- type: pyaml.arrays.magnet + name: QF_001 + elements: + - QF_001 +- type: pyaml.arrays.element + name: Cell1 + elements: + - QF_001 + - SF_001 + - QD_001 + - SD_001 +- type: pyaml.arrays.magnet + name: SF_001 + elements: + - SF_001 +- type: pyaml.arrays.magnet + name: QD_001 + elements: + - QD_001 +- type: pyaml.arrays.magnet + name: SD_001 + elements: + - SD_001 +- type: pyaml.arrays.magnet + name: QF_002 + elements: + - QF_002 +- type: pyaml.arrays.element + name: Cell2 + elements: + - QF_002 + - SF_002 + - QD_002 + - SD_002 +- type: pyaml.arrays.magnet + name: SF_002 + elements: + - SF_002 +- type: pyaml.arrays.magnet + name: QD_002 + elements: + - QD_002 +- type: pyaml.arrays.magnet + name: SD_002 + elements: + - SD_002 +- type: pyaml.arrays.magnet + name: QF_003 + elements: + - QF_003 +- type: pyaml.arrays.element + name: Cell3 + elements: + - QF_003 + - SF_003 + - QD_003 + - SD_003 +- type: pyaml.arrays.magnet + name: SF_003 + elements: + - SF_003 +- type: pyaml.arrays.magnet + name: QD_003 + elements: + - QD_003 +- type: pyaml.arrays.magnet + name: SD_003 + elements: + - SD_003 +- type: pyaml.arrays.magnet + name: QF_004 + elements: + - QF_004 +- type: pyaml.arrays.element + name: Cell4 + elements: + - QF_004 + - SF_004 + - QD_004 + - SD_004 +- type: pyaml.arrays.magnet + name: SF_004 + elements: + - SF_004 +- type: pyaml.arrays.magnet + name: QD_004 + elements: + - QD_004 +- type: pyaml.arrays.magnet + name: SD_004 + elements: + - SD_004 +- type: pyaml.arrays.magnet + name: QF_005 + elements: + - QF_005 +- type: pyaml.arrays.element + name: Cell5 + elements: + - QF_005 + - SF_005 + - QD_005 + - SD_005 +- type: pyaml.arrays.magnet + name: SF_005 + elements: + - SF_005 +- type: pyaml.arrays.magnet + name: QD_005 + elements: + - QD_005 +- type: pyaml.arrays.magnet + name: SD_005 + elements: + - SD_005 +- type: pyaml.arrays.magnet + name: QF_006 + elements: + - QF_006 +- type: pyaml.arrays.element + name: Cell6 + elements: + - QF_006 + - SF_006 + - QD_006 + - SD_006 +- type: pyaml.arrays.magnet + name: SF_006 + elements: + - SF_006 +- type: pyaml.arrays.magnet + name: QD_006 + elements: + - QD_006 +- type: pyaml.arrays.magnet + name: SD_006 + elements: + - SD_006 +- type: pyaml.arrays.magnet + name: QF_007 + elements: + - QF_007 +- type: pyaml.arrays.element + name: Cell7 + elements: + - QF_007 + - SF_007 + - QD_007 + - SD_007 +- type: pyaml.arrays.magnet + name: SF_007 + elements: + - SF_007 +- type: pyaml.arrays.magnet + name: QD_007 + elements: + - QD_007 +- type: pyaml.arrays.magnet + name: SD_007 + elements: + - SD_007 +- type: pyaml.arrays.magnet + name: QF_008 + elements: + - QF_008 +- type: pyaml.arrays.element + name: Cell8 + elements: + - QF_008 + - SF_008 + - QD_008 + - SD_008 +- type: pyaml.arrays.magnet + name: SF_008 + elements: + - SF_008 +- type: pyaml.arrays.magnet + name: QD_008 + elements: + - QD_008 +- type: pyaml.arrays.magnet + name: SD_008 + elements: + - SD_008 +- type: pyaml.arrays.magnet + name: QF_009 + elements: + - QF_009 +- type: pyaml.arrays.element + name: Cell9 + elements: + - QF_009 + - SF_009 + - QD_009 + - SD_009 +- type: pyaml.arrays.magnet + name: SF_009 + elements: + - SF_009 +- type: pyaml.arrays.magnet + name: QD_009 + elements: + - QD_009 +- type: pyaml.arrays.magnet + name: SD_009 + elements: + - SD_009 +- type: pyaml.arrays.magnet + name: QF_010 + elements: + - QF_010 +- type: pyaml.arrays.element + name: Cell10 + elements: + - QF_010 + - SF_010 + - QD_010 + - SD_010 +- type: pyaml.arrays.magnet + name: SF_010 + elements: + - SF_010 +- type: pyaml.arrays.magnet + name: QD_010 + elements: + - QD_010 +- type: pyaml.arrays.magnet + name: SD_010 + elements: + - SD_010 +- type: pyaml.arrays.magnet + name: QF_011 + elements: + - QF_011 +- type: pyaml.arrays.element + name: Cell11 + elements: + - QF_011 + - SF_011 + - QD_011 + - SD_011 +- type: pyaml.arrays.magnet + name: SF_011 + elements: + - SF_011 +- type: pyaml.arrays.magnet + name: QD_011 + elements: + - QD_011 +- type: pyaml.arrays.magnet + name: SD_011 + elements: + - SD_011 +- type: pyaml.arrays.magnet + name: QF_012 + elements: + - QF_012 +- type: pyaml.arrays.element + name: Cell12 + elements: + - QF_012 + - SF_012 + - QD_012 + - SD_012 +- type: pyaml.arrays.magnet + name: SF_012 + elements: + - SF_012 +- type: pyaml.arrays.magnet + name: QD_012 + elements: + - QD_012 +- type: pyaml.arrays.magnet + name: SD_012 + elements: + - SD_012 +- type: pyaml.arrays.magnet + name: QF_013 + elements: + - QF_013 +- type: pyaml.arrays.element + name: Cell13 + elements: + - QF_013 + - SF_013 + - QD_013 + - SD_013 +- type: pyaml.arrays.magnet + name: SF_013 + elements: + - SF_013 +- type: pyaml.arrays.magnet + name: QD_013 + elements: + - QD_013 +- type: pyaml.arrays.magnet + name: SD_013 + elements: + - SD_013 +- type: pyaml.arrays.magnet + name: QF_014 + elements: + - QF_014 +- type: pyaml.arrays.element + name: Cell14 + elements: + - QF_014 + - SF_014 + - QD_014 + - SD_014 +- type: pyaml.arrays.magnet + name: SF_014 + elements: + - SF_014 +- type: pyaml.arrays.magnet + name: QD_014 + elements: + - QD_014 +- type: pyaml.arrays.magnet + name: SD_014 + elements: + - SD_014 +- type: pyaml.arrays.magnet + name: QF_015 + elements: + - QF_015 +- type: pyaml.arrays.element + name: Cell15 + elements: + - QF_015 + - SF_015 + - QD_015 + - SD_015 +- type: pyaml.arrays.magnet + name: SF_015 + elements: + - SF_015 +- type: pyaml.arrays.magnet + name: QD_015 + elements: + - QD_015 +- type: pyaml.arrays.magnet + name: SD_015 + elements: + - SD_015 +- type: pyaml.arrays.magnet + name: QF_016 + elements: + - QF_016 +- type: pyaml.arrays.element + name: Cell16 + elements: + - QF_016 + - SF_016 + - QD_016 + - SD_016 +- type: pyaml.arrays.magnet + name: SF_016 + elements: + - SF_016 +- type: pyaml.arrays.magnet + name: QD_016 + elements: + - QD_016 +- type: pyaml.arrays.magnet + name: SD_016 + elements: + - SD_016 +devices: +- type: pyaml.magnet.quadrupole + name: QF_001 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_001 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_001 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_001 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_002 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_002 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_002 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_002 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_003 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_003 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_003 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_003 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_004 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_004 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_004 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_004 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_005 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_005 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_005 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_005 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_006 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_006 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_006 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_006 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_007 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_007 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_007 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_007 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_008 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_008 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_008 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_008 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_009 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_009 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_009 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_009 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_010 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_010 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_010 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_010 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_011 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_011 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_011 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_011 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_012 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_012 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_012 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_012 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_013 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_013 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_013 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_013 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_014 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_014 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_014 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_014 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_015 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_015 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_015 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_015 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QF_016 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SF_016 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.magnet.quadrupole + name: QD_016 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: pyaml.magnet.sextupole + name: SD_016 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: pyaml.rf.rf_plant + name: RF + masterclock: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/reference_frequency + unit: kHz + transmitters: + - type: pyaml.rf.rf_transmitter + name: RFTRA + cavities: [RF_001] + harmonic: 1 + distribution: 1 + voltage: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/voltage + unit: V +- type: pyaml.diagnostics.tune_monitor + name: BETATRON_TUNE + tune_h: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/hor + tune_v: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/vert diff --git a/tests/integration/test_dt4acc_twin_smoke.py b/tests/integration/test_dt4acc_twin_smoke.py new file mode 100644 index 000000000..36e32ef64 --- /dev/null +++ b/tests/integration/test_dt4acc_twin_smoke.py @@ -0,0 +1,35 @@ +import os +from pathlib import Path + +import numpy as np +import pytest + +pytestmark = [ + pytest.mark.integration, + pytest.mark.skipif( + os.environ.get("PYAML_DT4ACC_INTEGRATION") != "1", + reason="dt4acc Apptainer integration test is opt-in", + ), +] + + +@pytest.mark.parametrize( + "config_file", + [ + Path(__file__).parent / "data" / "fodo_1gev_6d_pyaml.yaml", + ], + ids=["fodo_1gev_6d_pyaml.yaml"], +) +def test_dt4acc_twin_accelerator_instantiates_and_reads_rf(config_file: Path): + from pyaml.accelerator import Accelerator + + accelerator = Accelerator.load(str(config_file)) + + assert accelerator.live is not None + assert "live" in accelerator.controls() + + rf = accelerator.live.get_rf_plant("RF") + reference_frequency = rf.frequency.get() + + assert np.isfinite(reference_frequency) + assert reference_frequency > 0.0 From 113ad255d772f93356f431c6ebf577310ba36ab1 Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 11:50:55 +0200 Subject: [PATCH 02/10] Updating integration test data --- .../integration/data/fodo_1gev_6d_pyaml.yaml | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml index f616b9540..19af06a79 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.yaml +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -5,7 +5,7 @@ data_folder: /data/store energy: 1000000000.0 simulators: - type: pyaml.lattice.simulator - lattice: fodo_1gev_6d.m + lattice: D:\PROJETS\PyAML\Fodo\fodo_1gev_6d.m name: design linker: type: pyaml.lattice.attribute_linker @@ -14,6 +14,31 @@ controls: - type: tango.pyaml.controlsystem name: live tango_host: 127.0.0.1:10000 + catalog: + type: tango.pyaml.static_catalog + entries: + - type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/reference_frequency + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/reference_frequency + unit: kHz + - type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/voltage + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/voltage + unit: V + - type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/hor + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/hor + - type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/vert + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/vert arrays: - type: pyaml.arrays.magnet name: QF_001 @@ -962,25 +987,15 @@ devices: unit: 1/m**2 - type: pyaml.rf.rf_plant name: RF - masterclock: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/reference_frequency - unit: kHz + masterclock: simulator/ringsimulator/ringsimulator/reference_frequency transmitters: - type: pyaml.rf.rf_transmitter name: RFTRA cavities: [RF_001] harmonic: 1 distribution: 1 - voltage: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/voltage - unit: V + voltage: simulator/ringsimulator/ringsimulator/voltage - type: pyaml.diagnostics.tune_monitor name: BETATRON_TUNE - tune_h: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/hor - tune_v: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/vert + tune_h: simulator/ringsimulator/ringsimulator/hor + tune_v: simulator/ringsimulator/ringsimulator/vert From 806a0a78d11ed3d7ba188971b39f438c1f59ac79 Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 11:58:18 +0200 Subject: [PATCH 03/10] Updating integration test data, correction of stupid mistake --- tests/integration/data/fodo_1gev_6d_pyaml.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml index 19af06a79..a712ce281 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.yaml +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -5,7 +5,7 @@ data_folder: /data/store energy: 1000000000.0 simulators: - type: pyaml.lattice.simulator - lattice: D:\PROJETS\PyAML\Fodo\fodo_1gev_6d.m + lattice: fodo_1gev_6d.m name: design linker: type: pyaml.lattice.attribute_linker From 14176e91bec1a32a71151d66d73bf437ca51682f Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 12:40:34 +0200 Subject: [PATCH 04/10] Correction of the UUID --- .../integration/data/fodo_1gev_6d_pyaml.json | 260 ++++++------ .../integration/data/fodo_1gev_6d_pyaml.yaml | 388 +++++++++--------- 2 files changed, 324 insertions(+), 324 deletions(-) diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.json b/tests/integration/data/fodo_1gev_6d_pyaml.json index dd2d44f64..acbd1343a 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.json +++ b/tests/integration/data/fodo_1gev_6d_pyaml.json @@ -1,9 +1,9 @@ [ { "_id": { - "$oid": "d15381c0-cc52-502c-be3a-a83763e36c53" + "$oid": "aeb689bb-e170-5922-920f-bc2497414682" }, - "uuid": "RF_001", + "uuid": "RF_001_cc245d84ca2b4ba9b54051069a4cfb8f", "type": "RFCavity", "FamName": "RF_001", "name": "AN01-SD/RF-CAV/CAV", @@ -13,9 +13,9 @@ }, { "_id": { - "$oid": "e724bab8-a93d-5f58-b71d-77c328c216c6" + "$oid": "e4730782-a299-5d03-8a79-08fee21ba41b" }, - "uuid": "QF_001", + "uuid": "QF_001_f2013521b99e4a76bed1db7ec67464b0", "type": "Quadrupole", "FamName": "QF_001", "name": "AN01-AR/EM-QP/QF.01", @@ -25,9 +25,9 @@ }, { "_id": { - "$oid": "c4412657-22e4-51a0-8c14-63ec441fd561" + "$oid": "85d5d724-f6d1-528b-9be9-e0373505638f" }, - "uuid": "SF_001", + "uuid": "SF_001_f934c7cf2c704132acfce86bc2419e36", "type": "Sextupole", "FamName": "SF_001", "name": "AN01-AR/EM-SX/SF.01", @@ -37,9 +37,9 @@ }, { "_id": { - "$oid": "a1374bd0-e17c-5c40-8836-8e292561557c" + "$oid": "f7fa083f-6752-5ede-af83-fc869fe40450" }, - "uuid": "QD_001", + "uuid": "QD_001_15812e1906ee4bc7b94abb8ccd910f5b", "type": "Quadrupole", "FamName": "QD_001", "name": "AN01-AR/EM-QP/QD.01", @@ -49,9 +49,9 @@ }, { "_id": { - "$oid": "ed183939-2643-5d91-9dd4-d1cc15cd38e9" + "$oid": "96c1a866-34cc-5886-b6a1-d75a8abff3f7" }, - "uuid": "SD_001", + "uuid": "SD_001_4e39bd9617e7428486da49e4b5cc3981", "type": "Sextupole", "FamName": "SD_001", "name": "AN01-AR/EM-SX/SD.01", @@ -61,9 +61,9 @@ }, { "_id": { - "$oid": "be0d6359-5495-580b-894a-84df5a1c9567" + "$oid": "d100cc2d-f1b1-582f-a73e-6aa209a81c85" }, - "uuid": "QF_002", + "uuid": "QF_002_d8a6e63c07c94aed87878d113cf22194", "type": "Quadrupole", "FamName": "QF_002", "name": "AN02-AR/EM-QP/QF.01", @@ -73,9 +73,9 @@ }, { "_id": { - "$oid": "cf78afb7-e69b-5dab-9c36-371f5bdfae90" + "$oid": "2e381432-4387-5b1c-8f44-5ea84e991b95" }, - "uuid": "SF_002", + "uuid": "SF_002_f7c48af5504649a09b8e9434b2509ce4", "type": "Sextupole", "FamName": "SF_002", "name": "AN02-AR/EM-SX/SF.01", @@ -85,9 +85,9 @@ }, { "_id": { - "$oid": "1e566985-7506-5ab9-94e7-0d524c200ba6" + "$oid": "73b71b30-f965-5e2f-8885-802cb8062b19" }, - "uuid": "QD_002", + "uuid": "QD_002_c212a1d7ea41484f925303959213cc32", "type": "Quadrupole", "FamName": "QD_002", "name": "AN02-AR/EM-QP/QD.01", @@ -97,9 +97,9 @@ }, { "_id": { - "$oid": "9df96046-682f-5c9a-995a-96bdaf3cc092" + "$oid": "163306b6-ead3-5fd1-bd24-3deb5fe3f463" }, - "uuid": "SD_002", + "uuid": "SD_002_178b0b0cfcc046c6ac9a1eac2328963e", "type": "Sextupole", "FamName": "SD_002", "name": "AN02-AR/EM-SX/SD.01", @@ -109,9 +109,9 @@ }, { "_id": { - "$oid": "d641a664-7b56-5b06-a8bb-4846437fd7e5" + "$oid": "1eafad73-5481-560c-a164-4d6a664d537a" }, - "uuid": "QF_003", + "uuid": "QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40", "type": "Quadrupole", "FamName": "QF_003", "name": "AN03-AR/EM-QP/QF.01", @@ -121,9 +121,9 @@ }, { "_id": { - "$oid": "5f527b9a-1f42-5d81-ba3a-c83e124f2f68" + "$oid": "de9230d8-2e46-580a-a955-f18e71623803" }, - "uuid": "SF_003", + "uuid": "SF_003_bd75202a28b243d0bc604fa6e8ad0dd2", "type": "Sextupole", "FamName": "SF_003", "name": "AN03-AR/EM-SX/SF.01", @@ -133,9 +133,9 @@ }, { "_id": { - "$oid": "441509d5-b256-57c0-97da-3c28fc0df9a7" + "$oid": "3dde1836-b7d4-5e60-b6aa-db89319448a4" }, - "uuid": "QD_003", + "uuid": "QD_003_ad775f317e7b4408a72e09c7db4236ad", "type": "Quadrupole", "FamName": "QD_003", "name": "AN03-AR/EM-QP/QD.01", @@ -145,9 +145,9 @@ }, { "_id": { - "$oid": "61b5cd3f-e0e5-5b9a-b129-d0e0736d43df" + "$oid": "448022bc-f0b8-5760-9745-1d5cf58d2305" }, - "uuid": "SD_003", + "uuid": "SD_003_63a3ec9ceeef453f8e793acc437ce116", "type": "Sextupole", "FamName": "SD_003", "name": "AN03-AR/EM-SX/SD.01", @@ -157,9 +157,9 @@ }, { "_id": { - "$oid": "891e22f3-ff24-5622-9510-52ab5b24aa09" + "$oid": "526cd265-81f1-5773-a405-3bf1693487de" }, - "uuid": "QF_004", + "uuid": "QF_004_ce31bb358fad4cc7aadb86711031acd0", "type": "Quadrupole", "FamName": "QF_004", "name": "AN04-AR/EM-QP/QF.01", @@ -169,9 +169,9 @@ }, { "_id": { - "$oid": "feeb9f15-e30a-5608-937d-9639ecf3ea14" + "$oid": "bc36466f-7b8b-5f5b-8ad3-4758f15ce5ba" }, - "uuid": "SF_004", + "uuid": "SF_004_faa5bb6858e64051a54f4f01340684e6", "type": "Sextupole", "FamName": "SF_004", "name": "AN04-AR/EM-SX/SF.01", @@ -181,9 +181,9 @@ }, { "_id": { - "$oid": "7521c207-693f-5acd-87d7-dfcacd349c4a" + "$oid": "677a0510-9d09-537f-ae8c-b798e599cccb" }, - "uuid": "QD_004", + "uuid": "QD_004_82625fab961945c0aba57174ebcbf51f", "type": "Quadrupole", "FamName": "QD_004", "name": "AN04-AR/EM-QP/QD.01", @@ -193,9 +193,9 @@ }, { "_id": { - "$oid": "49544335-fb60-5b52-8cee-0d4ccff1b867" + "$oid": "572755d8-c882-565a-96e8-70e9dfd18872" }, - "uuid": "SD_004", + "uuid": "SD_004_3e0e59ac94f945f2be40eccc30f3a2d3", "type": "Sextupole", "FamName": "SD_004", "name": "AN04-AR/EM-SX/SD.01", @@ -205,9 +205,9 @@ }, { "_id": { - "$oid": "0ef21fd1-cac7-5fc9-8a73-894bf34e081b" + "$oid": "816cc3ef-7dfb-5deb-91d0-77fa3c2f66ff" }, - "uuid": "QF_005", + "uuid": "QF_005_d812a0f116044852a2dfc809ca0b87bf", "type": "Quadrupole", "FamName": "QF_005", "name": "AN05-AR/EM-QP/QF.01", @@ -217,9 +217,9 @@ }, { "_id": { - "$oid": "af7075b1-26ad-5a31-ab08-8f7062e6ca60" + "$oid": "97db83f1-65f9-5043-8a02-0e4f650ccb7c" }, - "uuid": "SF_005", + "uuid": "SF_005_ab16d309e1e341e58d7ae1598098bb69", "type": "Sextupole", "FamName": "SF_005", "name": "AN05-AR/EM-SX/SF.01", @@ -229,9 +229,9 @@ }, { "_id": { - "$oid": "5670d70b-4721-5811-979e-176485b8d42b" + "$oid": "e69e6b85-342a-5ac2-acc9-64aee2e3bbf1" }, - "uuid": "QD_005", + "uuid": "QD_005_03b6d72e666d4632b6e9a3c2b15ceca7", "type": "Quadrupole", "FamName": "QD_005", "name": "AN05-AR/EM-QP/QD.01", @@ -241,9 +241,9 @@ }, { "_id": { - "$oid": "58dd07d3-7836-57f3-83e4-85e8285859a2" + "$oid": "079cbf9e-4be2-5bb3-b6fc-7c2a7613a9d0" }, - "uuid": "SD_005", + "uuid": "SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe", "type": "Sextupole", "FamName": "SD_005", "name": "AN05-AR/EM-SX/SD.01", @@ -253,9 +253,9 @@ }, { "_id": { - "$oid": "ae5e0eca-9b54-5b91-9402-b7b1dfd130e4" + "$oid": "12409c6a-5232-5316-89a5-03aa48c3cb15" }, - "uuid": "QF_006", + "uuid": "QF_006_d39cefd95c88492885796863d4df1b68", "type": "Quadrupole", "FamName": "QF_006", "name": "AN06-AR/EM-QP/QF.01", @@ -265,9 +265,9 @@ }, { "_id": { - "$oid": "490aa48d-c1e7-5a94-910e-973778191436" + "$oid": "be732e9d-0365-5b39-90b1-c0e6341c109a" }, - "uuid": "SF_006", + "uuid": "SF_006_09d95d77b39a463283b0660c4478c409", "type": "Sextupole", "FamName": "SF_006", "name": "AN06-AR/EM-SX/SF.01", @@ -277,9 +277,9 @@ }, { "_id": { - "$oid": "1624f49f-7550-55ef-97b5-55ee7070d911" + "$oid": "a1002029-9faa-530d-bfed-e1015adbb705" }, - "uuid": "QD_006", + "uuid": "QD_006_49e8c0b7e66348338865c77d9317c6bf", "type": "Quadrupole", "FamName": "QD_006", "name": "AN06-AR/EM-QP/QD.01", @@ -289,9 +289,9 @@ }, { "_id": { - "$oid": "e41d50e9-71ca-5f0b-8a75-100d380472ef" + "$oid": "88503a95-1a12-5480-b40b-21b315927350" }, - "uuid": "SD_006", + "uuid": "SD_006_284911364f3c44b2abdc13acb2df46b3", "type": "Sextupole", "FamName": "SD_006", "name": "AN06-AR/EM-SX/SD.01", @@ -301,9 +301,9 @@ }, { "_id": { - "$oid": "6af09284-24c8-5345-8406-2cf231e50ef6" + "$oid": "0da2c533-888e-5e14-b398-b5deb2daed26" }, - "uuid": "QF_007", + "uuid": "QF_007_7414601f613f4115b9fe0b78eceaa2ce", "type": "Quadrupole", "FamName": "QF_007", "name": "AN07-AR/EM-QP/QF.01", @@ -313,9 +313,9 @@ }, { "_id": { - "$oid": "72137e58-e406-5afa-88e9-8a18a9d3733c" + "$oid": "8e17526c-1b84-51a9-a2f8-6344997a7617" }, - "uuid": "SF_007", + "uuid": "SF_007_b3fa2def44a24425a5ad414abc5bbca1", "type": "Sextupole", "FamName": "SF_007", "name": "AN07-AR/EM-SX/SF.01", @@ -325,9 +325,9 @@ }, { "_id": { - "$oid": "5ba832fa-ebd6-57a6-80dd-65bc942bafb6" + "$oid": "80af66b7-88c3-5984-b9f4-7e475b1db32d" }, - "uuid": "QD_007", + "uuid": "QD_007_79fa1ac91a7f43eda443200923990327", "type": "Quadrupole", "FamName": "QD_007", "name": "AN07-AR/EM-QP/QD.01", @@ -337,9 +337,9 @@ }, { "_id": { - "$oid": "33b3c2cb-0b2a-5b42-b3b7-f0e4c6d898e4" + "$oid": "898b3eaa-a14b-595a-b293-317c027aac4e" }, - "uuid": "SD_007", + "uuid": "SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55", "type": "Sextupole", "FamName": "SD_007", "name": "AN07-AR/EM-SX/SD.01", @@ -349,9 +349,9 @@ }, { "_id": { - "$oid": "5a814706-c71b-5e90-a6c9-a99caec58b23" + "$oid": "ee5e9ca4-9d80-54a7-9ab8-f9690eb0d814" }, - "uuid": "QF_008", + "uuid": "QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea", "type": "Quadrupole", "FamName": "QF_008", "name": "AN08-AR/EM-QP/QF.01", @@ -361,9 +361,9 @@ }, { "_id": { - "$oid": "5030394b-4dc0-5837-9742-9180be5a02cd" + "$oid": "08c1c1c2-c160-5fa5-9e38-1b296d4587ad" }, - "uuid": "SF_008", + "uuid": "SF_008_00a14620b0a5428b821ddb84d2639e5c", "type": "Sextupole", "FamName": "SF_008", "name": "AN08-AR/EM-SX/SF.01", @@ -373,9 +373,9 @@ }, { "_id": { - "$oid": "19da961b-a51c-5ede-8d3a-8043e259efb9" + "$oid": "dc500eca-c639-540f-ba75-e6fde5fb3f44" }, - "uuid": "QD_008", + "uuid": "QD_008_1cb9b3401b644658908260616570424d", "type": "Quadrupole", "FamName": "QD_008", "name": "AN08-AR/EM-QP/QD.01", @@ -385,9 +385,9 @@ }, { "_id": { - "$oid": "a24217f8-eb3d-52a0-865e-41e718b2cc6e" + "$oid": "dfba4cbb-c3b9-5442-b18d-ca1e2ee807ca" }, - "uuid": "SD_008", + "uuid": "SD_008_3b849a66bca1453cac95fa0ccba58166", "type": "Sextupole", "FamName": "SD_008", "name": "AN08-AR/EM-SX/SD.01", @@ -397,9 +397,9 @@ }, { "_id": { - "$oid": "767d73ae-6a19-55c5-988c-90237d81bb8d" + "$oid": "79578539-04bc-548c-9970-a55044c00ef6" }, - "uuid": "QF_009", + "uuid": "QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5", "type": "Quadrupole", "FamName": "QF_009", "name": "AN09-AR/EM-QP/QF.01", @@ -409,9 +409,9 @@ }, { "_id": { - "$oid": "b2d6f337-468b-5c4b-9ee7-cc918db90251" + "$oid": "228739ad-487d-58f8-be3a-ab242a2bae37" }, - "uuid": "SF_009", + "uuid": "SF_009_6f725f3f495f428696a8419b73f22774", "type": "Sextupole", "FamName": "SF_009", "name": "AN09-AR/EM-SX/SF.01", @@ -421,9 +421,9 @@ }, { "_id": { - "$oid": "f3bee840-0f4b-5729-9082-d0f504402a5c" + "$oid": "bc69a23c-a1b3-5458-836c-7d5ca929c271" }, - "uuid": "QD_009", + "uuid": "QD_009_232f21c02a03457698d31ec2d4265a02", "type": "Quadrupole", "FamName": "QD_009", "name": "AN09-AR/EM-QP/QD.01", @@ -433,9 +433,9 @@ }, { "_id": { - "$oid": "d6ec300a-f287-5121-8a59-4c08fe713af1" + "$oid": "fda3bfb1-1892-580c-9293-2c9b164ed323" }, - "uuid": "SD_009", + "uuid": "SD_009_cf86e64cfe764c12b94262c41ceabbfb", "type": "Sextupole", "FamName": "SD_009", "name": "AN09-AR/EM-SX/SD.01", @@ -445,9 +445,9 @@ }, { "_id": { - "$oid": "7cc0e235-03e3-5712-93ba-8d1875a88b86" + "$oid": "3b43a120-ce71-5c93-8062-4e1397e8f952" }, - "uuid": "QF_010", + "uuid": "QF_010_94782da4ed5e4898b91d7e864140c277", "type": "Quadrupole", "FamName": "QF_010", "name": "AN10-AR/EM-QP/QF.01", @@ -457,9 +457,9 @@ }, { "_id": { - "$oid": "10e4d9de-339c-5e84-a92f-d08a8b287169" + "$oid": "c1d609c0-62cc-5b13-b191-45c0cb85b617" }, - "uuid": "SF_010", + "uuid": "SF_010_f626388a02d64cfd83c9b1614982a5fb", "type": "Sextupole", "FamName": "SF_010", "name": "AN10-AR/EM-SX/SF.01", @@ -469,9 +469,9 @@ }, { "_id": { - "$oid": "11e7b1e5-3f55-59ca-857e-649e4c70d020" + "$oid": "a77da90c-10b0-5745-889a-9dace4c1e138" }, - "uuid": "QD_010", + "uuid": "QD_010_56f8b47113df4cec8b2fc3ab38c69869", "type": "Quadrupole", "FamName": "QD_010", "name": "AN10-AR/EM-QP/QD.01", @@ -481,9 +481,9 @@ }, { "_id": { - "$oid": "caa38e33-b165-5e0b-aed4-93881fb730cd" + "$oid": "ea361739-ce5c-58fb-9fcf-f85eb7b4c802" }, - "uuid": "SD_010", + "uuid": "SD_010_eafccc3719664195b4107df7527a8a0a", "type": "Sextupole", "FamName": "SD_010", "name": "AN10-AR/EM-SX/SD.01", @@ -493,9 +493,9 @@ }, { "_id": { - "$oid": "4cfd1215-053e-5000-b3b7-864f9917d3f0" + "$oid": "f1319c13-cfa4-5f51-89b2-b549f444882b" }, - "uuid": "QF_011", + "uuid": "QF_011_b575ed5454c54128b2ed3d6b7e64ddad", "type": "Quadrupole", "FamName": "QF_011", "name": "AN11-AR/EM-QP/QF.01", @@ -505,9 +505,9 @@ }, { "_id": { - "$oid": "f7661cb1-ad6c-5eda-8356-326147467f47" + "$oid": "6d26f383-e75b-5aab-908a-f4bfc45b99ff" }, - "uuid": "SF_011", + "uuid": "SF_011_bd73fc4fbc0640efb117cac154b34c33", "type": "Sextupole", "FamName": "SF_011", "name": "AN11-AR/EM-SX/SF.01", @@ -517,9 +517,9 @@ }, { "_id": { - "$oid": "ff6cbf40-2dc3-534c-a08d-c41ced2aaf4c" + "$oid": "e0066e04-9e0c-520a-bf50-fd929b69d991" }, - "uuid": "QD_011", + "uuid": "QD_011_ae7b2c76f21b429c962ff3c33a38cd70", "type": "Quadrupole", "FamName": "QD_011", "name": "AN11-AR/EM-QP/QD.01", @@ -529,9 +529,9 @@ }, { "_id": { - "$oid": "3698ebc4-17fd-59a9-99c6-6ca2ab2e344b" + "$oid": "5594533e-ac3d-5985-8894-11e9eb56447a" }, - "uuid": "SD_011", + "uuid": "SD_011_773d914fde034e8697ac966f74ca0611", "type": "Sextupole", "FamName": "SD_011", "name": "AN11-AR/EM-SX/SD.01", @@ -541,9 +541,9 @@ }, { "_id": { - "$oid": "a436f15b-0d11-525b-a8c9-cc547ab8aa5d" + "$oid": "0cd8f0b1-c1e1-5264-ab15-6df2ea9e6e4f" }, - "uuid": "QF_012", + "uuid": "QF_012_cb52fb6f374840b0a50180a089da49d1", "type": "Quadrupole", "FamName": "QF_012", "name": "AN12-AR/EM-QP/QF.01", @@ -553,9 +553,9 @@ }, { "_id": { - "$oid": "51d28361-2ec8-5807-a1f9-a57aabc9fb56" + "$oid": "2c63ef90-891b-5ae7-8e1f-2c780aac5442" }, - "uuid": "SF_012", + "uuid": "SF_012_02daf05ef4ab46ea86bdb3be90162251", "type": "Sextupole", "FamName": "SF_012", "name": "AN12-AR/EM-SX/SF.01", @@ -565,9 +565,9 @@ }, { "_id": { - "$oid": "6f2bb822-ee84-5676-87c0-128140e00935" + "$oid": "90f419b4-65cf-5b51-803e-70c881d99413" }, - "uuid": "QD_012", + "uuid": "QD_012_29f2185aa29a4c02be3bbfdd5bad13e3", "type": "Quadrupole", "FamName": "QD_012", "name": "AN12-AR/EM-QP/QD.01", @@ -577,9 +577,9 @@ }, { "_id": { - "$oid": "26b08f28-d728-58e8-a1e3-eb0e9062382c" + "$oid": "213788a5-9f7a-519a-9a3b-723c6fe3d06a" }, - "uuid": "SD_012", + "uuid": "SD_012_ff9262ea95744358b360235d7a459cec", "type": "Sextupole", "FamName": "SD_012", "name": "AN12-AR/EM-SX/SD.01", @@ -589,9 +589,9 @@ }, { "_id": { - "$oid": "33f55d8d-9c26-5e23-badf-673bb94fa6b2" + "$oid": "557ce421-0d59-5427-a87f-f3eeb07742eb" }, - "uuid": "QF_013", + "uuid": "QF_013_2793a62cd78744c9ab4ca5e2843a72a2", "type": "Quadrupole", "FamName": "QF_013", "name": "AN13-AR/EM-QP/QF.01", @@ -601,9 +601,9 @@ }, { "_id": { - "$oid": "46763d57-709a-59d0-b30a-cd86510396d4" + "$oid": "dc78713d-6231-526c-82af-c4ad5e629792" }, - "uuid": "SF_013", + "uuid": "SF_013_4532d63397d644d28e1af1a480a60c07", "type": "Sextupole", "FamName": "SF_013", "name": "AN13-AR/EM-SX/SF.01", @@ -613,9 +613,9 @@ }, { "_id": { - "$oid": "47d6c1b1-fa5a-5b8a-a9fa-63eb22fb872d" + "$oid": "1734470f-dfb5-5924-bdea-502c8b6e8002" }, - "uuid": "QD_013", + "uuid": "QD_013_03843b2e6ee24e16aa6572f5cb18f4a8", "type": "Quadrupole", "FamName": "QD_013", "name": "AN13-AR/EM-QP/QD.01", @@ -625,9 +625,9 @@ }, { "_id": { - "$oid": "b8349a86-6b07-56ca-8f16-d14933706ba1" + "$oid": "6ed42099-1eb4-55f0-86ad-d56b41b7183b" }, - "uuid": "SD_013", + "uuid": "SD_013_ef033612a3274ef3ab886afd81614dca", "type": "Sextupole", "FamName": "SD_013", "name": "AN13-AR/EM-SX/SD.01", @@ -637,9 +637,9 @@ }, { "_id": { - "$oid": "263e1dbc-3d4f-5216-8a48-00e7959cf09b" + "$oid": "cf536e65-6575-5e70-a097-e523c62b5407" }, - "uuid": "QF_014", + "uuid": "QF_014_c09c7e604b3a41fa818b44d04c844b25", "type": "Quadrupole", "FamName": "QF_014", "name": "AN14-AR/EM-QP/QF.01", @@ -649,9 +649,9 @@ }, { "_id": { - "$oid": "71bd34de-3569-59d1-84a0-42fbb8f62e79" + "$oid": "729797af-5e7c-5c52-a678-5a7b92ae1894" }, - "uuid": "SF_014", + "uuid": "SF_014_bf4393ec53954372bd5e4f140491465b", "type": "Sextupole", "FamName": "SF_014", "name": "AN14-AR/EM-SX/SF.01", @@ -661,9 +661,9 @@ }, { "_id": { - "$oid": "7917210d-4e8a-552b-b880-9f83a2abec35" + "$oid": "8987d009-7b2a-58e7-9290-cc41b9237d2c" }, - "uuid": "QD_014", + "uuid": "QD_014_62633bc5afcd4fc9a19de70a983baa5c", "type": "Quadrupole", "FamName": "QD_014", "name": "AN14-AR/EM-QP/QD.01", @@ -673,9 +673,9 @@ }, { "_id": { - "$oid": "fcffc304-d2e9-58bc-910a-4d786fd318f7" + "$oid": "b895b010-0f15-5fc6-bb85-1f22c63730a3" }, - "uuid": "SD_014", + "uuid": "SD_014_78a18b94b6f1422fb69dbcbd2ae90d67", "type": "Sextupole", "FamName": "SD_014", "name": "AN14-AR/EM-SX/SD.01", @@ -685,9 +685,9 @@ }, { "_id": { - "$oid": "27eb37f0-4514-54ed-8a8e-fed9464ac4d9" + "$oid": "92375ab1-9e4d-575e-a3d2-f6daa1a12dc8" }, - "uuid": "QF_015", + "uuid": "QF_015_63634bfdccc44de586db6ee28071ccb4", "type": "Quadrupole", "FamName": "QF_015", "name": "AN15-AR/EM-QP/QF.01", @@ -697,9 +697,9 @@ }, { "_id": { - "$oid": "5b091057-f5b8-5093-a6d9-1de44709069a" + "$oid": "ceaf5afc-d7f5-59df-a520-bc8e89c75a67" }, - "uuid": "SF_015", + "uuid": "SF_015_a988680835664d109306ad1694a48382", "type": "Sextupole", "FamName": "SF_015", "name": "AN15-AR/EM-SX/SF.01", @@ -709,9 +709,9 @@ }, { "_id": { - "$oid": "1cb4f347-2707-5a41-9eda-f501b47691cd" + "$oid": "ddd448ad-6026-529c-ad57-4fc03b634934" }, - "uuid": "QD_015", + "uuid": "QD_015_b2cc0d3ab8f741729a7abf3d9426a958", "type": "Quadrupole", "FamName": "QD_015", "name": "AN15-AR/EM-QP/QD.01", @@ -721,9 +721,9 @@ }, { "_id": { - "$oid": "eff92193-25bf-54cb-885d-6558818ef03e" + "$oid": "b1ebe9ed-4f00-565d-87a6-778598824238" }, - "uuid": "SD_015", + "uuid": "SD_015_8b7f143df262464e9f5c1eae4b83ce14", "type": "Sextupole", "FamName": "SD_015", "name": "AN15-AR/EM-SX/SD.01", @@ -733,9 +733,9 @@ }, { "_id": { - "$oid": "56b7f625-5e4a-5398-80b5-5efe544d2550" + "$oid": "c9a497d5-12b2-574f-9c0b-2dc90fa29b8b" }, - "uuid": "QF_016", + "uuid": "QF_016_965422d59ef3488f84c68f5ecaee6c6b", "type": "Quadrupole", "FamName": "QF_016", "name": "AN16-AR/EM-QP/QF.01", @@ -745,9 +745,9 @@ }, { "_id": { - "$oid": "7f021924-5767-5a2e-bb85-fbbfe90a2c1f" + "$oid": "65b9d146-4bc5-57ee-8819-d5edf6d49765" }, - "uuid": "SF_016", + "uuid": "SF_016_e67c83cfbce2433f9152de49f928d25d", "type": "Sextupole", "FamName": "SF_016", "name": "AN16-AR/EM-SX/SF.01", @@ -757,9 +757,9 @@ }, { "_id": { - "$oid": "beac2750-fca8-5a2f-98c0-ff8c805f8724" + "$oid": "09866f6f-bc17-5664-96dc-8b6cb899e36a" }, - "uuid": "QD_016", + "uuid": "QD_016_63fce39354a946818c2bfd76adb61760", "type": "Quadrupole", "FamName": "QD_016", "name": "AN16-AR/EM-QP/QD.01", @@ -769,9 +769,9 @@ }, { "_id": { - "$oid": "cabf0416-14f9-5442-8aac-a652f60f50d3" + "$oid": "6fab5137-4fa1-5773-a931-920b6a7d5834" }, - "uuid": "SD_016", + "uuid": "SD_016_626878061df544a08c4c061e57a4e3a1", "type": "Sextupole", "FamName": "SD_016", "name": "AN16-AR/EM-SX/SD.01", diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml index a712ce281..9fddd9e6c 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.yaml +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -5,7 +5,7 @@ data_folder: /data/store energy: 1000000000.0 simulators: - type: pyaml.lattice.simulator - lattice: fodo_1gev_6d.m + lattice: D:\PROJETS\PyAML\Fodo\fodo_1gev_6d.m name: design linker: type: pyaml.lattice.attribute_linker @@ -43,374 +43,374 @@ arrays: - type: pyaml.arrays.magnet name: QF_001 elements: - - QF_001 + - QF_001_f2013521b99e4a76bed1db7ec67464b0 - type: pyaml.arrays.element name: Cell1 elements: - - QF_001 - - SF_001 - - QD_001 - - SD_001 + - QF_001_f2013521b99e4a76bed1db7ec67464b0 + - SF_001_f934c7cf2c704132acfce86bc2419e36 + - QD_001_15812e1906ee4bc7b94abb8ccd910f5b + - SD_001_4e39bd9617e7428486da49e4b5cc3981 - type: pyaml.arrays.magnet name: SF_001 elements: - - SF_001 + - SF_001_f934c7cf2c704132acfce86bc2419e36 - type: pyaml.arrays.magnet name: QD_001 elements: - - QD_001 + - QD_001_15812e1906ee4bc7b94abb8ccd910f5b - type: pyaml.arrays.magnet name: SD_001 elements: - - SD_001 + - SD_001_4e39bd9617e7428486da49e4b5cc3981 - type: pyaml.arrays.magnet name: QF_002 elements: - - QF_002 + - QF_002_d8a6e63c07c94aed87878d113cf22194 - type: pyaml.arrays.element name: Cell2 elements: - - QF_002 - - SF_002 - - QD_002 - - SD_002 + - QF_002_d8a6e63c07c94aed87878d113cf22194 + - SF_002_f7c48af5504649a09b8e9434b2509ce4 + - QD_002_c212a1d7ea41484f925303959213cc32 + - SD_002_178b0b0cfcc046c6ac9a1eac2328963e - type: pyaml.arrays.magnet name: SF_002 elements: - - SF_002 + - SF_002_f7c48af5504649a09b8e9434b2509ce4 - type: pyaml.arrays.magnet name: QD_002 elements: - - QD_002 + - QD_002_c212a1d7ea41484f925303959213cc32 - type: pyaml.arrays.magnet name: SD_002 elements: - - SD_002 + - SD_002_178b0b0cfcc046c6ac9a1eac2328963e - type: pyaml.arrays.magnet name: QF_003 elements: - - QF_003 + - QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 - type: pyaml.arrays.element name: Cell3 elements: - - QF_003 - - SF_003 - - QD_003 - - SD_003 + - QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 + - SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 + - QD_003_ad775f317e7b4408a72e09c7db4236ad + - SD_003_63a3ec9ceeef453f8e793acc437ce116 - type: pyaml.arrays.magnet name: SF_003 elements: - - SF_003 + - SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 - type: pyaml.arrays.magnet name: QD_003 elements: - - QD_003 + - QD_003_ad775f317e7b4408a72e09c7db4236ad - type: pyaml.arrays.magnet name: SD_003 elements: - - SD_003 + - SD_003_63a3ec9ceeef453f8e793acc437ce116 - type: pyaml.arrays.magnet name: QF_004 elements: - - QF_004 + - QF_004_ce31bb358fad4cc7aadb86711031acd0 - type: pyaml.arrays.element name: Cell4 elements: - - QF_004 - - SF_004 - - QD_004 - - SD_004 + - QF_004_ce31bb358fad4cc7aadb86711031acd0 + - SF_004_faa5bb6858e64051a54f4f01340684e6 + - QD_004_82625fab961945c0aba57174ebcbf51f + - SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 - type: pyaml.arrays.magnet name: SF_004 elements: - - SF_004 + - SF_004_faa5bb6858e64051a54f4f01340684e6 - type: pyaml.arrays.magnet name: QD_004 elements: - - QD_004 + - QD_004_82625fab961945c0aba57174ebcbf51f - type: pyaml.arrays.magnet name: SD_004 elements: - - SD_004 + - SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 - type: pyaml.arrays.magnet name: QF_005 elements: - - QF_005 + - QF_005_d812a0f116044852a2dfc809ca0b87bf - type: pyaml.arrays.element name: Cell5 elements: - - QF_005 - - SF_005 - - QD_005 - - SD_005 + - QF_005_d812a0f116044852a2dfc809ca0b87bf + - SF_005_ab16d309e1e341e58d7ae1598098bb69 + - QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 + - SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe - type: pyaml.arrays.magnet name: SF_005 elements: - - SF_005 + - SF_005_ab16d309e1e341e58d7ae1598098bb69 - type: pyaml.arrays.magnet name: QD_005 elements: - - QD_005 + - QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 - type: pyaml.arrays.magnet name: SD_005 elements: - - SD_005 + - SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe - type: pyaml.arrays.magnet name: QF_006 elements: - - QF_006 + - QF_006_d39cefd95c88492885796863d4df1b68 - type: pyaml.arrays.element name: Cell6 elements: - - QF_006 - - SF_006 - - QD_006 - - SD_006 + - QF_006_d39cefd95c88492885796863d4df1b68 + - SF_006_09d95d77b39a463283b0660c4478c409 + - QD_006_49e8c0b7e66348338865c77d9317c6bf + - SD_006_284911364f3c44b2abdc13acb2df46b3 - type: pyaml.arrays.magnet name: SF_006 elements: - - SF_006 + - SF_006_09d95d77b39a463283b0660c4478c409 - type: pyaml.arrays.magnet name: QD_006 elements: - - QD_006 + - QD_006_49e8c0b7e66348338865c77d9317c6bf - type: pyaml.arrays.magnet name: SD_006 elements: - - SD_006 + - SD_006_284911364f3c44b2abdc13acb2df46b3 - type: pyaml.arrays.magnet name: QF_007 elements: - - QF_007 + - QF_007_7414601f613f4115b9fe0b78eceaa2ce - type: pyaml.arrays.element name: Cell7 elements: - - QF_007 - - SF_007 - - QD_007 - - SD_007 + - QF_007_7414601f613f4115b9fe0b78eceaa2ce + - SF_007_b3fa2def44a24425a5ad414abc5bbca1 + - QD_007_79fa1ac91a7f43eda443200923990327 + - SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 - type: pyaml.arrays.magnet name: SF_007 elements: - - SF_007 + - SF_007_b3fa2def44a24425a5ad414abc5bbca1 - type: pyaml.arrays.magnet name: QD_007 elements: - - QD_007 + - QD_007_79fa1ac91a7f43eda443200923990327 - type: pyaml.arrays.magnet name: SD_007 elements: - - SD_007 + - SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 - type: pyaml.arrays.magnet name: QF_008 elements: - - QF_008 + - QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea - type: pyaml.arrays.element name: Cell8 elements: - - QF_008 - - SF_008 - - QD_008 - - SD_008 + - QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea + - SF_008_00a14620b0a5428b821ddb84d2639e5c + - QD_008_1cb9b3401b644658908260616570424d + - SD_008_3b849a66bca1453cac95fa0ccba58166 - type: pyaml.arrays.magnet name: SF_008 elements: - - SF_008 + - SF_008_00a14620b0a5428b821ddb84d2639e5c - type: pyaml.arrays.magnet name: QD_008 elements: - - QD_008 + - QD_008_1cb9b3401b644658908260616570424d - type: pyaml.arrays.magnet name: SD_008 elements: - - SD_008 + - SD_008_3b849a66bca1453cac95fa0ccba58166 - type: pyaml.arrays.magnet name: QF_009 elements: - - QF_009 + - QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 - type: pyaml.arrays.element name: Cell9 elements: - - QF_009 - - SF_009 - - QD_009 - - SD_009 + - QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 + - SF_009_6f725f3f495f428696a8419b73f22774 + - QD_009_232f21c02a03457698d31ec2d4265a02 + - SD_009_cf86e64cfe764c12b94262c41ceabbfb - type: pyaml.arrays.magnet name: SF_009 elements: - - SF_009 + - SF_009_6f725f3f495f428696a8419b73f22774 - type: pyaml.arrays.magnet name: QD_009 elements: - - QD_009 + - QD_009_232f21c02a03457698d31ec2d4265a02 - type: pyaml.arrays.magnet name: SD_009 elements: - - SD_009 + - SD_009_cf86e64cfe764c12b94262c41ceabbfb - type: pyaml.arrays.magnet name: QF_010 elements: - - QF_010 + - QF_010_94782da4ed5e4898b91d7e864140c277 - type: pyaml.arrays.element name: Cell10 elements: - - QF_010 - - SF_010 - - QD_010 - - SD_010 + - QF_010_94782da4ed5e4898b91d7e864140c277 + - SF_010_f626388a02d64cfd83c9b1614982a5fb + - QD_010_56f8b47113df4cec8b2fc3ab38c69869 + - SD_010_eafccc3719664195b4107df7527a8a0a - type: pyaml.arrays.magnet name: SF_010 elements: - - SF_010 + - SF_010_f626388a02d64cfd83c9b1614982a5fb - type: pyaml.arrays.magnet name: QD_010 elements: - - QD_010 + - QD_010_56f8b47113df4cec8b2fc3ab38c69869 - type: pyaml.arrays.magnet name: SD_010 elements: - - SD_010 + - SD_010_eafccc3719664195b4107df7527a8a0a - type: pyaml.arrays.magnet name: QF_011 elements: - - QF_011 + - QF_011_b575ed5454c54128b2ed3d6b7e64ddad - type: pyaml.arrays.element name: Cell11 elements: - - QF_011 - - SF_011 - - QD_011 - - SD_011 + - QF_011_b575ed5454c54128b2ed3d6b7e64ddad + - SF_011_bd73fc4fbc0640efb117cac154b34c33 + - QD_011_ae7b2c76f21b429c962ff3c33a38cd70 + - SD_011_773d914fde034e8697ac966f74ca0611 - type: pyaml.arrays.magnet name: SF_011 elements: - - SF_011 + - SF_011_bd73fc4fbc0640efb117cac154b34c33 - type: pyaml.arrays.magnet name: QD_011 elements: - - QD_011 + - QD_011_ae7b2c76f21b429c962ff3c33a38cd70 - type: pyaml.arrays.magnet name: SD_011 elements: - - SD_011 + - SD_011_773d914fde034e8697ac966f74ca0611 - type: pyaml.arrays.magnet name: QF_012 elements: - - QF_012 + - QF_012_cb52fb6f374840b0a50180a089da49d1 - type: pyaml.arrays.element name: Cell12 elements: - - QF_012 - - SF_012 - - QD_012 - - SD_012 + - QF_012_cb52fb6f374840b0a50180a089da49d1 + - SF_012_02daf05ef4ab46ea86bdb3be90162251 + - QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 + - SD_012_ff9262ea95744358b360235d7a459cec - type: pyaml.arrays.magnet name: SF_012 elements: - - SF_012 + - SF_012_02daf05ef4ab46ea86bdb3be90162251 - type: pyaml.arrays.magnet name: QD_012 elements: - - QD_012 + - QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 - type: pyaml.arrays.magnet name: SD_012 elements: - - SD_012 + - SD_012_ff9262ea95744358b360235d7a459cec - type: pyaml.arrays.magnet name: QF_013 elements: - - QF_013 + - QF_013_2793a62cd78744c9ab4ca5e2843a72a2 - type: pyaml.arrays.element name: Cell13 elements: - - QF_013 - - SF_013 - - QD_013 - - SD_013 + - QF_013_2793a62cd78744c9ab4ca5e2843a72a2 + - SF_013_4532d63397d644d28e1af1a480a60c07 + - QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 + - SD_013_ef033612a3274ef3ab886afd81614dca - type: pyaml.arrays.magnet name: SF_013 elements: - - SF_013 + - SF_013_4532d63397d644d28e1af1a480a60c07 - type: pyaml.arrays.magnet name: QD_013 elements: - - QD_013 + - QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 - type: pyaml.arrays.magnet name: SD_013 elements: - - SD_013 + - SD_013_ef033612a3274ef3ab886afd81614dca - type: pyaml.arrays.magnet name: QF_014 elements: - - QF_014 + - QF_014_c09c7e604b3a41fa818b44d04c844b25 - type: pyaml.arrays.element name: Cell14 elements: - - QF_014 - - SF_014 - - QD_014 - - SD_014 + - QF_014_c09c7e604b3a41fa818b44d04c844b25 + - SF_014_bf4393ec53954372bd5e4f140491465b + - QD_014_62633bc5afcd4fc9a19de70a983baa5c + - SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 - type: pyaml.arrays.magnet name: SF_014 elements: - - SF_014 + - SF_014_bf4393ec53954372bd5e4f140491465b - type: pyaml.arrays.magnet name: QD_014 elements: - - QD_014 + - QD_014_62633bc5afcd4fc9a19de70a983baa5c - type: pyaml.arrays.magnet name: SD_014 elements: - - SD_014 + - SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 - type: pyaml.arrays.magnet name: QF_015 elements: - - QF_015 + - QF_015_63634bfdccc44de586db6ee28071ccb4 - type: pyaml.arrays.element name: Cell15 elements: - - QF_015 - - SF_015 - - QD_015 - - SD_015 + - QF_015_63634bfdccc44de586db6ee28071ccb4 + - SF_015_a988680835664d109306ad1694a48382 + - QD_015_b2cc0d3ab8f741729a7abf3d9426a958 + - SD_015_8b7f143df262464e9f5c1eae4b83ce14 - type: pyaml.arrays.magnet name: SF_015 elements: - - SF_015 + - SF_015_a988680835664d109306ad1694a48382 - type: pyaml.arrays.magnet name: QD_015 elements: - - QD_015 + - QD_015_b2cc0d3ab8f741729a7abf3d9426a958 - type: pyaml.arrays.magnet name: SD_015 elements: - - SD_015 + - SD_015_8b7f143df262464e9f5c1eae4b83ce14 - type: pyaml.arrays.magnet name: QF_016 elements: - - QF_016 + - QF_016_965422d59ef3488f84c68f5ecaee6c6b - type: pyaml.arrays.element name: Cell16 elements: - - QF_016 - - SF_016 - - QD_016 - - SD_016 + - QF_016_965422d59ef3488f84c68f5ecaee6c6b + - SF_016_e67c83cfbce2433f9152de49f928d25d + - QD_016_63fce39354a946818c2bfd76adb61760 + - SD_016_626878061df544a08c4c061e57a4e3a1 - type: pyaml.arrays.magnet name: SF_016 elements: - - SF_016 + - SF_016_e67c83cfbce2433f9152de49f928d25d - type: pyaml.arrays.magnet name: QD_016 elements: - - QD_016 + - QD_016_63fce39354a946818c2bfd76adb61760 - type: pyaml.arrays.magnet name: SD_016 elements: - - SD_016 + - SD_016_626878061df544a08c4c061e57a4e3a1 devices: - type: pyaml.magnet.quadrupole - name: QF_001 + name: QF_001_f2013521b99e4a76bed1db7ec67464b0 model: type: pyaml.magnet.identity_model unit: 1/m @@ -419,7 +419,7 @@ devices: attribute: AN01-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_001 + name: SF_001_f934c7cf2c704132acfce86bc2419e36 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -428,7 +428,7 @@ devices: attribute: AN01-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_001 + name: QD_001_15812e1906ee4bc7b94abb8ccd910f5b model: type: pyaml.magnet.identity_model unit: 1/m @@ -437,7 +437,7 @@ devices: attribute: AN01-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_001 + name: SD_001_4e39bd9617e7428486da49e4b5cc3981 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -446,7 +446,7 @@ devices: attribute: AN01-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_002 + name: QF_002_d8a6e63c07c94aed87878d113cf22194 model: type: pyaml.magnet.identity_model unit: 1/m @@ -455,7 +455,7 @@ devices: attribute: AN02-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_002 + name: SF_002_f7c48af5504649a09b8e9434b2509ce4 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -464,7 +464,7 @@ devices: attribute: AN02-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_002 + name: QD_002_c212a1d7ea41484f925303959213cc32 model: type: pyaml.magnet.identity_model unit: 1/m @@ -473,7 +473,7 @@ devices: attribute: AN02-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_002 + name: SD_002_178b0b0cfcc046c6ac9a1eac2328963e model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -482,7 +482,7 @@ devices: attribute: AN02-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_003 + name: QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 model: type: pyaml.magnet.identity_model unit: 1/m @@ -491,7 +491,7 @@ devices: attribute: AN03-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_003 + name: SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -500,7 +500,7 @@ devices: attribute: AN03-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_003 + name: QD_003_ad775f317e7b4408a72e09c7db4236ad model: type: pyaml.magnet.identity_model unit: 1/m @@ -509,7 +509,7 @@ devices: attribute: AN03-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_003 + name: SD_003_63a3ec9ceeef453f8e793acc437ce116 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -518,7 +518,7 @@ devices: attribute: AN03-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_004 + name: QF_004_ce31bb358fad4cc7aadb86711031acd0 model: type: pyaml.magnet.identity_model unit: 1/m @@ -527,7 +527,7 @@ devices: attribute: AN04-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_004 + name: SF_004_faa5bb6858e64051a54f4f01340684e6 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -536,7 +536,7 @@ devices: attribute: AN04-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_004 + name: QD_004_82625fab961945c0aba57174ebcbf51f model: type: pyaml.magnet.identity_model unit: 1/m @@ -545,7 +545,7 @@ devices: attribute: AN04-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_004 + name: SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -554,7 +554,7 @@ devices: attribute: AN04-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_005 + name: QF_005_d812a0f116044852a2dfc809ca0b87bf model: type: pyaml.magnet.identity_model unit: 1/m @@ -563,7 +563,7 @@ devices: attribute: AN05-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_005 + name: SF_005_ab16d309e1e341e58d7ae1598098bb69 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -572,7 +572,7 @@ devices: attribute: AN05-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_005 + name: QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 model: type: pyaml.magnet.identity_model unit: 1/m @@ -581,7 +581,7 @@ devices: attribute: AN05-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_005 + name: SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -590,7 +590,7 @@ devices: attribute: AN05-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_006 + name: QF_006_d39cefd95c88492885796863d4df1b68 model: type: pyaml.magnet.identity_model unit: 1/m @@ -599,7 +599,7 @@ devices: attribute: AN06-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_006 + name: SF_006_09d95d77b39a463283b0660c4478c409 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -608,7 +608,7 @@ devices: attribute: AN06-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_006 + name: QD_006_49e8c0b7e66348338865c77d9317c6bf model: type: pyaml.magnet.identity_model unit: 1/m @@ -617,7 +617,7 @@ devices: attribute: AN06-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_006 + name: SD_006_284911364f3c44b2abdc13acb2df46b3 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -626,7 +626,7 @@ devices: attribute: AN06-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_007 + name: QF_007_7414601f613f4115b9fe0b78eceaa2ce model: type: pyaml.magnet.identity_model unit: 1/m @@ -635,7 +635,7 @@ devices: attribute: AN07-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_007 + name: SF_007_b3fa2def44a24425a5ad414abc5bbca1 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -644,7 +644,7 @@ devices: attribute: AN07-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_007 + name: QD_007_79fa1ac91a7f43eda443200923990327 model: type: pyaml.magnet.identity_model unit: 1/m @@ -653,7 +653,7 @@ devices: attribute: AN07-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_007 + name: SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -662,7 +662,7 @@ devices: attribute: AN07-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_008 + name: QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea model: type: pyaml.magnet.identity_model unit: 1/m @@ -671,7 +671,7 @@ devices: attribute: AN08-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_008 + name: SF_008_00a14620b0a5428b821ddb84d2639e5c model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -680,7 +680,7 @@ devices: attribute: AN08-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_008 + name: QD_008_1cb9b3401b644658908260616570424d model: type: pyaml.magnet.identity_model unit: 1/m @@ -689,7 +689,7 @@ devices: attribute: AN08-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_008 + name: SD_008_3b849a66bca1453cac95fa0ccba58166 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -698,7 +698,7 @@ devices: attribute: AN08-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_009 + name: QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 model: type: pyaml.magnet.identity_model unit: 1/m @@ -707,7 +707,7 @@ devices: attribute: AN09-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_009 + name: SF_009_6f725f3f495f428696a8419b73f22774 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -716,7 +716,7 @@ devices: attribute: AN09-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_009 + name: QD_009_232f21c02a03457698d31ec2d4265a02 model: type: pyaml.magnet.identity_model unit: 1/m @@ -725,7 +725,7 @@ devices: attribute: AN09-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_009 + name: SD_009_cf86e64cfe764c12b94262c41ceabbfb model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -734,7 +734,7 @@ devices: attribute: AN09-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_010 + name: QF_010_94782da4ed5e4898b91d7e864140c277 model: type: pyaml.magnet.identity_model unit: 1/m @@ -743,7 +743,7 @@ devices: attribute: AN10-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_010 + name: SF_010_f626388a02d64cfd83c9b1614982a5fb model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -752,7 +752,7 @@ devices: attribute: AN10-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_010 + name: QD_010_56f8b47113df4cec8b2fc3ab38c69869 model: type: pyaml.magnet.identity_model unit: 1/m @@ -761,7 +761,7 @@ devices: attribute: AN10-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_010 + name: SD_010_eafccc3719664195b4107df7527a8a0a model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -770,7 +770,7 @@ devices: attribute: AN10-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_011 + name: QF_011_b575ed5454c54128b2ed3d6b7e64ddad model: type: pyaml.magnet.identity_model unit: 1/m @@ -779,7 +779,7 @@ devices: attribute: AN11-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_011 + name: SF_011_bd73fc4fbc0640efb117cac154b34c33 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -788,7 +788,7 @@ devices: attribute: AN11-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_011 + name: QD_011_ae7b2c76f21b429c962ff3c33a38cd70 model: type: pyaml.magnet.identity_model unit: 1/m @@ -797,7 +797,7 @@ devices: attribute: AN11-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_011 + name: SD_011_773d914fde034e8697ac966f74ca0611 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -806,7 +806,7 @@ devices: attribute: AN11-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_012 + name: QF_012_cb52fb6f374840b0a50180a089da49d1 model: type: pyaml.magnet.identity_model unit: 1/m @@ -815,7 +815,7 @@ devices: attribute: AN12-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_012 + name: SF_012_02daf05ef4ab46ea86bdb3be90162251 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -824,7 +824,7 @@ devices: attribute: AN12-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_012 + name: QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 model: type: pyaml.magnet.identity_model unit: 1/m @@ -833,7 +833,7 @@ devices: attribute: AN12-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_012 + name: SD_012_ff9262ea95744358b360235d7a459cec model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -842,7 +842,7 @@ devices: attribute: AN12-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_013 + name: QF_013_2793a62cd78744c9ab4ca5e2843a72a2 model: type: pyaml.magnet.identity_model unit: 1/m @@ -851,7 +851,7 @@ devices: attribute: AN13-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_013 + name: SF_013_4532d63397d644d28e1af1a480a60c07 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -860,7 +860,7 @@ devices: attribute: AN13-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_013 + name: QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 model: type: pyaml.magnet.identity_model unit: 1/m @@ -869,7 +869,7 @@ devices: attribute: AN13-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_013 + name: SD_013_ef033612a3274ef3ab886afd81614dca model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -878,7 +878,7 @@ devices: attribute: AN13-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_014 + name: QF_014_c09c7e604b3a41fa818b44d04c844b25 model: type: pyaml.magnet.identity_model unit: 1/m @@ -887,7 +887,7 @@ devices: attribute: AN14-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_014 + name: SF_014_bf4393ec53954372bd5e4f140491465b model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -896,7 +896,7 @@ devices: attribute: AN14-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_014 + name: QD_014_62633bc5afcd4fc9a19de70a983baa5c model: type: pyaml.magnet.identity_model unit: 1/m @@ -905,7 +905,7 @@ devices: attribute: AN14-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_014 + name: SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -914,7 +914,7 @@ devices: attribute: AN14-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_015 + name: QF_015_63634bfdccc44de586db6ee28071ccb4 model: type: pyaml.magnet.identity_model unit: 1/m @@ -923,7 +923,7 @@ devices: attribute: AN15-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_015 + name: SF_015_a988680835664d109306ad1694a48382 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -932,7 +932,7 @@ devices: attribute: AN15-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_015 + name: QD_015_b2cc0d3ab8f741729a7abf3d9426a958 model: type: pyaml.magnet.identity_model unit: 1/m @@ -941,7 +941,7 @@ devices: attribute: AN15-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_015 + name: SD_015_8b7f143df262464e9f5c1eae4b83ce14 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -950,7 +950,7 @@ devices: attribute: AN15-AR/EM-SX/SD.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QF_016 + name: QF_016_965422d59ef3488f84c68f5ecaee6c6b model: type: pyaml.magnet.identity_model unit: 1/m @@ -959,7 +959,7 @@ devices: attribute: AN16-AR/EM-QP/QF.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SF_016 + name: SF_016_e67c83cfbce2433f9152de49f928d25d model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -968,7 +968,7 @@ devices: attribute: AN16-AR/EM-SX/SF.01/magnetic_strength unit: 1/m**2 - type: pyaml.magnet.quadrupole - name: QD_016 + name: QD_016_63fce39354a946818c2bfd76adb61760 model: type: pyaml.magnet.identity_model unit: 1/m @@ -977,7 +977,7 @@ devices: attribute: AN16-AR/EM-QP/QD.01/magnetic_strength unit: 1/m - type: pyaml.magnet.sextupole - name: SD_016 + name: SD_016_626878061df544a08c4c061e57a4e3a1 model: type: pyaml.magnet.identity_model unit: 1/m**2 @@ -991,7 +991,7 @@ devices: transmitters: - type: pyaml.rf.rf_transmitter name: RFTRA - cavities: [RF_001] + cavities: [RF_001_cc245d84ca2b4ba9b54051069a4cfb8f] harmonic: 1 distribution: 1 voltage: simulator/ringsimulator/ringsimulator/voltage From 029e0e13a9e724dae1d49e0a8b930386be48869f Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 13:43:18 +0200 Subject: [PATCH 05/10] Correction of the path again... --- tests/integration/data/fodo_1gev_6d_pyaml.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml index 9fddd9e6c..7e74001b2 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.yaml +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -5,7 +5,7 @@ data_folder: /data/store energy: 1000000000.0 simulators: - type: pyaml.lattice.simulator - lattice: D:\PROJETS\PyAML\Fodo\fodo_1gev_6d.m + lattice: fodo_1gev_6d.m name: design linker: type: pyaml.lattice.attribute_linker From 338cf6eab85912b3b81bffadd19668191bbe239d Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 14:05:07 +0200 Subject: [PATCH 06/10] New test more simple. --- tests/integration/test_dt4acc_twin_smoke.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/integration/test_dt4acc_twin_smoke.py b/tests/integration/test_dt4acc_twin_smoke.py index 36e32ef64..ab7c422de 100644 --- a/tests/integration/test_dt4acc_twin_smoke.py +++ b/tests/integration/test_dt4acc_twin_smoke.py @@ -4,6 +4,8 @@ import numpy as np import pytest +QF_001 = "QF_001_f2013521b99e4a76bed1db7ec67464b0" + pytestmark = [ pytest.mark.integration, pytest.mark.skipif( @@ -20,7 +22,7 @@ ], ids=["fodo_1gev_6d_pyaml.yaml"], ) -def test_dt4acc_twin_accelerator_instantiates_and_reads_rf(config_file: Path): +def test_dt4acc_twin_accelerator_instantiates_and_reads_live_values(config_file: Path): from pyaml.accelerator import Accelerator accelerator = Accelerator.load(str(config_file)) @@ -31,5 +33,10 @@ def test_dt4acc_twin_accelerator_instantiates_and_reads_rf(config_file: Path): rf = accelerator.live.get_rf_plant("RF") reference_frequency = rf.frequency.get() - assert np.isfinite(reference_frequency) - assert reference_frequency > 0.0 + assert np.isfinite(reference_frequency), f"RF reference frequency is not finite: {reference_frequency!r}" + + quadrupole = accelerator.live.get_magnet(QF_001) + magnetic_strength = quadrupole.strength.get() + + assert np.isfinite(magnetic_strength), f"{QF_001} magnetic strength is not finite: {magnetic_strength!r}" + assert magnetic_strength > 0.0, f"{QF_001} magnetic strength should be positive, got {magnetic_strength!r}" From fe2ec50e7a0a4f2f82b0642b152f550342bf11c9 Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 14:42:55 +0200 Subject: [PATCH 07/10] Dummy cs disabled for integration tests. Integration test look at readback values. --- .github/workflows/dt4acc-integration.yml | 2 +- tests/conftest.py | 5 +++++ tests/integration/test_dt4acc_twin_smoke.py | 16 ++++++++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dt4acc-integration.yml b/.github/workflows/dt4acc-integration.yml index fc575aa0e..98baa5e13 100644 --- a/.github/workflows/dt4acc-integration.yml +++ b/.github/workflows/dt4acc-integration.yml @@ -93,7 +93,7 @@ jobs: export TWIN_PID="$(cat "${PID_FILE}")" export LOG_FILE - timeout 420 bash -c ' + timeout 900 bash -c ' until grep -q "Calculation heartbeat: simulator/ringsimulator/ringsimulator reachable" "${LOG_FILE}"; do if ! kill -0 "${TWIN_PID}" 2>/dev/null; then cat "${LOG_FILE}" diff --git a/tests/conftest.py b/tests/conftest.py index 030cb61f5..a39aef1d8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,6 @@ import importlib import importlib.machinery +import os import pathlib import sys import types @@ -215,6 +216,10 @@ def _installed_test_packages( @pytest.fixture(scope="session", autouse=True) def install_default_test_packages(): + if os.environ.get("PYAML_DT4ACC_INTEGRATION") == "1": + yield + return + package_paths = [spec.local_path.resolve() for spec in _TEST_PACKAGES.values()] with _installed_test_packages( package_paths, diff --git a/tests/integration/test_dt4acc_twin_smoke.py b/tests/integration/test_dt4acc_twin_smoke.py index ab7c422de..b2ffda7d7 100644 --- a/tests/integration/test_dt4acc_twin_smoke.py +++ b/tests/integration/test_dt4acc_twin_smoke.py @@ -5,6 +5,8 @@ import pytest QF_001 = "QF_001_f2013521b99e4a76bed1db7ec67464b0" +QF_001_STRENGTH = "AN01-AR/EM-QP/QF.01/magnetic_strength" +RF_REFERENCE_FREQUENCY = "simulator/ringsimulator/ringsimulator/reference_frequency" pytestmark = [ pytest.mark.integration, @@ -23,6 +25,8 @@ ids=["fodo_1gev_6d_pyaml.yaml"], ) def test_dt4acc_twin_accelerator_instantiates_and_reads_live_values(config_file: Path): + from tango.pyaml.attribute import ConfigModel as AttributeConfigModel + from pyaml.accelerator import Accelerator accelerator = Accelerator.load(str(config_file)) @@ -30,13 +34,17 @@ def test_dt4acc_twin_accelerator_instantiates_and_reads_live_values(config_file: assert accelerator.live is not None assert "live" in accelerator.controls() - rf = accelerator.live.get_rf_plant("RF") - reference_frequency = rf.frequency.get() + accelerator.live.get_rf_plant("RF") + + reference_frequency = accelerator.live.get_device_access(RF_REFERENCE_FREQUENCY).readback().value assert np.isfinite(reference_frequency), f"RF reference frequency is not finite: {reference_frequency!r}" + assert reference_frequency > 0.0, f"RF reference frequency should be positive, got {reference_frequency!r}" - quadrupole = accelerator.live.get_magnet(QF_001) - magnetic_strength = quadrupole.strength.get() + accelerator.live.get_magnet(QF_001) + magnetic_strength = ( + accelerator.live.get_device_access(AttributeConfigModel(attribute=QF_001_STRENGTH, unit="1/m")).readback().value + ) assert np.isfinite(magnetic_strength), f"{QF_001} magnetic strength is not finite: {magnetic_strength!r}" assert magnetic_strength > 0.0, f"{QF_001} magnetic strength should be positive, got {magnetic_strength!r}" From ece1e66379a8504cc0772b2e37d25a35b6083e50 Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 15:29:52 +0200 Subject: [PATCH 08/10] Adapting the integration test data to the merge --- dt4acc_integration_test_issue.md | 102 +++++ .../integration/data/fodo_1gev_6d_pyaml.yaml | 346 +++------------ .../data/fodo_1gev_6d_pyaml_catalogs.yaml | 408 ++++++++++++++++++ 3 files changed, 575 insertions(+), 281 deletions(-) create mode 100644 dt4acc_integration_test_issue.md create mode 100644 tests/integration/data/fodo_1gev_6d_pyaml_catalogs.yaml diff --git a/dt4acc_integration_test_issue.md b/dt4acc_integration_test_issue.md new file mode 100644 index 000000000..08fd70890 --- /dev/null +++ b/dt4acc_integration_test_issue.md @@ -0,0 +1,102 @@ +# Add dt4acc Apptainer Integration Smoke Test + +## Description, motivation and use case + +pyAML currently has unit tests for its core configuration and backend +abstractions, but it does not have an integration test proving that a real +Tango-backed digital twin can be started and consumed through the pyAML API. + +The use case is to validate the integration between: + +- pyAML `Accelerator` configuration loading; +- `tango-pyaml` as the Tango backend; +- the `dt4acc` SOLEIL twin running in Apptainer with its embedded Tango + database. + +A minimal first test should ensure that the dt4acc twin starts successfully, +that Tango devices are reachable, and that pyAML can instantiate an +`Accelerator` and read at least one live value from the twin. + +## Proposed solution + +Add an opt-in GitHub Actions integration workflow that: + +1. Installs Apptainer. +2. Pulls the `dt4acc-soleil-twin` Apptainer image. +3. Starts the twin with the embedded Tango database. +4. Uses test data stored under `tests/integration/data`. +5. Waits until the twin reports that all Tango processes are ready. +6. Runs a pytest integration smoke test. +7. Uploads the dt4acc twin log as an artifact. + +Add a minimal pytest test under `tests/integration` that: + +- loads a small pyAML accelerator configuration; +- instantiates `pyaml.Accelerator`; +- connects to the live Tango backend through `tango-pyaml`; +- reads the RF reference frequency from the dt4acc `RingSimulatorDevice`; +- asserts that the value is finite and positive. + +The test should be opt-in, for example via `PYAML_DT4ACC_INTEGRATION=1`, so +the normal unit-test workflow remains fast and independent from Apptainer/Tango. + +## Describe alternatives you've considered + +One alternative is to mock Tango or use the existing dummy Tango backend. This +is useful for unit tests, but it does not validate the real deployment path +involving Apptainer, PyTango, Tango DB startup, dt4acc device registration, and +live device reads. + +Another alternative is to run only the dt4acc integration tests in the dt4acc +repository. That validates the twin itself, but not the pyAML side of the +contract: loading an `Accelerator`, resolving Tango catalog references, and +reading values through the pyAML abstraction. + +A larger end-to-end test could also write magnet or RF setpoints. That should +be added later, but the first step should be a small smoke test to stabilize +the CI infrastructure. + +## Example + +Example test behavior: + +```python +accelerator = Accelerator.load("tests/integration/pyaml_dt4acc_twin.yaml") + +rf = accelerator.live.get_rf_plant("RF") +reference_frequency = rf.frequency.get() + +assert reference_frequency > 0.0 +``` + +Example workflow behavior: + +```bash +apptainer run \ + --bind tests/integration/data:/data:ro \ + dt4acc-soleil-twin.sif \ + --force-kill-db \ + --tango-host 127.0.0.1:10000 \ + --accelerator-setup-file /data/accelerator_setup.json \ + --lattice-file /data/SOLEIL_II_V3631_sym1_V001_database.m + +PYAML_DT4ACC_INTEGRATION=1 python -m pytest -v tests/integration +``` + +## Additional context + +The dt4acc twin already provides an Apptainer image with embedded Tango +database support. The required input files should be stored in +`tests/integration/data` so the workflow is self-contained and reproducible. + +The initial test should target a stable read-only value, such as +`simulator/ringsimulator/ringsimulator/reference_frequency`, to avoid changing +the twin state during CI. + +If the dt4acc image registry is private, the workflow should support optional +registry credentials via GitHub Actions secrets. + +## Checklist + +- [ ] I've assigned this issue to a project +- [ ] I've @-mentioned relevant people diff --git a/tests/integration/data/fodo_1gev_6d_pyaml.yaml b/tests/integration/data/fodo_1gev_6d_pyaml.yaml index 7e74001b2..78309ac1f 100644 --- a/tests/integration/data/fodo_1gev_6d_pyaml.yaml +++ b/tests/integration/data/fodo_1gev_6d_pyaml.yaml @@ -14,31 +14,7 @@ controls: - type: tango.pyaml.controlsystem name: live tango_host: 127.0.0.1:10000 - catalog: - type: tango.pyaml.static_catalog - entries: - - type: tango.pyaml.static_catalog_entry - key: simulator/ringsimulator/ringsimulator/reference_frequency - device: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/reference_frequency - unit: kHz - - type: tango.pyaml.static_catalog_entry - key: simulator/ringsimulator/ringsimulator/voltage - device: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/voltage - unit: V - - type: tango.pyaml.static_catalog_entry - key: simulator/ringsimulator/ringsimulator/hor - device: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/hor - - type: tango.pyaml.static_catalog_entry - key: simulator/ringsimulator/ringsimulator/vert - device: - type: tango.pyaml.attribute - attribute: simulator/ringsimulator/ringsimulator/vert + catalog: fodo_1gev_6d_pyaml_catalogs.yaml arrays: - type: pyaml.arrays.magnet name: QF_001 @@ -414,577 +390,385 @@ devices: model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN01-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN01-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_001_f934c7cf2c704132acfce86bc2419e36 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN01-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN01-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_001_15812e1906ee4bc7b94abb8ccd910f5b model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN01-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN01-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_001_4e39bd9617e7428486da49e4b5cc3981 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN01-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN01-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_002_d8a6e63c07c94aed87878d113cf22194 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN02-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN02-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_002_f7c48af5504649a09b8e9434b2509ce4 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN02-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN02-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_002_c212a1d7ea41484f925303959213cc32 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN02-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN02-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_002_178b0b0cfcc046c6ac9a1eac2328963e model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN02-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN02-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN03-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN03-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN03-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN03-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_003_ad775f317e7b4408a72e09c7db4236ad model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN03-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN03-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_003_63a3ec9ceeef453f8e793acc437ce116 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN03-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN03-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_004_ce31bb358fad4cc7aadb86711031acd0 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN04-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN04-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_004_faa5bb6858e64051a54f4f01340684e6 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN04-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN04-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_004_82625fab961945c0aba57174ebcbf51f model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN04-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN04-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN04-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN04-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_005_d812a0f116044852a2dfc809ca0b87bf model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN05-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN05-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_005_ab16d309e1e341e58d7ae1598098bb69 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN05-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN05-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN05-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN05-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN05-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN05-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_006_d39cefd95c88492885796863d4df1b68 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN06-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN06-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_006_09d95d77b39a463283b0660c4478c409 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN06-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN06-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_006_49e8c0b7e66348338865c77d9317c6bf model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN06-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN06-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_006_284911364f3c44b2abdc13acb2df46b3 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN06-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN06-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_007_7414601f613f4115b9fe0b78eceaa2ce model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN07-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN07-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_007_b3fa2def44a24425a5ad414abc5bbca1 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN07-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN07-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_007_79fa1ac91a7f43eda443200923990327 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN07-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN07-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN07-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN07-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN08-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN08-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_008_00a14620b0a5428b821ddb84d2639e5c model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN08-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN08-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_008_1cb9b3401b644658908260616570424d model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN08-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN08-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_008_3b849a66bca1453cac95fa0ccba58166 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN08-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN08-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN09-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN09-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_009_6f725f3f495f428696a8419b73f22774 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN09-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN09-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_009_232f21c02a03457698d31ec2d4265a02 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN09-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN09-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_009_cf86e64cfe764c12b94262c41ceabbfb model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN09-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN09-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_010_94782da4ed5e4898b91d7e864140c277 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN10-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN10-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_010_f626388a02d64cfd83c9b1614982a5fb model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN10-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN10-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_010_56f8b47113df4cec8b2fc3ab38c69869 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN10-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN10-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_010_eafccc3719664195b4107df7527a8a0a model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN10-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN10-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_011_b575ed5454c54128b2ed3d6b7e64ddad model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN11-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN11-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_011_bd73fc4fbc0640efb117cac154b34c33 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN11-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN11-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_011_ae7b2c76f21b429c962ff3c33a38cd70 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN11-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN11-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_011_773d914fde034e8697ac966f74ca0611 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN11-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN11-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_012_cb52fb6f374840b0a50180a089da49d1 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN12-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN12-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_012_02daf05ef4ab46ea86bdb3be90162251 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN12-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN12-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN12-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN12-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_012_ff9262ea95744358b360235d7a459cec model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN12-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN12-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_013_2793a62cd78744c9ab4ca5e2843a72a2 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN13-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN13-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_013_4532d63397d644d28e1af1a480a60c07 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN13-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN13-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN13-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN13-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_013_ef033612a3274ef3ab886afd81614dca model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN13-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN13-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_014_c09c7e604b3a41fa818b44d04c844b25 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN14-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN14-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_014_bf4393ec53954372bd5e4f140491465b model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN14-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN14-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_014_62633bc5afcd4fc9a19de70a983baa5c model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN14-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN14-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN14-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN14-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_015_63634bfdccc44de586db6ee28071ccb4 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN15-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN15-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_015_a988680835664d109306ad1694a48382 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN15-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN15-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_015_b2cc0d3ab8f741729a7abf3d9426a958 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN15-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN15-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_015_8b7f143df262464e9f5c1eae4b83ce14 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN15-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN15-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QF_016_965422d59ef3488f84c68f5ecaee6c6b model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN16-AR/EM-QP/QF.01/magnetic_strength - unit: 1/m + physics: AN16-AR/EM-QP/QF.01/magnetic_strength - type: pyaml.magnet.sextupole name: SF_016_e67c83cfbce2433f9152de49f928d25d model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN16-AR/EM-SX/SF.01/magnetic_strength - unit: 1/m**2 + physics: AN16-AR/EM-SX/SF.01/magnetic_strength - type: pyaml.magnet.quadrupole name: QD_016_63fce39354a946818c2bfd76adb61760 model: type: pyaml.magnet.identity_model unit: 1/m - physics: - type: tango.pyaml.attribute - attribute: AN16-AR/EM-QP/QD.01/magnetic_strength - unit: 1/m + physics: AN16-AR/EM-QP/QD.01/magnetic_strength - type: pyaml.magnet.sextupole name: SD_016_626878061df544a08c4c061e57a4e3a1 model: type: pyaml.magnet.identity_model unit: 1/m**2 - physics: - type: tango.pyaml.attribute - attribute: AN16-AR/EM-SX/SD.01/magnetic_strength - unit: 1/m**2 + physics: AN16-AR/EM-SX/SD.01/magnetic_strength - type: pyaml.rf.rf_plant name: RF masterclock: simulator/ringsimulator/ringsimulator/reference_frequency diff --git a/tests/integration/data/fodo_1gev_6d_pyaml_catalogs.yaml b/tests/integration/data/fodo_1gev_6d_pyaml_catalogs.yaml new file mode 100644 index 000000000..b2c290bc5 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d_pyaml_catalogs.yaml @@ -0,0 +1,408 @@ +type: tango.pyaml.static_catalog +entries: +- type: tango.pyaml.static_catalog_entry + key: AN01-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN01-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN01-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN01-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN01-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN02-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN02-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN02-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN02-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN02-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN03-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN03-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN03-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN03-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN03-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN04-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN04-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN04-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN04-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN04-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN05-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN05-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN05-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN05-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN05-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN06-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN06-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN06-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN06-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN06-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN07-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN07-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN07-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN07-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN07-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN08-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN08-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN08-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN08-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN08-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN09-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN09-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN09-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN09-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN09-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN10-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN10-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN10-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN10-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN10-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN11-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN11-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN11-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN11-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN11-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN12-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN12-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN12-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN12-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN12-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN13-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN13-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN13-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN13-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN13-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN14-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN14-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN14-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN14-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN14-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN15-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN15-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN15-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN15-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN15-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN16-AR/EM-QP/QF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-QP/QF.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN16-AR/EM-SX/SF.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-SX/SF.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: AN16-AR/EM-QP/QD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-QP/QD.01/magnetic_strength + unit: 1/m +- type: tango.pyaml.static_catalog_entry + key: AN16-AR/EM-SX/SD.01/magnetic_strength + device: + type: tango.pyaml.attribute + attribute: AN16-AR/EM-SX/SD.01/magnetic_strength + unit: 1/m**2 +- type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/reference_frequency + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/reference_frequency + unit: kHz +- type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/voltage + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/voltage + unit: V +- type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/hor + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/hor +- type: tango.pyaml.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/vert + device: + type: tango.pyaml.attribute + attribute: simulator/ringsimulator/ringsimulator/vert From 1227dde0a6341ff5f283c380ef82399fb21700f3 Mon Sep 17 00:00:00 2001 From: gupichon <65459099+gupichon@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:34:11 +0200 Subject: [PATCH 09/10] Delete dt4acc_integration_test_issue.md --- dt4acc_integration_test_issue.md | 102 ------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 dt4acc_integration_test_issue.md diff --git a/dt4acc_integration_test_issue.md b/dt4acc_integration_test_issue.md deleted file mode 100644 index 08fd70890..000000000 --- a/dt4acc_integration_test_issue.md +++ /dev/null @@ -1,102 +0,0 @@ -# Add dt4acc Apptainer Integration Smoke Test - -## Description, motivation and use case - -pyAML currently has unit tests for its core configuration and backend -abstractions, but it does not have an integration test proving that a real -Tango-backed digital twin can be started and consumed through the pyAML API. - -The use case is to validate the integration between: - -- pyAML `Accelerator` configuration loading; -- `tango-pyaml` as the Tango backend; -- the `dt4acc` SOLEIL twin running in Apptainer with its embedded Tango - database. - -A minimal first test should ensure that the dt4acc twin starts successfully, -that Tango devices are reachable, and that pyAML can instantiate an -`Accelerator` and read at least one live value from the twin. - -## Proposed solution - -Add an opt-in GitHub Actions integration workflow that: - -1. Installs Apptainer. -2. Pulls the `dt4acc-soleil-twin` Apptainer image. -3. Starts the twin with the embedded Tango database. -4. Uses test data stored under `tests/integration/data`. -5. Waits until the twin reports that all Tango processes are ready. -6. Runs a pytest integration smoke test. -7. Uploads the dt4acc twin log as an artifact. - -Add a minimal pytest test under `tests/integration` that: - -- loads a small pyAML accelerator configuration; -- instantiates `pyaml.Accelerator`; -- connects to the live Tango backend through `tango-pyaml`; -- reads the RF reference frequency from the dt4acc `RingSimulatorDevice`; -- asserts that the value is finite and positive. - -The test should be opt-in, for example via `PYAML_DT4ACC_INTEGRATION=1`, so -the normal unit-test workflow remains fast and independent from Apptainer/Tango. - -## Describe alternatives you've considered - -One alternative is to mock Tango or use the existing dummy Tango backend. This -is useful for unit tests, but it does not validate the real deployment path -involving Apptainer, PyTango, Tango DB startup, dt4acc device registration, and -live device reads. - -Another alternative is to run only the dt4acc integration tests in the dt4acc -repository. That validates the twin itself, but not the pyAML side of the -contract: loading an `Accelerator`, resolving Tango catalog references, and -reading values through the pyAML abstraction. - -A larger end-to-end test could also write magnet or RF setpoints. That should -be added later, but the first step should be a small smoke test to stabilize -the CI infrastructure. - -## Example - -Example test behavior: - -```python -accelerator = Accelerator.load("tests/integration/pyaml_dt4acc_twin.yaml") - -rf = accelerator.live.get_rf_plant("RF") -reference_frequency = rf.frequency.get() - -assert reference_frequency > 0.0 -``` - -Example workflow behavior: - -```bash -apptainer run \ - --bind tests/integration/data:/data:ro \ - dt4acc-soleil-twin.sif \ - --force-kill-db \ - --tango-host 127.0.0.1:10000 \ - --accelerator-setup-file /data/accelerator_setup.json \ - --lattice-file /data/SOLEIL_II_V3631_sym1_V001_database.m - -PYAML_DT4ACC_INTEGRATION=1 python -m pytest -v tests/integration -``` - -## Additional context - -The dt4acc twin already provides an Apptainer image with embedded Tango -database support. The required input files should be stored in -`tests/integration/data` so the workflow is self-contained and reproducible. - -The initial test should target a stable read-only value, such as -`simulator/ringsimulator/ringsimulator/reference_frequency`, to avoid changing -the twin state during CI. - -If the dt4acc image registry is private, the workflow should support optional -registry credentials via GitHub Actions secrets. - -## Checklist - -- [ ] I've assigned this issue to a project -- [ ] I've @-mentioned relevant people From 718da1ec2121dbce497277cf7fdb94d8e6610b7b Mon Sep 17 00:00:00 2001 From: guillaumepichon Date: Mon, 22 Jun 2026 16:41:32 +0200 Subject: [PATCH 10/10] Launching the test with the backend pyaml-cs-oa. --- .github/workflows/dt4acc-integration.yml | 8 +- .../data/fodo_1gev_6d_pyaml-oa.yaml | 785 ++++++++++++++++++ .../data/fodo_1gev_6d_pyaml_catalogs-oa.yaml | 476 +++++++++++ tests/integration/test_dt4acc_twin_smoke.py | 15 +- 4 files changed, 1274 insertions(+), 10 deletions(-) create mode 100644 tests/integration/data/fodo_1gev_6d_pyaml-oa.yaml create mode 100644 tests/integration/data/fodo_1gev_6d_pyaml_catalogs-oa.yaml diff --git a/.github/workflows/dt4acc-integration.yml b/.github/workflows/dt4acc-integration.yml index 98baa5e13..7f84b98a6 100644 --- a/.github/workflows/dt4acc-integration.yml +++ b/.github/workflows/dt4acc-integration.yml @@ -51,13 +51,15 @@ jobs: pytango cache-environment: true - - name: Install pyAML and Tango backend + - name: Install pyAML and control-system backends run: | python -m pip install --upgrade pip python -m pip install -e ".[test]" + python -m pip install "ophyd-async[tango]" python -m pip install --no-deps \ - "tango-pyaml @ git+https://github.com/python-accelerator-middle-layer/tango-pyaml.git" - python -c "import tango; import tango.pyaml" + "tango-pyaml @ git+https://github.com/python-accelerator-middle-layer/tango-pyaml.git" \ + "pyaml-cs-oa @ git+https://github.com/python-accelerator-middle-layer/pyaml-cs-oa.git" + python -c "import tango; import tango.pyaml; import pyaml_cs_oa" - name: Log in to GitLab registry if: ${{ env.DT4ACC_REGISTRY_USER != '' && env.DT4ACC_REGISTRY_PASSWORD != '' }} diff --git a/tests/integration/data/fodo_1gev_6d_pyaml-oa.yaml b/tests/integration/data/fodo_1gev_6d_pyaml-oa.yaml new file mode 100644 index 000000000..a7497f3e0 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d_pyaml-oa.yaml @@ -0,0 +1,785 @@ +type: pyaml.accelerator +facility: Synchrotron SOLEIL +machine: sr +data_folder: /data/store +energy: 1000000000.0 +simulators: +- type: pyaml.lattice.simulator + lattice: fodo_1gev_6d.m + name: design + linker: + type: pyaml.lattice.attribute_linker + attribute_name: UUID +controls: +- type: pyaml_cs_oa.controlsystem + name: live + prefix: //127.0.0.1:10000/ + catalog: fodo_1gev_6d_pyaml_catalogs-oa.yaml +arrays: +- type: pyaml.arrays.magnet + name: QF_001 + elements: + - QF_001_f2013521b99e4a76bed1db7ec67464b0 +- type: pyaml.arrays.element + name: Cell1 + elements: + - QF_001_f2013521b99e4a76bed1db7ec67464b0 + - SF_001_f934c7cf2c704132acfce86bc2419e36 + - QD_001_15812e1906ee4bc7b94abb8ccd910f5b + - SD_001_4e39bd9617e7428486da49e4b5cc3981 +- type: pyaml.arrays.magnet + name: SF_001 + elements: + - SF_001_f934c7cf2c704132acfce86bc2419e36 +- type: pyaml.arrays.magnet + name: QD_001 + elements: + - QD_001_15812e1906ee4bc7b94abb8ccd910f5b +- type: pyaml.arrays.magnet + name: SD_001 + elements: + - SD_001_4e39bd9617e7428486da49e4b5cc3981 +- type: pyaml.arrays.magnet + name: QF_002 + elements: + - QF_002_d8a6e63c07c94aed87878d113cf22194 +- type: pyaml.arrays.element + name: Cell2 + elements: + - QF_002_d8a6e63c07c94aed87878d113cf22194 + - SF_002_f7c48af5504649a09b8e9434b2509ce4 + - QD_002_c212a1d7ea41484f925303959213cc32 + - SD_002_178b0b0cfcc046c6ac9a1eac2328963e +- type: pyaml.arrays.magnet + name: SF_002 + elements: + - SF_002_f7c48af5504649a09b8e9434b2509ce4 +- type: pyaml.arrays.magnet + name: QD_002 + elements: + - QD_002_c212a1d7ea41484f925303959213cc32 +- type: pyaml.arrays.magnet + name: SD_002 + elements: + - SD_002_178b0b0cfcc046c6ac9a1eac2328963e +- type: pyaml.arrays.magnet + name: QF_003 + elements: + - QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 +- type: pyaml.arrays.element + name: Cell3 + elements: + - QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 + - SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 + - QD_003_ad775f317e7b4408a72e09c7db4236ad + - SD_003_63a3ec9ceeef453f8e793acc437ce116 +- type: pyaml.arrays.magnet + name: SF_003 + elements: + - SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 +- type: pyaml.arrays.magnet + name: QD_003 + elements: + - QD_003_ad775f317e7b4408a72e09c7db4236ad +- type: pyaml.arrays.magnet + name: SD_003 + elements: + - SD_003_63a3ec9ceeef453f8e793acc437ce116 +- type: pyaml.arrays.magnet + name: QF_004 + elements: + - QF_004_ce31bb358fad4cc7aadb86711031acd0 +- type: pyaml.arrays.element + name: Cell4 + elements: + - QF_004_ce31bb358fad4cc7aadb86711031acd0 + - SF_004_faa5bb6858e64051a54f4f01340684e6 + - QD_004_82625fab961945c0aba57174ebcbf51f + - SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 +- type: pyaml.arrays.magnet + name: SF_004 + elements: + - SF_004_faa5bb6858e64051a54f4f01340684e6 +- type: pyaml.arrays.magnet + name: QD_004 + elements: + - QD_004_82625fab961945c0aba57174ebcbf51f +- type: pyaml.arrays.magnet + name: SD_004 + elements: + - SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 +- type: pyaml.arrays.magnet + name: QF_005 + elements: + - QF_005_d812a0f116044852a2dfc809ca0b87bf +- type: pyaml.arrays.element + name: Cell5 + elements: + - QF_005_d812a0f116044852a2dfc809ca0b87bf + - SF_005_ab16d309e1e341e58d7ae1598098bb69 + - QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 + - SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe +- type: pyaml.arrays.magnet + name: SF_005 + elements: + - SF_005_ab16d309e1e341e58d7ae1598098bb69 +- type: pyaml.arrays.magnet + name: QD_005 + elements: + - QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 +- type: pyaml.arrays.magnet + name: SD_005 + elements: + - SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe +- type: pyaml.arrays.magnet + name: QF_006 + elements: + - QF_006_d39cefd95c88492885796863d4df1b68 +- type: pyaml.arrays.element + name: Cell6 + elements: + - QF_006_d39cefd95c88492885796863d4df1b68 + - SF_006_09d95d77b39a463283b0660c4478c409 + - QD_006_49e8c0b7e66348338865c77d9317c6bf + - SD_006_284911364f3c44b2abdc13acb2df46b3 +- type: pyaml.arrays.magnet + name: SF_006 + elements: + - SF_006_09d95d77b39a463283b0660c4478c409 +- type: pyaml.arrays.magnet + name: QD_006 + elements: + - QD_006_49e8c0b7e66348338865c77d9317c6bf +- type: pyaml.arrays.magnet + name: SD_006 + elements: + - SD_006_284911364f3c44b2abdc13acb2df46b3 +- type: pyaml.arrays.magnet + name: QF_007 + elements: + - QF_007_7414601f613f4115b9fe0b78eceaa2ce +- type: pyaml.arrays.element + name: Cell7 + elements: + - QF_007_7414601f613f4115b9fe0b78eceaa2ce + - SF_007_b3fa2def44a24425a5ad414abc5bbca1 + - QD_007_79fa1ac91a7f43eda443200923990327 + - SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 +- type: pyaml.arrays.magnet + name: SF_007 + elements: + - SF_007_b3fa2def44a24425a5ad414abc5bbca1 +- type: pyaml.arrays.magnet + name: QD_007 + elements: + - QD_007_79fa1ac91a7f43eda443200923990327 +- type: pyaml.arrays.magnet + name: SD_007 + elements: + - SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 +- type: pyaml.arrays.magnet + name: QF_008 + elements: + - QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea +- type: pyaml.arrays.element + name: Cell8 + elements: + - QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea + - SF_008_00a14620b0a5428b821ddb84d2639e5c + - QD_008_1cb9b3401b644658908260616570424d + - SD_008_3b849a66bca1453cac95fa0ccba58166 +- type: pyaml.arrays.magnet + name: SF_008 + elements: + - SF_008_00a14620b0a5428b821ddb84d2639e5c +- type: pyaml.arrays.magnet + name: QD_008 + elements: + - QD_008_1cb9b3401b644658908260616570424d +- type: pyaml.arrays.magnet + name: SD_008 + elements: + - SD_008_3b849a66bca1453cac95fa0ccba58166 +- type: pyaml.arrays.magnet + name: QF_009 + elements: + - QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 +- type: pyaml.arrays.element + name: Cell9 + elements: + - QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 + - SF_009_6f725f3f495f428696a8419b73f22774 + - QD_009_232f21c02a03457698d31ec2d4265a02 + - SD_009_cf86e64cfe764c12b94262c41ceabbfb +- type: pyaml.arrays.magnet + name: SF_009 + elements: + - SF_009_6f725f3f495f428696a8419b73f22774 +- type: pyaml.arrays.magnet + name: QD_009 + elements: + - QD_009_232f21c02a03457698d31ec2d4265a02 +- type: pyaml.arrays.magnet + name: SD_009 + elements: + - SD_009_cf86e64cfe764c12b94262c41ceabbfb +- type: pyaml.arrays.magnet + name: QF_010 + elements: + - QF_010_94782da4ed5e4898b91d7e864140c277 +- type: pyaml.arrays.element + name: Cell10 + elements: + - QF_010_94782da4ed5e4898b91d7e864140c277 + - SF_010_f626388a02d64cfd83c9b1614982a5fb + - QD_010_56f8b47113df4cec8b2fc3ab38c69869 + - SD_010_eafccc3719664195b4107df7527a8a0a +- type: pyaml.arrays.magnet + name: SF_010 + elements: + - SF_010_f626388a02d64cfd83c9b1614982a5fb +- type: pyaml.arrays.magnet + name: QD_010 + elements: + - QD_010_56f8b47113df4cec8b2fc3ab38c69869 +- type: pyaml.arrays.magnet + name: SD_010 + elements: + - SD_010_eafccc3719664195b4107df7527a8a0a +- type: pyaml.arrays.magnet + name: QF_011 + elements: + - QF_011_b575ed5454c54128b2ed3d6b7e64ddad +- type: pyaml.arrays.element + name: Cell11 + elements: + - QF_011_b575ed5454c54128b2ed3d6b7e64ddad + - SF_011_bd73fc4fbc0640efb117cac154b34c33 + - QD_011_ae7b2c76f21b429c962ff3c33a38cd70 + - SD_011_773d914fde034e8697ac966f74ca0611 +- type: pyaml.arrays.magnet + name: SF_011 + elements: + - SF_011_bd73fc4fbc0640efb117cac154b34c33 +- type: pyaml.arrays.magnet + name: QD_011 + elements: + - QD_011_ae7b2c76f21b429c962ff3c33a38cd70 +- type: pyaml.arrays.magnet + name: SD_011 + elements: + - SD_011_773d914fde034e8697ac966f74ca0611 +- type: pyaml.arrays.magnet + name: QF_012 + elements: + - QF_012_cb52fb6f374840b0a50180a089da49d1 +- type: pyaml.arrays.element + name: Cell12 + elements: + - QF_012_cb52fb6f374840b0a50180a089da49d1 + - SF_012_02daf05ef4ab46ea86bdb3be90162251 + - QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 + - SD_012_ff9262ea95744358b360235d7a459cec +- type: pyaml.arrays.magnet + name: SF_012 + elements: + - SF_012_02daf05ef4ab46ea86bdb3be90162251 +- type: pyaml.arrays.magnet + name: QD_012 + elements: + - QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 +- type: pyaml.arrays.magnet + name: SD_012 + elements: + - SD_012_ff9262ea95744358b360235d7a459cec +- type: pyaml.arrays.magnet + name: QF_013 + elements: + - QF_013_2793a62cd78744c9ab4ca5e2843a72a2 +- type: pyaml.arrays.element + name: Cell13 + elements: + - QF_013_2793a62cd78744c9ab4ca5e2843a72a2 + - SF_013_4532d63397d644d28e1af1a480a60c07 + - QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 + - SD_013_ef033612a3274ef3ab886afd81614dca +- type: pyaml.arrays.magnet + name: SF_013 + elements: + - SF_013_4532d63397d644d28e1af1a480a60c07 +- type: pyaml.arrays.magnet + name: QD_013 + elements: + - QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 +- type: pyaml.arrays.magnet + name: SD_013 + elements: + - SD_013_ef033612a3274ef3ab886afd81614dca +- type: pyaml.arrays.magnet + name: QF_014 + elements: + - QF_014_c09c7e604b3a41fa818b44d04c844b25 +- type: pyaml.arrays.element + name: Cell14 + elements: + - QF_014_c09c7e604b3a41fa818b44d04c844b25 + - SF_014_bf4393ec53954372bd5e4f140491465b + - QD_014_62633bc5afcd4fc9a19de70a983baa5c + - SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 +- type: pyaml.arrays.magnet + name: SF_014 + elements: + - SF_014_bf4393ec53954372bd5e4f140491465b +- type: pyaml.arrays.magnet + name: QD_014 + elements: + - QD_014_62633bc5afcd4fc9a19de70a983baa5c +- type: pyaml.arrays.magnet + name: SD_014 + elements: + - SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 +- type: pyaml.arrays.magnet + name: QF_015 + elements: + - QF_015_63634bfdccc44de586db6ee28071ccb4 +- type: pyaml.arrays.element + name: Cell15 + elements: + - QF_015_63634bfdccc44de586db6ee28071ccb4 + - SF_015_a988680835664d109306ad1694a48382 + - QD_015_b2cc0d3ab8f741729a7abf3d9426a958 + - SD_015_8b7f143df262464e9f5c1eae4b83ce14 +- type: pyaml.arrays.magnet + name: SF_015 + elements: + - SF_015_a988680835664d109306ad1694a48382 +- type: pyaml.arrays.magnet + name: QD_015 + elements: + - QD_015_b2cc0d3ab8f741729a7abf3d9426a958 +- type: pyaml.arrays.magnet + name: SD_015 + elements: + - SD_015_8b7f143df262464e9f5c1eae4b83ce14 +- type: pyaml.arrays.magnet + name: QF_016 + elements: + - QF_016_965422d59ef3488f84c68f5ecaee6c6b +- type: pyaml.arrays.element + name: Cell16 + elements: + - QF_016_965422d59ef3488f84c68f5ecaee6c6b + - SF_016_e67c83cfbce2433f9152de49f928d25d + - QD_016_63fce39354a946818c2bfd76adb61760 + - SD_016_626878061df544a08c4c061e57a4e3a1 +- type: pyaml.arrays.magnet + name: SF_016 + elements: + - SF_016_e67c83cfbce2433f9152de49f928d25d +- type: pyaml.arrays.magnet + name: QD_016 + elements: + - QD_016_63fce39354a946818c2bfd76adb61760 +- type: pyaml.arrays.magnet + name: SD_016 + elements: + - SD_016_626878061df544a08c4c061e57a4e3a1 +devices: +- type: pyaml.magnet.quadrupole + name: QF_001_f2013521b99e4a76bed1db7ec67464b0 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN01-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_001_f934c7cf2c704132acfce86bc2419e36 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN01-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_001_15812e1906ee4bc7b94abb8ccd910f5b + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN01-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_001_4e39bd9617e7428486da49e4b5cc3981 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN01-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_002_d8a6e63c07c94aed87878d113cf22194 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN02-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_002_f7c48af5504649a09b8e9434b2509ce4 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN02-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_002_c212a1d7ea41484f925303959213cc32 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN02-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_002_178b0b0cfcc046c6ac9a1eac2328963e + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN02-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_003_d6bf77b8f23b45e0b1e96bb88f7b3d40 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN03-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_003_bd75202a28b243d0bc604fa6e8ad0dd2 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN03-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_003_ad775f317e7b4408a72e09c7db4236ad + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN03-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_003_63a3ec9ceeef453f8e793acc437ce116 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN03-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_004_ce31bb358fad4cc7aadb86711031acd0 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN04-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_004_faa5bb6858e64051a54f4f01340684e6 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN04-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_004_82625fab961945c0aba57174ebcbf51f + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN04-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_004_3e0e59ac94f945f2be40eccc30f3a2d3 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN04-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_005_d812a0f116044852a2dfc809ca0b87bf + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN05-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_005_ab16d309e1e341e58d7ae1598098bb69 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN05-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_005_03b6d72e666d4632b6e9a3c2b15ceca7 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN05-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_005_1e16f88b09834fd6bd6cf9ef7de62dbe + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN05-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_006_d39cefd95c88492885796863d4df1b68 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN06-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_006_09d95d77b39a463283b0660c4478c409 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN06-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_006_49e8c0b7e66348338865c77d9317c6bf + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN06-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_006_284911364f3c44b2abdc13acb2df46b3 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN06-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_007_7414601f613f4115b9fe0b78eceaa2ce + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN07-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_007_b3fa2def44a24425a5ad414abc5bbca1 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN07-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_007_79fa1ac91a7f43eda443200923990327 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN07-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_007_3b05e519bdcd4fc4b3b8dc42c2c1cb55 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN07-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_008_b3d3db8e1c9e4e8c9eb2846730bd81ea + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN08-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_008_00a14620b0a5428b821ddb84d2639e5c + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN08-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_008_1cb9b3401b644658908260616570424d + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN08-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_008_3b849a66bca1453cac95fa0ccba58166 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN08-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_009_441bf7bdfe9c443c8a55c1a58cb1caf5 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN09-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_009_6f725f3f495f428696a8419b73f22774 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN09-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_009_232f21c02a03457698d31ec2d4265a02 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN09-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_009_cf86e64cfe764c12b94262c41ceabbfb + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN09-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_010_94782da4ed5e4898b91d7e864140c277 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN10-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_010_f626388a02d64cfd83c9b1614982a5fb + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN10-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_010_56f8b47113df4cec8b2fc3ab38c69869 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN10-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_010_eafccc3719664195b4107df7527a8a0a + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN10-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_011_b575ed5454c54128b2ed3d6b7e64ddad + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN11-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_011_bd73fc4fbc0640efb117cac154b34c33 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN11-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_011_ae7b2c76f21b429c962ff3c33a38cd70 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN11-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_011_773d914fde034e8697ac966f74ca0611 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN11-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_012_cb52fb6f374840b0a50180a089da49d1 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN12-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_012_02daf05ef4ab46ea86bdb3be90162251 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN12-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_012_29f2185aa29a4c02be3bbfdd5bad13e3 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN12-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_012_ff9262ea95744358b360235d7a459cec + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN12-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_013_2793a62cd78744c9ab4ca5e2843a72a2 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN13-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_013_4532d63397d644d28e1af1a480a60c07 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN13-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_013_03843b2e6ee24e16aa6572f5cb18f4a8 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN13-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_013_ef033612a3274ef3ab886afd81614dca + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN13-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_014_c09c7e604b3a41fa818b44d04c844b25 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN14-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_014_bf4393ec53954372bd5e4f140491465b + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN14-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_014_62633bc5afcd4fc9a19de70a983baa5c + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN14-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_014_78a18b94b6f1422fb69dbcbd2ae90d67 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN14-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_015_63634bfdccc44de586db6ee28071ccb4 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN15-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_015_a988680835664d109306ad1694a48382 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN15-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_015_b2cc0d3ab8f741729a7abf3d9426a958 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN15-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_015_8b7f143df262464e9f5c1eae4b83ce14 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN15-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QF_016_965422d59ef3488f84c68f5ecaee6c6b + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN16-AR/EM-QP/QF.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SF_016_e67c83cfbce2433f9152de49f928d25d + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN16-AR/EM-SX/SF.01/magnetic_strength +- type: pyaml.magnet.quadrupole + name: QD_016_63fce39354a946818c2bfd76adb61760 + model: + type: pyaml.magnet.identity_model + unit: 1/m + physics: AN16-AR/EM-QP/QD.01/magnetic_strength +- type: pyaml.magnet.sextupole + name: SD_016_626878061df544a08c4c061e57a4e3a1 + model: + type: pyaml.magnet.identity_model + unit: 1/m**2 + physics: AN16-AR/EM-SX/SD.01/magnetic_strength +- type: pyaml.rf.rf_plant + name: RF + masterclock: simulator/ringsimulator/ringsimulator/reference_frequency + transmitters: + - type: pyaml.rf.rf_transmitter + name: RFTRA + cavities: [RF_001_cc245d84ca2b4ba9b54051069a4cfb8f] + harmonic: 1 + distribution: 1 + voltage: simulator/ringsimulator/ringsimulator/voltage +- type: pyaml.diagnostics.tune_monitor + name: BETATRON_TUNE + tune_h: simulator/ringsimulator/ringsimulator/hor + tune_v: simulator/ringsimulator/ringsimulator/vert diff --git a/tests/integration/data/fodo_1gev_6d_pyaml_catalogs-oa.yaml b/tests/integration/data/fodo_1gev_6d_pyaml_catalogs-oa.yaml new file mode 100644 index 000000000..6362d50e9 --- /dev/null +++ b/tests/integration/data/fodo_1gev_6d_pyaml_catalogs-oa.yaml @@ -0,0 +1,476 @@ +type: pyaml_cs_oa.static_catalog +entries: +- type: pyaml_cs_oa.static_catalog_entry + key: AN01-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN01-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN01-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN01-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN01-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN01-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN01-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN01-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN02-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN02-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN02-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN02-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN02-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN02-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN02-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN02-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN03-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN03-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN03-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN03-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN03-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN03-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN03-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN03-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN04-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN04-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN04-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN04-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN04-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN04-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN04-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN04-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN05-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN05-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN05-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN05-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN05-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN05-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN05-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN05-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN06-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN06-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN06-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN06-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN06-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN06-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN06-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN06-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN07-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN07-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN07-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN07-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN07-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN07-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN07-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN07-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN08-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN08-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN08-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN08-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN08-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN08-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN08-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN08-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN09-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN09-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN09-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN09-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN09-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN09-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN09-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN09-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN10-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN10-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN10-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN10-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN10-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN10-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN10-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN10-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN11-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN11-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN11-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN11-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN11-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN11-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN11-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN11-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN12-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN12-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN12-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN12-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN12-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN12-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN12-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN12-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN13-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN13-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN13-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN13-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN13-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN13-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN13-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN13-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN14-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN14-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN14-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN14-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN14-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN14-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN14-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN14-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN15-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN15-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN15-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN15-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN15-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN15-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN15-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN15-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN16-AR/EM-QP/QF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN16-AR/EM-QP/QF.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN16-AR/EM-SX/SF.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN16-AR/EM-SX/SF.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: AN16-AR/EM-QP/QD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN16-AR/EM-QP/QD.01/magnetic_strength + class: TangoAtt + unit: 1/m +- type: pyaml_cs_oa.static_catalog_entry + key: AN16-AR/EM-SX/SD.01/magnetic_strength + device: + type: pyaml_cs_oa.tangoAtt + attribute: AN16-AR/EM-SX/SD.01/magnetic_strength + class: TangoAtt + unit: 1/m**2 +- type: pyaml_cs_oa.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/reference_frequency + device: + type: pyaml_cs_oa.tangoAtt + attribute: simulator/ringsimulator/ringsimulator/reference_frequency + class: TangoAtt + unit: kHz +- type: pyaml_cs_oa.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/voltage + device: + type: pyaml_cs_oa.tangoAtt + attribute: simulator/ringsimulator/ringsimulator/voltage + class: TangoAtt + unit: V +- type: pyaml_cs_oa.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/hor + device: + type: pyaml_cs_oa.tangoAtt + attribute: simulator/ringsimulator/ringsimulator/hor + class: TangoAtt +- type: pyaml_cs_oa.static_catalog_entry + key: simulator/ringsimulator/ringsimulator/vert + device: + type: pyaml_cs_oa.tangoAtt + attribute: simulator/ringsimulator/ringsimulator/vert + class: TangoAtt diff --git a/tests/integration/test_dt4acc_twin_smoke.py b/tests/integration/test_dt4acc_twin_smoke.py index b2ffda7d7..f5d36bcad 100644 --- a/tests/integration/test_dt4acc_twin_smoke.py +++ b/tests/integration/test_dt4acc_twin_smoke.py @@ -17,16 +17,19 @@ ] +def _readback_value(device_access): + return float(device_access.readback()) + + @pytest.mark.parametrize( "config_file", [ Path(__file__).parent / "data" / "fodo_1gev_6d_pyaml.yaml", + Path(__file__).parent / "data" / "fodo_1gev_6d_pyaml-oa.yaml", ], - ids=["fodo_1gev_6d_pyaml.yaml"], + ids=["tango-pyaml", "pyaml-cs-oa"], ) def test_dt4acc_twin_accelerator_instantiates_and_reads_live_values(config_file: Path): - from tango.pyaml.attribute import ConfigModel as AttributeConfigModel - from pyaml.accelerator import Accelerator accelerator = Accelerator.load(str(config_file)) @@ -36,15 +39,13 @@ def test_dt4acc_twin_accelerator_instantiates_and_reads_live_values(config_file: accelerator.live.get_rf_plant("RF") - reference_frequency = accelerator.live.get_device_access(RF_REFERENCE_FREQUENCY).readback().value + reference_frequency = _readback_value(accelerator.live.get_device_access(RF_REFERENCE_FREQUENCY)) assert np.isfinite(reference_frequency), f"RF reference frequency is not finite: {reference_frequency!r}" assert reference_frequency > 0.0, f"RF reference frequency should be positive, got {reference_frequency!r}" accelerator.live.get_magnet(QF_001) - magnetic_strength = ( - accelerator.live.get_device_access(AttributeConfigModel(attribute=QF_001_STRENGTH, unit="1/m")).readback().value - ) + magnetic_strength = _readback_value(accelerator.live.get_device_access(QF_001_STRENGTH)) assert np.isfinite(magnetic_strength), f"{QF_001} magnetic strength is not finite: {magnetic_strength!r}" assert magnetic_strength > 0.0, f"{QF_001} magnetic strength should be positive, got {magnetic_strength!r}"