Spaces:
Runtime error
Runtime error
from dataclasses import dataclass, field | |
import h5py | |
import numpy as np | |
H5_CDATA = "Channel/FrequencyResponses/Data" | |
H5_TARGET_DELAY = "TargetParameters/Delay/Data" | |
H5_TARGET_DOPPLER = "TargetParameters/Doppler/Data" | |
H5_TXANTENNA = "AntennaPositions/PositionTx/Data" | |
H5_RXANTENNA = "AntennaPositions/PositionRx/Data" | |
H5_UAVPOSITIONS = "Positions/Data" | |
class UAVDataset: | |
channelfile: str | |
"""The path to the channel file""" | |
targetfile: str = None | |
"""The path to the target file""" | |
channel: np.ndarray = field(init=False) | |
"""Property to store the channel data as a numpy array""" | |
groundtruth: np.ndarray = field(init=False) | |
"""Property to store the delay and Doppler groundtruth of the UAV as a numpy array""" | |
tx: np.ndarray = field(init=False) | |
"""Property to store the transmitter antenna positions as a numpy array""" | |
rx: np.ndarray = field(init=False) | |
"""Property to store the receiver antenna positions as a numpy array""" | |
uav: np.ndarray = field(init=False) | |
"""Property to store the UAV positions as a numpy array""" | |
def __post_init__(self) -> None: | |
# load channel, positions | |
h5_channel = h5py.File(self.channelfile, "r") | |
self.channel = np.array(h5_channel[H5_CDATA]).view( | |
np.complex64).squeeze() | |
self.groundtruth = np.concatenate( | |
( | |
np.array(h5_channel[H5_TARGET_DELAY]), | |
np.array(h5_channel[H5_TARGET_DOPPLER]), | |
), | |
axis=1, | |
) | |
self.tx = np.array(h5_channel[H5_TXANTENNA]).view(np.float64).squeeze() | |
self.rx = np.array(h5_channel[H5_RXANTENNA]).view(np.float64).squeeze() | |
if self.targetfile is not None: | |
h5_target = h5py.File(self.targetfile, "r") | |
self.uav = np.array(h5_target[H5_UAVPOSITIONS]).view( | |
np.float64).squeeze() | |
return | |
def __len__(self) -> int: | |
return self.channel.shape[0] |