Git Product home page Git Product logo

ranking-table-tennis's Introduction

ranking-table-tennis

Ranking system for table tennis players.

The system keeps a record of championship points and rating points.

Championship points aim at tracking the tournament achievements of players. Their computation is based on the best rounds reached by players in each tournament.

Rating points aim at tracking the relative skill level of players. Their computation is based on the outcomes of one-versus-one matches.

Installation

This system has been developed for a Linux environment.

Poetry installation (recommended)

poetry install

System-wide installation

sudo pip install ranking-table-tennis

Single-user installation

pip install --user ranking-table-tennis

Uninstallation

[sudo] pip uninstall ranking-table-tennis

Update

System-wide update

sudo pip install -U ranking-table-tennis

Single-user update (recommended)

pip install --user -U ranking-table-tennis

Usage

The commands must be run in a bash terminal.

  1. Fill a sheet with the tournament matches. It must be saved in the Tournaments spreadsheet (xlsx).

    Players and Initial Ranking sheets must be in the same spreadsheet (it is used as a database).

  2. Run rtt preprocess.

    The scripts will read the Tournament spreadsheet and will ask for missing information of new players (city, affiliation, initial rating points, and category). This information will be saved in the Players and Initial Ranking sheets.

  3. Run rtt compute.

    It will ask for the tournament that you want to process. 0 will compute all from the beggining. The outcome will be saved in the Ranking spreadsheet.

  4. Run rtt publish.

    It will ask for the index of the tournament that you want to publish. The outcome will be saved in a new spreadsheet.

Development

Install locally from source (source directory will immediately affect the installed package without needing to re-install):

pip install --user --editable .

sudo apt install graphviz (still required?)

Update version at pyproject.toml and then create a source distribution

poetry build

Upload to PyPI

poetry publish [--dry-run] [--build]

Upload to TestPyPI

poetry publish -r testpypi [--dry-run] [--build]

ranking-table-tennis's People

Contributors

dependabot[bot] avatar srvanrell avatar steap avatar

Watchers

 avatar  avatar  avatar

Forkers

steap

ranking-table-tennis's Issues

Improve config system

Configs are simple yaml files. That could be replaced for a more elegant strategy like OmegaConf.

Single command rtt

Create a single command line rtt that call the other scripts as:

  • rtt preprocess
  • rtt compute-ranking
  • rtt publish

Consider moving database to BigQuery

Currently, database is created locally every time scripts are executed. They could be stored as BigQuery tables, which would enable creation of published sheets much easier and less manual.

Evolution plots

A few ideas to be implemented in the future:

  • Number of participants vs tournaments (overall and per category)
  • Number of active/inactive players vs tournaments (overall and per category)

Config cannot change during a championship

Currently configs are considered fixed during the championship and when it was required, hacks have been added to make changes during a championship. Evaluate an alternative approach to consider these kind of changes, which would allow to reuse configs from one year to the other.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.