/zarr-java2

Java implementation of the Zarr Specification

Primary LanguageJavaMIT LicenseMIT

Early preview of zarr-java

This repository contains an early preview of a Java implementation of the Zarr specification. It is intended for collecting feedback from the community and not for use. The API is subject to changes.

Refer to JZarr for a stable implementation of Zarr version 2.

Usage

import dev.zarr.zarrjava.store.FilesystemStore;
import dev.zarr.zarrjava.store.HttpStore;
import dev.zarr.zarrjava.v3.Array;
import dev.zarr.zarrjava.v3.DataType;
import dev.zarr.zarrjava.v3.Group;

Group hierarchy = Group.open(
    new HttpStore("https://static.webknossos.org/data/zarr_v3")
        .resolve("l4_sample")
);
Array array = hierarchy.get("color").get("1");
ucar.ma2.Array outArray = array.read(
    new long[]{0, 3073, 3073, 513}, // offset
    new int[]{1, 64, 64, 64} // shape
);

Array array = Array.create(
    new FilesystemStore("/path/to/zarr").resolve("array"),
    Array.metadataBuilder()
        .withShape(1, 4096, 4096, 1536)
        .withDataType(DataType.UINT32)
        .withChunkShape(1, 1024, 1024, 1024)
        .withFillValue(0)
        .withCodecs(c -> c.withSharding(new int[]{1, 32, 32, 32}, c1 -> c1.withBlosc()))
        .build();
);
array.write(
    new long[]{0, 0, 0, 0}, // offset
    ucar.ma2.Array.factory(ucar.ma2.DataType.UINT, new int[]{1, 1024, 1024, 1024})
);

Development Start-Guide

Run Tests Locally

To be able to run the tests locally, make sure to have python3.11 installed. Also, you need to set up a venv for zarrita at the root of the project: python3.11 -m venv venv_zarrita.

Then install zarrita there with venv_zarrita/Scripts/pip install zarrita for Windows and venv_zarrita/bin/pip install zarrita for Linux.

Furthermore, you will need the l4_sample test data:

curl https://static.webknossos.org/data/zarr_v3/l4_sample.zip -o testdata/l4_sample.zip && cd testdata && unzip l4_sample.zip