using rpe to calculate trimp/tss
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user