-
Notifications
You must be signed in to change notification settings - Fork 52
Package Modularization: Decoupling of games.
Maximilian edited this page Jul 25, 2025
·
1 revision
This document discusses the solutions / use cases of decoupling the current shapiq library into seperate sub-packages specialized for different use cases: Particularly, it revolves around the decoupling of the benchmark, game, and core code.
- I want to be able to run a benchmark of black-box approximation methods to estimate concepts implemented in shapiq.
- The The implementation of a benchmark should be quite easy. Currently its super messey with the different pre-computed configurations.
- I want to be able to implement better and faster functionality in shapiq, which is of a high code-quality.
- I like to see some examples of cooperative games which comes with a lot of dependencies that are not important for shapiq core.
- I want to extend the Benchmark with new datasets and models.
- The benchmark should be reproducible.
- I don't want to run tests for the benchmark when I work on
shaiq
- The shapiq (core) library should be lightweight in terms of dependencies. The dependencies in shapiq should only include dependencies that are needed to compute/approximate interaction scores and visualize them. (UC3)
- The example games should be always runnable with the current implementation of shapiq. Changes in shapiq's core API design should also be reflected in the example games. (UC4)
- The benchmark should be quite stable and be easy to extend and use for researchers providing new datasets. (UC2,UC5)
- The code-quality of shapiq core must be very high.
- We move and reimplement the benchmark logic into a separate project and repository depending on
shapiqwith a pinned version. If shapiq needs to introduce breaking changes,shapiq_benchmarkwill still work with the older version ofshapiqallowing for easier reproducibility. - We will remove the
shapiq.gamesmodule and move it into a separate packageshapiq_games.shapiq_gameswill be in the same repository asshapiq, such that breaking changes are immediately detected and need to be fixed for each PR into shapiq. -
shapiqwill contain the baseGameclass, such that the imputes can still use the functionality. - We will partition the tests in shapiq into a core test suite and a test suite for the example games, since example games may take way more time than the core tests.
We will implement Approach A.
Developed with ❤️ by the shapiq team.