Fit functions¶
This module provides fit functions.
List of fit functions:¶
sum_gauss()sum_agauss()sum_splitgauss()sum_fastagauss()sum_apvoigt()sum_pvoigt()sum_splitpvoigt()sum_lorentz()sum_alorentz()sum_splitlorentz()sum_stepdown()sum_stepup()sum_slit()sum_ahypermet()sum_fastahypermet()
Full documentation:¶
- 
silx.math.fit.atan_stepup(x, a, b, c)¶ Step up function using an inverse tangent.
Parameters: - x (numpy array) – Independent variable where the function is calculated
 - a – Height of the step up
 - b – Center of the step up
 - c – Parameter related to the slope of the step. A lower 
cvalue yields a sharper step. 
Returns: a * (0.5 + (arctan((x - b) / c) / pi))Return type: numpy array
- 
silx.math.fit.periodic_gauss(x, *pars)¶ Return a sum of gaussian functions defined by (npeaks, delta, height, centroid, fwhm), where:
- npeaks is the number of gaussians peaks
 - delta is the constant distance between 2 peaks
 - height is the peak amplitude of all the gaussians
 - centroid is the peak x-coordinate of the first gaussian
 - fwhm is the full-width at half maximum for all the gaussians
 
Parameters: - x – Independent variable where the function is calculated
 - pars – (npeaks, delta, height, centroid, fwhm)
 
Returns: Sum of
npeaksgaussians
- 
silx.math.fit.sum_agauss(x, *params)¶ Return a sum of gaussian functions defined by (area, centroid, fwhm), where:
- area is the area underneath the peak
 - centroid is the peak x-coordinate
 - fwhm is the full-width at half maximum
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of gaussian parameters (length must be a multiple of 3): (area1, centroid1, fwhm1, area2, centroid2, fwhm2,...)
 
Returns: Array of sum of gaussian functions at each
xcoordinate.
- 
silx.math.fit.sum_ahypermet(x, *params, gaussian_term=True, st_term=True, lt_term=True, step_term=True)¶ Return a sum of ahypermet functions. defined by (area, position, fwhm, st_area_r, st_slope_r, lt_area_r, lt_slope_r, step_height_r).
- area is the area underneath the gaussian peak
 - position is the center of the various peaks and the position of the step down
 - fwhm is the full-width at half maximum of the terms
 - st_area_r is factor between the gaussian area and the area of the short tail term
 - st_slope_r is a ratio related to the slope of the short tail
in the low 
xvalues (the lower, the steeper) - lt_area_r is ratio between the gaussian area and the area of the long tail term
 - lt_slope_r is a ratio related to the slope of the long tail
in the low 
xvalues (the lower, the steeper) - step_height_r is the ratio between the height of the step down and the gaussian height
 
A hypermet function is a sum of four functions (terms):
- a gaussian term
 - a long tail term
 - a short tail term
 - a step down term
 
Parameters: - x (numpy.ndarray) – Independent variable where the hypermets are calculated
 - params – Array of hypermet parameters (length must be a multiple of 8): (area1, position1, fwhm1, st_area_r1, st_slope_r1, lt_area_r1, lt_slope_r1, step_height_r1...)
 - gaussian_term – If 
True, enable gaussian term. DefaultTrue - st_term – If 
True, enable gaussian term. DefaultTrue - lt_term – If 
True, enable gaussian term. DefaultTrue - step_term – If 
True, enable gaussian term. DefaultTrue 
Returns: Array of sum of hypermet functions at each
xcoordinate
- 
silx.math.fit.sum_alorentz(x, *params)¶ Return a sum of Lorentz distributions, also known as Cauchy distribution, defined by (area, centroid, fwhm).
- area is the area underneath the peak
 - centroid is the peak x-coordinate for both functions
 - fwhm is the full-width at half maximum
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of Lorentz parameters (length must be a multiple of 3): (area1, centroid1, fwhm1,...)
 
