Private
Public Access
1
0

added add_effiency and eff calc added to otw_physics

This commit is contained in:
Sander Roosendaal
2017-08-07 09:08:56 +02:00
parent c55be018d7
commit 2e4e6c47e0
2 changed files with 65 additions and 9 deletions

View File

@@ -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

View File

@@ -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')