Re: [Numpy-discussion] Bug in nanmin called with unsigned integers

2010-06-06 Thread Charles R Harris
On Wed, May 26, 2010 at 7:59 AM, Tony S Yu tsy...@gmail.com wrote:


 On May 25, 2010, at 10:57 PM, Charles R Harris wrote:



 On Tue, May 25, 2010 at 8:21 PM, Tony S Yu tsy...@gmail.com wrote:

 I got bit again by this bug with unsigned 
 integershttp://projects.scipy.org/numpy/ticket/1300.
 (My original changes got overwritten when I updated from svn and,
 unfortunately, merged conflicts without actually looking over the changes.)

 In any case, I thought it'd be a good time to bump the issue (with 
 patchhttp://projects.scipy.org/numpy/ticket/1300#comment:2
 ).

 Cheers,
 -Tony

 PS: Just for context, this issue comes up when displaying images with
 Chaco (which converts images to unsigned integer arrays and calls nanmin).


 Fixed in r8445. Please add some tests.



 I'm not totally sure what's appropriate to test, so I just added a simple
 test to the comments for the 
 tickethttp://projects.scipy.org/numpy/ticket/1300#comment:4
 .

 On a side note, I noticed that all the nan-ops degenerate to their
 non-nan-ops counterparts (i.e. nanmin -- min) when called with integer
 dtypes. Below is a diff where that's made a little more obvious by returning
 early for integer dtypes.

 Cheers,
 -Tony


 Index: numpy/lib/function_base.py
 ===
 --- numpy/lib/function_base.py (revision 8445)
 +++ numpy/lib/function_base.py (working copy)
 @@ -1295,15 +1295,15 @@

  
  y = array(a, subok=True)
 -mask = isnan(a)

  # We only need to take care of NaN's in floating point arrays
 -if not np.issubdtype(y.dtype, np.integer):
 -# y[mask] = fill
 -# We can't use fancy indexing here as it'll mess w/ MaskedArrays
 -# Instead, let's fill the array directly...
 -np.putmask(y, mask, fill)
 -
 +if np.issubdtype(y.dtype, np.integer):
 +return op(y, axis=axis)
 +mask = isnan(a)
 +# y[mask] = fill
 +# We can't use fancy indexing here as it'll mess w/ MaskedArrays
 +# Instead, let's fill the array directly...
 +np.putmask(y, mask, fill)
  res = op(y, axis=axis)
  mask_all_along_axis = mask.all(axis=axis)



Applied. Thanks.
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Bug in nanmin called with unsigned integers

2010-05-26 Thread Tony S Yu

On May 25, 2010, at 10:57 PM, Charles R Harris wrote:

 
 
 On Tue, May 25, 2010 at 8:21 PM, Tony S Yu tsy...@gmail.com wrote:
 I got bit again by this bug with unsigned integers. (My original changes got 
 overwritten when I updated from svn and, unfortunately, merged conflicts 
 without actually looking over the changes.) 
 
 In any case, I thought it'd be a good time to bump the issue (with patch).
 
 Cheers,
 -Tony
 
 PS: Just for context, this issue comes up when displaying images with Chaco 
 (which converts images to unsigned integer arrays and calls nanmin).
 
 
 Fixed in r8445. Please add some tests.



I'm not totally sure what's appropriate to test, so I just added a simple test 
to the comments for the ticket.

On a side note, I noticed that all the nan-ops degenerate to their non-nan-ops 
counterparts (i.e. nanmin -- min) when called with integer dtypes. Below is a 
diff where that's made a little more obvious by returning early for integer 
dtypes.

Cheers,
-Tony


Index: numpy/lib/function_base.py
===
--- numpy/lib/function_base.py  (revision 8445)
+++ numpy/lib/function_base.py  (working copy)
@@ -1295,15 +1295,15 @@
 
 
 y = array(a, subok=True)
-mask = isnan(a)
 
 # We only need to take care of NaN's in floating point arrays
-if not np.issubdtype(y.dtype, np.integer):
-# y[mask] = fill
-# We can't use fancy indexing here as it'll mess w/ MaskedArrays
-# Instead, let's fill the array directly...
-np.putmask(y, mask, fill)
-
+if np.issubdtype(y.dtype, np.integer):
+return op(y, axis=axis)
+mask = isnan(a)
+# y[mask] = fill
+# We can't use fancy indexing here as it'll mess w/ MaskedArrays
+# Instead, let's fill the array directly...
+np.putmask(y, mask, fill)
 res = op(y, axis=axis)
 mask_all_along_axis = mask.all(axis=axis)

___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


[Numpy-discussion] Bug in nanmin called with unsigned integers

2010-05-25 Thread Tony S Yu
I got bit again by this bug with unsigned integers. (My original changes got 
overwritten when I updated from svn and, unfortunately, merged conflicts 
without actually looking over the changes.) 

In any case, I thought it'd be a good time to bump the issue (with patch).

Cheers,
-Tony

PS: Just for context, this issue comes up when displaying images with Chaco 
(which converts images to unsigned integer arrays and calls nanmin).

___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Bug in nanmin called with unsigned integers

2010-05-25 Thread Charles R Harris
On Tue, May 25, 2010 at 8:21 PM, Tony S Yu tsy...@gmail.com wrote:

 I got bit again by this bug with unsigned 
 integershttp://projects.scipy.org/numpy/ticket/1300.
 (My original changes got overwritten when I updated from svn and,
 unfortunately, merged conflicts without actually looking over the changes.)

 In any case, I thought it'd be a good time to bump the issue (with 
 patchhttp://projects.scipy.org/numpy/ticket/1300#comment:2
 ).

 Cheers,
 -Tony

 PS: Just for context, this issue comes up when displaying images with Chaco
 (which converts images to unsigned integer arrays and calls nanmin).


Fixed in r8445. Please add some tests.

Chuck
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion