Merge branch 'release/v20.1.21'
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
Reference in New Issue
Block a user