Skip to main content
PyPI downloads PyPI version info License

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)

Source distribution for elommr 1.2.0
File Size Uploaded
elommr-1.2.0.tar.gz 9.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elommr 1.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

1.2.1

2 release files

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page