diff --git a/rowers/datautils.py b/rowers/datautils.py index a13709f9..38955129 100644 --- a/rowers/datautils.py +++ b/rowers/datautils.py @@ -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,26 @@ 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 + 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 + + return 0 def updatecp(delta, cpvalues, r, workouttype='water'): # pragma: no cover if workouttype in otwtypes: diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index ba084f68..b3390f47 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -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