Acoustic inversion tab display results of the inversion computation for both, fine and sand sediments. The user can visualize the concentrations fields, plot vertical profiles of the concentrations and choose samples to compare measured SSC vs inverted SSC.

This commit is contained in:
brahim committed 2024-08-21 09:26:08 +02:00
1 parent d38a65f2c6
commit 66f62765a1
4 files changed
+2104 -1443

No files matched your search

+12 -1
View File
@@ -2157,7 +2157,8 @@ class AcousticDataTab(QWidget):
stg.BS_raw_data.append(acoustic_data._BS_raw_data)
stg.BS_raw_data_reshape.append(acoustic_data.reshape_BS_raw_data())
stg.depth.append(acoustic_data._r)
stg.depth_2D.append(acoustic_data.compute_r_2D())
# stg.depth_2D.append(acoustic_data.compute_r_2D())
stg.depth_2D.append(np.array([]))
stg.depth_reshape.append(acoustic_data.reshape_r())
stg.time.append(acoustic_data._time)
stg.time_reshape.append(acoustic_data.reshape_t())
@@ -2225,6 +2226,16 @@ class AcousticDataTab(QWidget):
stg.BS_stream_bed_pre_process_average.append(np.array([]))
stg.BS_stream_bed_pre_process_SNR_average.append(np.array([]))
stg.frequencies_for_calibration.append([])
stg.frequency_for_inversion.append([])
stg.fine_sample_position.append([])
stg.sand_sample_position.append([])
stg.VBI_cross_section.append(np.array([]))
stg.SSC_fine.append(np.array([]))
stg.SSC_sand.append(np.array([]))
# if self.fileListWidget.count() == 0:
#
# stg.ABS_name = [self.combobox_ABS_system_choice.currentText()]
File diff suppressed because it is too large. Load diff
+29 -21
View File
@@ -277,12 +277,18 @@ class SedimentCalibrationTab(QWidget):
def plot_acoustic_recording(self):
# --- Record frequencies for calibration ---
stg.frequencies_for_calibration.append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq1.currentIndex()],
self.combobox_freq1.currentIndex()))
stg.frequencies_for_calibration.append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq2.currentIndex()],
self.combobox_freq2.currentIndex()))
stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].clear()
(stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].
append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq1.currentIndex()],
self.combobox_freq1.currentIndex())))
(stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].
append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq2.currentIndex()],
self.combobox_freq2.currentIndex())))
stg.frequency_for_inversion[self.combobox_acoustic_data_choice.currentIndex()].clear()
stg.frequency_for_inversion[self.combobox_acoustic_data_choice.currentIndex()].append((
stg.freq[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq2.currentIndex()],
self.combobox_freq2.currentIndex()))
# --- Plot acoustic data recording ---
self.verticalLayout_groupbox_acoustic_data.removeWidget(self.canvas_BS)
@@ -705,12 +711,14 @@ class SedimentCalibrationTab(QWidget):
# --- Compute J ---
if stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,):
depth_2D = np.zeros(stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()].shape)
stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()] = (
np.zeros(stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()].shape))
for f, _ in enumerate(stg.freq[self.combobox_acoustic_data_choice.currentIndex()]):
depth_2D[f, :, :] = np.repeat(np.transpose(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()]
stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()][f, :, :] = (
np.repeat(np.transpose(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()]
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
axis=1)
axis=1))
print("kt cor ", stg.kt_corrected)
print("kt read", stg.kt_read)
@@ -736,20 +744,20 @@ class SedimentCalibrationTab(QWidget):
J_cross_section_freq1 = self.inv_hc.j_cross_section(
BS=stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq1.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq1.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq1.currentIndex(), :, :],
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
J_cross_section_freq2 = self.inv_hc.j_cross_section(
BS=stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq2.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq2.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq2.currentIndex(), :, :],
kt=kt3D[self.combobox_freq2.currentIndex(), :, :])
elif stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,):
depth_2D = np.zeros(stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape)
stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()] = np.zeros(stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape)
for f, _ in enumerate(stg.freq[self.combobox_acoustic_data_choice.currentIndex()]):
depth_2D[f, :, :] = np.repeat(
stg.depth_2D[self.combobox_acoustic_data_choice.currentIndex()][f, :, :] = np.repeat(
np.transpose(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()]
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
@@ -771,20 +779,20 @@ class SedimentCalibrationTab(QWidget):
J_cross_section_freq1 = self.inv_hc.j_cross_section(
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq1.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq1.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_freq1.currentIndex(), :, :][self.combobox_freq1.currentIndex(), :, :],
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
J_cross_section_freq2 = self.inv_hc.j_cross_section(
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq2.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq2.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_freq2.currentIndex(), :, :][self.combobox_freq2.currentIndex(), :, :],
kt=kt3D[self.combobox_freq2.currentIndex(), :, :])
else:
depth_2D = np.zeros(stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()].shape)
stg.depth_2D = np.zeros(stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()].shape)
for f, _ in enumerate(stg.freq[self.combobox_acoustic_data_choice.currentIndex()]):
depth_2D[f, :, :] = np.repeat(
stg.depth_2D[f, :, :] = np.repeat(
np.transpose(stg.depth[self.combobox_acoustic_data_choice.currentIndex()]
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
stg.time[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
@@ -806,17 +814,15 @@ class SedimentCalibrationTab(QWidget):
J_cross_section_freq1 = self.inv_hc.j_cross_section(
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq1.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq1.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_freq1.currentIndex(), :, :],
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
J_cross_section_freq2 = self.inv_hc.j_cross_section(
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
self.combobox_freq2.currentIndex(), :, :],
r2D=depth_2D[self.combobox_freq2.currentIndex(), :, :],
r2D=stg.depth_2D[self.combobox_freq2.currentIndex(), :, :],
kt=kt3D[self.combobox_freq2.currentIndex(), :, :])
stg.depth_2D = depth_2D
stg.J_cross_section.append(J_cross_section_freq1)
stg.J_cross_section.append(J_cross_section_freq2)
@@ -909,3 +915,5 @@ class SedimentCalibrationTab(QWidget):
self.spinbox_zeta_freq2.clear()
self.spinbox_zeta_freq2.setValue(zeta_freq2)