framework.rst 8.45 KB
Newer Older
1
2
3
4
5
6
7
=================
Framework Changes
=================

.. contents:: Table of Contents
   :local:

Gagik Vardanyan's avatar
Gagik Vardanyan committed
8

Jose Borreguero's avatar
Jose Borreguero committed
9
10
11
API
---

Gagik Vardanyan's avatar
Gagik Vardanyan committed
12
- The default multiple file limit is now made facility dependent. It is 1000 for ILL, and 100 for all the others.
Jose Borreguero's avatar
Jose Borreguero committed
13
- Frequency unit (GHz) included as an option to represent energy transfer.
Antti Soininen's avatar
Antti Soininen committed
14
- Fixed a bug where certain validators would crash with SingleValuedWorkspaces instead of rejecting them.
Jose Borreguero's avatar
Jose Borreguero committed
15

16
17
18
Algorithms
----------

19
- Removed the optional flag ``LocationParameters`` from ``ClearInstrumentParameters``.
20

21
22
23
New
###

Nick Draper's avatar
Nick Draper committed
24
- :ref:`DeleteWorkspaces <algm-DeleteWorkspaces>` will delete a list of workspaces.
25
26
27
28

Improved
########

Antti Soininen's avatar
Antti Soininen committed
29
30
- :ref:`RawFileInfo <algm-RawFileInfo-v1>` now provides sample information.
- :ref:`SetInstrumentParameter <algm-SetInstrumentParameter-v1>` now supports also boolean parameters, and better validates the inputs.
31
- :ref:`FilterEvents <algm-FilterEvents-v1>` now accepts a general TableWorkspace as the splitters workspace.  The TableWorkspace must have at least 3 columns.  The first 3 columns are for relative starting time, relative stopping time and target workspace tag for splitters, respectively.
32
- :ref:`GenerateEventsFilter <algm-GenerateEventsFilter-v1>` now set the unit of X-axis of the MatrixWorkspace (i.e., output splitters workspace) to second.
33
34
- :ref:`FilterEvents <algm-FilterEvents-v1>` now generates a sample log named *splitter* of each output workspace (i.e., splitted workspace) to represent the event filter that is applied to it.
- :ref:`FilterEvents <algm-FilterEvents-v1>` now splits all the sample logs if the input splitters are given by MatrixWorkspace or a general TableWorkspace.
35
36
- :ref:`FilterEvents <algm-FilterEvents-v1>` now supports to filter by pulse time with input splitters in format of MatrixWorkspace and general TableWorkspace.
- :ref:`FilterEvents <algm-FilterEvents-v1>` now sorts events before filtering.  There is no need to call :ref:`SortEvents <algm-SortEvents-v1>` before calling ``FilterEvents``.
Hahn, Steven's avatar
Hahn, Steven committed
37
- :ref:`FilterEvents <algm-FilterEvents-v1>` now accept splitters from ``TableWorkspace`` and ``MatrixWorkspace`` in both relative time and epoch time.
38
- :ref:`FilterEvents <algm-FilterEvents-v1>` now only accept splitters from ``TableWorkspace`` and ``MatrixWrokspace`` in unit as second.
39
- Two new properties were added to :ref:`algm-Integration` *RangeLowerList* and *RangeUpperList* can be used to give histogram-specific integration ranges.
Antti Soininen's avatar
Antti Soininen committed
40
- :ref:`algm-FindEPP` does not output the two extra workspaces from the :ref:`algm-Fit` anymore.
41
- :ref:`ApplyDetailedBalance <algm-ApplyDetailedBalance>`: User can select the dynamic susceptibility versus energy or frequency.
Martyn Gigg's avatar
Martyn Gigg committed
42
- :ref:`MergeRuns <algm-MergeRuns>` now has a sum option and more control over failure when binning is different or sample logs do not match.
Owen Arnold's avatar
Owen Arnold committed
43
- Made it possible for LiveListeners to read properties from the calling Algorithm. This gives greater flexiblity for authors of LiveListener plugins.
Peterson, Peter's avatar
Peterson, Peter committed
44
- Improved verification of IDFs
45
46
47
48
- :ref:`AddSampleLog <algm-AddSampleLog>` now can optionionally take a MatrixWorkspace for the time and value of the newly-added TimeSeriesProperty sample log.
- :ref:`ExportTimeSeriesLog <algm-ExportTimeSeriesLog>` now can export the first derivative of the sample log as an opotion.
- :ref:`ExportTimeSeriesLog <algm-ExportTimeSeriesLog>` now add information of exported log to the output work, which
  :ref:`AddSampleLog <algm-AddSampleLog>` can retrieve automatically.
49
- ``ThreadPool`` now respects the value of ``OMP_NUM_THREADS`` environment variable (documented in [gcc](https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fNUM_005fTHREADS.html))
Hahn, Steven's avatar
Hahn, Steven committed
50
- Improved parallel scaling of :ref:`MDNormSCD <algm-MDNormSCD>` with > 4 cores.
Hahn, Steven's avatar
Hahn, Steven committed
51
- Reduced execution time of ``EventList::sortTof`` by over 2x, improving performance in algorithms such as :ref:`algm-CompressEvents` and :ref:`algm-SortEvents` which call it.
Samuel Jackson's avatar
Samuel Jackson committed
52
- :ref:`LoadNexusProcessed <algm-LoadNexusProcessed>` is now approximately 33x faster when loading a ``PeaksWorkspace`` with a large instrument attached.
53

54
55
56
57
Bug Fixes
#########

