Beispiel #1
0
    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
Beispiel #5
0
 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)
Beispiel #6
0
 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 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