<div class="gmail_quote">On Tue, Sep 13, 2011 at 3:34 PM, Ralf Gommers <span dir="ltr">&lt;<a href="mailto:ralf.gommers@googlemail.com">ralf.gommers@googlemail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hi Jacob,<br><br><div class="gmail_quote"><div class="im">On Fri, Sep 9, 2011 at 11:57 PM, Jacob Silterra <span dir="ltr">&lt;<a href="mailto:jsilter@gmail.com" target="_blank">jsilter@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello all,<br><br>I&#39;d like to see functions for calculating the relative extrema in a set of data included in numpy. I use that functionality frequently, and always seem to be writing my own version. It seems like this functionality would be useful to the community at large, as it&#39;s a fairly common operation.<br>


</blockquote></div><div><br>What is your application? <br></div><div class="im"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">

<br>For numeric data (which is presumably noisy), the definition of a relative extrema isn&#39;t completely obvious. The implementation I am proposing finds a point in an ndarray along an axis which is larger (or smaller) than it&#39;s `order` nearest neighbors (`order` being an optional parameter, default 1). This is likely to find more points than may be desired,  which I believe is preferable to the alternative. The output is formatted the same as numpy.where.<br>




<br>Code available here: <a href="https://github.com/numpy/numpy/pull/154" target="_blank">https://github.com/numpy/numpy/pull/154</a><br><br>I&#39;m not sure whether this belongs in numpy or scipy, that question is somewhat debatable. More sophisticated peak-finding functions (in N dimensions, as opposed to 1) may also be useful to the community, and those would definitely belong in scipy.<br>


</blockquote></div><div><br>I have the feeling this belongs in scipy. Although if it&#39;s just these two functions I&#39;m not sure where exactly to put them. Looking at the functionality, this is quite a simple approach. For any data of the type I&#39;m usually working with it will not be able to find the right local extrema. The same is true for your alternative definition below. <br>


<br>A more powerful peak detection function would be a very good addition to scipy imho (perhaps in scipy.interpolate?). See also <a href="http://stackoverflow.com/questions/1713335/peak-finding-algorithm-for-python-scipy" target="_blank">http://stackoverflow.com/questions/1713335/peak-finding-algorithm-for-python-scipy</a><br>


<br>Cheers,<br>Ralf<br><br></div></div></blockquote><div><br>Actually, such an algorithm would be great to partner with the watershed clustering implementation in ndimage.<br><br>Ben Root<br><br></div></div>