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, Cheetah, Xsuite, Wake-T, Genesis, and MAD-X (via cpymad).
- 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.
Metadata
Release files for laura-accelerator 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| laura_accelerator-1.0.4.tar.gz | 1.4 MB | Without provenance | Details for laura_accelerator-1.0.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| laura_accelerator-1.0.4-py3-none-any.whl | Python 3 | none | any | Details for laura_accelerator-1.0.4-py3-none-any.whl |
Total release size: 2.2 MB
Release files / laura_accelerator-1.0.4.tar.gz
| Download URL | laura_accelerator-1.0.4.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
60cfdbb3e12800e0975f8c93b7f2ca3482c439bda75ba93518b2b0b7c05bac70
|
|
BLAKE2b-256 checksum How to use checksums |
4a57508c69979c1d74275e2bed494a6c5288071300b8a60b9051764ced0e41d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.22
|
Release files / laura_accelerator-1.0.4-py3-none-any.whl
| Download URL | laura_accelerator-1.0.4-py3-none-any.whl |
|---|---|
| Size | 790.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d3016f3073428707c586d544b3c886f0501b2260206df4277137e6fddb74efe
|
|
BLAKE2b-256 checksum How to use checksums |
6e22f8a78f7d569b6bc7c7cb9eeab6bf556e85e6ac538948fab8b8294d930058
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.22
|
Security for laura-accelerator 1.0.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.