From 74373e191a0f6b99cf7d864ae8e5f1411a932040 Mon Sep 17 00:00:00 2001 From: Harry Jeffery <henry.jeffery@stfc.ac.uk> Date: Mon, 30 Mar 2015 15:00:08 +0100 Subject: [PATCH] Refs #11355 Transfer orthogonal slice 4d test --- .../Framework/MDAlgorithms/test/CutMDTest.h | 65 +++++++++++++++++++ .../test/python/mantid/api/CutMDTest.py | 38 ----------- 2 files changed, 65 insertions(+), 38 deletions(-) diff --git a/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h b/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h index 4c5b7ce6309..b93b6c4d0dc 100644 --- a/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h +++ b/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h @@ -420,6 +420,71 @@ public: AnalysisDataService::Instance().remove(wsName); } + + void test_orthogonal_slice_4d() { + const std::string wsName = "__CutMDTest_orthog_slice_4d"; + const std::string wsOutName = "__CutMDTest_orthog_slice_4d_out"; + + FrameworkManager::Instance().exec("CreateMDWorkspace", 10, + "OutputWorkspace", wsName.c_str(), + "Dimensions", "4", + "Extents", "-1,1,-1,1,-1,1,-10,10", + "Names", "H,K,L,E", + "Units", "U,U,U,V"); + + FrameworkManager::Instance().exec("SetUB", 14, + "Workspace", wsName.c_str(), + "a", "1", "b", "1", "c", "1", + "alpha", "90", "beta", "90", "gamma", "90"); + + FrameworkManager::Instance().exec("SetSpecialCoordinates", 4, + "InputWorkspace", wsName.c_str(), + "SpecialCoordinates", "HKL"); + + auto algCutMD = FrameworkManager::Instance().createAlgorithm("CutMD"); + algCutMD->initialize(); + algCutMD->setRethrows(true); + algCutMD->setProperty("InputWorkspace", wsName); + algCutMD->setProperty("OutputWorkspace", wsOutName); + algCutMD->setProperty("P1Bin", "-0.5,0.5"); + algCutMD->setProperty("P2Bin", "-0.1,0.1"); + algCutMD->setProperty("P3Bin", "-0.3,0.3"); + algCutMD->setProperty("P4Bin", "1"); + algCutMD->setProperty("NoPix", true); + algCutMD->execute(); + TS_ASSERT(algCutMD->isExecuted()); + + IMDHistoWorkspace_sptr outWS = + AnalysisDataService::Instance().retrieveWS<IMDHistoWorkspace>(wsOutName); + TS_ASSERT(outWS.get()); + + TS_ASSERT_DELTA(outWS->getDimension(0)->getMinimum(), -0.5, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(0)->getMaximum(), 0.5, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(1)->getMinimum(), -0.1, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(1)->getMaximum(), 0.1, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(2)->getMinimum(), -0.3, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(2)->getMaximum(), 0.3, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(3)->getMinimum(), -10, 1E-6); + TS_ASSERT_DELTA(outWS->getDimension(3)->getMaximum(), 10, 1E-6); + TS_ASSERT_EQUALS(20, outWS->getDimension(3)->getNBins()); + TS_ASSERT_EQUALS("['zeta', 0, 0]", outWS->getDimension(0)->getName()); + TS_ASSERT_EQUALS("[0, 'eta', 0]", outWS->getDimension(1)->getName()); + TS_ASSERT_EQUALS("[0, 0, 'xi']", outWS->getDimension(2)->getName()); + TS_ASSERT_EQUALS("E", outWS->getDimension(3)->getName()); + + // Process again with a different binning + algCutMD->setProperty("P4Bin", "-8,1,8"); + algCutMD->setProperty("InputWorkspace", wsName); + algCutMD->setProperty("OutputWorkspace", wsOutName); + algCutMD->execute(); + TS_ASSERT(algCutMD->isExecuted()); + outWS = + AnalysisDataService::Instance().retrieveWS<IMDHistoWorkspace>(wsOutName); + TS_ASSERT_EQUALS(16, outWS->getDimension(3)->getNBins()); + + AnalysisDataService::Instance().remove(wsName); + AnalysisDataService::Instance().remove(wsOutName); + } }; #endif /* MANTID_MDALGORITHMS_CUTMDTEST_H_ */ diff --git a/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/CutMDTest.py b/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/CutMDTest.py index b302fd58eb5..29e42cb3479 100644 --- a/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/CutMDTest.py +++ b/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/CutMDTest.py @@ -22,43 +22,5 @@ class CutMDTest(unittest.TestCase): def tearDown(self): DeleteWorkspace(self.__in_md ) - def test_orthogonal_slice_4D(self): - # We create a fake 4-D workspace and check to see that using bin inputs for cropping works - to_cut = CreateMDWorkspace(Dimensions=4, Extents=[-1,1,-1,1,-1,1,-10,10], Names='H,K,L,E', Units='U,U,U,V') - # Set the UB - SetUB(Workspace=to_cut, a = 1, b = 1, c = 1, alpha =90, beta=90, gamma = 90) - SetSpecialCoordinates(InputWorkspace=to_cut, SpecialCoordinates='HKL') - - ''' - Process the 4D workspace - ''' - out_md = CutMD(to_cut, P1Bin=[-0.5,0.5], P2Bin=[-0.1,0.1], P3Bin=[-0.3,0.3], P4Bin=[1], NoPix=True) - - - self.assertAlmostEqual(-0.5, out_md.getDimension(0).getMinimum(), 6) - self.assertAlmostEqual(0.5, out_md.getDimension(0).getMaximum(), 6) - self.assertAlmostEqual(-0.1, out_md.getDimension(1).getMinimum(), 6) - self.assertAlmostEqual(0.1, out_md.getDimension(1).getMaximum(), 6) - self.assertAlmostEqual(-0.3, out_md.getDimension(2).getMinimum(), 6) - self.assertAlmostEqual(0.3, out_md.getDimension(2).getMaximum(), 6) - self.assertAlmostEqual(-10, out_md.getDimension(3).getMinimum(), 6) - self.assertAlmostEqual(10, out_md.getDimension(3).getMaximum(), 6) - self.assertEqual(20, out_md.getDimension(3).getNBins()) - - self.assertEquals("['zeta', 0, 0]", out_md.getDimension(0).getName() ) - self.assertEquals("[0, 'eta', 0]", out_md.getDimension(1).getName() ) - self.assertEquals("[0, 0, 'xi']", out_md.getDimension(2).getName() ) - self.assertEquals("E", out_md.getDimension(3).getName() ) - - self.assertTrue(isinstance(out_md, IMDHistoWorkspace), "Expect that the output was an IMDHistoWorkspace given the NoPix flag.") - - ''' - Process the 4D workspace again, this time with different binning - ''' - out_md = CutMD(to_cut, P1Bin=[-0.5,0.5], P2Bin=[-0.1,0.1], P3Bin=[-0.3,0.3], P4Bin=[-8,1,8], NoPix=True) - self.assertEqual(16, out_md.getDimension(3).getNBins()) - self.assertTrue(isinstance(out_md, IMDHistoWorkspace), "Expect that the output was an IMDHistoWorkspace given the NoPix flag.") - - if __name__ == '__main__': unittest.main() -- GitLab