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 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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
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