Example #1
0
class TestExperiment(TestCase):

    def setUp(self):
        TestCase.setUp(self)

        geometry = MultiLayers(pure(29))
        geometry.add_layer(Material("AuPd", {79: 0.5, 46: 0.5}), 100e-9)

        baseops = Options()
        baseops.detectors['xray'] = PhotonIntensityDetector((0, 1), (0, 3))
        meas = Measurement(baseops)
        meas.add_kratio(Ka(29), 0.2470, 0.004)

        getter = lambda geometry: geometry.layers[0].thickness_m
        setter = lambda geometry, val: setattr(geometry.layers[0], 'thickness_m', val)
        param = Parameter(getter, setter, 100e-9, 10e-9, 500e-9)

        self.exp = Experiment(geometry, [meas], [param])

    def tearDown(self):
        TestCase.tearDown(self)

    def testreference_kratios(self):
        kratios = self.exp.reference_kratios
        self.assertEqual(1, len(kratios))
        self.assertAlmostEqual(0.2470, kratios[0], 4)

    def testparameters_initial_values(self):
        vals = self.exp.parameters_initial_values
        self.assertEqual(1, len(vals))
        self.assertAlmostEqual(100e-9, vals[0], 13)

    def testparameters_constraints(self):
        constraints = self.exp.parameters_constraints
        self.assertEqual(1, len(constraints))
        self.assertAlmostEqual(10e-9, constraints[0][0], 13)
        self.assertAlmostEqual(500e-9, constraints[0][1], 13)

    def testcreate_standard_options(self):
        list_options = self.exp.create_standard_options()
        self.assertEqual(1, len(list_options))
        self.assertEqual('0+Cu Ka', list_options[0].name)

    def testextract_standard_intensities(self):
        list_options = self.exp.create_standard_options()
        stdoptions = list_options[0]

        intensities = create_intensity_dict(Ka(29), et=(8.0, 0.0))
        stdresults = Results(stdoptions,
                             {'xray': PhotonIntensityResult(intensities)})

        stdintensities = self.exp.extract_standard_intensities([stdresults])

        self.assertEqual(1, len(stdintensities))
        self.assertAlmostEqual(8.0, stdintensities[0], 4)

    def testcreate_geometry(self):
        values = [200e-9]
        geometry = self.exp.create_geometry(values)
        self.assertAlmostEqual(200e-9, geometry.layers[0].thickness_m, 13)

    def testcreate_unknown_options(self):
        list_values = [(200e-9,), (250e-9,)]
        list_options = self.exp.create_unknown_options(list_values)
        self.assertEqual(2, len(list_options))

        unkoptions = list_options[0]
        self.assertAlmostEqual(200e-9, unkoptions.geometry.layers[0].thickness_m, 13)

        unkoptions = list_options[1]
        self.assertAlmostEqual(250e-9, unkoptions.geometry.layers[0].thickness_m, 13)

    def testextract_kratios(self):
        list_values = [(200e-9,), (250e-9,)]
        list_options = self.exp.create_unknown_options(list_values)

        intensities = create_intensity_dict(Ka(29), et=(4.0, 0.0))
        results1 = Results(list_options[0],
                           {'xray': PhotonIntensityResult(intensities)})

        intensities = create_intensity_dict(Ka(29), et=(8.0, 0.0))
        results2 = Results(list_options[1],
                           {'xray': PhotonIntensityResult(intensities)})

        intensities = self.exp.extract_unknown_intensities([results1, results2])

        self.assertEqual(2, len(intensities))
        self.assertAlmostEqual(4.0, intensities[0][0], 4)
        self.assertAlmostEqual(8.0, intensities[1][0], 4)