all forces now in newton
This commit is contained in:
@@ -43,12 +43,15 @@ from sqlalchemy import create_engine
|
||||
import sqlalchemy as sa
|
||||
import sys
|
||||
|
||||
from utils import lbstoN
|
||||
|
||||
import django_rq
|
||||
queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('default')
|
||||
|
||||
|
||||
|
||||
user = settings.DATABASES['default']['USER']
|
||||
password = settings.DATABASES['default']['PASSWORD']
|
||||
database_name = settings.DATABASES['default']['NAME']
|
||||
@@ -825,6 +828,7 @@ def testdata(time,distance,pace,spm):
|
||||
def getrowdata_db(id=0,doclean=False):
|
||||
data = read_df_sql(id)
|
||||
data['x_right'] = data['x_right']/1.0e6
|
||||
|
||||
if data.empty:
|
||||
rowdata,row = getrowdata(id=id)
|
||||
if rowdata:
|
||||
@@ -836,13 +840,22 @@ def getrowdata_db(id=0,doclean=False):
|
||||
|
||||
if doclean:
|
||||
data = clean_df_stats(data,ignorehr=True)
|
||||
|
||||
|
||||
data['averageforce'] = data['averageforce']*lbstoN
|
||||
data['peakforce'] = data['peakforce']*lbstoN
|
||||
|
||||
return data,row
|
||||
|
||||
# Fetch a subset of the data from the DB
|
||||
def getsmallrowdata_db(columns,ids=[],doclean=True,workstrokesonly=True):
|
||||
prepmultipledata(ids)
|
||||
data = read_cols_df_sql(ids,columns)
|
||||
|
||||
if 'peakforce' in columns:
|
||||
data['peakforce'] = data['peakforce']*lbstoN
|
||||
if 'averageforce' in columns:
|
||||
data['averageforce'] = data['averageforce']*lbstoN
|
||||
|
||||
if doclean:
|
||||
data = clean_df_stats(data,ignorehr=True,
|
||||
workstrokesonly=workstrokesonly)
|
||||
@@ -990,6 +1003,12 @@ def smalldataprep(therows,xparam,yparam1,yparam2):
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
try:
|
||||
df['peakforce'] = df['peakforce']*lbstoN
|
||||
df['averageforce'] = df['averageforce']*lbstoN
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
return df
|
||||
|
||||
# data fusion
|
||||
@@ -1100,7 +1119,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
drivespeed = 0.0*rowdatadf['TimeStamp (sec)']
|
||||
|
||||
drivespeed = drivespeed.fillna(value=0)
|
||||
driveenergy = drivelength*averageforce*4.44822
|
||||
driveenergy = drivelength*averageforce*lbstoN
|
||||
distance = rowdatadf.ix[:,'cum_dist']
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ import sqlalchemy as sa
|
||||
|
||||
from rowsandall_app.settings import DATABASES
|
||||
|
||||
from utils import lbstoN
|
||||
|
||||
user = DATABASES['default']['USER']
|
||||
password = DATABASES['default']['PASSWORD']
|
||||
database_name = DATABASES['default']['NAME']
|
||||
@@ -595,7 +597,7 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
|
||||
drivespeed = drivelength/rowdatadf[' DriveTime (ms)']*1.0e3
|
||||
drivespeed = drivespeed.fillna(value=0)
|
||||
driveenergy = drivelength*averageforce*4.44822
|
||||
driveenergy = drivelength*averageforce*lbstoN
|
||||
distance = rowdatadf.ix[:,'cum_dist']
|
||||
|
||||
|
||||
|
||||
@@ -52,6 +52,8 @@ import rowers.dataprep as dataprep
|
||||
|
||||
from rowers.metrics import axes,axlabels,yaxminima,yaxmaxima
|
||||
|
||||
from utils import lbstoN
|
||||
|
||||
def tailwind(bearing,vwind,winddir):
|
||||
""" Calculates head-on head/tailwind in direction of rowing
|
||||
|
||||
@@ -140,7 +142,7 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False):
|
||||
finishav]
|
||||
|
||||
thresholdforce = 100 if 'x' in boattype else 200
|
||||
thresholdforce /= 4.45 # N to lbs
|
||||
#thresholdforce /= 4.45 # N to lbs
|
||||
y = [0,thresholdforce,
|
||||
peakforceav,
|
||||
thresholdforce,0]
|
||||
@@ -217,11 +219,11 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False):
|
||||
plot.add_layout(finishlabel)
|
||||
|
||||
plot.xaxis.axis_label = "Angle"
|
||||
plot.yaxis.axis_label = "Force (lbs)"
|
||||
plot.yaxis.axis_label = "Force (N)"
|
||||
plot.title.text = theworkouts[0].name
|
||||
plot.title.text_font_size=value("1.0em")
|
||||
|
||||
yrange1 = Range1d(start=0,end=200)
|
||||
yrange1 = Range1d(start=0,end=900)
|
||||
plot.y_range = yrange1
|
||||
|
||||
xrange1 = Range1d(start=yaxmaxima['catch'],end=yaxmaxima['finish'])
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from utils import lbstoN
|
||||
|
||||
axes = (
|
||||
('time','Time',0,1e5,'basic'),
|
||||
('distance', 'Distance (m)',0,1e5,'basic'),
|
||||
@@ -6,9 +8,9 @@ axes = (
|
||||
('spm', 'Stroke Rate (spm)',15,45,'basic'),
|
||||
('pace', 'Pace (/500m)',1.0e3*210,1.0e3*75,'basic'),
|
||||
('power', 'Power (Watt)',0,600,'basic'),
|
||||
('averageforce', 'Average Drive Force (lbs)',0,200,'pro'),
|
||||
('averageforce', 'Average Drive Force (N)',0,900,'pro'),
|
||||
('drivelength', 'Drive Length (m)',0.5,2.0,'pro'),
|
||||
('peakforce', 'Peak Drive Force (lbs)',0,400,'pro'),
|
||||
('peakforce', 'Peak Drive Force (N)',0,900,'pro'),
|
||||
('forceratio', 'Average/Peak Force Ratio',0,1,'pro'),
|
||||
('driveenergy', 'Work per Stroke (J)',0,1000,'pro'),
|
||||
('drivespeed', 'Drive Speed (m/s)',0,4,'pro'),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import math
|
||||
import numpy as np
|
||||
|
||||
|
||||
lbstoN = 4.44822
|
||||
|
||||
def serialize_list(value,token=','):
|
||||
assert(isinstance(value, list) or isinstance(value, tuple) or isinstance(value,np.ndarray))
|
||||
|
||||
Reference in New Issue
Block a user