Skip to content

proc_ops ¤

Classes:

Name Description
AddKnownDatasetStats
Binarize

'output = tensor > threshold'.

Clip
EnsureDtype
FixedZeroMeanUnitVariance

normalize to zero mean, unit variance with precomputed values.

ScaleLinear
ScaleMeanVariance
ScaleRange
Sigmoid

1 / (1 + e^(-input)).

Softmax

Softmax activation function.

UpdateStats

Calculates sample and/or dataset measures

ZeroMeanUnitVariance

normalize to zero mean, unit variance.

Functions:

Name Description
get_proc

Attributes:

Name Type Description
ProcDescr
Processing

ProcDescr module-attribute ¤

AddKnownDatasetStats dataclass ¤

AddKnownDatasetStats(dataset_stats: Mapping[DatasetMeasure, MeasureValue])

Bases: BlockedOperator


              flowchart TD
              bioimageio.core.proc_ops.AddKnownDatasetStats[AddKnownDatasetStats]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops.AddKnownDatasetStats
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                



              click bioimageio.core.proc_ops.AddKnownDatasetStats href "" "bioimageio.core.proc_ops.AddKnownDatasetStats"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__

Attributes:

Name Type Description
dataset_stats Mapping[DatasetMeasure, MeasureValue]
required_measures Set[Measure]

dataset_stats instance-attribute ¤

dataset_stats: Mapping[DatasetMeasure, MeasureValue]

required_measures property ¤

required_measures: Set[Measure]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
119
120
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    sample.stat.update(self.dataset_stats.items())

Binarize dataclass ¤

Binarize(input: MemberId, output: MemberId, threshold: Union[float, Sequence[float]], axis: Optional[AxisId] = None)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.Binarize[Binarize]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.Binarize
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.Binarize href "" "bioimageio.core.proc_ops.Binarize"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

'output = tensor > threshold'.

Methods:

Name Description
__call__
from_proc_descr
get_output_shape

Attributes:

Name Type Description
axis Optional[AxisId]
input MemberId
output MemberId
required_measures Collection[Measure]
threshold Union[float, Sequence[float]]

axis class-attribute instance-attribute ¤

axis: Optional[AxisId] = None

input instance-attribute ¤

input: MemberId

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

threshold instance-attribute ¤

threshold: Union[float, Sequence[float]]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.BinarizeDescr, v0_5.BinarizeDescr], member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
@classmethod
def from_proc_descr(
    cls, descr: Union[v0_4.BinarizeDescr, v0_5.BinarizeDescr], member_id: MemberId
) -> Self:
    if isinstance(descr.kwargs, (v0_4.BinarizeKwargs, v0_5.BinarizeKwargs)):
        return cls(
            input=member_id, output=member_id, threshold=descr.kwargs.threshold
        )
    elif isinstance(descr.kwargs, v0_5.BinarizeAlongAxisKwargs):
        return cls(
            input=member_id,
            output=member_id,
            threshold=descr.kwargs.threshold,
            axis=descr.kwargs.axis,
        )
    else:
        assert_never(descr.kwargs)

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
208
209
210
211
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

Clip dataclass ¤

Clip(input: MemberId, output: MemberId, min: Optional[Union[float, SampleQuantile, DatasetQuantile]] = None, max: Optional[Union[float, SampleQuantile, DatasetQuantile]] = None)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.Clip[Clip]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.Clip
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.Clip href "" "bioimageio.core.proc_ops.Clip"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__
__post_init__
from_proc_descr
get_output_shape

Attributes:

Name Type Description
input MemberId
max Optional[Union[float, SampleQuantile, DatasetQuantile]]

maximum value for clipping

min Optional[Union[float, SampleQuantile, DatasetQuantile]]

minimum value for clipping

output MemberId
required_measures

input instance-attribute ¤

input: MemberId

max class-attribute instance-attribute ¤

max: Optional[Union[float, SampleQuantile, DatasetQuantile]] = None

