Agora
1.2.0
Agora project
|
Public Member Functions | |
def | __init__ (self, filename, n_frames_to_inspect=0, n_fr_insp_st=0, sub_sample=0) |
def | open_hdf5 (self) |
def | get_data (self) |
def | get_metadata (self) |
Static Public Member Functions | |
def | samps2csi_large (samps, num_users, chunk_size=1000, samps_per_user=224, fft_size=64, offset=0, bound=94, cp=0, pilot_f=[], legacy=False) |
def | samps2csi (samps, num_users, samps_per_user=224, fft_size=64, offset=0, bound=94, cp=0, pilot_f=[], legacy=False, chunk_id=-1) |
def | load_tx_data (metadata, dirpath, n_users) |
def | demodulate (ul_samps, csi, txdata, metadata, ue_frame_offset, offset, ul_slot_i, noise_samps_f=None, method='zf') |
Public Attributes | |
h5file | |
filename | |
dirpath | |
h5struct | |
data | |
metadata | |
pilot_samples | |
uplink_samples | |
n_frm_st | |
n_frm_end | |
sub_sample | |
def hdf5_lib.hdf5_lib.__init__ | ( | self, | |
filename, | |||
n_frames_to_inspect = 0 , |
|||
n_fr_insp_st = 0 , |
|||
sub_sample = 0 |
|||
) |
|
static |
def hdf5_lib.hdf5_lib.get_data | ( | self | ) |
Parse file to retrieve metadata and data. HDF5 file has been written in DataRecorder.cpp (in Sounder folder) Output: Data (hierarchy): -Path -Pilot_Samples --Samples -UplinkData --Samples Dimensions of input sample data (as shown in DataRecorder.cpp in Sounder): - Pilots dims_pilot[0] = maxFrame dims_pilot[1] = number of cells dims_pilot[2] = number of UEs dims_pilot[3] = number of antennas (at BS) dims_pilot[4] = samples per symbol * 2 (IQ) - Uplink Data dims_data[0] = maxFrame dims_data[1] = number of cells dims_data[2] = uplink symbols per frame dims_data[3] = number of antennas (at BS) dims_data[4] = samples per symbol * 2 (IQ)
def hdf5_lib.hdf5_lib.get_metadata | ( | self | ) |
-Attributes {FREQ, RATE, PREFIX_LEN, POSTFIX_LEN, SLOT_SAMP_LEN, FFT_SIZE, CP_LEN, BEACON_SEQ_TYPE, PILOT_SEQ_TYPE, BS_HUB_ID, BS_SDR_NUM_PER_CELL, BS_SDR_ID, BS_NUM_CELLS, BS_CH_PER_RADIO, BS_FRAME_SCHED, BS_RX_GAIN_A, BS_TX_GAIN_A, BS_RX_GAIN_B, BS_TX_GAIN_B, BS_BEAMSWEEP, BS_BEACON_ANT, BS_NUM_ANT, BS_FRAME_LEN, CL_NUM, CL_CH_PER_RADIO, CL_AGC_EN, CL_RX_GAIN_A, CL_TX_GAIN_A, CL_RX_GAIN_B, CL_TX_GAIN_B, CL_FRAME_SCHED, CL_SDR_ID, CL_MODULATION, UL_SLOTS}
|
static |
def hdf5_lib.hdf5_lib.open_hdf5 | ( | self | ) |
Get the most recent log file, open it if necessary.
|
static |
Convert an Argos HDF5 log file with raw IQ in to CSI. Asumes 802.11 style LTS used for trace collection. Args: samps: The h5py or numpy array containing the raw IQ samples, dims = [Frame, Cell, User, Antenna, Sample]. num_users: Number of users used in trace collection. (Last 'user' is noise.) samps_per_user: Number of samples allocated to each user in each frame. Returns: csi: Complex numpy array with [Frame, Cell, User, Pilot Rep, Antenna, Subcarrier] iq: Complex numpy array of raw IQ samples [Frame, Cell, User, Pilot Rep, Antenna, samples] Example: h5log = h5py.File(filename,'r') csi,iq = samps2csi(h5log['Pilot_Samples'], h5log.attrs['num_mob_ant']+1, h5log.attrs['samples_per_user'])
|
static |
Wrapper function for samps2csi_main for to speed up large logs by leveraging data-locality. Chunk_size may need to be adjusted based on your computer.
hdf5_lib.hdf5_lib.data |
hdf5_lib.hdf5_lib.dirpath |
hdf5_lib.hdf5_lib.filename |
hdf5_lib.hdf5_lib.h5file |
hdf5_lib.hdf5_lib.h5struct |
hdf5_lib.hdf5_lib.metadata |
hdf5_lib.hdf5_lib.n_frm_end |
hdf5_lib.hdf5_lib.n_frm_st |
hdf5_lib.hdf5_lib.pilot_samples |
hdf5_lib.hdf5_lib.sub_sample |
hdf5_lib.hdf5_lib.uplink_samples |