\(\renewcommand\AA{\unicode{x212B}}\)
CompareMDWorkspaces v1¶
Summary¶
Compare two MDWorkspaces for equality.
Properties¶
| Name | Direction | Type | Default | Description | 
|---|---|---|---|---|
| Workspace1 | Input | IMDWorkspace | Mandatory | First MDWorkspace to compare. | 
| Workspace2 | Input | IMDWorkspace | Mandatory | Second MDWorkspace to compare. | 
| Tolerance | Input | number | 0 | The maximum amount by which values may differ between the workspaces. | 
| MDEventTolerance | Input | number | 1e-07 | The maximum amount by which values may differ between 2 MDEvents to compare. | 
| CheckEvents | Input | boolean | True | Whether to compare each MDEvent. If False, will only look at the box structure. | 
| Equals | Output | boolean | Boolean set to true if the workspaces match. | |
| Result | Output | string | String describing the difference found between the workspaces | |
| IgnoreBoxID | Input | boolean | False | To ignore box ID-s when comparing MD boxes as Multithreaded splitting assigns box id-s randomly | 
Description¶
Compare two MDWorkspaces (MDEventWorkspace or MDHistoWorkspace) to see if they are the same. This is mostly meant for testing/debugging use by developers.
What is compared: The dimensions, as well as the signal and error for each bin of each workspace will be compared.
MDEventWorkspace : the events in each box will be compared if the CheckEvents option is checked. The events would need to be in the same order to match.
Usage¶
Example - compare two MD workspaces:
# create sample inelastic workspace for MARI instrument containing 1 at all spectra
ws1=CreateSimulationWorkspace(Instrument='MAR',BinParams='-10,1,10',UnitX='DeltaE')
AddSampleLog(ws1,'Ei','12.','Number')
# create the copy of first workspace
ws1a=ws1
# create second workspace which has different signals
ws2=ws1*2;
# Convert to MD
mdWs1 =ConvertToMD(InputWorkspace=ws1,QDimensions='|Q|',QConversionScales='Q in A^-1',SplitInto='100,100',MaxRecursionDepth='1')
mdWs1a=ConvertToMD(InputWorkspace=ws1a,QDimensions='|Q|',QConversionScales='Q in A^-1',SplitInto='100,100',MaxRecursionDepth='1')
mdWs2=ConvertToMD(InputWorkspace=ws2,QDimensions='|Q|',QConversionScales='Q in A^-1',SplitInto='100,100',MaxRecursionDepth='1')
# compare the workspaces
comp_rez1=CompareMDWorkspaces(mdWs1,mdWs1a)
comp_rez2=CompareMDWorkspaces(mdWs1,mdWs2)
# print comparison results
print("Workspaces mdWs1 and mdWs1a are equal? : {0}  : Comparison result: {1}".format(comp_rez1[0], comp_rez1[1]))
if comp_rez2[1].count('Box signal does not match (18360 vs 36720)') == 1:
    result = 'Box signal does not match (18360 vs 36720)'
else:
    result = comp_rez2[1]
print("Workspaces mdWs1 and mdWs2  are equal? : {0} : Comparison result: {1}".format(comp_rez2[0], result))
Output:
Workspaces mdWs1 and mdWs1a are equal? : True  : Comparison result: Success!
Workspaces mdWs1 and mdWs2  are equal? : False : Comparison result: Box signal does not match (18360 vs 36720)
Categories: AlgorithmIndex | MDAlgorithms\Utility\Workspaces
Source¶
C++ header: CompareMDWorkspaces.h
C++ source: CompareMDWorkspaces.cpp