Returns: Array of sum of Lorentz functions at each
xcoordinate
- 
silx.math.fit.sum_apvoigt(x, *params)¶ Return a sum of pseudo-Voigt functions, defined by (area, centroid, fwhm, eta).
The pseudo-Voigt profile
PV(x)is an approximation of the Voigt profile using a linear combination of a Gaussian curveG(x)and a Lorentzian curveL(x)instead of their convolution.- area is the area underneath both G(x) and L(x)
 - centroid is the peak x-coordinate for both functions
 - fwhm is the full-width at half maximum of both functions
 - eta is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of pseudo-Voigt parameters (length must be a multiple of 4): (area1, centroid1, fwhm1, eta1, area2, centroid2, fwhm2, eta2,...)
 
Returns: Array of sum of pseudo-Voigt functions at each
xcoordinate
- 
silx.math.fit.sum_fastagauss(x, *params)¶ Return a sum of gaussian functions defined by (area, centroid, fwhm), where:
- area is the area underneath the peak
 - centroid is the peak x-coordinate
 - fwhm is the full-width at half maximum
 
This implementation differs from
sum_agauss()by the usage of a lookup table with precalculated exponential values. This might speed up the computation for large numbers of individual gaussian functions.Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of gaussian parameters (length must be a multiple of 3): (area1, centroid1, fwhm1, area2, centroid2, fwhm2,...)
 
Returns: Array of sum of gaussian functions at each
xcoordinate.
- 
silx.math.fit.sum_fastahypermet(x, *params, gaussian_term=True, st_term=True, lt_term=True, step_term=True)¶ Return a sum of hypermet functions defined by (area, position, fwhm, st_area_r, st_slope_r, lt_area_r, lt_slope_r, step_height_r).
- area is the area underneath the gaussian peak
 - position is the center of the various peaks and the position of the step down
 - fwhm is the full-width at half maximum of the terms
 - st_area_r is factor between the gaussian area and the area of the short tail term
 - st_slope_r is a parameter related to the slope of the short tail
in the low 
xvalues (the lower, the steeper) - lt_area_r is factor between the gaussian area and the area of the long tail term
 - lt_slope_r is a parameter related to the slope of the long tail
in the low 
xvalues (the lower, the steeper) - step_height_r is the factor between the height of the step down and the gaussian height
 
A hypermet function is a sum of four functions (terms):
- a gaussian term
 - a long tail term
 - a short tail term
 - a step down term
 
This function differs from
sum_ahypermet()by the use of a lookup table for calculating exponentials. This offers better performance when calculating many functions for largexarrays.Parameters: - x (numpy.ndarray) – Independent variable where the hypermets are calculated
 - params – Array of hypermet parameters (length must be a multiple of 8): (area1, position1, fwhm1, st_area_r1, st_slope_r1, lt_area_r1, lt_slope_r1, step_height_r1...)
 - gaussian_term – If 
True, enable gaussian term. DefaultTrue - st_term – If 
True, enable gaussian term. DefaultTrue - lt_term – If 
True, enable gaussian term. DefaultTrue - step_term – If 
True, enable gaussian term. DefaultTrue 
Returns: Array of sum of hypermet functions at each
xcoordinate
- 
silx.math.fit.sum_gauss(x, *params)¶ Return a sum of gaussian functions defined by (height, centroid, fwhm), where:
- height is the peak amplitude
 - centroid is the peak x-coordinate
 - fwhm is the full-width at half maximum
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of gaussian parameters (length must be a multiple of 3): (height1, centroid1, fwhm1, height2, centroid2, fwhm2,...)
 
Returns: Array of sum of gaussian functions at each
xcoordinate.
- 
silx.math.fit.sum_lorentz(x, *params)¶ Return a sum of Lorentz distributions, also known as Cauchy distribution, defined by (height, centroid, fwhm).
- height is the peak amplitude
 - centroid is the peak x-coordinate
 - fwhm is the full-width at half maximum
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of Lorentz parameters (length must be a multiple of 3): (height1, centroid1, fwhm1,...)
 
Returns: Array of sum Lorentz functions at each
xcoordinate
- 
silx.math.fit.sum_pvoigt(x, *params)¶ Return a sum of pseudo-Voigt functions, defined by (height, centroid, fwhm, eta).
The pseudo-Voigt profile
PV(x)is an approximation of the Voigt profile using a linear combination of a Gaussian curveG(x)and a Lorentzian curveL(x)instead of their convolution.- height is the peak amplitude of G(x) and L(x)
 - centroid is the peak x-coordinate for both functions
 - fwhm is the full-width at half maximum of both functions
 - eta is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of pseudo-Voigt parameters (length must be a multiple of 4): (height1, centroid1, fwhm1, eta1, height2, centroid2, fwhm2, eta2,...)
 
