# APEX: Automated Parameter Exploration for Low-Power Wireless Protocols (Software)

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).

## Contents

`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.

## Reproducing the article's results

1. Install dependencies: `pip install -r requirements.txt`
2. Obtain the recorded traces from the companion dataset record and place `Crystal_results.json` or `RPL_results.json` where `recordedTestEnvironment.inputPath` in the config points.
3. Set `testEnvironment: 'RecordedTestEnvironment'`, choose the model and `nextPointAlgo`, and define the application requirement in the config.
4. From inside the `APEX` folder, run `python Main.py` (the configuration paths are relative to that folder).
