Skip to content

Drag & drop ML pipelines for particle accelerators.

Notifications You must be signed in to change notification settings

muonsontoast/pipelines

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

164 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipelines is a visual node-based editor designed for rapid testing of optimisation ideas in the control rooms of particle accelerator facilities. Drag and drop blocks inside the editor and connect them up to form simple or complex pipelines to achieve a range of optimisation objectives. Exploit your knowledge of the physics of a system by composing kernels to improve sample efficiency and converge sooner. Filters introduce control logic that can halt or permit the flow of information along pipelines. Every actionable block can be paused, resumed and reset at any time to offer the final say on safety to the user. Modify the name of PV blocks to match those in a machine to automatically stream values of real variables. Alternatively, create a .mat lattice file in PyAT (Python Accelerator Toolbox) and link PVs to elements and perform optimisation on a lattice, or fuse simulation with reality.

Pipelines is currently being built atop the EPICS library and aioca to interface with Diamond Light Source Process Variables (PVs), though many other facilities use EPICS and the intention is to role it out over time.

To get setup, download the github repo and install the required packages by running the following command:

pip install -r requirements.txt

Navigate to the folder where the repo is located (not inside of it) and run the following command:

python -m pipelines (optional lattice file)

Screenshot 2026-01-11 222512 Caption: Live setup on the Diamond Light Source accelerator. Real-time EPICS PVs are being streamed with aioca. In the figure, a single objective BO loop is being performed with the sum of BPM charges along a transfer line the objective to maximise. The objective is filtered through a control block that halts the signal if a separate beam position PV exceeds some user-defined threshold, which the optimiser sees as a poor result. 6 steerer magnets are supplied as decision variables for this task. The result is dumped into a save folder and timestamped.
image
image Caption: Earliest example of the pipelines editor GUI with PVs connected up to an orbit response block, run in a physics engine simulator (PyAT).