added age records to ote-bests
This commit is contained in:
@@ -1101,7 +1101,8 @@ def interactive_agegroup_plot(df):
|
||||
return script,div
|
||||
|
||||
def interactive_cpchart(rower,thedistances,thesecs,theavpower,
|
||||
theworkouts,promember=0):
|
||||
theworkouts,promember=0,
|
||||
wcpower=[],wcdurations=[]):
|
||||
|
||||
message = 0
|
||||
# plot tools
|
||||
@@ -1167,11 +1168,23 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower,
|
||||
)
|
||||
|
||||
|
||||
# fitting the data to three parameter CP model
|
||||
fitfunc = lambda pars,x: pars[0]/(1+(x/pars[2])) + pars[1]/(1+(x/pars[3]))
|
||||
errfunc = lambda pars,x,y: fitfunc(pars,x)-y
|
||||
|
||||
|
||||
p0 = [500,350,10,8000]
|
||||
wcpower = pd.Series(wcpower)
|
||||
wcdurations = pd.Series(wcdurations)
|
||||
|
||||
# fitting WC data to three parameter CP model
|
||||
if len(wcdurations)>=4:
|
||||
p1wc, success = optimize.leastsq(errfunc, p0[:],
|
||||
args = (wcdurations,wcpower))
|
||||
else:
|
||||
p1wc = None
|
||||
|
||||
# fitting the data to three parameter CP model
|
||||
|
||||
|
||||
|
||||
p1 = p0
|
||||
if len(thesecs)>=4:
|
||||
@@ -1184,6 +1197,21 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower,
|
||||
fitt = pd.Series(10**(4*np.arange(100)/100.))
|
||||
|
||||
fitpower = fitfunc(p1,fitt)
|
||||
if p1wc is not None:
|
||||
fitpowerwc = 0.95*fitfunc(p1wc,fitt)
|
||||
fitpowerexcellent = 0.7*fitfunc(p1wc,fitt)
|
||||
fitpowergood = 0.6*fitfunc(p1wc,fitt)
|
||||
fitpowerfair = 0.5*fitfunc(p1wc,fitt)
|
||||
fitpoweraverage = 0.4*fitfunc(p1wc,fitt)
|
||||
|
||||
else:
|
||||
fitpowerwc = 0*fitpower
|
||||
fitpowerexcellent = 0*fitpower
|
||||
fitpowergood = 0*fitpower
|
||||
fitpowerfair = 0*fitpower
|
||||
fitpoweraverage = 0*fitpower
|
||||
|
||||
|
||||
|
||||
message = ""
|
||||
if len(fitpower[fitpower<0]) > 0:
|
||||
@@ -1203,6 +1231,11 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower,
|
||||
),
|
||||
spm = 0*fitpower,
|
||||
power = fitpower,
|
||||
fitpowerwc = fitpowerwc,
|
||||
fitpowerexcellent = fitpowerexcellent,
|
||||
fitpowergood = fitpowergood,
|
||||
fitpowerfair = fitpowerfair,
|
||||
fitpoweraverage = fitpoweraverage,
|
||||
fpace = nicepaceformat(fitp2),
|
||||
)
|
||||
)
|
||||
@@ -1281,6 +1314,25 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower,
|
||||
plot.line('duration','power',source=sourcepaul,legend="Paul's Law")
|
||||
plot.line('duration','power',source=sourcecomplex,legend="CP Model",
|
||||
color='green')
|
||||
plot.line('duration','fitpowerwc',source=sourcecomplex,
|
||||
legend="World Class",
|
||||
color='Maroon',line_dash='dotted')
|
||||
|
||||
plot.line('duration','fitpowerexcellent',source=sourcecomplex,
|
||||
legend="Excellent",
|
||||
color='Purple',line_dash='dotted')
|
||||
|
||||
plot.line('duration','fitpowergood',source=sourcecomplex,
|
||||
legend="Good",
|
||||
color='Olive',line_dash='dotted')
|
||||
|
||||
plot.line('duration','fitpowerfair',source=sourcecomplex,
|
||||
legend="Fair",
|
||||
color='Gray',line_dash='dotted')
|
||||
|
||||
plot.line('duration','fitpoweraverage',source=sourcecomplex,
|
||||
legend="Average",
|
||||
color='SkyBlue',line_dash='dotted')
|
||||
|
||||
|
||||
script, div = components(plot)
|
||||
|
||||
Reference in New Issue
Block a user