Source code for elasticai.preprocessor.transformation.window_scaler
from enum import Enum
import numpy as np
from scipy.signal.windows import gaussian
[docs]
class WindowingTargets(Enum):
Ones = "ones"
Hamming = "hamming"
Gaussian = "gaussian"
Hanning = "hanning"
Bartlett = "bartlett"
Blackman = "blackman"
[docs]
def transformation_window_method(
window_size: int, method: WindowingTargets | str = WindowingTargets.Hamming
) -> np.ndarray:
"""Generating window for smoothing input of signal transformation method.
:param window_size: Integer number with size of the window
:param method: Selection of window method [
'ones',
'hamming',
'hanning',
'gaussian',
'bartlett',
'blackman']
:return: Numpy array with window
"""
if isinstance(method, str):
method_used = WindowingTargets(method.lower())
else:
method_used = method
match method_used:
case WindowingTargets.Ones:
return np.ones(window_size)
case WindowingTargets.Hamming:
return np.hamming(window_size)
case WindowingTargets.Gaussian:
return gaussian(window_size, int(0.16 * window_size), sym=True)
case WindowingTargets.Hanning:
return np.hanning(window_size)
case WindowingTargets.Bartlett:
return np.bartlett(window_size)
case WindowingTargets.Blackman:
return np.blackman(window_size)
case _:
raise AttributeError