Esempio n. 1
0
    def setup_method(self, method):
        beam_energy = 200
        energy_resolution_MnKa = 130
        energy_axis = {'units': 'keV', 'size': 1200, 'scale': 0.01,
                       'name': 'E'}
        s1 = utils_eds.xray_lines_model(
            elements=['Fe', 'Cr'], weight_percents=[30, 70],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis)
        s2 = utils_eds.xray_lines_model(
            elements=['Ga', 'As'], weight_percents=[50, 50],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis)

        mix = np.linspace(0., 1., 4).reshape(2, 2)
        mix_data = np.tile(s1.data, mix.shape + (1,))
        s = s1._deepcopy_with_new_data(mix_data)
        a = s.axes_manager._axes.pop(0).get_axis_dictionary()
        s.axes_manager.create_axes([{'size': mix.shape[0],
                                     'navigate': True}] * 2 + [a])
        s.add_elements(s2.metadata.Sample.elements)

        for d, m in zip(s._iterate_signal(), mix.flatten()):
            d[:] = d * m + (1 - m) * s2.data
        self.mix = mix
        self.s = s
Esempio n. 2
0
    def setup_method(self, method):
        beam_energy = 200
        energy_resolution_MnKa = 130
        energy_axis = {'units': 'keV', 'size': 1200, 'scale': 0.01,
                       'name': 'E'}
        s1 = utils_eds.xray_lines_model(
            elements=['Fe', 'Cr'], weight_percents=[30, 70],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis)
        s2 = utils_eds.xray_lines_model(
            elements=['Ga', 'As'], weight_percents=[50, 50],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis)

        mix = np.linspace(0., 1., 4).reshape(2, 2)
        mix_data = np.tile(s1.data, mix.shape + (1,))
        s = s1._deepcopy_with_new_data(mix_data)
        a = s.axes_manager._axes.pop(0).get_axis_dictionary()
        s.axes_manager.create_axes([{'size': mix.shape[0],
                                     'navigate': True}] * 2 + [a])
        s.add_elements(s2.metadata.Sample.elements)

        for d, m in zip(s._iterate_signal(), mix.flatten()):
            d[:] = d * m + (1 - m) * s2.data
        self.mix = mix
        self.s = s
Esempio n. 3
0
    def setUp(self):
        beam_energy = 200
        energy_resolution_MnKa = 130
        energy_axis = {"units": "keV", "size": 1200, "scale": 0.01, "name": "E"}
        s1 = utils_eds.xray_lines_model(
            elements=["Fe", "Cr"],
            weight_percents=[30, 70],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis,
        )
        s2 = utils_eds.xray_lines_model(
            elements=["Ga", "As"],
            weight_percents=[50, 50],
            beam_energy=beam_energy,
            energy_resolution_MnKa=energy_resolution_MnKa,
            energy_axis=energy_axis,
        )

        mix = np.linspace(0.0, 1.0, 4).reshape(2, 2)
        mix_data = np.tile(s1.data, mix.shape + (1,))
        s = s1._deepcopy_with_new_data(mix_data)
        a = s.axes_manager._axes.pop(0).get_axis_dictionary()
        s.axes_manager.create_axes([{"size": mix.shape[0], "navigate": True}] * 2 + [a])
        s.add_elements(s2.metadata.Sample.elements)

        for d, m in zip(s._iterate_signal(), mix.flatten()):
            d[:] = d * m + (1 - m) * s2.data
        self.mix = mix
        self.s = s
Esempio n. 4
0
 def setUp(self):
     s = utils_eds.xray_lines_model(
         elements=["Fe", "Cr", "Zn"],
         beam_energy=200,
         weight_percents=[20, 50, 30],
         energy_resolution_MnKa=130,
         energy_axis={"units": "keV", "size": 400, "scale": 0.01, "name": "E", "offset": 5.0},
     )
     s = s + 0.002
     self.s = s
Esempio n. 5
0
 def setup_method(self, method):
     s = utils_eds.xray_lines_model(elements=['Fe', 'Cr', 'Zn'],
                                    beam_energy=200,
                                    weight_percents=[20, 50, 30],
                                    energy_resolution_MnKa=130,
                                    energy_axis={'units': 'keV',
                                                 'size': 400,
                                                 'scale': 0.01,
                                                 'name': 'E',
                                                 'offset': 5.})
     s = s + 0.002
     self.s = s
Esempio n. 6
0
    def test_calibrate_xray_weight(self):
        s = self.s
        s1 = utils_eds.xray_lines_model(
            elements=["Co"],
            weight_percents=[50],
            energy_axis={"units": "keV", "size": 400, "scale": 0.01, "name": "E", "offset": 4.9},
        )
        s = s + s1 / 50
        m = s.create_model()
        m.fit()
        with assert_warns(message="The X-ray line expected to be in the model " "was not found"):
            m.calibrate_xray_lines(calibrate="sub_weight", xray_lines=["Fe_Ka"], bound=100)

        nt.assert_true(np.allclose(0.0347, m["Fe_Kb"].A.value, atol=1e-3))
Esempio n. 7
0
    def test_calibrate_xray_weight(self):
        s = self.s
        s1 = utils_eds.xray_lines_model(
            elements=['Co'],
            weight_percents=[50],
            energy_axis={'units': 'keV', 'size': 400,
                         'scale': 0.01, 'name': 'E',
                         'offset': 4.9})
        s = (s + s1 / 50)
        m = s.create_model()
        m.fit()
        with assert_warns(message='The X-ray line expected to be in the model '
                          'was not found'):
            m.calibrate_xray_lines(calibrate='sub_weight',
                                   xray_lines=['Fe_Ka'], bound=100)

        np.testing.assert_allclose(0.0347, m['Fe_Kb'].A.value,
                                   atol=1e-3)
Esempio n. 8
0
 def setup_method(self, method):
     s = utils_eds.xray_lines_model(elements=['Al', 'Zn'],
                                    weight_percents=[50, 50])
     self.signal = s
Esempio n. 9
0
 def setup_method(self, method):
     s = utils_eds.xray_lines_model(elements=['Al', 'Zn'],
                                    weight_percents=[50, 50])
     self.signal = s
Esempio n. 10
0
from hyperspy.datasets.example_signals import EDS_TEM_Spectrum
from hyperspy.decorators import lazifyTestClass
from hyperspy.misc import utils
from hyperspy.misc.eds import utils as utils_eds
from hyperspy.misc.elements import elements as elements_db


# Create this outside the test class to
# reduce computation in test suite by ~10seconds
s = utils_eds.xray_lines_model(
    elements=["Fe", "Cr", "Zn"],
    beam_energy=200,
    weight_percents=[20, 50, 30],
    energy_resolution_MnKa=130,
    energy_axis={
        "units": "keV",
        "size": 400,
        "scale": 0.01,
        "name": "E",
        "offset": 5.0,
    },
)
s = s + 0.002


@lazifyTestClass
class TestlineFit:

    def setup_method(self, method):
        self.s = s.deepcopy()
Esempio n. 11
0
 def setUp(self):
     s = utils_eds.xray_lines_model(elements=["Al", "Zn"], weight_percents=[50, 50])
     self.signal = s
Esempio n. 12
0
 def setUp(self):
     s = utils_eds.xray_lines_model(elements=['Al', 'Zn'],
                                    weight_percents=[50, 50])
     self.spectrum = s