Example #1
0
    def setUp(self):
        TestCase.setUp(self)

        energies_eV = [1.0, 1.5, 2.0, 2.5]
        total_val = [6.0, 9.0, 1.0, 5.0]
        total_unc = [0.1, 0.5, 0.9, 0.05]
        background_val = [1.0, 2.0, 2.0, 0.5]
        background_unc = [0.05, 0.04, 0.03, 0.02]

        total = np.array([energies_eV, total_val, total_unc]).T
        background = np.array([energies_eV, background_val, background_unc]).T

        self.r = PhotonSpectrumResult(total, background)
Example #2
0
    def _import_photon_spectrum(self, options, name, detector, path):
        wxrresult = XRaySpectrum(path)

        # Retrieve data
        energies = np.array(wxrresult.data[WXRSPC_ENERGY])
        total = np.array([energies, wxrresult.data[WXRSPC_TOTAL]]).T
        background = np.array([energies, wxrresult.data[WXRSPC_BACKGROUND]]).T

        # Arrange units
        factor = self._get_normalization_factor(options, detector)
        factor /= energies[1] - energies[0]

        total[:, 1] *= factor
        background[:, 1] *= factor

        return PhotonSpectrumResult(total, background)
Example #3
0
    def _import_photon_spectrum(self, options, key, detector, path,
                                phdets_key_index, phdets_index_keys, *args):
        index = phdets_key_index[key] + 1

        # Find data files
        spect_filepath = os.path.join(path,
                                      'pe-spect-%s.dat' % str(index).zfill(2))
        if not os.path.exists(spect_filepath):
            raise ImporterException("Data file %s cannot be found" %
                                    spect_filepath)

        # Load total spectrum
        energies, total_val, total_unc = _load_dat_files(spect_filepath)
        total = np.array([energies, total_val, total_unc]).T

        # Generate fake background
        background = np.zeros(total.shape)
        background[:, 0] = energies

        return PhotonSpectrumResult(total, background)
Example #4
0
class TestPhotonSpectrumResult(TestCase):

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

        energies_eV = [1.0, 1.5, 2.0, 2.5]
        total_val = [6.0, 9.0, 1.0, 5.0]
        total_unc = [0.1, 0.5, 0.9, 0.05]
        background_val = [1.0, 2.0, 2.0, 0.5]
        background_unc = [0.05, 0.04, 0.03, 0.02]

        total = np.array([energies_eV, total_val, total_unc]).T
        background = np.array([energies_eV, background_val, background_unc]).T

        self.r = PhotonSpectrumResult(total, background)

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

    def testskeleton(self):
        self.assertAlmostEqual(1.0, self.r.energy_offset_eV, 4)
        self.assertAlmostEqual(0.5, self.r.energy_channel_width_eV, 4)

    def testget_total(self):
        spectrum = self.r.get_total()

        self.assertEqual((4, 3), spectrum.shape)
        self.assertAlmostEqual(1.0, spectrum[0][0], 4)
        self.assertAlmostEqual(6.0, spectrum[0][1], 4)
        self.assertAlmostEqual(0.1, spectrum[0][2], 4)

    def testget_background(self):
        spectrum = self.r.get_background()

        self.assertEqual((4, 3), spectrum.shape)
        self.assertAlmostEqual(1.0, spectrum[0][0], 4)
        self.assertAlmostEqual(1.0, spectrum[0][1], 4)
        self.assertAlmostEqual(0.05, spectrum[0][2], 4)

    def testtotal_intensity(self):
        val, unc = self.r.total_intensity(0.0)
        self.assertAlmostEqual(0.0, val, 4)
        self.assertAlmostEqual(0.0, unc, 4)

        val, unc = self.r.total_intensity(1.0)
        self.assertAlmostEqual(6.0, val, 4)
        self.assertAlmostEqual(0.1, unc, 4)

        val, unc = self.r.total_intensity(1.2)
        self.assertAlmostEqual(6.0, val, 4)
        self.assertAlmostEqual(0.1, unc, 4)

        val, unc = self.r.total_intensity(1.5)
        self.assertAlmostEqual(9.0, val, 4)
        self.assertAlmostEqual(0.5, unc, 4)

        val, unc = self.r.total_intensity(2.5)
        self.assertAlmostEqual(5.0, val, 4)
        self.assertAlmostEqual(0.05, unc, 4)

        val, unc = self.r.total_intensity(3.0)
        self.assertAlmostEqual(0.0, val, 4)
        self.assertAlmostEqual(0.0, unc, 4)

    def testbackground_intensity(self):
        val, unc = self.r.background_intensity(0.0)
        self.assertAlmostEqual(0.0, val, 4)
        self.assertAlmostEqual(0.0, unc, 4)

        val, unc = self.r.background_intensity(1.0)
        self.assertAlmostEqual(1.0, val, 4)
        self.assertAlmostEqual(0.05, unc, 4)

        val, unc = self.r.background_intensity(1.2)
        self.assertAlmostEqual(1.0, val, 4)
        self.assertAlmostEqual(0.05, unc, 4)

        val, unc = self.r.background_intensity(1.5)
        self.assertAlmostEqual(2.0, val, 4)
        self.assertAlmostEqual(0.04, unc, 4)

        val, unc = self.r.background_intensity(2.5)
        self.assertAlmostEqual(0.5, val, 4)
        self.assertAlmostEqual(0.02, unc, 4)

        val, unc = self.r.background_intensity(3.0)
        self.assertAlmostEqual(0.0, val, 4)
        self.assertAlmostEqual(0.0, unc, 4)