calculates age group 2k
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
from utils import lbstoN
|
from utils import lbstoN
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from models import C2WorldClassAgePerformance
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
rowingmetrics = (
|
rowingmetrics = (
|
||||||
('time',{
|
('time',{
|
||||||
@@ -316,3 +318,22 @@ def calc_trimp(df,sex,hrmax,hrmin):
|
|||||||
trimp = trimpdata.sum()
|
trimp = trimpdata.sum()
|
||||||
|
|
||||||
return trimp
|
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(female_df,'hwt','female')
|
||||||
save_agegroup(male_df,'hwt','male')
|
save_agegroup(male_df,'hwt','male')
|
||||||
save_agegroup(female_lw_df,'lwt','female')
|
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):
|
class C2WorldClassAgePerformance(models.Model):
|
||||||
@@ -218,7 +218,7 @@ class C2WorldClassAgePerformance(models.Model):
|
|||||||
unique_together = ('agemin','agemax','sex','weightcategory','distance')
|
unique_together = ('agemin','agemax','sex','weightcategory','distance')
|
||||||
|
|
||||||
def __unicode__(self):
|
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
|
# For future Team functionality
|
||||||
class Team(models.Model):
|
class Team(models.Model):
|
||||||
|
|||||||
@@ -259,6 +259,9 @@
|
|||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% if worldclasspower %}
|
||||||
|
World class 2k for your age, weight is {{ worldclasspower }} Watt
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -263,3 +263,8 @@ def myqueue(queue,function,*args,**kwargs):
|
|||||||
return job
|
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 (
|
from utils import (
|
||||||
geo_distance,serialize_list,deserialize_list,uniqify,
|
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
|
import datautils
|
||||||
@@ -3220,6 +3221,16 @@ def rankings_view(request,theuser=0,
|
|||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous():
|
||||||
r = getrower(request.user)
|
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)
|
result = request.user.is_authenticated() and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
@@ -3488,6 +3499,7 @@ def rankings_view(request,theuser=0,
|
|||||||
'form':form,
|
'form':form,
|
||||||
'dateform':dateform,
|
'dateform':dateform,
|
||||||
'deltaform':deltaform,
|
'deltaform':deltaform,
|
||||||
|
'worldclasspower':worldclasspower,
|
||||||
'id': theuser,
|
'id': theuser,
|
||||||
'theuser':uu,
|
'theuser':uu,
|
||||||
'startdate':startdate,
|
'startdate':startdate,
|
||||||
|
|||||||
Reference in New Issue
Block a user