Private
Public Access
1
0

adding external yaml for rowing metrics

This commit is contained in:
2024-11-26 21:13:46 +01:00
parent 029dddd1db
commit b85636a373
2 changed files with 296 additions and 327 deletions

View File

@@ -1,7 +1,7 @@
from rowers.utils import lbstoN from rowers.utils import lbstoN
import numpy as np import numpy as np
import yaml
import pandas as pd import pandas as pd
from scipy import optimize from scipy import optimize
from django.utils import timezone from django.utils import timezone
@@ -44,335 +44,16 @@ nometrics = [
'cum_dist.1' 'cum_dist.1'
] ]
rowingmetrics = ( with open("rowingmetrics.yaml", "r") as file:
('time', { td = yaml.safe_load(file)
'numtype': 'float',
'null': True,
'verbose_name': 'Time',
'ax_min': 0,
'ax_max': 1e5,
'mode': 'both',
'type': 'basic',
'group': 'basic',
'maysmooth': False,
'sigfigs': -1}),
('hr', {
'numtype': 'integer',
'null': True,
'verbose_name': 'Heart Rate (bpm)',
'ax_min': 100,
'ax_max': 200,
'mode': 'both',
'type': 'basic',
'maysmooth': False,
'group': 'athlete',
'sigfigs': 0, }),
('pace', {
'numtype': 'float',
'null': True,
'verbose_name': 'Pace (/500m)',
'ax_min': 1.0e3*210,
'ax_max': 1.0e3*75,
'mode': 'both',
'type': 'basic',
'sigfigs': 1,
'maysmooth': True,
'group': 'basic'}),
('velo', {
'numtype': 'float',
'null': True,
'verbose_name': 'Boat Speed (m/s)',
'ax_min': 0,
'ax_max': 8,
'default': 0,
'mode': 'both',
'sigfigs': 1,
'maysmooth': True,
'type': 'pro',
'group': 'basic'}),
# ('powerhr',{
# 'numtype':'float',
# 'null':True,
# 'verbose_name': 'Power Heart Rate Efficiency (J/beat)',
# 'ax_min':0,
# 'ax_max':300,
# 'mode':'both',
# 'type':'pro',
# 'group':'athlete'}),
('spm', {
'numtype': 'float',
'null': True,
'verbose_name': 'Stroke Rate (spm)',
'ax_min': 15,
'ax_max': 45,
'mode': 'both',
'sigfigs': 1,
'type': 'basic',
'maysmooth': True,
'group': 'basic'}),
('driveenergy', {
'numtype': 'float',
'null': True,
'verbose_name': 'Work Per Stroke (J)',
'ax_min': 0,
'ax_max': 1000,
'mode': 'both',
'sigfigs': 0,
'type': 'pro',
'maysmooth': True,
'group': 'forcepower'}),
('power', {
'numtype': 'float',
'null': True,
'verbose_name': 'Power (W)',
'ax_min': 0,
'ax_max': 600,
'mode': 'both',
'sigfigs': 0,
'type': 'basic',
'maysmooth': True,
'group': 'forcepower'}),
('averageforce', {
'numtype': 'float',
'null': True,
'verbose_name': 'Average Drive Force (N)',
'ax_min': 0,
'ax_max': 1200,
'mode': 'both',
'sigfigs': 0,
'maysmooth': True,
'type': 'pro',
'group': 'forcepower'}),
('peakforce', {
'numtype': 'float',
'null': True,
'verbose_name': 'Peak Drive Force (N)',
'ax_min': 0,
'ax_max': 1500,
'sigfigs': 0,
'mode': 'both',
'maysmooth': True,
'type': 'pro',
'group': 'forcepower'}),
('drivelength', {
'numtype': 'float',
'null': True,
'verbose_name': 'Drive Length (m)',
'ax_min': 0,
'ax_max': 2.5,
'mode': 'rower',
'sigfigs': 2,
'maysmooth': False,
'type': 'pro',
'group': 'stroke'}),
('forceratio', {
'numtype': 'float',
'null': True,
'verbose_name': 'Average/Peak Force Ratio',
'ax_min': 0,
'ax_max': 1,
'sigfigs': 2,
'maysmooth': True,
'mode': 'both',
'type': 'pro',
'group': 'forcepower'}),
('distance', {
'numtype': 'float',
'null': True,
'verbose_name': 'Interval Distance (m)',
'ax_min': 0,
'ax_max': 1e5,
'sigfigs': 0,
'mode': 'both',
'maysmooth': False,
'type': 'basic',
'group': 'basic'}),
('cumdist', {
'numtype': 'float',
'null': True,
'verbose_name': 'Cumulative Distance (m)',
'ax_min': 0,
'ax_max': 1e5,
'mode': 'both',
'sigfigs': 0,
'maysmooth': False,
'type': 'basic',
'group': 'basic'}),
('drivespeed', {
'numtype': 'float',
'null': True,
'verbose_name': 'Drive Speed (m/s)',
'ax_min': 0,
'ax_max': 4,
'default': 0,
'sigfigs': 2,
'maysmooth': True,
'mode': 'both',
'type': 'pro',
'group': 'stroke'}),
('catch', {
'numtype': 'float',
'null': True,
'verbose_name': 'Catch Angle (degrees)',
'ax_min': -40,
'ax_max': -75,
'default': 0,
'sigfigs': 0,
'mode': 'water',
'maysmooth': True,
'type': 'pro',
'group': 'stroke'}),
('slip', {
'numtype': 'float',
'null': True,
'verbose_name': 'Slip (degrees)',
'ax_min': 0,
'ax_max': 20,
'default': 0,
'sigfigs': 1,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('finish', {
'numtype': 'float',
'null': True,
'verbose_name': 'Finish Angle (degrees)',
'ax_min': 20,
'ax_max': 55,
'default': 0,
'sigfigs': 0,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('wash', {
'numtype': 'float',
'null': True,
'verbose_name': 'Wash (degrees)',
'ax_min': 0,
'ax_max': 30,
'default': 0,
'sigfigs': 1,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('peakforceangle', {
'numtype': 'float',
'null': True,
'verbose_name': 'Peak Force Angle',
'ax_min': -50,
'ax_max': 50,
'default': 0,
'sigfigs': 0,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('totalangle', {
'numtype': 'float',
'null': True,
'verbose_name': 'Drive Length (deg)',
'ax_min': 40,
'ax_max': 140,
'default': 0,
'sigfigs': 0,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('check_factor', {
'numtype': 'float',
'null': True,
'verbose_name': 'Check Factor',
'ax_min': 0,
'ax_max': 100,
'default': 0,
'sigfigs': 1,
'maysmooth': True,
'mode': 'water',
'type': 'pro',
'group': 'stroke'}),
('effectiveangle', {
'numtype': 'float',
'null': True,
'verbose_name': 'Effective Drive Length (deg)',
'ax_min': 40,
'ax_max': 140,
'default': 0,
'sigfigs': 0,
'mode': 'water',
'maysmooth': True,
'type': 'pro',
'group': 'stroke'}),
('rhythm', {
'numtype': 'float',
'null': True,
'verbose_name': 'Stroke Rhythm',
'ax_min': 20,
'ax_max': 55,
'default': 1.0,
'sigfigs': 0,
'mode': 'erg',
'maysmooth': True,
'type': 'pro',
'group': 'stroke'}),
('efficiency', {
'numtype': 'float',
'null': True,
'verbose_name': 'OTW Efficiency (%)',
'ax_min': 0,
'ax_max': 110,
'default': 0,
'sigfigs': 0,
'mode': 'water',
'maysmooth': True,
'type': 'pro',
'group': 'forcepower'}),
('distanceperstroke', {
'numtype': 'float',
'null': True,
'verbose_name': 'Distance per Stroke (m)',
'ax_min': 0,
'ax_max': 15,
'default': 0,
'sigfigs': 1,
'maysmooth': True,
'mode': 'both',
'type': 'basic',
'group': 'basic'}),
rowingmetrics = tuple(
(key, value)
for key, value in td.items()
) )
metricsdicts = {} metricsdicts = {}
for key, dict in rowingmetrics: for key, dict in rowingmetrics:
metricsdicts[key] = dict metricsdicts[key] = dict

288
rowingmetrics.yaml Normal file
View File

@@ -0,0 +1,288 @@
time:
numtype: float
'null': true
verbose_name: Time
ax_min: 0
ax_max: 100000.0
mode: both
type: basic
group: basic
maysmooth: false
sigfigs: -1
hr:
numtype: integer
'null': true
verbose_name: Heart Rate (bpm)
ax_min: 100
ax_max: 200
mode: both
type: basic
maysmooth: false
group: athlete
sigfigs: 0
pace:
numtype: float
'null': true
verbose_name: Pace (/500m)
ax_min: 210000.0
ax_max: 75000.0
mode: both
type: basic
sigfigs: 1
maysmooth: true
group: basic
velo:
numtype: float
'null': true
verbose_name: Boat Speed (m/s)
ax_min: 0
ax_max: 8
default: 0
mode: both
sigfigs: 1
maysmooth: true
type: pro
group: basic
spm:
numtype: float
'null': true
verbose_name: Stroke Rate (spm)
ax_min: 15
ax_max: 45
mode: both
sigfigs: 1
type: basic
maysmooth: true
group: basic
driveenergy:
numtype: float
'null': true
verbose_name: Work Per Stroke (J)
ax_min: 0
ax_max: 1000
mode: both
sigfigs: 0
type: pro
maysmooth: true
group: forcepower
power:
numtype: float
'null': true
verbose_name: Power (W)
ax_min: 0
ax_max: 600
mode: both
sigfigs: 0
type: basic
maysmooth: true
group: forcepower
averageforce:
numtype: float
'null': true
verbose_name: Average Drive Force (N)
ax_min: 0
ax_max: 1200
mode: both
sigfigs: 0
maysmooth: true
type: pro
group: forcepower
peakforce:
numtype: float
'null': true
verbose_name: Peak Drive Force (N)
ax_min: 0
ax_max: 1500
sigfigs: 0
mode: both
maysmooth: true
type: pro
group: forcepower
drivelength:
numtype: float
'null': true
verbose_name: Drive Length (m)
ax_min: 0
ax_max: 2.5
mode: rower
sigfigs: 2
maysmooth: false
type: pro
group: stroke
forceratio:
numtype: float
'null': true
verbose_name: Average/Peak Force Ratio
ax_min: 0
ax_max: 1
sigfigs: 2
maysmooth: true
mode: both
type: pro
group: forcepower
distance:
numtype: float
'null': true
verbose_name: Interval Distance (m)
ax_min: 0
ax_max: 100000.0
sigfigs: 0
mode: both
maysmooth: false
type: basic
group: basic
cumdist:
numtype: float
'null': true
verbose_name: Cumulative Distance (m)
ax_min: 0
ax_max: 100000.0
mode: both
sigfigs: 0
maysmooth: false
type: basic
group: basic
drivespeed:
numtype: float
'null': true
verbose_name: Drive Speed (m/s)
ax_min: 0
ax_max: 4
default: 0
sigfigs: 2
maysmooth: true
mode: both
type: pro
group: stroke
catch:
numtype: float
'null': true
verbose_name: Catch Angle (degrees)
ax_min: -40
ax_max: -75
default: 0
sigfigs: 0
mode: water
maysmooth: true
type: pro
group: stroke
slip:
numtype: float
'null': true
verbose_name: Slip (degrees)
ax_min: 0
ax_max: 20
default: 0
sigfigs: 1
maysmooth: true
mode: water
type: pro
group: stroke
finish:
numtype: float
'null': true
verbose_name: Finish Angle (degrees)
ax_min: 20
ax_max: 55
default: 0
sigfigs: 0
maysmooth: true
mode: water
type: pro
group: stroke
wash:
numtype: float
'null': true
verbose_name: Wash (degrees)
ax_min: 0
ax_max: 30
default: 0
sigfigs: 1
maysmooth: true
mode: water
type: pro
group: stroke
peakforceangle:
numtype: float
'null': true
verbose_name: Peak Force Angle
ax_min: -50
ax_max: 50
default: 0
sigfigs: 0
maysmooth: true
mode: water
type: pro
group: stroke
totalangle:
numtype: float
'null': true
verbose_name: Drive Length (deg)
ax_min: 40
ax_max: 140
default: 0
sigfigs: 0
maysmooth: true
mode: water
type: pro
group: stroke
check_factor:
numtype: float
'null': true
verbose_name: Check Factor
ax_min: 0
ax_max: 100
default: 0
sigfigs: 1
maysmooth: true
mode: water
type: pro
group: stroke
effectiveangle:
numtype: float
'null': true
verbose_name: Effective Drive Length (deg)
ax_min: 40
ax_max: 140
default: 0
sigfigs: 0
mode: water
maysmooth: true
type: pro
group: stroke
rhythm:
numtype: float
'null': true
verbose_name: Stroke Rhythm
ax_min: 20
ax_max: 55
default: 1.0
sigfigs: 0
mode: erg
maysmooth: true
type: pro
group: stroke
efficiency:
numtype: float
'null': true
verbose_name: OTW Efficiency (%)
ax_min: 0
ax_max: 110
default: 0
sigfigs: 0
mode: water
maysmooth: true
type: pro
group: forcepower
distanceperstroke:
numtype: float
'null': true
verbose_name: Distance per Stroke (m)
ax_min: 0
ax_max: 15
default: 0
sigfigs: 1
maysmooth: true
mode: both
type: basic
group: basic