Private
Public Access
1
0

added efficiency metric

This commit is contained in:
Sander Roosendaal
2017-08-04 11:14:45 +02:00
parent e673255f43
commit c55be018d7
4 changed files with 18 additions and 1 deletions

View File

@@ -211,6 +211,12 @@ def clean_df_stats(datadf,workstrokesonly=True,ignorehr=True,
except KeyError:
pass
try:
mask = datadf['efficiency'] < 0.
datadf.loc[mask,'efficiency'] = np.nan
except KeyError:
pass
try:
mask = datadf['pace']/1000. < 60.
datadf.loc[mask,'pace'] = np.nan
@@ -1423,6 +1429,14 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
totalangle = savgol_filter(totalangle,windowsize,3)
effectiveangle = savgol_filter(effectiveangle,windowsize,3)
velo = 500./p
ergpw = 2.8*velo**3
efficiency = 100.*ergpw/power
efficiency = efficiency.replace([-np.inf,np.inf],np.nan)
efficiency.fillna(method='ffill')
data['wash'] = wash
data['catch'] = catch
data['slip'] = slip
@@ -1432,6 +1446,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
data['drivelength'] = drivelength
data['totalangle'] = totalangle
data['effectiveangle'] = effectiveangle
data['efficiency'] = efficiency
if otwpower:
try:

View File

@@ -22,6 +22,7 @@ axes = (
('totalangle', 'Drive Length (deg)',40,140,'pro'),
('effectiveangle', 'Effective Drive Length (deg)',40,140,'pro'),
('rhythm', 'Stroke Rhythm (%)',20,55,'pro'),
('efficiency', 'OTW efficiency (%)',0,110,'pro'),
('None', 'None',0,1,'basic'),
)

View File

@@ -536,6 +536,7 @@ class StrokeData(models.Model):
rhythm = models.FloatField(default=1.0,null=True,verbose_name='Rhythm')
totalangle = models.FloatField(default=0.0,null=True,verbose_name='Total Stroke Length (deg)')
effectiveangle = models.FloatField(default=0.0,null=True,verbose_name='Effective Stroke Length (deg)')
efficiency = models.FloatField(default=-1,null=True,verbose_name='OTW Efficiency')
# A wrapper around the png files
class GraphImage(models.Model):

View File

@@ -5618,7 +5618,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
axchoicespro.pop('totalangle')
axchoicespro.pop('effectiveangle')
axchoicespro.pop('peakforceangle')
axchoicespro.pop('efficiency')
return render(request,
'flexchart3otw.html',