added add_effiency and eff calc added to otw_physics
This commit is contained in:
@@ -460,7 +460,8 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower',
|
|||||||
if consistencychecks:
|
if consistencychecks:
|
||||||
a_messages.error(r.user,'Failed consistency check: '+key+', autocorrected')
|
a_messages.error(r.user,'Failed consistency check: '+key+', autocorrected')
|
||||||
else:
|
else:
|
||||||
a_messages.error(r.user,'Failed consistency check: '+key+', not corrected')
|
pass
|
||||||
|
# a_messages.error(r.user,'Failed consistency check: '+key+', not corrected')
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1259,6 +1260,27 @@ def datafusion(id1,id2,columns,offset):
|
|||||||
|
|
||||||
return df
|
return df
|
||||||
|
|
||||||
|
def add_efficiency(id=0):
|
||||||
|
rowdata,row = getrowdata_db(id=id,doclean=False)
|
||||||
|
power = rowdata['power']
|
||||||
|
pace = rowdata['pace']/1.0e3
|
||||||
|
velo = 500./pace
|
||||||
|
ergpw = 2.8*velo**3
|
||||||
|
efficiency = 100.*ergpw/power
|
||||||
|
|
||||||
|
efficiency = efficiency.replace([-np.inf,np.inf],np.nan)
|
||||||
|
efficiency.fillna(method='ffill')
|
||||||
|
rowdata['efficiency'] = efficiency
|
||||||
|
delete_strokedata(id)
|
||||||
|
if id != 0:
|
||||||
|
rowdata['workoutid'] = id
|
||||||
|
engine = create_engine(database_url, echo=False)
|
||||||
|
with engine.connect() as conn, conn.begin():
|
||||||
|
rowdata.to_sql('strokedata',engine,if_exists='append',index=False)
|
||||||
|
conn.close()
|
||||||
|
engine.dispose()
|
||||||
|
return rowdata
|
||||||
|
|
||||||
# This is the main routine.
|
# This is the main routine.
|
||||||
# it reindexes, sorts, filters, and smooths the data, then
|
# it reindexes, sorts, filters, and smooths the data, then
|
||||||
# saves it to the stroke_data table in the database
|
# saves it to the stroke_data table in the database
|
||||||
|
|||||||
@@ -14,16 +14,33 @@ import itertools
|
|||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from rowsandall_app.settings import DATABASES
|
#from rowsandall_app.settings import DATABASES
|
||||||
|
from rowsandall_app.settings_dev import DATABASES
|
||||||
|
|
||||||
from utils import lbstoN
|
from utils import lbstoN
|
||||||
|
|
||||||
|
|
||||||
user = DATABASES['default']['USER']
|
try:
|
||||||
password = DATABASES['default']['PASSWORD']
|
user = DATABASES['default']['USER']
|
||||||
database_name = DATABASES['default']['NAME']
|
except KeyError:
|
||||||
host = DATABASES['default']['HOST']
|
user = ''
|
||||||
port = DATABASES['default']['PORT']
|
try:
|
||||||
|
password = DATABASES['default']['PASSWORD']
|
||||||
|
except KeyError:
|
||||||
|
password = ''
|
||||||
|
|
||||||
|
try:
|
||||||
|
database_name = DATABASES['default']['NAME']
|
||||||
|
except KeyError:
|
||||||
|
database_name = ''
|
||||||
|
try:
|
||||||
|
host = DATABASES['default']['HOST']
|
||||||
|
except KeyError:
|
||||||
|
host = ''
|
||||||
|
try:
|
||||||
|
port = DATABASES['default']['PORT']
|
||||||
|
except KeyError:
|
||||||
|
port = ''
|
||||||
|
|
||||||
database_url = 'mysql://{user}:{password}@{host}:{port}/{database_name}'.format(
|
database_url = 'mysql://{user}:{password}@{host}:{port}/{database_name}'.format(
|
||||||
user=user,
|
user=user,
|
||||||
@@ -563,6 +580,10 @@ def smalldataprep(therows,xparam,yparam1,yparam2):
|
|||||||
|
|
||||||
def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||||
empower=True,debug=True):
|
empower=True,debug=True):
|
||||||
|
|
||||||
|
if rowdatadf.empty:
|
||||||
|
return 0
|
||||||
|
|
||||||
rowdatadf.set_index([range(len(rowdatadf))],inplace=True)
|
rowdatadf.set_index([range(len(rowdatadf))],inplace=True)
|
||||||
t = rowdatadf.ix[:,'TimeStamp (sec)']
|
t = rowdatadf.ix[:,'TimeStamp (sec)']
|
||||||
t = pd.Series(t-rowdatadf.ix[0,'TimeStamp (sec)'])
|
t = pd.Series(t-rowdatadf.ix[0,'TimeStamp (sec)'])
|
||||||
@@ -576,7 +597,6 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
cumdist = rowdatadf.ix[:,'cum_dist']
|
cumdist = rowdatadf.ix[:,'cum_dist']
|
||||||
|
|
||||||
power = rowdatadf.ix[:,' Power (watts)']
|
power = rowdatadf.ix[:,' Power (watts)']
|
||||||
|
|
||||||
averageforce = rowdatadf.ix[:,' AverageDriveForce (lbs)']
|
averageforce = rowdatadf.ix[:,' AverageDriveForce (lbs)']
|
||||||
drivelength = rowdatadf.ix[:,' DriveLength (meters)']
|
drivelength = rowdatadf.ix[:,' DriveLength (meters)']
|
||||||
try:
|
try:
|
||||||
@@ -590,7 +610,10 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
forceratio = forceratio.fillna(value=0)
|
forceratio = forceratio.fillna(value=0)
|
||||||
|
|
||||||
f = rowdatadf['TimeStamp (sec)'].diff().mean()
|
f = rowdatadf['TimeStamp (sec)'].diff().mean()
|
||||||
windowsize = 2*(int(10./(f)))+1
|
if f != 0:
|
||||||
|
windowsize = 2*(int(10./(f)))+1
|
||||||
|
else:
|
||||||
|
windowsize = 1
|
||||||
if windowsize <= 3:
|
if windowsize <= 3:
|
||||||
windowsize = 5
|
windowsize = 5
|
||||||
|
|
||||||
@@ -674,6 +697,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
|||||||
peakforceangle = savgol_filter(peakforceangle,windowsize,3)
|
peakforceangle = savgol_filter(peakforceangle,windowsize,3)
|
||||||
driveenergy = savgol_filter(driveenergy,windowsize,3)
|
driveenergy = savgol_filter(driveenergy,windowsize,3)
|
||||||
drivelength = savgol_filter(drivelength,windowsize,3)
|
drivelength = savgol_filter(drivelength,windowsize,3)
|
||||||
|
|
||||||
data['wash'] = wash
|
data['wash'] = wash
|
||||||
data['catch'] = catch
|
data['catch'] = catch
|
||||||
data['slip'] = slip
|
data['slip'] = slip
|
||||||
@@ -703,11 +727,21 @@ 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.fillna(method='ffill')
|
||||||
|
|
||||||
|
|
||||||
data['ergpace'] = ergpace*1e3
|
data['ergpace'] = ergpace*1e3
|
||||||
data['nowindpace'] = nowindpace*1e3
|
data['nowindpace'] = nowindpace*1e3
|
||||||
data['equivergpower'] = equivergpower
|
data['equivergpower'] = equivergpower
|
||||||
data['fergpace'] = nicepaceformat(ergpace2)
|
data['fergpace'] = nicepaceformat(ergpace2)
|
||||||
data['fnowindpace'] = nicepaceformat(nowindpace2)
|
data['fnowindpace'] = nicepaceformat(nowindpace2)
|
||||||
|
data['efficiency'] = efficiency
|
||||||
|
|
||||||
data = data.replace([-np.inf,np.inf],np.nan)
|
data = data.replace([-np.inf,np.inf],np.nan)
|
||||||
data = data.fillna(method='ffill')
|
data = data.fillna(method='ffill')
|
||||||
|
|||||||
Reference in New Issue
Block a user