[SciPy-User] [ANN] Bottleneck 0.5.0beta

Keith Goodman kwgoodman at gmail.com
Sat Jun 4 20:10:35 EDT 2011


On Sat, Jun 4, 2011 at 1:48 PM, Keith Goodman <kwgoodman at gmail.com> wrote:
> On Sat, Jun 4, 2011 at 12:52 PM, Christoph Gohlke <cgohlke at uci.edu> wrote:
>>
>>
>> On 6/4/2011 11:44 AM, Keith Goodman wrote:
>>>
>>> I don't know if there are any Bottleneck users out there but I do know
>>> that the Bottleneck 0.4 release was a mess (0.4.0, 0.4.1, 0.4.2,
>>> 0.4.3). So this time around I've made a beta release of Bottleneck
>>> 0.5:
>>>
>>>
>>> https://github.com/downloads/kwgoodman/bottleneck/Bottleneck-0.5.0beta.tar.gz
>>>
>>> Reports of success or failure of bottleneck.test() are appreciated.
>>>
>>> *Release date: Not yet released, in development*
>>>
>>> The fifth release of bottleneck adds four new functions, comes in a
>>> single source distribution instead of separate 32 and 64 bit versions,
>>> and fixes a bug in nanmedian:
>>>
>>> **New functions**
>>>
>>> - move_median(), moving window median
>>> - partsort(), partial sort
>>> - argpartsort()
>>> - ss(), sum of squares, faster version of scipy.stats.ss
>>>
>>> **Changes**
>>>
>>> - Single source distribution instead of separate 32 and 64 bit versions
>>> - nanmax and nanmin now follow Numpy 1.6 (not 1.5.1) when input is all NaN
>>>
>>> **Bug fixes**
>>>
>>> - #14 Support python 2.5 by importing `with` statement
>>> - #22 nanmedian wrong for particular ordering of NaN and non-NaN elements
>>
>>
>> Hi Keith,
>>
>> the code currently fails to compile with msvc9 on Windows. A patch is
>> attached.
>>
>> bottleneck.test() passes all 80 tests in ~30s.
>>
>> In move_median.c, _size_t is defined as 64 bit npy_int64 even on 32 bit
>> systems. Is that intended?
>
> Thank you, Christoph.
>
> You changed inline to __inline in the C code. I read that __inline is
> vendor specific and not a C99 keyword. Does anyone know if __inline
> inlines the code with gcc?
>
> You also changed:
>
>  # Is the OS 32 or 64 bits?
> -if np.int_ == np.int32:
> +if tuple.__itemsize__ == 4:
>     bits = '32'
> -elif np.int_ == np.int64:
> +elif tuple.__itemsize__ == 8:
>     bits = '64'
>  else:
>     raise ValueError("Your OS does not appear to be 32 or 64 bits.")
>
> Will that always work for Numpy? If so I use it in several places and
> will make the change.
>
> As for the npy_int64 question, I don't know. I am confused about
> dtypes in move_median. The C code only uses float64 for data values
> yet it works fine for int dtype. I guess cython is doing the casting
> for me somewhere. I thought I'd have to have separate versions of the
> C code for each dtype.
>
> Are there problems with using npy_int64 of 32 bit systems?

Second beta with Christoph's bug fixes for windows compilers:

https://github.com/downloads/kwgoodman/bottleneck/Bottleneck-0.5.0beta2.tar.gz



More information about the SciPy-User mailing list