Private
Public Access
1
0

TSS calculation now always includes rest strokes

This commit is contained in:
Sander Roosendaal
2018-02-13 08:18:17 +01:00
parent 3a30c7dafc
commit ae0e0650e8
3 changed files with 19 additions and 29 deletions

View File

@@ -2217,7 +2217,7 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True,
def workout_trimp(workout):
r = workout.user
df,row = getrowdata_db(id=workout.id)
df = clean_df_stats(df)
df = clean_df_stats(df,workstrokesonly=False)
if df.empty:
df,row = getrowdata_db(id=workout.id)
df = clean_df_stats(df,workstrokesonly=False)
@@ -2229,7 +2229,7 @@ def workout_trimp(workout):
def workout_rscore(w):
r = w.user
df,row = getrowdata_db(id=w.id)
df = clean_df_stats(df)
df = clean_df_stats(df,workstrokesonly=False)
if df.empty:
df,row = getrowdata_db(id=w.id)
df = clean_df_stats(df,workstrokesonly=False)
@@ -2249,4 +2249,4 @@ def workout_rscore(w):
else:
tss = 0
return tss
return tss,normp

View File

@@ -96,7 +96,7 @@ def get_session_metrics(ps):
distancev += w.distance
durationv += timefield_to_seconds_duration(w.duration)
trimpv += dataprep.workout_trimp(w)
rscorev += dataprep.workout_rscore(w)
rscorev += dataprep.workout_rscore(w)[0]
ratio,statusv = is_session_complete_ws(ws,ps)
completedatev = ws[0].date.strftime('%Y-%b-%d')

View File

@@ -7468,24 +7468,15 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
otherstats = {}
# Normalized power & TSS
duration = datadf['time'].max()-datadf['time'].min()
duration /= 1.0e3
pwr4 = datadf['power']**(4.0)
normp = (pwr4.mean())**(0.25)
if not np.isnan(normp):
ftp = float(r.ftp)
if w.workouttype in ('water','coastal'):
ftp = ftp*(100.-r.otwslack)/100.
intensityfactor = normp/float(ftp)
tss = 100.*((duration*normp*intensityfactor)/(3600.*ftp))
tss,normp = dataprep.workout_rscore(w)
if not np.isnan(tss):
otherstats['tss'] = {
'verbose_name':'rScore',
'value':int(tss),
'unit':''
}
if not np.isnan(tss) and tss != 0:
otherstats['tss'] = {
'verbose_name':'rScore',
'value':int(tss),
'unit':''
}
if not np.isnan(normp):
otherstats['np'] = {
@@ -7521,14 +7512,13 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
pass
# TRIMP
if datadf['hr'].mean() > 0 and r.sex != 'not specified':
trimp = metrics.calc_trimp(datadf,r.sex,r.max,r.rest)
trimp = int(trimp)
otherstats['trimp'] = {
'verbose_name': 'TRIMP',
'value': trimp,
'unit': ''
}
trimp = dataprep.workout_trimp(w)
otherstats['trimp'] = {
'verbose_name': 'TRIMP',
'value': trimp,
'unit': ''
}
return render(request,
'workoutstats.html',