tischi / i2k-2020-s3-zarr-workshop

0 stars 1 forks source link

How do we specify metadata #3

Open constantinpape opened 3 years ago

constantinpape commented 3 years ago

@joshmoore @tischi A few questions already: How do we specify additional metadata in the ome.zarr multi-scale format?

In particular, we need:

I couldn't find anything in the format definittion https://forum.image.sc/t/multiscale-arrays-v0-1/37930.

joshmoore commented 3 years ago

@constantinpape, that was something skipped in https://github.com/zarr-developers/zarr-specs/issues/50 -- I assume for the moment you can store it in the closest representation to N5.

constantinpape commented 3 years ago

@constantinpape, that was something skipped in zarr-developers/zarr-specs#50 -- I assume for the moment you can store it in the closest representation to N5.

Right now it's stored in the xml, so if we keep the xml we don't need to change anything.

d-v-b commented 3 years ago

chiming in late, but I have been doing this:

{
"multiscales": [
        {
            "datasets": [
                {
                    "path": "s0",
                    "transform": { # Implementation detail: these
                        "axes": [  # axis values are all listed in C order. 
                            "z",
                            "y",
                            "x"
                        ],
                        "scale": [
                            5.24,
                            4.0,
                            4.0
                        ],
                        "translate": [
                            0.0,
                            0.0,
                            0.0
                        ],
                        "units": [
                            "nm",
                            "nm",
                            "nm"
                        ]
                    }
                },
                {
                    "path": "s1",
                    "transform": {
                        "axes": [
                            "z",
                            "y",
                            "x"
                        ],
                        "scale": [
                            10.48,
                            8.0,
                            8.0
                        ],
                        "translate": [
                            2.62,
                            2.0,
                            2.0
                        ],
                        "units": [
                            "nm",
                            "nm",
                            "nm"
                        ]
                    }
                }
             ]
         }
    ]
}

each entry in datasets is an object that has a path property (as required by the ome multiscale spec) and additionally a transform property. The same transform objects appear in their respective array metadata.

joshmoore commented 3 years ago

Thanks, @d-v-b! I certainly pointed to examples of the COSEM data. I think @constantinpape and @tischi adjusted that slightly in their data, which I assume will be a part of ramping back up on https://github.com/zarr-developers/zarr-specs/issues/50

constantinpape commented 3 years ago

Thanks, @d-v-b! I certainly pointed to examples of the COSEM data.

Yes, we used the COSEM layout, with just a minor change, see https://github.com/tischi/i2k-2020-s3-zarr-workshop/issues/13#issuecomment-733945286.

d-v-b commented 3 years ago

good to know! FYI, you wonder here https://github.com/tischi/i2k-2020-s3-zarr-workshop/issues/13#issuecomment-734225643 why "units" is a list with length == number of axes. This is simply to accommodate datasets where different axes have different units, e.g. spatiotemporal data or hyperspectral data.

tischi commented 3 years ago

This is simply to accommodate datasets where different axes have different units

Good point! Makes sense!