Reducer
coola.reducer ¶
Contain the reducer implementations.
coola.reducer.BaseBasicReducer ¶
Bases: BaseReducer[T]
Extension of BaseReducer that validates the input sequence is
not empty before calling the reduction methods.
This class provides concrete implementations of all BaseReducer abstract
methods by first checking for empty sequences (raising EmptySequenceError)
and then delegating to private _max, _mean, etc. methods that
subclasses must implement.
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 |
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]
Sort the values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
values
|
T
|
The values. |
required |
descending
|
bool
|
If |
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 |
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 |
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()