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 rowers.mytypes import otwtypes, otetypes, rowtypes
from rowers.models import Workout
p0 = [190, 200, 33, 16000]
@@ -22,6 +23,31 @@ rpetotss = {
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
if workouttype in otwtypes:

View File

@@ -1,6 +1,6 @@
from rowers.metrics import axes, axlabels, yaxminima, yaxmaxima, get_yaxminima, get_yaxmaxima
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 scipy.spatial import ConvexHull, Delaunay
from scipy.stats import linregress, percentileofscore
@@ -1507,21 +1507,8 @@ def weightfromrecord(row,metricchoice):
vv = row[metricchoice]
if vv > 0:
return vv
if vv == 0:
if metricchoice == 'rscore' and row['hrtss'] > 0: # pragma: no cover
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
if metricchoice == 'rscore':
return rscore_approx(row)
return 0

View File

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

Binary file not shown.