<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Aug 6, 2017 at 1:10 PM, Phillip Feldman <span dir="ltr"><<a href="mailto:phillip.m.feldman@gmail.com" target="_blank">phillip.m.feldman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Some of us in the engineering community are unhappy with the SciPy roadmap. From our perspective, the main deficiency of scipy.signal is that the filtering functionality is of limited practical utility. We would like to see the following:</div><div><br></div><div>(1) support for lowpass, bandpass, and bandstop FIR filter design, with the user specifying (a) the passband ripple, (b) the minimum stopband rejection, and (c) the design method, with this last being optional. Rather than forcing the user to specify the order of the filter, which requires many iterations to determine the minimum filter order that will do the job, we'd like to see the code automatically determine the minimum filter order that can meet the user's specs.</div><div><br></div><div>(2) support for fixed-binary-point arithmetic.</div><div><br></div><div>(3) support for filtering and the design of filters that use fixed-binary-point arithmetic.</div><div><br></div><div>Such changes would be a big step in the direction of making Python+NumPy+SciPy a viable alternative to Matlab + the Matlab Signal Processing Toolbox.</div><div><br></div></div></blockquote><div><br><br><br>Hi Phillip,<br><br>Thanks for the feedback.  Those are all great suggestions, and would be valuable additions to SciPy.<br><br>My comments in this somewhat long response are my own opinions and not necessarily those of any other SciPy developers.<br><br>The first request, for a method to design a FIR filter (including the determination of the order of the filter) given the desired passband ripple and stopband rejection, can be done with the existing tools in SciPy, if you don't mind a small amount of "brute force" search.  I have some code that works reasonably well for lowpass, highpass, bandpass and bandstop FIR filters.  I'll make this available soon, but I don't know if it will end up in SciPy itself.<br><br>Filtering with fixed-binary-point arithmetic is an important topic, but I don't know if any of the folks currently working on SciPy have experience in this area.  So I don't see it happening in the immediate future.  On the other hand, there are several sharp folks contributing to the 'signal' package these days, and maybe one or more of them will be interested in tackling such a project.<br><br>Now I have to give what is basically the boilerplate response that anyone who helps maintain a free, open source software project would give--I'm sure you've heard it before:  SciPy is developed and maintained by volunteers.  We all have our areas of interest and expertise, and we all have our areas of ignorance.  If we can get more people with more diverse backgrounds involved with SciPy development, we can improve the library that much faster.  "Involved" doesn't necessarily mean writing code--there are several ways for you and your colleagues in the engineering community to contribute.<br><br>You've already contributed using one the simplest methods: create bug reports and requests for enhancements.  Let us know what you need.  The more information that you can provide in these reports, the better.  In some cases, you may have to educate the SciPy developers.  This can include:<br><br>   a. Describe algorithms that you know work well.  Provide links<br>      to published papers or relevant textbooks where the algorithm<br>      is described.<br>   b. Find existing open source implementations that might serve as<br>      a basis for the SciPy implementation.  (Avoid, however, software<br>      that is GPL licensed. SciPy will not include software that is<br>      derived from GPL software.)  For example, in a response to your<br>      email, Dan White pointed out pyFDA.  If you have a chance to try<br>      it, let us know if the content looks suitable for adding to SciPy.<br><br>Also, if a feature request or bug fix that you need is already under discussion in a github issue or pull request, please feel free to join the discussion.<br><br>Of course, you can also contribute code.  If SciPy is missing a feature that you and your colleagues need, then why not get together, create an implementation, and add it to SciPy via a pull request?  Just be prepared for the iterative code review process, in which the SciPy developers become familiar with the code in the pull request and also ensure that the code conforms to the SciPy style, documentation and testing standards.  Major enhancements should be discussed first on the mailing list.  More details are in <a href="https://github.com/scipy/scipy/blob/master/HACKING.rst.txt">https://github.com/scipy/scipy/blob/master/HACKING.rst.txt</a>.<br><br>I'll reply to your question about kaiserord() in a separate email.<br><br>Best regards,<br><br>Warren<br><br><br><br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>As an aside, I'd like to comment on the documentation for `scipy.signal.kaiserord`, which says the following:</div><div><br></div><div>scipy.signal.kaiserord(ripple, width)[source]</div><div><br></div><div><snip> ripple : float</div><div><br></div><div>Positive number specifying maximum ripple in passband (dB) and minimum ripple in stopband.</div><div><br></div><div>When designing a lowpass digital filter, one normally specifies the maximum ripple in the passband and the minimum rejection in the stopband. With this function, there is no way to specify how much rejection one gets in the stopband, and the filter design code is also apparently trying to limit stopband ripple, which is something that no engineer would care about. The documentation can't just be badly worded, because there would have to be another parameter to specify the stopband rejection.</div><div><br></div><div>Phillip</div><div>--</div><div>Dr. Phillip M. Feldman</div></div>
<br>______________________________<wbr>_________________<br>
SciPy-Dev mailing list<br>
<a href="mailto:SciPy-Dev@python.org">SciPy-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scipy-dev" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/scipy-dev</a><br>
<br></blockquote></div><br></div></div>