You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extend the axes specification, adding a new optional field discrete whose values are booleans. Discrete axes should not be interpolated, whereas continuous axes may be interpolated. For example, the channels are usually discrete:
A space is a named list of axes and defines the coordinate system of the data. Two simple examples - a viewer may prefer the physical spatial coordinates of data:
This is a nice default that does not hurt much that I can see, and is more concise than alternatives. See my brainstorming here.
Every array / dataset has a default space whose name is the empty string. It's axes have default names dim_i, are discrete, and there exist as many axes as array dimensions. For example, a 3D dataset's array space is
Array space is shared across all datasets, so if any applications need to differentiate between them, a new discrete space should be explicitly defined with other, unique axis names.
coordinateTransformations
This proposal adds the idea that a coordinateTransformation is a function from one space to another space to the existing coordinateTransformations metadata. coordinateTransformations will now have new fields:
input_space and output_space, whose values are strings corresponding to the names of defined spaces
input_axes and output_axes whose values are arrays of strings corresponding to axis names. (See below)
name whose value is a string, makes it possible to reference a transformation.
For example, assuming "array space" and the "physical-micrometers" space defined above:
This is a preliminary proposal and discussion for axes and coordinate transformations. For more details see:
Add discrete axes
Extend the axes specification, adding a new optional field
discretewhose values are booleans. Discrete axes should not be interpolated, whereas continuous axes may be interpolated. For example, the channels are usually discrete:{"name": "c", "type": "channel", "discrete": true }, {"name": "y", "type": "space", "unit": "micrometer"}, {"name": "x", "type": "space", "unit": "micrometer"},Add spaces
A space is a named list of axes and defines the coordinate system of the data. Two simple examples - a viewer may prefer the physical spatial coordinates of data:
{ "name" : "physical-micrometers", "axes" : [ {"name": "y", "type": "space", "unit": "micrometer"}, {"name": "x", "type": "space", "unit": "micrometer"} ] }where an algorithm that processes pixels may prefer the discrete pixel grid:
array space
This is a nice default that does not hurt much that I can see, and is more concise than alternatives. See my brainstorming here.
Every array / dataset has a default space whose name is the empty string. It's axes have default names
dim_i, are discrete, and there exist as many axes as array dimensions. For example, a 3D dataset's array space is{ "name" : "", "axes" : [ {"name": "dim_0", "discrete": true }, {"name": "dim_1", "discrete": true } ] }Array space is shared across all datasets, so if any applications need to differentiate between them, a new discrete space should be explicitly defined with other, unique axis names.
coordinateTransformations
This proposal adds the idea that a
coordinateTransformationis a function from one space to another space to the existing coordinateTransformations metadata.coordinateTransformations will now have new fields:input_spaceandoutput_space, whose values are strings corresponding to the names of definedspacesinput_axesandoutput_axeswhose values are arrays of strings corresponding to axis names. (See below)namewhose value is a string, makes it possible to reference a transformation.For example, assuming "array space" and the "physical-micrometers" space defined above:
{ "name" : "pixels-to-micrometers", "type" : "scale", "scale" : [1.1, 2.2], "input_space" : "", "output_space": "physical-micrometers" }this is equivalent to:
{ "name" : "pixels-to-micrometers", "type" : "scale", "scale" : [1.1, 2.2], "input_axes" : ["dim_0", "dim_1"], "output_axes": ["y", "x"] }Providing
input_axesandoutput_axesenables transforming subsets of axes as in this example.Specific questions
See also
Thanks
This took shape with the help of lots of people.
@constantinpape @xulman @tischi @sbesson @axtimwalde @tpietzsch @d-v-b @joshmoore @jbms @thewtex @dzenanz @lassoan @satra @jni
organizers and participants of the 2022 Bioimage Hackathon, and even more.