maximum value for clipping

min class-attribute instance-attribute ¤

min: Optional[Union[float, SampleQuantile, DatasetQuantile]] = None

minimum value for clipping

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

__post_init__ ¤

__post_init__()
Source code in src/bioimageio/core/proc_ops.py
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
def __post_init__(self):
    if self.min is None and self.max is None:
        raise ValueError("missing min or max value")

    if (
        isinstance(self.min, float)
        and isinstance(self.max, float)
        and self.min >= self.max
    ):
        raise ValueError(f"expected min < max, but {self.min} >= {self.max}")

    if isinstance(self.min, (SampleQuantile, DatasetQuantile)) and isinstance(
        self.max, (SampleQuantile, DatasetQuantile)
    ):
        if self.min.axes != self.max.axes:
            raise NotImplementedError(
                f"expected min and max quantiles with same axes, but got {self.min.axes} and {self.max.axes}"
            )
        if self.min.q >= self.max.q:
            raise ValueError(
                f"expected min quantile < max quantile, but {self.min.q} >= {self.max.q}"
            )

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.ClipDescr, v0_5.ClipDescr], member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
@classmethod
def from_proc_descr(
    cls, descr: Union[v0_4.ClipDescr, v0_5.ClipDescr], member_id: MemberId
) -> Self:
    if isinstance(descr, v0_5.ClipDescr):
        dataset_mode, axes = _get_axes(descr.kwargs)
        if dataset_mode:
            Quantile = DatasetQuantile
        else:
            Quantile = partial(SampleQuantile, method="inverted_cdf")

        if descr.kwargs.min is not None:
            min_arg = descr.kwargs.min
        elif descr.kwargs.min_percentile is not None:
            min_arg = Quantile(
                q=descr.kwargs.min_percentile / 100,
                axes=axes,
                member_id=member_id,
            )
        else:
            min_arg = None

        if descr.kwargs.max is not None:
            max_arg = descr.kwargs.max
        elif descr.kwargs.max_percentile is not None:
            max_arg = Quantile(
                q=descr.kwargs.max_percentile / 100,
                axes=axes,
                member_id=member_id,
            )
        else:
            max_arg = None

    elif isinstance(descr, v0_4.ClipDescr):
        min_arg = descr.kwargs.min
        max_arg = descr.kwargs.max
    else:
        assert_never(descr)

    return cls(
        input=member_id,
        output=member_id,
        min=min_arg,
        max=max_arg,
    )

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
304
305
306
307
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

EnsureDtype dataclass ¤

EnsureDtype(input: MemberId, output: MemberId, dtype: DTypeStr)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.EnsureDtype[EnsureDtype]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.EnsureDtype
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.EnsureDtype href "" "bioimageio.core.proc_ops.EnsureDtype"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
dtype DTypeStr
input MemberId
output MemberId
required_measures Collection[Measure]

dtype instance-attribute ¤

dtype: DTypeStr

input instance-attribute ¤

input: MemberId

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

from_proc_descr classmethod ¤

from_proc_descr(descr: v0_5.EnsureDtypeDescr, member_id: MemberId)
Source code in src/bioimageio/core/proc_ops.py
360
361
362
@classmethod
def from_proc_descr(cls, descr: v0_5.EnsureDtypeDescr, member_id: MemberId):
    return cls(input=member_id, output=member_id, dtype=descr.kwargs.dtype)

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
364
365
def get_descr(self):
    return v0_5.EnsureDtypeDescr(kwargs=v0_5.EnsureDtypeKwargs(dtype=self.dtype))

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
367
368
369
370
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

FixedZeroMeanUnitVariance dataclass ¤

FixedZeroMeanUnitVariance(input: MemberId, output: MemberId, mean: Union[float, xr.DataArray], std: Union[float, xr.DataArray], eps: float = 1e-06)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.FixedZeroMeanUnitVariance[FixedZeroMeanUnitVariance]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.FixedZeroMeanUnitVariance
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.FixedZeroMeanUnitVariance href "" "bioimageio.core.proc_ops.FixedZeroMeanUnitVariance"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

