Private
Public Access
1
0

first pass - untested

This commit is contained in:
Sander Roosendaal
2017-09-17 15:01:07 +02:00
parent 5dbb0145fc
commit d38512a47c

View File

@@ -1202,7 +1202,7 @@ def getsmallrowdata_db(columns,ids=[],doclean=True,workstrokesonly=True):
return data
# Fetch both the workout and the workout stroke data (from CSV file)
def getrowdata(id=0,convertnewtons=True):
def getrowdata(id=0):
# check if valid ID exists (workout exists)
row = Workout.objects.get(id=id)
@@ -1263,7 +1263,7 @@ def read_cols_df_sql(ids,columns,convertnewtons=True):
if not c in axx:
columns.remove(c)
columns = list(columns)+['distance','spm']
columns = list(columns)+['distance','spm','workoutid']
columns = [x for x in columns if x != 'None']
columns = list(set(columns))
cls = ''
@@ -1297,14 +1297,14 @@ def read_cols_df_sql(ids,columns,convertnewtons=True):
funits = ((w.id,w.forceunit) for w in Workout.objects.filter(id__in=ids))
for id,u in funits:
if u=='lbs':
mask = data['workoutid']==id
mask = df['workoutid']==id
df.loc[mask,'peakforce'] = data.loc[mask,'peakforce']*lbstoN
if 'averageforce' in columns:
funits = ((w.id,w.forceunit) for w in Workout.objects.filter(id__in=ids))
for id,u in funits:
if u=='lbs':
mask = data['workoutid']==id
df.loc[mask,'averageforce'] = data.loc[mask,'averageforce']*lbstoN
mask = df['workoutid']==id
df.loc[mask,'averageforce'] = df.loc[mask,'averageforce']*lbstoN
engine.dispose()
return df
@@ -1399,6 +1399,9 @@ def smalldataprep(therows,xparam,yparam1,yparam2):
# data fusion
def datafusion(id1,id2,columns,offset):
workout1 = Workout.objects.get(id=id1)
workout2 = Workout.objects.get(id=id2)
df1,w1 = getrowdata_db(id=id1)
df1 = df1.drop([#'cumdist',
'hr_ut2',
@@ -1412,7 +1415,7 @@ def datafusion(id1,id2,columns,offset):
'workoutid',
'id'],
1,errors='ignore')
# Add coordinates to DataFrame
latitude,longitude = get_latlon(id1)
@@ -1421,6 +1424,18 @@ def datafusion(id1,id2,columns,offset):
df2 = getsmallrowdata_db(['time']+columns,ids=[id2],doclean=False)
forceunit = 'N'
# set Force to same units
if 'averageforce' in columns or 'peakforce' in columns:
forceunit = workout2.forceunit
if workout1.forceunit == 'lbs' and workout2.forceunit == 'N':
df1['averageforce'] *= lbstoN
df1['peakforce'] *= lbstoN
if workout1.forceunit == 'N' and workout2.forceunit == 'lbs':
df1['averageforce'] /= lbstoN
df1['peakforce'] /= lbstoN
offsetmillisecs = offset.seconds*1000+offset.microseconds/1000.
offsetmillisecs += offset.days*(3600*24*1000)
df2['time'] = df2['time']+offsetmillisecs