A standardized lattice format for particle accelerators
Project description
LAURA: Lattice Architecture for a Unified Representation of Accelerators
LAURA is a Python package for describing, simulating, and controlling particle accelerator lattices. It provides a standardized, extensible data model for elements, sections, layouts, and full machine models.
Architecture Overview
LAURA organizes accelerator elements using a hierarchical structure:
Element Structure
- baseElement: Core identification (name, hardware_class, hardware_type, machine_area)
- Element: Extends with simulation, controls, electrical, manufacturer info
- PhysicalBaseElement: Adds position, rotation, length, error, survey
Lattice Structure
- ElementList: Container for elements
- SectionLattice: Ordered list of elements (a section of the beamline)
- MachineLayout: Sequence of sections (a full beam path)
- MachineModel: All layouts, sections, and elements (the full accelerator)
Quick Examples
Create a Basic Element
from laura.models.element import baseElement
element = baseElement(
name="QUAD-01",
hardware_class="Magnet",
hardware_type="Quadrupole",
machine_area="LINAC-1"
)
print(element.name) # "QUAD-01"
Element with Physical Properties
from laura.models.element import PhysicalBaseElement
from laura.models.physical import PhysicalElement, Position
cavity = PhysicalBaseElement(
name="CAV-01",
hardware_class="RF",
hardware_type="Cavity",
machine_area="LINAC-1",
physical=PhysicalElement(
length=1.0,
middle=Position(x=0, y=0, z=5.0)
)
)
print(cavity.physical.length) # 1.0
Create a Section Lattice
from laura.models.elementList import SectionLattice, ElementList
section = SectionLattice(
name="INJECTOR",
order=["BPM-01", "QUAD-01"],
elements=ElementList(elements={
"BPM-01": element,
"QUAD-01": cavity
})
)
print(section.names) # ["BPM-01", "QUAD-01"]
Build a Machine Layout
from laura.models.elementList import MachineLayout
layout = MachineLayout(
name="MainBeamline",
sections={"INJECTOR": section}
)
print(layout.names) # ["INJECTOR"]
Full Machine Model
from laura.models.elementList import MachineModel
model = MachineModel(
elements={"QUAD-01": element, "CAV-01": cavity}
)
print(list(model.sections.keys())) # ["LINAC-1"]
Translator Module
LAURA includes a translator system for exporting accelerator models to various simulation codes, such as ASTRA, GPT, Elegant, CSRTrack, Ocelot, Xsuite, Wake-T, and Genesis.
- Translate individual elements, sections, layouts, or full machine models.
- Export to code-specific formats and objects.
- Automatically manage drift spaces, field maps, and code-specific configuration.
Example: Export a section to Elegant and Ocelot
from laura.translator.converters.section import SectionLatticeTranslator
translator = SectionLatticeTranslator.from_section(section)
translator.directory = "./output"
elegant_string = translator.to_elegant(charge=1e-9)
ocelot_lattice = translator.to_ocelot(save=True)
See the Translator documentation for details and more examples.
Features
- Hierarchical lattice structure: elements → sections → layouts → machine
- Flexible element definition: physical, simulation, controls, electrical, manufacturer
- Extensible API: add new element types and metadata
- Simulation & controls integration: store simulation parameters and control variables
- Export to simulation codes via the Translator module
Installation
Install LAURA from PyPI:
pip install laura-accelerator
Or add to your requirements.txt:
laura-accelerator
Documentation
Contributing
Issues and pull requests are welcome! See GitHub Issues.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file laura_accelerator-0.2.0.tar.gz.
File metadata
- Download URL: laura_accelerator-0.2.0.tar.gz
- Upload date:
- Size: 644.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ad093c80a776b2fd8f9ae01b6a3f0f2aa7f28b817c0b2668bb794dd381faf38
|
|
| MD5 |
3eb133e449566c8397095016de9185cb
|
|
| BLAKE2b-256 |
0857d0a275aeb973bec4a8f35becdd4d81ae37a6e3c80bc34b4f2e55996ba0e8
|
File details
Details for the file laura_accelerator-0.2.0-py3-none-any.whl.
File metadata
- Download URL: laura_accelerator-0.2.0-py3-none-any.whl
- Upload date:
- Size: 306.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c32c8591a37daa316c29afbeae0a5ed9411f56908bba35d5c304b200cbb0dc18
|
|
| MD5 |
331097b7beee9822f419a561311d792b
|
|
| BLAKE2b-256 |
596ee7abf3ac685d801eb3721bc486b20c38689ad52bf19b4ee846072b5b1568
|