hyperspy.models.edsmodel module
- class hyperspy.models.edsmodel.EDSModel(spectrum, auto_background=True, auto_add_lines=True, *args, **kwargs)
Bases:
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:
- Raises:
NotImplementedError – If the signal axis is a non-uniform axis.
- _set_energy_resolution(xray_lines, *args, **kwargs)
Adjust the width of all lines and set the fitted energy resolution to the spectrum
- _set_energy_scale(xray_lines, ref)
Adjust the width of all lines and set the fitted energy resolution to the spectrum
- Parameters:
- Raises:
NotImplementedError – If the signal axis is a non-uniform axis.
- _twin_xray_lines_offset(xray_lines)
Twin the offset of the peaks
- _twin_xray_lines_scale(xray_lines)
Twin the scale of the peaks
- _twin_xray_lines_width(xray_lines)
Twin the width of the peaks
The twinning models the energy resolution of the detector
- 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’)).
- Raises:
NotImplementedError – If the signal axis is a non-uniform axis.
- 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. 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)
- fix_xray_lines_width(xray_lines='all')
Fix the X-ray line width (sigma of the Gaussian)
- 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)
- free_xray_lines_energy(xray_lines='all', bound=0.001)
Free the X-ray line energy (shift or centre of the Gaussian)
- free_xray_lines_width(xray_lines='all', bound=0.01)
Free the X-ray line width (sigma of the Gaussian)
- 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.