normalize to zero mean, unit variance with precomputed values.

Methods:

Name Description
__call__
__post_init__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
eps float
input MemberId
mean Union[float, xr.DataArray]
output MemberId
required_measures Collection[Measure]
std Union[float, xr.DataArray]

eps class-attribute instance-attribute ¤

eps: float = 1e-06

input instance-attribute ¤

input: MemberId

mean instance-attribute ¤

mean: Union[float, xr.DataArray]

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

std instance-attribute ¤

std: Union[float, xr.DataArray]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

__post_init__ ¤

__post_init__()
Source code in src/bioimageio/core/proc_ops.py
725
726
727
728
729
730
def __post_init__(self):
    assert (
        isinstance(self.mean, (int, float))
        or isinstance(self.std, (int, float))
        or self.mean.dims == self.std.dims
    )

from_proc_descr classmethod ¤

from_proc_descr(descr: v0_5.FixedZeroMeanUnitVarianceDescr, member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
@classmethod
def from_proc_descr(
    cls,
    descr: v0_5.FixedZeroMeanUnitVarianceDescr,
    member_id: MemberId,
) -> Self:
    if isinstance(descr.kwargs, v0_5.FixedZeroMeanUnitVarianceKwargs):
        dims = None
    elif isinstance(descr.kwargs, v0_5.FixedZeroMeanUnitVarianceAlongAxisKwargs):
        dims = (AxisId(descr.kwargs.axis),)
    else:
        assert_never(descr.kwargs)

    return cls(
        input=member_id,
        output=member_id,
        mean=xr.DataArray(descr.kwargs.mean, dims=dims),
        std=xr.DataArray(descr.kwargs.std, dims=dims),
    )

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
757
758
759
760
761
762
763
764
765
766
767
768
769
770
def get_descr(self):
    if isinstance(self.mean, (int, float)):
        assert isinstance(self.std, (int, float))
        kwargs = v0_5.FixedZeroMeanUnitVarianceKwargs(mean=self.mean, std=self.std)
    else:
        assert isinstance(self.std, xr.DataArray)
        assert len(self.mean.dims) == 1
        kwargs = v0_5.FixedZeroMeanUnitVarianceAlongAxisKwargs(
            axis=AxisId(str(self.mean.dims[0])),
            mean=list(self.mean),
            std=list(self.std),
        )

    return v0_5.FixedZeroMeanUnitVarianceDescr(kwargs=kwargs)

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
732
733
734
735
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

ScaleLinear dataclass ¤

ScaleLinear(input: MemberId, output: MemberId, gain: Union[float, xr.DataArray] = 1.0, offset: Union[float, xr.DataArray] = 0.0)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.ScaleLinear[ScaleLinear]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.ScaleLinear
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.ScaleLinear href "" "bioimageio.core.proc_ops.ScaleLinear"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__
from_proc_descr
get_output_shape

Attributes:

Name Type Description
gain Union[float, xr.DataArray]

multiplicative factor

input MemberId
offset Union[float, xr.DataArray]

additive term

output MemberId
required_measures Collection[Measure]

gain class-attribute instance-attribute ¤

gain: Union[float, xr.DataArray] = 1.0

multiplicative factor

input instance-attribute ¤

input: MemberId

offset class-attribute instance-attribute ¤

offset: Union[float, xr.DataArray] = 0.0

additive term

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.ScaleLinearDescr, v0_5.ScaleLinearDescr], member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
@classmethod
def from_proc_descr(
    cls,
    descr: Union[v0_4.ScaleLinearDescr, v0_5.ScaleLinearDescr],
    member_id: MemberId,
) -> Self:
    kwargs = descr.kwargs
    if isinstance(kwargs, v0_5.ScaleLinearKwargs):
        axis = None
    elif isinstance(kwargs, v0_5.ScaleLinearAlongAxisKwargs):
        axis = kwargs.axis
    elif isinstance(kwargs, v0_4.ScaleLinearKwargs):
        if kwargs.axes is not None:
            raise NotImplementedError(
                "model.v0_4.ScaleLinearKwargs with axes not implemented, please consider updating the model to v0_5."
            )
        axis = None
    else:
        assert_never(kwargs)

    if axis:
        gain = xr.DataArray(np.atleast_1d(kwargs.gain), dims=axis)
        offset = xr.DataArray(np.atleast_1d(kwargs.offset), dims=axis)
    else:
        assert isinstance(kwargs.gain, (float, int)) or len(kwargs.gain) == 1, (
            kwargs.gain
        )
        gain = (
            kwargs.gain if isinstance(kwargs.gain, (float, int)) else kwargs.gain[0]
        )
        assert isinstance(kwargs.offset, (float, int)) or len(kwargs.offset) == 1
        offset = (
            kwargs.offset
            if isinstance(kwargs.offset, (float, int))
            else kwargs.offset[0]
        )

    return cls(input=member_id, output=member_id, gain=gain, offset=offset)

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
387
388
389
390
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

