athlib package¶
Note that all functions are available in the top level athlib package, even thought they may be defined in submodules.
Utilities¶
General athlib utility functions
-
athlib.utils.
check_performance_for_discipline
(discipline, textvalue)[source]¶ Fix up and return what they typed in, or raise ValueError
-
athlib.utils.
event_sort_key
(event_name)[source]¶ Return a tuple which will sort into programme order
Track should be ordered by distance.
-
athlib.utils.
get_distance
(discipline)[source]¶ Return approx distance in metres, for sanity checking :param discipline: :return:
-
athlib.utils.
parse_hms
(t)[source]¶ Parse a time duration with 0, 1 or 2 colons and return seconds.
>>> from athlib.utils import parse_hms >>> parse_hms('10') 10 >>> parse_hms('1:10') 70 >>> parse_hms('1:1:10') 3670 >>> parse_hms('1:1:10.1') 3670.1 >>> parse_hms(3670.1) 3670.1
-
athlib.utils.
sort_by_discipline
(stuff, attr='discipline')[source]¶ Sort dicts or objects into the normal athletics order
Utilities for working with JSON and json-like structures - deeply nested Python dicts and lists.
This lets us iterate over child nodes and access elements with a dot-notation.
Age Groups¶
IAAF scoring¶
This file contains definitions and utility functions for determining IAAF event scores.
-
athlib.iaaf_score.
performance
(gender, event_code, score)[source]¶ Function to determine performance required to achieve IAAF score, given gender and event.
In the interface, we assume performance is <seconds> for track events, and <metres> for throws and jumps. Ihe the Wikipedia-sourced factors, jumps are <centimetres>. Therefore there is a factor of 100 applied at the end.
-
athlib.iaaf_score.
score
(gender, event_code, value)[source]¶ Function to determine IAAF score, based on gender, event and performance.
In the interface, we assume performance is <seconds> for track events, and <metres> for throws and jumps. Ihe the Wikipedia-sourced factors, jumps are <centimetres>. Therefore there is a factor of 100 applied at the end.
Masters utilities¶
-
class
athlib.wma.agegrader.
AgeGrader
[source]¶ We implement an object to cache the data used for lookups.
end users will appear to be calling a function.
-
calculate_age_grade
(gender, age, event, performance, verbose=False)[source]¶ Return the age grade score (0 to 100ish) for this result.
>>> from athlib.wma.agegrader import AgeGrader >>> ag=AgeGrader() >>> "%0.4f" % ag.calculate_age_grade('m',50,'5K', '16:23') '0.9004' >>> "%0.4f" % ag.calculate_age_grade('f',50,'5K', '18:00') '0.9179' >>>
-
calculate_factor
(gender, age, event, distance=None)[source]¶ Work out ‘slowdown factor’ for a geezer of this age taking part in this event e.g.
>>> from athlib.wma.agegrader import AgeGrader >>> ag=AgeGrader() >>> ag.calculate_factor('M',68,'5k') 0.7592 >>> ag.calculate_factor('M',68,'200K') 0.7561 >>> ag.calculate_factor('M',68.5,'200K') 0.7522 >>> ag.calculate_factor('f',35,'5k') 0.9935 >>> ag.calculate_factor('f',35,'200K') 0.9926 >>> ag.calculate_factor('F',35.5,'200K') 0.99095 >>> ag.calculate_factor('M',65,'10000') 0.7691 >>> ag.calculate_factor('M',69,'10000') 0.7402 >>> ag.calculate_factor('F',35,'1500') 0.9822 >>> ag.calculate_factor('f',39,'1500') 0.9547 >>> ag.calculate_factor('f',35,'SH') 0.9791 >>> ag.calculate_factor('f',39,'SH') 0.9576 >>> ag.calculate_factor('m',35,'LH') 0.9647 >>> ag.calculate_factor('m',39,'LH') 0.9254
-
Codes¶
-
codes.
JUMPS
= ('HJ', 'PV', 'LJ', 'TJ')¶
-
codes.
THROWS
= ('DT', 'JT', 'HT', 'SP', 'WT')¶
-
codes.
MULTI_EVENTS
= ('PEN', 'HEP', 'DEC', 'PENI', 'PENWT')¶
-
codes.
FIELD_EVENTS
= ('HJ', 'PV', 'LJ', 'TJ', 'DT', 'JT', 'HT', 'SP', 'WT')¶
-
codes.
FIELD_SORT_ORDER
= ['HJ', 'PV', 'LJ', 'TJ', 'SP', 'DT', 'HT', 'JT']¶