Skip to content

Commit

Permalink
Merge pull request #1767 from pace-neutrons/1766_bugfix_release
Browse files Browse the repository at this point in the history
The information about release 4.0.1
  • Loading branch information
abuts authored Oct 29, 2024
2 parents 6165f20 + 66fe00c commit aa5d4a5
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 15 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.0.0
4.0.1
18 changes: 18 additions & 0 deletions documentation/release_notes/v4.0.1.md
Original file line number Diff line number Diff line change
@@ -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`
94 changes: 80 additions & 14 deletions documentation/release_notes/v4.0.md
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit aa5d4a5

Please sign in to comment.