ScaleMeanVariance dataclass ¤

ScaleMeanVariance(input: MemberId, output: MemberId, axes: Optional[Sequence[AxisId]] = None, reference_tensor: Optional[MemberId] = None, eps: float = 1e-06)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.ScaleMeanVariance[ScaleMeanVariance]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.ScaleMeanVariance
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.ScaleMeanVariance href "" "bioimageio.core.proc_ops.ScaleMeanVariance"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__
__post_init__
from_proc_descr
get_output_shape

Attributes:

Name Type Description
axes Optional[Sequence[AxisId]]
eps float
input MemberId
mean Union[SampleMean, DatasetMean]
output MemberId
ref_mean Union[SampleMean, DatasetMean]
ref_std Union[SampleStd, DatasetStd]
reference_tensor Optional[MemberId]
required_measures
std Union[SampleStd, DatasetStd]

axes class-attribute instance-attribute ¤

axes: Optional[Sequence[AxisId]] = None

eps class-attribute instance-attribute ¤

eps: float = 1e-06

input instance-attribute ¤

input: MemberId

mean class-attribute instance-attribute ¤

mean: Union[SampleMean, DatasetMean] = field(init=False)

output instance-attribute ¤

output: MemberId

ref_mean class-attribute instance-attribute ¤

ref_mean: Union[SampleMean, DatasetMean] = field(init=False)

ref_std class-attribute instance-attribute ¤

ref_std: Union[SampleStd, DatasetStd] = field(init=False)

reference_tensor class-attribute instance-attribute ¤

reference_tensor: Optional[MemberId] = None

required_measures property ¤

required_measures

std class-attribute instance-attribute ¤

std: Union[SampleStd, DatasetStd] = field(init=False)

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

__post_init__ ¤

__post_init__()
Source code in src/bioimageio/core/proc_ops.py
446
447
448
449
450
451
452
453
454
455
456
457
458
459
def __post_init__(self):
    axes = None if self.axes is None else tuple(self.axes)
    ref_tensor = self.reference_tensor or self.input
    if axes is None or AxisId("batch") not in axes:
        Mean = SampleMean
        Std = SampleStd
    else:
        Mean = DatasetMean
        Std = DatasetStd

    self.mean = Mean(member_id=self.input, axes=axes)
    self.std = Std(member_id=self.input, axes=axes)
    self.ref_mean = Mean(member_id=ref_tensor, axes=axes)
    self.ref_std = Std(member_id=ref_tensor, axes=axes)

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.ScaleMeanVarianceDescr, v0_5.ScaleMeanVarianceDescr], member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
@classmethod
def from_proc_descr(
    cls,
    descr: Union[v0_4.ScaleMeanVarianceDescr, v0_5.ScaleMeanVarianceDescr],
    member_id: MemberId,
) -> Self:
    kwargs = descr.kwargs
    _, axes = _get_axes(descr.kwargs)

    return cls(
        input=member_id,
        output=member_id,
        reference_tensor=MemberId(str(kwargs.reference_tensor)),
        axes=axes,
        eps=kwargs.eps,
    )

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
468
469
470
471
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

