def set_band_range(self, current_signal=None): """Highlight the signal's band labels. If no signal is selected remove all highlights. """ if current_signal is not None and not is_undef_freq(current_signal): lower_freq = safe_cast( current_signal.at[Signal.INF_FREQ], int ) upper_freq = safe_cast( current_signal.at[Signal.SUP_FREQ], int ) zipped = list(zip(Constants.BANDS, self.band_labels)) for i, w in enumerate(zipped): band, band_label = w if lower_freq >= band.lower and lower_freq < band.upper: self.activate_band_category(band_label) for uband, uband_label in zipped[i + 1:]: if upper_freq > uband.lower: self.activate_band_category(uband_label) else: self.activate_band_category(uband_label, False) break else: self.activate_band_category(band_label, False) else: for band_label in self.band_labels: self.activate_band_category(band_label, False)
def _ok(self, signal_name): """Evalaute if the signal matches the band filters.""" if not self.apply_remove_btn.isChecked(): return True undef_band = is_undef_band(self._owner.db.loc[signal_name]) if undef_band: if self._owner.include_undef_bands.isChecked(): return True else: return False signal_bands = ( safe_cast(self._owner.db.at[signal_name, Signal.INF_BAND], int), safe_cast(self._owner.db.at[signal_name, Signal.SUP_BAND], int) ) lower_limit_ok = True upper_limit_ok = True if self._owner.activate_low_band_filter_btn.isChecked(): if not signal_bands[1] >= filters_limit(self._owner.lower_band_spinbox, self._owner.lower_band_filter_unit, self._owner.lower_band_confidence, -1): lower_limit_ok = False if self._owner.activate_up_band_filter_btn.isChecked(): if not signal_bands[0] < filters_limit(self._owner.upper_band_spinbox, self._owner.upper_band_filter_unit, self._owner.upper_band_confidence): upper_limit_ok = False return lower_limit_ok and upper_limit_ok
def _ok(self, signal_name): """Evalaute if the signal matches the frequency filters.""" if not self.apply_remove_btn.isChecked(): return True undef_freq = is_undef_freq(self._owner.db.loc[signal_name]) if undef_freq: if self._owner.include_undef_freqs.isChecked(): return True else: return False signal_freqs = (safe_cast( self._owner.db.at[signal_name, Signal.INF_FREQ], int), safe_cast( self._owner.db.at[signal_name, Signal.SUP_FREQ], int)) band_filter_ok = False any_checked = False for btn, band_limits in zip(self._frequency_filters_btns, Constants.BANDS): if btn.isChecked(): any_checked = True if signal_freqs[0] < band_limits.upper and signal_freqs[ 1] >= band_limits.lower: band_filter_ok = True lower_limit_ok = True upper_limit_ok = True if self._owner.activate_low_freq_filter_btn.isChecked(): if not signal_freqs[1] >= filters_limit( self._owner.lower_freq_spinbox, self._owner.lower_freq_filter_unit, self._owner.lower_freq_confidence, -1): lower_limit_ok = False if self._owner.activate_up_freq_filter_btn.isChecked(): if not signal_freqs[0] < filters_limit( self._owner.upper_freq_spinbox, self._owner.upper_freq_filter_unit, self._owner.upper_freq_confidence): upper_limit_ok = False if any_checked: return band_filter_ok and lower_limit_ok and upper_limit_ok else: return lower_limit_ok and upper_limit_ok
def _set_labels_values(self, labels_table): """Set all the labels values.""" for lbl_list, table in zip(self._all_lbls, labels_table): for lbl, row in zip(lbl_list, table): lbl.switch_off() value = _get_lbl_value(*row) lbl.level = safe_cast(value, int) if not isinstance(lbl, MultiColorSwitchableLabel): value += '%' lbl.setText(value) lbl.switch_on()
def _update_space_weather(self, status_ok): """Update the space weather screen after a successful download. If the download was not successful throw a warning. In any case remove the downloaded data. """ self._owner.update_now_bar.set_idle() if status_ok: xray_long = safe_cast(self._owner.space_weather_data.xray[-1][7], float) def format_text(letter, power): return letter + f"{xray_long * 10**power:.1f}" if xray_long < 1e-8 and xray_long != -1.00e+05: self._owner.peak_flux_lbl.setText(format_text("<A", 8)) elif xray_long >= 1e-8 and xray_long < 1e-7: self._owner.peak_flux_lbl.setText(format_text("A", 8)) elif xray_long >= 1e-7 and xray_long < 1e-6: self._owner.peak_flux_lbl.setText(format_text("B", 7)) elif xray_long >= 1e-6 and xray_long < 1e-5: self._owner.peak_flux_lbl.setText(format_text("C", 6)) elif xray_long >= 1e-5 and xray_long < 1e-4: self._owner.peak_flux_lbl.setText(format_text("M", 5)) elif xray_long >= 1e-4: self._owner.peak_flux_lbl.setText(format_text("X", 4)) elif xray_long == -1.00e+05: self._owner.peak_flux_lbl.setText("No Data") if xray_long < 1e-5 and xray_long != -1.00e+05: self._switchable_r_labels.switch_on(self._owner.r0_now_lbl) elif xray_long >= 1e-5 and xray_long < 5e-5: self._switchable_r_labels.switch_on(self._owner.r1_now_lbl) elif xray_long >= 5e-5 and xray_long < 1e-4: self._switchable_r_labels.switch_on(self._owner.r2_now_lbl) elif xray_long >= 1e-4 and xray_long < 1e-3: self._switchable_r_labels.switch_on(self._owner.r3_now_lbl) elif xray_long >= 1e-3 and xray_long < 2e-3: self._switchable_r_labels.switch_on(self._owner.r4_now_lbl) elif xray_long >= 2e-3: self._switchable_r_labels.switch_on(self._owner.r5_now_lbl) elif xray_long == -1.00e+05: self._switchable_r_labels.switch_off_all() pro10 = safe_cast(self._owner.space_weather_data.prot_el[-1][8], float) if pro10 < 10 and pro10 != -1.00e+05: self._switchable_s_labels.switch_on(self._owner.s0_now_lbl) elif pro10 >= 10 and pro10 < 100: self._switchable_s_labels.switch_on(self._owner.s1_now_lbl) elif pro10 >= 100 and pro10 < 1000: self._switchable_s_labels.switch_on(self._owner.s2_now_lbl) elif pro10 >= 1000 and pro10 < 10000: self._switchable_s_labels.switch_on(self._owner.s3_now_lbl) elif pro10 >= 10000 and pro10 < 100000: self._switchable_s_labels.switch_on(self._owner.s4_now_lbl) elif pro10 >= 100000: self._switchable_s_labels.switch_on(self._owner.s5_now_lbl) elif pro10 == -1.00e+05: self._switchable_s_labels.switch_off_all() k_index = safe_cast( self._owner.space_weather_data.ak_index[8][11].replace( '.', ''), int) self._owner.k_index_lbl.setText(str(k_index)) a_index = safe_cast( self._owner.space_weather_data.ak_index[7][7].replace('.', ''), int) self._owner.a_index_lbl.setText(str(a_index)) if k_index == 0: self._switchable_g_now_labels.switch_on(self._owner.g0_now_lbl) self._k_storm_labels.switch_on(self.k_inactive_lbl) self._owner.expected_noise_lbl.setText( " S0 - S1 (<-120 dBm) ") elif k_index == 1: self._switchable_g_now_labels.switch_on(self._owner.g0_now_lbl) self._k_storm_labels.switch_on(self._owner.k_very_quiet_lbl) self._owner.expected_noise_lbl.setText( " S0 - S1 (<-120 dBm) ") elif k_index == 2: self._switchable_g_now_labels.switch_on(self._owner.g0_now_lbl) self._k_storm_labels.switch_on(self._owner.k_quiet_lbl) self._owner.expected_noise_lbl.setText( " S1 - S2 (-115 dBm) ") elif k_index == 3: self._switchable_g_now_labels.switch_on(self._owner.g0_now_lbl) self._k_storm_labels.switch_on(self._owner.k_unsettled_lbl) self._owner.expected_noise_lbl.setText( " S2 - S3 (-110 dBm) ") elif k_index == 4: self._switchable_g_now_labels.switch_on(self._owner.g0_now_lbl) self._k_storm_labels.switch_on(self._owner.k_active_lbl) self._owner.expected_noise_lbl.setText( " S3 - S4 (-100 dBm) ") elif k_index == 5: self._switchable_g_now_labels.switch_on(self._owner.g1_now_lbl) self._k_storm_labels.switch_on(self._owner.k_min_storm_lbl) self._owner.expected_noise_lbl.setText(" S4 - S6 (-90 dBm) ") elif k_index == 6: self._switchable_g_now_labels.switch_on(self._owner.g2_now_lbl) self._k_storm_labels.switch_on(self._owner.k_maj_storm_lbl) self._owner.expected_noise_lbl.setText(" S6 - S9 (-80 dBm) ") elif k_index == 7: self._switchable_g_now_labels.switch_on(self._owner.g3_now_lbl) self._k_storm_labels.switch_on(self._owner.k_sev_storm_lbl) self._owner.expected_noise_lbl.setText( " S9 - S20 (>-60 dBm) ") elif k_index == 8: self._switchable_g_now_labels.switch_on(self._owner.g4_now_lbl) self._k_storm_labels.switch_on( self._owner.k_very_sev_storm_lbl) self._owner.expected_noise_lbl.setText( " S20 - S30 (>-60 dBm) ") elif k_index == 9: self._switchable_g_now_labels.switch_on(self._owner.g5_now_lbl) self._k_storm_labels.switch_on(self._owner.k_ex_sev_storm_lbl) self._owner.expected_noise_lbl.setText(" S30+ (>>-60 dBm) ") self._owner.expected_noise_lbl.switch_on() if a_index >= 0 and a_index < 8: self._a_storm_labels.switch_on(self._owner.a_quiet_lbl) elif a_index >= 8 and a_index < 16: self._a_storm_labels.switch_on(self._owner.a_unsettled_lbl) elif a_index >= 16 and a_index < 30: self._a_storm_labels.switch_on(self._owner.a_active_lbl) elif a_index >= 30 and a_index < 50: self._a_storm_labels.switch_on(self._owner.a_min_storm_lbl) elif a_index >= 50 and a_index < 100: self._a_storm_labels.switch_on(self._owner.a_maj_storm_lbl) elif a_index >= 100 and a_index < 400: self._a_storm_labels.switch_on(self._owner.a_sev_storm_lbl) index = self._owner.space_weather_data.geo_storm[6].index( "was") + 1 k_index_24_hmax = safe_cast( self._owner.space_weather_data.geo_storm[6][index], int) if k_index_24_hmax == 0: self._switchable_g_today_labels.switch_on( self._owner.g0_today_lbl) elif k_index_24_hmax == 1: self._switchable_g_today_labels.switch_on( self._owner.g0_today_lbl) elif k_index_24_hmax == 2: self._switchable_g_today_labels.switch_on( self._owner.g0_today_lbl) elif k_index_24_hmax == 3: self._switchable_g_today_labels.switch_on( self._owner.g0_today_lbl) elif k_index_24_hmax == 4: self._switchable_g_today_labels.switch_on( self._owner.g0_today_lbl) elif k_index_24_hmax == 5: self._switchable_g_today_labels.switch_on( self._owner.g1_today_lbl) elif k_index_24_hmax == 6: self._switchable_g_today_labels.switch_on( self._owner.g2_today_lbl) elif k_index_24_hmax == 7: self._switchable_g_today_labels.switch_on( self._owner.g3_today_lbl) elif k_index_24_hmax == 8: self._switchable_g_today_labels.switch_on( self._owner.g4_today_lbl) elif k_index_24_hmax == 9: self._switchable_g_today_labels.switch_on( self._owner.g5_today_lbl) val = safe_cast( self._owner.space_weather_data.ak_index[7][2].replace('.', ''), int) self._owner.sfi_lbl.setText(f"{val}") val = safe_cast([ x[4] for x in self._owner.space_weather_data.sgas if "SSN" in x ][0], int) self._owner.sn_lbl.setText(f"{val:d}") for label, pixmap in zip(self.space_weather_labels, self._owner.space_weather_data.images): label.pixmap = pixmap label.make_transparent() label.apply_pixmap() elif not self._owner.closing: pop_up(self._owner, title=Messages.BAD_DOWNLOAD, text=Messages.BAD_DOWNLOAD_MSG).show() self._owner.space_weather_data.remove_data()