abcvoting
abcvoting: A Python package for approval-based multi-winner voting rules - Published in JOSS (2023)
Science Score: 98.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 7 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: arxiv.org, springer.com, joss.theoj.org, zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Scientific Fields
Repository
Python implementations of approval-based committee (multi-winner) voting rules
Basic Info
- Host: GitHub
- Owner: martinlackner
- License: mit
- Language: Python
- Default Branch: master
- Homepage: https://abcvoting.readthedocs.io/
- Size: 7.64 MB
Statistics
- Stars: 39
- Watchers: 4
- Forks: 19
- Open Issues: 8
- Releases: 19
Topics
Metadata Files
README.md
abcvoting
[!NOTE] - Documentation - Installation
- How to cite the abcvoting library - Acknowledgements and contributors - ► abcvoting web app
For an overview of other software tools related to Computational Social Choice, see the COMSOC community page.
A Python library of approval-based committee (ABC) rules
Approval-based committee rules (ABC rules) are voting methods for selecting a committee, i.e., a fixed-size subset of candidates. ABC rules are also known as approval-based multi-winner rules. The input of such rules are approval ballots. We recommend the book (Multi-Winner Voting with Approval Preferences) by Lackner and Skowron [2] as a detailed introduction to ABC rules and related research directions. In addition, the survey by Faliszewski et al. [1] is useful as a more general introduction to committee voting (not limited to approval ballots).
The following ABC rules are implemented:
Approval Voting (AV)
Satisfaction Approval Voting (SAV)
Proportional Approval Voting (PAV)
Sequential Proportional Approval Voting (seq-PAV)
Reverse Sequential Proportional Approval Voting (revseq-PAV)
Approval Chamberlin-Courant (CC)
Phragmén's sequential rule
Monroe's rule
Minimax Approval Voting (MAV)
Greedy Monroe
Method of Equal Shares (Rule X)
Phragmén's First Method (Eneström's Method)
and many more ...
In addition, one can verify axiomatic properties such as
Justified Representation (JR)
Propotional Justified Representation (PJR)
Extended Justified Representation (EJR)
Priceability
The core property
Instead of using the abcvoting Python library, you can also use the abcvoting web application by Dominik Peters (which is based on this Python library).
Installation
As simple as:
bash
pip install abcvoting
Further details can be found here.
Development
Install all dependencies including development requirements and the abcvoting package in development mode:
bash
pip install -e ".[dev]"
Basic unit tests can be run by excluding tests which require additional dependencies:
bash
pytest -m "not mipgurobi and not gmpy2 and not slow" tests/
For development, configure the black formatter and pre-commit hooks - see below. Also installing all optional dependencies is recommended.
A development package is build for every commit on the master branch and uploaded to the test instance of PyPI. It can be installed using the following command:
bash
python3 -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple abcvoting
Black formatting
Code needs to be formatted using the black formatter. This is checked by Github actions. Configure your editor to run the black formatter.
Pre-commit hooks
Pre-commit hooks are not required, but they are recommended for development.
Pre-commit is used to manage and maintain pre-commit hooks. Install
pre-commit (e.g. via apt, conda or pip) and then run $ pre-commit install to install the hooks.
References
[1] Piotr Faliszewski, Piotr Skowron, Arkadii Slinko, and Nimrod Talmon. Multiwinner voting: A new challenge for social choice theory. In Ulle Endriss, editor, Trends in Computational Social Choice, chapter 2, pages 27–47. AI Access, 2017. http://research.illc.uva.nl/COST-IC1205/BookDocs/Chapters/TrendsCOMSOC-02.pdf
[2] Lackner, Martin, and Piotr Skowron. "Multi-Winner Voting with Approval Preferences". Springer International Publishing, SpringerBriefs in Intelligent Systems , 2023. https://link.springer.com/book/10.1007/978-3-031-09016-5
Owner
- Name: Martin Lackner
- Login: martinlackner
- Kind: user
- Location: Vienna, Austria
- Company: TU Wien
- Website: http://martin.lackner.xyz/
- Repositories: 4
- Profile: https://github.com/martinlackner
Researcher
JOSS Publication
abcvoting: A Python package for approval-based multi-winner voting rules
Authors
TU Wien, Vienna, Austria
Tags
voting committee voting social choice approval votingCitation (CITATION.cff)
cff-version: 1.2.0
title: "abcvoting"
message: >-
If you would like to acknowledge our work in a
scientific paper, please use the following citation:
preferred-citation:
type: article
journal: "Journal of Open Source Software"
title: "abcvoting: A Python package for approval-based multi-winner voting rules"
volume: 8
issue: 81
start: 4880
year: 2023
doi: 10.21105/joss.04880
url: 'https://github.com/martinlackner/abcvoting'
authors:
- given-names: Martin
family-names: Lackner
orcid: 'https://orcid.org/0000-0003-2170-0770'
- given-names: Peter
family-names: Regner
orcid: 'https://orcid.org/0000-0001-8480-4900'
- given-names: Benjamin
family-names: Krenn
GitHub Events
Total
- Create event: 3
- Release event: 2
- Issues event: 11
- Watch event: 6
- Issue comment event: 11
- Push event: 17
- Pull request review event: 1
- Pull request review comment event: 1
- Pull request event: 8
- Fork event: 2
Last Year
- Create event: 3
- Release event: 2
- Issues event: 11
- Watch event: 6
- Issue comment event: 11
- Push event: 17
- Pull request review event: 1
- Pull request review comment event: 1
- Pull request event: 8
- Fork event: 2
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Martin Lackner | u****d@s****t | 510 |
| lumbric | l****c@g****m | 99 |
| benjaminkrenn | b****b@g****m | 29 |
| Dominik Peters | m****l@d****e | 12 |
| Simon-Rey | r****n@o****r | 4 |
| stefanschlomoforster | 5****r | 2 |
| elvic96 | 5****6 | 1 |
| Paweł Batko | p****o@g****m | 1 |
| Florian-Lackner | 5****r | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 28
- Total pull requests: 70
- Average time to close issues: 10 months
- Average time to close pull requests: 6 days
- Total issue authors: 6
- Total pull request authors: 9
- Average comments per issue: 1.07
- Average comments per pull request: 0.61
- Merged pull requests: 58
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 8
- Pull requests: 8
- Average time to close issues: about 2 months
- Average time to close pull requests: 3 days
- Issue authors: 4
- Pull request authors: 2
- Average comments per issue: 0.13
- Average comments per pull request: 1.0
- Merged pull requests: 6
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- martinlackner (14)
- DominikPeters (7)
- erelsgl (3)
- Simon-Rey (2)
- nealmcb (1)
- axxeny (1)
Pull Request Authors
- lumbric (32)
- DominikPeters (15)
- Simon-Rey (9)
- stefanschlomoforster (5)
- benjaminkrenn (5)
- martinlackner (2)
- elvic96 (1)
- pbatko (1)
- Florian-Lackner (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 630 last-month
- Total dependent packages: 2
- Total dependent repositories: 1
- Total versions: 16
- Total maintainers: 1
pypi.org: abcvoting
A Python library of approval-based committee (ABC) rules
- Homepage: https://github.com/martinlackner/abcvoting/
- Documentation: https://abcvoting.readthedocs.io/
- License: MIT License
-
Latest release: 2.13.0
published 5 months ago
Rankings
Maintainers (1)
Dependencies
- networkx *
- Sphinx ==4.4.0
- gurobipy >=9.5.0
- matplotlib >=3.4.3
- mip >=1.14.0
- networkx >=2.6.3
- numpy >=1.21
- numpydoc >=1.2
- ruamel.yaml >=0.17
- sphinx-codeautolink >=0.10
- sphinx-rtd-theme >=1.0.0
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pypa/gh-action-pypi-publish release/v1 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- codecov/codecov-action v3 composite
- pypa/gh-action-pypi-publish release/v1 composite