ScaleRange dataclass ¤

ScaleRange(input: MemberId, output: MemberId, lower_quantile: InitVar[Optional[Union[SampleQuantile, DatasetQuantile]]] = None, upper_quantile: InitVar[Optional[Union[SampleQuantile, DatasetQuantile]]] = None, eps: float = 1e-06)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.ScaleRange[ScaleRange]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.ScaleRange
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.ScaleRange href "" "bioimageio.core.proc_ops.ScaleRange"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Methods:

Name Description
__call__
__post_init__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
eps float
input MemberId
lower Union[SampleQuantile, DatasetQuantile]
output MemberId
required_measures
upper Union[SampleQuantile, DatasetQuantile]

eps class-attribute instance-attribute ¤

eps: float = 1e-06

input instance-attribute ¤

input: MemberId

lower class-attribute instance-attribute ¤

lower: Union[SampleQuantile, DatasetQuantile] = field(init=False)

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures

upper class-attribute instance-attribute ¤

upper: Union[SampleQuantile, DatasetQuantile] = field(init=False)

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

__post_init__ ¤

__post_init__(lower_quantile: Optional[Union[SampleQuantile, DatasetQuantile]], upper_quantile: Optional[Union[SampleQuantile, DatasetQuantile]])
Source code in src/bioimageio/core/proc_ops.py
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
def __post_init__(
    self,
    lower_quantile: Optional[Union[SampleQuantile, DatasetQuantile]],
    upper_quantile: Optional[Union[SampleQuantile, DatasetQuantile]],
):
    if lower_quantile is None:
        tid = self.input if upper_quantile is None else upper_quantile.member_id
        self.lower = DatasetQuantile(q=0.0, member_id=tid)
    else:
        self.lower = lower_quantile

    if upper_quantile is None:
        self.upper = DatasetQuantile(q=1.0, member_id=self.lower.member_id)
    else:
        self.upper = upper_quantile

    assert self.lower.member_id == self.upper.member_id
    assert self.lower.q < self.upper.q
    assert self.lower.axes == self.upper.axes

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.ScaleRangeDescr, v0_5.ScaleRangeDescr], member_id: MemberId)
Source code in src/bioimageio/core/proc_ops.py
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
@classmethod
def from_proc_descr(
    cls,
    descr: Union[v0_4.ScaleRangeDescr, v0_5.ScaleRangeDescr],
    member_id: MemberId,
):
    kwargs = descr.kwargs
    ref_tensor = (
        member_id
        if kwargs.reference_tensor is None
        else MemberId(str(kwargs.reference_tensor))
    )
    dataset_mode, axes = _get_axes(descr.kwargs)
    if dataset_mode:
        Quantile = DatasetQuantile
    else:
        Quantile = partial(SampleQuantile, method="linear")

    return cls(
        input=member_id,
        output=member_id,
        lower_quantile=Quantile(
            q=kwargs.min_percentile / 100,
            axes=axes,
            member_id=ref_tensor,
        ),
        upper_quantile=Quantile(
            q=kwargs.max_percentile / 100,
            axes=axes,
            member_id=ref_tensor,
        ),
    )

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
590
591
592
593
594
595
596
597
598
599
600
601
602
def get_descr(self):
    assert self.lower.axes == self.upper.axes
    assert self.lower.member_id == self.upper.member_id

    return v0_5.ScaleRangeDescr(
        kwargs=v0_5.ScaleRangeKwargs(
            axes=self.lower.axes,
            min_percentile=self.lower.q * 100,
            max_percentile=self.upper.q * 100,
            eps=self.eps,
            reference_tensor=self.lower.member_id,
        )
    )

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
547
548
549
550
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

