diff --git a/libraries/dsp/correlator/tb/python/plot_rec_file.py b/libraries/dsp/correlator/tb/python/plot_rec_file.py new file mode 100644 index 0000000000000000000000000000000000000000..a6ec8c330c55fc08342b146144d70fe4e99d44ac --- /dev/null +++ b/libraries/dsp/correlator/tb/python/plot_rec_file.py @@ -0,0 +1,81 @@ + +# 0 1 2 3 4 5 6 7 8 9 10 +# [sync] [bsn] [data] [re] [im] [valid] [sop] [eop] [empty] [channel] [err] + +from common import * +from common_dsp import * +import os +import numpy + +NOF_VISIBILITIES = 300 +REC_FILE = os.environ['RADIOHDL']+'/libraries/dsp/correlator/correlator_src_out_arr0.rec2' + +################################################################################ +# Read the lines from the file and turn them into a list +################################################################################ +with open (REC_FILE, "r") as recfile: + lines = recfile.read().splitlines() + +################################################################################ +# Extract the complex fields; create new complex list +################################################################################ +complex_list = [] +raw_data_int = [] +raw_data_str = [] + +for line in lines: + line = line.replace('X', '0') # Get rid of the 'X' on bit 24 (we only use 0..23) + split_line = line.split(' ') +# print split_line + str_re = split_line[3] + str_im = split_line[4] + raw_data_str.append( [str_re, str_im] ) +# print str_re,str_im + re = int(str_re, 16) + im = int(str_im, 16) + raw_data_int.append( [re, im] ) +# print re,im + complex_word = complex(re,im) + complex_list.append( complex_word ) +#print 'COMPLEX LIST' +#print complex_list + + +################################################################################ +# Extract the phases +################################################################################ +phases = [] +for word in complex_list: + phases.append(complex_binomial_to_phasor(word)[1]) + +################################################################################ +# Split the list into chunks of NOF_VISIBILITIES, plot them channel after channel +################################################################################ +phases_per_channel = split_list(phases, NOF_VISIBILITIES) + +#print 'Nof channels in file:', len(phases_per_channel) +# +#print 'CHANNEL 40 - PHASES' +#print phases_per_channel[40] +#print 'CHANNEL 40 - COMPLEX' +#print split_list(complex_list, NOF_VISIBILITIES)[40] +#print 'CHANNEL 40 - RAW DATA, INTEGER' +#print split_list(raw_data_int, NOF_VISIBILITIES)[40] +#print 'CHANNEL 40 - RAW DATA, HEX' +#print split_list(raw_data_str, NOF_VISIBILITIES)[40] +# +#print 'CHANNEL 41 - PHASES' +#print phases_per_channel[41] +#print 'CHANNEL 41 - COMPLEX' +#print split_list(complex_list, NOF_VISIBILITIES)[41] +#print 'CHANNEL 41 - RAW DATA, INTEGER' +#print split_list(raw_data_int, NOF_VISIBILITIES)[41] +#print 'CHANNEL 41 - RAW DATA, HEX' +#print split_list(raw_data_str, NOF_VISIBILITIES)[41] + + +for channel_phases in phases_per_channel[40:]: + phases_mat = numpy.array(channel_phases) + mat = unique_vis_to_full_matrix(phases_mat) + plot_matrix_color([[mat]]) +