[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