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)
|
delta,cpvalues,avgpower = datautils.getsinglecp(row.df)
|
||||||
if utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3):
|
if utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3):
|
||||||
isbreakthrough = True
|
isbreakthrough = True
|
||||||
|
res = datautils.updatecp(delta,cpvalues,r)
|
||||||
|
|
||||||
dtavg = row.df['TimeStamp (sec)'].diff().mean()
|
dtavg = row.df['TimeStamp (sec)'].diff().mean()
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,35 @@ import numpy as np
|
|||||||
from scipy.interpolate import griddata
|
from scipy.interpolate import griddata
|
||||||
from scipy import optimize
|
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):
|
def cpfit(powerdf):
|
||||||
# Fit the data to thee parameter CP model
|
# 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])))
|
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