Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python implementation and usage #28

Open
kb-open opened this issue Apr 19, 2024 · 4 comments
Open

Python implementation and usage #28

kb-open opened this issue Apr 19, 2024 · 4 comments

Comments

@kb-open
Copy link

kb-open commented Apr 19, 2024

Thanks for the implementation. But how do we use this library in Python?

@EbTech
Copy link
Owner

EbTech commented Apr 20, 2024

This library would probably have to be packaged with https://github.com/PyO3/pyo3

It would be great if someone wants to help.

@kb-open
Copy link
Author

kb-open commented Apr 20, 2024

I have a few questions:

  • Can Elo-MMR (theoretically at least) provide probability that a 2-player will be draw (like TrueSkill provides)? Basically, I'm looking for a metric for quality / fairness of a 2-player match.
  • I see that there exists a Python implementation here. May I know whether you still would like one more Python implementation for this project of yours?

@EbTech
Copy link
Owner

EbTech commented Apr 22, 2024

Ties are tricky to model consistently across different games, and I think I recall them being somewhat messy in TrueSkill as well. You could try to do similar math for Elo-MMR; I'm not sure how it would turn out. We obtained simpler formulas by taking the limit as the likelihood of ties goes to zero, but in doing so we gave up on predicting ties.

Making Python wrappers for the Rust implementation would be different from making a pure Python implementation, so your second point depends on which you prefer.

@BeniaminC
Copy link

BeniaminC commented Jun 9, 2024

I open sourced the Python implementation. It is particularly slow, but I plan to release the CuPy, Numba, and standard Numpy implementation soon(tm). You can take a look and make adjustments for yourself. It is preparing for Python 3.13, which will release the GIL for threads. It has both individual updates (standard) and team updates which utilizes an aggregation method (sum of ratings by default).
https://github.com/BeniaminC/Open-ELO/blob/main/src/openelo/systems/elommr.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants