Skip to content

Commit b722532

Browse files
committed
doc: update README with zarr3 details
1 parent 81405bc commit b722532

1 file changed

Lines changed: 28 additions & 6 deletions

File tree

README.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
# n5-zarr [![Build Status](https://github.com/saalfeldlab/n5-zarr/actions/workflows/build-main.yml/badge.svg)](https://github.com/saalfeldlab/n5-zarr/actions/workflows/build-main.yml)
22
Zarr filesystem backend for N5.
33

4-
This library provides best effort compatibility with existing [Zarr v2](https://zarr.readthedocs.io/en/stable/spec/v2.html) data stored in filesystem containers. So far, I have tested
5-
6-
* self-consistency, i.e. data writing and reading in this implementation works,
7-
* reading of some example zarr containers written with Python (check the [examples](https://github.com/saalfeldlab/n5-zarr/blob/master/src/test/python/zarr-test.py))
4+
This library provides best effort compatibility with existing [Zarr v2](https://zarr-specs.readthedocs.io/en/latest/v2/v2.0.html) and
5+
[Zarr v3](https://zarr-specs.readthedocs.io/en/latest/v3/core/index.html).
86

97
## Examples
108

@@ -27,11 +25,34 @@ This also works without Blosc compression if not available.
2725

2826
## Supported Zarr features
2927

28+
### Zarr v3
29+
30+
This implementation supports arbitrary metadata and arrays stored with core codecs and data types.
31+
32+
<dl>
33+
<dt>Groups and array metadata</dt>
34+
<dd>as described in <a href="https://zarr-specs.readthedocs.io/en/latest/v3/core/index.html#metadata">Zarr v3 metadata spec</a>.</dd>
35+
<dt><a href="https://zarr-specs.readthedocs.io/en/latest/v3/chunk-key-encodings/index.html">Chunk key encodings</a></dt>
36+
<dd>"default", "v2"</dd>
37+
<dt><a href="https://zarr-specs.readthedocs.io/en/latest/v3/chunk-grids/index.html">Chunk grids</a></dt>
38+
<dd>"regular"</dd>
39+
<dt>Compression ("bytes -> bytes") codecs</dt>
40+
<dd>"gzip", "blosc", "zstd"</dd>
41+
<dd>and others not officially supported by the zarr spec: "bzip2", "lz4", "xz"</dd>
42+
<dt>Other codecs</dt>
43+
<dd>"bytes", "sharding", "transpose", "crc32c"</dd>
44+
<dt><a href="https://zarr-specs.readthedocs.io/en/latest/v3/data-types/index.html">Data typeg</a></dt>
45+
<dd>(u)int{8,16,32,64}, float{32,64}</dd>
46+
</dl>
47+
48+
49+
### Zarr v2
50+
3051
This implementation currently supports the following Zarr features
3152

3253
<dl>
3354
<dt>Groups</dt>
34-
<dd>as described by the <a href="https://zarr.readthedocs.io/en/stable/spec/v2.html#hierarchies">Zarr v2 spec for hierarchies</a>.</dd>
55+
<dd>as described by the <a href="https://zarr-specs.readthedocs.io/en/latest/v2/v2.0.html#hierarchies">Zarr v2 spec for hierarchies</a>.</dd>
3556
<dt>N-dimensional arrays in C and F order</dt>
3657
<dd>for efficiency, both array types are opened without changing the order of elements in memory, only the chunk order and shape are adjusted such that chunks form the correct transposed tensor. When used via <a href="https://github.com/saalfeldlab/n5-imglib2/">n5-imglib2</a>, a <a href="https://javadoc.scijava.org/ImgLib2/net/imglib2/view/Views.html#permute-net.imglib2.RandomAccessibleInterval-int-int-">view with permuted axes</a> can be easily created.</dd>
3758
<dt>Arbitrary meta-data</dt>
@@ -46,6 +67,7 @@ This implementation currently supports the following Zarr features
4667

4768
[Filters](https://zarr.readthedocs.io/en/stable/spec/v2.html#filters) are not currently supported because I feel ambiguous about them. Please let me know of use cases that I am missing, it is not hard to add data filters of any kind. I just cannot come up with a single thing that I would like to do here right now.
4869

49-
## N5 gimmicks
70+
71+
#### N5 gimmicks
5072

5173
Optionally, N5 dataset attributes ("dimensions", "blockSize", "compression", "dataType") can be virtually mapped such that N5-API based code that reads or writes them directly via general attribute access will see and modify the corresponding zarray (dataset) attributes. Keep in mind that this will lead to name clashes if a Zarr dataset uses any of these attributes for other purposes, try switching the mapping off first if that is an issue.

0 commit comments

Comments
 (0)