[SciPy-User] Automatic Peak Detection
David Warde-Farley
dwf at cs.toronto.edu
Thu Sep 17 18:55:37 EDT 2009
On 17-Sep-09, at 6:13 PM, william ratcliff wrote:
> Hi,
> I was wondering what other people have done in the way of automatic
> peak
> detection. If I have a set of 1D data sets where I know the number of
> peaks, what I've done is to use a sgolay (preserves widths) to take
> first
> and second derivatives to locate peaks. I then try to find the
> widths of
> the peaks (going left and right from the center of the peaks) and
> then feed
> this into my fitting routines. However, this method seems to be
> rather
> susceptible to noise. Has anyone else taken a stab at this? Any
> thoughts
> from a ML or pattern matching perspective to do this in a robust
> manner?
I've seen approaches to this sort of problem where EM for mixtures-of-
Gaussians is used. Namely you initialize your components to have wide
variance but centered on the correct peaks, and have an extra garbage
component with fixed mean (sample mean) and fixed, high variance
(perhaps even higher than the sample variance of the data).
That's what I recommended to a friend of mine to estimate the length
of diffraction spikes that are falsely entered into the USNO-B
astronomical catalog as long colinear chains of "stars". What he
ended up doing was a little bit more complicated in that it takes into
account some of the 2-dimensional structure. More info:
http://astrometry.net/cleanusnob/
David
More information about the SciPy-User
mailing list