From 1253e00186ab87d474f785f7cb011e9fd1b48f96 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 24 Nov 2020 20:18:13 +0100 Subject: [PATCH 1/2] separate summing --- rowers/interactiveplots.py | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 05be7fe0..6596b96d 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1594,20 +1594,29 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time())) testpower.append(powertest) + fatigues.append(np.nan) + fitnesses.append(np.nan) - # create Fitness and Fatigue number - fatigue = 0 - fitness = 0 - previousworkouts = Workout.objects.filter(user=user.rower,date__lte=w.date, + + allworkouts = Workout.objects.filter(user=user.rower,date__lte=enddate, + date__gte=startdate) + for w in allworkouts: + # create Fitness and Fatigue number + fatigue = 0 + fitness = 0 + + previousworkouts = Workout.objects.filter(user=user.rower,date__lte=w.date, date__gte=startdate) - for ww in previousworkouts: - delta = (w.date-ww.date).days - weight = getattr(ww,metricchoice) - fatigue += weight*math.exp(-delta/kfatigue) - fitness += weight*math.exp(-delta/kfitness) + for ww in previousworkouts: + delta = (w.date-ww.date).days + weight = getattr(ww,metricchoice) + fatigue += weight*math.exp(-delta/kfatigue) + fitness += weight*math.exp(-delta/kfitness) - fatigues.append(fatigue) - fitnesses.append(fitness) + fatigues.append(fatigue) + fitnesses.append(fitness) + testpower.append(np.nan) + dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time())) @@ -1624,6 +1633,11 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, df.sort_values(['date'],inplace=True) + df = df.fillna(0) + + + df = df.groupby(['date']).sum() + df['date'] = df.index.values #df = df.fillna(0) df['testdup'] = df['testpower'].shift(1) From 3989c1a75f81658afcfa4c0c4a85356e9b30ad86 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 24 Nov 2020 20:31:30 +0100 Subject: [PATCH 2/2] fix --- rowers/interactiveplots.py | 22 +++++++++++++--------- rowers/views/analysisviews.py | 6 ++++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 6596b96d..1c315fd9 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1599,14 +1599,17 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, allworkouts = Workout.objects.filter(user=user.rower,date__lte=enddate, - date__gte=startdate) + date__gte=startdate, + duplicate=False, + ) for w in allworkouts: # create Fitness and Fatigue number fatigue = 0 fitness = 0 previousworkouts = Workout.objects.filter(user=user.rower,date__lte=w.date, - date__gte=startdate) + date__gte=startdate, + duplicate=False) for ww in previousworkouts: delta = (w.date-ww.date).days weight = getattr(ww,metricchoice) @@ -1616,7 +1619,10 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, fatigues.append(fatigue) fitnesses.append(fitness) testpower.append(np.nan) - dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time())) + dates.append( + datetime.datetime.combine( + w.date,datetime.datetime.min.time()) + ) @@ -1632,21 +1638,19 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, df['form'] = df['fitness']-df['fatigue'] + df.sort_values(['date'],inplace=True) - df = df.fillna(0) - df = df.groupby(['date']).sum() + df = df.groupby(['date']).max() df['date'] = df.index.values - #df = df.fillna(0) + df['testdup'] = df['testpower'].shift(1) df['testpower'] = df.apply(lambda x: np.nan if abs(x['testpower'] - x['testdup']) < 4 \ else x['testpower'],axis=1) - #df = df.fillna(-100) - - #print(df) + source = ColumnDataSource( data = dict( diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 6537fdc9..fa1f3dc3 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -1581,10 +1581,12 @@ def fitness_from_cp_view(request,userid=0,mode='rower', workouts = Workout.objects.filter(user=therower,date__gte=startdate, date__lte=enddate, - workouttype__in=mytypes.otwtypes) + workouttype__in=mytypes.otwtypes, + duplicate=False) if mode == 'rower': workouts = Workout.objects.filter(user=therower,date__gte=startdate, - date__lte=enddate,workouttype__in=mytypes.otetypes) + date__lte=enddate,workouttype__in=mytypes.otetypes, + duplicate=False)