Sigmoid dataclass ¤

Sigmoid(input: MemberId, output: MemberId)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.Sigmoid[Sigmoid]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.Sigmoid
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.Sigmoid href "" "bioimageio.core.proc_ops.Sigmoid"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

1 / (1 + e^(-input)).

Methods:

Name Description
__call__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
input MemberId
output MemberId
required_measures Collection[Measure]

input instance-attribute ¤

input: MemberId

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.SigmoidDescr, v0_5.SigmoidDescr], member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
621
622
623
624
625
626
@classmethod
def from_proc_descr(
    cls, descr: Union[v0_4.SigmoidDescr, v0_5.SigmoidDescr], member_id: MemberId
) -> Self:
    assert isinstance(descr, (v0_4.SigmoidDescr, v0_5.SigmoidDescr))
    return cls(input=member_id, output=member_id)

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
628
629
def get_descr(self):
    return v0_5.SigmoidDescr()

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
616
617
618
619
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

Softmax dataclass ¤

Softmax(input: MemberId, output: MemberId, axis: AxisId = AxisId('channel'))

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.Softmax[Softmax]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.Softmax
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.Softmax href "" "bioimageio.core.proc_ops.Softmax"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Softmax activation function.

Methods:

Name Description
__call__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
axis AxisId
input MemberId
output MemberId
required_measures Collection[Measure]

axis class-attribute instance-attribute ¤

axis: AxisId = AxisId('channel')

input instance-attribute ¤

input: MemberId

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Collection[Measure]

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

from_proc_descr classmethod ¤

from_proc_descr(descr: v0_5.SoftmaxDescr, member_id: MemberId) -> Self
Source code in src/bioimageio/core/proc_ops.py
653
654
655
656
@classmethod
def from_proc_descr(cls, descr: v0_5.SoftmaxDescr, member_id: MemberId) -> Self:
    assert isinstance(descr, v0_5.SoftmaxDescr)
    return cls(input=member_id, output=member_id, axis=descr.kwargs.axis)

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
658
659
def get_descr(self):
    return v0_5.SoftmaxDescr(kwargs=v0_5.SoftmaxKwargs(axis=self.axis))

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
648
649
650
651
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

UpdateStats dataclass ¤

UpdateStats(stats_calculator: StatsCalculator, keep_updating_initial_dataset_stats: bool = False)

Bases: Operator


              flowchart TD
              bioimageio.core.proc_ops.UpdateStats[UpdateStats]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core._op_base.Operator --> bioimageio.core.proc_ops.UpdateStats
                


              click bioimageio.core.proc_ops.UpdateStats href "" "bioimageio.core.proc_ops.UpdateStats"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

Calculates sample and/or dataset measures

Methods:

Name Description
__call__
__post_init__

Attributes:

Name Type Description
keep_updating_initial_dataset_stats bool

indicates if operator calls should keep updating initial dataset statistics or not;

required_measures Set[Measure]
stats_calculator StatsCalculator

StatsCalculator to be used by this operator.

keep_updating_initial_dataset_stats class-attribute instance-attribute ¤

keep_updating_initial_dataset_stats: bool = False

indicates if operator calls should keep updating initial dataset statistics or not; if the stats_calculator was not provided with any initial dataset statistics, these are always updated with every new sample.

required_measures property ¤

required_measures: Set[Measure]

stats_calculator instance-attribute ¤

stats_calculator: StatsCalculator

StatsCalculator to be used by this operator.

__call__ ¤

__call__(sample: Union[Sample, SampleBlockWithOrigin]) -> None
Source code in src/bioimageio/core/proc_ops.py
182
183
184
185
186
187
188
189
190
191
192
193
194
195
def __call__(self, sample: Union[Sample, SampleBlockWithOrigin]) -> None:
    if isinstance(sample, SampleBlockWithOrigin):
        # update stats with whole sample on first block
        if sample.block_index != 0:
            return

        origin = sample.origin
    else:
        origin = sample

    if self._keep_updating_dataset_stats:
        sample.stat.update(self.stats_calculator.update_and_get_all(origin))
    else:
        sample.stat.update(self.stats_calculator.skip_update_and_get_all(origin))

