Ranking Scale for Ultimate Frisbee

Ranking Scale

EXEMPLES:

sage: from slabbe.ranking_scale import *
sage: R = RankingScale_CQU4_2011()
sage: R = RankingScale_USAU_2013()
sage: R = RankingScale_CQU4_2014()

AUTHOR :

  • Sébastien Labbé, Fall 2011, first version
class slabbe.ranking_scale.RankingScale(scale_names, scales)

Bases: object

INPUT:

  • scale_names – iterable of str
  • scales – iterable of list

NOTE: the ordering of both input must match

length()

EXEMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2011
sage: R = RankingScale_CQU4_2011()
sage: R.length()
105
plot(pointsize=20)
pointage_csv(filename='pointage.csv', dialect='excel')

EXEMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2011
sage: R = RankingScale_CQU4_2011()
sage: R.pointage_csv()          # not tested
Creation of file pointage.csv
table()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2011
sage: R = RankingScale_CQU4_2011()
sage: R.table()
  Position   Grand Chelem   Mars Attaque   La Flotte   Petit Chelem
  1          1000           1000           800         400
  2          938            938            728         355
  3          884            884            668         317
  4          835            835            614         285
  5          791            791            566         256
  6          750            750            522         230
  7          711            711            482         206
  8          675            675            444         184
  9          641            641            409         164
  10         609            609            377         146
...
  95         0              11             0           0
  96         0              10             0           0
  97         0              9              0           0
  98         0              8              0           0
  99         0              7              0           0
  100        0              6              0           0
  101        0              4              0           0
  102        0              3              0           0
  103        0              2              0           0
  104        0              1              0           0
slabbe.ranking_scale.RankingScale_CQU4_2011()

EXEMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2011
sage: R = RankingScale_CQU4_2011()
sage: R.table()
  Position   Grand Chelem   Mars Attaque   La Flotte   Petit Chelem
  1          1000           1000           800         400
  2          938            938            728         355
  3          884            884            668         317
  4          835            835            614         285
  5          791            791            566         256
  6          750            750            522         230
  7          711            711            482         206
  8          675            675            444         184
  9          641            641            409         164
  10         609            609            377         146
...
  95         0              11             0           0
  96         0              10             0           0
  97         0              9              0           0
  98         0              8              0           0
  99         0              7              0           0
  100        0              6              0           0
  101        0              4              0           0
  102        0              3              0           0
  103        0              2              0           0
  104        0              1              0           0
slabbe.ranking_scale.RankingScale_CQU4_2014(R=1, base=e)

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2014
sage: R = RankingScale_CQU4_2014()
slabbe.ranking_scale.RankingScale_CQU4_2015_v1()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2015_v1
sage: R = RankingScale_CQU4_2015_v1()
slabbe.ranking_scale.RankingScale_CQU4_2015_v2()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2015_v2
sage: R = RankingScale_CQU4_2015_v2()
slabbe.ranking_scale.RankingScale_CQU4_2015_v3()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2015_v3
sage: R = RankingScale_CQU4_2015_v3()
slabbe.ranking_scale.RankingScale_CQU4_2015_v4()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2015_v4
sage: R = RankingScale_CQU4_2015_v4()
slabbe.ranking_scale.RankingScale_CQU4_2015_v5()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_CQU4_2015_v5
sage: R = RankingScale_CQU4_2015_v5()
slabbe.ranking_scale.RankingScale_USAU_2013()

EXAMPLES:

sage: from slabbe.ranking_scale import RankingScale_USAU_2013
sage: R = RankingScale_USAU_2013()
sage: R.table()
  Position   Serie 1500   Serie 1000   Serie 500   Serie 250
  1          1500         1000         500         250
  2          1366         911          455         228
  3          1252         835          417         209
  4          1152         768          384         192
  5          1061         708          354         177
  6          979          653          326         163
  7          903          602          301         151
  8          832          555          278         139
  9          767          511          256         128
  10         706          471          236         118
  11         648          432          217         109
  12         595          397          199         100
  13         544          363          182         91
  14         497          332          166         83
  15         452          302          151         76
  16         410          274          137         69
  17         371          248          124         62
  18         334          223          112         56
  19         299          199          100         50
  20         266          177          89          45
  21         235          157          79          40
  22         206          137          69          35
  23         178          119          60          30
  24         152          102          51          26
  25         128          86           43          22
  26         106          71           36          18
  27         85           57           29          15
  28         66           44           22          12
  29         47           32           16          9
  30         31           21           11          6
  31         15           10           6           3
  32         1            1            1           1
