Evalica, your favourite evaluation toolkit
Evalica [ɛˈʋalit͡sa] (eh-vah-lee-tsah) is an evaluation toolkit for statistical analysis, combining fast Rust implementations with Python APIs for ranking, reliability, and uncertainty estimation. Evalica is fully compatible with NumPy arrays and pandas data frames.
The logo was created using Recraft.
Installation
Pairwise Comparisons
Imagine that we would like to rank the different meals and have the following dataset of three comparisons produced by food experts.
| Item X | Item Y | Winner |
|---|---|---|
pizza |
burger |
x |
burger |
sushi |
y |
pizza |
sushi |
tie |
Given this hypothetical example, Evalica takes these three columns and computes the outcome of the given pairwise comparison according to the chosen model. Note that the first argument is the column Item X, the second argument is the column Item Y, and the third argument corresponds to the column Winner.
>>> from evalica import elo, Winner
>>> result = elo(
... ['pizza', 'burger', 'pizza'],
... ['burger', 'sushi', 'sushi'],
... [Winner.X, Winner.Y, Winner.Draw],
... )
>>> result.scores
pizza 1014.972058
burger 970.647200
sushi 1014.380742
Name: elo, dtype: float64
As a result, we obtain Elo scores of our items. In this example, pizza was the most favoured item, sushi was the runner-up, and burger was the least preferred item.
| Item | Score |
|---|---|
pizza |
1014.97 |
burger |
970.65 |
sushi |
1014.38 |
Inter-Rater Reliability
Evalica also supports computing Krippendorff's alpha, a statistical measure of inter-rater reliability. Unlike pairwise comparisons, alpha accepts a matrix where rows represent raters (observers) and columns represent units (items being rated).
>>> import pandas as pd
>>> from evalica import alpha
>>> data = pd.DataFrame([
... [1, 1, None, 1],
... [2, 2, 3, 2],
... [3, 3, 3, 3],
... [3, 3, 3, 3],
... [2, 2, 2, 2],
... [1, 2, 3, 4],
... [4, 4, 4, 4],
... [1, 1, 2, 1],
... [2, 2, 2, 2],
... [None, 5, 5, 5],
... [None, None, 1, 1],
... ]).T
>>> result = alpha(data, distance='nominal')
>>> result.alpha
0.7434210526315788
>>> from evalica import alpha_bootstrap
>>> bootstrap_result = alpha_bootstrap(data, distance='nominal', n_resamples=1000, random_state=42)
>>> (bootstrap_result.low, bootstrap_result.high)
(0.4431818181818182, 0.9411764705882353)
This example demonstrates computing alpha and its bootstrap confidence intervals with nominal distance for categorical ratings. Evalica supports multiple distance metrics: nominal, ordinal, interval, ratio, or custom distance functions.
Command-Line Interface
Evalica also provides a simple command-line interface, allowing the use of these methods in shell scripts and for prototyping.
Pairwise Ranking
$ evalica -i food.csv pairwise bradley-terry
item,score,rank
Tacos,2.509025136024378,1
Sushi,1.1011561298265815,2
Burger,0.8549063627182466,3
Pasta,0.7403814336665869,4
Pizza,0.5718366915548537,5
Refer to the food.csv file as an input example.
Krippendorff's Alpha
For Krippendorff's alpha, use a CSV file with ratings in a matrix format (no header):
$ evalica -i codings.csv alpha --distance=nominal
metric,value
alpha,0.743421052631579
observed,7.999999999999999
expected,31.179487179487182
Web Application
Evalica has a built-in Gradio application that can be launched as python3 -m evalica.gradio. Please ensure that the library was installed as pip install evalica[gradio].
Implemented Methods
| Method | In Python | In Rust |
|---|---|---|
| Counting | ✅ | ✅ |
| Average Win Rate | ✅ | ✅ |
| Bradley–Terry | ✅ | ✅ |
| Elo | ✅ | ✅ |
| Eigenvalue | ✅ | ✅ |
| PageRank | ✅ | ✅ |
| Newman | ✅ | ✅ |
| Krippendorff's Alpha | ✅ | ✅ |
Contributing
Evalica is a mixed Rust/Python project that uses PyO3, so it requires setting up the Maturin build system.
To set up the environment, we recommend using the uv package manager, as demonstrated in our test suite:
$ uv venv
$ uv pip install maturin
$ source .venv/bin/activate
$ maturin develop --uv --extras dev,docs,gradio
In case uv is not available, you can use the following workaround:
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install maturin
$ maturin develop --extras dev,docs,gradio
It is also possible to omit the Rust-accelerated routines via pip install --no-binary evalica.
We welcome pull requests on GitHub: https://github.com/dustalov/evalica. To contribute, fork the repository, create a separate branch for your changes, and submit a pull request.
Citation
- Ustalov, D. Reliable, Reproducible, and Really Fast Leaderboards with Evalica. 2025. Proceedings of the 31st International Conference on Computational Linguistics: System Demonstrations. 46–53. arXiv: 2412.11314 [cs.CL].
@inproceedings{Ustalov:25,
author = {Ustalov, Dmitry},
title = {{Reliable, Reproducible, and Really Fast Leaderboards with Evalica}},
year = {2025},
booktitle = {Proceedings of the 31st International Conference on Computational Linguistics: System Demonstrations},
pages = {46--53},
address = {Abu Dhabi, UAE},
publisher = {Association for Computational Linguistics},
eprint = {2412.11314},
eprinttype = {arxiv},
eprintclass = {cs.CL},
url = {https://aclanthology.org/2025.coling-demos.6},
language = {english},
}
The code for replicating the experiments is available in the coling2025 directory.
Copyright
Copyright (c) 2024–2026 Dmitry Ustalov. See LICENSE for details.
Metadata
Release files for evalica 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| evalica-0.4.2.tar.gz | 62.6 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| evalica-0.4.2-cp38-abi3-win_amd64.whl | CPython 3.8 | abi3 | Windows x86-64 | Details |
| evalica-0.4.2-cp38-abi3-musllinux_1_1_x86_64.whl | CPython 3.8 | abi3 | Linux musl 1.1+ x86-64 | Details |
| evalica-0.4.2-cp38-abi3-musllinux_1_1_aarch64.whl | CPython 3.8 | abi3 | Linux musl 1.1+ ARM64 | Details |
| evalica-0.4.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.8 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| evalica-0.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.8 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| evalica-0.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl | CPython 3.8 | abi3 | Linux glibc 2.5+ x86-32 | Details |
| evalica-0.4.2-cp38-abi3-macosx_11_0_arm64.whl | CPython 3.8 | abi3 | macOS 11.0+ ARM64 | Details |
| evalica-0.4.2-cp38-abi3-macosx_10_12_x86_64.whl | CPython 3.8 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 3.6 MB
Release files / evalica-0.4.2.tar.gz
| Download URL | evalica-0.4.2.tar.gz |
|---|---|
| Size | 62.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f96c7872e89d82cc0661239ac1244745f34679dd594ff899d4bf0e00ba2b811c
|
|
BLAKE2b-256 checksum How to use checksums |
aeee3c247aa094cfeb7d036a550f550c63cf500fe1e21127c7e5847160290228
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-win_amd64.whl
| Download URL | evalica-0.4.2-cp38-abi3-win_amd64.whl |
|---|---|
| Size | 279.3 kB |
| Tags | CPython 3.8 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
95930c1f52c5a53ca3a62c11c0d390f5e41b411517aba8b78cde5194a26c7de5
|
|
BLAKE2b-256 checksum How to use checksums |
39102916aebbac1227784d8bb934522ab31445dd1a7d6ddef239fab79d7131ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-musllinux_1_1_x86_64.whl
| Download URL | evalica-0.4.2-cp38-abi3-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 635.6 kB |
| Tags | CPython 3.8 Linux musl 1.1+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ca62cff289139aaf8a1484d43348a8c600fa776c12ba1e8c9731c586ba39e16d
|
|
BLAKE2b-256 checksum How to use checksums |
8eeb942f07e6d108c22e4dd224f8563d3408708bd033f3d2f9d89237777bfa01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-musllinux_1_1_aarch64.whl
| Download URL | evalica-0.4.2-cp38-abi3-musllinux_1_1_aarch64.whl |
|---|---|
| Size | 580.7 kB |
| Tags | CPython 3.8 Linux musl 1.1+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
fe465ef8f01fe820c0e717388f0451049191cf005818cf6edc112b9d879e561e
|
|
BLAKE2b-256 checksum How to use checksums |
897c3db882ae74b5689f92e700d1e205eb805979a3bba9fac929977e798297b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | evalica-0.4.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 433.0 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0e2859b82a901315fae92f7da9175ac2c4f79a7a56cd410f0932ea72442bfcdd
|
|
BLAKE2b-256 checksum How to use checksums |
8e543f11e95fdae4cdd5536aa140c855a71319861b1baaddd2436031d5f06f07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | evalica-0.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 404.7 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7458213578ca0e15ee6c914bc33c4b85a2f8dc3a688837c89942c24b0219c533
|
|
BLAKE2b-256 checksum How to use checksums |
e5bdd73de5c4686178c6be09692484e5d970fce13b17f37e770d667cdc675918
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl
| Download URL | evalica-0.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl |
|---|---|
| Size | 451.2 kB |
| Tags | CPython 3.8 Linux glibc 2.5+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
65f8111e4c6ffde30ed3a0911fed2c7be4b0011f29a0d8f313f9b823f90d39eb
|
|
BLAKE2b-256 checksum How to use checksums |
95b1a151a0dddd5d92c43b4eba471484e2298559fbdfd7106af5b8b6ec20d468
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-macosx_11_0_arm64.whl
| Download URL | evalica-0.4.2-cp38-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 367.0 kB |
| Tags | CPython 3.8 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
628a602f1d4c915ef48fd60705dd29f2b375f8849140a6485ab8aa91acb43160
|
|
BLAKE2b-256 checksum How to use checksums |
7845b1feb5a0e00eeae4e2715f95723c5aa8817d16fc5f48a48af8af6caccc51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / evalica-0.4.2-cp38-abi3-macosx_10_12_x86_64.whl
| Download URL | evalica-0.4.2-cp38-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 392.7 kB |
| Tags | CPython 3.8 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
6abbe80eed80a3884aaf97318e6518815223768614fe87129452bdfe6e26a694
|
|
BLAKE2b-256 checksum How to use checksums |
43491782f50167c39f5f2956502815e1bb9d6a80ffe472ba1122878436490067
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency log