Framework Changes

Load Instrument Breaking Change

  • Load instrument is an algorithm used by many of the Loading algorithms in Mantid behind the scenes, for those this has been adjusted, but if you call LoadInstrument in your own scripts ...
  • The RewriteSpectraMap property of LoadInstrument must be specified as of version 3.6. This has previously been optional.

Algorithms

The usage of algoirthms is now tracked so we can get a better idea of which algorithms are used, and which are not. No personal information is stored alongside this, just a count of algorithm usages against the version of Mantid.

New

  • Comment: A simple algorithm to add comments into the history of a workspace
  • ExportGeometry: Writes portions of the instrument geometry in IDF xml format.
  • StringToPng Writes a simple text message into a png file. This can be used in autoreduction, if users expect an image output.
  • ExtractUnmaskedSpectra: Extracts unmasked spectra from a workspace and places them in a new workspace.
  • AccumulateMD: Adds data to an existing MDEventWorkspace from a list of input files. This allows accumulation of data in a workspace during an experiment.

Improved

  • ExportTimeSeriesLog has been improved such that it is able to export time series log with various time unit, to export the time as relative time or epoch time, and export partial time series log.
  • LoadEventNexus previously had a bug that could cause the number of events to be doubled when loading a subset of spectra. This has been tracked down and resolved, along with improving the performance for loading a subset of spectra.
  • LoadFITS: has been optimized. Support for additional header keys has been added. Several issues have been fixed.
  • LoadIsawPeaks has been optimized for loading of large files. A test file with 6000 peaks that previously took 2.5 minutes to load now takes 7 seconds.
  • LoadLogPropertyTable can now handle event files, and filenames with characters after the run number, such as `CNCS_7860_event.nxs`.
  • LoadNexusProcessed has been fixed so that it loads spectrum numbers from files where the up axis is a numeric axis. As a result CompareWorkspaces now passes with a workspace in memory and one that is passed through save/load.
  • NormaliseByCurrent gives more specific and detailed error messages, especially when normalizing multiperiod data.
  • RemoveBins has been fixed so it now properly processes workspaces index requests > 0.
  • SaveNexusProcessed has been fixed so files do not complain about “Error parsing duration in algorithm history entry.” on reloading.
  • UpdateInstrumentFromFile had a bug where the algorithm would crash if it encountered a spectrum that had multiple detectors assigned to it. This has been fixed.

Deprecated

MD Algorithms (VATES CLI)

Many of these areas will see further improvements in the following release:

  • Added progress reporting and interruptibility to several MD algorithms.
  • Fixed several bugs related to dimension naming in MDWorkspaces.
  • Added the AccumulateMD algorithm.
  • TransposeMD can now be used as TransposeMD which will be more familiar for users of Matlab and Horace.
  • Data in MDWorkspaces which is masked using MaskMD will no longer be displayed in 1D plots, the Slice Viewer or the Vates Simple Interface.
  • Data in MDWorkspaces which is masked using MaskMD is now set to not a number (NaN).

Performance

  • The performance of loading a partial subset of spectra from Event Nexus files has been greatly increased.
  • The performance of loading instruments with lots of rectangular detector banks has been notably increased.
  • Loading of ISAW Peaks files has been optimized. A test file with 6000 peaks that previously took 2.5 minutes to load now takes 7 seconds. Another file with 157,377 lines that reportedly took about one hour to load now loads in roughly 8 seconds.
  • Removed unnecessary clone of surfaces in Mantid::Geometry::Rule.

CurveFitting

Improved

  • StretchedExpFT includes now fitting parameter “origin”. It enables shifting the peak center.

Python

  • #14022 Monitor workspace getters and setters have been exposed to Python. This allows users to substantially simplify the reduction workflow, in particular for direct inelastic experiments in ISIS. RenameWorkspace algorithm supports monitors workspace, attached to a workspace and renames both workspaces accordingly (Monitor workspace is named the same as main workspace with _monitors suffix at the end. )
  • TableWorkspace.addRow() now accepts anything that behaves like a sequence (tuples, numpy arrays, etc) rather than just lists and dictionaries.
  • #13751 Plot normalization can now be controlled from the python plotSpectrum() function using the distribution keyword argument.

Python Algorithms

  • Python Algorithms should now define which category the algorithm should be shown under in the Algorithms toolbox. For example this definition specifies that this algorithm should be listed twice, once under Arithmetic, and again under CorrectionFunctions\\SpecialFunctions. More details can be found in Basic PythonAlgorithm Structure.
class HelloWorld(PythonAlgorithm):

    def category(self):
        return 'Arithmetic;CorrectionFunctions\\SpecialFunctions'
  • If you do not define this method the algorithm will still register in MantidPlot, and work, but Mantidplot will warn you that the algorithm does not have a category defined, and it will appear under the PythonAlgorithms category in the Algorithms Toolbox.

IPython Notebooks

  • IPython notebooks generated using the GenerateIPythonNotebook algorithm, or from the ISIS Reflectometry interface, are now looking more friendly. This is thanks to importing more functionality from Mantid rather than the code being in the notebook.

Full list of Framework and Python changes on GitHub