[SciPy-Dev] PR: ENH: rewrite ndimage.label() in Cython

Thouis (Ray) Jones thouis at gmail.com
Thu Jul 5 09:10:43 EDT 2012


I just submitted this PR: https://github.com/scipy/scipy/pull/261
(summary below)

I appreciate any feedback.

Thanks,
Ray Jones


(note: I wrote "type templating" below when I meant to write "fused
types", but didn't notice until just now).

Summary:

This reimplements ndimage.label() in Cython, with the following results:
    + easier to read code
    + faster (roughly 3x on my MacBook Pro)
    + output array can be nearly any numpy type (not just int32)
    + if passed in, output array is used for scratch space (minimal overhead)

Downsides:
    - Uses type templating, so requires a dev version of Cython as of 2012-07
      (Cython 0.17+ should work)
    - The type templating results in a very large C file (there's a small
      function that gets instantiated N^2 times for the N types the
      function takes as input/output).

    New tests have been added to ensure that label() returns the same
    values as before, and to test new functionality (in-place operation).



More information about the SciPy-Dev mailing list