trimp, tss, hrtss, normv, normw pre-calculated
This commit is contained in:
@@ -49,7 +49,8 @@ import itertools
|
||||
import math
|
||||
from tasks import (
|
||||
handle_sendemail_unrecognized, handle_sendemail_breakthrough,
|
||||
handle_sendemail_hard, handle_updatecp,handle_updateergcp
|
||||
handle_sendemail_hard, handle_updatecp,handle_updateergcp,
|
||||
handle_calctrimp,
|
||||
)
|
||||
|
||||
from django.conf import settings
|
||||
@@ -1017,6 +1018,8 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
res = dataprep(row.df, id=w.id, bands=True,
|
||||
barchart=True, otwpower=True, empower=True, inboard=inboard)
|
||||
|
||||
rscore,normp = workout_rscore(w)
|
||||
|
||||
isbreakthrough = False
|
||||
ishard = False
|
||||
if workouttype == 'water':
|
||||
@@ -2255,82 +2258,93 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True,
|
||||
return data
|
||||
|
||||
|
||||
def workout_trimp(workout):
|
||||
r = workout.user
|
||||
def workout_trimp(w):
|
||||
r = w.user
|
||||
|
||||
if w.trimp > 0:
|
||||
return w.trimp,w.hrtss
|
||||
|
||||
r = w.user
|
||||
ftp = float(r.ftp)
|
||||
if w.workouttype in otwtypes:
|
||||
ftp = ftp*(100.-r.otwslack)/100.
|
||||
|
||||
if r.hrftp == 0:
|
||||
hrftp = (r.an+r.tr)/2.
|
||||
r.hrftp = int(hrftp)
|
||||
r.save()
|
||||
|
||||
df,row = getrowdata_db(id=workout.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
if df.empty:
|
||||
df,row = getrowdata_db(id=workout.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
trimp,hrtss = calc_trimp(df,r.sex,r.max,r.rest,r.hrftp)
|
||||
if not np.isnan(trimp):
|
||||
trimp = int(trimp)
|
||||
else:
|
||||
trimp = 0
|
||||
if not np.isnan(hrtss):
|
||||
hrtss = int(hrtss)
|
||||
else:
|
||||
hrtss = 0
|
||||
|
||||
return trimp,hrtss
|
||||
|
||||
|
||||
job = myqueue(
|
||||
queuehigh,
|
||||
handle_calctrimp,
|
||||
w.id,
|
||||
w.csvfilename,
|
||||
ftp,
|
||||
r.sex,
|
||||
r.hrftp,
|
||||
r.max,
|
||||
r.rest)
|
||||
|
||||
return 0,0
|
||||
|
||||
def workout_rscore(w):
|
||||
if w.rscore > 0:
|
||||
return w.rscore,w.normp
|
||||
|
||||
r = w.user
|
||||
df,row = getrowdata_db(id=w.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
if df.empty:
|
||||
df,row = getrowdata_db(id=w.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
ftp = float(r.ftp)
|
||||
if w.workouttype in otwtypes:
|
||||
ftp = ftp*(100.-r.otwslack)/100.
|
||||
|
||||
df['deltat'] = df['time'].diff()
|
||||
duration = df['time'].max()-df['time'].min()
|
||||
duration /= 1.0e3
|
||||
df['pwr4'] = df['power']**(4.0)
|
||||
pwr4mean = wavg(df,'pwr4','deltat')
|
||||
pwrmean = wavg(df,'power','deltat')
|
||||
normp = (pwr4mean)**(0.25)
|
||||
if not np.isnan(normp):
|
||||
ftp = float(r.ftp)
|
||||
if w.workouttype in otwtypes:
|
||||
ftp = ftp*(100.-r.otwslack)/100.
|
||||
if r.hrftp == 0:
|
||||
hrftp = (r.an+r.tr)/2.
|
||||
r.hrftp = int(hrftp)
|
||||
r.save()
|
||||
|
||||
intensityfactor = pwrmean/float(ftp)
|
||||
intensityfactor = normp/float(ftp)
|
||||
tss = 100.*((duration*normp*intensityfactor)/(3600.*ftp))
|
||||
else:
|
||||
tss = 0
|
||||
|
||||
|
||||
return tss,normp
|
||||
job = myqueue(
|
||||
queuehigh,
|
||||
handle_calctrimp,
|
||||
w.id,
|
||||
w.csvfilename,
|
||||
ftp,
|
||||
r.sex,
|
||||
r.hrftp,
|
||||
r.max,
|
||||
r.rest)
|
||||
|
||||
return 0,0
|
||||
|
||||
def workout_normv(w,pp=4.0):
|
||||
df,row = getrowdata_db(id=w.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
if df.empty:
|
||||
df,row = getrowdata_db(id=w.id)
|
||||
df = clean_df_stats(df,workstrokesonly=False)
|
||||
if w.normv > 0:
|
||||
return w.normv,w.normw
|
||||
|
||||
df['deltat'] = df['time'].diff()
|
||||
duration = df['time'].max()-df['time'].min()
|
||||
duration /= 1.0e3
|
||||
df['v4'] = df['velo']**(pp)
|
||||
v4mean = wavg(df,'v4','deltat')
|
||||
normv = v4mean**(1./pp)
|
||||
r = w.user
|
||||
ftp = float(r.ftp)
|
||||
if w.workouttype in otwtypes:
|
||||
ftp = ftp*(100.-r.otwslack)/100.
|
||||
|
||||
if r.hrftp == 0:
|
||||
hrftp = (r.an+r.tr)/2.
|
||||
r.hrftp = int(hrftp)
|
||||
r.save()
|
||||
|
||||
|
||||
|
||||
job = myqueue(
|
||||
queuehigh,
|
||||
handle_calctrimp,
|
||||
w.id,
|
||||
w.csvfilename,
|
||||
ftp,
|
||||
r.sex,
|
||||
r.hrftp,
|
||||
r.max,
|
||||
r.rest)
|
||||
|
||||
return 0,0
|
||||
|
||||
df['w4'] = df['driveenergy']**(pp)
|
||||
w4mean = wavg(df,'w4','deltat')
|
||||
normw = w4mean**(1./pp)
|
||||
|
||||
|
||||
if np.isnan(normv):
|
||||
normv = 500./120.
|
||||
|
||||
if np.isnan(normw):
|
||||
normw = 0
|
||||
|
||||
return normv,normw
|
||||
|
||||
|
||||
Reference in New Issue
Block a user