Private
Public Access
1
0

Adding gold medal standard to performance chart (optional)

This commit is contained in:
Sander Roosendaal
2021-01-01 16:51:00 +01:00
parent 0e9944044d
commit 87b6684465
5 changed files with 74 additions and 13 deletions

View File

@@ -120,6 +120,7 @@ def build_goldmedalstandards(workouts,kfitness):
testduration = []
fatigues = []
fitnesses = []
impulses = []
data = []
goldmedalstandards = []
@@ -185,8 +186,9 @@ def build_goldmedalstandards(workouts,kfitness):
fatigues.append(np.nan)
fitnesses.append(np.nan)
impulses.append(np.nan)
return dates, testpower, testduration, fatigues, fitnesses
return dates, testpower, testduration, fatigues, fitnesses,impulses
def get_testpower(workouts,fitnesstestsecs,kfitness):
@@ -1762,24 +1764,55 @@ def getfatigues(
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):
metricchoice='trimp',doform=False,dofatigue=False,
showtests=False):
TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair'
TOOLS2 = 'box_zoom,hover'
fatigues = []
fitnesses = []
dates = []
testpower = []
testduration = []
modelchoice = 'coggan'
p0 = 0
k1 = 1
k2 = 1
dates = []
testpower = []
fatigues = []
fitnesses = []
testduration = []
if showtests:
workouts = Workout.objects.filter(user=user.rower,date__gte=startdate,
date__lte=enddate,
workouttype__in=mytypes.rowtypes,
duplicate=False)
dates,testpower,testduration,fatigues,fitnesses,impulses = build_goldmedalstandards(
workouts,kfitness
)
df = pd.DataFrame({
'date':dates,
'testpower':testpower,
'testduration':testduration,
'fatigue':fatigues,
'fitness':fitnesses,
'impulse':impulses,
})
df.sort_values(['date'],inplace=True)
df['testdup'] = df['testpower'].shift(1)
df['testpower'] = df.apply(lambda x: newtestpower(x),axis=1)
try:
df['testpower'].iloc[-1] = df['testdup'].iloc[-1]
except IndexError:
pass
dates = [d for d in df['date']]
testpower = df['testpower'].values.tolist()
fatigues = df['fatigue'].values.tolist()
fitnesses = df['fitness'].values.tolist()
testduration = df['testduration'].values.tolist()
fatigues,fitnesses,dates,testpower,testduration,impulses = getfatigues(fatigues,
fitnesses,
@@ -1794,6 +1827,7 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
df = pd.DataFrame({
'date':dates,
'testpower':testpower,
'testduration': testduration,
'fatigue':fatigues,
'fitness':fitnesses,
'impulse':impulses,
@@ -1819,6 +1853,7 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
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'],
@@ -1881,8 +1916,9 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
yaxlabel = 'Fitness'
#plot.circle('date','testpower',source=source,fill_color='green',size=10,
# legend_label=legend_label.format(fitnesstest=fitnesstest))
if showtests:
plot.circle('date','testpower',source=source,fill_color='green',size=10,
legend_label='Your best workouts')
plot.xaxis.axis_label = None
plot.yaxis.axis_label = yaxlabel
@@ -1937,6 +1973,7 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
linked_crosshair = CrosshairTool(dimensions='height')
hover.tooltips = OrderedDict([
#(legend_label,'@testpower'),
('Date','@fdate'),
@@ -1946,7 +1983,17 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
('Impulse','@impulse{int}')
])
if showtests:
hover.tooltips = OrderedDict([
#(legend_label,'@testpower'),
('Date','@fdate'),
(fitlabel,'@fitness{int}'),
(fatiguelabel,'@fatigue{int}'),
(formlabel,'@form{int}'),
('Impulse','@impulse{int}'),
('Gold Medal Score','@testpower{int}'),
('Test', '@testduration'),
])
plot2 = Figure(tools=TOOLS2,x_axis_type='datetime',
plot_width=900,plot_height=150,
@@ -2007,7 +2054,7 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None,
workouts,fitnesstestsecs,kfitness
)
else:
dates,testpower, testduration,fatigues,fitnesses = build_goldmedalstandards(
dates,testpower, testduration,fatigues,fitnesses,impulses = build_goldmedalstandards(
workouts,kfitness
)
# create CP data