Wireless Scenario¶
Scenarios are the base class for describing a wireless application featuring multiple interconnected devices.
- class Scenario(seed=None, devices=None)[source]¶
Bases:
ABC
,RandomNode
,TransformableBase
,Generic
[DeviceType
,DST
,DropType
]A wireless scenario.
Scenarios consist of several devices transmitting and receiving electromagnetic signals. Each device can be operated by multiple operators simultaneously.
- Parameters:
- add_device(device)[source]¶
Add a new device to the scenario.
- Parameters:
device (Device) – New device to be added to the scenario.
- Raises:
ValueError – If the device already exists.
RuntimeError – If the scenario is not in default mode.
- Return type:
- device_index(device)[source]¶
Index of device
Returns: The device index.
- Raises:
ValueError – If device is not registered in this scenario.
- drop()[source]¶
Generate a single data drop from all scenario devices.
Return: The generated drop information.
- generate_outputs(transmissions, states=None)[source]¶
Generate signals emitted by devices.
- Parameters:
transmissions (list[list[Transmission]]) – Results of all transmitting DSP algorithms.
states (Sequence[DST | None], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling
Device.state()
.
- Return type:
Returns: List of device outputs.
- new_device(*args, **kwargs)[source]¶
Add a new device to the scenario.
Convenience function pointing to
hermespy.core.scenario.Scenario.new_device()
.Returns: Handle to the created device.
- Raises:
ValueError – If the device already exists.
RuntimeError – If the scenario is not in default mode.
RuntimeError – If the scenario does not allow for the creation or addition of new devices.
- Return type:
TypeVar
(DeviceType
, bound= Device)
- process_inputs(impinging_signals, states=None)[source]¶
Process input signals impinging onto the scenario’s devices.
- Parameters:
impinging_signals (Sequence[DeviceInput | Signal | Sequence[Signal]]) – list of signals impinging onto the devices.
states (Sequence[DST | None], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling
Device.state()
.
- Return type:
Returns: list of the processed device input information.
- Raises:
ValueError – If the number of impinging_signals does not match the number of registered devices.
- receive_devices(impinging_signals, states=None, notify=True)[source]¶
Receive over all scenario devices.
Internally calls
Scenario.process_inputs()
andScenario.receive_operators()
.- Parameters:
impinging_signals (Sequence[DeviceInput] | Sequence[Signal] | Sequence[Sequence[Signal]) – list of signals impinging onto the devices.
states (Sequence[DST | None], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling :meth:`Device.state
notify (bool, optional) – Notify the receiving DSP layer’s callbacks about the reception results. Enabled by default.
- Return type:
Returns: list of the processed device input information.
- Raises:
ValueError – If the number of impinging_signals does not match the number of registered devices.
- receive_operators(operator_inputs, states=None, notify=True)[source]¶
Receive over the registered operators.
- Parameters:
operator_inputs (Sequence[Sequence[Signal]] | ProcessedDeviceInput) – Signal models to be processed by the receive DSP algorithms. Two-dimensional sequence where the first dimension corresponds to the devices and the second to the operators.
states (Sequence[DST | None], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling
Device.state()
.notify (bool, optional) – Notify the receive DSP layer’s callbacks about the reception results. Enabled by default.
- Return type:
Returns: list of information generated by receiving over the device’s operators.
- Raises:
ValueError – If the number of operator inputs does not match the number of receive devices.
- record(file, overwrite=False, campaign='default', state=None, serialize_state=True)[source]¶
Start recording drop information generated from this scenario.
After the scenario starts recording, changing the device and operator configuration is not permitted.
- Parameters:
file (str) – The system path where to store the generated recording data.
overwrite (bool, optional) – Overwrite the file if a recording already exists. Disabled by default.
campaign (str, optional) – Name of the measurement campaign.
state (scenario, optional) – Scenario to be used for state serialization. By default, this scenario is assumed.
serialize_state (bool, optional) – Serialize the scenario state to the recording. Enabled by default.
- Raises:
RuntimeError – If the scenario is not in default mode.
- Return type:
- replay(file=None, campaign='default')[source]¶
Replay the scenario from and HDF5 savefile.
- Parameters:
- Raises:
RuntimeError – If file is not specified and can’t be inferred from previous record executions.
ValueError – If campaign is specified and is not contained within the savefile.
- Return type:
- transmit_devices(states=None, notify=True)[source]¶
Generated information transmitted by all registered devices.
- Parameters:
states (Sequence[DST | None], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling
Device.state()
.notify (bool, optional) – Notify the transmit DSP layer’s callbacks about the transmission results. Enabled by default.
- Return type:
Returns: List of generated information transmitted by each device.
- transmit_operators(states=None, notify=True)[source]¶
Generate information transmitted by all registered device operators.
- Parameters:
states (Sequence[DST], optional) – States of the transmitting devices. If not specified, the current device states will be queried by calling
Device.state()
.notify (bool, optional) – Notify the DSP layer’s callbacks about the transmission results. Enabled by default.
- Return type:
- Returns:
The generated information sorted into devices and their respective operators.
- property campaign: str¶
Measurement campaign identifier.
If not specified, the scenario will assume the campaign name to be default.
- Returns:
Name of the current measurement campaign.
- Raises:
ValueError – If in replay mode and the requested campaign name is not available.
- property drop_duration: float¶
The scenario’s default drop duration in seconds.
If the drop duration is set to zero, the property will return the maximum frame duration over all registered transmitting modems as drop duration!
- Returns:
The default drop duration in seconds.
- Return type:
- Raises:
ValueError – For durations smaller than zero.
RuntimeError – If the scenario is not in default mode.
- property mode: ScenarioMode¶
Current operating mode of the scenario.
Returns: Operating mode flag.
- property num_devices: int¶
Number of devices in this scenario.
- Returns:
Number of devices
- Return type:
- property num_drops: int | None¶
Number of drops within the scenario.
If the scenario is in replay mode, this property represents the recorded number of drops
If the scenario is in record mode, this property represnts the current number of recorded drops.
Returns: Number of drops. None if not applicable.
- property num_operators: int¶
Number of operators within this scenario.
- Returns:
The number of operators.
- Return type:
- property num_receivers: int¶
Number of receiving operators within this scenario.
- Returns:
The number of receivers.
- Return type:
- property num_transmitters: int¶
Number of transmitting operators within this scenario.
- Returns:
The number of transmitters.
- Return type:
- property operators: set[Operator]¶
All operators within this scenario.
Returns: A set containing all unique operators within this scenario
- serialized_attributes = {'devices'}¶
- property transmitters: list[Transmitter]¶
All transmitting operators within this scenario.
- Returns:
list of all transmitting operators.
- Return type:
- yaml_tag = 'Scenario'¶
- class ReplayScenario(seed=None, devices=None)[source]¶
Bases:
Scenario
[Device
,DeviceState
,Drop
]Scenario which is unable to generate drops.
- class ScenarioMode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
Bases:
IntEnum
Current scenario mode.
- DEFAULT = 0¶
Default scenario state.
For configuration and generating drops.
- RECORD = 1¶
Recording scenario state.
For recording datasets.
- REPLAY = 2¶
Replay scenario state.
For replaying already recorded datasets.