diff --git a/View/sediment_calibration_tab.py b/View/sediment_calibration_tab.py index 153ed07..bb98b83 100644 --- a/View/sediment_calibration_tab.py +++ b/View/sediment_calibration_tab.py @@ -1168,82 +1168,110 @@ class SedimentCalibrationTab(QWidget): self.fig_BS.canvas.draw_idle() def sample_choice_for_calibration(self): + fine_id = self.combobox_fine_sample_choice.currentIndexes() + fine_data = self.combobox_fine_sample_choice.currentData() + + sand_id = self.combobox_sand_sample_choice.currentIndex() + sand_data = self.combobox_sand_sample_choice.currentData() + sand_text = self.combobox_sand_sample_choice.currentText() + # --- List selected fine samples --- - stg.fine_sample_profile = [(f, int(f[1:]) - 1) for f in self.combobox_fine_sample_choice.currentData()] - stg.calib_fine_profiles = self.combobox_fine_sample_choice.currentIndexes() + stg.fine_sample_profile = [ + (f, int(f[1:]) - 1) for f in fine_data + ] + stg.calib_fine_profiles = fine_id # --- List selected sand samples --- - # stg.sand_sample_target = [(s, int(s[1:]) - 1) for s in self.combobox_sand_sample_choice.currentData()] - stg.sand_sample_target = [(self.combobox_sand_sample_choice.currentText(), - self.combobox_sand_sample_choice.currentIndex())] - stg.calib_sand_target = self.combobox_sand_sample_choice.currentIndex() + stg.sand_sample_target = [(sand_text, sand_id)] + stg.calib_sand_target = sand_id - # --- Find index in time (along acoustic recording) of sand sample target --- - if stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,): - t1 = ( - np.where(np.abs(stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - stg.time_sand[stg.sand_sample_target[0][1]]) == - np.nanmin(np.abs(stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - stg.time_sand[stg.sand_sample_target[0][1]])))[0][0] - ) - t2 = ( - np.where(np.abs(stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - stg.time_sand[stg.sand_sample_target[0][1]]) == - np.nanmin(np.abs(stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - stg.time_sand[stg.sand_sample_target[0][1]])))[0][0] - ) - else: - t1 = ( - np.where(np.abs(stg.time[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - stg.time_sand[ - stg.sand_sample_target[0][1]]) == - np.nanmin(np.abs(stg.time[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - stg.time_sand[ - stg.sand_sample_target[0][1]])))[0][0] - ) - t2 = ( - np.where(np.abs(stg.time[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - stg.time_sand[ - stg.sand_sample_target[0][1]]) == - np.nanmin(np.abs(stg.time[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - stg.time_sand[ - stg.sand_sample_target[0][1]])))[0][0] - ) - - # --- Find index in depth (along acoustic recording) of sand sample target --- - if stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,): - d1 = ( - np.where(np.abs(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - (-stg.depth_sand[stg.sand_sample_target[0][1]]) ) == - np.nanmin(np.abs(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - (-stg.depth_sand[stg.sand_sample_target[0][1]]) )))[0][0] - ) - d2 = ( - np.where(np.abs(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - (-stg.depth_sand[stg.sand_sample_target[0][1]]) ) == - np.nanmin(np.abs(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - (-stg.depth_sand[stg.sand_sample_target[0][1]]) )))[0][0] - ) - else: - d1 = ( - np.where(np.abs(stg.depth[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - (-stg.depth_sand[ - stg.sand_sample_target[0][1]]) ) == - np.nanmin(np.abs(stg.depth[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq1.currentIndex()] - (-stg.depth_sand[ - stg.sand_sample_target[0][1]]) )))[0][0] - ) - d2 = ( - np.where(np.abs(stg.depth[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - (-stg.depth_sand[ - stg.sand_sample_target[0][1]]) ) == - np.nanmin(np.abs(stg.depth[self.combobox_acoustic_data_choice.currentIndex()][ - self.combobox_freq2.currentIndex()] - (-stg.depth_sand[ - stg.sand_sample_target[0][1]]) )))[0][0] - ) + t1, t2 = self.sample_choice_for_calibration_times() + d1, d2 = self.sample_choice_for_calibration_depths() stg.sand_sample_target_indice = [(d1, t1), (d2, t2)] + def sample_choice_for_calibration_times(self): + data_id = self.combobox_acoustic_data_choice.currentIndex() + + freq1_id = self.combobox_freq1.currentIndex() + freq2_id = self.combobox_freq1.currentIndex() + + # --- Find index in time (along acoustic recording) of sand sample target --- + if stg.time_cross_section[data_id].shape != (0,): + time_data = stg.time_cross_section + else: + time_data = stg.time + + t1 = ( + np.where( + np.abs( + time_data[data_id][freq1_id] + - stg.time_sand[stg.sand_sample_target[0][1]] + ) == np.nanmin( + np.abs( + time_data[data_id][freq1_id] + - stg.time_sand[stg.sand_sample_target[0][1]] + ) + ) + )[0][0] + ) + t2 = ( + np.where( + np.abs( + time_data[data_id][freq2_id] + - stg.time_sand[stg.sand_sample_target[0][1]] + ) == np.nanmin( + np.abs( + time_data[data_id][freq2_id] + - stg.time_sand[stg.sand_sample_target[0][1]] + ) + ) + )[0][0] + ) + + return (t1, t2) + + def sample_choice_for_calibration_depths(self): + data_id = self.combobox_acoustic_data_choice.currentIndex() + + freq1_id = self.combobox_freq1.currentIndex() + freq2_id = self.combobox_freq1.currentIndex() + + # --- Find index in depth (along acoustic recording) of sand sample target --- + if stg.depth_cross_section[data_id].shape != (0,): + depth_data = stg.depth_cross_section + else: + depth_data = stg.depth + + d1 = ( + np.where( + np.abs( + depth_data[data_id][freq1_id] + - (-stg.depth_sand[stg.sand_sample_target[0][1]]) + ) == np.nanmin( + np.abs( + depth_data[data_id][freq1_id] - + (-stg.depth_sand[stg.sand_sample_target[0][1]]) + ) + ) + )[0][0] + ) + d2 = ( + np.where( + np.abs( + depth_data[data_id][freq2_id] + - (-stg.depth_sand[stg.sand_sample_target[0][1]]) + ) == np.nanmin( + np.abs( + depth_data[data_id][freq2_id] + - (-stg.depth_sand[stg.sand_sample_target[0][1]]) + ) + ) + )[0][0] + ) + + return (d1, d2) + def summary_samples_choices(self): self.pushbutton_compute_calibration.setToolTip("Calibration is computed at abscissa " + str(self.combobox_sand_sample_choice.currentText()))