diff --git a/Cargo.toml b/Cargo.toml index 5bac658..afeca75 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "acquire-imaging" authors = ["Nathan Clack "] -version = "0.4.0-rc2" +version = "0.4.0-rc3" edition = "2021" [lib] diff --git a/build.rs b/build.rs index a1087ea..729b7bd 100644 --- a/build.rs +++ b/build.rs @@ -19,7 +19,7 @@ fn main() { serde_json::from_str(drivers_json.as_str()).expect("Failed to parse drivers.json"); let dst = cmake::Config::new("acquire-common") - .profile("RelWithDebInfo") + .profile("Release") .define("NOTEST", "TRUE") .define("NO_UNIT_TESTS", "TRUE") .define("NO_EXAMPLES", "TRUE") diff --git a/drivers.json b/drivers.json index 35dd763..e120f80 100644 --- a/drivers.json +++ b/drivers.json @@ -1,5 +1,5 @@ { - "acquire-driver-zarr": "0.1.13", + "acquire-driver-zarr": "0.2.0", "acquire-driver-egrabber": "0.1.5", "acquire-driver-hdcam": "0.1.9", "acquire-driver-spinnaker": "0.1.1", diff --git a/tests/test_zarr.py b/tests/test_zarr.py index 7e8bbd7..7237e02 100644 --- a/tests/test_zarr.py +++ b/tests/test_zarr.py @@ -140,9 +140,9 @@ def test_write_external_metadata_to_zarr( assert dimension_z.shard_size_chunks == 0 props.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_z, + dimension_y, + dimension_x, ] props = runtime.set_configuration(props) @@ -186,16 +186,20 @@ def test_write_external_metadata_to_zarr( assert axis_units == (None, "micrometer", "micrometer") # We only have one multi-scale level and one transform. + """ acquire-zarr does not yet have support for setting pixel scale transform = multi_scale_image_metadata["coordinateTransformations"][0][0] pixel_scale_um = tuple( transform["scale"][axis_names.index(axis)] for axis in ("x", "y") ) assert pixel_scale_um == props.video[0].storage.settings.pixel_scale_um + """ - # ome-zarr only reads attributes it recognizes, so use a plain zarr reader - # to read external metadata instead. - group = zarr.open(props.video[0].storage.settings.uri) - assert group["0"].attrs.asdict() == metadata + # read the external metadata directly + with open( + Path(props.video[0].storage.settings.uri) / "acquire.json" + ) as fh: + acquire_json = json.load(fh) + assert acquire_json == metadata @pytest.mark.parametrize( @@ -249,10 +253,10 @@ def test_write_compressed_zarr( assert dimension_t.shard_size_chunks == 0 p.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, - dimension_c, dimension_t, + dimension_c, + dimension_y, + dimension_x, ] runtime.set_configuration(p) @@ -274,7 +278,11 @@ def test_write_compressed_zarr( p.video[0].camera.settings.shape[1], p.video[0].camera.settings.shape[0], ) - assert data.attrs.asdict() == metadata + + # validate external metadata + with open(Path(p.video[0].storage.settings.uri) / "acquire.json") as fh: + acquire_json = json.load(fh) + assert acquire_json == metadata # load from Dask data = da.from_zarr(p.video[0].storage.settings.uri, component="0") @@ -337,9 +345,9 @@ def test_write_zarr_with_chunking( assert dimension_t.shard_size_chunks == 0 p.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_t, + dimension_y, + dimension_x, ] runtime.set_configuration(p) @@ -401,9 +409,9 @@ def test_write_zarr_multiscale( assert dimension_t.shard_size_chunks == 0 p.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_t, + dimension_y, + dimension_x, ] p.video[0].storage.settings.enable_multiscale = True @@ -482,9 +490,9 @@ def test_write_zarr_v3( ) p.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_t, + dimension_y, + dimension_x, ] runtime.set_configuration(p) @@ -540,9 +548,9 @@ def test_metadata_with_trailing_whitespace( ) p.video[0].storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_t, + dimension_y, + dimension_x, ] runtime.set_configuration(p) @@ -550,11 +558,10 @@ def test_metadata_with_trailing_whitespace( runtime.start() runtime.stop() - # load from Zarr - group = zarr.open(p.video[0].storage.settings.uri) - data = group["0"] - - assert data.attrs.asdict() == metadata + # check metadata + with open(Path(p.video[0].storage.settings.uri) / "acquire.json") as fh: + acquire_json = json.load(fh) + assert acquire_json == metadata def test_write_zarr_to_s3(runtime: Runtime, request: pytest.FixtureRequest): @@ -614,9 +621,9 @@ def test_write_zarr_to_s3(runtime: Runtime, request: pytest.FixtureRequest): assert dimension_t.shard_size_chunks == 0 video.storage.settings.acquisition_dimensions = [ - dimension_x, - dimension_y, dimension_t, + dimension_y, + dimension_x, ] runtime.set_configuration(props) @@ -639,7 +646,7 @@ def test_write_zarr_to_s3(runtime: Runtime, request: pytest.FixtureRequest): assert data.chunks == (64, 540, 960) assert data.shape == ( - 64, + video.max_frame_count, video.camera.settings.shape[1], video.camera.settings.shape[0], )