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:

exteneded 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.

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

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
filter_name: str
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

abstract condition(witness, target)

Use an input dataset to condition the filter

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

  • target (collections.abc.Sequence) – Target sensor data

Return type:

None

abstract apply(witness, target, 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) – 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

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 (Optional[collections.abc.Sequence | numpy.typing.NDArray]) – Target sensor data

Returns:

data as (target, witness)

Raises:

AssertionError

Return type:

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

as_dict()

Returns a dictionary that represents the state of this filter.

Return type:

dict

classmethod from_dict(input_dict)

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

Return type:

FilterTypeT

classmethod _make_filename(filename)
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 developement

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