[Numpy-discussion] Bug in numpy.correlate documentation

Bernhard Spinnler Bernhard.Spinnler at gmx.net
Mon Oct 14 14:25:39 EDT 2013


On 11.10.2013, at 01:19, Julian Taylor <jtaylor.debian at googlemail.com> wrote:
>>> 
>>>    Yeah, unless the current behaviour is actually broken or redundant in
>>>    some way, we're not going to switch from one perfectly good convention
>>>    to another perfectly good convention and break everyone's code in the
>>>    process.
>>> 
>>>    The most helpful thing would be if you could file a pull request that
>>>    just changes the docstring to what you think it should be. Extra bonus
>>>    points if it points out that there is another definition some people
>>>    might be expecting instead, and explains how those people can use the
>>>    existing functions to get what they want. :-)
>>> 
>>>    -n
>>> 
>>> 
>>> IMHO, "point[ing] out that there is another definition some people
>>> might be expecting instead, and explain[ing] how those people can use
>>> the existing functions to get what they want" should be a requirement
>>> for the docstring ("Notes" section), not merely worth "extra bonus
>>> points."  But then I'm not, presently, in a position to edit the
>>> docstring myself, so that's just MHO. 
>>> 
>>> IAE, I found what appears to me to be another "vote" for the extant
>>> docstring: Box & Jenkins, 1976, "Time Series Analysis: Forecasting and
>>> Control," Holden-Day, Oakland, pg. 374.  Perhaps a "switch" (with a
>>> default value that maintains current definition, so that extant uses
>>> would not require a code change) c/should be added to the function
>>> signature so that users can get easily get what they want?
>>> 
>> 
>> As pointed out in another post in this thread, there are now at least
>> three different definitions of correlation which are in use in different
>> disciplines of science and engineering:
>> 
>> Numpy code:
>> 
>> z_numpyCode[k] = sum_n a[n+k] * conj(v[n])
>> 
>> 
>> Numpy docs:
>> 
>> z_numpyDoc[k] = sum_n a[n] * conj(v[n+k])
>>                         = sum_n a[n-k] * conj(v[n])
>>                         = z_numpyCode[-k]
>> 
>> 
>> Wolfram Mathworld:
>> 
>> z_mmca[k] = sum_n conj(a[n]) * v[n+k]
>>                 = conj( sum_n a[n] * conj(v[n+k]) )
>>                 = conj( z_numpyDoc[k] )
>>                 = conj( z_numpyCode[-k] )
>> 
>> I'm sure there are even more if you search long enough. But shouldn't
>> the primary objective be to bring the docs in line with the code (which
>> is definitely not "broken")? It took me 2 days of debugging my
>> code recently only to discover that numpy correlate() was calculating a
>> different correlation than the docs said.
>> 
>> I can try to come up with a proposal for the docs. Could anyone point me
>> to where I can find the docs? I can clone the numpy repo, however, I'm
>> not a numpy developer.
>> 
> 
> yes we should only change the documentation to match the (hopefully
> correct) code.
> the documentation is in the docstring of the correlate function in
> numpy/core/numeric.py line 819
> _______________________________________________

Ok, corrected the docstring, mentioning one alternative definition of correlation. Pull request filed: https://github.com/numpy/numpy/pull/3913.

Bernhard





More information about the NumPy-Discussion mailing list