Skip to content
Snippets Groups Projects
Commit a3aba424 authored by Elliot Oram's avatar Elliot Oram
Browse files

Ensure test only runs on supported f2py platforms

Refs #13826
parent 1dc7b58b
No related branches found
No related tags found
No related merge requests found
import unittest
from mantid.simpleapi import *
from IndirectImport import *
from mantid.api import MatrixWorkspace, WorkspaceGroup
class QLRunTest(unittest.TestCase):
_res_ws = None
_sample_ws = None
_num_bins = None
_num_hists = None
def setUp(self):
self._res_ws = Load(Filename='irs26173_graphite002_res.nxs',
OutputWorkspace='__QLRunTest_Resolution')
self._sample_ws = Load(Filename='irs26176_graphite002_red.nxs',
OutputWorkspace='__QLRunTest_Sample')
self._num_bins = self._sample_ws.blocksize()
self._num_hists = self._sample_ws.getNumberHistograms()
def _validate_QLr_shape(self, result, probability, group):
"""
Validates that the output workspaces are of the correct type, units and shape.
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test size/shape of result
self.assertTrue(isinstance(result, MatrixWorkspace))
self.assertEquals(result.getNumberHistograms(), 21)
self.assertEquals(result.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of probability
self.assertTrue(isinstance(probability, MatrixWorkspace))
self.assertEquals(probability.getNumberHistograms(), 3)
self.assertEquals(probability.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of group fitting workspaces
self.assertTrue(isinstance(group, WorkspaceGroup))
self.assertEquals(group.getNumberOfEntries(), self._sample_ws.getNumberHistograms())
# Test sub workspaces
for i in range (group.getNumberOfEntries()):
sub_ws = group.getItem(i)
self.assertTrue(isinstance(sub_ws, MatrixWorkspace))
self.assertEqual(sub_ws.getNumberHistograms(), 5)
self.assertEquals(sub_ws.getAxis(0).getUnit().unitID(), 'DeltaE')
def _validate_Qlr_value(self, result, probability, group):
"""
Validates that the output workspaces have expected values
with values from the last known correct version
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test values of result
result_y = result.dataY(0)
self.assertEquals(round(result.dataY(0)[0], 5), 6.06105)
self.assertEquals(round(result.dataY(1)[0], 4), 68.5744)
self.assertEquals(round(result.dataY(2)[0], 7), 0.0589315)
self.assertEquals(round(result.dataY(3)[0], 7), 0.0812087)
# Test values of probability
prob_y = probability.dataY(0)
self.assertEquals(round(probability.dataY(0)[0], 1), -74176.1)
self.assertEquals(round(probability.dataY(1)[0], 3), -404.884)
self.assertEquals(round(probability.dataY(2)[0], 6), -0.222565)
# Test values of group
sub_ws = group.getItem(0)
sub_y = sub_ws.dataY(0)
self.assertEquals(round(sub_ws.dataY(0)[0], 5), 0.02540)
self.assertEquals(round(sub_ws.dataY(1)[0], 5), 0.01903)
self.assertEquals(round(sub_ws.dataY(2)[0], 5), -0.00638)
self.assertEquals(round(sub_ws.dataY(3)[0], 5), 0.01614)
self.assertEquals(round(sub_ws.dataY(4)[0], 5), -0.00926)
def _validate_QSe_shape(self, result, group):
"""
Validates that the output workspaces are of the correct type, units and shape.
with values from the last known correct version
@param result Result workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test size/shape of result
self.assertTrue(isinstance(result, MatrixWorkspace))
self.assertEquals(result.getNumberHistograms(), 3)
self.assertEquals(result.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of group fitting workspaces
self.assertTrue(isinstance(group, WorkspaceGroup))
self.assertEquals(group.getNumberOfEntries(), self._sample_ws.getNumberHistograms())
# Test sub workspaces
for i in range (group.getNumberOfEntries()):
sub_ws = group.getItem(i)
self.assertTrue(isinstance(sub_ws, MatrixWorkspace))
self.assertEqual(sub_ws.getNumberHistograms(), 3)
self.assertEquals(sub_ws.getAxis(0).getUnit().unitID(), 'DeltaE')
def _validate_QSe_value(self, result, group):
"""
Validates that the output workspaces have expected values
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test values of result
result_y = result.dataY(0)
self.assertEquals(round(result.dataY(0)[0], 5), 81.12644)
self.assertEquals(round(result.dataY(1)[0], 7), 0.0319747)
self.assertEquals(round(result.dataY(2)[0], 5), 0.77168)
# Test values of group
sub_ws = group.getItem(0)
sub_y = sub_ws.dataY(0)
self.assertEquals(round(sub_ws.dataY(0)[0], 5), 0.02540)
self.assertEquals(round(sub_ws.dataY(1)[0], 5), 0.01632)
self.assertEquals(round(sub_ws.dataY(2)[0], 5), -0.00908)
def test_QLr_Run(self):
"""
Test Lorentzian fit for QLRun
"""
fit_group, result, prob= QLRun(Program='QL',
SampleWorkspace=self._sample_ws,
ResolutionWorkspace=self._res_ws,
MinRange=-0.547607,
MaxRange=0.543216,
SampleBins=1,
ResolutionBins=1,
Elastic=False,
Background='Sloping',
FixedWidth=False,
UseResNorm=False,
WidthFile='',
Loop=True,
Save=False,
Plot='None')
self._validate_QLr_shape(result, prob, fit_group)
self._validate_Qlr_value(result, prob, fit_group)
def test_QSe_Run(self):
"""
Test Stretched Exponential fit for QLRun
"""
fit_group, result = QLRun(Program='QSe',
SampleWorkspace=self._sample_ws,
ResolutionWorkspace=self._res_ws,
MinRange=-0.547607,
MaxRange=0.543216,
SampleBins=1,
ResolutionBins=1,
Elastic=False,
Background='Sloping',
FixedWidth=False,
UseResNorm=False,
WidthFile='',
Loop=True,
Save=False,
Plot='None')
self._validate_QSe_shape(result, fit_group)
self._validate_QSe_value(result, fit_group)
if __name__=="__main__":
unittest.main()
\ No newline at end of file
if is_supported_f2py_platform():
class QLRunTest(unittest.TestCase):
_res_ws = None
_sample_ws = None
_num_bins = None
_num_hists = None
def setUp(self):
self._res_ws = Load(Filename='irs26173_graphite002_res.nxs',
OutputWorkspace='__QLRunTest_Resolution')
self._sample_ws = Load(Filename='irs26176_graphite002_red.nxs',
OutputWorkspace='__QLRunTest_Sample')
self._num_bins = self._sample_ws.blocksize()
self._num_hists = self._sample_ws.getNumberHistograms()
def _validate_QLr_shape(self, result, probability, group):
"""
Validates that the output workspaces are of the correct type, units and shape.
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test size/shape of result
self.assertTrue(isinstance(result, MatrixWorkspace))
self.assertEquals(result.getNumberHistograms(), 21)
self.assertEquals(result.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of probability
self.assertTrue(isinstance(probability, MatrixWorkspace))
self.assertEquals(probability.getNumberHistograms(), 3)
self.assertEquals(probability.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of group fitting workspaces
self.assertTrue(isinstance(group, WorkspaceGroup))
self.assertEquals(group.getNumberOfEntries(), self._sample_ws.getNumberHistograms())
# Test sub workspaces
for i in range (group.getNumberOfEntries()):
sub_ws = group.getItem(i)
self.assertTrue(isinstance(sub_ws, MatrixWorkspace))
self.assertEqual(sub_ws.getNumberHistograms(), 5)
self.assertEquals(sub_ws.getAxis(0).getUnit().unitID(), 'DeltaE')
def _validate_Qlr_value(self, result, probability, group):
"""
Validates that the output workspaces have expected values
with values from the last known correct version
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test values of result
result_y = result.dataY(0)
self.assertEquals(round(result.dataY(0)[0], 5), 6.06105)
self.assertEquals(round(result.dataY(1)[0], 4), 68.5744)
self.assertEquals(round(result.dataY(2)[0], 7), 0.0589315)
self.assertEquals(round(result.dataY(3)[0], 7), 0.0812087)
# Test values of probability
prob_y = probability.dataY(0)
self.assertEquals(round(probability.dataY(0)[0], 1), -74176.1)
self.assertEquals(round(probability.dataY(1)[0], 3), -404.884)
self.assertEquals(round(probability.dataY(2)[0], 6), -0.222565)
# Test values of group
sub_ws = group.getItem(0)
sub_y = sub_ws.dataY(0)
self.assertEquals(round(sub_ws.dataY(0)[0], 5), 0.02540)
self.assertEquals(round(sub_ws.dataY(1)[0], 5), 0.01903)
self.assertEquals(round(sub_ws.dataY(2)[0], 5), -0.00638)
self.assertEquals(round(sub_ws.dataY(3)[0], 5), 0.01614)
self.assertEquals(round(sub_ws.dataY(4)[0], 5), -0.00926)
def _validate_QSe_shape(self, result, group):
"""
Validates that the output workspaces are of the correct type, units and shape.
with values from the last known correct version
@param result Result workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test size/shape of result
self.assertTrue(isinstance(result, MatrixWorkspace))
self.assertEquals(result.getNumberHistograms(), 3)
self.assertEquals(result.blocksize(), self._num_hists)
self.assertEquals(result.getAxis(0).getUnit().unitID(), 'MomentumTransfer')
# Test size/shape of group fitting workspaces
self.assertTrue(isinstance(group, WorkspaceGroup))
self.assertEquals(group.getNumberOfEntries(), self._sample_ws.getNumberHistograms())
# Test sub workspaces
for i in range (group.getNumberOfEntries()):
sub_ws = group.getItem(i)
self.assertTrue(isinstance(sub_ws, MatrixWorkspace))
self.assertEqual(sub_ws.getNumberHistograms(), 3)
self.assertEquals(sub_ws.getAxis(0).getUnit().unitID(), 'DeltaE')
def _validate_QSe_value(self, result, group):
"""
Validates that the output workspaces have expected values
@param result Result workspace from QLRun
@param prob Probability workspace from QLRun
@param group Group workspace of fitted spectra from QLRun
"""
# Test values of result
result_y = result.dataY(0)
self.assertEquals(round(result.dataY(0)[0], 5), 81.12644)
self.assertEquals(round(result.dataY(1)[0], 7), 0.0319747)
self.assertEquals(round(result.dataY(2)[0], 5), 0.77168)
# Test values of group
sub_ws = group.getItem(0)
sub_y = sub_ws.dataY(0)
self.assertEquals(round(sub_ws.dataY(0)[0], 5), 0.02540)
self.assertEquals(round(sub_ws.dataY(1)[0], 5), 0.01632)
self.assertEquals(round(sub_ws.dataY(2)[0], 5), -0.00908)
def test_QLr_Run(self):
"""
Test Lorentzian fit for QLRun
"""
fit_group, result, prob= QLRun(Program='QL',
SampleWorkspace=self._sample_ws,
ResolutionWorkspace=self._res_ws,
MinRange=-0.547607,
MaxRange=0.543216,
SampleBins=1,
ResolutionBins=1,
Elastic=False,
Background='Sloping',
FixedWidth=False,
UseResNorm=False,
WidthFile='',
Loop=True,
Save=False,
Plot='None')
self._validate_QLr_shape(result, prob, fit_group)
self._validate_Qlr_value(result, prob, fit_group)
def test_QSe_Run(self):
"""
Test Stretched Exponential fit for QLRun
"""
fit_group, result = QLRun(Program='QSe',
SampleWorkspace=self._sample_ws,
ResolutionWorkspace=self._res_ws,
MinRange=-0.547607,
MaxRange=0.543216,
SampleBins=1,
ResolutionBins=1,
Elastic=False,
Background='Sloping',
FixedWidth=False,
UseResNorm=False,
WidthFile='',
Loop=True,
Save=False,
Plot='None')
self._validate_QSe_shape(result, fit_group)
self._validate_QSe_value(result, fit_group)
if __name__=="__main__":
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment