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 |
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 |
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()