openskill


Nameopenskill JSON
Version 5.1.1 PyPI version JSON
download
home_page
SummaryMultiplayer Rating System. No Friction.
upload_time2024-02-03 12:27:08
maintainer
docs_urlNone
author
requires_python~=3.8
licenseMIT
keywords ranking trueskill statistics rating math rank
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            <p align="center" style="text-align: center">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/7yAVFkZ.png">
  <source media="(prefers-color-scheme: light)" srcset="https://i.imgur.com/UvrkUF3.png">
  <img alt="Multiplayer Rating System. No Friction." src="https://i.imgur.com/QJUy18S.png">
</picture>
</p>

<p align="center" style="text-align: center">A faster and open license asymmetric multi-team, multiplayer rating system comparable to TrueSkill.</p>

<p align="center" style="text-align: center">
    <a href="https://stand-with-ukraine.pp.ua">
        <img
            src="https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg"
            alt="Stand With Ukraine"
        />
    </a>
</p>

<p align="center" style="text-align: center">
    <a
        href="https://github.com/OpenDebates/openskill.py/actions/workflows/main.yml">
            <img
                src="https://github.com/OpenDebates/openskill.py/actions/workflows/main.yml/badge.svg"
                alt="Tests"
    />
    </a>
    <a
        href="https://codecov.io/gh/OpenDebates/openskill.py">
            <img
                src="https://codecov.io/gh/OpenDebates/openskill.py/branch/main/graph/badge.svg?token=Ep07QEelsi"
                alt="codecov" />
    <a
        href="https://openskill.me/en/latest/?badge=latest">
            <img
                src="https://readthedocs.org/projects/openskillpy/badge/?version=latest"
                    alt="Documentation Status"
            />
    </a>
    <img
        src="https://img.shields.io/github/all-contributors/OpenDebates/openskill.py/main"
    />
    <a style="border-width:0" href="https://doi.org/10.21105/joss.05901">
      <img src="https://joss.theoj.org/papers/10.21105/joss.05901/status.svg" alt="DOI badge" >
    </a>
</p>



