From 439bca2f9c8e2d1595dcad99d03095cfe8bf43a9 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 18 Nov 2016 13:12:57 +0100 Subject: [PATCH] Added Average/Peak Force Ratio --- rowers/dataprep.py | 10 +++++++++- rowers/interactiveplots.py | 7 +++++++ rowers/templates/comparisonchart2.html | 6 +++++- rowers/templates/cum_flex.html | 8 +++++++- rowers/templates/flexchart3.html | 6 ++++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 092fdb54..01749000 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -99,7 +99,9 @@ def dataprep(rowdatadf,bands=False,barchart=False,otwpower=False): peakforce = rowdatadf.ix[:,' PeakDriveForce (lbs)'] - + forceratio = averageforce/peakforce + forceratio = forceratio.fillna(value=0) + f = rowdatadf['TimeStamp (sec)'].diff().mean() windowsize = 2*(int(10./(f)))+1 if windowsize <= 3: @@ -109,6 +111,7 @@ def dataprep(rowdatadf,bands=False,barchart=False,otwpower=False): spm = savgol_filter(spm,windowsize,3) hr = savgol_filter(hr,windowsize,3) drivelength = savgol_filter(drivelength,windowsize,3) + forceratio = savgol_filter(forceratio,windowsize,3) t2 = t.fillna(method='ffill').apply(lambda x: timedeltaconv(x)) @@ -117,6 +120,7 @@ def dataprep(rowdatadf,bands=False,barchart=False,otwpower=False): drivespeed = drivelength/rowdatadf[' DriveTime (ms)']*1.0e3 + drivespeed = drivespeed.fillna(value=0) driveenergy = drivelength*averageforce*4.44822 distance = rowdatadf.ix[:,'cum_dist'] @@ -139,6 +143,7 @@ def dataprep(rowdatadf,bands=False,barchart=False,otwpower=False): averageforce=averageforce, drivelength=drivelength, peakforce=peakforce, + forceratio=forceratio, distance=distance, drivespeed=drivespeed, ) @@ -186,4 +191,7 @@ def dataprep(rowdatadf,bands=False,barchart=False,otwpower=False): data['fergpace'] = nicepaceformat(ergpace) data['fnowindpace'] = nicepaceformat(nowindpace) + data = data.replace([-np.inf,np.inf],np.nan) + data = data.fillna(method='ffill') + return data diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 2744d1e4..a9e03c7d 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -590,6 +590,7 @@ def interactive_cum_flex_chart(theworkouts,promember=0, 'averageforce': 'Average Drive Force (lbs)', 'drivelength': 'Drive Length (m)', 'peakforce': 'Peak Drive Force (lbs)', + 'forceratio': 'Average/Peak Drive Force Ratio', 'driveenergy': 'Work per Stroke (J)', 'drivespeed': 'Drive Speed (m/s)', 'None': '', @@ -605,6 +606,7 @@ def interactive_cum_flex_chart(theworkouts,promember=0, 'power': 0, 'averageforce': 0, 'peakforce': 0, + 'forceratio':0, 'drivelength':0.5, 'driveenergy': 0, 'drivespeed': 0, @@ -617,6 +619,7 @@ def interactive_cum_flex_chart(theworkouts,promember=0, 'power': 600, 'averageforce':200, 'peakforce':400, + 'forceratio':1, 'drivelength':2.0, 'driveenergy': 1000, 'drivespeed':4, @@ -922,6 +925,7 @@ def interactive_flex_chart2(id=0,promember=0, 'averageforce': 'Average Drive Force (lbs)', 'drivelength': 'Drive Length (m)', 'peakforce': 'Peak Drive Force (lbs)', + 'forceratio': 'Average/Peak Drive Force Ratio', 'driveenergy': 'Work per Stroke (J)', 'drivespeed': 'Drive Speed (m/s)', 'None': '', @@ -934,6 +938,7 @@ def interactive_flex_chart2(id=0,promember=0, 'power': 0, 'averageforce': 0, 'peakforce': 0, + 'forceratio':0, 'drivelength':0.5, 'driveenergy': 0, 'drivespeed': 0, @@ -946,6 +951,7 @@ def interactive_flex_chart2(id=0,promember=0, 'power': 600, 'averageforce':200, 'peakforce':400, + 'forceratio':1, 'drivelength':2.0, 'driveenergy': 1000, 'drivespeed':4, @@ -1365,6 +1371,7 @@ def interactive_comparison_chart(id1=0,id2=0,xparam='distance',yparam='spm', 'averageforce': 'Average Drive Force (lbs)', 'drivelength': 'Drive Length (m)', 'peakforce': 'Peak Drive Force (lbs)', + 'forceratio': 'Average/Peak Drive Force Ratio', 'driveenergy': 'Work per Stroke (J)', 'drivespeed': 'Drive Speed (m/s)', } diff --git a/rowers/templates/comparisonchart2.html b/rowers/templates/comparisonchart2.html index be195ca9..c6f664a0 100644 --- a/rowers/templates/comparisonchart2.html +++ b/rowers/templates/comparisonchart2.html @@ -82,6 +82,7 @@ SPM Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed @@ -91,6 +92,7 @@ SPM (Pro) Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -109,12 +111,14 @@ {% if promember %} Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed {% else %} Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) {% endif %} @@ -143,4 +147,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/rowers/templates/cum_flex.html b/rowers/templates/cum_flex.html index 065e8bfe..be20b214 100644 --- a/rowers/templates/cum_flex.html +++ b/rowers/templates/cum_flex.html @@ -47,6 +47,7 @@ SPM Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed @@ -56,6 +57,7 @@ SPM (Pro) Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -74,12 +76,14 @@ {% if promember %} Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed {% else %} Peak Force (Pro) Average Force (Pro) + Avxerage/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -97,12 +101,14 @@ {% if promember %} Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed {% else %} Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -159,4 +165,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/rowers/templates/flexchart3.html b/rowers/templates/flexchart3.html index 21e53bdd..67d9716b 100644 --- a/rowers/templates/flexchart3.html +++ b/rowers/templates/flexchart3.html @@ -59,6 +59,7 @@ SPM Peak Force Average Force + Average/Peak force ratio Drive Length Work per Stroke Drive Speed @@ -68,6 +69,7 @@ SPM (Pro) Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -86,12 +88,14 @@ {% if promember %} Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed {% else %} Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro) @@ -109,12 +113,14 @@ {% if promember %} Peak Force Average Force + Average/Peak Force Ratio Drive Length Work per Stroke Drive Speed {% else %} Peak Force (Pro) Average Force (Pro) + Average/Peak Force Ratio (Pro) Drive Length (Pro) Work per Stroke (Pro) Drive Speed (Pro)