Private
Public Access
1
0

adding test duration

This commit is contained in:
Sander Roosendaal
2020-12-07 15:00:27 +01:00
parent 6426f8513d
commit 5df1a2272a
2 changed files with 30 additions and 11 deletions

View File

@@ -25,7 +25,7 @@ import itertools
from bokeh.plotting import figure, ColumnDataSource, Figure,curdoc
from bokeh.models import CustomJS,Slider, TextInput,BoxAnnotation, Band
from rowers.utils import myqueue
from rowers.utils import myqueue, totaltime_sec_to_string
import django_rq
queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
@@ -105,9 +105,10 @@ from pandas.core.groupby.groupby import DataError
def build_goldmedalstandards(workouts,kfitness):
dates = []
testpower = []
testduration = []
fatigues = []
fitnesses = []
data = []
goldmedalstandards = []
goldmedaldurations = []
@@ -118,26 +119,35 @@ def build_goldmedalstandards(workouts,kfitness):
goldmedalstandards.append(goldmedalstandard)
goldmedaldurations.append(goldmedalseconds)
df = pd.DataFrame({'workout':ids,'goldmedalstandard':goldmedalstandards})
df = pd.DataFrame({
'workout':ids,
'goldmedalstandard':goldmedalstandards,
'goldmedalduration':goldmedaldurations,
})
for w in workouts:
ids = [w.id for w in workouts.filter(date__gte=w.date-datetime.timedelta(days=kfitness),
date__lte=w.date)]
powerdf = df[df['workout'].isin(ids)]
indexmax = powerdf['goldmedalstandard'].idxmax()
powertest = powerdf['goldmedalstandard'].max()
durationtest = powerdf.loc[indexmax,'goldmedalduration']
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
testpower.append(powertest)
testduration.append(durationtest)
fatigues.append(np.nan)
fitnesses.append(np.nan)
return dates, testpower, fatigues, fitnesses
return dates, testpower, testduration, fatigues, fitnesses
def get_testpower(workouts,fitnesstestsecs,kfitness):
dates = []
testpower = []
testduration = []
fatigues = []
fitnesses = []
data = []
@@ -195,6 +205,7 @@ def get_testpower(workouts,fitnesstestsecs,kfitness):
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
testpower.append(powertest)
testduration.append(fitnesstestsecs)
fatigues.append(np.nan)
fitnesses.append(np.nan)
@@ -1635,7 +1646,7 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'):
return [script,div,js_resources,css_resources]
def getfatigues(
fatigues,fitnesses,dates,testpower,
fatigues,fitnesses,dates,testpower,testduration,
startdate,enddate,user,metricchoice,kfatigue,kfitness):
fatigue = 0
@@ -1688,8 +1699,9 @@ def getfatigues(
fitnesses.append(fitness)
dates.append(datetime.datetime.combine(date,datetime.datetime.min.time()))
testpower.append(np.nan)
testduration.append(np.nan)
return fatigues,fitnesses,dates,testpower,impulses
return fatigues,fitnesses,dates,testpower,testduration,impulses
def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
metricchoice='trimp',doform=False,dofatigue=False):
@@ -1933,11 +1945,11 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
df = pd.DataFrame()
if not usegoldmedalstandard:
dates,testpower,fatigues,fitnesses = get_testpower(
dates,testpower,testduration, fatigues,fitnesses = get_testpower(
workouts,fitnesstestsecs,kfitness
)
else:
dates,testpower,fatigues,fitnesses = build_goldmedalstandards(
dates,testpower, testduration,fatigues,fitnesses = build_goldmedalstandards(
workouts,kfitness
)
# create CP data
@@ -1945,6 +1957,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
df = pd.DataFrame({
'date':dates,
'testpower':testpower,
'testduration':testduration,
'fatigue':fatigues,
'fitness':fitnesses,
})
@@ -1965,9 +1978,10 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
testpower = df['testpower'].values.tolist()
fatigues = df['fatigue'].values.tolist()
fitnesses = df['fitness'].values.tolist()
testduration = df['testduration'].values.tolist()
fatigues,fitnesses,dates,testpower,impulses = getfatigues(
fatigues,fitnesses,dates,testpower,
fatigues,fitnesses,dates,testpower,testduration,impulses = getfatigues(
fatigues,fitnesses,dates,testpower,testduration,
startdate,enddate,user,metricchoice,kfatigue,kfitness
)
@@ -1975,6 +1989,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
df = pd.DataFrame({
'date':dates,
'testpower':testpower,
'testduration':testduration,
'fatigue':fatigues,
'fitness':fitnesses,
})
@@ -2000,6 +2015,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
source = ColumnDataSource(
data = dict(
testpower = df['testpower'],
testduration = df['testduration'].apply(lambda x:totaltime_sec_to_string(x,shorten=True)),
date = df['date'],
fdate = df['date'].map(lambda x: x.strftime('%d-%m-%Y')),
fitness = df['fitness'],
@@ -2109,7 +2125,8 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
hover = plot.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([
(legend_label,'@testpower'),
(legend_label,'@testpower{int}'),
('Test', '@testduration'),
('Date','@fdate'),
(fitlabel,'@fitness'),
(fatiguelabel,'@fatigue'),