Skip to content

Reducer

coola.reducer

Contain the reducer implementations.

coola.reducer.BaseBasicReducer

Bases: BaseReducer[T]

Extension of BaseReducer to check if the input sequence is empty before to call the reduction methods.

coola.reducer.BaseReducer

Bases: ABC, Generic[T]

Define the base class to implement a reducer.

Example
>>> from coola.reducer import NumpyReducer
>>> reducer = NumpyReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2
>>> reducer.median([-2, -1, 0, 1, 2])
0.0
>>> reducer.sort([2, 1, -2, 3, 0])
[-2, 0, 1, 2, 3]

coola.reducer.BaseReducer.max abstractmethod

max(values: T) -> int | float

Compute the maximum value.

Parameters:

Name Type Description Default
values T

The values.

required

Returns:

Type Description
int | float

The maximum value.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2

coola.reducer.BaseReducer.mean abstractmethod

mean(values: T) -> float

Compute the mean value.

Parameters:

Name Type Description Default
values T

The values.

required

Returns:

Type Description
float

The mean value.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.mean([-2, -1, 0, 1, 2])
0.0

coola.reducer.BaseReducer.median abstractmethod

median(values: T) -> int | float

Compute the median value.

Parameters:

Name Type Description Default
values T

The values.

required

Returns:

Type Description
int | float

The median value.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.median([-2, -1, 0, 1, 2])
0

coola.reducer.BaseReducer.min abstractmethod

min(values: T) -> int | float

Compute the minimum value.

Parameters:

Name Type Description Default
values T

The values.

required

Returns:

Type Description
int | float

The minimum value.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.min([-2, -1, 0, 1, 2])
-2

coola.reducer.BaseReducer.quantile abstractmethod

quantile(
    values: T, quantiles: Sequence[float]
) -> list[float]

Compute the quantiles.

Parameters:

Name Type Description Default
values T

The values.

required
quantiles sequence of float

The quantile values in the range [0, 1].

required

Returns:

Type Description
list[float]

The quantiles.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.quantile([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], (0.2, 0.5, 0.9))
[2.0, 5.0, 9.0]

coola.reducer.BaseReducer.sort abstractmethod

sort(
    values: T, descending: bool = False
) -> list[int | float]

Sorts the values.

Parameters:

Name Type Description Default
values T

The values.

required
descending bool

The sorting order.

False

Returns:

Type Description
list[int | float]

The sorted values.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.sort([2, 1, -2, 3, 0])
[-2, 0, 1, 2, 3]
>>> reducer.sort([2, 1, -2, 3, 0], descending=True)
[3, 2, 1, 0, -2]

coola.reducer.BaseReducer.std abstractmethod

std(values: T) -> float

Compute the standard deviation.

Parameters:

Name Type Description Default
values T

The values.

required

Returns:

Type Description
float

The standard deviation.

Raises:

Type Description
EmptySequenceError

if the input sequence is empty.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.std([-2, -1, 0, 1, 2])
1.581138...

coola.reducer.EmptySequenceError

Bases: Exception

Raise when the sequence is empty because it is not possible to reduce an empty sequence.

coola.reducer.NativeReducer

Bases: BaseBasicReducer[T]

Implement a native reducer.

Example
>>> from coola.reducer import NativeReducer
>>> reducer = NativeReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2
>>> reducer.median([-2, -1, 0, 1, 2])
0
>>> reducer.sort([2, 1, -2, 3, 0])
[-2, 0, 1, 2, 3]

coola.reducer.NumpyReducer

Bases: BaseBasicReducer[T]

Implement a reducer based on NumPy functions.

Raises:

Type Description
RuntimeError

if numpy is not installed.

Example
>>> from coola.reducer import NumpyReducer
>>> reducer = NumpyReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2
>>> reducer.median([-2, -1, 0, 1, 2])
0.0
>>> reducer.sort([2, 1, -2, 3, 0])
[-2, 0, 1, 2, 3]

coola.reducer.TorchReducer

Bases: BaseBasicReducer[T]

Implement a reducer based on torch functions.

Raises:

Type Description
RuntimeError

if torch is not installed.

Example
>>> from coola.reducer import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2
>>> reducer.median([-2, -1, 0, 1, 2])
0
>>> reducer.sort([2, 1, -2, 3, 0])
[-2, 0, 1, 2, 3]

coola.reducer.auto_reducer

auto_reducer() -> BaseReducer[Sequence[float]]

Find the "best" reducer to used based on the installed packages.

The "best" reducer is found by using the following rules: - If torch is available, use TorchReducer - If numpy is available, use NumpyReducer - Otherwise, use BasicReducer

Returns:

Type Description
BaseReducer[Sequence[float]]

The "best" reducer.

Example
>>> from coola.reducer import auto_reducer
>>> reducer = auto_reducer()