Merge branch 'release/v2.41'
This commit is contained in:
@@ -35,6 +35,24 @@ database_url = 'mysql://{user}:{password}@{host}:{port}/{database_name}'.format(
|
||||
|
||||
database_url_debug = 'sqlite:///'+database_name
|
||||
|
||||
# mapping the DB column names to the CSV file column names
|
||||
columndict = {
|
||||
'time':'TimeStamp (sec)',
|
||||
'hr':' HRCur (bpm)',
|
||||
'pace':' Stroke500mPace (sec/500m)',
|
||||
'spm':' Cadence (stokes/min)',
|
||||
'power':' Power (watts)',
|
||||
'averageforce':' AverageDriveForce (lbs)',
|
||||
'drivelength':' DriveLength (meters)',
|
||||
'peakforce':' PeakDriveForce (lbs)',
|
||||
'distance':' Horizontal (meters)',
|
||||
'catch':'catch',
|
||||
'finish':'finish',
|
||||
'peakforceangle':'peakforceangle',
|
||||
'wash':'wash',
|
||||
'slip':'wash',
|
||||
'workoutstate':' WorkoutState',
|
||||
}
|
||||
|
||||
from scipy.signal import savgol_filter
|
||||
|
||||
@@ -563,6 +581,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
cumdist = rowdatadf.ix[:,'cum_dist']
|
||||
|
||||
power = rowdatadf.ix[:,' Power (watts)']
|
||||
|
||||
averageforce = rowdatadf.ix[:,' AverageDriveForce (lbs)']
|
||||
drivelength = rowdatadf.ix[:,' DriveLength (meters)']
|
||||
try:
|
||||
@@ -580,7 +599,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
if windowsize <= 3:
|
||||
windowsize = 5
|
||||
|
||||
if windowsize > 3:
|
||||
if windowsize > 3 and windowsize<len(hr):
|
||||
spm = savgol_filter(spm,windowsize,3)
|
||||
hr = savgol_filter(hr,windowsize,3)
|
||||
drivelength = savgol_filter(drivelength,windowsize,3)
|
||||
|
||||
@@ -2103,13 +2103,11 @@ def interactive_otw_advanced_pace_chart(id=0,promember=0):
|
||||
|
||||
plot.line('time','pace',source=source,legend="Pace",color="black")
|
||||
plot.line('time','nowindpace',source=source,legend="Corrected Pace",color="red")
|
||||
plot.line('time','ergpace',source=source,legend="Equivalent Erg Pace",color="blue")
|
||||
|
||||
hover.tooltips = OrderedDict([
|
||||
('Time','@ftime'),
|
||||
('Pace','@fpace'),
|
||||
('Corrected Pace','@fnowindpace'),
|
||||
('Equiv. Erg Pace','@fergpace'),
|
||||
('HR','@hr{int}'),
|
||||
('SPM','@spm{1.1}'),
|
||||
])
|
||||
|
||||
+4
-3
@@ -164,15 +164,16 @@ def handle_otwsetpower(f1,boattype,weightvalue,
|
||||
powermeasured = False
|
||||
try:
|
||||
w = rowdata.df['wash']
|
||||
powermeasured = True
|
||||
if w.mean() != 0:
|
||||
powermeasured = True
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
rowdata.otw_setpower_silent(skiprows=5,mc=weightvalue,rg=rg,
|
||||
powermeasured=powermeasured)
|
||||
|
||||
# save data
|
||||
rowdata.write_csv(f1)
|
||||
rowdata.write_csv(f1,gzip=True)
|
||||
update_strokedata(workoutid,rowdata.df,debug=debug)
|
||||
|
||||
# send email
|
||||
|
||||
+3
-1
@@ -217,7 +217,7 @@ def uploadactivity(access_token,filename,description='',
|
||||
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json',
|
||||
'Authorization': 'Bearer %s' % access_token
|
||||
}
|
||||
@@ -247,6 +247,8 @@ def uploadactivity(access_token,filename,description='',
|
||||
print ""
|
||||
return 0,resp.reason,resp.status_code,headers
|
||||
else:
|
||||
print headers
|
||||
print json.dumps(headers)
|
||||
return resp.json()[0]["Id"],"ok",200,""
|
||||
|
||||
return 0
|
||||
|
||||
+23
-23
@@ -489,30 +489,30 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
|
||||
# auto smoothing
|
||||
pace = df[' Stroke500mPace (sec/500m)'].values
|
||||
velo = 500./pace
|
||||
# # auto smoothing
|
||||
# pace = df[' Stroke500mPace (sec/500m)'].values
|
||||
# velo = 500./pace
|
||||
|
||||
f = df['TimeStamp (sec)'].diff().mean()
|
||||
windowsize = 2*(int(10./(f)))+1
|
||||
if windowsize <= 3:
|
||||
windowsize = 5
|
||||
# f = df['TimeStamp (sec)'].diff().mean()
|
||||
# windowsize = 2*(int(10./(f)))+1
|
||||
# if windowsize <= 3:
|
||||
# windowsize = 5
|
||||
|
||||
df['originalvelo'] = velo
|
||||
# df['originalvelo'] = velo
|
||||
|
||||
if windowsize > 3 and windowsize < len(velo):
|
||||
velo2 = savgol_filter(velo,windowsize,3)
|
||||
else:
|
||||
velo2=velo
|
||||
# if windowsize > 3 and windowsize < len(velo):
|
||||
# velo2 = savgol_filter(velo,windowsize,3)
|
||||
# else:
|
||||
# velo2=velo
|
||||
|
||||
velo3 = pd.Series(velo2)
|
||||
velo3 = velo3.replace([-np.inf,np.inf],np.nan)
|
||||
velo3 = velo3.fillna(method='ffill')
|
||||
# velo3 = pd.Series(velo2)
|
||||
# velo3 = velo3.replace([-np.inf,np.inf],np.nan)
|
||||
# velo3 = velo3.fillna(method='ffill')
|
||||
|
||||
pace2 = 500./abs(velo3)
|
||||
df[' Stroke500mPace (sec/500m)'] = pace2
|
||||
# pace2 = 500./abs(velo3)
|
||||
# df[' Stroke500mPace (sec/500m)'] = pace2
|
||||
|
||||
df = df.fillna(0)
|
||||
# df = df.fillna(0)
|
||||
|
||||
# end autosmoothing
|
||||
|
||||
@@ -681,9 +681,9 @@ def add_workout_from_runkeeperdata(user,importid,data):
|
||||
dt = np.diff(cum_time).mean()
|
||||
wsize = round(5./dt)
|
||||
|
||||
velo2 = stravastuff.ewmovingaverage(velo,wsize)
|
||||
# velo2 = stravastuff.ewmovingaverage(velo,wsize)
|
||||
|
||||
df[' Stroke500mPace (sec/500m)'] = 500./velo2
|
||||
# df[' Stroke500mPace (sec/500m)'] = 500./velo2
|
||||
|
||||
|
||||
df = df.fillna(0)
|
||||
@@ -1015,9 +1015,9 @@ def add_workout_from_underarmourdata(user,importid,data):
|
||||
dt = np.diff(cum_time).mean()
|
||||
wsize = round(5./dt)
|
||||
|
||||
velo2 = stravastuff.ewmovingaverage(velo,wsize)
|
||||
# velo2 = stravastuff.ewmovingaverage(velo,wsize)
|
||||
|
||||
df[' Stroke500mPace (sec/500m)'] = 500./velo2
|
||||
# df[' Stroke500mPace (sec/500m)'] = 500./velo2
|
||||
|
||||
|
||||
df = df.fillna(0)
|
||||
@@ -3830,7 +3830,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
if settings.DEBUG:
|
||||
res = handle_otwsetpower.delay(f1,boattype,weightvalue,
|
||||
first_name,last_name,emailaddress,id)
|
||||
first_name,last_name,emailaddress,id,debug=True)
|
||||
else:
|
||||
res = queuelow.enqueue(handle_otwsetpower,f1,boattype,
|
||||
weightvalue,
|
||||
|
||||
Binary file not shown.
@@ -233,7 +233,8 @@ SPORTTRACKS_REDIRECT_URI = "http://rowsandall.com/sporttracks_callback"
|
||||
|
||||
RUNKEEPER_CLIENT_ID = CFG['runkeeper_client_id']
|
||||
RUNKEEPER_CLIENT_SECRET = CFG['runkeeper_client_secret']
|
||||
RUNKEEPER_REDIRECT_URI = "http://rowsandall.com/runkeeper_callback"
|
||||
RUNKEEPER_REDIRECT_URI = CFG['runkeeper_callback']
|
||||
|
||||
|
||||
# Under Armour
|
||||
|
||||
|
||||
Reference in New Issue
Block a user