Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cfs/cfs data bugfix #510

Merged
merged 8 commits into from
Oct 24, 2024
23 changes: 16 additions & 7 deletions src/radar_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class CFSParameters:
Parameters used to track clear frequency search data, each use
of this class should be linked to a unique aveperiod.

:param total_beam_num: number of beams that will be scanned by slice
:param cfs_freq: list of frequencies sampled by CFS
:param cfs_mags: power measurements corresponding to cfs_freq, indexed by beam iterator
then by slice order in an aveperiod
Expand All @@ -55,6 +56,7 @@ class CFSParameters:
slices on a beam. Indexed by beam iterator
"""

total_beam_num: int
cfs_freq: list = field(default_factory=list)
cfs_mags: dict = field(default_factory=dict)
cfs_range: dict = field(default_factory=dict)
Expand All @@ -63,6 +65,13 @@ class CFSParameters:
beam_frequency: dict = field(default_factory=dict)
set_new_freq: dict = field(default_factory=dict)

def __post_init__(self):
for beam_iter in range(self.total_beam_num):
self.last_cfs_set_time[beam_iter] = 0
self.set_new_freq[beam_iter] = True
self.cfs_mags[beam_iter] = dict()
self.cfs_masks[beam_iter] = dict()

def check_update_freq(self, cfs_spectrum, cfs_slices, threshold, beam_iter):
"""
Checks if any scanned frequencies have power levels that
Expand Down Expand Up @@ -110,6 +119,7 @@ class RadctrlParameters:
decimation_scheme: ... = field(init=False)
seqnum_start: int
startup_flag: bool
num_beams: int = 0
num_sequences: int = 0
last_sequence_num: int = 0
sequence_index: int = 0
Expand All @@ -120,7 +130,7 @@ class RadctrlParameters:
pulse_transmit_data_tracker: dict = field(default_factory=dict)
slice_dict: dict = field(default_factory=dict, init=False)
cfs_scan_flag: bool = False
cfs_params: dict = field(default_factory=CFSParameters)
cfs_params: ... = field(default=CFSParameters(0), init=False)
scan_flag: bool = False
dsp_cfs_identity: str = ""
router_address: str = ""
Expand All @@ -130,6 +140,7 @@ class RadctrlParameters:

def __post_init__(self):
self.slice_dict = self.experiment.slice_dict
self.cfs_params = CFSParameters(self.num_beams)
# Set slice_dict after an experiment has been assigned
if self.sequence:
self.decimation_scheme = self.sequence.decimation_scheme
Expand Down Expand Up @@ -1009,12 +1020,9 @@ def main():
# If there are multiple aveperiods in a scan they are alternated (AVEPERIOD interfaced)
aveperiod = scan.aveperiods[scan.aveperiod_iter]
if aveperiod not in cfs_params_dict.keys() and aveperiod.cfs_flag:
cfs_params_dict[aveperiod] = CFSParameters()
for beam_iter in range(aveperiod.num_beams_in_scan):
cfs_params_dict[aveperiod].last_cfs_set_time[beam_iter] = 0
cfs_params_dict[aveperiod].set_new_freq[beam_iter] = True
cfs_params_dict[aveperiod].cfs_mags[beam_iter] = dict()
cfs_params_dict[aveperiod].cfs_masks[beam_iter] = dict()
cfs_params_dict[aveperiod] = CFSParameters(
aveperiod.num_beams_in_scan
)
if TIME_PROFILE:
time_start_of_aveperiod = datetime.utcnow()

Expand Down Expand Up @@ -1165,6 +1173,7 @@ def main():
options,
seqnum_start,
False,
num_beams=aveperiod.num_beams_in_scan,
)
time_remains = True

Expand Down