For example ZeroMeanUnitVarianceTransformation only permits a single mean and standard deviation. However the spec here suggests these these should be arrays/lists, and an axes value should be supported as well. This means that it's not currently possible to specify using mean/std on a per-channel basis.
Update relevant methods (e.g. public Number getMean(); public void setMean(Number mean);) to work with either arrays or lists, rather than individual numbers, and also add axes support - but this will be an API-breaking change
Deprecate the current methods, and add new ones - but this would require different naming (e.g. getMeans()) that could deviate from other implementations
We can absolutely convert the Transformations in a way to handle lists. For the IO classes in anything <=0.4.0 we just have to make sure that we transfer from a PRIMITIVE to List and vice versa so that there is only a single implementation of each transformation that handles a list.
In <= v0.4.0 some information is missing from classes in the io.bioimage.specification.transformation.transformation package.
For example
ZeroMeanUnitVarianceTransformation
only permits a single mean and standard deviation. However the spec here suggests these these should be arrays/lists, and anaxes
value should be supported as well. This means that it's not currently possible to specify using mean/std on a per-channel basis.ScaleLinearTransformation
(a possible alternative) andScaleMinMaxTransformation
have similar limitations.I can think of two main ways to fix it:
public Number getMean(); public void setMean(Number mean);
) to work with either arrays or lists, rather than individual numbers, and also add axes support - but this will be an API-breaking changegetMeans()
) that could deviate from other implementations