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)