hyperspy.models.edsmodel module
- class hyperspy.models.edsmodel.EDSModel(spectrum, auto_background=True, auto_add_lines=True, *args, **kwargs)
Bases:
hyperspy.models.model1d.Model1D
Build and fit a model of an EDS Signal1D.
- Parameters
spectrum (EDSSpectrum (or any EDSSpectrum subclass) instance.) –
auto_add_lines (bool) – If True, automatically add Gaussians for all X-rays generated in the energy range by an element, using the edsmodel.add_family_lines method.
auto_background (bool) – If True, adds automatically a polynomial order 6 to the model, using the edsmodel.add_polynomial_background method.
creator. (Any extra arguments are passed to the Model) –
Example
>>> m = s.create_model() >>> m.fit() >>> m.fit_background() >>> m.calibrate_energy_axis('resolution') >>> m.calibrate_xray_lines('energy', ['Au_Ma']) >>> m.calibrate_xray_lines('sub_weight',['Mn_La'], bound=10)
- _set_energy_offset(xray_lines, ref)
Adjust the width of all lines and set the fitted energy resolution to the spectrum
- Parameters
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
ref (list of float) – The centres, before fitting, of the X-ray lines included
- _set_energy_resolution(xray_lines, *args, **kwargs)
Adjust the width of all lines and set the fitted energy resolution to the spectrum
- Parameters
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
- _set_energy_scale(xray_lines, ref)
Adjust the width of all lines and set the fitted energy resolution to the spectrum
- Parameters
xray_lines (list of str or 'all_alpha') – The X-ray lines. If ‘all_alpha’, fit all using all alpha lines
ref (list of float) – The centres, before fitting, of the X-ray lines included
- _twin_xray_lines_offset(xray_lines)
Twin the offset of the peaks
- Parameters
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
- _twin_xray_lines_scale(xray_lines)
Twin the scale of the peaks
- Parameters
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
- _twin_xray_lines_width(xray_lines)
Twin the width of the peaks
The twinning models the energy resolution of the detector
- Parameters
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
- add_family_lines(xray_lines='from_elements')
Create the Xray-lines instances and configure them appropiately
If a X-ray line is given, all the the lines of the familiy is added. For instance if Zn Ka is given, Zn Kb is added too. The main lines (alpha) is added to self.xray_lines
- Parameters
xray_lines ({None, 'from_elements', list of string}) – If None, if metadata contains xray_lines list of lines use those. If ‘from_elements’, add all lines from the elements contains in metadata. Alternatively, provide an iterable containing a list of valid X-ray lines symbols. (eg. (‘Al_Ka’,’Zn_Ka’)).
- add_polynomial_background(order=6)
Add a polynomial background.
the background is added to self.background_components
- Parameters
order (int) – The order of the polynomial
- as_dictionary(fullcopy=True)
Returns a dictionary of the model, including all components, degrees of freedom (dof) and chi-squared (chisq) with values.
- Parameters
fullcopy (bool (optional, True)) – Copies of objects are stored, not references. If any found, functions will be pickled and signals converted to dictionaries
- Returns
dictionary – A dictionary including at least the following fields:
components: a list of dictionaries of components, one per component
_whitelist: a dictionary with keys used as references for saved attributes, for more information, see
export_to_dictionary()
any field from _whitelist.keys()
- Return type
Examples
>>> s = signals.Signal1D(np.random.random((10,100))) >>> m = s.create_model() >>> l1 = components1d.Lorentzian() >>> l2 = components1d.Lorentzian() >>> m.append(l1) >>> m.append(l2) >>> d = m.as_dictionary() >>> m2 = s.create_model(dictionary=d)
- calibrate_energy_axis(calibrate='resolution', xray_lines='all_alpha', **kwargs)
Calibrate the resolution, the scale or the offset of the energy axis by fitting.
- Parameters
calibrate ('resolution' or 'scale' or 'offset') – If ‘resolution’, fits the width of Gaussians place at all x-ray lines. The width is given by a model of the detector resolution, obtained by extrapolating the energy_resolution_MnKa in metadata metadata. This method will update the value of energy_resolution_MnKa. If ‘scale’, calibrate the scale of the energy axis If ‘offset’, calibrate the offset of the energy axis
xray_lines (list of str or 'all_alpha') – The Xray lines. If ‘all_alpha’, fit all using all alpha lines
**kwargs (extra key word arguments) – All extra key word arguments are passed to fit or multifit, depending on the value of kind.
- calibrate_xray_lines(calibrate='energy', xray_lines='all', bound=1, kind='single', **kwargs)
Calibrate individually the X-ray line parameters.
The X-ray line energy, the weight of the sub-lines and the X-ray line width can be calibrated.
- Parameters
calibrate ('energy' or 'sub_weight' or 'width') – If ‘energy’, calibrate the X-ray line energy. If ‘sub_weight’, calibrate the ratio between the main line alpha and the other sub-lines of the family If ‘width’, calibrate the X-ray line width.
xray_lines (list of str or 'all') – The Xray lines. If ‘all’, fit all lines
bounds (float) – for ‘energy’ and ‘width’ the bound in energy, in eV for ‘sub_weight’ Bound the height of the peak to fraction of its height
kind ({'single', 'multi'}) – If ‘single’ fit only the current location. If ‘multi’ use multifit.
**kwargs (extra key word arguments) – All extra key word arguments are passed to fit or multifit, depending on the value of kind.
- disable_xray_lines()
Disable the X-ray lines components.
- enable_xray_lines()
Enable the X-ray lines components.
- fit_background(start_energy=None, end_energy=None, windows_sigma=(4.0, 3.0), kind='single', **kwargs)
Fit the background in the energy range containing no X-ray line.
After the fit, the background is fixed.
- Parameters
start_energy ({float, None}) – If float, limit the range of energies from the left to the given value.
end_energy ({float, None}) – If float, limit the range of energies from the right to the given value.
windows_sigma (tuple of two float) – The (lower, upper) bounds around each X-ray line, each as a float, to define the energy range free of X-ray lines.
kind ({'single', 'multi'}) – If ‘single’ fit only the current location. If ‘multi’ use multifit.
**kwargs (extra key word arguments) – All extra key word arguments are passed to fit or multifit
See also
- fix_background()
Fix the background components.
- fix_sub_xray_lines_weight(xray_lines='all')
Fix the weight of a sub X-ray lines to the main X-ray lines
Establish the twin on the height of sub-Xray lines (non alpha)
- fix_xray_lines_energy(xray_lines='all')
Fix the X-ray line energy (shift or centre of the Gaussian)
- Parameters
xray_lines (list of str, 'all', or 'all_alpha') – The Xray lines. If ‘all’, fit all lines. If ‘all_alpha’ fit all using all alpha lines.
bound (float) – the bound around the actual energy, in keV or eV
- fix_xray_lines_width(xray_lines='all')
Fix the X-ray line width (sigma of the Gaussian)
- Parameters
xray_lines (list of str, 'all', or 'all_alpha') – The Xray lines. If ‘all’, fit all lines. If ‘all_alpha’ fit all using all alpha lines.
bound (float) – the bound around the actual energy, in keV or eV
- free_background()
Free the yscale of the background components.
- free_sub_xray_lines_weight(xray_lines='all', bound=0.01)
Free the weight of a sub X-ray lines
Remove the twin on the height of sub-Xray lines (non alpha)
- Parameters
xray_lines (list of str or 'all') – The Xray lines. If ‘all’, fit all lines
bounds (float) – Bound the height of the peak to a fraction of its height
- free_xray_lines_energy(xray_lines='all', bound=0.001)
Free the X-ray line energy (shift or centre of the Gaussian)
- Parameters
xray_lines (list of str or 'all') – The Xray lines. If ‘all’, fit all lines
bound (float) – the bound around the actual energy, in keV or eV
- free_xray_lines_width(xray_lines='all', bound=0.01)
Free the X-ray line width (sigma of the Gaussian)
- Parameters
xray_lines (list of str or 'all') – The Xray lines. If ‘all’, fit all lines
bound (float) – the bound around the actual energy, in keV or eV
- get_lines_intensity(xray_lines=None, plot_result=False, only_one=True, only_lines=('a',), **kwargs)
Return the fitted intensity of the X-ray lines.
Return the area under the gaussian corresping to the X-ray lines
- Parameters
xray_lines ({None, list of string}) – If None, if metadata.Sample.elements.xray_lines contains a list of lines use those. If metadata.Sample.elements.xray_lines is undefined or empty but metadata.Sample.elements is defined, use the same syntax as add_line to select a subset of lines for the operation. Alternatively, provide an iterable containing a list of valid X-ray lines symbols.
plot_result (bool) – If True, plot the calculated line intensities. If the current object is a single spectrum it prints the result instead.
only_one (bool) – If False, use all the lines of each element in the data spectral range. If True use only the line at the highest energy above an overvoltage of 2 (< beam energy / 2).
only_lines ({None, list of strings}) – If not None, use only the given lines.
kwargs – The extra keyword arguments for plotting. See utils.plot.plot_signals
- Returns
intensities – A list containing the intensities as Signal subclasses.
- Return type
Examples
>>> m.multifit() >>> m.get_lines_intensity(["C_Ka", "Ta_Ma"])
- remove(thing)
Remove component from model.
Examples
>>> s = hs.signals.Signal1D(np.empty(1)) >>> m = s.create_model() >>> g = hs.model.components1D.Gaussian() >>> m.append(g)
You could remove g like this
>>> m.remove(g)
Like this:
>>> m.remove("Gaussian")
Or like this:
>>> m.remove(0)
- hyperspy.models.edsmodel._get_sigma(E, E_ref, units_factor, return_f=False)
Calculates an approximate sigma value, accounting for peak broadening due to the detector, for a peak at energy E given a known width at a reference energy.
The factor 2.5 is a constant derived by Fiori & Newbury as references below.
- Parameters
- Returns
float
- Return type
FWHM of the peak in keV
Notes
This method implements the equation derived by Fiori and Newbury as is documented in the following:
Fiori, C. E., and Newbury, D. E. (1978). In SEM/1978/I, SEM, Inc., AFM O’Hare, Illinois, p. 401.
Goldstein et al. (2003). “Scanning Electron Microscopy & X-ray Microanalysis”, Plenum, third edition, p 315.