Skip to content
Snippets Groups Projects
Commit af9f38a4 authored by Alán Muñoz's avatar Alán Muñoz
Browse files

refactor(dsignal): speedup using bottleneck

parent 9be7505b
No related branches found
No related tags found
No related merge requests found
import bottleneck as bn
import numpy as np
import pandas as pd import pandas as pd
from agora.abc import ParametersABC
from agora.abc import ParametersABC
from postprocessor.core.abc import PostProcessABC from postprocessor.core.abc import PostProcessABC
...@@ -9,20 +11,28 @@ class dsignalParameters(ParametersABC): ...@@ -9,20 +11,28 @@ class dsignalParameters(ParametersABC):
:window: Number of timepoints to consider for signal. :window: Number of timepoints to consider for signal.
""" """
_defaults = {"window": 3} _defaults = {"window": 10, "min_count": 5}
class dsignal(PostProcessABC): class dsignal(PostProcessABC):
""" """
Calculate the change in a signal depending on a window Calculate the change in a signal using the mean of a moving window.
""" """
def __init__(self, parameters: dsignalParameters): def __init__(self, parameters: dsignalParameters):
super().__init__(parameters) super().__init__(parameters)
def run(self, signal: pd.DataFrame): def run(self, signal: pd.DataFrame):
return ( matrix = np.diff(
signal.rolling(window=self.parameters.window, axis=1) bn.move_mean(
.mean() signal,
.diff(axis=1) window=self.parameters.window,
min_count=self.parameters.min_count,
axis=1,
),
axis=1,
) )
# Pad values to keep the same signal shape
matrix = np.pad(matrix, ((0, 0), (0, 1)), constant_values=np.nan)
return pd.DataFrame(matrix, index=signal.index, columns=signal.columns)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment