Private
Public Access
1
0

Merge branch 'release/v20.1.21'

This commit is contained in:
2023-08-22 21:54:57 +02:00
4 changed files with 57 additions and 35 deletions

View File

@@ -5,6 +5,7 @@ from scipy.interpolate import griddata
from scipy import optimize from scipy import optimize
from rowers.mytypes import otwtypes, otetypes, rowtypes from rowers.mytypes import otwtypes, otetypes, rowtypes
from rowers.models import Workout
p0 = [190, 200, 33, 16000] p0 = [190, 200, 33, 16000]
@@ -22,6 +23,31 @@ rpetotss = {
10: 140, 10: 140,
} }
def rscore_approx(row):
if row['rscore'] > 0:
return row['rscore']
if row['rscore'] == 0:
if row['hrtss'] > 0:
return row['hrtss']
else:
dd = 3600*row['duration'].hour+60*row['duration'].minute+row['duration'].second
dd = dd/3600
print(row['rpe'],dd,rpetotss[row['rpe']])
return rpetotss[row['rpe']]*dd
if row['rscore'] < 0:
w = Workout.objects.get(id=row['id'])
trimp, hrtss = dataprep.workout_trimp(w)
rscore, normp = dataprep.workout_rscore(w)
if row['rpe'] and row['rpe'] > 0:
dd = 3600*row['duration'].hour+60*row['duration'].minute+row['duration'].second
dd = dd/3600
return rpetotss[row['rpe']]*dd
else: # pragma: no cover
minutes = row['duration'].hour*60+row['duration'].minute
return minutes
print('boer')
return 0
def updatecp(delta, cpvalues, r, workouttype='water'): # pragma: no cover def updatecp(delta, cpvalues, r, workouttype='water'): # pragma: no cover
if workouttype in otwtypes: if workouttype in otwtypes:

View File

@@ -1,6 +1,6 @@
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.dataprep import nicepaceformat, niceformat, strfdelta from rowers.dataprep import nicepaceformat, niceformat, strfdelta
from rowers.datautils import p0, rpetotss from rowers.datautils import p0, rpetotss, rscore_approx
from rowers.metrics import rowingmetrics, metricsdicts from rowers.metrics import rowingmetrics, metricsdicts
from scipy.spatial import ConvexHull, Delaunay from scipy.spatial import ConvexHull, Delaunay
from scipy.stats import linregress, percentileofscore from scipy.stats import linregress, percentileofscore
@@ -1507,21 +1507,8 @@ def weightfromrecord(row,metricchoice):
vv = row[metricchoice] vv = row[metricchoice]
if vv > 0: if vv > 0:
return vv return vv
if vv == 0: if metricchoice == 'rscore':
if metricchoice == 'rscore' and row['hrtss'] > 0: # pragma: no cover return rscore_approx(row)
return row['hrtss']
else:
dd = 3600*row['duration'].hour+60*row['duration'].minute+row['duration'].second
dd = dd/3600
return rpetotss[row['rpe']]*dd
if vv < 0:
w = Workout.objects.get(id=row['id'])
trimp, hrtss = dataprep.workout_trimp(w)
rscore, normp = dataprep.workout_rscore(w)
if row['rpe'] and row['rpe'] > 0: # pragma: no cover
dd = 3600*row['duration'].hour+60*row['duration'].minute+row['duration'].second
dd = dd/3600
return rpetotss[row['rpe']]*dd
return 0 return 0

View File

@@ -257,13 +257,16 @@ def get_execution_report(rower, startdate, enddate, plan=None):
plannedsession=None, plannedsession=None,
date__gte=mm.startdate, date__lte=mm.enddate).exclude(duplicate=True) date__gte=mm.startdate, date__lte=mm.enddate).exclude(duplicate=True)
for w in unmatchedworkouts: for w in unmatchedworkouts:
if w.rscore != 0: row = {
actualscore += w.rscore 'rscore': w.rscore,
elif w.hrtss != 0: # pragma: no cover 'hrtss': w.hrtss,
actualscore += w.hrtss 'rpe': w.rpe,
else: # pragma: no cover 'duration': w.duration,
minutes = w.duration.hour*60+w.duration.minute 'id': w.id
actualscore += minutes }
rscore = datautils.rscore_approx(row)
actualscore += rscore
for ps in sps: # pragma: no cover for ps in sps: # pragma: no cover
ratio, status, cdate = is_session_complete(rower, ps) ratio, status, cdate = is_session_complete(rower, ps)
if ps.sessionmode == 'rScore': if ps.sessionmode == 'rScore':
@@ -576,11 +579,15 @@ def get_session_metrics(ps):
durationv += timefield_to_seconds_duration(w.duration) durationv += timefield_to_seconds_duration(w.duration)
thetrimp, hrtss = dataprep.workout_trimp(w) thetrimp, hrtss = dataprep.workout_trimp(w)
trimpv += thetrimp trimpv += thetrimp
tss = dataprep.workout_rscore(w)[0] row = {
if not np.isnan(tss) and tss != 0: 'rscore': w.rscore,
rscorev += tss 'hrtss': w.hrtss,
elif tss == 0: # pragma: no cover 'rpe': w.rpe,
rscorev += hrtss 'duration': w.duration,
'id': w.id
}
tss = datautils.rscore_approx(row)
rscorev += tss
ratio, statusv, completiondate = is_session_complete_ws(ws, ps) ratio, statusv, completiondate = is_session_complete_ws(ws, ps)
try: try:
@@ -674,13 +681,15 @@ def is_session_complete_ws(ws, ps):
trimp, hrtss = 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] row = {
if not np.isnan(rscore) and rscore != 0: 'rscore': w.rscore,
score += rscore 'hrtss': w.hrtss,
elif rscore == 0: # pragma: no cover 'rpe': w.rpe,
trimp, hrtss = dataprep.workout_trimp(w) 'duration': w.duration,
score += hrtss 'id': w.id
}
rscore = datautils.rscore_approx(row)
score += rscore
if not completiondate and score >= cratiomin*value: if not completiondate and score >= cratiomin*value:
completiondate = w.date completiondate = w.date

Binary file not shown.