From 5a98b13ad3383b120058561ea06ab3160f7e5ac6 Mon Sep 17 00:00:00 2001 From: brahim Date: Fri, 13 Sep 2024 14:59:13 +0200 Subject: [PATCH] Users can download several acoustic data files at the same time. --- View/acoustic_data_tab.py | 362 +++++++++++--------------------------- 1 file changed, 100 insertions(+), 262 deletions(-) diff --git a/View/acoustic_data_tab.py b/View/acoustic_data_tab.py index d8e8ccd..2e5031e 100644 --- a/View/acoustic_data_tab.py +++ b/View/acoustic_data_tab.py @@ -1050,8 +1050,8 @@ class AcousticDataTab(QWidget): # layout="constrained") # self.canvas_BS = FigureCanvas(self.fig_BS) self.canvas_BS = FigureCanvas() + self.toolbar_BS = NavigationToolBar(self.canvas_BS, self) - self.toolbar_BS = NavigationToolBar(self.canvas_BS, ) self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.addWidget(self.toolbar_BS) # self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.removeWidget(self.scroll_BS) @@ -1100,26 +1100,33 @@ class AcousticDataTab(QWidget): self.groupbox_plot_the_vertical_profile_for_a_frequency.setTitle("Plot the vertical profile for one frequency") self.horizontalLayout_spacerItem_combobox_frequency_profile = QHBoxLayout() - self.verticalLayout_groupbox_plot_the_vertical_profile_for_a_frequency.addLayout(self.horizontalLayout_spacerItem_combobox_frequency_profile) + self.verticalLayout_groupbox_plot_the_vertical_profile_for_a_frequency.addLayout( + self.horizontalLayout_spacerItem_combobox_frequency_profile) self.spacerItem_frequency_profile = QSpacerItem(50, 10, QSizePolicy.Expanding, QSizePolicy.Minimum) - # self.horizontalLayout_spacerItem_combobox_frequency_profile.addSpacerItem(self.spacerItem_frequency_profile) + self.horizontalLayout_spacerItem_combobox_frequency_profile.addSpacerItem(self.spacerItem_frequency_profile) self.combobox_frequency_profile = QComboBox() - # self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.combobox_frequency_profile) + self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.combobox_frequency_profile) self.groupbox_plot_profile = QGroupBox() - self.groupbox_plot_profile.setTitle("Profile") self.verticalLayout_groupbox_plot_profile = QVBoxLayout(self.groupbox_plot_profile) + self.verticalLayout_groupbox_plot_the_vertical_profile_for_a_frequency.addWidget(self.groupbox_plot_profile) + # self.groupbox_plot_profile = QGroupBox() + # self.groupbox_plot_profile.setTitle("Profile") + # self.verticalLayout_groupbox_plot_profile = QVBoxLayout(self.groupbox_plot_profile) + # self.verticalLayout_groupbox_plot_the_vertical_profile_for_a_frequency.addWidget(self.groupbox_plot_profile) + # self.fig_profile, self.axis_profile = plt.subplots(nrows=1, ncols=1, layout="constrained") # self.canvas_plot_profile = FigureCanvas(self.fig_profile) self.canvas_plot_profile = FigureCanvas() - self.toolbar_profile = NavigationToolBar(self.canvas_plot_profile, ) + self.toolbar_profile = NavigationToolBar(self.canvas_plot_profile, self) # print("navigation toolbar item", self.toolbar_profile.toolitems) - self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.toolbar_profile) - self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.combobox_frequency_profile) + # self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.toolbar_profile) + # self.horizontalLayout_spacerItem_combobox_frequency_profile.addWidget(self.combobox_frequency_profile) + self.verticalLayout_groupbox_plot_profile.addWidget(self.toolbar_profile) self.verticalLayout_groupbox_plot_profile.addWidget(self.canvas_plot_profile) # self.canvas_plot_profile = None @@ -1167,8 +1174,8 @@ class AcousticDataTab(QWidget): self.max_selected_file = 1 # self.btnToggled() - plt.rcParams['figure.max_open_warning'] = 100 - print("plt.rcParams['figure.max_open_warning'] ", plt.rcParams['figure.max_open_warning']) + # plt.rcParams['figure.max_open_warning'] = 100 + # print("plt.rcParams['figure.max_open_warning'] ", plt.rcParams['figure.max_open_warning']) # -------------------------------------------------------------------------------------------------------------- # --- Connect signal of widget --- @@ -1706,8 +1713,6 @@ class AcousticDataTab(QWidget): self.WindowNoiseLevelTailAveragedProfile().show() def open_dialog_box(self): - # print(self.combobox_ABS_system_choice.currentText()) - # print(self.sender().objectName()) # --- Open dialog box + choice directory and select file --- if self.combobox_ABS_system_choice.currentIndex() == 0: @@ -1718,13 +1723,19 @@ class AcousticDataTab(QWidget): msgBox.setStandardButtons(QMessageBox.Ok) msgBox.exec() elif self.combobox_ABS_system_choice.currentIndex() == 1: - filename = QFileDialog.getOpenFileName(self, "Open file", + filename = QFileDialog.getOpenFileNames(self, "Open file", [stg.path_BS_raw_data[-1] if self.fileListWidget.count() > 0 else ""][0], "Aquascat file (*.aqa)") - dir_name = path.dirname(filename[0]) - name = path.basename(filename[0]) - print(f"dir name : {dir_name} & file name : {name}") - # print(dir_name, name) + for name in filename[0]: + + stg.path_BS_raw_data.append(path.dirname(name)) + stg.filename_BS_raw_data.append(path.basename(name)) + stg.data_preprocessed.append(path.basename(name)) + + print("stg.path_BS_raw_data ", stg.path_BS_raw_data) + print("stg.filename_BS_raw_data ", stg.filename_BS_raw_data) + print("stg.data_preprocessed ", stg.data_preprocessed) + elif self.combobox_ABS_system_choice.currentIndex() == 2: filename = QFileDialog.getOpenFileName(self, "Open file", [stg.path_BS_raw_data[-1] if self.fileListWidget.count() > 0 else ""][0], @@ -1737,91 +1748,55 @@ class AcousticDataTab(QWidget): # --- Fill lineEdit with path and file names + load acoustic data --- # --- fill date, hour and measurements information + fill frequency combobox for bottom detection --- if self.combobox_ABS_system_choice.currentIndex() != 0: - # if self.sender().objectName() == "pushbutton_acoustic_file": - # if self.sender(): - # stg.path_BS_raw_data = dir_name - # stg.filename_BS_raw_data = name - # self.load_BS_acoustic_raw_data() + try: - # if self.fileListWidget.count() == 0: - # stg.path_BS_raw_data = [dir_name] - # stg.filename_BS_raw_data = [name] - # print(f"0 dir name : {dir_name} & file name : {name}") - # else: - stg.path_BS_raw_data.append(dir_name) - stg.filename_BS_raw_data.append(name) - stg.data_preprocessed.append(name) - print(f"1 dir name : {dir_name} & file name : {name}") + self.load_BS_acoustic_raw_data() print("0 Lecture de la donnée BS") + except ValueError as e: - # print("error : ", e) - # print("1 Je suis sur la donnée BS") + msgBox = QMessageBox() msgBox.setWindowTitle("Download Error") msgBox.setIcon(QMessageBox.Warning) msgBox.setText("Please select a file") msgBox.setStandardButtons(QMessageBox.Ok) msgBox.exec() + else: + print("1 Fill widget and plot graphs") print(f"stg.path_BS_raw_data {stg.path_BS_raw_data}") print(f"stg.filename_BS_raw_data {stg.filename_BS_raw_data}") # self.lineEdit_acoustic_file.setText(stg.filename_BS_raw_data) # self.lineEdit_acoustic_file.setToolTip(stg.path_BS_raw_data) print("0. Number of filenames in fileListWidget : ", self.fileListWidget.count()) - self.fileListWidget.addFilenames([stg.filename_BS_raw_data[-1]]) + + if self.fileListWidget.count() == 0: + + for p, f in zip(stg.path_BS_raw_data, stg.filename_BS_raw_data): + self.fileListWidget.addFilenames([f]) + self.fileListWidget.setToolTip(p) + + else: + print("self.fileListWidget.count() ", self.fileListWidget.count()) + print("stg.filename_BS_raw_data ", stg.filename_BS_raw_data) + for k in range(self.fileListWidget.count(), len(stg.filename_BS_raw_data), 1): + print("k = ", k) + self.fileListWidget.addFilenames([stg.filename_BS_raw_data[k]]) + self.fileListWidget.setToolTip(stg.path_BS_raw_data[k]) + print("1. Number of filenames in fileListWidget : ", self.fileListWidget.count()) - # self.btnToggled() - self.fileListWidget.setToolTip(stg.path_BS_raw_data[-1]) - # self.label_date_acoustic_file.clear() - # self.label_date_acoustic_file.setText( - # _translate("CONSTANT_STRING", cs.DATE) + ": " + str(stg.date[self.fileListWidget.currentRow()])) - # self.label_hour_acoustic_file.clear() - # self.label_hour_acoustic_file.setText( - # _translate("CONSTANT_STRING", cs.HOUR) + ": " + str(stg.hour[self.fileListWidget.currentRow()])) + print("2. fileListWidget : ", self.fileListWidget) + self.fill_measurements_information_groupbox() self.fill_table() - # self.set_range_for_doubleRangeSlider_time() - # self.set_range_for_doubleRangeSlider_depth() - # self.set_range_for_doubleRangeSlider_intg_area() self.plot_backscattered_acoustic_signal_recording() self.update_frequency_combobox() - # self.combobox_frequency_bathymetry.clear() - # self.combobox_frequency_bathymetry.addItems([f for f in stg.freq_text[self.fileListWidget.currentRow()]]) - # self.combobox_frequency_profile.clear() - # self.combobox_frequency_profile.addItems([f for f in stg.freq_text[self.fileListWidget.currentRow()]]) stg.acoustic_data = list(range(self.fileListWidget.count())) - print("helloooooooo ", stg.acoustic_data) - # if self.sender().objectName() == "pushbutton_noise_file": - # print("--- 0. Je suis dans le push button noise file ---") - # try: - # print("--- 1. Je suis dans le push button noise file ---") - # stg.path_BS_noise_data = dir_name - # stg.filename_BS_noise_data = name - # print("dir_name ", stg.path_BS_noise_data) - # print("filename ", stg.filename_BS_noise_data) - # self.load_noise_data_and_compute_SNR() - # print("0 je suis sur la donnée SNR") - # except ValueError as e: - # print("1 je suis sur la donnée SNR") - # msgBox = QMessageBox() - # msgBox.setWindowTitle("Download Error") - # msgBox.setIcon(QMessageBox.Warning) - # msgBox.setText("Please select a file") - # msgBox.setStandardButtons(QMessageBox.Ok) - # msgBox.exec() - # else: - # self.lineEdit_noise_file.setText(stg.filename_BS_noise_data) - # self.lineEdit_noise_file.setToolTip(stg.path_BS_noise_data) - # self.label_date_groupbox_noise_file.setText( - # _translate("CONSTANT_STRING", cs.DATE) + ": " + str(stg.date_noise)) - # self.label_hour_groupbox_noise_file.setText( - # _translate("CONSTANT_STRING", cs.HOUR) + ": " + str(stg.hour_noise)) - def rename_file_in_ListWidget(self, event): print("souris cliqué !") print(f"event = {event}") @@ -1908,9 +1883,9 @@ class AcousticDataTab(QWidget): self.doubleRangeSlider_distance_from_bank.setValue(value=(5, 40)) self.combobox_frequency_bathymetry.clear() - self.doubleRangeSlider_intg_area.setRange(min=0, max=50) - self.doubleRangeSlider_intg_area.setValue(value=(5, 40)) - self.spinbox_offset_next_cell.setValue(0.00) + self.spinbox_depth_min_bathy.setValue(0.00) + self.spinbox_depth_max_bathy.setValue(0.00) + self.doublespinbox_next_cell_bathy.setValue(0.00) # --- Clear table of values --- self.tableView.reset() @@ -1980,9 +1955,9 @@ class AcousticDataTab(QWidget): self.doubleRangeSlider_distance_from_bank.setValue(value=(5, 40)) self.combobox_frequency_bathymetry.clear() - self.doubleRangeSlider_intg_area.setRange(min=0, max=50) - self.doubleRangeSlider_intg_area.setValue(value=(5, 40)) - self.spinbox_offset_next_cell.setValue(0.00) + self.spinbox_depth_min_bathy.setValue(0.00) + self.spinbox_depth_max_bathy.setValue(0.00) + self.doublespinbox_next_cell_bathy.setValue(0.00) # --- Clear table of values --- self.tableView.reset() @@ -2039,118 +2014,38 @@ class AcousticDataTab(QWidget): self.slider.setMaximum(10) def load_BS_acoustic_raw_data(self): - print("Je suis dans le load_BS_acoustic_raw_data") - if self.combobox_ABS_system_choice.currentIndex() == 1: - print("Je suis dans le load_BS_acoustic_raw_data - 1") - acoustic_data = AcousticDataLoader(stg.path_BS_raw_data[-1] + "/" + stg.filename_BS_raw_data[-1]) - # stg.ABS_name.append(self.combobox_ABS_system_choice.currentText()) - # 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_reshape.append(acoustic_data.reshape_r()) - # stg.time.append(acoustic_data._time) - # stg.time_reshape.append(acoustic_data.reshape_time()) - # stg.freq.append(acoustic_data._freq) - # stg.freq_text.append(acoustic_data._freq_text) - # stg.date.append(acoustic_data._date) - # stg.hour.append(acoustic_data._hour) - # stg.nb_profiles.append(acoustic_data._nb_profiles) - # stg.nb_profiles_per_sec.append(acoustic_data._nb_profiles_per_sec) - # stg.nb_cells.append(acoustic_data._nb_cells) - # stg.cell_size.append(acoustic_data._cell_size) - # stg.pulse_length.append(acoustic_data._cell_size) - # stg.nb_pings_per_sec.append(acoustic_data._nb_pings_per_sec) - # stg.nb_pings_averaged_per_profile.append(acoustic_data._nb_pings_averaged_per_profile) - # stg.kt_read.append(acoustic_data._kt) - # stg.kt_corrected.append(acoustic_data._kt) - # stg.gain_rx.append(acoustic_data._gain_rx) - # stg.gain_tx.append(acoustic_data._gain_tx) - # stg.temperature.append(self.spinbox_temperature.value()) + if self.fileListWidget.count() == 0: - # if self.fileListWidget.count() == 0: - # - # stg.ABS_name = [self.combobox_ABS_system_choice.currentText()] - # stg.BS_raw_data = [acoustic_data._BS_raw_data] - # # print("len(stg.BS_raw_data) ", len(stg.BS_raw_data)) - # # print("stg.BS_raw_data[0].shape ", stg.BS_raw_data[0].shape) - # stg.BS_raw_data_reshape = [acoustic_data.reshape_BS_raw_data()] - # stg.depth = [acoustic_data._r] - # stg.depth_2D = [acoustic_data.compute_r_2D()] - # stg.depth_reshape = [acoustic_data.reshape_r()] - # stg.time = [acoustic_data._time] - # stg.time_reshape = [acoustic_data.reshape_time()] - # stg.freq = [acoustic_data._freq] - # stg.freq_text = [acoustic_data._freq_text] - # # print("freq text ", stg.freq_text) - # stg.date = [acoustic_data._date] - # stg.hour = [acoustic_data._hour] - # stg.nb_profiles = [acoustic_data._nb_profiles] - # stg.nb_profiles_per_sec = [acoustic_data._nb_profiles_per_sec] - # stg.nb_cells = [acoustic_data._nb_cells] - # stg.cell_size = [acoustic_data._cell_size] - # stg.pulse_length = [acoustic_data._cell_size] - # stg.nb_pings_per_sec = [acoustic_data._nb_pings_per_sec] - # stg.nb_pings_averaged_per_profile = [acoustic_data._nb_pings_averaged_per_profile] - # stg.kt = [acoustic_data._kt] - # stg.gain_rx = [acoustic_data._gain_rx] - # stg.gain_tx = [acoustic_data._gain_tx] - # - # else: - # - # stg.ABS_name.append(self.combobox_ABS_system_choice.currentText()) - # 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_reshape.append(acoustic_data.reshape_r()) - # stg.time.append(acoustic_data._time) - # stg.time_reshape.append(acoustic_data.reshape_time()) - # stg.freq.append(acoustic_data._freq) - # stg.freq_text.append(acoustic_data._freq_text) - # stg.date.append(acoustic_data._date) - # stg.hour.append(acoustic_data._hour) - # stg.nb_profiles.append(acoustic_data._nb_profiles) - # stg.nb_profiles_per_sec.append(acoustic_data._nb_profiles_per_sec) - # stg.nb_cells.append(acoustic_data._nb_cells) - # stg.cell_size.append(acoustic_data._cell_size) - # stg.pulse_length.append(acoustic_data._cell_size) - # stg.nb_pings_per_sec.append(acoustic_data._nb_pings_per_sec) - # stg.nb_pings_averaged_per_profile.append(acoustic_data._nb_pings_averaged_per_profile) - # stg.kt.append(acoustic_data._kt) - # stg.gain_rx.append(acoustic_data._gain_rx) - # stg.gain_tx.append(acoustic_data._gain_tx) + for p, f in zip(stg.path_BS_raw_data, stg.filename_BS_raw_data): + print("p ", p) + print("f ", f) - elif self.combobox_ABS_system_choice.currentIndex() == 2: + if self.combobox_ABS_system_choice.currentIndex() == 1: - acoustic_data = AcousticDataLoaderUBSediFlow(stg.path_BS_raw_data[-1] + "/" + stg.filename_BS_raw_data[-1]) + acoustic_data = AcousticDataLoader(p + "/" + f) - # stg.ABS_name.append(self.combobox_ABS_system_choice.currentText()) - # 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_reshape.append(acoustic_data.reshape_r()) - # stg.time.append(acoustic_data._time) - # stg.time_reshape.append(acoustic_data.reshape_t()) - # stg.freq.append(acoustic_data._freq) - # stg.freq_text.append(acoustic_data._freq_text) - # stg.date.append(acoustic_data._date) - # stg.hour.append(acoustic_data._hour) - # stg.nb_profiles.append(acoustic_data._nb_profiles) - # stg.nb_profiles_per_sec.append(acoustic_data._nb_profiles_per_sec) - # stg.nb_cells.append(acoustic_data._nb_cells) - # stg.cell_size.append(acoustic_data._cell_size) - # stg.pulse_length.append(acoustic_data._cell_size) - # stg.nb_pings_per_sec.append(acoustic_data._nb_pings_per_sec) - # stg.nb_pings_averaged_per_profile.append(acoustic_data._nb_pings_averaged_per_profile) - # stg.kt_read.append(acoustic_data._kt) - # stg.kt_corrected.append(acoustic_data._kt) - # stg.gain_rx.append(acoustic_data._gain_rx) - # stg.gain_tx.append(acoustic_data._gain_tx) - # stg.temperature.append(self.spinbox_temperature.value()) + elif self.combobox_ABS_system_choice.currentIndex() == 2: + acoustic_data = AcousticDataLoaderUBSediFlow(p + "/" + f) + + self.initiate_setting_parameters(acoustic_data=acoustic_data) + + else: + + for k in range(self.fileListWidget.count(), len(stg.filename_BS_raw_data), 1): + + if self.combobox_ABS_system_choice.currentIndex() == 1: + + acoustic_data = AcousticDataLoader(stg.path_BS_raw_data[k] + "/" + stg.filename_BS_raw_data[k]) + + elif self.combobox_ABS_system_choice.currentIndex() == 2: + + acoustic_data = AcousticDataLoaderUBSediFlow(stg.path_BS_raw_data[k] + "/" + stg.filename_BS_raw_data[k]) + + self.initiate_setting_parameters(acoustic_data=acoustic_data) + + def initiate_setting_parameters(self, acoustic_data): # --- The acoustic variables are field with loaded data --- stg.ABS_name.append(self.combobox_ABS_system_choice.currentText()) @@ -2181,7 +2076,6 @@ class AcousticDataTab(QWidget): stg.water_velocity.append(0) stg.water_attenuation.append([]) - # --- The other acoustic variables lists are filled with empty object. --- # --- They will be used for pre- and post-processing --- @@ -2240,70 +2134,6 @@ class AcousticDataTab(QWidget): 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()] - # stg.date = [acoustic_data._date] - # stg.hour = [acoustic_data._hour] - # stg.freq = [acoustic_data._freq] - # stg.time = [acoustic_data._time] - # stg.depth = [acoustic_data._r] - # stg.depth_2D = [acoustic_data.compute_r_2D()] - # stg.freq_text = [acoustic_data._freq_text] - # stg.BS_raw_data = [acoustic_data._BS_raw_data] - # stg.BS_raw_data_reshape = acoustic_data.reshape_BS_raw_data() - # stg.depth_reshape = acoustic_data.reshape_r() - # stg.time_reshape = acoustic_data.reshape_t() - # - # else: - # - # stg.ABS_name.append(self.combobox_ABS_system_choice.currentText()) - # stg.date.append(acoustic_data._date) - # stg.hour.append(acoustic_data._hour) - # stg.freq.append(acoustic_data._freq) - # stg.time.append(acoustic_data._time) - # stg.depth.append(acoustic_data._r) - # stg.depth_2D.append(acoustic_data.compute_r_2D()) - # stg.freq_text.append(acoustic_data._freq_text) - # stg.BS_raw_data.append(acoustic_data._BS_raw_data) - - - # stg.SNR_data = acoustic_data._SNR_data - # stg.snr_reshape = acoustic_data.reshape_SNR_data() - # print(f"r = {stg.depth}") - - # def load_noise_data_and_compute_SNR(self): - # if self.combobox_ABS_system_choice.currentIndex() == 1: - # - # noise_data = AcousticDataLoader(stg.path_BS_noise_data + "/" + stg.filename_BS_noise_data) - # stg.BS_noise_raw_data = noise_data._BS_raw_data - # stg.date_noise = noise_data._date - # stg.hour_noise = noise_data._hour - # stg.time_snr = stg.time - # stg.time_snr_reshape = stg.time_reshape - # print(stg.time_snr.shape) - # noise = np.zeros(stg.BS_raw_data.shape) - # for f, _ in enumerate(noise_data._freq): - # noise[f, :, :] = np.mean(stg.BS_noise_raw_data[f, :, :], axis=(0, 1)) - # stg.BS_noise_averaged_data = noise - # stg.SNR_data = np.divide((stg.BS_raw_data - stg.BS_noise_averaged_data) ** 2, stg.BS_noise_averaged_data ** 2) - # stg.SNR_reshape = np.reshape(stg.SNR_data, (stg.depth.shape[1] * stg.time.shape[1], stg.freq.shape[0]), order="F") - # - # elif self.combobox_ABS_system_choice.currentIndex() == 2: - # - # noise_data = AcousticDataLoaderUBSediFlow(stg.path_BS_noise_data + "/" + stg.filename_BS_noise_data) - # stg.BS_noise_raw_data = noise_data._BS_raw_data - # print(f"BS noise raw data : {stg.BS_noise_raw_data}") - # stg.date_noise = noise_data._date - # print(f"date noise : {stg.date_noise}") - # stg.hour_noise = noise_data._hour - # print(f"hour noise : {stg.hour_noise}") - # stg.time_snr = noise_data._time_snr - # stg.time_snr_reshape = noise_data.reshape_t_snr() - # print(f"BS shape : {stg.BS_noise_raw_data.shape}") - # # stg.SNR_data = noise_data._SNR_data - # # stg.SNR_reshape = noise_data.reshape_SNR_data() - def fill_measurements_information_groupbox(self): # if self.combobox_ABS_system_choice.currentIndex() == 1: @@ -2495,7 +2325,7 @@ class AcousticDataTab(QWidget): def combobox_frequency_information_update(self): if self.fileListWidget.count() > 0: - print("stg.water_attenuation ", stg.water_attenuation) + # print("stg.water_attenuation ", stg.water_attenuation) if stg.water_attenuation[self.fileListWidget.currentRow()]: self.spinbox_sound_attenuation.clear() self.spinbox_sound_attenuation.setValue(stg.water_attenuation[self.fileListWidget.currentRow()] @@ -2544,11 +2374,11 @@ class AcousticDataTab(QWidget): self.spinbox_kt.clear() if self.checkbox_kt.isChecked(): - print("combobox information update : checkbox checked") + # print("combobox information update : checkbox checked") self.spinbox_kt.setValue(stg.kt_corrected[self.fileListWidget.currentRow()] [self.combobox_frequency_information.currentIndex()]) else: - print("combobox information update : checkbox unchecked") + # print("combobox information update : checkbox unchecked") self.spinbox_kt.setValue(stg.kt_read[self.fileListWidget.currentRow()] [self.combobox_frequency_information.currentIndex()]) self.spinbox_kt.setSuffix(f" V.m^{1.5}") @@ -2563,13 +2393,13 @@ class AcousticDataTab(QWidget): def activate_unactivate_spinbox_kt(self): if self.checkbox_kt.isChecked(): - print(f"checkbox checked : kt corrected {stg.kt_corrected}") + # print(f"checkbox checked : kt corrected {stg.kt_corrected}") self.spinbox_kt.setValue(stg.kt_corrected[self.fileListWidget.currentRow()] [self.combobox_frequency_information.currentIndex()]) self.spinbox_kt.setEnabled(True) else: - print(f"checkbox unchecked : kt read {stg.kt_read}") + # print(f"checkbox unchecked : kt read {stg.kt_read}") self.spinbox_kt.setValue(stg.kt_read[self.fileListWidget.currentRow()] [self.combobox_frequency_information.currentIndex()]) self.spinbox_kt.setDisabled(True) @@ -2589,13 +2419,13 @@ class AcousticDataTab(QWidget): self.spinbox_tx.setDisabled(True) def kt_value(self): - print(f"0 stg.kt_read : {stg.kt_read}") - print(f"0 stg.kt_corrected {stg.kt_corrected}") + # print(f"0 stg.kt_read : {stg.kt_read}") + # print(f"0 stg.kt_corrected {stg.kt_corrected}") if self.checkbox_kt.isChecked(): stg.kt_corrected[self.fileListWidget.currentRow()][self.combobox_frequency_information.currentIndex()] = ( self.spinbox_kt.value()) - print(f"1 stg.kt_read : {stg.kt_read}") - print(f"1 stg.kt_corrected {stg.kt_corrected}") + # print(f"1 stg.kt_read : {stg.kt_read}") + # print(f"1 stg.kt_corrected {stg.kt_corrected}") def gain_rx_value(self): stg.gain_rx[self.fileListWidget.currentRow()][self.combobox_frequency_information.currentIndex()] =\ @@ -3263,11 +3093,13 @@ class AcousticDataTab(QWidget): if self.fileListWidget.currentRow() != -1: + self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.removeWidget(self.toolbar_BS) self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.removeWidget(self.scroll_BS) self.fig_BS, self.axis_BS = plt.subplots(nrows=stg.freq[self.fileListWidget.currentRow()].shape[0], ncols=1, sharex=True, sharey=False, layout="constrained") self.canvas_BS = FigureCanvas(self.fig_BS) + self.toolbar_BS = NavigationToolBar(self.canvas_BS, self) # self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.addWidget(self.canvas_BS) # self.scroll_BS = QScrollArea() @@ -3276,6 +3108,8 @@ class AcousticDataTab(QWidget): # self.scroll_BS.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) # # self.scroll_BS.setWidgetResizable(True) # self.scroll_BS.setAlignment(Qt.AlignCenter) + + self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.addWidget(self.toolbar_BS) self.verticalLayout_groupbox_transect_2Dplot_raw_BS_data.addWidget(self.scroll_BS) for f, _ in enumerate(stg.freq[self.fileListWidget.currentRow()]): @@ -3690,11 +3524,15 @@ class AcousticDataTab(QWidget): # self.slider.setMaximum(stg.BS_raw_data[self.fileListWidget.currentRow()].shape[2]) self.slider.setMaximum(stg.time[self.fileListWidget.currentRow()].shape[1]) + self.verticalLayout_groupbox_plot_profile.removeWidget(self.toolbar_profile) self.verticalLayout_groupbox_plot_profile.removeWidget(self.canvas_plot_profile) # --- Figure to plot profiles --- self.fig_profile, self.axis_profile = plt.subplots(nrows=1, ncols=1, layout="constrained") self.canvas_plot_profile = FigureCanvas(self.fig_profile) + self.toolbar_profile = NavigationToolBar(self.canvas_plot_profile, self) + + self.verticalLayout_groupbox_plot_profile.addWidget(self.toolbar_profile) self.verticalLayout_groupbox_plot_profile.addWidget(self.canvas_plot_profile) # for f, _ in enumerate(stg.freq[0]):