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 rounds 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 = round(datetime.now(timezone.utc).timestamp()) + 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.rating_mu}, {event.rating_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()
Release files for elommr 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| elommr-1.2.0.tar.gz | 9.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| elommr-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:19.1 kB
Release files / elommr-1.2.0.tar.gz
| Download URL | elommr-1.2.0.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7d75e9417e0173e11b8551d12f36b1d330aac9fe4c4079640a366911c48c3ffd
|
|
BLAKE2b-256 checksum How to use checksums |
e6180c8c216d19f196d19521916a3eca333b5fb2b4fc3e3570393c101f9b8a01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / elommr-1.2.0-py3-none-any.whl
| Download URL | elommr-1.2.0-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
815432ebcdbf32127f0ba120a57a09cdf7219a0213e11bf664501182b8119854
|
|
BLAKE2b-256 checksum How to use checksums |
9a5ae06419c36150b322773bc032e5fdd8e83d1e862028277b943d8bca699f21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|