The BigDataViewer N5 back-end (format="bdv.n5"
) requires a N5 dataset with a specific group hierarchy and attributes.
Multi-channel (-angle, -tile, -illumination) time-series as multi-resolution 3D stacks are organized in the following N5 hierarchy:
\
├── setup0
│ ├── attributes.json {"downsamplingFactors":[[1,1,1],[2,2,2]],"dataType":"uint8"}
│ ├── timepoint0
│ │ ├── s0
│ │ │ ├── attributes.json {"dataType":"uint8","compression":{"type":"bzip2","blockSize":9},"blockSize":[16,16,16],"dimensions":[400,400,25]}
│ │ │ ┊
│ │ │
│ │ ├── s1
│ │ ┊
│ │
│ ├── timepoint1
│ ┊
│
├── setup1
┊
Each 3D stack is stored as a dataset with path formatted as /setup%d/timepoint%d/s%d
.
Here, setup
number is flattened integer ID of channel, angle, tile, illumination, etc.,
timepoint
is the integer ID of the time point, and s
is the scale level of the multi-resolution pyramid.
Each setup
group has attributes
"downsamplingFactors" : [[1,1,1], [2,2,1], ...]
"dataType":"uint8"
that specify downsampling scheme and datatype, which are the same for all timepoints.
downsamplingFactors
specifies power-of-two downscaling factors for each scale level (with respect to full resolution s0
, which always has [1,1,1]
).
dataType
is one of {uint8, uint16, uint32, uint64, int8, int16, int32, int64, float32, float64}.
TODO: Additional metadata (for example identifying
setup3
as channel 3, tile 124, etc.) could be replicated from the XML. The idea would be that parts of a dataset can be used independent of BDV, without the XML. We should agree on standard attributes for this.
timepoint
has no mandatory attributes.
For compatibility with Paintera, when exporting to N5 we put the "multiScale" : true
, and "resolution" : [x,y,z]
attributes.
s0
, s1
, etc. have the mandatory N5 dataset attributes.
For compatibility with Paintera, when exporting to N5 we put the "downsamplingFactors": [x,y,z]
attribute.
TODO: Additional metadata (for example scaled resolution and affine transform) could be replicated from the XML. The idea would be that an individual stack can be used independent of BDV, without the XML. We should agree on standard attributes for this.