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.
parent
d38a65f2c6
commit
66f62765a1
|
|
@ -2157,7 +2157,8 @@ class AcousticDataTab(QWidget):
|
||||||
stg.BS_raw_data.append(acoustic_data._BS_raw_data)
|
stg.BS_raw_data.append(acoustic_data._BS_raw_data)
|
||||||
stg.BS_raw_data_reshape.append(acoustic_data.reshape_BS_raw_data())
|
stg.BS_raw_data_reshape.append(acoustic_data.reshape_BS_raw_data())
|
||||||
stg.depth.append(acoustic_data._r)
|
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.depth_reshape.append(acoustic_data.reshape_r())
|
||||||
stg.time.append(acoustic_data._time)
|
stg.time.append(acoustic_data._time)
|
||||||
stg.time_reshape.append(acoustic_data.reshape_t())
|
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_average.append(np.array([]))
|
||||||
stg.BS_stream_bed_pre_process_SNR_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:
|
# if self.fileListWidget.count() == 0:
|
||||||
#
|
#
|
||||||
# stg.ABS_name = [self.combobox_ABS_system_choice.currentText()]
|
# stg.ABS_name = [self.combobox_ABS_system_choice.currentText()]
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -277,12 +277,18 @@ class SedimentCalibrationTab(QWidget):
|
||||||
def plot_acoustic_recording(self):
|
def plot_acoustic_recording(self):
|
||||||
|
|
||||||
# --- Record frequencies for calibration ---
|
# --- Record frequencies for calibration ---
|
||||||
stg.frequencies_for_calibration.append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][
|
stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].clear()
|
||||||
self.combobox_freq1.currentIndex()],
|
(stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].
|
||||||
self.combobox_freq1.currentIndex()))
|
append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][self.combobox_freq1.currentIndex()],
|
||||||
stg.frequencies_for_calibration.append((stg.freq[self.combobox_acoustic_data_choice.currentIndex()][
|
self.combobox_freq1.currentIndex())))
|
||||||
self.combobox_freq2.currentIndex()],
|
(stg.frequencies_for_calibration[self.combobox_acoustic_data_choice.currentIndex()].
|
||||||
self.combobox_freq2.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 ---
|
# --- Plot acoustic data recording ---
|
||||||
self.verticalLayout_groupbox_acoustic_data.removeWidget(self.canvas_BS)
|
self.verticalLayout_groupbox_acoustic_data.removeWidget(self.canvas_BS)
|
||||||
|
|
@ -705,12 +711,14 @@ class SedimentCalibrationTab(QWidget):
|
||||||
# --- Compute J ---
|
# --- Compute J ---
|
||||||
if stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,):
|
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()]):
|
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],
|
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
|
||||||
stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
|
stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
|
||||||
axis=1)
|
axis=1))
|
||||||
|
|
||||||
print("kt cor ", stg.kt_corrected)
|
print("kt cor ", stg.kt_corrected)
|
||||||
print("kt read", stg.kt_read)
|
print("kt read", stg.kt_read)
|
||||||
|
|
@ -736,20 +744,20 @@ class SedimentCalibrationTab(QWidget):
|
||||||
|
|
||||||
J_cross_section_freq1 = self.inv_hc.j_cross_section(
|
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(), :, :],
|
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(), :, :])
|
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
|
||||||
|
|
||||||
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
||||||
BS=stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()][
|
BS=stg.BS_stream_bed[self.combobox_acoustic_data_choice.currentIndex()][
|
||||||
self.combobox_freq2.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(), :, :])
|
kt=kt3D[self.combobox_freq2.currentIndex(), :, :])
|
||||||
|
|
||||||
elif stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape != (0,):
|
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()]):
|
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()]
|
np.transpose(stg.depth_cross_section[self.combobox_acoustic_data_choice.currentIndex()]
|
||||||
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
|
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
|
||||||
stg.time_cross_section[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
|
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(
|
J_cross_section_freq1 = self.inv_hc.j_cross_section(
|
||||||
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
|
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
|
||||||
self.combobox_freq1.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(), :, :])
|
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
|
||||||
|
|
||||||
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
||||||
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
|
BS=stg.BS_cross_section[self.combobox_acoustic_data_choice.currentIndex()][
|
||||||
self.combobox_freq2.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(), :, :])
|
kt=kt3D[self.combobox_freq2.currentIndex(), :, :])
|
||||||
|
|
||||||
else:
|
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()]):
|
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()]
|
np.transpose(stg.depth[self.combobox_acoustic_data_choice.currentIndex()]
|
||||||
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
|
[self.combobox_freq1.currentIndex()])[:, np.newaxis],
|
||||||
stg.time[self.combobox_acoustic_data_choice.currentIndex()].shape[1],
|
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(
|
J_cross_section_freq1 = self.inv_hc.j_cross_section(
|
||||||
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
|
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
|
||||||
self.combobox_freq1.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(), :, :])
|
kt=kt3D[self.combobox_freq1.currentIndex(), :, :])
|
||||||
|
|
||||||
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
J_cross_section_freq2 = self.inv_hc.j_cross_section(
|
||||||
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
|
BS=stg.BS_raw_data[self.combobox_acoustic_data_choice.currentIndex()][
|
||||||
self.combobox_freq2.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(), :, :])
|
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_freq1)
|
||||||
stg.J_cross_section.append(J_cross_section_freq2)
|
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.clear()
|
||||||
self.spinbox_zeta_freq2.setValue(zeta_freq2)
|
self.spinbox_zeta_freq2.setValue(zeta_freq2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
11
settings.py
11
settings.py
|
|
@ -153,6 +153,9 @@ sand_sample_target_indice = []
|
||||||
Ctot_fine_per_cent = []
|
Ctot_fine_per_cent = []
|
||||||
Ctot_sand_per_cent = []
|
Ctot_sand_per_cent = []
|
||||||
|
|
||||||
|
fine_sample_position = []
|
||||||
|
sand_sample_position = []
|
||||||
|
|
||||||
# --- Acoustic inversion method ---
|
# --- Acoustic inversion method ---
|
||||||
|
|
||||||
temperature = []
|
temperature = []
|
||||||
|
|
@ -164,8 +167,8 @@ water_velocity = []
|
||||||
# kt_corrected_3D = np.array([])
|
# kt_corrected_3D = np.array([])
|
||||||
|
|
||||||
frequencies_to_compute_VBI = np.array([])
|
frequencies_to_compute_VBI = np.array([])
|
||||||
VBI_cross_section = np.array([])
|
VBI_cross_section = []
|
||||||
VBI_stream_bed = np.array([[[]]])
|
# VBI_stream_bed = np.array([[[]]])
|
||||||
|
|
||||||
# --- Sediment Calibration
|
# --- Sediment Calibration
|
||||||
frequencies_for_calibration = []
|
frequencies_for_calibration = []
|
||||||
|
|
@ -183,8 +186,8 @@ J_cross_section = []
|
||||||
|
|
||||||
frequency_for_inversion = []
|
frequency_for_inversion = []
|
||||||
|
|
||||||
SSC_fine = np.array([[]])
|
SSC_fine = []
|
||||||
SSC_sand = np.array([[]])
|
SSC_sand = []
|
||||||
|
|
||||||
# --- Save study ---
|
# --- Save study ---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue