refactoring around CP charts
This commit is contained in:
@@ -1080,6 +1080,47 @@ def setcp(workout,background=False):
|
|||||||
|
|
||||||
return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(),pd.Series()
|
return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(),pd.Series()
|
||||||
|
|
||||||
|
def update_rolling_cp(r,types,mode='water'):
|
||||||
|
firstdate = datetime.date.today()-datetime.timedelta(days=r.cprange)
|
||||||
|
workouts = Workout.objects.filter(
|
||||||
|
date__gte=firstdate,
|
||||||
|
workouttype__in=types,
|
||||||
|
user = r
|
||||||
|
)
|
||||||
|
|
||||||
|
delta, cp, avgpower, workoutnames = fetchcp_new(r,workouts)
|
||||||
|
|
||||||
|
powerdf = pd.DataFrame({
|
||||||
|
'Delta':delta,
|
||||||
|
'CP':cp,
|
||||||
|
})
|
||||||
|
|
||||||
|
powerdf = powerdf[powerdf['CP']>0]
|
||||||
|
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)
|
||||||
|
|
||||||
|
res2 = datautils.cpfit(powerdf)
|
||||||
|
if len(powerdf) != 0:
|
||||||
|
if mode == 'water':
|
||||||
|
p1 = res2[0]
|
||||||
|
r.p0 = p1[0]
|
||||||
|
r.p1 = p1[1]
|
||||||
|
r.p2 = p1[2]
|
||||||
|
r.p3 = p1[3]
|
||||||
|
r.cpratio = res2[3]
|
||||||
|
r.save()
|
||||||
|
else:
|
||||||
|
p1 = res2[0]
|
||||||
|
r.ep0 = p1[0]
|
||||||
|
r.ep1 = p1[1]
|
||||||
|
r.ep2 = p1[2]
|
||||||
|
r.ep3 = p1[3]
|
||||||
|
r.ecpratio = res2[3]
|
||||||
|
r.save()
|
||||||
|
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def fetchcp(rower,theworkouts,table='cpdata'):
|
def fetchcp(rower,theworkouts,table='cpdata'):
|
||||||
# get all power data from database (plus workoutid)
|
# get all power data from database (plus workoutid)
|
||||||
@@ -1504,69 +1545,12 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
if workouttype in otwtypes:
|
if workouttype in otwtypes:
|
||||||
res, btvalues, res2 = utils.isbreakthrough(
|
res, btvalues, res2 = utils.isbreakthrough(
|
||||||
delta, cpvalues, r.p0, r.p1, r.p2, r.p3, r.cpratio)
|
delta, cpvalues, r.p0, r.p1, r.p2, r.p3, r.cpratio)
|
||||||
cprange = r.cprange
|
success = update_rolling_cp(r,otwtypes,'water')
|
||||||
firstdate = datetime.date.today()-datetime.timedelta(days=cprange)
|
|
||||||
|
|
||||||
workouts = Workout.objects.filter(
|
|
||||||
date__gte=firstdate,
|
|
||||||
workouttype__in=otwtypes,
|
|
||||||
user = w.user,
|
|
||||||
)
|
|
||||||
|
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
|
||||||
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
p1 = res2[0]
|
|
||||||
r.p0 = p1[0]
|
|
||||||
r.p1 = p1[1]
|
|
||||||
r.p2 = p1[2]
|
|
||||||
r.p3 = p1[3]
|
|
||||||
r.cpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
|
|
||||||
elif workouttype in otetypes:
|
elif workouttype in otetypes:
|
||||||
res, btvalues, res2 = utils.isbreakthrough(
|
res, btvalues, res2 = utils.isbreakthrough(
|
||||||
delta, cpvalues, r.ep0, r.ep1, r.ep2, r.ep3, r.ecpratio)
|
delta, cpvalues, r.ep0, r.ep1, r.ep2, r.ep3, r.ecpratio)
|
||||||
cprange = r.cprange
|
success = update_rolling_cp(r,otetypes,'erg')
|
||||||
firstdate = datetime.date.today()-datetime.timedelta(days=cprange)
|
|
||||||
workouts = Workout.objects.filter(
|
|
||||||
date__gte=firstdate,
|
|
||||||
workouttype__in=otetypes,
|
|
||||||
user = w.user,
|
|
||||||
)
|
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
res = datautils.cpfit(powerdf)
|
|
||||||
p1 = res2[0]
|
|
||||||
r.ep0 = p1[0]
|
|
||||||
r.ep1 = p1[1]
|
|
||||||
r.ep2 = p1[2]
|
|
||||||
r.ep3 = p1[3]
|
|
||||||
r.ecpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
else:
|
else:
|
||||||
res = 0
|
res = 0
|
||||||
res2 = 0
|
res2 = 0
|
||||||
@@ -2506,62 +2490,8 @@ def read_cols_df_sql_old(ids, columns, convertnewtons=True):
|
|||||||
return df,extracols
|
return df,extracols
|
||||||
|
|
||||||
def initiate_cp(r):
|
def initiate_cp(r):
|
||||||
firstdate = datetime.date.today()-datetime.timedelta(days=r.cprange)
|
success = update_rolling_cp(r,otwtypes,'water')
|
||||||
workouts = Workout.objects.filter(
|
success = update_rolling_cp(r,otetypes,'erg')
|
||||||
date__gte=firstdate,
|
|
||||||
workouttype__in = otwtypes,
|
|
||||||
user = r,
|
|
||||||
)
|
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
|
||||||
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
p1 = res2[0]
|
|
||||||
r.p0 = p1[0]
|
|
||||||
r.p1 = p1[1]
|
|
||||||
r.p2 = p1[2]
|
|
||||||
r.p3 = p1[3]
|
|
||||||
r.cpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
|
|
||||||
workouts = Workout.objects.filter(
|
|
||||||
date__gte = firstdate,
|
|
||||||
workouttype__in = otetypes,
|
|
||||||
user = r,
|
|
||||||
)
|
|
||||||
|
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
res = datautils.cpfit(powerdf)
|
|
||||||
p1 = res2[0]
|
|
||||||
r.ep0 = p1[0]
|
|
||||||
r.ep1 = p1[1]
|
|
||||||
r.ep2 = p1[2]
|
|
||||||
r.ep3 = p1[3]
|
|
||||||
r.ecpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
|
|
||||||
# Read stroke data from the DB for a Workout ID. Returns a pandas dataframe
|
# Read stroke data from the DB for a Workout ID. Returns a pandas dataframe
|
||||||
def read_df_sql(id):
|
def read_df_sql(id):
|
||||||
|
|||||||
@@ -566,60 +566,8 @@ def rower_prefs_view(request,userid=0,message=""):
|
|||||||
r.cprange = cprange
|
r.cprange = cprange
|
||||||
r.save()
|
r.save()
|
||||||
messages.info(request,'Updated CP range value')
|
messages.info(request,'Updated CP range value')
|
||||||
firstdate = datetime.date.today()-datetime.timedelta(days=cprange)
|
success = dataprep.update_rolling_cp(r,mytypes.otwtypes,'water')
|
||||||
workouts = Workout.objects.filter(
|
success = dataprep.update_rolling_cp(r,mytypes.otetypes,'erg')
|
||||||
date__gte=datetime.date.today()-datetime.timedelta(days=cprange),
|
|
||||||
workouttype__in=mytypes.otwtypes,
|
|
||||||
user = r,
|
|
||||||
)
|
|
||||||
dd,cpcp,avgpower,workoutnames = dataprep.fetchcp_new(r,workouts)
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
p1 = res2[0]
|
|
||||||
r.p0 = p1[0]
|
|
||||||
r.p1 = p1[1]
|
|
||||||
r.p2 = p1[2]
|
|
||||||
r.p3 = p1[3]
|
|
||||||
r.cpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
|
|
||||||
workouts = Workout.objects.filter(
|
|
||||||
date__gte=datetime.date.today()-datetime.timedelta(days=cprange),
|
|
||||||
workouttype__in=mytypes.otetypes,
|
|
||||||
user = r,
|
|
||||||
)
|
|
||||||
dd,cpcp,avgpower,workoutnames = dataprep.fetchcp_new(r,workouts)
|
|
||||||
powerdf = pd.DataFrame({
|
|
||||||
'Delta':dd,
|
|
||||||
'CP':cpcp,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
powerdf = powerdf[powerdf['CP']>0]
|
|
||||||
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)
|
|
||||||
|
|
||||||
res2 = datautils.cpfit(powerdf)
|
|
||||||
if len(powerdf) != 0:
|
|
||||||
p1 = res2[0]
|
|
||||||
r.ep0 = p1[0]
|
|
||||||
r.ep1 = p1[1]
|
|
||||||
r.ep2 = p1[2]
|
|
||||||
r.ep3 = p1[3]
|
|
||||||
r.ecpratio = res2[3]
|
|
||||||
r.save()
|
|
||||||
|
|
||||||
return render(request, 'rower_preferences.html',
|
return render(request, 'rower_preferences.html',
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user