- Fixed two issues with absolute rotations that affected :ref:`RotateInstrumentComponent <algm-RotateInstrumentComponent>`. Previously, setting the absolute rotation of a component to ``R`` would result in its rotation being ``parent-rotation * R * inverse(relative-parent-rotation)``.
58
59
- :ref:`MonteCarloAbsorption <algm-MonteCarloAbsorption>` has been modified to allow ``EventWorkspace`` as input
- Fixed an issue where the log ``proton_charge_by_period`` was not loaded for :ref:`LoadEventNexus <algm-LoadEventNexus>`.
Antti Soininen's avatar
Antti Soininen committed
60
- Fixed an issue where :ref:`algm-MonteCarloAbsorption` would use the wavelengths from the first histogram of *InputWorkspace* only making the algorithm unusable for workspaces with varying bins.
61
- Fixed an issue with the ``GroupingPattern`` property in :ref:`algm-GroupDetectors`, where incorrect spectra were being used if spectrum numbers are not 1-based indices.
62
63
64
65
66
67
68
69
70
71

Deprecated
##########

MD Algorithms (VATES CLI)
#########################

Performance
-----------

Owen Arnold's avatar
Owen Arnold committed
72
Following a large effort to change some of the core instrument  aspects of Mantid, we are pleased to announce very significant improvements in performance as part of the 3.10.0 release. :ref:`ConvertUnits <algm-ConvertUnits>`, for example, is running >2x times faster than possible in our last major 3.9.0 release. Amongst others, :ref:`NormaliseVanadium <algm-NormaliseVanadium>` and :ref:`MaskDetectorsInShape <algm-MaskDetectorsInShape>` now give a 2x speedup. :ref:`ConvertSpectrumAxis <algm-ConvertSpectrumAxis>` and :ref:`AnvredCorrection <algm-AnvredCorrection>` are examples, of a few monitored algorithms, that are demonstrating a more modest 10% improvement in speed over the last major Mantid release. Aside from granular improvements at the algorithm level, we have observed that many of the Direct Inelastic technique area workflows are 2x faster than before.
73
74
75

As a consequence of these changes, :ref:`CopyInstrumentParmeters <algm-CopyInstrumentParameters>`, :ref:`LoadInstrument <algm-LoadInstrument>` and several other Load Algorithms are reporting a modest slowdown. We hope to address these as part of our scheduled future work in this area.

Nick Draper's avatar
Nick Draper committed
76
77
78
Bugs
----

Antti Soininen's avatar
Antti Soininen committed
79
- We have fixed a bug where Mantid could crash when deleting a large number of workspaces.
80
- Fixed a bug in :ref:`ConvertToMD <algm-ConvertToMD>` causing it to fail with the error "Run::storeEnergyBinBoundaries - Inconsistent start & end values" if monitors were all NaN, Inf, or zero.
81
82
83
84
85
86
87

CurveFitting
------------

Improved
########

88
89
- :ref:`UserFunction <func-UserFunction>` now supports :math:`erf` and :math:`erfc`.

90
91
- :ref:`IkedaCarpenterPV <func-IkedaCarpenterPV>` now constrains all parameters to be non-negative which helps the fits converge faster and produces better fits.

92
LiveData
93
--------
94

95
- A new live listener for event data, `KafkaEventListener`, has been added. This is in development for the ESS and ISIS. It is only available on IBEX instruments at ISIS.
96

97
98
99
Python
------

Antti Soininen's avatar
Antti Soininen committed
100
- For multiple output parameters, python algorithms now return a ``namedtuple`` instead of a ``tuple``. Old scripts should still work,
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  but one can now do

  .. code-block:: python

      results = GetEi(w)
      print(results)
      print(results.IncidentEnergy)
      print(results[0])

  This will yield:

  .. code-block:: python

      GetEi_returns(IncidentEnergy=3.0, FirstMonitorPeak=0.0, FirstMonitorIndex=0, Tzero=61.77080180287334)
      3.0
      3.0

Peterson, Peter's avatar
Peterson, Peter committed
118
- :class:`mantid.geometry.Object` has a new method ``volume()`` which calculates the volume of the shape.
119
- A ``SpectraAxis`` object can now be created from Python, in a similar way to the other Axis types:
Martyn Gigg's avatar
Martyn Gigg committed
120
121

  .. code-block:: python
122

Martyn Gigg's avatar
Martyn Gigg committed
123
124
125
     ws1 = CreateSampleWorkspace()
     # Create a new axis reference
     s_axis = SpectraAxis.create(ws1)
126
127


128
- ``CrystalStructure``, ``UnitCell``, ``PointGroup``, and ``SpaceGroup`` all have better console printing
Samuel Jackson's avatar
Samuel Jackson committed
129
- Fixed a bug on MDHistogramWorkspaces where passing an index larger than the size of the dimensions of the workspace to ``setSignalAt`` would crash Mantid.
130

131

132
133
134
Python Algorithms
#################

Peterson, Peter's avatar
Peterson, Peter committed
135
136
137
- :class:`mantid.api.DataProcessorAlgorithm` now have a new method
  ``copyProperties()`` which allow them to copy properties (with
  defaults, validators, and documentation) from other algorithms.
138
139

Full list of
Peterson, Peter's avatar
Peterson, Peter committed
140
`Framework <http://github.com/mantidproject/mantid/pulls?q=is%3Apr+milestone%3A%22Release+3.10%22+is%3Amerged+label%3A%22Component%3A+Framework%22>`__
141
and
Peterson, Peter's avatar
Peterson, Peter committed
142
`Python <http://github.com/mantidproject/mantid/pulls?q=is%3Apr+milestone%3A%22Release+3.10%22+is%3Amerged+label%3A%22Component%3A+Python%22>`__
143
changes on GitHub