diff --git a/View/checkable_combobox.py b/View/checkable_combobox.py index c298402..48c2a17 100644 --- a/View/checkable_combobox.py +++ b/View/checkable_combobox.py @@ -129,6 +129,11 @@ class CheckableComboBox(QComboBox): res.append(i) return res + def setCurrentIndexes(self, indexes): + for i in range(self.model().rowCount()): + if i in indexes: + self.model().item(i).setCheckState(Qt.Checked) + # class CheckableComboBox(QComboBox): # def __init__(self): # super().__init__() diff --git a/View/sediment_calibration_tab.py b/View/sediment_calibration_tab.py index 6383370..e271687 100644 --- a/View/sediment_calibration_tab.py +++ b/View/sediment_calibration_tab.py @@ -866,8 +866,39 @@ class SedimentCalibrationTab(QWidget): self.function_pushbutton_update_acoustic_file() + self._update_calibration_parameters() + self.function_pushbutton_plot_sample() + self.blockSignals(False) + def _update_calibration_parameters(self): + if stg.calib_acoustic_data == -1: + return + + self.combobox_acoustic_data_choice.blockSignals(True) + self.combobox_freq1.blockSignals(True) + self.combobox_freq2.blockSignals(True) + self.combobox_fine_sample_choice.blockSignals(True) + self.combobox_sand_sample_choice.blockSignals(True) + + self.combobox_acoustic_data_choice\ + .setCurrentIndex(stg.calib_acoustic_data) + + self.combobox_freq1.setCurrentIndex(stg.calib_freq_1) + self.combobox_freq2.setCurrentIndex(stg.calib_freq_2) + + self.combobox_fine_sample_choice\ + .setCurrentIndexes(stg.calib_fine_profiles) + + self.combobox_sand_sample_choice\ + .setCurrentIndex(stg.calib_sand_target) + + self.combobox_sand_sample_choice.blockSignals(False) + self.combobox_fine_sample_choice.blockSignals(False) + self.combobox_freq2.blockSignals(False) + self.combobox_freq1.blockSignals(False) + self.combobox_acoustic_data_choice.blockSignals(False) + def function_pushbutton_update_acoustic_file(self): if len(stg.data_preprocessed) == 0: return @@ -914,8 +945,6 @@ class SedimentCalibrationTab(QWidget): [s[0] for s in stg.sample_sand] ) - self.plot_acoustic_recording() - self.label_temperature.clear() self.label_temperature.setText("T = " + str(stg.temperature) + " °C") @@ -939,32 +968,32 @@ class SedimentCalibrationTab(QWidget): # --- Record frequencies for calibration --- stg.calib_acoustic_data = data_id - index_freq1 = self.combobox_freq1.currentIndex() - index_freq2 = self.combobox_freq2.currentIndex() + freq1 = self.combobox_freq1.currentIndex() + freq2 = self.combobox_freq2.currentIndex() stg.frequencies_for_calibration.clear() stg.frequencies_for_calibration.append( ( - stg.freq[data_id][index_freq1], - index_freq1 + stg.freq[data_id][freq1], + freq1 ) ) - stg.calib_freq_1 = index_freq1 + stg.calib_freq_1 = freq1 stg.frequencies_for_calibration.append( ( - stg.freq[data_id][index_freq2], - index_freq2 + stg.freq[data_id][freq2], + freq2 ) ) - stg.calib_freq_2 = index_freq2 + stg.calib_freq_2 = freq2 stg.frequency_for_inversion = tuple() stg.frequency_for_inversion = ( stg.freq[data_id][ - self.combobox_freq2.currentIndex() + freq2 ], - self.combobox_freq2.currentIndex() + freq2 ) # --- Plot acoustic data recording --- @@ -985,14 +1014,14 @@ class SedimentCalibrationTab(QWidget): stg.BS_stream_bed_pre_process_average[ data_id ][ - self.combobox_freq2.currentIndex(), :, : + freq2, :, : ] ) val_max = np.nanmax( stg.BS_stream_bed_pre_process_average[ data_id ][ - self.combobox_freq2.currentIndex(), :, : + freq2, :, : ] ) if val_min == 0: @@ -1002,39 +1031,39 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) @@ -1043,10 +1072,10 @@ class SedimentCalibrationTab(QWidget): val_min = np.nanmin( stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax( stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 @@ -1054,48 +1083,48 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_stream_bed_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) elif stg.BS_stream_bed[data_id].shape != (0,): val_min = np.nanmin( - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + stg.BS_stream_bed[data_id][freq2, :, :]) val_max = np.nanmax( - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + stg.BS_stream_bed[data_id][freq2, :, :]) if val_min == 0: val_min = 1e-5 @@ -1104,19 +1133,19 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + freq2, :], + stg.BS_stream_bed[data_id][freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + freq2, :], + stg.BS_stream_bed[data_id][freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) @@ -1124,19 +1153,19 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + freq2, :], + stg.BS_stream_bed[data_id][freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], - stg.BS_stream_bed[data_id][self.combobox_freq2.currentIndex(), + freq2, :], + stg.BS_stream_bed[data_id][freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) @@ -1144,10 +1173,10 @@ class SedimentCalibrationTab(QWidget): val_min = np.nanmin( stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax( stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 @@ -1155,49 +1184,49 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) elif stg.BS_cross_section_pre_process_SNR[data_id].shape != (0,): val_min = np.nanmin( stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax( stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 @@ -1205,49 +1234,49 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: if stg.depth_cross_section[data_id].shape != (0): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) elif stg.BS_cross_section[data_id].shape != (0,): val_min = np.nanmin( stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax( stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 @@ -1255,56 +1284,56 @@ class SedimentCalibrationTab(QWidget): if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: if stg.depth_cross_section[data_id].shape != (0,): self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) else: self.axis_BS.pcolormesh( stg.time[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], stg.BS_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) elif stg.BS_raw_data_pre_process_average[data_id].shape != (0,): val_min = np.nanmin(stg.BS_raw_data_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax(stg.BS_raw_data_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 self.axis_BS.pcolormesh( - stg.time[data_id][self.combobox_freq2.currentIndex(), :], - -stg.depth[data_id][self.combobox_freq2.currentIndex(), :], + stg.time[data_id][freq2, :], + -stg.depth[data_id][freq2, :], stg.BS_raw_data_pre_process_average[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) @@ -1312,33 +1341,33 @@ class SedimentCalibrationTab(QWidget): elif stg.BS_raw_data_pre_process_SNR[data_id].shape != (0,): val_min = np.nanmin(stg.BS_raw_data_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax(stg.BS_raw_data_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 self.axis_BS.pcolormesh( - stg.time[data_id][self.combobox_freq2.currentIndex(), :], - -stg.depth[data_id][self.combobox_freq2.currentIndex(), :], + stg.time[data_id][freq2, :], + -stg.depth[data_id][freq2, :], stg.BS_raw_data_pre_process_SNR[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) elif stg.BS_raw_data[data_id].shape != (0,): val_min = np.nanmin(stg.BS_raw_data[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) val_max = np.nanmax(stg.BS_raw_data[data_id][ - self.combobox_freq2.currentIndex(), :, :]) + freq2, :, :]) if val_min == 0: val_min = 1e-5 self.axis_BS.pcolormesh( - stg.time[data_id][self.combobox_freq2.currentIndex(), :], - -stg.depth[data_id][self.combobox_freq2.currentIndex(), :], + stg.time[data_id][freq2, :], + -stg.depth[data_id][freq2, :], stg.BS_raw_data[data_id][ - self.combobox_freq2.currentIndex(), :, :], + freq2, :, :], cmap='viridis', norm=LogNorm(vmin=val_min, vmax=val_max)) # --- Plot samples --- @@ -1383,10 +1412,10 @@ class SedimentCalibrationTab(QWidget): self.red_line_plot_return, = ( self.axis_BS.plot( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), stg.sand_sample_target_indice[0][1]] * + freq2, stg.sand_sample_target_indice[0][1]] * np.ones(stg.depth_cross_section[data_id].shape[1]), -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], color='red', linestyle="solid", linewidth=2)) else: @@ -1394,10 +1423,10 @@ class SedimentCalibrationTab(QWidget): self.red_line_plot_return, = ( self.axis_BS.plot( stg.time[data_id][ - self.combobox_freq2.currentIndex(), stg.sand_sample_target_indice[0][1]] * + freq2, stg.sand_sample_target_indice[0][1]] * np.ones(stg.depth_cross_section[data_id].shape[1]), -stg.depth_cross_section[data_id][ - self.combobox_freq2.currentIndex(), :], + freq2, :], color='red', linestyle="solid", linewidth=2)) else: @@ -1407,10 +1436,9 @@ class SedimentCalibrationTab(QWidget): self.red_line_plot_return, = ( self.axis_BS.plot( stg.time_cross_section[data_id][ - self.combobox_freq2.currentIndex(), stg.sand_sample_target_indice[0][1]] * + freq2, stg.sand_sample_target_indice[0][1]] * np.ones(stg.depth[data_id].shape[1]), - -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + -stg.depth[data_id][freq2, :], color='red', linestyle="solid", linewidth=2)) else: @@ -1418,10 +1446,9 @@ class SedimentCalibrationTab(QWidget): self.red_line_plot_return, = ( self.axis_BS.plot( stg.time[data_id][ - self.combobox_freq2.currentIndex(), stg.sand_sample_target_indice[0][1]] * + freq2, stg.sand_sample_target_indice[0][1]] * np.ones(stg.depth[data_id].shape[1]), - -stg.depth[data_id][ - self.combobox_freq2.currentIndex(), :], + -stg.depth[data_id][freq2, :], color='red', linestyle="solid", linewidth=2)) self.axis_BS.set_xlabel("Time (sec)")