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:
|
||||
a_messages.error(r.user,'Failed consistency check: '+key+', autocorrected')
|
||||
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:
|
||||
pass
|
||||
|
||||
@@ -1259,6 +1260,27 @@ def datafusion(id1,id2,columns,offset):
|
||||
|
||||
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.
|
||||
# it reindexes, sorts, filters, and smooths the data, then
|
||||
# saves it to the stroke_data table in the database
|
||||
|
||||
@@ -14,16 +14,33 @@ import itertools
|
||||
from sqlalchemy import create_engine
|
||||
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
|
||||
|
||||
|
||||
user = DATABASES['default']['USER']
|
||||
password = DATABASES['default']['PASSWORD']
|
||||
database_name = DATABASES['default']['NAME']
|
||||
host = DATABASES['default']['HOST']
|
||||
port = DATABASES['default']['PORT']
|
||||
try:
|
||||
user = DATABASES['default']['USER']
|
||||
except KeyError:
|
||||
user = ''
|
||||
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(
|
||||
user=user,
|
||||
@@ -563,6 +580,10 @@ def smalldataprep(therows,xparam,yparam1,yparam2):
|
||||
|
||||
def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
empower=True,debug=True):
|
||||
|
||||
if rowdatadf.empty:
|
||||
return 0
|
||||
|
||||
rowdatadf.set_index([range(len(rowdatadf))],inplace=True)
|
||||
t = rowdatadf.ix[:,'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']
|
||||
|
||||
power = rowdatadf.ix[:,' Power (watts)']
|
||||
|
||||
averageforce = rowdatadf.ix[:,' AverageDriveForce (lbs)']
|
||||
drivelength = rowdatadf.ix[:,' DriveLength (meters)']
|
||||
try:
|
||||
@@ -590,7 +610,10 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
forceratio = forceratio.fillna(value=0)
|
||||
|
||||
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:
|
||||
windowsize = 5
|
||||
|
||||
@@ -674,6 +697,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
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
|
||||
@@ -703,11 +727,21 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
ergpace[ergpace == np.inf] = 240.
|
||||
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['nowindpace'] = nowindpace*1e3
|
||||
data['equivergpower'] = equivergpower
|
||||
data['fergpace'] = nicepaceformat(ergpace2)
|
||||
data['fnowindpace'] = nicepaceformat(nowindpace2)
|
||||
data['efficiency'] = efficiency
|
||||
|
||||
data = data.replace([-np.inf,np.inf],np.nan)
|
||||
data = data.fillna(method='ffill')
|
||||
|
||||
Reference in New Issue
Block a user