## Description

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/openskill) ![Conda (channel only)](https://img.shields.io/conda/vn/conda-forge/openskill) ![PyPI - Implementation](https://img.shields.io/pypi/implementation/openskill)

[![Discord](https://img.shields.io/discord/1127581396345556994?logo=discord&label=Official%20Discord%20Server&color=%235865F2&link=https%3A%2F%2Fdiscord.com%2Finvite%2F4JNDeHMYkM)](https://discord.com/invite/4JNDeHMYkM)

In the multifaceted world of online gaming, an accurate multiplayer rating system plays a crucial role. A multiplayer rating system measures and compares players' skill levels in competitive games to ensure balanced match-making, boosting overall gaming experiences. Currently, TrueSkill by Microsoft Research is a notable rating system, but gaming communities are yearning for faster, more adaptable alternatives.

Here are *some*, but not all, of the reasons you should drop TrueSkill
and bury Elo once and for all:

- Multiplayer.
- Multifaction.
- Asymmetric faction size.
- Predict Win, Draw and Rank Outcomes.
- 150% faster than TrueSkill.
- 100% Pure Python.
- 100% Test Coverage.
- CPython and PyPy Support.
- 5 Separate Models.
- Fine-grained control of mathematical constants.
- Open License
- Up to 7% more accurate than TrueSkill.


## Installation
```shell
pip install openskill
```

## Usage

The official documentation is hosted [here](https://openskill.me/en/stable/).
Please refer to it for details on how to use this library.

### Limited Example

```python
>>> from openskill.models import PlackettLuce
>>> model = PlackettLuce()
>>> model.rating()
PlackettLuceRating(mu=25.0, sigma=8.333333333333334)
>>> r = model.rating
>>> [[a, b], [x, y]] = [[r(), r()], [r(), r()]]
>>> [[a, b], [x, y]] = model.rate([[a, b], [x, y]])
>>> a
PlackettLuceRating(mu=26.964294621803063, sigma=8.177962604389991)
>>> x
PlackettLuceRating(mu=23.035705378196937, sigma=8.177962604389991)
>>> (a == b) and (x == y)
True
```

# Support
If you're struggling with any of the concepts, please search the discussions section to see if your question has already been answered.
If you can't find an answer, please open a new [discussion](https://github.com/OpenDebates/openskill.py/discussions) and we'll try to help you out.
You can also get help from the official [Discord Server](https://discord.com/invite/4JNDeHMYkM>). If you have a feature request, or want to report
a bug please create a new [issue](https://github.com/OpenDebates/openskill.py/issues/new/choose) if one already doesn't exist.

# References
This project is originally based off the [openskill.js](https://github.com/philihp/openskill.js) package. All of the Weng-Lin models are based off the work in this wonderful [paper](https://jmlr.org/papers/v12/weng11a.html) or are the derivatives of algorithms found in it.

- Julia Ibstedt, Elsa Rådahl, Erik Turesson, and Magdalena vande Voorde. Application and further development of trueskill™ ranking in sports. 2019.
- Ruby C. Weng and Chih-Jen Lin. A bayesian approximation method for online ranking. Journal of Machine Learning Research, 12(9):267–300, 2011. URL: http://jmlr.org/papers/v12/weng11a.html.

## Implementations in other Languages
- [Javascript](https://github.com/philihp/openskill.js)
- [Elixir](https://github.com/philihp/openskill.ex)
- [Kotlin](https://github.com/brezinajn/openskill.kt)
- [Lua](https://github.com/bstummer/openskill.lua)

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "openskill",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "~=3.8",
    "maintainer_email": "Vivek Joshy <vivek@opendebates.net>",
    "keywords": "ranking trueskill statistics rating math rank",
    "author": "",
    "author_email": "Vivek Joshy <vivek@opendebates.net>",
    "download_url": "https://files.pythonhosted.org/packages/8e/ea/2b5b9ad853970e47e39f2c6386f5aa70f0977b205a3fabf68cbce1145a79/openskill-5.1.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\" style=\"text-align: center\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://i.imgur.com/7yAVFkZ.png\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"https://i.imgur.com/UvrkUF3.png\">\n  <img alt=\"Multiplayer Rating System. No Friction.\" src=\"https://i.imgur.com/QJUy18S.png\">\n</picture>\n</p>\n\n<p align=\"center\" style=\"text-align: center\">A faster and open license asymmetric multi-team, multiplayer rating system comparable to TrueSkill.</p>\n\n<p align=\"center\" style=\"text-align: center\">\n    <a href=\"https://stand-with-ukraine.pp.ua\">\n        <img\n            src=\"https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg\"\n            alt=\"Stand With Ukraine\"\n        />\n    </a>\n</p>\n\n<p align=\"center\" style=\"text-align: center\">\n    <a\n        href=\"https://github.com/OpenDebates/openskill.py/actions/workflows/main.yml\">\n            <img\n                src=\"https://github.com/OpenDebates/openskill.py/actions/workflows/main.yml/badge.svg\"\n                alt=\"Tests\"\n    />\n    </a>\n    <a\n        href=\"https://codecov.io/gh/OpenDebates/openskill.py\">\n            <img\n                src=\"https://codecov.io/gh/OpenDebates/openskill.py/branch/main/graph/badge.svg?token=Ep07QEelsi\"\n                alt=\"codecov\" />\n    <a\n        href=\"https://openskill.me/en/latest/?badge=latest\">\n            <img\n                src=\"https://readthedocs.org/projects/openskillpy/badge/?version=latest\"\n                    alt=\"Documentation Status\"\n            />\n    </a>\n    <img\n        src=\"https://img.shields.io/github/all-contributors/OpenDebates/openskill.py/main\"\n    />\n    <a style=\"border-width:0\" href=\"https://doi.org/10.21105/joss.05901\">\n      <img src=\"https://joss.theoj.org/papers/10.21105/joss.05901/status.svg\" alt=\"DOI badge\" >\n    </a>\n</p>\n\n\n\n## Description\n\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/openskill) ![Conda (channel only)](https://img.shields.io/conda/vn/conda-forge/openskill) ![PyPI - Implementation](https://img.shields.io/pypi/implementation/openskill)\n\n[![Discord](https://img.shields.io/discord/1127581396345556994?logo=discord&label=Official%20Discord%20Server&color=%235865F2&link=https%3A%2F%2Fdiscord.com%2Finvite%2F4JNDeHMYkM)](https://discord.com/invite/4JNDeHMYkM)\n\nIn the multifaceted world of online gaming, an accurate multiplayer rating system plays a crucial role. A multiplayer rating system measures and compares players' skill levels in competitive games to ensure balanced match-making, boosting overall gaming experiences. Currently, TrueSkill by Microsoft Research is a notable rating system, but gaming communities are yearning for faster, more adaptable alternatives.\n\nHere are *some*, but not all, of the reasons you should drop TrueSkill\nand bury Elo once and for all:\n\n- Multiplayer.\n- Multifaction.\n- Asymmetric faction size.\n- Predict Win, Draw and Rank Outcomes.\n- 150% faster than TrueSkill.\n- 100% Pure Python.\n- 100% Test Coverage.\n- CPython and PyPy Support.\n- 5 Separate Models.\n- Fine-grained control of mathematical constants.\n- Open License\n- Up to 7% more accurate than TrueSkill.\n\n\n## Installation\n```shell\npip install openskill\n```\n\n## Usage\n\nThe official documentation is hosted [here](https://openskill.me/en/stable/).\nPlease refer to it for details on how to use this library.\n\n### Limited Example\n\n```python\n>>> from openskill.models import PlackettLuce\n>>> model = PlackettLuce()\n>>> model.rating()\nPlackettLuceRating(mu=25.0, sigma=8.333333333333334)\n>>> r = model.rating\n>>> [[a, b], [x, y]] = [[r(), r()], [r(), r()]]\n>>> [[a, b], [x, y]] = model.rate([[a, b], [x, y]])\n>>> a\nPlackettLuceRating(mu=26.964294621803063, sigma=8.177962604389991)\n>>> x\nPlackettLuceRating(mu=23.035705378196937, sigma=8.177962604389991)\n>>> (a == b) and (x == y)\nTrue\n```\n\n# Support\nIf you're struggling with any of the concepts, please search the discussions section to see if your question has already been answered.\nIf you can't find an answer, please open a new [discussion](https://github.com/OpenDebates/openskill.py/discussions) and we'll try to help you out.\nYou can also get help from the official [Discord Server](https://discord.com/invite/4JNDeHMYkM>). If you have a feature request, or want to report\na bug please create a new [issue](https://github.com/OpenDebates/openskill.py/issues/new/choose) if one already doesn't exist.\n\n# References\nThis project is originally based off the [openskill.js](https://github.com/philihp/openskill.js) package. All of the Weng-Lin models are based off the work in this wonderful [paper](https://jmlr.org/papers/v12/weng11a.html) or are the derivatives of algorithms found in it.\n\n- Julia Ibstedt, Elsa R\u00e5dahl, Erik Turesson, and Magdalena vande Voorde. Application and further development of trueskill\u2122 ranking in sports. 2019.\n- Ruby C. Weng and Chih-Jen Lin. A bayesian approximation method for online ranking. Journal of Machine Learning Research, 12(9):267\u2013300, 2011. URL: http://jmlr.org/papers/v12/weng11a.html.\n\n## Implementations in other Languages\n- [Javascript](https://github.com/philihp/openskill.js)\n- [Elixir](https://github.com/philihp/openskill.ex)\n- [Kotlin](https://github.com/brezinajn/openskill.kt)\n- [Lua](https://github.com/bstummer/openskill.lua)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Multiplayer Rating System. No Friction.",
    "version": "5.1.1",
    "project_urls": {
        "Changelog": "https://github.com/OpenDebates/openskill.py/blob/main/CHANGELOG.rst",
        "Documentation": "https://openskill.me/en/stable",
        "Funding": "https://github.com/sponsors/OpenDebates",
        "Source": "https://github.com/OpenDebates/openskill.py",
        "Tracker": "https://github.com/OpenDebates/openskill.py/issues"
    },
    "split_keywords": [
        "ranking",
        "trueskill",
        "statistics",
        "rating",
        "math",
        "rank"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "410cb76dcea83f09777a0491f075005c9e9e50bccc160518873d8ea5382518af",
                "md5": "30376cb60652c36388dd761d71698ac3",
                "sha256": "7f3bcb8585b6fecd051b9a948d49f38a98dd13adc997de556136f379fd34a4aa"
            },
            "downloads": -1,
            "filename": "openskill-5.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "30376cb60652c36388dd761d71698ac3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.8",
            "size": 46546,
            "upload_time": "2024-02-03T12:27:06",
            "upload_time_iso_8601": "2024-02-03T12:27:06.208267Z",
            "url": "https://files.pythonhosted.org/packages/41/0c/b76dcea83f09777a0491f075005c9e9e50bccc160518873d8ea5382518af/openskill-5.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8eea2b5b9ad853970e47e39f2c6386f5aa70f0977b205a3fabf68cbce1145a79",
                "md5": "8f5754da6280eb26cea443e5d4015409",
                "sha256": "e38d5a96f31edfa6d93383aaef3a2920584e6da7a719ae728b7133c75f4cada7"
            },
            "downloads": -1,
            "filename": "openskill-5.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8f5754da6280eb26cea443e5d4015409",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.8",
            "size": 49211,
            "upload_time": "2024-02-03T12:27:08",
            "upload_time_iso_8601": "2024-02-03T12:27:08.037979Z",
            "url": "https://files.pythonhosted.org/packages/8e/ea/2b5b9ad853970e47e39f2c6386f5aa70f0977b205a3fabf68cbce1145a79/openskill-5.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-03 12:27:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OpenDebates",
    "github_project": "openskill.py",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "openskill"
}
        
Elapsed time: 0.18548s