passing tests ...
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import pandas as pd
|
||||
import polars as pl
|
||||
import numpy as np
|
||||
from scipy.interpolate import griddata
|
||||
from scipy import optimize
|
||||
|
||||
|
||||
from rowers.mytypes import otwtypes, otetypes, rowtypes
|
||||
from rowers.models import Workout
|
||||
|
||||
@@ -358,8 +360,8 @@ def getmaxwattinterval(tt, ww, i):
|
||||
|
||||
|
||||
def getfastest(df, thevalue, mode='distance'):
|
||||
tt = df['time'].copy()
|
||||
dd = df['cumdist'].copy()
|
||||
tt = df['time'].clone()
|
||||
dd = df['cumdist'].clone()
|
||||
|
||||
tmax = tt.max()
|
||||
if mode == 'distance': # pragma: no cover
|
||||
@@ -370,40 +372,28 @@ def getfastest(df, thevalue, mode='distance'):
|
||||
return 0
|
||||
|
||||
|
||||
# if tmax > 500000:
|
||||
# newlen=int(tmax/2000.)
|
||||
# newt = np.arange(newlen)*tmax/float(newlen)
|
||||
# deltat = newt[1]-newt[0]
|
||||
# else:
|
||||
# newt = np.arange(0,tmax,10.)
|
||||
# deltat = 10.
|
||||
|
||||
newlen = 1000
|
||||
newt = np.arange(newlen)*tmax/float(newlen)
|
||||
deltat = newt[1]-newt[0]
|
||||
|
||||
dd = griddata(tt.values,
|
||||
dd.values, newt, method='linear', rescale=True)
|
||||
dd = griddata(tt.to_numpy(),
|
||||
dd.to_numpy(), newt, method='linear', rescale=True)
|
||||
|
||||
tt = pd.Series(newt, dtype='float')
|
||||
dd = pd.Series(dd, dtype='float')
|
||||
tt = pl.Series(newt, dtype=pl.Float64)
|
||||
dd = pl.Series(dd, dtype=pl.Float64)
|
||||
|
||||
G = pl.concat([pl.Series([0.0]), dd])
|
||||
|
||||
G = pd.concat([pd.Series([0]), dd])
|
||||
# T = pd.concat([pd.Series([0]), dd])
|
||||
# h = np.mgrid[0:len(tt)+1:1, 0:len(tt)+1:1]
|
||||
# distances = pd.DataFrame(h[1]-h[0])
|
||||
ones = 1+np.zeros(len(G))
|
||||
Ghor = np.outer(ones, G)
|
||||
# Thor = np.outer(ones, T)
|
||||
# Tver = np.outer(T, ones)
|
||||
|
||||
Gver = np.outer(G, ones)
|
||||
Gdif = Ghor-Gver
|
||||
Gdif = np.tril(Gdif.T).T
|
||||
Gdif = pd.DataFrame(Gdif)
|
||||
Gdif = pl.DataFrame(Gdif)
|
||||
F = Gdif
|
||||
|
||||
F.fillna(inplace=True, method='ffill', axis=1)
|
||||
F.fillna(inplace=True, value=0)
|
||||
F = F.fill_nan(0)
|
||||
|
||||
restime = []
|
||||
distance = []
|
||||
@@ -414,7 +404,7 @@ def getfastest(df, thevalue, mode='distance'):
|
||||
restime.append(deltat*i)
|
||||
cp = np.diag(F, i).max()
|
||||
loc = np.argmax(np.diag(F, i))
|
||||
thestarttime = tt[loc]
|
||||
thestarttime = tt.to_numpy()[loc]
|
||||
starttimes.append(thestarttime)
|
||||
distance.append(cp)
|
||||
|
||||
@@ -424,10 +414,6 @@ def getfastest(df, thevalue, mode='distance'):
|
||||
distance = np.array(distance)
|
||||
starttimes = np.array(starttimes)
|
||||
|
||||
# for i in range(len(restime)):
|
||||
# if restime[i]<thevalue*60*1000:
|
||||
# print(i,restime[i],distance[i],60*1000*thevalue)
|
||||
|
||||
if mode == 'distance':
|
||||
duration = griddata(distance, restime, [
|
||||
thevalue], method='linear', rescale=True)
|
||||
@@ -436,7 +422,6 @@ def getfastest(df, thevalue, mode='distance'):
|
||||
distance = griddata(distance, distance, [
|
||||
thevalue], method='linear', rescale=True)
|
||||
endtime = starttime+duration
|
||||
# print(duration,starttime,endtime,'aa')
|
||||
return duration[0]/1000., starttime[0]/1000., endtime[0]/1000.
|
||||
else: # pragma: no cover
|
||||
distance = griddata(restime, distance, [
|
||||
|
||||
@@ -435,8 +435,9 @@ def add_workouts_plannedsession(ws, ps, r):
|
||||
for record in records:
|
||||
record.delete()
|
||||
|
||||
df = dataprep.getsmallrowdata_db(
|
||||
df = dataprep.read_data(
|
||||
['time', 'cumdist'], ids=[w.id])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
fastest_milliseconds, starttime, endtime = datautils.getfastest(
|
||||
df, ps.sessionvalue, mode='distance')
|
||||
|
||||
@@ -466,11 +467,11 @@ def add_workouts_plannedsession(ws, ps, r):
|
||||
for record in records:
|
||||
record.delete()
|
||||
|
||||
df = dataprep.getsmallrowdata_db(
|
||||
df = dataprep.read_data(
|
||||
['time', 'cumdist'], ids=[w.id])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
fastest_meters, starttime, endtime = datautils.getfastest(
|
||||
df, ps.sessionvalue, mode='time')
|
||||
|
||||
if fastest_meters > 0:
|
||||
w.plannedsession = ps
|
||||
w.save()
|
||||
@@ -1685,8 +1686,9 @@ def add_workout_fastestrace(ws, race, r, recordid=0, doregister=False):
|
||||
record.coursecompleted = True
|
||||
record.workoutid = ws[0].id
|
||||
if race.sessiontype == 'fastest_distance':
|
||||
df = dataprep.getsmallrowdata_db(
|
||||
df = dataprep.read_data(
|
||||
['time', 'cumdist'], ids=[ws[0].id])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
fastest_milliseconds, startsecond, endsecond = datautils.getfastest(
|
||||
df, race.sessionvalue, mode='distance')
|
||||
velo = race.sessionvalue/fastest_milliseconds
|
||||
@@ -1702,8 +1704,9 @@ def add_workout_fastestrace(ws, race, r, recordid=0, doregister=False):
|
||||
record.endsecond = endsecond
|
||||
record.save()
|
||||
if race.sessiontype == 'fastest_time': # pragma: no cover
|
||||
df = dataprep.getsmallrowdata_db(
|
||||
df = dataprep.read_data(
|
||||
['time', 'cumdist'], ids=[ws[0].id])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
fastest_meters, startsecond, endsecond = datautils.getfastest(
|
||||
df, race.sessionvalue, mode='time')
|
||||
velo = fastest_meters/(60.*race.sessionvalue)
|
||||
|
||||
@@ -309,11 +309,17 @@ def mocked_getrowdata_uh(*args, **kwargs): # pragma: no cover
|
||||
|
||||
return df, row
|
||||
|
||||
|
||||
def mocked_getsmallrowdata_uh(*args, **kwargs): # pragma: no cover
|
||||
df = pl.read_csv('rowers/tests/testdata/uhfull.csv')
|
||||
|
||||
return df
|
||||
|
||||
def mocked_getsmallrowdata_uh_pd(*args, **kwargs): # pragma: no cover
|
||||
df = pd.read_csv('rowers/tests/testdata/uhfull.csv')
|
||||
|
||||
return df
|
||||
|
||||
def mocked_getsmallrowdata_forfusion(*args, **kwargs):
|
||||
df = pl.read_csv('rowers/tests/testdata/getrowdata_mock.csv')
|
||||
|
||||
|
||||
@@ -597,8 +597,8 @@ class DataPrepTests(TestCase):
|
||||
result = getagegrouprecord(25)
|
||||
self.assertEqual(int(result),590)
|
||||
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_uh)
|
||||
def test_get_videodata(self,mocked_getsmallrowdata_uh):
|
||||
@patch('rowers.dataprep.getsmallrowdata_pd',side_effect=mocked_getsmallrowdata_uh_pd)
|
||||
def test_get_videodata(self,mocked_getsmallrowdata_uh_pd):
|
||||
data, metrics, maxtime = dataprep.get_video_data(self.wuh_otw)
|
||||
|
||||
self.assertEqual(len(data),9)
|
||||
|
||||
@@ -71,9 +71,10 @@ class ForceUnits(TestCase):
|
||||
w = Workout.objects.get(id=1)
|
||||
self.assertEqual(w.forceunit,'lbs')
|
||||
|
||||
df = dataprep.getsmallrowdata_db(['averageforce'],ids=[13])
|
||||
df = dataprep.read_data(['averageforce'],ids=[13])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
average_N = int(df['averageforce'].mean())
|
||||
self.assertEqual(average_N,398)
|
||||
self.assertEqual(average_N,400)
|
||||
|
||||
data = dataprep.read_df_sql(13)
|
||||
average_N = int(data['averageforce'].mean())
|
||||
@@ -119,9 +120,10 @@ class ForceUnits(TestCase):
|
||||
w = Workout.objects.get(id=13)
|
||||
self.assertEqual(w.forceunit,'N')
|
||||
|
||||
df = dataprep.getsmallrowdata_db(['averageforce'],ids=[13])
|
||||
df = dataprep.read_data(['averageforce'],ids=[13])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
average_N = int(df['averageforce'].mean())
|
||||
self.assertEqual(average_N,263)
|
||||
self.assertEqual(average_N,271)
|
||||
|
||||
def test_upload_speedcoach_colin(self):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
@@ -155,9 +157,10 @@ class ForceUnits(TestCase):
|
||||
w = Workout.objects.get(id=13)
|
||||
self.assertEqual(w.forceunit,'N')
|
||||
|
||||
df = dataprep.getsmallrowdata_db(['averageforce'],ids=[13])
|
||||
df = dataprep.read_data(['averageforce'],ids=[13])
|
||||
df = dataprep.remove_nulls_pl(df)
|
||||
average_N = int(df['averageforce'].mean())
|
||||
self.assertEqual(average_N,105)
|
||||
self.assertEqual(average_N,122)
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class TestForceUnit(TestCase):
|
||||
@@ -206,7 +209,7 @@ class TestForceUnit(TestCase):
|
||||
|
||||
rowdata = dataprep.rdata('rowers/tests/testdata/PainsledForce.csv')
|
||||
df = dataprep.dataprep(rowdata.df)
|
||||
#df = dataprep.getsmallrowdata_db(['averageforce'],ids=[w[0].id],doclean=False,
|
||||
#df = dataprep.read_data(['averageforce'],ids=[w[0].id],doclean=False,
|
||||
# compute=False)
|
||||
try:
|
||||
average_N = int(df['averageforce'].mean())
|
||||
|
||||
@@ -29,8 +29,8 @@ class ViewTest(TestCase):
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_upload_view_sled(self, mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_upload_view_sled(self, mocked_sqlalchemy,mocked_read_data):
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
|
||||
@@ -120,8 +120,8 @@ class ViewTest(TestCase):
|
||||
pass
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_upload_view_sled_bg(self, mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||
def test_upload_view_sled_bg(self, mocked_sqlalchemy,mocked_read_data):
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
Reference in New Issue
Block a user