From 9721aa6a9cb0ebd14839eeb434a02f0abed4e42f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 7 Dec 2017 09:19:36 +0100 Subject: [PATCH] TRIMP working --- rowers/metrics.py | 15 +++++++++++++++ rowers/views.py | 12 ++++++++++++ 2 files changed, 27 insertions(+) diff --git a/rowers/metrics.py b/rowers/metrics.py index 9c1fcfa0..bf1e790b 100644 --- a/rowers/metrics.py +++ b/rowers/metrics.py @@ -1,4 +1,5 @@ from utils import lbstoN +import numpy as np rowingmetrics = ( ('time',{ @@ -301,3 +302,17 @@ dropping to 8m for race pace in the single.""", This value should be fairly constant across all stroke rates.""", }, ) + +def calc_trimp(df,sex,hrmax,hrmin): + if sex == 'male': + f = 1.92 + else: + f = 1.67 + + dt = df['time'].diff()/6.e4 + + hrr = (df['hr']-hrmin)/(hrmax-hrmin) + trimpdata = dt*hrr*0.64*np.exp(f*hrr) + trimp = trimpdata.sum() + + return trimp diff --git a/rowers/views.py b/rowers/views.py index 87708063..8903a9d6 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -59,6 +59,7 @@ from rowers.models import ( ) from rowers.models import FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement from rowers.metrics import rowingmetrics,defaultfavoritecharts +from rowers import metrics import rowers.uploads as uploads from django.forms.formsets import formset_factory import StringIO @@ -6891,6 +6892,8 @@ def workout_stats_view(request,id=0,message="",successmessage=""): if datadf.empty: return HttpResponse("CSV data file not found") + + workoutstateswork = [1,4,5,8,9,6,7] workoutstatesrest = [3] workoutstatetransition = [0,2,10,11,12,13] @@ -6987,6 +6990,15 @@ def workout_stats_view(request,id=0,message="",successmessage=""): except ZeroDivisionError,ValueError: pass + # TRIMP + if datadf['hr'].mean() > 0 and r.sex != 'not specified': + trimp = metrics.calc_trimp(datadf,r.sex,r.max,r.rest) + trimp = int(trimp) + otherstats['trimp'] = { + 'verbose_name': 'TRIMP', + 'value': trimp, + 'unit': 'minutes' + } return render(request, 'workoutstats.html',