<div dir="ltr">I have some old code for Richardson-Lucy deconvolution, although the method is so simple there&#39;s no reason not to try it yourself.<br><br>Jonathan<br><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Feb 1, 2013 at 7:50 AM,  <span dir="ltr">&lt;<a href="mailto:josef.pktd@gmail.com" target="_blank">josef.pktd@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">
<div class="HOEnZb"><div class="h5">On Fri, Feb 1, 2013 at 9:50 AM,  &lt;<a href="mailto:josef.pktd@gmail.com">josef.pktd@gmail.com</a>&gt; wrote:<br>
&gt; On Fri, Feb 1, 2013 at 9:23 AM, François Boulogne &lt;<a href="mailto:fboulogne@sciunto.org">fboulogne@sciunto.org</a>&gt; wrote:<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; I need to deconvolve a signal with a filter. I had a look in the<br>
&gt;&gt; documentation. The function exists but the docstring is missing and I&#39;m<br>
&gt;&gt; not satisfied of the result I got from a &quot;simple&quot; example.<br>
&gt;&gt;<br>
&gt;&gt; filter = np.array([0,1,1,1,1,0])<br>
&gt;&gt; step = np.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,<br>
&gt;&gt; 1, 1, 1, 1])<br>
&gt;&gt; # I convolve both<br>
&gt;&gt; res = convolve(step, filter, &#39;valid&#39;)<br>
&gt;&gt; # and it returns a slope as expected<br>
&gt;&gt; array([0, 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4])<br>
&gt;&gt;<br>
&gt;&gt; Now, I want to deconvolve.<br>
&gt;&gt; deconvolve(res, filter)<br>
&gt;&gt; # oops, it raises an exception<br>
&gt;&gt; ValueError: BUG: filter coefficient a[0] == 0 not supported yet<br>
&gt;&gt;<br>
&gt;&gt; # well, let&#39;s try this<br>
&gt;&gt; deconvolve(res, filter+1e-9)<br>
&gt;&gt; (array([  0.00000000e+00,   0.00000000e+00,   1.00000000e+09,<br>
&gt;&gt;         -9.99999999e+17,   9.99999999e+26,  -9.99999999e+35,<br>
&gt;&gt;          9.99999999e+44,  -9.99999999e+53,   9.99999999e+62,<br>
&gt;&gt;         -9.99999999e+71,   9.99999999e+80,  -9.99999999e+89]),<br>
&gt;&gt;  array([  0.00000000e+00,   0.00000000e+00,   1.11022302e-16,<br>
&gt;&gt;         -8.27130862e-08,  -4.42500000e+01,   5.46901335e+10,<br>
&gt;&gt;          8.27266814e+19,   7.56858250e+28,  -8.74285726e+37,<br>
&gt;&gt;          9.99419626e+46,   8.27205507e+55,  -8.26933326e+64,<br>
&gt;&gt;          9.99999999e+89,   9.99999999e+89,   9.99999999e+89,<br>
&gt;&gt;          1.00000000e+90,   9.99999999e+80]))<br>
&gt;&gt;<br>
&gt;&gt; It&#39;s better but I do not recognize my signal :)<br>
&gt;&gt; 1/ Am I misunderstanding or missing something?<br>
&gt;&gt; 2/ How can I do it correctly?<br>
&gt;<br>
&gt; AFAICS:<br>
&gt;<br>
&gt; not supported, maybe using the numpy polynomial might work for the deconvolution<br>
&gt;<br>
&gt; from the docstring of lfilter, which is used by deconvolve:<br>
&gt;<br>
&gt;    a : array_like<br>
&gt;         The denominator coefficient vector in a 1-D sequence.  If ``a[0]``<br>
&gt;         is not 1, then both `a` and `b` are normalized by ``a[0]``.<br>
&gt;<br>
&gt; with the normalization your 1e-9 blows up the calculations.<br>
&gt;<br>
&gt; (it&#39;s been a long time since I tried to figure out deconvolve, and I<br>
&gt; always had 1 in the first position)<br>
&gt;<br>
&gt; Josef<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; I also noted that no test exists for deconvolve() :(<br>
<br>
</div></div>Volunteers ?<br>
<br>
Josef<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt; François.<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; SciPy-User mailing list<br>
&gt;&gt; <a href="mailto:SciPy-User@scipy.org">SciPy-User@scipy.org</a><br>
&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/scipy-user" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-user</a><br>
_______________________________________________<br>
SciPy-User mailing list<br>
<a href="mailto:SciPy-User@scipy.org">SciPy-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-user" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-user</a><br>
</div></div></blockquote></div><br>
</div></div>