sparse icon indicating copy to clipboard operation
sparse copied to clipboard

GCXS slice bug

Open israelmcmc opened this issue 2 years ago • 0 comments

Describe the bug The slice operator (__getitem__) produces incorrect results in some cases for the class GCXS.

To Reproduce I found this error working with a large matrix. This is the minimal version that reproduces the error

dok = DOK(shape = (12, 1147, 12, 32, 1147, 3, 3))
dok[1,1,1,1,1,1,1] = 5
coo = dok.to_coo()
gcxs = coo.asformat('gcxs')

print( coo[1:11, 1:2, 1:11, 1:31, 1:1146, 1:2, 1:2])
print(gcxs[1:11, 1:2, 1:11, 1:31, 1:1146, 1:2, 1:2])

Results in

<COO: shape=(10, 1, 10, 30, 1145, 1, 1), dtype=float64, nnz=1, fill_value=0.0>
<GCXS: shape=(10, 1, 10, 30, 1145, 1, 1), dtype=float64, nnz=0, fill_value=0.0, compressed_axes=(5,)>

They should be the same.

I tried to reproduce it on small arrays, but it worked just fine. On medium-size matrices however, like the following, sometimes it works and sometimes it doesn't (running exactly the same code, seems random):

dok = DOK(shape = (4,5,6,7,8,9,10))
dok[1,1,1,1,1,1,1] = 5
coo = dok.to_coo()
gcxs = coo.asformat('gcxs')

print( coo[1:3, 1:2, 1:5, 1:6, 1:7, 1:8, 1:9])
print(gcxs[1:3, 1:2, 1:5, 1:6, 1:7, 1:8, 1:9])

Sometimes results in :

<COO: shape=(2, 1, 4, 5, 6, 7, 8), dtype=float64, nnz=1, fill_value=0.0>
<GCXS: shape=(2, 1, 4, 5, 6, 7, 8), dtype=float64, nnz=1, fill_value=0.0, compressed_axes=(0,)>

And if I keep executing the cell, sometimes it outputs:

<COO: shape=(2, 1, 4, 5, 6, 7, 8), dtype=float64, nnz=1, fill_value=0.0>
<GCXS: shape=(2, 1, 4, 5, 6, 7, 8), dtype=float64, nnz=0, fill_value=0.0, compressed_axes=(0,)>

Expected behavior COO and GCXS should have consistent results. In particular for the examples above, the result should have nnz=1 always (COO gets it right).

System

  • OS and version: macOS 12.3.1
  • sparse version (sparse.__version__): 0.13.0
  • NumPy version (np.__version__): 1.21.5
  • Numba version (numba.__version__): 0.53.0

Additional context None

israelmcmc avatar May 16 '22 19:05 israelmcmc