slabbe.ranking_scale.curve(nb_equipes, max_points=100, K=1, R=2, base=2, verbose=False)

INPUT:

  • nb_equipes – integer
  • max_points – integer
  • K – the value at p = nb_equipes
  • R – real (default: 2), curve parameter
  • base – 2
  • verbose - bool

EXEMPLES:

sage: from slabbe.ranking_scale import curve
sage: curve(20, 100)
-99*(p*(log(40) + 1) - p*log(p) - 20*log(40) + 20*log(20) -
20)/(19*log(40) - 20*log(20) + 19) + 1
sage: curve(64, 100)
-33*(p*(7*log(2) + 1) - p*log(p) - 64*log(2) - 64)/(19*log(2) + 21) + 1
sage: curve(64, 100)(p=64)
1
sage: curve(64, 100)(p=1)
100
sage: curve(64, 100)(p=2)
66*(26*log(2) + 31)/(19*log(2) + 21) + 1
sage: n(curve(64, 100)(p=2))     # abs tol 1e-10
95.6871477097753
sage: curve(64, 100, verbose=True)
fn = -(p*(7*log(2) + 1) - p*log(p) - 64*log(2) - 64)/log(2)
aire = 147.889787576005
fn normalise = -33*(p*(7*log(2) + 1) - p*log(p) - 64*log(2) - 64)/(19*log(2) + 21) + 1
-33*(p*(7*log(2) + 1) - p*log(p) - 64*log(2) - 64)/(19*log(2) + 21) + 1

The base argument seems to be useless (why?):

sage: curve(100,100,base=3)
-99*(p*(log(200) + 1) - p*log(p) - 100*log(200) + 200*log(10) - 
100)/(99*log(200) - 200*log(10) + 99) + 1
sage: curve(100,100,base=2)
-99*(p*(log(200) + 1) - p*log(p) - 100*log(200) + 200*log(10) -
100)/(99*log(200) - 200*log(10) + 99) + 1
slabbe.ranking_scale.discrete_curve(nb_equipes, max_points=100, K=1, R=2, base=2, verbose=False)

INPUT:

  • nb_equipes – integer
  • max_points – integer
  • K – the value at p = nb_equipes
  • R – real (default: 2), curve parameter
  • base – 2
  • verbose - bool

EXEMPLES:

sage: from slabbe.ranking_scale import discrete_curve
sage: A = discrete_curve(64, 100,verbose=True)
First difference sequence is
[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1,
2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 3, 2, 3, 3, 3, 4, 4, 4]
sage: A = discrete_curve(64, 100)
sage: B = discrete_curve(32, 50)
sage: C = discrete_curve(16, 25)
sage: A
[100, 96, 92, 88, 85, 82, 79, 77, 74, 71, 69, 67, 64, 62, 60, 58,
56, 54, 52, 50, 49, 47, 45, 44, 42, 41, 39, 38, 36, 35, 33, 32, 31,
29, 28, 27, 26, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
11, 10, 9, 8, 8, 7, 6, 5, 5, 4, 3, 2, 2, 1]
sage: B
[50, 46, 43, 40, 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 17,
16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1]
sage: C
[25, 22, 19, 17, 15, 13, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1]
sage: A = discrete_curve(64+2, 100) #Movember, Bye Bye, Cdf, MA
sage: B = discrete_curve(32+2, 70)  # la flotte
sage: C = discrete_curve(16+2, 40) # october fest, funenuf, la viree
slabbe.ranking_scale.discrete_curve_2(nb_equipes, max_points=100)
slabbe.ranking_scale.table_to_csv(self, filename, dialect='excel')