\(\renewcommand\AA{\unicode{x212B}}\)

Framework Changes

Geometry

  • The Instrument Definition File syntax has been extended to provide support for a new type of topologically regular, but geometrically irregular form of 2D detectors. This new type of detector available in the IDF is known as a Structured Detector. Information on how to use this new detector type can be found in the IDF documentation.
  • The XML shape definitions have been updated to understand a hollow cylinder as a primitive shape. See How To Define Geometric Shape for more details.

Refactored PeakShape to better support arbitrary shapes.

Performance

  • ChangeBinOffset should now run faster for a MatrixWorkspace (not EventWorkspaces).
  • Applying ParameterMaps to Detectors now about 30% faster. Algorithms that involve applying ParameterMaps will see performance improvements.
  • This release saw the introduction of the StructuredDetector. This change has reduced load times via LoadInstrument from ~10minutes down to ~0.5seconds for the prospective ESS LOKI instrument. For more information on how to generate a StructuredDetector based instrument follow this link
  • The destructors for ConvexPolygon and Quadrilateral objects are now faster, especially on Linux.

CurveFitting

  • Concept page for Mantid Fitting has been added.
  • Concept page for Comparing fit minimizers has been added to provide information on the minimizers supported, and compare how well different minimizers do against different benchmark fitting problems
  • In order to guarantee a complete overlap between resolution and signal in the region of interest, Function Convolution can switch between a fast FFT mode for data defined over a symmetric domain, and slower direct calculations for data defined over an asymmetric domain.

The work on benchmarking fitting has received funding from the Horizon 2020 Framework Programme of the European Union under the SINE2020 project Grant No 654000.

Script Repository

  • A bug has been fixed that caused uploads to fail with some incorrectly configured proxy servers.
  • The default timeout has been increased from 5s to 30s to avoid hitting the timeout when tying to download some larger files.

Algorithms

Properties

  • String properties of algoithms are now trimmed of whitespace by default before being used by the algorithm. So ” My filename ” will be trimmed to “My filename”.

New

Renamed

Improved

  • EnggCalibrate has a new output property with the fitted parameters of the calibration sample peaks. It also logs more details about the peaks fitted.
  • EnggFocus: added an option to mask out several ranges in ToF (instrument pulses), with default values set for ENGIN-X, and an option to normalize by proton charge (enabled by default).
  • Integration now correctly works for event data that has not been binned.
  • FFT now has an extra (optional) parameter, AcceptXRoundingErrors. When set, this enables the algorithm to run even when the bin widths are slightly different. (An error is still produced for large deviations). By default, this is set to false, keeping the original behaviour.
  • ConvertUnits now works correctly for ‘distribution’ data in a MatrixWorkspace in in-place mode (InputWorkspace = OutputWorkspace).
  • When plotting a workspace that had been normalized by bin widths, the y-axis unit label was incorrect. An appropriate labelling has now been implemented.
  • SumSpectra fixed broken scaling of bins for the WeightedSum=true case.
  • LoadISISNexus now works correctly for data with non-contiguous detector IDs for either monitors or detectors.
  • A bug has been fixed in several algorithms where they would crash when given a WorkspaceGroup as input (if run in the GUI). These algorithms are:
  • LoadNexusMonitors now allow user to choose to load either histogram monitor or event monitor only with 2 new properties (LoadEventMonitor and LoadHistogramMonitor).
  • CreateSimulationWorkspace now matches the IDF of the simulation workspace to the IDF of a reference workspace (either Nexus or Raw).
  • LoadNexusProcessed now correctly reads in event data that does not have a common x-axis.
  • LoadNexusLogs allows now to load logs from an entry other than the first. LoadEventNexus now loads the correct logs when an NXentry is given
  • FFT: added property AutoShift to enable automatic phase correction for workspaces not centred at zero.
  • SaveAscii now has a SpectrumMetaData property that allows for addition information to be displayed along with the SpectrumNumber. Currently the supported MetaData is SpectrumNumber, Q and Angle.
  • SaveMD now writes MDHisto signal arrays as compressed data.
  • SetUncertainties has two new modes, oneIfZero and sqrtOrOne.
  • SetSampleMaterial will now work out the number density from the chemical formula and mass density if these are given in the input. A user specified number density or if Z and the unit cell volume is given will override the value calculated from the chemical formula and mass density.
  • ComputeCalibrationCoefVan does not perform fit of data by itself, but requires an additional argument: EPPTable. This should accelerate the data reduction workflow, because fitting results can be reused. Table with elastic peak positions can be created using the new FindEPP algorithm.
  • MonteCarloAbsorption now supports inelastic instruments. It relies on ConvertUnits having set the correct EMode.
  • SofQWNormalisedPolygon has been fixed to normalize the data correctly. Previous versions contained a bug when removing the bin-width normalization that may have already been present on the input data

Deprecated

  • The UserAlgorithms package is no longer being shipped with the Windows packages.

MD Algorithms (VATES CLI)

  • The algorithm SaveMDWorkspaceToVTK is now available. It allows the user to save 3D MDHisto or 3D MDEvent workspaces as either a .vts or .vtu files. These file types can be loaded into a standalone version of ParaView.
  • PlotMD now plots points at bin centres for MDEventWorkspaces as well as MDHistoWorkspaces.
  • SliceMD now reports the correct number of events in the output workspace.
  • The size of densely populated, multidimensional MDEventWorkspace slices produced by SliceMD has been greatly reduced by using more sensible box splitting parameters.
  • MD slicing algorithms now correctly detect units in input workspace and set units in output workspace as directed with the BasisVector properties.
  • Slicing algorithms (SliceMD and BinMD) do not add masked data to their output workspaces.
  • MergeMD now does not add masked events to its output workspace.
  • ConvertToMD, CreateMD and AccumulateMD now have the option to produce workspaces with a file-backend.
  • Dimension labelling in MD slicing algorithms is consistent with ConvertToMD.
  • The box structure of workspaces created with CutMD using NoPix=false now matches that specified by the PnBins properties. Additional box splitting is only allowed if MaxRecursionDepth is set to higher than its default of 1.
  • XorMD, OrMD and AndMD treat masked bins as zero.
  • A Gaussian smoothing option has been added to SmoothMD. Note, this currently only supports specifying widths for the smoothing function in units of pixels along the dimensions of the workspace.
  • LoadMD has an option to skip loading workspace history. This is useful for workspaces created form large number of files, treated separately.

Python

  • It is now possible to use the unit.quickConversion(destinationUnit) functionality in python. If it is possible to convert one unit to another using a multiplication by a constant, this will return the factor and power required for the multiplication.
  • The Atom kernel class, which stores the cross-sections, relative atomic masses, and other information for all elements and isotopes is now accessible from Python.
  • The Material class has two new Python methods: chemicalFormula returns a tuple of Atom objects corresponding to the atoms in the compound, and their abundances; relativeMolecularMass returns the relative formular unit mass in atomic mass units.
  • The plot() function of mantidplot.pyplot now supports empty marker (marker=None).
  • V3D is now iterable in Python, which makes it possible to easily construct numpy arrays like this np.array(V3D(1,2, 3)).
  • Two new attributes available on all python algorithms startProgress and endProgress. Added to an algorithm call, it will allow for passing control of the progress bar to child algorithms.

Full list of Framework and Python changes on GitHub