Skip to main content

A minimal, Python implementation of the Elo-MMR rating system.

Project description

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 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)

Uploaded Source

Built Distribution

elommr-1.2.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

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

Hashes for elommr-1.2.1.tar.gz
Algorithm Hash digest
SHA256 7918a1db7619d2c80ebe2dd19d1db171884c9f112f35952e783cc54297a96873
MD5 5da034b07678b40cc5c30129096bdce6
BLAKE2b-256 99a6c658bd2fdc854e5444922db8400334ab6b6df5b1d4d97e4d69aa3a417665

See more details on using hashes here.

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

Hashes for elommr-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e2e644f9e1f877070a33573bda7b3fcf1f11629b880fd905e95a8d19707de786
MD5 ca19e2d1d873a5adb826b1fa308db44e
BLAKE2b-256 9783edd3ed6195e0494ad2b95c1083f7e5b85207c6277f165b03ee1bc662503b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page