Private
Public Access
1
0

using rpe to calculate trimp/tss

This commit is contained in:
Sander Roosendaal
2020-12-02 15:38:50 +01:00
parent c909c401dc
commit b6785c9376
4 changed files with 33 additions and 4 deletions

View File

@@ -13,6 +13,20 @@ from rowers.mytypes import otwtypes,otetypes,rowtypes
#p0 = [500,350,10,8000] #p0 = [500,350,10,8000]
p0 = [190,200,33,16000] p0 = [190,200,33,16000]
# RPE to TSS
rpetotss = {
1:20,
2:30,
3:40,
4:50,
5:60,
6:70,
7:80,
8:100,
9:120,
10:140,
}
def updatecp(delta,cpvalues,r,workouttype='water'): def updatecp(delta,cpvalues,r,workouttype='water'):
if workouttype in otwtypes: if workouttype in otwtypes:
p0 = r.p0 p0 = r.p0

View File

@@ -97,7 +97,7 @@ import rowers.c2stuff as c2stuff
from rowers.metrics import axes,axlabels,yaxminima,yaxmaxima,get_yaxminima,get_yaxmaxima from rowers.metrics import axes,axlabels,yaxminima,yaxmaxima,get_yaxminima,get_yaxmaxima
from rowers.utils import lbstoN from rowers.utils import lbstoN
from rowers.datautils import p0 from rowers.datautils import p0,rpetotss
import rowers.datautils as datautils import rowers.datautils as datautils
from pandas.core.groupby.groupby import DataError from pandas.core.groupby.groupby import DataError
@@ -1650,18 +1650,29 @@ def getfatigues(
if metricchoice == 'rscore': if metricchoice == 'rscore':
factor = 2.0 factor = 2.0
for i in range(nrdays): for i in range(nrdays+1):
date = startdate+datetime.timedelta(days=i) date = startdate+datetime.timedelta(days=i)
ws = Workout.objects.filter(user=user.rower,date=date,duplicate=False) ws = Workout.objects.filter(user=user.rower,date=date,duplicate=False)
weight = 0 weight = 0
for w in ws: for w in ws:
weight += factor*getattr(w,metricchoice) weight += factor*getattr(w,metricchoice)
if getattr(w,metricchoice) <= 0: if getattr(w,metricchoice) <= 0:
if metricchoice == 'rscore' and w.hrtss != 0: if metricchoice == 'rscore' and w.hrtss > 0:
weight+= factor*w.hrtss weight+= factor*w.hrtss
else: else:
trimp,hrtss = dataprep.workout_trimp(w) trimp,hrtss = dataprep.workout_trimp(w)
rscore,normp = dataprep.workout_rscore(w) rscore,normp = dataprep.workout_rscore(w)
if w.rpe and w.rpe > 0:
dd = 3600*w.duration.hour+60*w.duration.minute+w.duration.second
dd = dd/3600
weight += factor*rpetotss[w.rpe]*dd
if metricchoice == 'trimp' and w.trimp <= 0:
trimp,hrtss = dataprep.workout_trimp(w)
rscore,normp = dataprep.workout_rscore(w)
if w.rpe and w.rpe > 0:
dd = 3600*w.duration.hour+60*w.duration.minute+w.duration.second
dd = dd/3600
weight += factor*rpetotss[w.rpe]*dd
impulses.append(weight) impulses.append(weight)

View File

@@ -2948,7 +2948,7 @@ class Workout(models.Model):
normp = models.IntegerField(default=-1,blank=True) normp = models.IntegerField(default=-1,blank=True)
normv = models.FloatField(default=-1,blank=True) normv = models.FloatField(default=-1,blank=True)
normw = models.FloatField(default=-1,blank=True) normw = models.FloatField(default=-1,blank=True)
goldmedalstandard = models.FloatField(default=-1,blank=True) goldmedalstandard = models.FloatField(default=-1,blank=True,verbose_name='Gold Medal Standard')
rpe = models.IntegerField(default=0,blank=True,choices=rpechoices, rpe = models.IntegerField(default=0,blank=True,choices=rpechoices,
verbose_name='Rate of Perceived Exertion') verbose_name='Rate of Perceived Exertion')

View File

@@ -585,12 +585,16 @@ def addmanual_view(request,raceid=0):
weightcategory = form.cleaned_data['weightcategory'] weightcategory = form.cleaned_data['weightcategory']
adaptiveclass = form.cleaned_data['adaptiveclass'] adaptiveclass = form.cleaned_data['adaptiveclass']
distance = form.cleaned_data['distance'] distance = form.cleaned_data['distance']
rpe = form.cleaned_data['rpe']
if not rpe:
rpe = -1
notes = form.cleaned_data['notes'] notes = form.cleaned_data['notes']
thetimezone = form.cleaned_data['timezone'] thetimezone = form.cleaned_data['timezone']
private = form.cleaned_data['private'] private = form.cleaned_data['private']
avghr = metricsform.cleaned_data['avghr'] avghr = metricsform.cleaned_data['avghr']
avgpwr = metricsform.cleaned_data['avgpwr'] avgpwr = metricsform.cleaned_data['avgpwr']
avgspm = metricsform.cleaned_data['avgspm'] avgspm = metricsform.cleaned_data['avgspm']
try: try:
ps = form.cleaned_data['plannedsession'] ps = form.cleaned_data['plannedsession']
except KeyError: except KeyError: