added hrScore to stats and plannedsessions
in plannedsessions, if rScore = 0, taking hrScore
This commit is contained in:
@@ -172,7 +172,7 @@ def workout_summary_to_df(
|
|||||||
id=w.id
|
id=w.id
|
||||||
)
|
)
|
||||||
csv_links.append(csv_link)
|
csv_links.append(csv_link)
|
||||||
trimps.append(workout_trimp(w))
|
trimps.append(workout_trimp(w)[0])
|
||||||
rscore = workout_rscore(w)
|
rscore = workout_rscore(w)
|
||||||
rscores.append(int(rscore[0]))
|
rscores.append(int(rscore[0]))
|
||||||
|
|
||||||
@@ -2302,17 +2302,20 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True,
|
|||||||
engine.dispose()
|
engine.dispose()
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def workout_trimp(workout):
|
def workout_trimp(workout):
|
||||||
r = workout.user
|
r = workout.user
|
||||||
|
hrftp = (r.an+r.tr)/2.
|
||||||
df,row = getrowdata_db(id=workout.id)
|
df,row = getrowdata_db(id=workout.id)
|
||||||
df = clean_df_stats(df,workstrokesonly=False)
|
df = clean_df_stats(df,workstrokesonly=False)
|
||||||
if df.empty:
|
if df.empty:
|
||||||
df,row = getrowdata_db(id=workout.id)
|
df,row = getrowdata_db(id=workout.id)
|
||||||
df = clean_df_stats(df,workstrokesonly=False)
|
df = clean_df_stats(df,workstrokesonly=False)
|
||||||
trimp = calc_trimp(df,r.sex,r.max,r.rest)
|
trimp,hrtss = calc_trimp(df,r.sex,r.max,r.rest,hrftp)
|
||||||
trimp = int(trimp)
|
trimp = int(trimp)
|
||||||
|
hrtss = int(hrtss)
|
||||||
|
|
||||||
return trimp
|
return trimp,hrtss
|
||||||
|
|
||||||
def workout_rscore(w):
|
def workout_rscore(w):
|
||||||
r = w.user
|
r = w.user
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ This value should be fairly constant across all stroke rates.""",
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def calc_trimp(df,sex,hrmax,hrmin):
|
def calc_trimp(df,sex,hrmax,hrmin,hrftp):
|
||||||
if sex == 'male':
|
if sex == 'male':
|
||||||
f = 1.92
|
f = 1.92
|
||||||
else:
|
else:
|
||||||
@@ -343,10 +343,14 @@ def calc_trimp(df,sex,hrmax,hrmin):
|
|||||||
dt = df['time'].diff()/6.e4
|
dt = df['time'].diff()/6.e4
|
||||||
|
|
||||||
hrr = (df['hr']-hrmin)/(hrmax-hrmin)
|
hrr = (df['hr']-hrmin)/(hrmax-hrmin)
|
||||||
|
hrrftp = (hrftp-hrmin)/(hrmax-hrmin)
|
||||||
|
trimp1hr = 60*hrrftp*0.64*np.exp(f*hrrftp)
|
||||||
trimpdata = dt*hrr*0.64*np.exp(f*hrr)
|
trimpdata = dt*hrr*0.64*np.exp(f*hrr)
|
||||||
trimp = trimpdata.sum()
|
trimp = trimpdata.sum()
|
||||||
|
|
||||||
return trimp
|
hrtss = 100*trimp/trimp1hr
|
||||||
|
|
||||||
|
return trimp,hrtss
|
||||||
|
|
||||||
|
|
||||||
def getagegrouprecord(age,sex='male',weightcategory='hwt',
|
def getagegrouprecord(age,sex='male',weightcategory='hwt',
|
||||||
|
|||||||
@@ -111,8 +111,13 @@ def get_session_metrics(ps):
|
|||||||
for w in ws:
|
for w in ws:
|
||||||
distancev += w.distance
|
distancev += w.distance
|
||||||
durationv += timefield_to_seconds_duration(w.duration)
|
durationv += timefield_to_seconds_duration(w.duration)
|
||||||
trimpv += dataprep.workout_trimp(w)
|
thetrimp,hrtss = dataprep.workout_trimp(w)
|
||||||
rscorev += dataprep.workout_rscore(w)[0]
|
trimpv += thetrimp
|
||||||
|
tss = dataprep.workout_rscore(w)[0]
|
||||||
|
if not np.isnan(tss) and tss != 0:
|
||||||
|
rscorev += tss
|
||||||
|
elif tss == 0:
|
||||||
|
rscorev += hrtss
|
||||||
|
|
||||||
ratio,statusv,completiondate = is_session_complete_ws(ws,ps)
|
ratio,statusv,completiondate = is_session_complete_ws(ws,ps)
|
||||||
try:
|
try:
|
||||||
@@ -181,11 +186,16 @@ def is_session_complete_ws(ws,ps):
|
|||||||
durationseconds = timefield_to_seconds_duration(w.duration)
|
durationseconds = timefield_to_seconds_duration(w.duration)
|
||||||
score += durationseconds
|
score += durationseconds
|
||||||
elif ps.sessionmode == 'TRIMP':
|
elif ps.sessionmode == 'TRIMP':
|
||||||
trimp = dataprep.workout_trimp(w)
|
trimp,hrtss = dataprep.workout_trimp(w)
|
||||||
score += trimp
|
score += trimp
|
||||||
elif ps.sessionmode == 'rScore':
|
elif ps.sessionmode == 'rScore':
|
||||||
rscore = dataprep.workout_rscore(w)[0]
|
rscore = dataprep.workout_rscore(w)[0]
|
||||||
|
if not np.isnan(rscore) and rscore != 0:
|
||||||
score += rscore
|
score += rscore
|
||||||
|
elif rscore == 0:
|
||||||
|
trimp,hrtss = dataprep.workout_trimp(w)
|
||||||
|
score += hrtss
|
||||||
|
|
||||||
if not completiondate and score>=cratiomin*value:
|
if not completiondate and score>=cratiomin*value:
|
||||||
completiondate = w.date
|
completiondate = w.date
|
||||||
|
|
||||||
|
|||||||
@@ -7832,7 +7832,7 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# TRIMP
|
# TRIMP
|
||||||
trimp = dataprep.workout_trimp(w)
|
trimp,hrtss = dataprep.workout_trimp(w)
|
||||||
|
|
||||||
otherstats['trimp'] = {
|
otherstats['trimp'] = {
|
||||||
'verbose_name': 'TRIMP',
|
'verbose_name': 'TRIMP',
|
||||||
@@ -7840,6 +7840,12 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
|||||||
'unit': ''
|
'unit': ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
otherstats['hrScore'] = {
|
||||||
|
'verbose_name': 'rScore (HR)',
|
||||||
|
'value': hrtss,
|
||||||
|
'unit':''
|
||||||
|
}
|
||||||
|
|
||||||
return render(request,
|
return render(request,
|
||||||
'workoutstats.html',
|
'workoutstats.html',
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user