diff --git a/VERSION b/VERSION index 0c89fc927e..cc868b62c3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.0.0 \ No newline at end of file +4.0.1 \ No newline at end of file diff --git a/documentation/release_notes/v4.0.1.md b/documentation/release_notes/v4.0.1.md new file mode 100644 index 0000000000..d18d61e594 --- /dev/null +++ b/documentation/release_notes/v4.0.1.md @@ -0,0 +1,18 @@ +## Release Notes v4.0.1 + +Minor release, fixing some bugs, and dealing with +some optimization issues identified after release. + +## Bugs fixed: + The details of the fixed issues are available on + [GitHub](https://github.com/pace-neutrons/Horace/issues/) + - #1731 invalid error reporting in `load_spe`. + - #1735 Issues with `SymopGeneral` in `cut_sym`. + - #1745 Missing `dnd` constructor used by `spinW` + and `spinW` integration tests. + - #1748 Fixed `SymopIdentify` taking substantial + time while doing cut without symmetries. + - #1753 `horace_mex` and issues with `cpp_communicator`. + - #1758 `horace_install` installs `spinW` integration on request. + - #1762 `horace_demo_script` is not working + due to reference to removed `fit_sqw` \ No newline at end of file diff --git a/documentation/release_notes/v4.0.md b/documentation/release_notes/v4.0.md index a0f97040b9..483f55007b 100644 --- a/documentation/release_notes/v4.0.md +++ b/documentation/release_notes/v4.0.md @@ -1,16 +1,82 @@ ## Release Notes v4.0 -This is major new release, providing internal changes to the sqw/dnd objects, necessary for using generic projection - -## Breaking changes - - Renamed `fake_sqw` to `dummy_sqw` - -## Critical changes - - `DnD` objects are fully refactored and constructed from `axes_block` class (property `axes`), `aProjection` class (property `proj`) and three datasets, namely `s,e` and `npix` containing signal, error and number of pixels contributed into a bin, as before. `axes_block` defines binning of these datasets and their physical meaning, while projection defines the transformation from pixels coordinate system to the coordinate system, defined by `axes_block`. Old interface (`iax,pax,iint,p etc.`) left for compatibility with existing algorithms and set as read-only interface. - - `multifit` and `tobyfit` are now able to be run in parallel through the `hpc_config` `parallel_multifit` setting. - - `data_sqw_dnd` class (property `data` of `sqw` object) have been removed from `sqw` object and replaced by appropriate dimension `dnd` object. Pixels data (`PixelData` class), which were the property of `data_sqw_dnd` class are now independent property of `sqw` object (property `pix`). Old and refactored `data_sqw_dnd` class left for compatibility with old `sqw` files, allowing the loading of old data from `.mat` files. - - Added benchmarking features under the `_benchmarking` folder which will run on CI or can be run by users using either the `benchmark_horace` script or by running individual benchmark functions. Documentation included in SMG 20 - - Spawning parallel jobs with Herbert/C++ MPI no longer spawns inappropriate MATLAB threads oversubscribing the machine and causing slowdown. - - Slurm cluster handling has been rewritten to deal appropriately with multiple node requests and automatically handle threading. - - `threads` and `parallel_workers` have migrated from `hpc_config` to `parallel_config` - - `herbert_config` has been deprecated and features of `herbert_config` have migrated to `hor_config` +This is version 4 of Horace, which contains major changes to the Horace code +produced within 3-years of PACE project development. +It is major upgrade from the Horace version 3.6. + +Draft versions of these changes were used at ISIS in cycles: 2024/1&2 + +## Major changes. + +As a major part of the new features we would like to emphasise the fully restructured sqw objects. +In particular they provide the following benefits: + +- Allows use of different projections: images (`dnd`) in different coordinate systems. + - Now provides cuts using spherical and cylindrical projections with more coming. + +- On-file sqws for cases where they do not fit in memory, with a unified interface + (no need to learn anything new, for big jobs!). + +- New symmetry operations and ways of symmetrizing sqw objects. + - Multiple reductions in a single `symmetrize_sqw` call, + rotationally symmetric reduction. + - Symmetrised cuts which can be more efficient and more general. + +- Extended parallel capabilities + - New parallel algorithms for `sqw_eval` and fitting. + +- New more efficient and flexible binary format. + - **NOTE:** Horace can read previous versions of sqw files, however, sqw + files produced by Horace v4+ can not be read by previous versions of Horace. + + +## Breaking Changes +- Renamed `fake_sqw` to `dummy_sqw` + +- Fully refactored `SQW` objects: + - `data_sqw_dnd` class (property `data` of `sqw` object) has been removed from + `sqw` object and replaced by appropriately dimensioned `dnd` object. + - Pixel data (`PixelData` class), which were a property of the `data_sqw_dnd` + class are now an independent property of `sqw` object (`pix` property). + - Old and refactored `data_sqw_dnd` class left for compatibility with old + `sqw` files, allowing the loading of old data from `.mat` files. + +- Fully refactored `DnD` objects now made up of: + - `axes_block` class (`axes` property), defining binning of + these datasets and their physical meaning, + - `aProjection` class (`proj` property), defining the transformation + from pixels coordinate system to the coordinate system, defined by `axes_block`. + - and three datasets, namely `s,e` and `npix` containing signal, error and + number of pixels contributed into a bin, as before. + - **NOTE:** Old interface (`iax`, `pax`, `iint`, `p`, etc.) left for + compatibility with existing algorithms through read-only interface. + +- `multifit` and `tobyfit` can be run in parallel through + the `hpc_config` `parallel_multifit` setting. + +- Added benchmarking in the `_benchmarking` folder which will + run on CI or can be run by users using either the `benchmark_horace` + script or by running individual benchmark functions. + Documentation included in SMG 20. + +- Spawning parallel jobs with Herbert/C++ MPI no longer spawns + inappropriate MATLAB threads oversubscribing the machine + and causing slowdown. + +- Slurm cluster interface has been rewritten to deal appropriately + with multiple node requests and automatically handle threading. + +- `threads` and `parallel_workers` have migrated from + `hpc_config` to `parallel_config`. + +- `herbert_config` has been deprecated and features of + `herbert_config` have migrated to `hor_config`. + +- `fit_sqw` function have been removed in favour of + direct usage of `multifit_sqw` class. + +- More than 1,000 additional tasks making substantial additions and + improvements to algorithms and design: + refactoring and improving existing algorithms, providing + new features and making code more modular to facilitate + maintenance and future Horace development.