Sediment calibration: Refactoring.

dev
Pierre-Antoine 2025-04-17 09:51:41 +02:00
parent 4b6ee4af09
commit 9bb02edee4
1 changed files with 97 additions and 69 deletions

View File

@ -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()))