saftig.filtering.common

Shared functionality for all other modules

Attributes

FilterTypeT

Classes

FilterBase

common interface definition for Filter implementations

Functions

make_2d_array(A)

add a dimension to 1D arrays and leave 2D arrays as they are

handle_from_dict(init_func)

A decorator for the init functions of classes derived from FilterBase

Module Contents

saftig.filtering.common.FilterTypeT
saftig.filtering.common.make_2d_array(A)

add a dimension to 1D arrays and leave 2D arrays as they are This is intended to allow 1D array input for single channel application

Parameters:

A (collections.abc.Sequence | collections.abc.Sequence[collections.abc.Sequence] | numpy.typing.NDArray) – input array

Returns:

extended array

Raises:

ValueError if the input shape is not compatible

Return type:

numpy.typing.NDArray

>>> make_2d_array([1, 2])
array([[1, 2]])
>>> make_2d_array([[1, 2], [3, 4]])
array([[1, 2],
       [3, 4]])
saftig.filtering.common.handle_from_dict(init_func)

A decorator for the init functions of classes derived from FilterBase

If the _from_dict keyword argument is passed, the __init__() function is ignored and the class is initialized based on the passed dictionary. Otherwise, the constructor is called the usual way.

Parameters:

init_func (collections.abc.Callable) –

class saftig.filtering.common.FilterBase(n_filter, idx_target, n_channel=1, _from_dict=None)

Bases: abc.ABC

common interface definition for Filter implementations

Parameters:
  • n_filter (int) – Length of the FIR filter (how many samples are in the input window per output sample)

  • idx_target (int) – Position of the prediction

  • n_channel (int) – Number of witness sensor channels

requires_apply_target: bool
n_filter: int
n_channel: int
idx_target: int
method_hash_value: bytes
supports_multi_sequence = True
filter_name = 'FilterBase'
static supports_saving_loading()

Indicates whether saving and loading is supported Due to the way dataclasses work with inheritance, class values with default values don’t work in the parent dataclass. Thus, this is a function

Return type:

bool

condition(witness, target)

Use an input dataset to condition the filter

Parameters:
  • witness (collections.abc.Sequence | collections.abc.Sequence[collections.abc.Sequence] | numpy.typing.NDArray) – Witness sensor data

  • target (collections.abc.Sequence | numpy.typing.NDArray) – Target sensor data

abstract condition_multi_sequence(witness, target)

Similar to condition(), but expects multiple sequences

Parameters:
  • witness (collections.abc.Sequence | collections.abc.Sequence[collections.abc.Sequence] | numpy.typing.NDArray) –

  • target (collections.abc.Sequence | numpy.typing.NDArray) –

Return type:

Any

apply(witness, target=None, pad=True, update_state=False)

Apply the filter to input data

Parameters:
  • witness (collections.abc.Sequence | numpy.typing.NDArray) – Witness sensor data (1D or 2D array)

  • target (collections.abc.Sequence | numpy.typing.NDArray | None) – Target sensor data (1D array)

  • pad (bool) – if True, apply padding zeros so that the length matches the target signal

  • update_state (bool) – if True, the filter state will be changed. If false, the filter state will remain

Returns:

prediction

Return type:

numpy.typing.NDArray

abstract apply_multi_sequence(witness, target, pad=True, update_state=False)

Apply the filter to input data

Similar to apply() but expects multiple sequences.

Parameters:
  • witness (collections.abc.Sequence | numpy.typing.NDArray) –

  • target (collections.abc.Sequence | numpy.typing.NDArray | None) –

  • pad (bool) –

  • update_state (bool) –

Return type:

collections.abc.Sequence[numpy.typing.NDArray]

check_data_dimensions(witness, target=None)

Check the dimensions of the provided input data and apply make_2d_array()

Parameters:
  • witness (collections.abc.Sequence | numpy.typing.NDArray) – Witness sensor data

  • target (collections.abc.Sequence | numpy.typing.NDArray | None) – Target sensor data

Returns:

data as (target, witness)

Raises:

AssertionError

Return type:

tuple[numpy.typing.NDArray, numpy.typing.NDArray]

check_data_dimensions_multi_sequence(witness: collections.abc.Sequence | numpy.typing.NDArray, target: None) tuple[list[numpy.typing.NDArray], None]
check_data_dimensions_multi_sequence(witness: collections.abc.Sequence | numpy.typing.NDArray, target: collections.abc.Sequence | numpy.typing.NDArray) tuple[list[numpy.typing.NDArray], list[numpy.typing.NDArray]]

Check the dimensions of the provided input data and apply make_2d_array()

Parameters:
  • witness – Witness sensor data

  • target – Target sensor data

Returns:

data as (target, witness)

Raises:

AssertionError

as_dict()

Returns a dictionary that represents the state of this filter.

Return type:

dict[str, Any]

classmethod from_dict(input_dict)

Create a filter instance from a dictionary that was created from as_dict()

Parameters:

input_dict (dict[str, Any]) –

Return type:

FilterTypeT

classmethod make_filename(filename)

Append the file type of save files for this class to the given filename, if it is not already present

Parameters:

filename (str | pathlib.Path) –

save(filename, warn_incompatible=False)

Save the filter state as a numpy file

The given filename will be autocompleted with a “.<filter_name>.npz” filename extension, unless a matching extension is detected.

warn_incompatible: set to True to warn for object types might not

compatible with np.save(allow_pickle=False) during development

Parameters:
  • filename (str | pathlib.Path) –

  • warn_incompatible (bool) –

classmethod load(filename)

Load a filter state from the supplied filename.

The given filename will be autocompleted with a “.<filter_name>.npz” filename extension, unless a matching extension is detected.

Return type:

FilterTypeT

classmethod _file_hash()

Calculates a hash value based on the file in which this method was defined.

Return type:

bytes

property method_hash: bytes

A hash of the method and parameters NOTE: This is not a hash of the conditioned filter! Thus, the same filter configuration applied to a different dataset will result in the same hash!

Return type:

bytes

property method_filename_part: str

string that can be used in a file name

Return type:

str