Changelog

[2.1.0] – 2026-04-24

Added

  • show_vectors option in plot_real() to toggle display of basis vector arrows (default: True).

  • real_lattice_size and reciprocal_lattice_size properties in lattice, with validated setters and on-demand lattice regeneration.

  • tqdm_disable argument in matching functions of the ewald class to control progress bar visibility (False enables tqdm).

  • AI generated test for preparation.filters module.

  • New transform_stack_to_kxky() function for explicit and efficient transformation of image stacks into kx–ky space.

Changed

  • Legend is now hidden by default in plot_real().

  • Progress bars (tqdm) in match_alpha and match_scale are disabled by default.

  • Updated default space size parameters.

  • Updated mirror_symmetry behavior in ewald: when enabled, lattice points are generated using both positive and negative Ewald azimuthal rotations (± rotation angle relative to the image azimuth).

  • Introduced clearer and more descriptive azimuth-related properties in ewald:

    • image_azimuthal_angle

    • ewald_azimuthal_angle

    • ewald_azimuthal_rotation
      These distinguish the RHEED image azimuthal orientation (typically defined with respect to high-symmetry directions such as [11-2]) from the Ewald construction rotation used for rotated lattices (e.g. √7×√7 reconstructions).

  • Improved line rendering and spot markers in plot_image().

  • Refactored kx–ky image transformations to use a shared frame-level helper function.

  • Allow to pass k_vect in transformations.

  • Rotation of images in kx–ky space is now applied only when the required azimuth/alpha information is available.

  • Removed unsafe dtype casting during rotation and improved NaN preservation.

  • Resolved type issues via explicit float32 casting.

  • Deprecated multi-image transformation via transform_image_to_kxky() in favor of explicit stack handling.

  • Updated example notebooks.

  • Renamed test_preparation.py to test_preparation_alignment.py.

Deprecated

  • Setting image_azimuthal_angle directly.
    The image azimuth is now treated as an immutable experimental reference.
    A deprecated setter is retained for backward compatibility when the image azimuth is scalar; assignments emit a DeprecationWarning and are interpreted as setting ewald_azimuthal_rotation.

  • Passing multi-image stacks to transform_image_to_kxky(); users should migrate to transform_stack_to_kxky().

Fixed

  • Corrected FCC primitive vector generation in the lattice module.

  • Fixed azimuthal_angle property handling for single images in image stacks.

  • Resolved type issues via explicit float32 casting.

  • Fixed orientation arrows in geometry figures in the documentation to use single-headed arrows for indicating the positive angular direction.

  • Fixed xarray FutureWarning related to concatenation and coordinate handling.

  • Various minor bug fixes and internal refactors.

Improved

  • Improved documentation of the geometry convention to clarify angular definitions and rotation directions.

  • Refactored high-pass filter to use vectorized xarray operations and float-based computations in image filtering.

[2.0.0] – 2025-11-25

Added

  • Added file_name and file_creation_time attributes to loaded images.

  • Added new example images for the 3D stacking notebook.

  • Added support for image stacks with alpha coordinates in conversion.image.transform_image_to_kxky.

  • Added full support for stack images in kinematics.Ewald.

Changed

  • Refactored and simplified data loading logic for maintainability.

  • Refactored RI accessors to support both 2D and 3D (stacked) images.

  • Improved profile plotting and representation to allow reduction along sx, sy, and other dimensions (including 3D stacks).

  • Updated ARHEED kx–ky transformation visuals with new example images.

  • Updated documentation for advanced kx–ky transformations using multiple (stack) images.

  • Standardized logging across core modules (module-level loggers, lazy-style messages).

  • Added documentation on logging usage and configuration (docs/source/logging.rst).

  • Updated preparation module functions for centering RHEED images and refining incident angle detection.

Removed

  • Breaking: Removed load_data_manual(). The unified load_data() now handles both automatic and manual loading (manual mode applies when no plugin is provided).

  • Breaking: Removed apply_image_center() from RI accessors.

Renamed

  • Breaking: Renamed ewald_sphere_radiusewald_radius in RI accessors for naming consistency.

  • Breaking: Replaced symbolic angle names beta and alpha with descriptive incident_angle and azimuthal_angle in the xrheed API (aliases preserved).

Split

  • Breaking: Replaced apply_image_center() with two clearer functions: set_center_manual() and set_center_auto().

[1.3.4] – 2025-09-30

  • Expose load_data and load_data_manual at the package root (xrheed.load_data) for simpler imports

  • Update documentation and examples to reflect the new recommended loading approach

  • Adopt setuptools_scm for dynamic versioning from git tags

  • Expose __version__ in package root

[1.1.2] – 2025-09-19

  • Fix quick usage in README (use xrheed.loaders)

  • Minor fixes in example notebooks

  • Update citation

[1.1.1] – 2025-09-15

  • Add load_data_manual() to load RHEED images when no plugin is available.

  • Refactor io.pyloaders.py

    • Breaking change: code using from xrheed.io import ... must now use from xrheed.loaders import ...

    • Resolves the naming conflict with Python’s standard library io and clarifies the module’s purpose (data loading only).

  • Documentation fixes and updates:

    • Updated example notebook sections.

    • Updated badges.

    • Updated plugin and xarray_accessors references in the API documentation.

[1.0.0] – 2025-09-11

First stable release of xRHEED.

  • Project is now officially public and stable.

  • Automatically uploaded to PyPI.

  • Documentation hosted on Read the Docs.

  • Zenodo DOI assigned: 10.5281/zenodo.17099752

  • No significant changes to core code since v0.5.x.

[0.5.0] – 2025-09-11

  • PyPI-ready release with automatic publishing via GitHub Actions.

  • Full Sphinx documentation with myst-nb and API reference.

  • Added .readthedocs.yaml for Read the Docs builds.

  • Updated docs/source/conf.py for autodoc, autosummary, and notebook support.

  • Updated CI workflow (ci.yml) to build docs, run tests, lint code, and publish releases.

  • Added CITATION.cff for formal citation and Zenodo DOI integration.

[0.4.0] – 2025-09-11

  • Refactored LoadRheedBase to use an abstract base class with init_subclass validation.

  • Enforced presence of required ATTRS keys in all plugins.

  • Added dsnp_arpes_bmp plugin to support BMP image loading via Pillow.

  • Implemented automatic plugin discovery in xrheed/init.py.

  • Refactored test suite to dynamically validate all supported plugins and file types.

  • Updated CONTRIBUTING.md

[0.3.0] – 2025-09-09

  • New argument: show_specular_spot available in plot_image

  • New example notebook showing how to search for lattice constant and azimuthal orientation for a given RHEED data.

  • A major update in the Ewald class including:

    • Ewald matching functions rewritten

    • Added decorator that saves the matching results to cache dill files

    • New constants

    • Type hints

    • Better docstring

[0.2.0] – 2025-09-04

  • A major update in the documentation

  • New example images

  • Polished and improved markdowns in jupyter notebooks

  • Docstring added, and API ready

  • Profile methods used for transformation now use a proper geometry sx -> ky

[0.1.0] – 2025-08-29

  • First working release with core functionality

  • Load and preprocess RHEED images

  • Generate and analyze intensity profiles

  • Overlay predicted diffraction spot positions (kinematic theory & Ewald construction)

  • Documentation with few example notebooks