corrected work per stroke error (wasn't calculated when it could)
This commit is contained in:
@@ -1090,6 +1090,7 @@ def read_cols_df_sql(ids,columns):
|
|||||||
# drop columns that are not in offical list
|
# drop columns that are not in offical list
|
||||||
# axx = [ax[0] for ax in axes]
|
# axx = [ax[0] for ax in axes]
|
||||||
axx = [f.name for f in StrokeData._meta.get_fields()]
|
axx = [f.name for f in StrokeData._meta.get_fields()]
|
||||||
|
|
||||||
for c in columns:
|
for c in columns:
|
||||||
if not c in axx:
|
if not c in axx:
|
||||||
columns.remove(c)
|
columns.remove(c)
|
||||||
@@ -1118,10 +1119,12 @@ def read_cols_df_sql(ids,columns):
|
|||||||
ids = tuple(ids),
|
ids = tuple(ids),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
connection = engine.raw_connection()
|
connection = engine.raw_connection()
|
||||||
df = pd.read_sql_query(query,engine)
|
df = pd.read_sql_query(query,engine)
|
||||||
df = df.fillna(value=0)
|
|
||||||
|
|
||||||
|
df = df.fillna(value=0)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
df['peakforce'] = df['peakforce']*lbstoN
|
df['peakforce'] = df['peakforce']*lbstoN
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -1425,7 +1428,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
try:
|
try:
|
||||||
driveenergy = rowdatadf.ix[:,'driveenergy']
|
driveenergy = rowdatadf.ix[:,'driveenergy']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
driveenergy = 0*power
|
driveenergy = power*60/spm
|
||||||
else:
|
else:
|
||||||
driveenergy = data['driveenergy']
|
driveenergy = data['driveenergy']
|
||||||
|
|
||||||
|
|||||||
@@ -683,32 +683,76 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
if empower:
|
if empower:
|
||||||
try:
|
try:
|
||||||
wash = rowdatadf.ix[:,'wash']
|
wash = rowdatadf.ix[:,'wash']
|
||||||
catch = rowdatadf.ix[:,'catch']
|
|
||||||
finish = rowdatadf.ix[:,'finish']
|
|
||||||
peakforceangle = rowdatadf.ix[:,'peakforceangle']
|
|
||||||
driveenergy = rowdatadf.ix[:,'driveenergy']
|
|
||||||
drivelength = driveenergy/(averageforce*4.44822)
|
|
||||||
slip = rowdatadf.ix[:,'slip']
|
|
||||||
if windowsize > 3:
|
|
||||||
wash = savgol_filter(wash,windowsize,3)
|
|
||||||
slip = savgol_filter(slip,windowsize,3)
|
|
||||||
catch = savgol_filter(catch,windowsize,3)
|
|
||||||
finish = savgol_filter(finish,windowsize,3)
|
|
||||||
peakforceangle = savgol_filter(peakforceangle,windowsize,3)
|
|
||||||
driveenergy = savgol_filter(driveenergy,windowsize,3)
|
|
||||||
drivelength = savgol_filter(drivelength,windowsize,3)
|
|
||||||
|
|
||||||
data['wash'] = wash
|
|
||||||
data['catch'] = catch
|
|
||||||
data['slip'] = slip
|
|
||||||
data['finish'] = finish
|
|
||||||
data['peakforceangle'] = peakforceangle
|
|
||||||
data['driveenergy'] = driveenergy
|
|
||||||
data['drivelength'] = drivelength
|
|
||||||
data['peakforce'] = peakforce
|
|
||||||
data['averageforce'] = averageforce
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
wash = 0*power
|
||||||
|
|
||||||
|
try:
|
||||||
|
catch = rowdatadf.ix[:,'catch']
|
||||||
|
except KeyError:
|
||||||
|
catch = 0*power
|
||||||
|
|
||||||
|
try:
|
||||||
|
finish = rowdatadf.ix[:,'finish']
|
||||||
|
except KeyError:
|
||||||
|
finish = 0*power
|
||||||
|
|
||||||
|
try:
|
||||||
|
peakforceangle = rowdatadf.ix[:,'peakforceangle']
|
||||||
|
except KeyError:
|
||||||
|
peakforceangle = 0*power
|
||||||
|
|
||||||
|
|
||||||
|
if data['driveenergy'].mean() == 0:
|
||||||
|
try:
|
||||||
|
driveenergy = rowdatadf.ix[:,'driveenergy']
|
||||||
|
except KeyError:
|
||||||
|
driveenergy = power*60/spm
|
||||||
|
else:
|
||||||
|
driveenergy = data['driveenergy']
|
||||||
|
|
||||||
|
|
||||||
|
arclength = (inboard-0.05)*(np.radians(finish)-np.radians(catch))
|
||||||
|
if arclength.mean()>0:
|
||||||
|
drivelength = arclength
|
||||||
|
elif drivelength.mean() == 0:
|
||||||
|
drivelength = driveenergy/(averageforce*4.44822)
|
||||||
|
|
||||||
|
try:
|
||||||
|
slip = rowdatadf.ix[:,'slip']
|
||||||
|
except KeyError:
|
||||||
|
slip = 0*power
|
||||||
|
|
||||||
|
totalangle = finish-catch
|
||||||
|
effectiveangle = finish-wash-catch-slip
|
||||||
|
if windowsize > 3 and windowsize<len(slip):
|
||||||
|
wash = savgol_filter(wash,windowsize,3)
|
||||||
|
slip = savgol_filter(slip,windowsize,3)
|
||||||
|
catch = savgol_filter(catch,windowsize,3)
|
||||||
|
finish = savgol_filter(finish,windowsize,3)
|
||||||
|
peakforceangle = savgol_filter(peakforceangle,windowsize,3)
|
||||||
|
driveenergy = savgol_filter(driveenergy,windowsize,3)
|
||||||
|
drivelength = savgol_filter(drivelength,windowsize,3)
|
||||||
|
totalangle = savgol_filter(totalangle,windowsize,3)
|
||||||
|
effectiveangle = savgol_filter(effectiveangle,windowsize,3)
|
||||||
|
|
||||||
|
velo = 500./p
|
||||||
|
|
||||||
|
ergpw = 2.8*velo**3
|
||||||
|
efficiency = 100.*ergpw/power
|
||||||
|
|
||||||
|
efficiency = efficiency.replace([-np.inf,np.inf],np.nan)
|
||||||
|
efficiency.fillna(method='ffill')
|
||||||
|
|
||||||
|
data['wash'] = wash
|
||||||
|
data['catch'] = catch
|
||||||
|
data['slip'] = slip
|
||||||
|
data['finish'] = finish
|
||||||
|
data['peakforceangle'] = peakforceangle
|
||||||
|
data['driveenergy'] = driveenergy
|
||||||
|
data['drivelength'] = drivelength
|
||||||
|
data['totalangle'] = totalangle
|
||||||
|
data['effectiveangle'] = effectiveangle
|
||||||
|
data['efficiency'] = efficiency
|
||||||
|
|
||||||
if otwpower:
|
if otwpower:
|
||||||
try:
|
try:
|
||||||
@@ -727,11 +771,6 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
ergpace[ergpace == np.inf] = 240.
|
ergpace[ergpace == np.inf] = 240.
|
||||||
ergpace2 = ergpace.apply(lambda x: timedeltaconv(x))
|
ergpace2 = ergpace.apply(lambda x: timedeltaconv(x))
|
||||||
|
|
||||||
velo = 500./p
|
|
||||||
|
|
||||||
ergpw = 2.8*velo**3
|
|
||||||
efficiency = 100.*ergpw/power
|
|
||||||
|
|
||||||
efficiency = efficiency.replace([-np.inf,np.inf],np.nan)
|
efficiency = efficiency.replace([-np.inf,np.inf],np.nan)
|
||||||
efficiency.fillna(method='ffill')
|
efficiency.fillna(method='ffill')
|
||||||
|
|
||||||
|
|||||||
@@ -3564,19 +3564,25 @@ def multiflex_view(request,userid=0,
|
|||||||
|
|
||||||
# prepare data frame
|
# prepare data frame
|
||||||
datadf = dataprep.read_cols_df_sql(ids,fieldlist)
|
datadf = dataprep.read_cols_df_sql(ids,fieldlist)
|
||||||
|
|
||||||
|
|
||||||
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly)
|
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly)
|
||||||
|
|
||||||
|
|
||||||
datadf = dataprep.filter_df(datadf,'spm',spmmin,
|
datadf = dataprep.filter_df(datadf,'spm',spmmin,
|
||||||
largerthan=True)
|
largerthan=True)
|
||||||
datadf = dataprep.filter_df(datadf,'spm',spmmax,
|
datadf = dataprep.filter_df(datadf,'spm',spmmax,
|
||||||
largerthan=False)
|
largerthan=False)
|
||||||
|
|
||||||
datadf = dataprep.filter_df(datadf,'driveenergy',workmin,
|
datadf = dataprep.filter_df(datadf,'driveenergy',workmin,
|
||||||
largerthan=True)
|
largerthan=True)
|
||||||
datadf = dataprep.filter_df(datadf,'driveneergy',workmax,
|
datadf = dataprep.filter_df(datadf,'driveneergy',workmax,
|
||||||
largerthan=False)
|
largerthan=False)
|
||||||
|
|
||||||
|
|
||||||
datadf.dropna(axis=0,how='any',inplace=True)
|
datadf.dropna(axis=0,how='any',inplace=True)
|
||||||
|
|
||||||
|
|
||||||
datemapping = {
|
datemapping = {
|
||||||
w.id:w.date for w in workouts
|
w.id:w.date for w in workouts
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user