From 603a594fc62fc4c3c280103eb53d736a722c85f4 Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Tue, 19 Jun 2018 09:42:40 +0000 Subject: [PATCH] Added rdPayload and derived nonZeroTp from that. --- .../tests/verify_correlator_db_output.py | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/applications/apertif/commissioning/tests/verify_correlator_db_output.py b/applications/apertif/commissioning/tests/verify_correlator_db_output.py index e380b7b1c3..0ddb0dff51 100644 --- a/applications/apertif/commissioning/tests/verify_correlator_db_output.py +++ b/applications/apertif/commissioning/tests/verify_correlator_db_output.py @@ -37,12 +37,14 @@ # -v 0, 1, 2 or 3 for regression test # At central correlator verify expected result via DB + > python $RADIOHDL/applications/apertif/commissioning/main.py --app apertif-dev --tel a --pol 0,1 --unb 0,1 > python $RADIOHDL/applications/apertif/commissioning/tests/verify_correlator_db_output.py -v 3 --tel a --unb 0 --fn 0:3 --bn 0:3 --beamlets 0 --channels 0 """ ############################################################################### # System imports import sys +import operator import common as cm import test_case import node_io @@ -269,7 +271,13 @@ for bui in beamlets: ################################################################### # Verify payload data - + # + # A visibility packet contains all N_vis = 300 visibilities for one (beamlet, channel): + # - The visibilities for which at least one TP is inactive must be zero, because for those TP the + # firmware forces the data to zero. + # - If both TP in a visibility are active, then the visibility can be non-zero. The visibility + # can still be zero if the BF weights for the corresponding beamlet are zero. + # # Visibility (col, row) indices for # 0 vis (0,0) # 1 vis (0,1) 24 vis (1,1) @@ -280,9 +288,22 @@ for bui in beamlets: # # 24 + 23 + 22 ... + 1 = 300 visibilities # - # The visibilities are stored in two 32b words: real, imag, so in total 600 words. - # - # + # The visibilities are stored in two 32b words: real, imag, so in total 600 words payload. + rdPayload = rdData[corrPacketInfo.vis_header_size:corrPacketInfo.vis_header_size+N_vis*cm.c_nof_complex] + rdVisibilities = [] + even = True + for data in rdPayload: + if even: + visReal = cm.to_signed(data) + else: + visImag = cm.to_signed(data) + rdVisibilities.append(complex(visReal, visImag)) + + # Find the TP for all read visibilities that are non-zero + nonZeroVisibilities = cm.find_indices_where_value_ne(rdVisibilities, 0) + nonZeroTpPairs = visibilities_to_tp_pairs(nonZeroVisibilities) + nonZeroTp = tp_pairs_to_active_tp(tpPairs) + tc.append_log(tc.V_INFO_DETAILS, reportStr + 'Non zero TP = %s' % nonZeroTp) ############################################################################### # End -- GitLab