Source code for ezmsg.sigproc.detrend
"""Remove linear or constant trends from data along an axis."""
from ezmsg.baseproc import BaseTransformerUnit
from ezmsg.util.messages.axisarray import AxisArray, replace
from ezmsg.sigproc.ewma import EWMASettings, EWMATransformer
[docs]
class DetrendTransformer(EWMATransformer):
"""
Detrend the data using an exponentially weighted moving average (EWMA)
estimate of the mean.
"""
def _process(self, message):
means = super()._process(message)
return replace(message, data=message.data - means.data)
[docs]
class DetrendUnit(BaseTransformerUnit[EWMASettings, AxisArray, AxisArray, DetrendTransformer]):
SETTINGS = EWMASettings