A minimal, Python implementation of the Elo-MMR rating system.
Project description
A minimal, Python implementation of the Elo-MMR rating system as described in this paper.
Installation
To install elommr, install it from pypi under the name elommr with pip or your favorite package manager.
pip install elommr --upgrade
Quick Example
You can view the docstrings for the EloMMR and Player classes for more information.
from elommr import EloMMR, Player
from datetime import datetime, timezone
def main():
elo_mmr = EloMMR()
player1 = Player()
player2 = Player()
standings = [
(
player1,
0, 0 # Range of players that got or tied for first
),
(
player2,
1, 1 # Range of players that got or tied for second
),
]
# Note that the contest_time does not do anything in this example
# because EloMMR.drift_per_sec defaults to 0, so contest_time
# can be omitted from the round_update call, but it is included
# here to show how it can be used.
# Do note, though, that you should either always include
# contest_time or never include it, because if you include it
# in some competitions and not others, the ratings will be skewed
# incorrectly.
contest_time = round(datetime.now(timezone.utc).timestamp())
elo_mmr.round_update(standings, contest_time)
contest_time += 1000
# Assumes the outcome of the next competition is the same as the
# previous, so the standings aren't changed.
elo_mmr.round_update(standings, contest_time)
for player in [player1, player2]:
print("\nrating_mu, rating_sig, perf_score, place")
for event in player.event_history:
print(f"{event.mu}, {event.sig}, {event.perf_score}, {event.place}")
print(f"Final rating: {player.event_history[-1].display_rating()}")
# >>>
# rating_mu, rating_sig, perf_score, place
# 1629, 171, 1654, 0
# 1645, 130, 1663, 0
# Final rating: 1645 ± 100
#
# rating_mu, rating_sig, perf_score, place
# 1371, 171, 1346, 1
# 1355, 130, 1337, 1
# Final rating: 1355 ± 100
if __name__ == '__main__':
main()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
elommr-1.2.1.tar.gz
(11.1 kB
view details)
Built Distribution
File details
Details for the file elommr-1.2.1.tar.gz
.
File metadata
- Download URL: elommr-1.2.1.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7918a1db7619d2c80ebe2dd19d1db171884c9f112f35952e783cc54297a96873 |
|
MD5 | 5da034b07678b40cc5c30129096bdce6 |
|
BLAKE2b-256 | 99a6c658bd2fdc854e5444922db8400334ab6b6df5b1d4d97e4d69aa3a417665 |
File details
Details for the file elommr-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: elommr-1.2.1-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2e644f9e1f877070a33573bda7b3fcf1f11629b880fd905e95a8d19707de786 |
|
MD5 | ca19e2d1d873a5adb826b1fa308db44e |
|
BLAKE2b-256 | 9783edd3ed6195e0494ad2b95c1083f7e5b85207c6277f165b03ee1bc662503b |