This vignette demonstrates pizzarr reading a Zarr V3 store that was written by zarr-python 3.x — showing that the two implementations are interoperable.
The test store includes arrays with various data types, compression
codecs, chunk layouts, fill values, and nested groups. It was generated
with the script bundled in this project at:
inst/extdata/fixtures/v3/generate-v3-zarr-python.py.
zarr-python embedded these attributes when it created the store:
a <- root$get_item("float64_3d")
a$get_shape()
#> [1] 2 3 4
a$as.array()
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 0 4 8
#> [2,] 12 16 20
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 1 5 9
#> [2,] 13 17 21
#>
#> , , 3
#>
#> [,1] [,2] [,3]
#> [1,] 2 6 10
#> [2,] 14 18 22
#>
#> , , 4
#>
#> [,1] [,2] [,3]
#> [1,] 3 7 11
#> [2,] 15 19 23The with_fill array was created with
fill_value = -9999.0 and only the first chunk was written.
The second chunk returns fill values:
When the array shape is not evenly divisible by the chunk shape, edge chunks are smaller. This 5x7 array uses 3x4 chunks:
The store contains a sub-group with attributes and two arrays that carry their own metadata:
g <- root$get_item("var_group")
g$get_attrs()$to_list()
#> $description
#> [1] "Group with multiple variables"
#>
#> $source
#> [1] "zarr-python 3.x test generation"