Skip to content

0.0.2

Choose a tag to compare

@hillaper hillaper released this 07 Aug 06:46
· 6 commits to main since this release

Rela²x 0.0.2 — release notes

Bug fixes, new features, type hints and a consistent naming scheme.

Note on basis ordering: the most significant fixes concern the sorting of the product
operator basis. The order in which the basis operators appear therefore differs from 0.0.1,
and from the figures in the publication. The matrix elements themselves are unaffected.

Added

  • Cartesian product operator basis, selected with basis='C' (spin-1/2 systems only).
  • op_decomposition for analytical decomposition of an operator in a given basis.
  • basis_indices attribute on RelaxationSuperoperator, exposing the basis operator indices
    used for rate lookups, sorting and filtering. Each entry is a tuple holding one item per spin
    that carries something other than the identity: (spin index, l, q) triples for the spherical
    tensor basis, (spin index, direction) pairs for the Cartesian basis.
  • The electron ('e') in the isotope list.
  • Lv_amplitude, op_S_symbol and product_op_S_symbol.

Fixed

  • Basis sorting. Three independent defects: projections were compared as strings, misordering
    every operator with |q| >= 2; the sorting passes were unstable, so the documented key hierarchy
    was not actually produced; and the 'v2' scheme sorted over up to nine spins regardless of the
    system size, scrambling the within-block ordering of three-spin systems.
  • rate() silently masked failed basis lookups.

Changed

  • Spectral density subscripts now print as lq rather than (l, q).
  • J(w) = J(-w) is imposed, so frequency arguments no longer carry absolute values.
  • Type hints throughout, with one argument per line.
  • Visualization routines deduplicated.
  • Documentation pass over the module, the example notebooks and the README.

Renamed

API-breaking. The 0.0.1 code remains available in the git history.

0.0.1 0.0.2
R_object_in_T_basis R_object_in_product_operator_basis
KroneckerProduct Kronecker_product
T_symbol_spin_order, T_symbol_coherence_order, T_symbol_type, T_symbol_Nth_spin_projection T_index_spin_order, T_index_coherence_order, T_index_type, T_index_spin_projection
T_symbol_list_index basis_index_list_index
full_sort_T_product_basis, and the individual sorting passes sort_T_product_basis, together with T_basis_sort_keys
T_basis_split_to_coherence_orders removed; use R.filter('c', ...)

The T_symbol_* functions determined the properties of a basis operator by reading its printed
symbol. The T_index_* functions that replace them read the basis operator indices instead.

In total, 14 public names were removed and 22 added relative to 0.0.1.

Erratum to the publication

The irreducible spherical tensor components printed at the end of the publication (P. Hilla, J. Vaara, J. Magn. Reson., 2025) have errors. However, the implementation in Rela²x is and has always been correct.