Private
Public Access
1
0

further cleaning up

This commit is contained in:
Sander Roosendaal
2021-04-16 19:32:06 +02:00
parent 8f81c5fc92
commit 6331b4ff4a
5 changed files with 26 additions and 153 deletions

View File

@@ -997,44 +997,6 @@ def updatecpdata_sql(rower_id,delta,cp,table='cpdata',distance=[]):
conn.close()
engine.dispose()
def runcpupdate(
rower,type='water',
startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now()+datetime.timedelta(days=5)
):
if type == 'water':
theworkouts = Workout.objects.filter(
user=rower,rankingpiece=True,
workouttype='water',
startdatetime__gte=startdate,
startdatetime__lte=enddate
)
table = 'cpdata'
else:
theworkouts = Workout.objects.filter(
user=rower,rankingpiece=True,
workouttype__in=[
'rower',
'dynamic',
'slides'
],
startdatetime__gte=startdate,
startdatetime__lte=enddate
)
table = 'cpergdata'
theids = [w.id for w in theworkouts]
job = myqueue(
queuelow,
handle_updatecp,
rower.id,
theids,
table=table)
return job
def fetchcperg(rower,theworkouts):
theids = [int(w.id) for w in theworkouts]
thefilenames = [w.csvfilename for w in theworkouts]

View File

@@ -4577,18 +4577,18 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
# test if we have drive energy
nowork = 1
try:
try: # pragma: no cover
test = datadf['driveenergy'].mean()
nowork = 0
except KeyError:
except KeyError: # pragma: no cover
datadf['driveenergy'] = 500.
# test if we have power
nopower = 1
try:
try: # pragma: no cover
test = datadf['power'].mean()
nopower = 0
except KeyError:
except KeyError: # pragma: no cover
datadf['power'] = 50.

View File

