# Robust peak detection taylored for spectroscopy

i need a algorithm for peak detection in raman spectroscopy. I tried this one, but it did not give me satisfying results.

Spectrums may look like this:

In professional software, i think they use the fact that the peaks can be fitted as lorentz-Peaks.

However i don't really know how to start with it. I think i would still need some way to detect the peaks itself, so i can fit to it? What i need then is a function where i give the spectrum as input (so a list of ($$x$$|$$y$$) tuples) and get the center and half-width of each peak. It should be robust against noise, but still detect shoulder-peaks, so small peaks which are overlapping into a stronger peak.

Ideally, i don't want to dig too deep into signal processing theories, but i suspect i might have to.

If possible, it should detect lorentz-shaped or gaussian-shaped peaks even when the $$y$$-axis is nonlinear "distorted". Meaning there is a correlation between the measured $$y$$-values in pixels, and the true values in $$cm^{-1}$$, which is not linear, but some quadratic or even cubic relation, which will not always be known.

• I see that your question is being closed. This is sad, because I can't help but feel the problem is still open on many directions: sampling, peak model, robust fit, noise priors, baseline, sparsity and nonlinear distorsion. I still do work on parts of these. – Laurent Duval Jun 13 '19 at 21:09
• I even believe that, outside spectroscopy, even Fourier analysis would benefit from a streamline processing as sketched, and I don't know of a proxy yet – Laurent Duval Jun 13 '19 at 21:29