Releases: kklmn/xrt
xrt 2.0.0b0.post1
Packaging update for 2.0.0b0.
Fixes package discovery and data file inclusion issues introduced after module restructuring. No functional changes.
Release 1.6.2
xrt 2.0.0b0 — Beta release
This is the first beta release of the upcoming xrt 2.0
Version 2.0 introduces major internal refactoring aimed at improving interactivity, performance, and flexibility of simulations and visualization. The focus of this release is enabling dynamic modification of beamline components without full reinitialization and significantly improving interactive workflows in xrtQook and xrtGlow.
✨ Major changes
1. Dynamic object model and workflow improvements - The internal architecture has been refactored to support dynamic modification of objects across the framework:
- Optical elements, materials, figure errors, and plots now support dynamic property updates without requiring complete reinitialization.
- Generated beams are stored in a dictionary internally linked to optical elements.
- Optical elements and beams are addressed by UUID, simplifying renaming and object tracking.
- Propagation and visualization can now be executed directly from XML or JSON templates.
- Beamlines can be imported into Qook directly from Python scripts (may fail for complex runtime logic or custom processing steps).
2. Figure errors and surface modeling - Figure error handling has been significantly improved:
- Added dedicated classes and methods for intuitive application of Figure Errors.
- GUI controls for Figure Errors added to Qook.
- Figure errors can now be modified interactively thanks to the new dynamic object model.
3. Visualization and rendering performance - Rendering and visualization have been substantially modernized:
- Rendering migrated from legacy OpenGL to modern shader-based OpenGL.
- Significant performance improvements when rendering optical elements and modifying scene contents interactively.
- 3D geometry for optical elements is now generated at creation or modification time instead of every frame.
- Visualization propagation changed from pre-generated full propagation to interactive, segment-by-segment tracing.
- Visualization propagation moved from the Qt thread to a separate Python process, eliminating heavy calculations on the GUI CPU core.
- xrtGlow now works on macOS.
4. Interactive inspection and debugging tools - New tools have been added for inspecting live beamline state:
- Widgets for inspecting live instances of optical elements, materials, figure errors, and plots.
- Real-time tracing and visualization of applied changes.
- Elements can be selected directly in the 3D scene or from QTree widgets in Qook and Glow.
5. Data formats and interoperability
- Added JSON as an import and export format alongside XML.
- Beamline definitions can now be executed directly from template files.
6. EPICS integration - Support for EPICS has been added, enabling interactive control of beamline components through EPICS Process Variables (PVs):
- Beamline components can now be controlled interactively via EPICS PVs.
- Control is possible using standard EPICS command-line tools as well as EPICS-enabled GUIs such as Phoebus or EDM.
- Dynamic object updates allow changes applied through EPICS to be reflected immediately in propagation and visualization.
🧪 Testing focus
Feedback is particularly welcome on:
- Dynamic modification of optical elements and figure errors
- GUI responsiveness and rendering performance
- Visualization propagation behavior
- Compatibility with existing beamline scripts and workflows
- Import of existing beamlines into Qook
- macOS testing of xrtGlow
⚠️ Notes
- Importing beamlines from Python scripts may not work for complex runtime logic.
- Documentation for new workflows is still being updated.
- For now EPICS controls are only enabled in xrtGlow session, run xrtGlow with
epicsPrefixargument. For example:
myBeamline.glow(v2=True, epicsPrefix="TESTBL:")
📦 Installation
pip install xrt[all] --pre
or download the wheel from the release assets and install from file:
pip install --pre xrt[all] --find-links path-to-wheel/
Release 1.6.1
- Minor bug fixes.
- Enable custom materials in xrtQook.
- Add hyperbolic (oes.HyperbolicMirrorParam) and hyperboloid
(oes.HyperboloidCapillaryMirror) mirrors with focusing test scripts
`test_param_mirror.py` and `test_hyperboloid_tube_mirror.py`.
- Add an example for applying a slope error map to a parametric mirror
`examples/withRaycing/13_Warping/ExampleOfSlopeErrorMapToParametricMirror.py`.
- Major rebuild of the documentation on
`Read the Docs <http://xrt.readthedocs.io>`_ due to changed software
requirements on readthedocs.io.
- Add in-plane rotation to :meth:`Crystal.get_amplitude_pytte()`.
- Major update of :ref:`Tests of Materials <tests_materials>`. Add
:ref:`Bent crystals: comparison tests for pyTTE backends <tests_pytte>`.
Release 1.6.0
- Enable calculations of elastically deformed crystals on GPUs. Based on PyTTE code. Used both in ray tracing and
xrtBentXtal GUI -- a GUI for comparative GPU-based bent crystal calculations.
- Add predefined material classes in three categories: crystals, compounds and elemental. Several crystal classes also include
elastic constants needed to calculate bent crystal reflectivity.
- All OpenCL tasks can be run on a remote GPU server.
- Extend the examples of 1D- and 2D-bent crystal analyzers with elastically deformed crystal reflectivity.
- Add docs "sampling-strategies" on sampling strategies of syncrotron sources. Add an example
"Undulator radiation through rectangular aperture" that illustrates various sampling methods.
- Add user classes of optical elements to xrtQook.
- Add an example "Orbital Angular Momentum of helical undulator radiation".
- Use python properties in OEs, screens, apertures etc. to transparently set object attributes.
- Bug fixes.
Release 1.5.0
See the version history at RTFD
Release 1.4.0
Major update for the synchrotron sources module
Release 1.3.5
A bug fix release.
See the version history at RTFD
Release 1.3.4
See the version history at RTFD
Release 1.3.3
See the version history at RTFD