init workflow
This commit is contained in:
@@ -3,8 +3,8 @@ from typing import Dict
|
||||
import pandas as pd
|
||||
from tkinter.ttk import Frame
|
||||
|
||||
from ..gui.device import Device
|
||||
from ..gui.slider import Slider
|
||||
from ..gui import Device, Slider, Entry
|
||||
from ..config import DEFAULT_CALIB
|
||||
|
||||
class Filter:
|
||||
|
||||
@@ -15,6 +15,8 @@ class Filter:
|
||||
self.toolbar = toolbar
|
||||
self.callback = callback
|
||||
|
||||
self.calib_entry = Entry(toolbar, "Calibration Factor", DEFAULT_CALIB)
|
||||
|
||||
self.init_params(toolbar)
|
||||
|
||||
def init_params(self, toolbar):
|
||||
@@ -28,17 +30,21 @@ class Filter:
|
||||
return params
|
||||
|
||||
def __call__(self) -> pd.DataFrame:
|
||||
calib_factor = 100. / float(self.calib_entry.get())
|
||||
df = self.device.data
|
||||
df['filtered'] = self.filter(df)
|
||||
df['filtered'], df['filtered_calib'] = self.filter(df, calib_factor)
|
||||
df['calib_weights'] = df['weights'] * calib_factor
|
||||
return df
|
||||
|
||||
def filter(self, df: pd.DataFrame) -> pd.Series:
|
||||
def filter(self, df: pd.DataFrame, calib_factor: float) -> pd.Series:
|
||||
raise NotImplementedError()
|
||||
|
||||
def pack(self):
|
||||
def pack(self, **kwargs):
|
||||
self.calib_entry.pack(**kwargs)
|
||||
for k, v in self.param_map.items():
|
||||
v.pack()
|
||||
v.pack(**kwargs)
|
||||
|
||||
def pack_forget(self):
|
||||
self.calib_entry.pack_forget()
|
||||
for k, v in self.param_map.items():
|
||||
v.pack_forget()
|
||||
@@ -1,18 +1,21 @@
|
||||
from tkinter import ttk
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from .base import Filter
|
||||
from ..gui.slider import Slider
|
||||
from ..gui import Slider
|
||||
|
||||
class MovAvg(Filter):
|
||||
|
||||
def init_params(self, toolbar):
|
||||
self.param_map = {
|
||||
"window_size": Slider(toolbar, "Window Size", 1, 500, 10, self.callback),
|
||||
"window_size": Slider(toolbar, "Window Size", 1, 100, 10, self.callback),
|
||||
"decimals": Slider(toolbar, "Decimals", 1, 5, 1, self.callback),
|
||||
# "reset_threshold": Slider(self.toolbar, "Reset Threshold", 0.001, 0.1, 0.1, self.update),
|
||||
}
|
||||
|
||||
def filter(self, df: pd.DataFrame) -> pd.Series:
|
||||
def filter(self, df: pd.DataFrame, calib_factor: float) -> pd.Series:
|
||||
params = self._get_params()
|
||||
return df['weights'].rolling(window=int(params['window_size'])).mean()\
|
||||
.round(int(params['decimals']))
|
||||
mov_avg = df['weights'].rolling(window=int(params['window_size'])).mean()
|
||||
mov_avg_calib = (mov_avg * calib_factor).round(int(params['decimals']))
|
||||
return mov_avg, mov_avg_calib
|
||||
|
||||
Reference in New Issue
Block a user