@@ -2182,85 +2182,6 @@ def handle_updateergcp(rower_id,workoutfilenames,debug=False,**kwargs):
return 1
def cp_from_workoutids(workoutids,debug=False):
columns = ['power','workoutid','time']
df = getsmallrowdata_db(columns,ids=workoutids,debug=debug)
df.dropna(inplace=True,axis=0)
if df.empty: # pragma: no cover
# change this
return 0,0,0
# df is not empty. We continue
dfgrouped = df.groupby(['workoutid'])
maxt = 1.05*df['time'].max()/1000.
logarr = datautils.getlogarr(maxt)
data = []
for id in workoutids:
cpfile = 'media/cpdata_{id}.parquet.gz'.format(id=id)
try:
df = pd.read_parquet(cpfile)
df['workout'] = str(id)
data.append(df)
except: # pragma: no cover
pass # ignore for now
if len(data) == 0: # pragma: no cover
return 0,0,0
if len(data)>1: # pragma: no cover
df = pd.concat(data,axis=0)
df = df[df['cp'] == df.groupby(['delta'])['cp'].transform('max')]
df = df.sort_values(['delta']).reset_index()
powerdf = pd.DataFrame({
'Delta':df['delta'],
'CP':df['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)
p1,fitt,fitpower,ratio = datautils.cpfit(powerdf)
# This is code duplication from datautils -- correct asap
fitfunc = lambda pars,x: abs(pars[0])/(1+(x/abs(pars[2]))) + abs(pars[1])/(1+(x/abs(pars[3])))
powerfourmin = fitfunc(p1,240.)
powerhour = fitfunc(p1,3600.)
# 2k power
velofourmin = (powerfourmin/2.8)**(1./3.)
dfourmin = 240.*velofourmin
dratio = 2000./dfourmin
pacefourmin = 500./velofourmin
# assume 5 sec per doubling drop
pace2k = pacefourmin + 5.*np.log10(dratio)/np.log10(2.)
velo2k = 500./pace2k
t2k = 2000./velo2k
pwr2k = fitfunc(p1,t2k)
velo2 = (pwr2k/2.8)**(1./3.)
if np.isnan(velo2) or velo2 <= 0: # pragma: no cover
velo2 = 1.0
t2 = 2000./velo2
pwr2k = fitfunc(p1,t2)
velo3 = (pwr2k/2.8)**(1./3.)
t3 = 2000./velo3
power2k = fitfunc(p1,t3)
return powerfourmin,power2k,powerhour
@app.task
@@ -2834,7 +2755,7 @@ def handle_setcp(strokesdf,filename,workoutid,debug=False,**kwargs):
return 0
try:
powermean = strokesdf['power'].mean()
except KeyError:
except KeyError: # pragma: no cover
powermean = 0
@@ -3302,7 +3223,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
'resolution': 'medium',}
url = "https://www.strava.com/api/v3/activities/"+str(stravaid)
response = requests.get(url,headers=headers)
if response.status_code != 200:
if response.status_code != 200: # pragma: no cover
tstamp = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', tstamp)
with open('strava_webhooks.log','a') as f:
@@ -3329,7 +3250,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
startdatetime = workoutsummary['start_date']
except KeyError:
except KeyError: # pragma: no cover
startdatetime = timezone.now()
spm = get_strava_stream(None,'cadence',stravaid,authorizationstring=authorizationstring)
@@ -3352,7 +3273,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
if t is not None:
nr_rows = len(t)
else:
else: # pragma: no cover
try:
duration = int(workoutsummary['elapsed_time'])
except KeyError:
@@ -3362,22 +3283,22 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
nr_rows = len(t)
if nr_rows == 0:
if nr_rows == 0: # pragma: no cover
return 0
if d is None:
if d is None: # pragma: no cover
d = 0*t
if spm is None:
if spm is None: # pragma: no cover
spm = np.zeros(nr_rows)
if power is None:
if power is None: # pragma: no cover
power = np.zeros(nr_rows)
if hr is None:
if hr is None: # pragma: no cover
hr = np.zeros(nr_rows)
if velo is None:
if velo is None: # pragma: no cover
velo = np.zeros(nr_rows)
dt = np.diff(t).mean()
@@ -3389,10 +3310,10 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
lat = coords[:,0]
lon = coords[:,1]
except IndexError:
except IndexError: # pragma: no cover
lat = np.zeros(len(t))
lon = np.zeros(len(t))
else:
else: # pragma: no cover
lat = np.zeros(len(t))
lon = np.zeros(len(t))
@@ -3419,13 +3340,13 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
workouttype = mytypes.stravamappinginv[workoutsummary['type']]
except KeyError:
except KeyError: # pragma: no cover
workouttype = 'other'
if workouttype.lower() == 'rowing':
if workouttype.lower() == 'rowing': # pragma: no cover
workouttype = 'rower'
if 'summary_polyline' in workoutsummary['map'] and workouttype=='rower':
if 'summary_polyline' in workoutsummary['map'] and workouttype=='rower': # pragma: no cover
workouttype = 'water'
try:
@@ -3442,7 +3363,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
rowdatetime = iso8601.parse_date(workoutsummary['date_utc'])
except KeyError:
rowdatetime = iso8601.parse_date(workoutsummary['start_date'])
except ParseError:
except ParseError: # pragma: no cover
rowdatetime = iso8601.parse_date(workoutsummary['date'])
@@ -3454,7 +3375,7 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
title = workoutsummary['name']
except KeyError:
except KeyError: # pragma: no cover
title = ""
try:
t = data['comments'].split('\n', 1)[0]
@@ -3476,9 +3397,9 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
latcoord = strokedata.loc[:,'lat']
loncoord = strokedata.loc[:,'lon']
if latcoord.std() == 0 and loncoord.std() == 0 and workouttype == 'water':
if latcoord.std() == 0 and loncoord.std() == 0 and workouttype == 'water': # pragma: no cover
workouttype = 'rower'
except:
except: # pragma: no cover
latcoord = np.zeros(nr_rows)
loncoord = np.zeros(nr_rows)
if workouttype == 'water':
@@ -3488,19 +3409,19 @@ def fetch_strava_workout(stravatoken,oauth_data,stravaid,csvfilename,userid,debu
try:
strokelength = strokedata.loc[:,'strokelength']
except:
except: # pragma: no cover
strokelength = np.zeros(nr_rows)
dist2 = 0.1*strokedata.loc[:,'d']
try:
spm = strokedata.loc[:,'spm']
except KeyError:
except KeyError: # pragma: no cover
spm = 0*dist2
try:
hr = strokedata.loc[:,'hr']
except KeyError:
except KeyError: # pragma: no cover
hr = 0*spm
pace = strokedata.loc[:,'p']/10.
pace = np.clip(pace,0,1e4)

View File

@@ -517,13 +517,6 @@ class AsyncTaskTests(TestCase):
res = tasks.handle_updateergcp(1,[f1])
self.assertEqual(res,1)
@patch('rowers.dataprepnodjango.getsmallrowdata_db')
def test_cp_from_workoutids(self,mocked_getsmallrowdata_db):
ids = [1]
powerfourmin,power2k,powerhour = tasks.cp_from_workoutids(ids)
self.assertFalse(powerfourmin==0)
self.assertFalse(power2k==0)
self.assertFalse(powerhour==0)
@patch('rowers.dataprepnodjango.getsmallrowdata_db')
def test_handle_updatecp(self,mocked_getsmallrowdata_db):

View File

@@ -4415,9 +4415,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
successmessage = "Changes saved"
if rankingpiece: # pragma: no cover
dataprep.runcpupdate(row.user,type=row.workouttype)
messages.info(request,successmessage)
else:
form = WorkoutForm(instance=row)