__post_init__ ¤

__post_init__()
Source code in src/bioimageio/core/proc_ops.py
176
177
178
179
180
def __post_init__(self):
    self._keep_updating_dataset_stats = (
        self.keep_updating_initial_dataset_stats
        or not self.stats_calculator.has_dataset_measures
    )

ZeroMeanUnitVariance dataclass ¤

ZeroMeanUnitVariance(input: MemberId, output: MemberId, mean: MeanMeasure, std: StdMeasure, eps: float = 1e-06)

Bases: _SimpleOperator


              flowchart TD
              bioimageio.core.proc_ops.ZeroMeanUnitVariance[ZeroMeanUnitVariance]
              bioimageio.core.proc_ops._SimpleOperator[_SimpleOperator]
              bioimageio.core._op_base.BlockedOperator[BlockedOperator]
              bioimageio.core._op_base.Operator[Operator]

                              bioimageio.core.proc_ops._SimpleOperator --> bioimageio.core.proc_ops.ZeroMeanUnitVariance
                                bioimageio.core._op_base.BlockedOperator --> bioimageio.core.proc_ops._SimpleOperator
                                bioimageio.core._op_base.Operator --> bioimageio.core._op_base.BlockedOperator
                




              click bioimageio.core.proc_ops.ZeroMeanUnitVariance href "" "bioimageio.core.proc_ops.ZeroMeanUnitVariance"
              click bioimageio.core.proc_ops._SimpleOperator href "" "bioimageio.core.proc_ops._SimpleOperator"
              click bioimageio.core._op_base.BlockedOperator href "" "bioimageio.core._op_base.BlockedOperator"
              click bioimageio.core._op_base.Operator href "" "bioimageio.core._op_base.Operator"
            

normalize to zero mean, unit variance.

Methods:

Name Description
__call__
__post_init__
from_proc_descr
get_descr
get_output_shape

Attributes:

Name Type Description
eps float
input MemberId
mean MeanMeasure
output MemberId
required_measures Set[Union[MeanMeasure, StdMeasure]]
std StdMeasure

eps class-attribute instance-attribute ¤

eps: float = 1e-06

input instance-attribute ¤

input: MemberId

mean instance-attribute ¤

output instance-attribute ¤

output: MemberId

required_measures property ¤

required_measures: Set[Union[MeanMeasure, StdMeasure]]

std instance-attribute ¤

__call__ ¤

__call__(sample: Union[Sample, SampleBlock]) -> None
Source code in src/bioimageio/core/proc_ops.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
def __call__(self, sample: Union[Sample, SampleBlock]) -> None:
    if self.input not in sample.members:
        return

    input_tensor = sample.members[self.input]
    output_tensor = self._apply(input_tensor, sample.stat)

    if self.output in sample.members:
        assert (
            sample.members[self.output].tagged_shape == output_tensor.tagged_shape
        )

    if isinstance(sample, Sample):
        sample.members[self.output] = output_tensor
    elif isinstance(sample, SampleBlock):
        b = sample.blocks[self.input]
        sample.blocks[self.output] = Block(
            sample_shape=self.get_output_shape(sample.shape[self.input]),
            data=output_tensor,
            inner_slice=b.inner_slice,
            halo=b.halo,
            block_index=b.block_index,
            blocks_in_sample=b.blocks_in_sample,
        )
    else:
        assert_never(sample)

__post_init__ ¤

__post_init__()
Source code in src/bioimageio/core/proc_ops.py
671
672
def __post_init__(self):
    assert self.mean.axes == self.std.axes

from_proc_descr classmethod ¤

