Skip to content

Releases: kklmn/xrt

xrt 2.0.0b0.post1

11 Feb 17:08

Choose a tag to compare

xrt 2.0.0b0.post1 Pre-release
Pre-release

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

06 Feb 21:12

Choose a tag to compare

- Enable wave propagation for two-side OEs (lenses).

- Minor fixes in help pages of xrtQook.

- HyperbolicMirrorParam enabled in xrtQook

- Fix wide angle approximation for edge radiation

xrt 2.0.0b0 — Beta release

06 Feb 16:11

Choose a tag to compare

Pre-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.

⚠️ This is a pre-release intended for testing and feedback. APIs and behavior may still change before the final release.

✨ 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 epicsPrefix argument. 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

13 Nov 15:04

Choose a tag to compare

- 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

17 Jul 17:15

Choose a tag to compare

- 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

08 Sep 14:02

Choose a tag to compare

See the version history at RTFD

Release 1.4.0

22 Sep 13:32

Choose a tag to compare

Major update for the synchrotron sources module

Release 1.3.5

27 Nov 09:42

Choose a tag to compare

A bug fix release.
See the version history at RTFD

Release 1.3.4

21 May 20:31

Choose a tag to compare

See the version history at RTFD

Release 1.3.3

11 Mar 21:14

Choose a tag to compare

See the version history at RTFD