calculates age group 2k
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from utils import lbstoN
|
||||
import numpy as np
|
||||
from models import C2WorldClassAgePerformance
|
||||
import pandas as pd
|
||||
|
||||
rowingmetrics = (
|
||||
('time',{
|
||||
@@ -316,3 +318,22 @@ def calc_trimp(df,sex,hrmax,hrmin):
|
||||
trimp = trimpdata.sum()
|
||||
|
||||
return trimp
|
||||
|
||||
def getagegroup2k(age,sex='male',weightcategory='hwt'):
|
||||
df = pd.DataFrame(
|
||||
list(
|
||||
C2WorldClassAgePerformance.objects.filter(
|
||||
sex=sex,
|
||||
weightcategory=weightcategory
|
||||
).values()
|
||||
)
|
||||
)
|
||||
|
||||
ages = df['agemin']
|
||||
powers = df['power']
|
||||
|
||||
poly_coefficients = np.polyfit(ages,powers,6)
|
||||
|
||||
power = np.polyval(poly_coefficients,age)
|
||||
|
||||
return power
|
||||
|
||||
@@ -183,7 +183,7 @@ def make_records(readfile):
|
||||
save_agegroup(female_df,'hwt','female')
|
||||
save_agegroup(male_df,'hwt','male')
|
||||
save_agegroup(female_lw_df,'lwt','female')
|
||||
save_agegroup(female_lw_df,'lwt','male')
|
||||
save_agegroup(male_lw_df,'lwt','male')
|
||||
|
||||
|
||||
class C2WorldClassAgePerformance(models.Model):
|
||||
@@ -218,7 +218,7 @@ class C2WorldClassAgePerformance(models.Model):
|
||||
unique_together = ('agemin','agemax','sex','weightcategory','distance')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name+':'+str(self.agemin)+'-'+str(self.agemax)+' ('+str(self.season)+')'
|
||||
return self.sex+' '+self.weightcategory+' '+self.name+':'+str(self.agemin)+'-'+str(self.agemax)+' ('+str(self.season)+')'
|
||||
|
||||
# For future Team functionality
|
||||
class Team(models.Model):
|
||||
|
||||
@@ -259,6 +259,9 @@
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if worldclasspower %}
|
||||
World class 2k for your age, weight is {{ worldclasspower }} Watt
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -263,3 +263,8 @@ def myqueue(queue,function,*args,**kwargs):
|
||||
return job
|
||||
|
||||
|
||||
from datetime import date
|
||||
|
||||
def calculate_age(born):
|
||||
today = date.today()
|
||||
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
|
||||
|
||||
@@ -710,7 +710,8 @@ def splitstdata(lijst):
|
||||
|
||||
from utils import (
|
||||
geo_distance,serialize_list,deserialize_list,uniqify,
|
||||
str2bool,range_to_color_hex,absolute,myqueue,get_call
|
||||
str2bool,range_to_color_hex,absolute,myqueue,get_call,
|
||||
calculate_age
|
||||
)
|
||||
|
||||
import datautils
|
||||
@@ -3220,6 +3221,16 @@ def rankings_view(request,theuser=0,
|
||||
promember=0
|
||||
if not request.user.is_anonymous():
|
||||
r = getrower(request.user)
|
||||
if r.birthdate:
|
||||
age = calculate_age(r.birthdate)
|
||||
worldclasspower = int(metrics.getagegroup2k(
|
||||
age,
|
||||
sex=r.sex,
|
||||
weightcategory=r.weightcategory
|
||||
))
|
||||
else:
|
||||
worldclasspower = None
|
||||
|
||||
result = request.user.is_authenticated() and ispromember(request.user)
|
||||
if result:
|
||||
promember=1
|
||||
@@ -3488,6 +3499,7 @@ def rankings_view(request,theuser=0,
|
||||
'form':form,
|
||||
'dateform':dateform,
|
||||
'deltaform':deltaform,
|
||||
'worldclasspower':worldclasspower,
|
||||
'id': theuser,
|
||||
'theuser':uu,
|
||||
'startdate':startdate,
|
||||
|
||||
Reference in New Issue
Block a user