better selecting
This commit is contained in:
@@ -1508,6 +1508,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
workouts = Workout.objects.filter(
|
workouts = Workout.objects.filter(
|
||||||
date__gte=firstdate,
|
date__gte=firstdate,
|
||||||
workouttype__in=otwtypes,
|
workouttype__in=otwtypes,
|
||||||
|
user = w.user,
|
||||||
)
|
)
|
||||||
|
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
||||||
@@ -1541,6 +1542,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
workouts = Workout.objects.filter(
|
workouts = Workout.objects.filter(
|
||||||
date__gte=firstdate,
|
date__gte=firstdate,
|
||||||
workouttype__in=otetypes,
|
workouttype__in=otetypes,
|
||||||
|
user = w.user,
|
||||||
)
|
)
|
||||||
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
||||||
powerdf = pd.DataFrame({
|
powerdf = pd.DataFrame({
|
||||||
@@ -2501,8 +2503,65 @@ def read_cols_df_sql_old(ids, columns, convertnewtons=True):
|
|||||||
engine.dispose()
|
engine.dispose()
|
||||||
return df,extracols
|
return df,extracols
|
||||||
|
|
||||||
# Read stroke data from the DB for a Workout ID. Returns a pandas dataframe
|
def initiate_cp(r):
|
||||||
|
firstdate = datetime.date.today()-datetime.timedelta(days=r.cprange)
|
||||||
|
workouts = Workout.objects.filter(
|
||||||
|
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
|
||||||
def read_df_sql(id):
|
def read_df_sql(id):
|
||||||
try:
|
try:
|
||||||
f = 'media/strokedata_{id}.parquet.gz'.format(id=id)
|
f = 'media/strokedata_{id}.parquet.gz'.format(id=id)
|
||||||
|
|||||||
@@ -2882,7 +2882,7 @@ def interactive_agegroupcpchart(age,normalized=False):
|
|||||||
|
|
||||||
|
|
||||||
def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||||
title=''):
|
title='',type='water'):
|
||||||
powerdf = powerdf[~(powerdf == 0).any(axis=1)]
|
powerdf = powerdf[~(powerdf == 0).any(axis=1)]
|
||||||
# plot tools
|
# plot tools
|
||||||
if (promember==1):
|
if (promember==1):
|
||||||
@@ -2910,8 +2910,12 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
|||||||
|
|
||||||
p1,fitt,fitpower,ratio = datautils.cpfit(powerdf)
|
p1,fitt,fitpower,ratio = datautils.cpfit(powerdf)
|
||||||
if cpfit == 'automatic' and r is not None:
|
if cpfit == 'automatic' and r is not None:
|
||||||
p1 = [r.p0,r.p1,r.p2,r.p3]
|
if type == 'water':
|
||||||
ratio = r.cpratio
|
p1 = [r.p0,r.p1,r.p2,r.p3]
|
||||||
|
ratio = r.cpratio
|
||||||
|
else:
|
||||||
|
p1 = [r.ep0,r.ep1,r.ep2,r.ep3]
|
||||||
|
ratio = r.ecpratio
|
||||||
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])))
|
||||||
fitpower = fitfunc(p1,fitt)
|
fitpower = fitfunc(p1,fitt)
|
||||||
|
|
||||||
|
|||||||
@@ -547,8 +547,11 @@ def cpdata(workouts, options):
|
|||||||
d1 = datefirst,
|
d1 = datefirst,
|
||||||
d2 = datelast,
|
d2 = datelast,
|
||||||
)
|
)
|
||||||
|
wtype = 'water'
|
||||||
|
if workouts[0].workouttype in otetypes:
|
||||||
|
wtype = 'erg'
|
||||||
res = interactive_otwcpchart(powerdf,promember=True,rowername=rowername,r=r,
|
res = interactive_otwcpchart(powerdf,promember=True,rowername=rowername,r=r,
|
||||||
cpfit=cpfit,title=title)
|
cpfit=cpfit,title=title,type=wtype)
|
||||||
script = res[0]
|
script = res[0]
|
||||||
div = res[1]
|
div = res[1]
|
||||||
p1 = res[2]
|
p1 = res[2]
|
||||||
|
|||||||
Reference in New Issue
Block a user