def test_DNSVanadiumCorrection_Groups(self): outputWorkspaceName = "DNSComputeDetCorrCoefsTest_Test1" dataY = np.linspace(2, 13.5, 24) sfvana2 = create_fake_dns_workspace('sfvana2', dataY=dataY, flipper='ON', angle=-8.54, loadinstrument=True) nsfvana2 = create_fake_dns_workspace('nsfvana2', dataY=dataY, flipper='OFF', angle=-8.54, loadinstrument=True) vanagroupsf = GroupWorkspaces([self.sfvanaws, sfvana2]) vanagroupnsf = GroupWorkspaces([self.nsfvanaws, nsfvana2]) dataY.fill(1.5) sfbg2 = create_fake_dns_workspace('sfbg2', dataY=dataY, flipper='ON', angle=-8.54, loadinstrument=True) nsfbg2 = create_fake_dns_workspace('nsfbg2', dataY=dataY, flipper='OFF', angle=-8.54, loadinstrument=True) bggroupsf = GroupWorkspaces([self.sfbkgrws, sfbg2]) bggroupnsf = GroupWorkspaces([self.nsfbkgrws, nsfbg2]) alg_test = run_algorithm( "DNSComputeDetEffCorrCoefs", VanadiumWorkspaces=[vanagroupsf, vanagroupnsf], BackgroundWorkspaces=[bggroupsf, bggroupnsf], OutputWorkspace=outputWorkspaceName) self.assertTrue(alg_test.isExecuted()) # check whether the data are correct group = AnalysisDataService.retrieve(outputWorkspaceName) self.assertTrue(isinstance(group, WorkspaceGroup)) self.assertEqual(2, group.getNumberOfEntries()) res1 = group.getItem(0) res2 = group.getItem(1) # dimensions self.assertEqual(24, res1.getNumberHistograms()) self.assertEqual(24, res2.getNumberHistograms()) self.assertEqual(2, res1.getNumDims()) self.assertEqual(2, res2.getNumDims()) # reference data refdata = np.linspace(0.08, 1.92, 24) # data array for i in range(24): self.assertAlmostEqual(refdata[i], res1.readY(i)[0]) self.assertAlmostEqual(refdata[i], res2.readY(i)[0]) wslist = [ outputWorkspaceName, 'sfvana2', 'nsfvana2', 'sfbg2', 'nsfbg2' ] for wsname in wslist: run_algorithm("DeleteWorkspace", Workspace=wsname) return
def setUp(self): dataY = np.zeros(24) dataY.fill(1.5) self.sfbkgrws = create_fake_dns_workspace('sfbkgrws', dataY=dataY, flipper='ON', angle=-7.53, loadinstrument=True) self.nsfbkgrws = create_fake_dns_workspace('nsfbkgrws', dataY=dataY, flipper='OFF', angle=-7.53, loadinstrument=True) dataY = np.linspace(2, 13.5, 24) self.sfvanaws = create_fake_dns_workspace('sfvanaws', dataY=dataY, flipper='ON', angle=-7.53, loadinstrument=True) self.nsfvanaws = create_fake_dns_workspace('nsfvanaws', dataY=dataY, flipper='OFF', angle=-7.53, loadinstrument=True)
def setUp(self): dataY = np.zeros(24) dataY.fill(1.5) self.__bkgrws = create_fake_dns_workspace('__bkgrws', dataY=dataY) dataY = np.linspace(2, 13.5, 24) self.__vanaws = create_fake_dns_workspace('__vanaws', dataY=dataY) dataY = np.arange(1, 25) self.__dataws = create_fake_dns_workspace('__dataws', dataY=dataY)
def test_DNSFRVanaCorrection(self): outputWorkspaceName = "DNSFlippingRatioCorrTest_Test6" # create fake vanadium data workspaces dataY = np.array([ 1811., 2407., 3558., 3658., 3352., 2321., 2240., 2617., 3245., 3340., 3338., 3310., 2744., 3212., 1998., 2754., 2791., 2509., 3045., 3429., 3231., 2668., 3373., 2227. ]) __sf_vanaws = create_fake_dns_workspace('__sf_vanaws', dataY=dataY / 58.0, flipper='ON') self.workspaces.append('__sf_vanaws') dataY = np.array([ 2050., 1910., 2295., 2236., 1965., 1393., 1402., 1589., 1902., 1972., 2091., 1957., 1593., 1952., 1232., 1720., 1689., 1568., 1906., 2001., 2051., 1687., 1975., 1456. ]) __nsf_vanaws = create_fake_dns_workspace('__nsf_vanaws', dataY=dataY / 58.0, flipper='OFF') self.workspaces.append('__nsf_vanaws') # consider normalization=1.0 as set in self._create_fake_workspace dataws_sf = __sf_vanaws - self.__sf_bkgrws dataws_nsf = __nsf_vanaws - self.__nsf_bkgrws alg_test = run_algorithm("DNSFlippingRatioCorr", SFDataWorkspace=dataws_sf, NSFDataWorkspace=dataws_nsf, SFNiCrWorkspace=self.__sf_nicrws.getName(), NSFNiCrWorkspace=self.__nsf_nicrws.getName(), SFBkgrWorkspace=self.__sf_bkgrws.getName(), NSFBkgrWorkspace=self.__nsf_bkgrws.getName(), SFOutputWorkspace=outputWorkspaceName + 'SF', NSFOutputWorkspace=outputWorkspaceName + 'NSF') self.assertTrue(alg_test.isExecuted()) # check whether the data are correct ws_sf = AnalysisDataService.retrieve(outputWorkspaceName + 'SF') ws_nsf = AnalysisDataService.retrieve(outputWorkspaceName + 'NSF') # dimensions self.assertEqual(24, ws_sf.getNumberHistograms()) self.assertEqual(24, ws_nsf.getNumberHistograms()) self.assertEqual(2, ws_sf.getNumDims()) self.assertEqual(2, ws_nsf.getNumDims()) # data array: for vanadium ratio sf/nsf must be around 2 ws = ws_sf / ws_nsf for i in range(24): self.assertAlmostEqual(2.0, np.around(ws.readY(i))) run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'SF') run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'NSF') run_algorithm("DeleteWorkspace", Workspace=dataws_sf) run_algorithm("DeleteWorkspace", Workspace=dataws_nsf) run_algorithm("DeleteWorkspace", Workspace=ws) return
def setUp(self): self.workspaces = [] for i in range(4): angle = -7.5 - i*0.5 wsname = "__testws" + str(i) create_fake_dns_workspace(wsname, angle=angle, loadinstrument=True) self.workspaces.append(wsname) # create reference values angles = np.empty(0) for j in range(4): a = 7.5 + j*0.5 angles = np.hstack([angles, np.array([i*5 + a for i in range(24)])]) self.angles = np.sort(angles)
def setUp(self): dataY = np.array([2997., 2470., 2110., 1818., 840., 1095., 944., 720., 698., 699., 745., 690., 977., 913., 906., 1007., 1067., 1119., 1467., 1542., 2316., 1536., 1593., 1646.]) self.__sf_bkgrws = create_fake_dns_workspace('__sf_bkgrws', dataY=dataY/620.0, flipper='ON') self.workspaces.append('__sf_bkgrws') dataY = np.array([14198., 7839., 4386., 3290., 1334., 1708., 1354., 1026., 958., 953., 888., 847., 1042., 1049., 1012., 1116., 1294., 1290., 1834., 1841., 2740., 1750., 1965., 1860.]) self.__nsf_bkgrws = create_fake_dns_workspace('__nsf_bkgrws', dataY=dataY/619.0, flipper='OFF') self.workspaces.append('__nsf_bkgrws') dataY = np.array([5737., 5761., 5857., 5571., 4722., 5102., 4841., 4768., 5309., 5883., 5181., 4455., 4341., 4984., 3365., 4885., 4439., 4103., 4794., 14760., 10516., 4445., 5460., 3942.]) self.__nsf_nicrws = create_fake_dns_workspace('__nsf_nicrws', dataY=dataY/58.0, flipper='OFF') self.workspaces.append('__nsf_nicrws') dataY = np.array([2343., 2270., 2125., 2254., 1534., 1863., 1844., 1759., 1836., 2030., 1848., 1650., 1555., 1677., 1302., 1750., 1822., 1663., 2005., 4025., 3187., 1935., 2331., 2125.]) self.__sf_nicrws = create_fake_dns_workspace('__sf_nicrws', dataY=dataY/295.0, flipper='ON') self.workspaces.append('__sf_nicrws')
def test_DNSFRVanaCorrection(self): outputWorkspaceName = "DNSFlippingRatioCorrTest_Test6" # create fake vanadium data workspaces dataY = np.array([1811., 2407., 3558., 3658., 3352., 2321., 2240., 2617., 3245., 3340., 3338., 3310., 2744., 3212., 1998., 2754., 2791., 2509., 3045., 3429., 3231., 2668., 3373., 2227.]) __sf_vanaws = create_fake_dns_workspace('__sf_vanaws', dataY=dataY/58.0, flipper='ON') self.workspaces.append('__sf_vanaws') dataY = np.array([2050., 1910., 2295., 2236., 1965., 1393., 1402., 1589., 1902., 1972., 2091., 1957., 1593., 1952., 1232., 1720., 1689., 1568., 1906., 2001., 2051., 1687., 1975., 1456.]) __nsf_vanaws = create_fake_dns_workspace('__nsf_vanaws', dataY=dataY/58.0, flipper='OFF') self.workspaces.append('__nsf_vanaws') # consider normalization=1.0 as set in self._create_fake_workspace dataws_sf = __sf_vanaws - self.__sf_bkgrws dataws_nsf = __nsf_vanaws - self.__nsf_bkgrws alg_test = run_algorithm("DNSFlippingRatioCorr", SFDataWorkspace=dataws_sf, NSFDataWorkspace=dataws_nsf, SFNiCrWorkspace=self.__sf_nicrws.getName(), NSFNiCrWorkspace=self.__nsf_nicrws.getName(), SFBkgrWorkspace=self.__sf_bkgrws.getName(), NSFBkgrWorkspace=self.__nsf_bkgrws.getName(), SFOutputWorkspace=outputWorkspaceName+'SF', NSFOutputWorkspace=outputWorkspaceName+'NSF') self.assertTrue(alg_test.isExecuted()) # check whether the data are correct ws_sf = AnalysisDataService.retrieve(outputWorkspaceName + 'SF') ws_nsf = AnalysisDataService.retrieve(outputWorkspaceName + 'NSF') # dimensions self.assertEqual(24, ws_sf.getNumberHistograms()) self.assertEqual(24, ws_nsf.getNumberHistograms()) self.assertEqual(2, ws_sf.getNumDims()) self.assertEqual(2, ws_nsf.getNumDims()) # data array: for vanadium ratio sf/nsf must be around 2 ws = ws_sf/ws_nsf for i in range(24): self.assertAlmostEqual(2.0, np.around(ws.readY(i))) run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'SF') run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'NSF') run_algorithm("DeleteWorkspace", Workspace=dataws_sf) run_algorithm("DeleteWorkspace", Workspace=dataws_nsf) run_algorithm("DeleteWorkspace", Workspace=ws) return
def test_DNSVanadiumCorrection_Groups(self): outputWorkspaceName = "DNSComputeDetCorrCoefsTest_Test1" dataY = np.linspace(2, 13.5, 24) sfvana2 = create_fake_dns_workspace('sfvana2', dataY=dataY, flipper='ON', angle=-8.54, loadinstrument=True) nsfvana2 = create_fake_dns_workspace('nsfvana2', dataY=dataY, flipper='OFF', angle=-8.54, loadinstrument=True) vanagroupsf = GroupWorkspaces([self.sfvanaws, sfvana2]) vanagroupnsf = GroupWorkspaces([self.nsfvanaws, nsfvana2]) dataY.fill(1.5) sfbg2 = create_fake_dns_workspace('sfbg2', dataY=dataY, flipper='ON', angle=-8.54, loadinstrument=True) nsfbg2 = create_fake_dns_workspace('nsfbg2', dataY=dataY, flipper='OFF', angle=-8.54, loadinstrument=True) bggroupsf = GroupWorkspaces([self.sfbkgrws, sfbg2]) bggroupnsf = GroupWorkspaces([self.nsfbkgrws, nsfbg2]) alg_test = run_algorithm("DNSComputeDetEffCorrCoefs", VanadiumWorkspaces=[vanagroupsf, vanagroupnsf], BackgroundWorkspaces=[bggroupsf, bggroupnsf], OutputWorkspace=outputWorkspaceName) self.assertTrue(alg_test.isExecuted()) # check whether the data are correct group = AnalysisDataService.retrieve(outputWorkspaceName) self.assertTrue(isinstance(group, WorkspaceGroup)) self.assertEqual(2, group.getNumberOfEntries()) res1 = group.getItem(0) res2 = group.getItem(1) # dimensions self.assertEqual(24, res1.getNumberHistograms()) self.assertEqual(24, res2.getNumberHistograms()) self.assertEqual(2, res1.getNumDims()) self.assertEqual(2, res2.getNumDims()) # reference data refdata = np.linspace(0.08, 1.92, 24) # data array for i in range(24): self.assertAlmostEqual(refdata[i], res1.readY(i)) self.assertAlmostEqual(refdata[i], res2.readY(i)) wslist = [outputWorkspaceName, 'sfvana2', 'nsfvana2', 'sfbg2', 'nsfbg2'] for wsname in wslist: run_algorithm("DeleteWorkspace", Workspace=wsname) return
def test_DNSDoubleSpinFlip(self): outputWorkspaceName = "DNSFlippingRatioCorrTest_Test7" f = 0.2 # create fake vanadium data workspaces dataY = np.array([1811., 2407., 3558., 3658., 3352., 2321., 2240., 2617., 3245., 3340., 3338., 3310., 2744., 3212., 1998., 2754., 2791., 2509., 3045., 3429., 3231., 2668., 3373., 2227.]) __sf_vanaws = create_fake_dns_workspace('__sf_vanaws', dataY=dataY/58.0, flipper='ON') self.workspaces.append('__sf_vanaws') dataY = np.array([2050., 1910., 2295., 2236., 1965., 1393., 1402., 1589., 1902., 1972., 2091., 1957., 1593., 1952., 1232., 1720., 1689., 1568., 1906., 2001., 2051., 1687., 1975., 1456.]) __nsf_vanaws = create_fake_dns_workspace('__nsf_vanaws', dataY=dataY/58.0, flipper='OFF') self.workspaces.append('__nsf_vanaws') # consider normalization=1.0 as set in self._create_fake_workspace dataws_sf = __sf_vanaws - self.__sf_bkgrws dataws_nsf = __nsf_vanaws - self.__nsf_bkgrws alg_test = run_algorithm("DNSFlippingRatioCorr", SFDataWorkspace=dataws_sf, NSFDataWorkspace=dataws_nsf, SFNiCrWorkspace=self.__sf_nicrws.getName(), NSFNiCrWorkspace=self.__nsf_nicrws.getName(), SFBkgrWorkspace=self.__sf_bkgrws.getName(), NSFBkgrWorkspace=self.__nsf_bkgrws.getName(), SFOutputWorkspace=outputWorkspaceName+'SF', NSFOutputWorkspace=outputWorkspaceName+'NSF', DoubleSpinFlipScatteringProbability=0.0) self.assertTrue(alg_test.isExecuted()) alg_test = run_algorithm("DNSFlippingRatioCorr", SFDataWorkspace=dataws_sf, NSFDataWorkspace=dataws_nsf, SFNiCrWorkspace=self.__sf_nicrws.getName(), NSFNiCrWorkspace=self.__nsf_nicrws.getName(), SFBkgrWorkspace=self.__sf_bkgrws.getName(), NSFBkgrWorkspace=self.__nsf_bkgrws.getName(), SFOutputWorkspace=outputWorkspaceName+'SF1', NSFOutputWorkspace=outputWorkspaceName+'NSF1', DoubleSpinFlipScatteringProbability=f) self.assertTrue(alg_test.isExecuted()) # check whether the data are correct ws_sf = AnalysisDataService.retrieve(outputWorkspaceName + 'SF') ws_sf1 = AnalysisDataService.retrieve(outputWorkspaceName + 'SF1') ws_nsf = AnalysisDataService.retrieve(outputWorkspaceName + 'NSF') ws_nsf1 = AnalysisDataService.retrieve(outputWorkspaceName + 'NSF1') # dimensions self.assertEqual(24, ws_sf.getNumberHistograms()) self.assertEqual(24, ws_sf1.getNumberHistograms()) self.assertEqual(24, ws_nsf.getNumberHistograms()) self.assertEqual(24, ws_nsf1.getNumberHistograms()) self.assertEqual(2, ws_sf.getNumDims()) self.assertEqual(2, ws_sf1.getNumDims()) self.assertEqual(2, ws_nsf.getNumDims()) self.assertEqual(2, ws_nsf1.getNumDims()) # data array: sf must not change for i in range(24): self.assertAlmostEqual(ws_sf.readY(i), ws_sf1.readY(i)) # data array: nsf1 = nsf - sf*f nsf = np.array(ws_nsf.extractY()) sf = np.array(ws_sf.extractY()) refdata = nsf - sf*f for i in range(24): self.assertAlmostEqual(refdata[i], ws_nsf1.readY(i)) run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'SF') run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'SF1') run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'NSF') run_algorithm("DeleteWorkspace", Workspace=outputWorkspaceName + 'NSF1') run_algorithm("DeleteWorkspace", Workspace=dataws_sf) run_algorithm("DeleteWorkspace", Workspace=dataws_nsf) return