kklmn/xrt
Package xrt (XRayTracer) is a python software library for ray tracing and wave propagation in x-ray regime. It is primarily meant for modeling synchrotron sources, beamlines and beamline elements.
📦 Highlights
- Added the visual beamline flow editor based on `qtpynodeeditor`.
- Fixed the beam local coordinate system transform.
- Restored static-mode operation in `xrtGlow`.
- Restored initialization from saved Glow configuration parameters.
- Updated `xrtGlow` scene import/export.
- Fixed closed-surface rendering.
- Fixed hemispheric screen rendering.
- Fixed rendering of rays inside multi-surface optical elements.
- + 7 more
📋 API Changes
- `BeamLine.glow()` now accepts `mode='dynamic'` or `mode='static'`.
- The old `v2=` argument remains temporarily supported for compatibility and emits a deprecation warning.
- Energy-based auto-alignment for `pitch` and `bragg` now accepts unit strings, for example `pitch='8 keV'`, `bragg='8000 eV'`, or `'auto'`.
- The older list form, such as `bragg=[8000]`, remains supported for compatibility and emits a deprecation warning.
Packaging update for 2.0.0b0. Fixes package discovery and data file inclusion issues introduced after module restructuring. No functional changes.
📋 Changes
- 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
📋 ✨ 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.
- + 20 more
🧪 🧪 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/`
📋 Changes
- Minor bug fixes.
- Enable custom materials in xrtQook.
- Add hyperbolic (oes.HyperbolicMirrorParam) and hyperboloid
- Add an example for applying a slope error map to a parametric mirror
- Major rebuild of the documentation on
- Add in-plane rotation to :meth:`Crystal.get_amplitude_pytte()`.
- Major update of :ref:`Tests of Materials <tests_materials>`. Add
📋 Changes
- Enable calculations of elastically deformed crystals on GPUs. Based on PyTTE code. Used both in ray tracing and
- Add predefined material classes in three categories: crystals, compounds and elemental. Several crystal classes also include
- 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
- 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.
- + 1 more
See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
Major update for the synchrotron sources module
A bug fix release. See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
Bug fixes and minor updates.
See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
See the version history at [RTFD](http://xrt.readthedocs.io/history.html#history)
