further cleaning up
This commit is contained in:
123
rowers/tasks.py
123
rowers/tasks.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user