Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug with setitem with oindex and sharding #2834

Open
dcherian opened this issue Feb 14, 2025 · 1 comment
Open

bug with setitem with oindex and sharding #2834

dcherian opened this issue Feb 14, 2025 · 1 comment
Labels
bug Potential issues with the zarr-python library

Comments

@dcherian
Copy link
Contributor

Zarr version

v3.0.2

Numcodecs version

?

Python Version

3.12

Operating System

any

Installation

any

Description

Discovered in #2825

Steps to reproduce

import zarr
import numpy as np

store = zarr.storage.MemoryStore()
group = zarr.group(store)
array = group.create_array(
    name="zoo",
    shape=(1,2,1),
    chunks=(1,2,1),
    shards=(1,2,1),
    dtype=np.int32,
)
zindexer = (np.array([0]), np.array([0, 0]), np.array([0]))
new_data = np.full(array.oindex[zindexer].shape, fill_value=1)
array.oindex[zindexer] = new_data

raises the error:

ValueError: shape mismatch: value array of shape (1,2,1) could not be broadcast to indexing result of shape (2,)

It succeeds with shards=None.

Additional output

No response

@dcherian dcherian added the bug Potential issues with the zarr-python library label Feb 14, 2025
@brokkoli71
Copy link
Member

I think the problem is that the information that the selection is an OrthogonalSelection gets lost on the way.

In ShardingCodec._encode_partial_single a new indexer is created to index the inner chunks:

indexer = list(
    get_indexer(
        selection, shape=shard_shape, chunk_grid=RegularChunkGrid(chunk_shape=chunk_shape)
    )
)

There, get_indexer guesses what indexing should be done based on the selection tuple, and in this case guesses CoordinateIndexer instead of OrthogonalIndexer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Potential issues with the zarr-python library
Projects
None yet
Development

No branches or pull requests

2 participants