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
+2082 -1421

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
+28 -20
View File
@@ -277,11 +277,17 @@ 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()],
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 ---
@@ -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)
+7 -4
View File
@@ -153,6 +153,9 @@ sand_sample_target_indice = []
Ctot_fine_per_cent = []
Ctot_sand_per_cent = []
fine_sample_position = []
sand_sample_position = []
# --- Acoustic inversion method ---
temperature = []
@@ -164,8 +167,8 @@ water_velocity = []
# kt_corrected_3D = np.array([])
frequencies_to_compute_VBI = np.array([])
VBI_cross_section = np.array([])
VBI_stream_bed = np.array([[[]]])
VBI_cross_section = []
# VBI_stream_bed = np.array([[[]]])
# --- Sediment Calibration
frequencies_for_calibration = []
@@ -183,8 +186,8 @@ J_cross_section = []
frequency_for_inversion = []
SSC_fine = np.array([[]])
SSC_sand = np.array([[]])
SSC_fine = []
SSC_sand = []
# --- Save study ---