Reducers
coola.reducers ¶
Contain the reducer implementations.
coola.reducers.BaseBasicReducer ¶
              Bases: BaseReducer[T]
Extension of BaseReducer to check if the input sequence is
empty before to call the reduction methods.
coola.reducers.BaseReducer ¶
              Bases: ABC, Generic[T]
Define the base class to implement a reducer.
Example usage:
>>> from coola.reducers 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.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.max([-2, -1, 0, 1, 2])
2
            coola.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.mean([-2, -1, 0, 1, 2])
0.0
            coola.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.median([-2, -1, 0, 1, 2])
0
            coola.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.min([-2, -1, 0, 1, 2])
-2
            coola.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers 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.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers 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.reducers.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 usage:
.. code-block:: pycon
>>> from coola.reducers import TorchReducer
>>> reducer = TorchReducer()
>>> reducer.std([-2, -1, 0, 1, 2])
1.581138...
coola.reducers.EmptySequenceError ¶
              Bases: Exception
Raise when the sequence is empty because it is not possible to reduce an empty sequence.
coola.reducers.NativeReducer ¶
              Bases: BaseBasicReducer[T]
Implement a native reducer.
Example usage:
>>> from coola.reducers 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.reducers.NumpyReducer ¶
              Bases: BaseBasicReducer[T]
Implement a reducer based on NumPy functions.
Raises:
| Type | Description | 
|---|---|
                  RuntimeError
             | 
            
               if   | 
          
Example usage:
>>> from coola.reducers 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.reducers.ReducerRegistry ¶
Implement the reducer registry.
The registry is a class variable, so it is shared with all the instances of this class.
            coola.reducers.ReducerRegistry.add_reducer
  
      classmethod
  
¶
add_reducer(
    name: str, reducer: BaseReducer, exist_ok: bool = False
) -> None
Add a reducer to the registry.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                name
             | 
            
                  str
             | 
            
               The name of the reducer.  | 
            required | 
                reducer
             | 
            
                  BaseReducer
             | 
            
               The reducer.  | 
            required | 
                exist_ok
             | 
            
                  bool
             | 
            
               If   | 
            
                  False
             | 
          
Raises:
| Type | Description | 
|---|---|
                  RuntimeError
             | 
            
               if a reducer is already registered for the
name and   | 
          
Example usage:
>>> from coola.reducers import ReducerRegistry, NativeReducer
>>> ReducerRegistry.add_reducer("native", NativeReducer(), exist_ok=True)
            coola.reducers.ReducerRegistry.available_reducers
  
      classmethod
  
¶
available_reducers() -> tuple[str, ...]
Get the available reducers.
Returns:
| Type | Description | 
|---|---|
                  tuple[str, ...]
             | 
            
               The available reducers.  | 
          
Example usage:
>>> from coola.reducers import ReducerRegistry
>>> ReducerRegistry.available_reducers()
('native', 'numpy', 'torch')
            coola.reducers.ReducerRegistry.has_reducer
  
      classmethod
  
¶
has_reducer(name: str) -> bool
Indicate if a reducer is registered for the given name.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                name
             | 
            
                  str
             | 
            
               The name to check.  | 
            required | 
Returns:
| Type | Description | 
|---|---|
                  bool
             | 
            
               
  | 
          
Example usage:
>>> from coola.reducers import ReducerRegistry
>>> ReducerRegistry.has_reducer("native")
True
>>> ReducerRegistry.has_reducer("missing")
False
coola.reducers.TorchReducer ¶
              Bases: BaseBasicReducer[T]
Implement a reducer based on torch functions.
Raises:
| Type | Description | 
|---|---|
                  RuntimeError
             | 
            
               if   | 
          
Example usage:
>>> from coola.reducers 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.reducers.auto_reducer ¶
auto_reducer() -> BaseReducer
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
             | 
            
               The "best" reducer.  | 
          
Example usage:
>>> from coola.reducers import auto_reducer
>>> reducer = auto_reducer()