From ae52724a00d87ced52d836bda0143a9d4ce5fb8f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 25 Sep 2024 20:52:06 +0200 Subject: [PATCH] better negative power peak detection --- rowers/dataprep.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 23375f3c..b24de134 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -6,6 +6,7 @@ import rowingdata.tcxtools as tcxtools from rowers.utils import totaltime_sec_to_string from rowers.datautils import p0 from scipy import optimize +from scipy.signal import find_peaks from rowers.utils import calculate_age import datetime import gzip @@ -1207,8 +1208,15 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', except KeyError: pass - # smoothen power - row.df[' Power (watts)'].replace(to_replace=0,method='ffill', inplace=True) + + # remove negative power peaks + x = row.df[' Power (watts)'].values + x = x * - 1 + neg_peaks, _ = find_peaks(x, height=0) # hieght is the threshold value + + row.df[' Power (watts)'][neg_peaks] = row.df[' Power (watts)'][neg_peaks-1] + + #row.df[' Power (watts)'].replace(to_replace=0,method='ffill', inplace=True) if dosmooth: # auto smoothing