Skip to content

Releases: hillaper/Rela2x

0.0.3

Choose a tag to compare

@hillaper hillaper released this 14 Aug 12:56

Adds the coherent part of the dynamics — the Hamiltonian superoperator H, covering the Zeeman
interaction (including chemical shift) and J-coupling — and combines it with the existing
relaxation superoperator R into the full Liouvillian L = −i[H, ·] − R, the
generator of the complete equation of motion. Accompanied by a package reorganisation and general
updates.

See the README for full details.

0.0.2

Choose a tag to compare

@hillaper hillaper released this 07 Aug 06:46

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.

Rela2x 0.0.1

Choose a tag to compare

@hillaper hillaper released this 14 Mar 07:38
c490914

Initial release of the Rela2x program described in:

P. Hilla, J. Vaara, Rela²x: Analytic and automatic NMR relaxation theory, J. Magn. Reson., 2025;
https://doi.org/10.1016/j.jmr.2024.107828

Major updates are planned for upcoming versions.