from_proc_descr(descr: Union[v0_4.ZeroMeanUnitVarianceDescr, v0_5.ZeroMeanUnitVarianceDescr], member_id: MemberId)
Source code in src/bioimageio/core/proc_ops.py
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
@classmethod
def from_proc_descr(
    cls,
    descr: Union[v0_4.ZeroMeanUnitVarianceDescr, v0_5.ZeroMeanUnitVarianceDescr],
    member_id: MemberId,
):
    dataset_mode, axes = _get_axes(descr.kwargs)

    if dataset_mode:
        Mean = DatasetMean
        Std = DatasetStd
    else:
        Mean = SampleMean
        Std = SampleStd

    return cls(
        input=member_id,
        output=member_id,
        mean=Mean(axes=axes, member_id=member_id),
        std=Std(axes=axes, member_id=member_id),
    )

get_descr ¤

get_descr()
Source code in src/bioimageio/core/proc_ops.py
710
711
712
713
def get_descr(self):
    return v0_5.ZeroMeanUnitVarianceDescr(
        kwargs=v0_5.ZeroMeanUnitVarianceKwargs(axes=self.mean.axes, eps=self.eps)
    )

get_output_shape ¤

get_output_shape(input_shape: Mapping[AxisId, int]) -> Mapping[AxisId, int]
Source code in src/bioimageio/core/proc_ops.py
678
679
680
681
def get_output_shape(
    self, input_shape: Mapping[AxisId, int]
) -> Mapping[AxisId, int]:
    return input_shape

get_proc ¤

Source code in src/bioimageio/core/proc_ops.py
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
def get_proc(
    proc_descr: ProcDescr,
    tensor_descr: Union[
        v0_4.InputTensorDescr,
        v0_4.OutputTensorDescr,
        v0_5.InputTensorDescr,
        v0_5.OutputTensorDescr,
    ],
) -> Processing:
    member_id = get_member_id(tensor_descr)

    if isinstance(proc_descr, (v0_4.BinarizeDescr, v0_5.BinarizeDescr)):
        return Binarize.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, (v0_4.ClipDescr, v0_5.ClipDescr)):
        return Clip.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, v0_5.EnsureDtypeDescr):
        return EnsureDtype.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, v0_5.FixedZeroMeanUnitVarianceDescr):
        return FixedZeroMeanUnitVariance.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, (v0_4.ScaleLinearDescr, v0_5.ScaleLinearDescr)):
        return ScaleLinear.from_proc_descr(proc_descr, member_id)
    elif isinstance(
        proc_descr, (v0_4.ScaleMeanVarianceDescr, v0_5.ScaleMeanVarianceDescr)
    ):
        return ScaleMeanVariance.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, (v0_4.ScaleRangeDescr, v0_5.ScaleRangeDescr)):
        return ScaleRange.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, (v0_4.SigmoidDescr, v0_5.SigmoidDescr)):
        return Sigmoid.from_proc_descr(proc_descr, member_id)
    elif (
        isinstance(proc_descr, v0_4.ZeroMeanUnitVarianceDescr)
        and proc_descr.kwargs.mode == "fixed"
    ):
        if not isinstance(
            tensor_descr, (v0_4.InputTensorDescr, v0_4.OutputTensorDescr)
        ):
            raise TypeError(
                "Expected v0_4 tensor description for v0_4 processing description"
            )

        v5_proc_descr = _convert_proc(proc_descr, tensor_descr.axes)
        assert isinstance(v5_proc_descr, v0_5.FixedZeroMeanUnitVarianceDescr)
        return FixedZeroMeanUnitVariance.from_proc_descr(v5_proc_descr, member_id)
    elif isinstance(
        proc_descr,
        (v0_4.ZeroMeanUnitVarianceDescr, v0_5.ZeroMeanUnitVarianceDescr),
    ):
        return ZeroMeanUnitVariance.from_proc_descr(proc_descr, member_id)
    elif isinstance(proc_descr, v0_5.SoftmaxDescr):
        return Softmax.from_proc_descr(proc_descr, member_id)
    else:
        assert_never(proc_descr)