Added adaptation of p values on breakthrough workouts
This commit is contained in:
@@ -430,6 +430,7 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower',
|
||||
delta,cpvalues,avgpower = datautils.getsinglecp(row.df)
|
||||
if utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3):
|
||||
isbreakthrough = True
|
||||
res = datautils.updatecp(delta,cpvalues,r)
|
||||
|
||||
dtavg = row.df['TimeStamp (sec)'].diff().mean()
|
||||
|
||||
|
||||
@@ -3,6 +3,35 @@ import numpy as np
|
||||
from scipy.interpolate import griddata
|
||||
from scipy import optimize
|
||||
|
||||
def updatecp(delta,cpvalues,r):
|
||||
cp2 = r.p0/(1+delta/r.p2)
|
||||
cp2 += r.p1/(1+delta/r.p3)
|
||||
|
||||
delta = delta.append(delta)
|
||||
cp = cpvalues.append(cp2)
|
||||
|
||||
powerdf = pd.DataFrame({
|
||||
'Delta':delta,
|
||||
'CP':cp,
|
||||
})
|
||||
|
||||
powerdf.dropna(axis=0,inplace=True)
|
||||
powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True)
|
||||
powerdf.drop_duplicates(subset='Delta',keep='first',inplace=True)
|
||||
|
||||
|
||||
res = cpfit(powerdf)
|
||||
p1 = res[0]
|
||||
|
||||
r.p0 = p1[0]
|
||||
r.p1 = p1[1]
|
||||
r.p2 = p1[2]
|
||||
r.p3 = p1[3]
|
||||
|
||||
r.save()
|
||||
|
||||
return 1
|
||||
|
||||
def cpfit(powerdf):
|
||||
# Fit the data to thee parameter CP model
|
||||
fitfunc = lambda pars,x: abs(pars[0])/(1+(x/abs(pars[2]))) + abs(pars[1])/(1+(x/abs(pars[3])))
|
||||
|
||||
Reference in New Issue
Block a user