From b7487f1f77c4e5f8497b4cd5d324cfcb63885f6a Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 16 Jun 2017 08:04:06 +0200 Subject: [PATCH] some optimizations --- rowers/dataprep.py | 74 +++++++++++++++++++--------------- rowers/views.py | 6 +-- rowsandall_app/settings.py | 2 - rowsandall_app/settings_dev.py | 4 ++ 4 files changed, 48 insertions(+), 38 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 5e9c6022..ae86fca3 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -179,16 +179,16 @@ def getcp(dfgrouped,logarr): ww = group['power'].copy() tmax = tt.max() - newlen = int(tmax/2000.) - print newlen,len(ww) - newt = np.arange(newlen)*tmax/float(newlen) - neww = griddata(tt.values, - ww.values, - newt,method='linear', - rescale=True) + newlen = int(tmax/5000.) + if newlen < len(tt): + newt = np.arange(newlen)*tmax/float(newlen) + ww = griddata(tt.values, + ww.values, + newt,method='linear', + rescale=True) - #tt = pd.Series(newt) - #ww = pd.Series(neww) + tt = pd.Series(newt) + ww = pd.Series(ww) try: avgpower[id] = int(ww.mean()) @@ -198,41 +198,49 @@ def getcp(dfgrouped,logarr): length = len(ww) dt = [] cpw = [] - for i in range(length-2): - w_roll = ww.rolling(i+2).mean().dropna() - if len(w_roll): - # now goes with # data points - should be fixed seconds - indexmax = w_roll.idxmax(axis=1) - try: - t_0 = tt.ix[indexmax] - t_1 = tt.ix[indexmax-i] - deltat = 1.0e-3*(t_0-t_1) - wmax = w_roll.ix[indexmax] - if not np.isnan(deltat) and not np.isnan(wmax): - dt.append(deltat) - cpw.append(wmax) - except KeyError: - pass + for i in xrange(length-2): + deltat,wmax = getmaxwattinterval(tt,ww,i) + if not np.isnan(deltat) and not np.isnan(wmax): + dt.append(deltat) + cpw.append(wmax) + dt = pd.Series(dt) cpw = pd.Series(cpw) - + if len(dt): - cpvalues = griddata(dt.values, - cpw.values, - logarr,method='linear', - rescale=True) + cpvalues = griddata(dt.values, + cpw.values, + logarr,method='linear', + rescale=True) - for cpv in cpvalues: - cpvalue.append(cpv) - for d in logarr: - delta.append(d) + for cpv in cpvalues: + cpvalue.append(cpv) + for d in logarr: + delta.append(d) delta = pd.Series(delta,name='Delta') cpvalue = pd.Series(cpvalue,name='CP') return delta,cpvalue,avgpower +def getmaxwattinterval(tt,ww,i): + w_roll = ww.rolling(i+2).mean().dropna() + if len(w_roll): + # now goes with # data points - should be fixed seconds + indexmax = w_roll.idxmax(axis=1) + try: + t_0 = tt.ix[indexmax] + t_1 = tt.ix[indexmax-i] + deltat = 1.0e-3*(t_0-t_1) + wmax = w_roll.ix[indexmax] + except KeyError: + pass + else: + wmax = 0 + deltat = 0 + + return deltat,wmax def df_resample(datadf): # time stamps must be in seconds diff --git a/rowers/views.py b/rowers/views.py index c1a8a455..325a43b1 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -7409,7 +7409,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" iunits = [] itypes = [] iresults = [] - for i in range(nrintervals): + for i in xrange(nrintervals): try: t = datetime.datetime.strptime(request.POST['intervalt_%s' % i],"%H:%M:%S.%f") except ValueError: @@ -7462,7 +7462,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" iunits = [] itypes = [] iresults = [] - for i in range(nrintervals): + for i in xrange(nrintervals): t = cd['intervalt_%s' % i] timesecs = t.total_seconds() itime += [timesecs] @@ -7496,7 +7496,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" form = SummaryStringForm() initial = {} - for i in range(nrintervals): + for i in xrange(nrintervals): initial['intervald_%s' % i] = idist[i] initial['intervalt_%s' % i] = get_time(itime[i]) initial['type_%s' % i] = itype[i] diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 168952ac..2831f3ee 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -54,7 +54,6 @@ INSTALLED_APPS = [ 'django_rq', 'django_rq_dashboard', 'translation_manager', -# 'debug_toolbar', 'django_mailbox', 'rest_framework', 'rest_framework_swagger', @@ -90,7 +89,6 @@ MIDDLEWARE_CLASSES = [ 'django.contrib.messages.middleware.MessageMiddleware', 'async_messages.middleware.AsyncMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', -# 'debug_toolbar.middleware.DebugToolbarMiddleware', ] ROOT_URLCONF = 'rowsandall_app.urls' diff --git a/rowsandall_app/settings_dev.py b/rowsandall_app/settings_dev.py index 82d0dffe..69cbd074 100644 --- a/rowsandall_app/settings_dev.py +++ b/rowsandall_app/settings_dev.py @@ -50,6 +50,10 @@ TEMPLATES[0]['OPTIONS']['debug'] = DEBUG ALLOWED_HOSTS = ['localhost'] +INSTALLED_APPS += ['debug_toolbar',] + +MIDDLEWARE_CLASSES += ['debug_toolbar.middleware.DebugToolbarMiddleware',] + CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',