Changelog¶
See Keep a Changelog. This project uses Semantic Versioning.
Unreleased¶
0.3.0 - 2026-09-21¶
API and Data Model Changes¶
BREAKING:
mantid_like_combination_spectranow returns a collection with one spectrum per atom instead of one per (q-point, atom). This was always the intended behaviour, but as downstream code might depend on the current behaviour we treat the bugfix as a breaking change.The return shape changes from
(n_qpts * n_atoms, n_bins)to(n_atoms, n_bins).The “qpt” line data is no longer present in the metadata as lines cover multiple q-points.
After a
.sum()or.group_by(<not qpt>)we end up in the same place as before.
Performance Improvements¶
Linear scaling with q-point count:
mantid_like_combination_spectranow accumulates per-q-point contributions as arrays and constructs the result collection once, making the function linear in q-point count (O(n)) instead of quadratic (O(n²)). In practice this drastically reduces memory usage and execution time.
0.2.0 - 2026-08-28¶
This release includes improvements to tutorial and validation workflows, and adds JSON serialization for Displacements. The main breaking change is the decoupling of cross-section weighting into an explicit apply_weights step.
API and Data Model Changes¶
Decoupled cross-section weighting from intensity calculations: Intensity calculation functions now always compute unweighted spectra (dimensionless / cross-section-free intensity units).
Removed
apply_cross_sectionsboolean parameters from intensity calculation routines.Added explicit
abinslib.util.apply_weightsfunction. Callers are now responsible for applying neutron cross-sections to unweighted spectra when desired.Spectrum metadata (
symbols,masses) is used with Euphonic’sIsotopeDataprotocol to resolve isotope cross sections, avoiding the need to passCrystalobjects into intensity routines.Corrected units handling to ensure raw spectra are cross-section-free.
New Features¶
JSON Serialization: Added
abinslib.iomodule withJsonMixin: this providesto_json,from_json,to_json_file, andfrom_json_filemethods to classes that implementto_dictandfrom_dict.Includes and validates API version and class metadata on deserialization.
This functionality is added to the
Displacementsclass.
Sample Data Management: Added
abinslib.datamodule usingpoochto fetch sample and validation data on demand from machine-readable registries inabinslib.registries. This keeps the source repository light while making realistic data conveniently available for tutorials and validation.
Documentation & Tutorials¶
Converted Mantid validation benchmarks into executable Sphinx Gallery examples (
plot_validation.py) rendered directly in the online documentation.Added tutorials illustrating TOSCA INS simulation workflows.
Configured Sphinx documentation with
furotheme,sphinx-autoapi,myst-parser, and custom styling.
Maintenance & Workflows¶
Overhauled
dev/validationworkflows usingpixiand Snakemake for hashing and generating reference validation datasets.Updated repository URLs to
https://github.com/isisneutronmuon/abINS_liband documentation tohttps://isisneutronmuon.github.io/abINS_lib.Configured Ruff linting and docstring style enforcement across the repository.
0.1.0 - 2026-07-16¶
Initial release of
abinslib.Support for 1-D and 2-D almost-isotropic and isotropic incoherent inelastic neutron-scattering intensities from harmonic phonon modes.
Integration with Euphonic 2.0 and ResINS 0.1.