RfiFrameDrop

class RfiFrameDrop : public kotekan::Stage

Drop whole GPU frames based on the high cadence kurtosis statistics.

This stage reads the kurtosis data output and uses it to filter the GPU N^2 data that feeds through the system. This is complex because the subframe processing of the N^2 data, the kurtosis frames contain the data corresponding to multiple N^2 frames and so we need to be careful to synchronize them.

Buffers

  • in_buf_vis The kotekan buffer from which frames are read, can be any size.

    • Format: GPU packed upper triangle

    • Metadata: chimeMetadata

  • in_buf_sk The high cadence Spectral Kurtosis estimates.

    • Format: High cadence SK values.

    • Metadata: chimeMetadata

  • out_buf The filtered GPU visibility data.

    • Format: GPU packed upper triangle

    • Metadata: chimeMetadata

Metrics

  • kotekan_rfiframedrop_failing_frame_total The number of frames failing each criteria per frequency.

  • kotekan_rfiframedrop_dropped_frame_total The number of frames dropped (i.e. failing any single threshold test) for each frequency.

  • kotekan_rfiframedrop_frame_total The total number of frames seen by this stage per frequency.

Author

Richard Shaw

Param num_elements:

The number of inputs to the correlator.

Param num_sub_frames:

The number of N^2 frames we will receive per SK frame.

Param samples_per_data_set:

The number of FPGA samples combined into an SK frame.

Param sk_step:

The number of FPGA samples combined into an SK element.

Param thresholds:

List of dicts containing fraction and threshold keys. Each of these is a float giving the fraction of SK values that must exceed the threshold for the frame to get dropped.

Public Functions

RfiFrameDrop(kotekan::Config &config, const std::string &unique_name, kotekan::bufferContainer &buffer_container)

Constructor.

virtual void main_thread() override

Primary loop.

bool rest_enable_callback(nlohmann::json &update)

Callback for the configUpdater to turn on/off rfi zeroing.

bool rest_thresholds_callback(nlohmann::json &update)

Callback for the configUpdater to update thresholds.