Configuring Sim YAML
Simulation YAML defines the scenario that the AODT client loads before running
Interactive Mode, Batched Mode, or
Calibration workflows. You can write YAML directly, but the
recommended path is to generate it with the _config Python module so object
relationships and required fields are checked before the run starts.
After generating the YAML, pass its contents to client.start(yaml_content) to
load the scenario on the worker.
Recommended Workflow
Use the Config Builder when creating YAML in code:
- Create a
SimConfigwith the scene, simulation mode, and asset config. - Set the simulation ID and database connection.
- Configure S3 storage.
- Set the timeline and selected result tables.
- Enable Parquet export and, when needed, configure the catalog.
- Define panels, DUs, RUs, UEs, and mobility.
- Optionally add calibration settings when the YAML will be used for a calibration run.
- Export the configuration to YAML.
For a complete example, see client/examples/example_client_yaml_config.py.
Calibration YAML
Calibration uses the same base scenario as a regular EM simulation, with an
additional top-level cal section. The cal section is not required for normal
simulation YAML; add it only when the scenario will be loaded for
client.run_calibration(). The usual calibration workflow is to run the base
simulation YAML first, then reload the scenario with calibration settings and call
client.run_calibration().
Before adding calibration settings, make sure the base simulation config:
- Uses valid S3 settings and enables Parquet export.
- Configures an Iceberg catalog when your deployment reads exported tables through Iceberg.
- Adds
DBTable.RAYPATHSand sets thefullraypaths table option, because calibration reads the exported ray-path data.
Then add the calibration section:
set_calibration_targets(...) must be called before adding measurements,
timeline, or output settings. Each measurement identifies the RU/UE link and the
measurement CSV that calibration should compare against. The output folder key
is written under the configured S3 bucket.
For a complete generated-YAML example, see
client/examples/example_client_calibration_yaml_config.py. For the runtime
client workflow, see Calibration.
Timeline Modes
The timeline determines how simulations are indexed:
- Duration/interval: use
config.set_timeline(duration=..., interval=...). - Slots/symbols: use
config.set_timeline(slots_per_batch=..., realizations_per_slot=...).
Do not mix both timeline styles in the same configuration. RAN mode requires the slots/symbols style.
Ordering Rules
The builder validates common configuration mistakes. Examples include:
- A timeline must use either duration/interval or slots/symbols, not both.
- S3 configs must include a bucket and supported provider, and MinIO configs need an endpoint URL.
- An RU must reference an existing DU and a valid panel, and its frequency must match the assigned panel.
- A UE must have at least one waypoint or a GPX source before calling
add_ue(). - Calibration details require
set_calibration_targets(...)first, at least one measurement, a positive timeline step, and a non-empty output folder key.
API Reference
See the Config Builder API for all configuration classes,
including SimConfig, S3Config, Panel, Nodes, DU, RU, UE,
SimMode, and DBTable.
See AODT Client for workflows that consume the generated YAML.