Quadriga Interface#

class QuadrigaInterface(path_quadriga_src=None, antenna_kind='omni', scenario_label='3GPP_38.901_UMa_LOS', seed=None)[source]#

Bases: RandomNode

Interface between Hermes’ channel model and the Quadriga channel simulator.

It is important to mention, that in the hermes implementation channels are independent of each other, i.e. are associated with each transmitter/receiver modem pair. However, this is not the case for quadriga which creates one channel for all transmitter/receiver modem pairs. Therefore, we need to do a mapping between the QuadrigaChannel objects for all transmitter/receiver modem pairs and the Quadriga simulation which runs in the background.

This mapping is done in that class.

Parameters:
  • path_quadriga_src (str, optional) – Path to the Quadriga Matlab source files. If not specified, the environment variable HERMES_QUADRIGA is assumed.

  • antenna_kind (str, optional) – Type of antenna considered. Defaults to “omni”.

  • scenario_label (str, optional) – Scenario label.

  • seed (int, optional) – Random seed.

classmethod GlobalInstance()[source]#

Access the global Quadriga interface instance.

If no global instance exists, a new one is created.

Returns: Handle to the global Quadriga interface instance.

Return type:

QuadrigaInterface

classmethod GlobalInstanceExists()[source]#

Checks if a global Quadriga interface instance exists.

Returns: Boolean indicating if a global instance exists.

Return type:

bool

classmethod SetGlobalInstance(new_instance)[source]#

Set the new global quadriga instance.

Copies registered channels to the new instance if a global instance already exists.

Parameters:

new_instance (QuadrigaInterface) – The Quadriga interface instance to be made global.

Return type:

None

channel_registered(channel)[source]#

Is the channel currently registered at the interface?

Parameters:

channel (QuadrigaChannel) – The channel in question.

Return type:

bool

Returns: Boolean indicating if the channel is registered.

get_impulse_response(channel)[source]#

Get the impulse response for a specific quadriga channel.

Will launch the quadriga channel simulator if the channel has already been fetched.

Parameters:

channel (QuadrigaChannel) – Channel for which to fetch the impulse response.

Returns:

CIR and delay. Currently, only SISO.

Return type:

(np.ndarray, np.ndarray)

Raises:

ValueError – If channel is not registered.

register_channel(channel)[source]#

Register a new Quadriga channel for simulation execution.

Parameters:

channel (QuadrigaChannel) – The channel to be registered.

Raises:

ValueError – If the channel has already been registered.

Return type:

None

unregister_channel(channel)[source]#

Unregister a Quadriga channel for simulation execution.

Parameters:

channel (QuadrigaChannel) – The channel to be removed.

Return type:

None

property antenna_kind: str#

Assumed type of antenna.

property channels: List[QuadrigaChannel]#

List of registered Quadriga channels.

property path_launch_script: str#

Generate path to the launch Matlab script.

Returns:

Path to the launch file.

property path_quadriga_src: str#

Path to the configured Quadriga source files.

Raises:

ValueError – If the path does not exist within the filesystem.

property scenario_label: str#

Configured Quadriga scenario label.

yaml_tag = 'QuadrigaInterface'#