Archival snapshot of the APEX framework, version 1.0, as used for the experiments in:
M. H. M. Hydher, M. Schuß, O. Saukh, K. Römer, C. A. Boano: "APEX: Automated Parameter Exploration for Low-Power Wireless Protocols", ACM Transactions on Sensor Networks 21(6), Article 59, 2025. DOI: 10.1145/3770918
DOI of this software record: 10.3217/ckwaw-z8h92 Companion dataset record (testbed traces and evaluation results, CC BY 4.0): 10.3217/3dhx0-2k125 Development repository: http://iti.tugraz.at/APEX
Funding: This research was funded in whole, or in part, by the Austrian Science Fund (FWF) [10.55776/DFH5].
License: MIT (see LICENSE inside the archive).
APEX-framework-v1.0.zip contains:
APEX/: the framework itself. Test environments (D-Cube and recorded-trace replay), Gaussian process and linear regression model fitting, the next-test-point selection algorithms GP-LCB, EI, GEL, GER, GUC, RL-Step and RL-Any, result storage, and the confidence metrics α and β. The RL-GP and SVM baselines of the article were run with separate harness code and are not part of this snapshot; their results are in the companion dataset record.Binaries/: firmware used on the D-Cube testbed. Crystal (baloo-crystal-sky.ihex) and RPL (node.hex), each with the D-Cube patch descriptor (custom.xml).config/: configuration files defining the protocol, parameter space, application requirement, model, selection algorithm and termination criteria. crystal_config.yaml and RPL_config.yaml are the configurations used in the article.requirements.txt: Python dependencies.README.md, LICENSE: original project documentation and MIT license.Note on credentials: running against the live D-Cube testbed requires a personal API key. The archive ships config/dcubeKey.yaml.example as a template; no real key is included. Replaying against recorded traces requires no key.
pip install -r requirements.txtCrystal_results.json or RPL_results.json where recordedTestEnvironment.inputPath in the config points.testEnvironment: 'RecordedTestEnvironment', choose the model and nextPointAlgo, and define the application requirement in the config.APEX folder, run python Main.py (the configuration paths are relative to that folder).