Skip to main content

Sparkle

tests count tests coverage linter docs

A Programming by Optimisation (PbO)-based problem-solving platform designed to enable the widespread and effective use of PbO techniques for improving the state-of-the-art in solving a broad range of prominent AI problems, including SAT and AI Planning.

Specifically, Sparkle facilitates the use of:

  • Automated algorithm configuration
  • Automated algorithm selection

Furthermore, Sparkle handles various tasks for the user such as:

  • Algorithm meta information collection and statistics calculation
  • Instance/Data Set management and feature extraction
  • Compute cluster job submission and monitoring
  • Log file collection

Installation

Sparkle is a Python based package, but requires several non-Python dependencies to run fully. The easiest installation is through Conda. A setup with Python virtual Environment is also possible, but requires more user input for the installation process.

venv

Sparkle can also be installed as a standalone package using Pip. We recommend creating a new virtual environment with venv before to ensure no clashes between dependencies occur. Note that when creating a new venv, Sparkle needs Python 3.10 to run, so create your virtual environment with this Python version active

To install Sparkle in your virtual environment (in this example called 'venv' here) simply type:

python3 -m venv venv/

source venv/bin/activate  # Activate the new environment

pip install sparkle

Note that a direct installation through Pip does not handle certain dependencies of the Sparkle CLI, such as the required libraries for compiling RunSolver. This can possibly be resolved in your system (if it does not work 'out-of-the-box') by running sudo yum install numactl-devel.

You will need to supply, aside from the other dependencies in the next section, the following in your virtual environment:

  • Python 3.10 or greater is required to use Sparkle
  • libnuma and numactl in order to compile RunSolver (Which can be installed through sudo yum install numactl-devel). We suggest to use GCC 12.2.0.

Sparkle Autocomplete

If you wish for the Bash autocomplete to also work for Sparkle's CLI commands, you can add the autocomplete script to your environments activation file. The source script of this can be found in Resources/Other/venv_autocomplete.sh and must be appended to your activation script, which can be done with the Sparkle CLI:

sparkle install autocomplete

Alternatively, if the installation fails for some reason or you are not using Venv,you can do it yourself with bash commands such as:

curl https://raw.githubusercontent.com/ADA-research/Sparkle/refs/heads/main/sparkle/Resources/Other/venv_autocomplete.sh >> venv/bin/activate

where venv/bin/activate leads to the script to activate your newly created environment. Note that afterwards you need to deactivate and reactivate the environment for changes to take effect. If you are using conda, you will probably need to append this script to your .bash_profile instead.

Alternative: Conda

Sparkle can as alternatively be installed in a Conda environment. For this we provide an environment.yml file on Github, which you can download and run as follows:

wget https://raw.githubusercontent.com/ADA-research/Sparkle/main/environment.yml

and run:

conda env create -f environment.yml

The installation of the environment may take up to five minutes depending on your internet connection. Once the environment has been created it can be activated by:

conda activate sparkle

You will need to reactivate the environment every time you start the terminal, before using Sparkle. Note that we generally recommend venv over conda as it is much lighter to run.

Dependencies

Asside from several package dependencies, Sparkle's package / CLI relies on a few user supplied executables:

  • LaTex compiler (pdflatex) for report generation
  • Java, tested with version 1.8.0_402, in order to use SMAC2
  • R 4.3.1, in order to use IRACE

Other dependencies are handled by the Conda environment, but if that is not an option for you please ensure you have the following:

  • libnuma and numactl for Runsolver compilation which sparkle uses to measure solvers meta data. This is restricted to Linux based systems.
  • Swig 4.0.2 for SMAC3. Although Sparkle can be used without SMAC3, there seem to be some complications installation wise currently if swig is not present.

For detailed installation instructions see the documentation: https://ada-research.github.io/Sparkle/

Developer installation

To install sparkle in development mode:

  1. Pull the repository
  2. Create a new Python venv and activate it, making sure it has the right Python version
  3. Run, in the main directory of the repository, pip install -e .[dev], to install dev dependencies alongside the package

Examples

See the Examples directory for some examples on how to use Sparkle. All Sparkle CLI commands need to be executed from the root of the initialised Sparkle directory.

Documentation

The documentation can be read at https://ada-research.github.io/Sparkle/.

A PDF is also available in the repository.

Licensing

Sparkle is distributed under the MIT licence

Component licences

Sparkle is distributed with a number of external components, solvers, and instance sets. Descriptions and licensing information for each these are included in the sparkle/Components and Examples/Resources/ directories.

The SATzilla 2012 feature extractor is used from http://www.cs.ubc.ca/labs/beta/Projects/SATzilla/ with some modifications. The main modification of this component is to disable calling the SAT instance preprocessor called SatELite. It is located in: Examples/Resources/Extractors/SAT-features-competition2012_revised_without_SatELite/

Citation

If you use Sparkle for one of your papers and want to cite it, please cite our paper describing Sparkle: K. van der Blom, H. H. Hoos, C. Luo and J. G. Rook, Sparkle: Toward Accessible Meta-Algorithmics for Improving the State of the Art in Solving Challenging Problems, in IEEE Transactions on Evolutionary Computation, vol. 26, no. 6, pp. 1351-1364, Dec. 2022, doi: 10.1109/TEVC.2022.3215013.

@article{BloEtAl22,
  title={Sparkle: Toward Accessible Meta-Algorithmics for Improving the State of the Art in Solving Challenging Problems}, 
  author={van der Blom, Koen and Hoos, Holger H. and Luo, Chuan and Rook, Jeroen G.},
  journal={IEEE Transactions on Evolutionary Computation}, 
  year={2022},
  volume={26},
  number={6},
  pages={1351--1364},
  doi={10.1109/TEVC.2022.3215013}
}

Maintainers

Thijs Snelleman, Jeroen Rook, Hadar Shavit,

Contributors

Chuan Luo, Richard Middelkoop, Jérémie Gobeil, Sam Vermeulen, Marcel Baumann, Jakob Bossek, Tarek Junied, Yingliu Lu, Malte Schwerin, Aaron Berger, Marie Anastacio, Aaron Berger, Koen van der Blom, Noah Peil, Brian Schiller, Emir Pisirici

Contact

sparkle@aim.rwth-aachen.de

Sponsors

The development of Sparkle is partially sponsored by the Alexander von Humboldt Foundation.

Metadata

Release files for Sparkle 0.9.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Sparkle 0.9.7
File Size Uploaded
sparkle-0.9.7.tar.gz 166.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Sparkle 0.9.7
File Interpreter ABI Platform
sparkle-0.9.7-py3-none-any.whl Python 3 none any Details

Total release size: 376.7 kB

Release files / sparkle-0.9.7.tar.gz

Download URL sparkle-0.9.7.tar.gz
Size 166.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ca596eade58ab0feadf94cd4aeb2733fb17eecaa63ea7ab304f707d1e0839308
BLAKE2b-256 checksum
How to use checksums
71c938cb00545be831c1974adc17b64bf4ccecbea358e0db117d572e1e94b48a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release files / sparkle-0.9.7-py3-none-any.whl

Download URL sparkle-0.9.7-py3-none-any.whl
Size 210.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e803b6ca8018a83ed1dcfb1a93efed6d91f3e7c0358c172b0f9c63f50ea123aa
BLAKE2b-256 checksum
How to use checksums
9225dd539fbe9b8a15c5144245629f342a3af9607943d265f2a7d6d89e938c30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.7 This release

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page