A python implementation of the whole-history-rating algorythm by Rémi Coulom
Project description
# whole_history_rating
a python convertion from the ruby implementation of Rémi Coulom's Whole-History Rating (WHR) algorithm.
the original code can be found [here](https://github.com/goshrine/whole_history_rating)
Installation
------------
pip install whole_history_rating
Usage
-----
from whr import whole_history_rating
whr = whole_history_rating.Base()
# Base.create_game() arguments: black player name, white player name, winner, day number, handicap
# Handicap should generally be less than 500 elo
whr.create_game("shusaku", "shusai", "B", 1, 0)
whr.create_game("shusaku", "shusai", "W", 2, 0)
whr.create_game("shusaku", "shusai", "W", 3, 0)
# Iterate the WHR algorithm towards convergence with more players/games, more iterations are needed.
whr.iterate(50)
# Or let the module iterate until the elo is stable (precision by default 10E-3) with a time limit of 10 seconds by default
whr.auto_iterate(time_limit = 10, precision = 10E-3)
# Results are stored in one triplet for each day: [day_number, elo_rating, uncertainty]
whr.ratings_for_player("shusaku") =>
[[1, -43, 84],
[2, -45, 84],
[3, -45, 84]]
whr.ratings_for_player("shusai") =>
[[1, 43, 84],
[2, 45, 84],
[3, 45, 84]]
# You can print or get all ratings ordered
whr.print_ordered_ratings()
whr.get_ordered_ratings()
# You can get a prediction for a future game between two players (even non existing players)
# Base.probability_future_match() arguments: black player name, white player name, handicap
whr.probability_future_match("shusaku", "shusai",0) =>
win probability: shusaku:37.24%; shusai:62.76%
# You can load several games all together using a file or a list of string representing the game
# all elements in list must be like: "black_name white_name winner time_step handicap extras"
# you can exclude handicap (default=0) and extras (default={})
whr.load_games(["shusaku shusai B 1 0", "shusaku shusai W 2", "shusaku shusai W 3 0"])
whr.load_games(["firstname1 name1, firstname2 name2, W, 1"], separator=",")
# You can save and load a base (you don't have to redo all iterations)
whr.save_base(path)
whr2 = whole_history_rating.Base.load_base(path)
a python convertion from the ruby implementation of Rémi Coulom's Whole-History Rating (WHR) algorithm.
the original code can be found [here](https://github.com/goshrine/whole_history_rating)
Installation
------------
pip install whole_history_rating
Usage
-----
from whr import whole_history_rating
whr = whole_history_rating.Base()
# Base.create_game() arguments: black player name, white player name, winner, day number, handicap
# Handicap should generally be less than 500 elo
whr.create_game("shusaku", "shusai", "B", 1, 0)
whr.create_game("shusaku", "shusai", "W", 2, 0)
whr.create_game("shusaku", "shusai", "W", 3, 0)
# Iterate the WHR algorithm towards convergence with more players/games, more iterations are needed.
whr.iterate(50)
# Or let the module iterate until the elo is stable (precision by default 10E-3) with a time limit of 10 seconds by default
whr.auto_iterate(time_limit = 10, precision = 10E-3)
# Results are stored in one triplet for each day: [day_number, elo_rating, uncertainty]
whr.ratings_for_player("shusaku") =>
[[1, -43, 84],
[2, -45, 84],
[3, -45, 84]]
whr.ratings_for_player("shusai") =>
[[1, 43, 84],
[2, 45, 84],
[3, 45, 84]]
# You can print or get all ratings ordered
whr.print_ordered_ratings()
whr.get_ordered_ratings()
# You can get a prediction for a future game between two players (even non existing players)
# Base.probability_future_match() arguments: black player name, white player name, handicap
whr.probability_future_match("shusaku", "shusai",0) =>
win probability: shusaku:37.24%; shusai:62.76%
# You can load several games all together using a file or a list of string representing the game
# all elements in list must be like: "black_name white_name winner time_step handicap extras"
# you can exclude handicap (default=0) and extras (default={})
whr.load_games(["shusaku shusai B 1 0", "shusaku shusai W 2", "shusaku shusai W 3 0"])
whr.load_games(["firstname1 name1, firstname2 name2, W, 1"], separator=",")
# You can save and load a base (you don't have to redo all iterations)
whr.save_base(path)
whr2 = whole_history_rating.Base.load_base(path)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for whole_history_rating-1.3.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee564053abfc8cd680f2d95ded0567b96467723419353dff99b4dffb14e40657 |
|
MD5 | 556ee0da9e0a3ef956d32c3c4b0531ae |
|
BLAKE2b-256 | 617a8aee2daaff740bd477f30eb1c2544d9e58d39dd6904540c5646cb721a9ba |
Close
Hashes for whole_history_rating-1.3.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df05a13ea65dbb0a72af930462c084c705c06612fc24e82bcf146d454948aa90 |
|
MD5 | b067496bfd9edfc9ba9aece6c3c063f0 |
|
BLAKE2b-256 | 9a3ddba50341da4fe058aa4411c7a2209e3920a019fe1a70d3d103ce5451fff3 |