Skip to content

BUG: Parsing ellipsis in indexing #93

Closed
@jakirkham

Description

@jakirkham

Running into some cases where parsing an Ellipsis does not work. Note that Input 5 where an Ellipsis is used with an index doesn't work.

Side note: Seems there is something funky with floating point round off error too (e.g. Input 3 and Input 4 seem to differ).

In [1]: import zarr

In [2]: z = zarr.empty(shape=(100, 110), chunks=(10, 11), dtype=float)

In [3]: z[0]
Out[3]: 
array([  6.91088620e-310,   6.91088620e-310,   2.10918838e-316,
         2.10918838e-316,   1.94607893e-316,   5.72938864e-313,
         0.00000000e+000,   3.95252517e-323,   1.57027689e-312,
         1.93101617e-312,   1.25197752e-312,   1.18831764e-312,
         1.12465777e-312,   1.06099790e-312,   2.31297541e-312,
         2.33419537e-312,   1.93101617e-312,   1.93101617e-312,
         1.25197752e-312,   1.18831764e-312,   1.12465777e-312,
         1.03977794e-312,   1.25197752e-312,   2.31297541e-312,
         5.72938864e-313,   1.01855798e-312,   1.08221785e-312,
         1.25197752e-312,   1.25197752e-312,   1.18831764e-312,
         1.97345609e-312,   6.79038653e-313,   1.93101617e-312,
         2.31297541e-312,   5.72938864e-313,   1.01855798e-312,
         1.93101617e-312,   1.93101617e-312,   1.25197752e-312,
         1.18831764e-312,   1.12465777e-312,   1.06099790e-312,
         2.31297541e-312,   5.72938864e-313,   1.01855798e-312,
         1.97345609e-312,   1.93101617e-312,   1.06099790e-312,
         5.72938864e-313,   1.01855798e-312,   2.75859453e-313,
         5.72938864e-313,   1.57027689e-312,   1.93101617e-312,
         1.16709769e-312,   5.72938864e-313,   1.01855798e-312,
         5.72938864e-313,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   4.94065646e-324,   6.91087535e-310,
         0.00000000e+000,   4.94065646e-324,   2.45550626e-321,
         6.91088620e-310,   1.98184750e-316,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         6.91087588e-310,   1.19069821e-321,   2.05561901e-316,
         6.91088620e-310,   6.91070369e-310,   1.03259720e-321,
         6.91088620e-310,   6.91088620e-310,   7.93037613e-120,
         1.44506353e+214,   3.63859382e+185,   2.43896203e-154,
         7.75110916e+228,   4.44743484e+252])

In [4]: z[0, :]
Out[4]: 
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  0.])

In [5]: z[0, ...]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-27fbc5543985> in <module>()
----> 1 z[0, ...]

/opt/conda2/lib/python2.7/site-packages/zarr/core.pyc in __getitem__(self, item)
    446 
    447         # normalize selection
--> 448         selection = normalize_array_selection(item, self._shape)
    449 
    450         # determine output array shape

/opt/conda2/lib/python2.7/site-packages/zarr/util.pyc in normalize_array_selection(item, shape)
    184         # determine start and stop indices for all axes
    185         selection = tuple(normalize_axis_selection(i, l)
--> 186                           for i, l in zip(item, shape))
    187 
    188         # fill out selection if not completely specified

/opt/conda2/lib/python2.7/site-packages/zarr/util.pyc in <genexpr>((i, l))
    184         # determine start and stop indices for all axes
    185         selection = tuple(normalize_axis_selection(i, l)
--> 186                           for i, l in zip(item, shape))
    187 
    188         # fill out selection if not completely specified

/opt/conda2/lib/python2.7/site-packages/zarr/util.pyc in normalize_axis_selection(item, l)
    163 
    164     else:
--> 165         raise TypeError('expected integer or slice, found: %r' % item)
    166 
    167 

TypeError: expected integer or slice, found: Ellipsis

In [6]: z[...]
Out[6]: 
array([[  6.91088620e-310,   6.91088620e-310,   2.12535499e-316, ...,
          0.00000000e+000,   2.28439709e-032,   6.91088696e-310],
       [  0.00000000e+000,  -5.25530781e-026,   6.91088696e-310, ...,
          6.91087565e-310,   3.95252517e-323,   1.41861741e-316],
       [  6.91087582e-310,   4.44659081e-323,   1.41861622e-316, ...,
          1.41867314e-316,   6.91087582e-310,   2.22329541e-322],
       ..., 
       [  0.00000000e+000,   0.00000000e+000,   0.00000000e+000, ...,
          0.00000000e+000,   0.00000000e+000,   0.00000000e+000],
       [  0.00000000e+000,   0.00000000e+000,   0.00000000e+000, ...,
          0.00000000e+000,   0.00000000e+000,   0.00000000e+000],
       [  0.00000000e+000,   0.00000000e+000,   0.00000000e+000, ...,
          1.41861267e-316,   6.91087582e-310,   6.42285340e-323]])

In [7]: z[:, 0]
Out[7]: 
array([  6.91088620e-310,   6.91088620e-310,   6.91087579e-310,
         6.91087579e-310,   6.91087579e-310,   6.91087579e-310,
         6.91087579e-310,   6.91087579e-310,   6.91087535e-310,
         6.91087535e-310,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087535e-310,   3.40411230e-321,
         2.03587931e-316,   6.91088620e-310,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087534e-310,   6.91087578e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087282e-310,   6.91087282e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087578e-310,   6.91087535e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087580e-310,   6.91087580e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087580e-310,   6.91087566e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         1.82894873e-060,   6.91087282e-310,   6.91087582e-310,
         0.00000000e+000,   0.00000000e+000,   0.00000000e+000,
         0.00000000e+000])

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugPotential issues with the zarr-python libraryrelease notes doneAutomatically applied to PRs which have release notes.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions