Private
Public Access
1
0

ruptures 2

This commit is contained in:
Sander Roosendaal
2021-05-26 13:10:46 +02:00
parent d4d6ba5922
commit fc40296a98
3 changed files with 49 additions and 0 deletions

View File

@@ -18,6 +18,8 @@ from rowers.utils import intervals_to_string
from urllib.parse import urlparse, parse_qs
from json.decoder import JSONDecodeError
import ruptures as rpt
def default(o): # pragma: no cover
if isinstance(o, numpy.int64): return int(o)
if isinstance(o, numpy.int32): return int(o)
@@ -6140,6 +6142,42 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
powerupdateform = PowerIntervalUpdateForm(initial=data)
# feeling lucky / ruptures
if request.method == 'POST' and "ruptures" in request.POST:
df = pd.DataFrame({
'spm':rowdata.df[' Cadence (stokes/min)'],
'power':rowdata.df[' Power (watts)'],
'v':rowdata.df[' AverageBoatSpeed (m/s)']
})
algo = rpt.Pelt(model="rbf").fit(df.values)
result = algo.predict(pen=10)
df['time'] = rowdata.df['TimeStamp (sec)'].values
timeprev = int(df['time'].values[0])
timenext = int(df['time'].values[result[0]])
s = '{delta}sec'.format(delta=timenext-timeprev)
for i in range(len(result)-1):
timeprev = int(df['time'].values[result[i]-1])
timenext = int(df['time'].values[result[i+1]-1])
interval = '+{delta}sec'.format(delta=timenext-timeprev)
s += interval
try:
rowdata.updateinterval_string(s)
except:
messages.error(request,"Nope, you were not lucky")
intervalstats = rowdata.allstats()
itime, idist, itype = rowdata.intervalstats_values()
nrintervals = len(idist)
savebutton = 'savestringform'
intervalString = s
form = SummaryStringForm(initial={'intervalstring':intervalString})
# We have submitted the mini language interpreter
if request.method == 'POST' and "intervalstring" in request.POST:
form = SummaryStringForm(request.POST)