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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|