\(\renewcommand\AA{\unicode{x212B}}\)
Table of Contents
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | MatrixWorkspace | Mandatory | Workspace to match the spectra between |
OutputWorkspace | Output | MatrixWorkspace | Mandatory | Workspace with the spectra matched |
ReferenceSpectrum | Input | number | 1 | Spectrum to match other spectra to |
CalculateOffset | Input | boolean | True | Calculate vertical shift |
CalculateScale | Input | boolean | True | Calculate scale factor |
Offset | Output | dbl list | Additive factor from matching | |
Scale | Output | dbl list | Multiplicitive factor from matching | |
ChiSq | Output | dbl list | Unweighted ChiSq between the spectrum and the reference. NaN means that the spectrum was not matched |
Calculate the factor(s) that best match the individual spectra to a reference spectrum using Gauss-Markov process. This is the same algorithm used by the “blend” step of PDFgetN. The data undergoes the linear transformation
such that the distance between \(y_{reference}\) and the transformed spectrum is minimized. Only the portions of the spectra where the spectra overlap with the same x-values and the uncertainties are greater than zero are considered.
Note
Gauss-Markov does not take into account varying uncertainties when
calculating the scale
and offset
.
import numpy as np
x = np.arange(100, dtype=float)
x = np.tile(x, 2)
y = np.arange(100, dtype=float)
y = np.tile(y, 2)
y[100:200] += 10
dy = np.zeros(y.size, dtype=float) + 1.
CreateWorkspace(OutputWorkspace='MatchSpectra_input',
DataX=x,
DataY=y,
DataE=dy,
NSpec=2)
_, offset, scale, chisq = MatchSpectra(InputWorkspace='MatchSpectra_input',
OutputWorkspace='MatchSpectra_output',
ReferenceSpectrum=2,
CalculateOffset=True,
CalculateScale=False)
for i in range(2):
print('spectra {}: {:.1f} * y + {:.1f}, chisq={:.1f}'.format(i+1, scale[i], offset[i], chisq[i]))
Output:
spectra 1: 1.0 * y + 10.0, chisq=0.0
spectra 2: 1.0 * y + 0.0, chisq=0.0
Categories: AlgorithmIndex | Diffraction\Reduction
Python: MatchSpectra.py