Private
Public Access
1
0

finding source of unnecessary notifications

This commit is contained in:
Sander Roosendaal
2017-07-04 22:26:44 +02:00
parent 6b5904ecf7
commit c75a169229
7 changed files with 39 additions and 34 deletions

View File

@@ -425,13 +425,6 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower',
powerperc=powerperc,powerzones=r.powerzones)
row = rdata(f2,rower=rr)
isbreakthrough = False
if workouttype == 'water':
delta,cpvalues,avgpower = datautils.getsinglecp(row.df)
res,btvalues = utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3,r.cpratio)
if res:
isbreakthrough = True
res = datautils.updatecp(delta,cpvalues,r)
dtavg = row.df['TimeStamp (sec)'].diff().mean()
@@ -590,6 +583,21 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower',
w.save()
isbreakthrough = False
if workouttype == 'water':
df = getsmallrowdata_db(['power','workoutid','time'],ids=[w.id])
# delta,cpvalues,avgpower = datautils.getsinglecp(row.df)
thesecs = totaltime
maxt = 1.05*thesecs
logarr = datautils.getlogarr(maxt)
dfgrouped = df.groupby(['workoutid'])
delta,cpvalues,avgpower = datautils.getcp(dfgrouped,logarr)
res,btvalues = utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3,r.cpratio)
if res:
isbreakthrough = True
res = datautils.updatecp(delta,cpvalues,r)
# submit email task to send email about breakthrough workout
if isbreakthrough:
a_messages.info(r.user,'It looks like you have a new breakthrough workout')

View File

@@ -463,35 +463,14 @@ def testdata(time,distance,pace,spm):
def getsmallrowdata_db(columns,ids=[]):
prepmultipledata(ids)
data = read_cols_df_sql(ids,columns)
return data
def prepmultipledata(ids,verbose=False,debug=True):
query = sa.text('SELECT DISTINCT workoutid FROM strokedata')
if debug:
engine = create_engine(database_url_debug, echo=False)
else:
engine = create_engine(database_url, echo=False)
with engine.connect() as conn, conn.begin():
res = conn.execute(query)
res = list(itertools.chain.from_iterable(res.fetchall()))
conn.close()
engine.dispose()
res = list(set(ids)-set(res))
for id in res:
rowdata,row = getrowdata(id=id)
if verbose:
print id
if rowdata:
data = dataprep(rowdata.df,id=id,bands=True,barchart=True,otwpower=True)
return res
def read_cols_df_sql(ids,columns,debug=True):
columns = list(columns)+['distance','spm']
columns = [x for x in columns if x != 'None']

View File

@@ -118,6 +118,8 @@ def getcp(dfgrouped,logarr):
ww = group['power'].copy()
tmax = tt.max()
if tmax > 500000:
newlen = int(tmax/2000.)
else:
@@ -143,6 +145,7 @@ def getcp(dfgrouped,logarr):
cpw = []
for i in xrange(length-2):
deltat,wmax = getmaxwattinterval(tt,ww,i)
if not np.isnan(deltat) and not np.isnan(wmax):
dt.append(deltat)
cpw.append(wmax)
@@ -165,6 +168,7 @@ def getcp(dfgrouped,logarr):
delta = pd.Series(delta,name='Delta')
cpvalue = pd.Series(cpvalue,name='CP')
cpdf = pd.DataFrame({
'delta':delta,
'cpvalue':cpvalue

View File

@@ -26,6 +26,7 @@ from utils import serialize_list,deserialize_list
from rowers.dataprepnodjango import update_strokedata
from rowers.dataprepnodjango import new_workout_from_file
from rowers.dataprepnodjango import getsmallrowdata_db
from django.core.mail import send_mail, BadHeaderError,EmailMessage
@@ -245,7 +246,20 @@ def handle_otwsetpower(f1,boattype,weightvalue,
rowdata.write_csv(f1,gzip=True)
update_strokedata(workoutid,rowdata.df,debug=debug)
delta,cpvalues,avgpower = datautils.getsinglecp(rowdata.df)
totaltime = rowdata.df['TimeStamp (sec)'].max()-rowdata.df['TimeStamp (sec)'].min()
try:
totaltime = totaltime+rowdata.df.ix[0,' ElapsedTime (sec)']
except KeyError:
pass
df = getsmallrowdata_db(['power','workoutid','time'],ids=[workoutid])
thesecs = totaltime
maxt = 1.05*thesecs
logarr = datautils.getlogarr(maxt)
dfgrouped = df.groupby(['workoutid'])
delta,cpvalues,avgpower = datautils.getcp(dfgrouped,logarr)
#delta,cpvalues,avgpower = datautils.getsinglecp(rowdata.df)
res,btvalues = utils.isbreakthrough(delta,cpvalues,ps[0],ps[1],ps[2],ps[3],ratio)
if res:
handle_sendemail_breakthrough(workoutid,email,

View File

@@ -2936,13 +2936,13 @@ def otwrankings_view(request,theuser=0,
dfgrouped = df.groupby(['workoutid'])
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)
powerdf = pd.DataFrame({
'Delta':delta,
'CP':cpvalue,
})
powerdf = powerdf[powerdf['CP']>0]
powerdf.dropna(axis=0,inplace=True)
powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True)

Binary file not shown.