openworld_radio_twin.batch#

Functions

build_batch_plan(payload)

generate_batch_dataset(payload, plan, ...[, ...])

slugify(value, fallback)

Classes

BatchCaseSpace(**data)

BatchDatasetRequest(**data)

BatchOutputSpec(**data)

Case artifacts retained after a successful simulation.

BatchPlan(**data)

BatchSceneSpec(**data)

ExpandedCase(**data)

FloatRange(**data)

IntegerRange(**data)

PlannedScene(**data)

class openworld_radio_twin.batch.FloatRange(**data)[source]#

Bases: BaseModel

minimum: float#
maximum: float#
ordered()[source]#
Return type:

FloatRange

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.IntegerRange(**data)[source]#

Bases: BaseModel

minimum: int#
maximum: int#
ordered()[source]#
Return type:

IntegerRange

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.BatchOutputSpec(**data)[source]#

Bases: BaseModel

Case artifacts retained after a successful simulation.

Case metadata is mandatory because it is the provenance and resume-completion record. Empty metric lists therefore provide a metadata-only output profile.

array_metrics: list[Literal['path_gain', 'rss', 'sinr']]#
image_metrics: list[Literal['path_gain', 'rss', 'sinr']]#
association_image: bool#
classmethod unique_ordered_metrics(metrics)[source]#
Return type:

list[Literal['path_gain', 'rss', 'sinr']]

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.BatchCaseSpace(**data)[source]#

Bases: BaseModel

strategy: Literal['fixed', 'random']#
count: int#
engine: EngineName#
engine_config: dict[str, str | int | float | bool]#
transmitter_count: IntegerRange#
frequency_ghz: FloatRange#
power_dbm: FloatRange#
altitude_m: FloatRange#
offset_radius_m: FloatRange#
azimuth_deg: FloatRange#
downtilt_deg: FloatRange#
antenna_patterns: list[Literal['sector', 'isotropic']]#
resolutions_m: list[int]#
max_depths: list[int]#
samples_per_tx: list[int]#
association_metrics: list[Literal['path_gain', 'rss', 'sinr']]#
validate_space()[source]#
Return type:

BatchCaseSpace

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.BatchSceneSpec(**data)[source]#

Bases: BaseModel

label: str#
scene_mode: Literal['geospatial', 'empty']#
latitude: float#
longitude: float#
radius_m: int#
receiver_height_m: float#
voxel_pitch_m: float#
include_buildings: bool#
building_source: str#
include_terrain: bool#
material_profile: Literal['itu', 'uniform']#
terrain_resolution_m: float#
cases: BatchCaseSpace#
fit_transmitters_in_scene()[source]#
Return type:

BatchSceneSpec

property include_surface_materials: bool#

Return whether semantic surface classes are required by this scene.

property include_environment_grid: bool#

Return whether a gridded ground (DEM or flat) is compiled for this scene.

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.BatchDatasetRequest(**data)[source]#

Bases: BaseModel

dataset_name: str#
random_seed: int#
continue_on_error: bool#
output: BatchOutputSpec#
scenes: list[BatchSceneSpec]#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.ExpandedCase(**data)[source]#

Bases: BaseModel

name: str#
seed: int#
request: SimulationRequest#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.PlannedScene(**data)[source]#

Bases: BaseModel

name: str#
label: str#
specification: BatchSceneSpec#
cases: list[ExpandedCase]#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class openworld_radio_twin.batch.BatchPlan(**data)[source]#

Bases: BaseModel

schema_version: int#
dataset_name: str#
dataset_slug: str#
random_seed: int#
generator: str#
total_scenes: int#
total_cases: int#
total_receiver_cells: int#
total_initial_ray_samples: int#
scenes: list[PlannedScene]#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

openworld_radio_twin.batch.slugify(value, fallback)[source]#
Return type:

str

openworld_radio_twin.batch.build_batch_plan(payload)[source]#
Return type:

BatchPlan

async openworld_radio_twin.batch.generate_batch_dataset(payload, plan, output_root, provider, building_limit, sionna_lock, worker, progress, resume=False)[source]#
Return type:

Path