R/area_estimation.R
peaklist_fit_lorentzians.Rd
The different methods are available for benchmarking while developing, we should pick one.
The peak data
The nmr_dataset object with the data. This function for now assumes nmr_dataset is NOT be baseline corrected
The method to estimate the amplitude. It may be:
"intensity"
. The amplitude of the peak is proportional to the raw intensity at the apex. This is a bad estimation if
the intensity includes a baseline, because the amplitude of the peak will be overestimated
"2nd_derivative"
: The amplitude of the peak is proportional to the second derivative of the raw intensity signal at the apex.
This method aims to correct the "intensity" method, since it is expected that the baseline will be mostly removed
when considering the 2nd derivative of the spectrum. The 2nd derivative is calculated with a 2nd order Savitzky-Golay filter of 21 points.
"intensity_without_baseline"
: A baseline is estimated on the whole spectra and subtracted from it. Then the peak amplitude
is proportional to the corrected intensity at the apex (as in the "intensity" method).
Whether a non linear least squares fitting should be used to refine the estimated parameters. It can be:
"none"
: Do not refine using nls.
"peak"
: Use a lorentzian peak model and the baseline corrected spectra.
"2nd_derivative"
:
The given data frame peak_data
, with added columns:
inflection points,
gamma
area
a norm_rmse fitting error
As well as some attributes
"errors": A data frame with any error in the peak fitting
"fit_baseline": Whether the method used has any consideration for the baseline of the signal (maybe not very useful attribute)
"method_description": A textual description of what we did, to include it in plots
gamma is estimated using the inflection points of the signal and fitting them to the lorentzian inflection points
$A$ is estimated using the amplitude_method
below
The peak position ($x_0$) is given in peak_data
Those estimations may be refined with non-linear least squares using refine_peak_model
. If the nls does not converge,
the initial estimations are kept. Convergence -and other nls errors- are saved for further reference and diagnostic.
Use attr(peak_data_fitted, "errors")
to retreive the error messages, where peak_data_fitted
is assumed to be the
output of this function. The refining improves gamma, $A$ and $x_0$.
The baseline estimation (when calculated, see the arguments) is set to Asymmetric Least Squares with lambda = 6, p=0.05, maxit=20 and it is probably not optimal... yet.