adding test duration
This commit is contained in:
@@ -25,7 +25,7 @@ import itertools
|
|||||||
from bokeh.plotting import figure, ColumnDataSource, Figure,curdoc
|
from bokeh.plotting import figure, ColumnDataSource, Figure,curdoc
|
||||||
from bokeh.models import CustomJS,Slider, TextInput,BoxAnnotation, Band
|
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
|
import django_rq
|
||||||
queue = django_rq.get_queue('default')
|
queue = django_rq.get_queue('default')
|
||||||
queuelow = django_rq.get_queue('low')
|
queuelow = django_rq.get_queue('low')
|
||||||
@@ -105,9 +105,10 @@ from pandas.core.groupby.groupby import DataError
|
|||||||
def build_goldmedalstandards(workouts,kfitness):
|
def build_goldmedalstandards(workouts,kfitness):
|
||||||
dates = []
|
dates = []
|
||||||
testpower = []
|
testpower = []
|
||||||
|
testduration = []
|
||||||
fatigues = []
|
fatigues = []
|
||||||
fitnesses = []
|
fitnesses = []
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
goldmedalstandards = []
|
goldmedalstandards = []
|
||||||
goldmedaldurations = []
|
goldmedaldurations = []
|
||||||
@@ -118,26 +119,35 @@ def build_goldmedalstandards(workouts,kfitness):
|
|||||||
goldmedalstandards.append(goldmedalstandard)
|
goldmedalstandards.append(goldmedalstandard)
|
||||||
goldmedaldurations.append(goldmedalseconds)
|
goldmedaldurations.append(goldmedalseconds)
|
||||||
|
|
||||||
df = pd.DataFrame({'workout':ids,'goldmedalstandard':goldmedalstandards})
|
df = pd.DataFrame({
|
||||||
|
'workout':ids,
|
||||||
|
'goldmedalstandard':goldmedalstandards,
|
||||||
|
'goldmedalduration':goldmedaldurations,
|
||||||
|
})
|
||||||
|
|
||||||
for w in workouts:
|
for w in workouts:
|
||||||
ids = [w.id for w in workouts.filter(date__gte=w.date-datetime.timedelta(days=kfitness),
|
ids = [w.id for w in workouts.filter(date__gte=w.date-datetime.timedelta(days=kfitness),
|
||||||
date__lte=w.date)]
|
date__lte=w.date)]
|
||||||
|
|
||||||
powerdf = df[df['workout'].isin(ids)]
|
powerdf = df[df['workout'].isin(ids)]
|
||||||
|
indexmax = powerdf['goldmedalstandard'].idxmax()
|
||||||
powertest = powerdf['goldmedalstandard'].max()
|
powertest = powerdf['goldmedalstandard'].max()
|
||||||
|
durationtest = powerdf.loc[indexmax,'goldmedalduration']
|
||||||
|
|
||||||
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
|
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
|
||||||
testpower.append(powertest)
|
testpower.append(powertest)
|
||||||
|
testduration.append(durationtest)
|
||||||
|
|
||||||
fatigues.append(np.nan)
|
fatigues.append(np.nan)
|
||||||
fitnesses.append(np.nan)
|
fitnesses.append(np.nan)
|
||||||
|
|
||||||
return dates, testpower, fatigues, fitnesses
|
return dates, testpower, testduration, fatigues, fitnesses
|
||||||
|
|
||||||
|
|
||||||
def get_testpower(workouts,fitnesstestsecs,kfitness):
|
def get_testpower(workouts,fitnesstestsecs,kfitness):
|
||||||
dates = []
|
dates = []
|
||||||
testpower = []
|
testpower = []
|
||||||
|
testduration = []
|
||||||
fatigues = []
|
fatigues = []
|
||||||
fitnesses = []
|
fitnesses = []
|
||||||
data = []
|
data = []
|
||||||
@@ -195,6 +205,7 @@ def get_testpower(workouts,fitnesstestsecs,kfitness):
|
|||||||
|
|
||||||
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
|
dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time()))
|
||||||
testpower.append(powertest)
|
testpower.append(powertest)
|
||||||
|
testduration.append(fitnesstestsecs)
|
||||||
fatigues.append(np.nan)
|
fatigues.append(np.nan)
|
||||||
fitnesses.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]
|
return [script,div,js_resources,css_resources]
|
||||||
|
|
||||||
def getfatigues(
|
def getfatigues(
|
||||||
fatigues,fitnesses,dates,testpower,
|
fatigues,fitnesses,dates,testpower,testduration,
|
||||||
startdate,enddate,user,metricchoice,kfatigue,kfitness):
|
startdate,enddate,user,metricchoice,kfatigue,kfitness):
|
||||||
|
|
||||||
fatigue = 0
|
fatigue = 0
|
||||||
@@ -1688,8 +1699,9 @@ def getfatigues(
|
|||||||
fitnesses.append(fitness)
|
fitnesses.append(fitness)
|
||||||
dates.append(datetime.datetime.combine(date,datetime.datetime.min.time()))
|
dates.append(datetime.datetime.combine(date,datetime.datetime.min.time()))
|
||||||
testpower.append(np.nan)
|
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,
|
def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
|
||||||
metricchoice='trimp',doform=False,dofatigue=False):
|
metricchoice='trimp',doform=False,dofatigue=False):
|
||||||
@@ -1933,11 +1945,11 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
df = pd.DataFrame()
|
df = pd.DataFrame()
|
||||||
|
|
||||||
if not usegoldmedalstandard:
|
if not usegoldmedalstandard:
|
||||||
dates,testpower,fatigues,fitnesses = get_testpower(
|
dates,testpower,testduration, fatigues,fitnesses = get_testpower(
|
||||||
workouts,fitnesstestsecs,kfitness
|
workouts,fitnesstestsecs,kfitness
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
dates,testpower,fatigues,fitnesses = build_goldmedalstandards(
|
dates,testpower, testduration,fatigues,fitnesses = build_goldmedalstandards(
|
||||||
workouts,kfitness
|
workouts,kfitness
|
||||||
)
|
)
|
||||||
# create CP data
|
# create CP data
|
||||||
@@ -1945,6 +1957,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
df = pd.DataFrame({
|
df = pd.DataFrame({
|
||||||
'date':dates,
|
'date':dates,
|
||||||
'testpower':testpower,
|
'testpower':testpower,
|
||||||
|
'testduration':testduration,
|
||||||
'fatigue':fatigues,
|
'fatigue':fatigues,
|
||||||
'fitness':fitnesses,
|
'fitness':fitnesses,
|
||||||
})
|
})
|
||||||
@@ -1965,9 +1978,10 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
testpower = df['testpower'].values.tolist()
|
testpower = df['testpower'].values.tolist()
|
||||||
fatigues = df['fatigue'].values.tolist()
|
fatigues = df['fatigue'].values.tolist()
|
||||||
fitnesses = df['fitness'].values.tolist()
|
fitnesses = df['fitness'].values.tolist()
|
||||||
|
testduration = df['testduration'].values.tolist()
|
||||||
|
|
||||||
fatigues,fitnesses,dates,testpower,impulses = getfatigues(
|
fatigues,fitnesses,dates,testpower,testduration,impulses = getfatigues(
|
||||||
fatigues,fitnesses,dates,testpower,
|
fatigues,fitnesses,dates,testpower,testduration,
|
||||||
startdate,enddate,user,metricchoice,kfatigue,kfitness
|
startdate,enddate,user,metricchoice,kfatigue,kfitness
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1975,6 +1989,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
df = pd.DataFrame({
|
df = pd.DataFrame({
|
||||||
'date':dates,
|
'date':dates,
|
||||||
'testpower':testpower,
|
'testpower':testpower,
|
||||||
|
'testduration':testduration,
|
||||||
'fatigue':fatigues,
|
'fatigue':fatigues,
|
||||||
'fitness':fitnesses,
|
'fitness':fitnesses,
|
||||||
})
|
})
|
||||||
@@ -2000,6 +2015,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
source = ColumnDataSource(
|
source = ColumnDataSource(
|
||||||
data = dict(
|
data = dict(
|
||||||
testpower = df['testpower'],
|
testpower = df['testpower'],
|
||||||
|
testduration = df['testduration'].apply(lambda x:totaltime_sec_to_string(x,shorten=True)),
|
||||||
date = df['date'],
|
date = df['date'],
|
||||||
fdate = df['date'].map(lambda x: x.strftime('%d-%m-%Y')),
|
fdate = df['date'].map(lambda x: x.strftime('%d-%m-%Y')),
|
||||||
fitness = df['fitness'],
|
fitness = df['fitness'],
|
||||||
@@ -2109,7 +2125,8 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
|
|||||||
hover = plot.select(dict(type=HoverTool))
|
hover = plot.select(dict(type=HoverTool))
|
||||||
|
|
||||||
hover.tooltips = OrderedDict([
|
hover.tooltips = OrderedDict([
|
||||||
(legend_label,'@testpower'),
|
(legend_label,'@testpower{int}'),
|
||||||
|
('Test', '@testduration'),
|
||||||
('Date','@fdate'),
|
('Date','@fdate'),
|
||||||
(fitlabel,'@fitness'),
|
(fitlabel,'@fitness'),
|
||||||
(fatiguelabel,'@fatigue'),
|
(fatiguelabel,'@fatigue'),
|
||||||
|
|||||||
@@ -377,6 +377,8 @@ def wavg(group, avg_name, weight_name):
|
|||||||
return d.mean()
|
return d.mean()
|
||||||
|
|
||||||
def totaltime_sec_to_string(totaltime,shorten=False):
|
def totaltime_sec_to_string(totaltime,shorten=False):
|
||||||
|
if np.isnan(totaltime):
|
||||||
|
return ''
|
||||||
hours = int(totaltime / 3600.)
|
hours = int(totaltime / 3600.)
|
||||||
if hours > 23:
|
if hours > 23:
|
||||||
message = 'Warning: The workout duration was longer than 23 hours. '
|
message = 'Warning: The workout duration was longer than 23 hours. '
|
||||||
|
|||||||
Reference in New Issue
Block a user