Returns: Array of sum of pseudo-Voigt functions at each
xcoordinate
- 
silx.math.fit.sum_slit(x, *params)¶ Return a sum of slit functions. defined by (height, position, fwhm, beamfwhm).
- height is the slit’s amplitude
 - position is the center of the slit’s x-coordinate
 - fwhm is the full-width at half maximum of the slit
 - beamfwhm is the full-width at half maximum of the derivative, which is a measure of the sharpness of the edges of the slit
 
Parameters: - x (numpy.ndarray) – Independent variable where the slits are calculated
 - params – Array of slit parameters (length must be a multiple of 4): (height1, centroid1, fwhm1, beamfwhm1,...)
 
Returns: Array of sum of slit functions at each
xcoordinate
- 
silx.math.fit.sum_splitgauss(x, *params)¶ Return a sum of gaussian functions defined by (area, centroid, fwhm1, fwhm2), where:
- height is the peak amplitude
 - centroid is the peak x-coordinate
 - fwhm1 is the full-width at half maximum for the distribution
when 
x < centroid - fwhm2 is the full-width at half maximum for the distribution
when  
x > centroid 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of gaussian parameters (length must be a multiple of 4): (height1, centroid1, fwhm11, fwhm21, height2, centroid2, fwhm12, fwhm22,...)
 
Returns: Array of sum of split gaussian functions at each
xcoordinate
- 
silx.math.fit.sum_splitlorentz(x, *params)¶ Return a sum of split Lorentz distributions, defined by (height, centroid, fwhm1, fwhm2).
- height is the peak amplitude
 - centroid is the peak x-coordinate for both functions
 - fwhm1 is the full-width at half maximum for 
x < centroid - fwhm2 is the full-width at half maximum for 
x > centroid 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of Lorentz parameters (length must be a multiple of 4): (height1, centroid1, fwhm11, fwhm21...)
 
Returns: Array of sum of Lorentz functions at each
xcoordinate
- 
silx.math.fit.sum_splitpvoigt(x, *params)¶ Return a sum of split pseudo-Voigt functions, defined by (height, centroid, fwhm1, fwhm2, eta).
The pseudo-Voigt profile
PV(x)is an approximation of the Voigt profile using a linear combination of a Gaussian curveG(x)and a Lorentzian curveL(x)instead of their convolution.- height is the peak amplitudefor G(x) and L(x)
 - centroid is the peak x-coordinate for both functions
 - fwhm1 is the full-width at half maximum of both functions
when 
x < centroid - fwhm2 is the full-width at half maximum of both functions
when 
x > centroid - eta is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of pseudo-Voigt parameters (length must be a multiple of 5): (height1, centroid1, fwhm11, fwhm21, eta1,...)
 
Returns: Array of sum of split pseudo-Voigt functions at each
xcoordinate
- 
silx.math.fit.sum_stepdown(x, *params)¶ Return a sum of stepdown functions. defined by (height, centroid, fwhm).
- height is the step’s amplitude
 - centroid is the step’s x-coordinate
 - fwhm is the full-width at half maximum for the derivative, which is a measure of the sharpness of the step-down’s edge
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of stepdown parameters (length must be a multiple of 3): (height1, centroid1, fwhm1,...)
 
Returns: Array of sum of stepdown functions at each
xcoordinate
- 
silx.math.fit.sum_stepup(x, *params)¶ Return a sum of stepup functions. defined by (height, centroid, fwhm).
- height is the step’s amplitude
 - centroid is the step’s x-coordinate
 - fwhm is the full-width at half maximum for the derivative, which is a measure of the sharpness of the step-up’s edge
 
Parameters: - x (numpy.ndarray) – Independent variable where the gaussians are calculated
 - params – Array of stepup parameters (length must be a multiple of 3): (height1, centroid1, fwhm1,...)
 
Returns: Array of sum of stepup functions at each
xcoordinate