Private
Public Access
1
0

Added adaptation of p values on breakthrough workouts

This commit is contained in:
Sander Roosendaal
2017-06-18 14:09:20 +02:00
parent a73ea9d0be
commit b4c69c3df1
2 changed files with 30 additions and 0 deletions

View File

@@ -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()

View File

@@ -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])))