diff --git a/View/acoustic_data_tab.py b/View/acoustic_data_tab.py index d958e5a..4b16696 100644 --- a/View/acoustic_data_tab.py +++ b/View/acoustic_data_tab.py @@ -1811,7 +1811,6 @@ class AcousticDataTab(QWidget): ][1] ) - self.lineEdit_kt.setText( str("%.4f" % stg.kt_corrected[freq_id]) ) @@ -1835,76 +1834,124 @@ class AcousticDataTab(QWidget): self.lineEdit_tx.returnPressed.connect(self.gain_tx_value) def combobox_frequency_information_update(self): - if self.fileListWidget.count() > 0: + if self.fileListWidget.count() <= 0: + return - if stg.water_attenuation[self.fileListWidget.currentRow()]: + file_id = self.fileListWidget.currentRow() + freq_id = self.combobox_frequency_information.currentIndex() - self.lineEdit_sound_attenuation.setText( - str("%.6f" % stg.water_attenuation[self.fileListWidget.currentRow()][ - self.combobox_frequency_information.currentIndex()])) + if stg.water_attenuation[file_id]: + self.lineEdit_sound_attenuation.setText( + str( + "%.6f" + % stg.water_attenuation[file_id][freq_id] + ) + ) - self.label_profiles_value.clear() - self.gridLayout_groupbox_info.removeWidget(self.label_profiles_value) - self.label_profiles_value.setText(str(stg.nb_profiles[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()])) - self.gridLayout_groupbox_info.addWidget(self.label_profiles_value, 8, 1, 1, 1, Qt.AlignLeft) + self.label_profiles_value.clear() + self.gridLayout_groupbox_info.removeWidget( + self.label_profiles_value + ) + self.label_profiles_value.setText( + str( + stg.nb_profiles[file_id][freq_id] + ) + ) + self.gridLayout_groupbox_info.addWidget( + self.label_profiles_value, + 8, 1, 1, 1, Qt.AlignLeft + ) - self.label_profiles_per_sec_value.clear() - self.label_profiles_per_sec_value.setText( - str(stg.nb_profiles_per_sec[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()]) + " Hz") - self.gridLayout_groupbox_info.addWidget(self.label_profiles_per_sec_value, 9, 1, 1, 1, Qt.AlignLeft) + self.label_profiles_per_sec_value.clear() + self.label_profiles_per_sec_value.setText( + str( + stg.nb_profiles_per_sec[file_id][freq_id] + ) + " Hz" + ) + self.gridLayout_groupbox_info.addWidget( + self.label_profiles_per_sec_value, + 9, 1, 1, 1, Qt.AlignLeft + ) - self.label_cells_value.clear() - self.label_cells_value.setText(str(stg.nb_cells[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()])) - self.gridLayout_groupbox_info.addWidget(self.label_cells_value, 10, 1, 1, 1, Qt.AlignLeft) + self.label_cells_value.clear() + self.label_cells_value.setText( + str( + stg.nb_cells[file_id][freq_id] + ) + ) + self.gridLayout_groupbox_info.addWidget( + self.label_cells_value, + 10, 1, 1, 1, Qt.AlignLeft + ) - self.label_cell_size_value.clear() - self.gridLayout_groupbox_info.removeWidget(self.label_cell_size_value) - self.label_cell_size_value.setText( - str(100 * round(stg.cell_size[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()], 3)) + " cm") - self.gridLayout_groupbox_info.addWidget(self.label_cell_size_value, 11, 1, 1, 1, Qt.AlignLeft) + self.label_cell_size_value.clear() + self.gridLayout_groupbox_info.removeWidget(self.label_cell_size_value) + self.label_cell_size_value.setText( + str( + 100 * round(stg.cell_size[file_id][freq_id], 3) + ) + " cm" + ) + self.gridLayout_groupbox_info.addWidget( + self.label_cell_size_value, + 11, 1, 1, 1, Qt.AlignLeft + ) - self.label_pulse_length_value.clear() - self.label_pulse_length_value.setText( - str(round(stg.pulse_length[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()], 6)) + " sec") - self.gridLayout_groupbox_info.addWidget(self.label_pulse_length_value, 12, 1, 1, 1, Qt.AlignLeft) + self.label_pulse_length_value.clear() + self.label_pulse_length_value.setText( + str( + round(stg.pulse_length[file_id][freq_id], 6) + ) + " sec" + ) + self.gridLayout_groupbox_info.addWidget( + self.label_pulse_length_value, + 12, 1, 1, 1, Qt.AlignLeft + ) - self.label_pings_per_sec_value.clear() - self.label_pings_per_sec_value.setText(str(stg.nb_pings_per_sec[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()]) + " Hz") - self.gridLayout_groupbox_info.addWidget(self.label_pings_per_sec_value, 13, 1, 1, 1, Qt.AlignLeft) + self.label_pings_per_sec_value.clear() + self.label_pings_per_sec_value.setText( + str( + stg.nb_pings_per_sec[file_id][freq_id] + ) + " Hz" + ) + self.gridLayout_groupbox_info.addWidget( + self.label_pings_per_sec_value, + 13, 1, 1, 1, Qt.AlignLeft + ) - self.label_pings_per_profile_value.clear() - self.label_pings_per_profile_value.setText( - str(stg.nb_pings_averaged_per_profile[self.fileListWidget.currentRow()] - [self.combobox_frequency_information.currentIndex()])) - self.gridLayout_groupbox_info.addWidget(self.label_pings_per_profile_value, 14, 1, 1, 1, Qt.AlignLeft) + self.label_pings_per_profile_value.clear() + self.label_pings_per_profile_value.setText( + str(stg.nb_pings_averaged_per_profile[file_id][freq_id]) + ) + self.gridLayout_groupbox_info.addWidget( + self.label_pings_per_profile_value, + 14, 1, 1, 1, Qt.AlignLeft + ) - if self.checkbox_kt.isChecked(): - if self.combobox_frequency_information.count() > 0: - self.lineEdit_kt.setText(str("%.4f" % stg.kt_corrected[self.combobox_frequency_information.currentIndex()])) - else: - self.lineEdit_kt.setText(str("%.4f" % stg.kt_read[self.combobox_frequency_information.currentIndex()])) + if self.checkbox_kt.isChecked(): + if self.combobox_frequency_information.count() > 0: + self.lineEdit_kt.setText( + str("%.4f" % stg.kt_corrected[freq_id]) + ) + else: + self.lineEdit_kt.setText(str("%.4f" % stg.kt_read[freq_id])) - self.lineEdit_rx.setText(str(stg.gain_rx[self.fileListWidget.currentRow()][ - self.combobox_frequency_information.currentIndex()])) + self.lineEdit_rx.setText( + str(stg.gain_rx[file_id][freq_id]) + ) - self.lineEdit_tx.setText(str(stg.gain_tx[self.fileListWidget.currentRow()][ - self.combobox_frequency_information.currentIndex()])) + self.lineEdit_tx.setText(str(stg.gain_tx[file_id][freq_id])) def activate_unactivate_spinbox_kt(self): + freq_id = self.combobox_frequency_information.currentIndex() + if self.checkbox_kt.isChecked(): self.lineEdit_kt.setEnabled(True) if stg.kt_corrected: - self.lineEdit_kt.setText(str("%.4f" % stg.kt_corrected[self.combobox_frequency_information.currentIndex()])) + self.lineEdit_kt.setText(str("%.4f" % stg.kt_corrected[freq_id])) else: self.lineEdit_kt.setDisabled(True) if stg.kt_read: - self.lineEdit_kt.setText(str("%.4f" % stg.kt_read[self.combobox_frequency_information.currentIndex()])) + self.lineEdit_kt.setText(str("%.4f" % stg.kt_read[freq_id])) def activate_unactivate_spinbox_rx(self): if self.checkbox_rx.isChecked(): @@ -1919,33 +1966,48 @@ class AcousticDataTab(QWidget): self.lineEdit_tx.setDisabled(True) def kt_value(self): + if self.fileListWidget.count() <= 0: + return - if self.fileListWidget.count() > 0: - if self.checkbox_kt.isChecked(): + if not self.checkbox_kt.isChecked(): + return - if findall(r",", self.lineEdit_kt.text()): - stg.kt_corrected[self.combobox_frequency_information.currentIndex()] = ( - float(self.lineEdit_kt.text().replace(',', '.'))) - self.lineEdit_kt.setText("%.4f" % float(self.lineEdit_kt.text().replace(',', '.'))) - else: - stg.kt_corrected[self.combobox_frequency_information.currentIndex()] = ( - float(self.lineEdit_kt.text())) - self.lineEdit_kt.setText("%.4f" % float(self.lineEdit_kt.text())) + freq_id = self.combobox_frequency_information.currentIndex() + + if findall(r",", self.lineEdit_kt.text()): + stg.kt_corrected[freq_id] = ( + float(self.lineEdit_kt.text().replace(',', '.')) + ) + self.lineEdit_kt.setText( + "%.4f" % float( + self.lineEdit_kt.text().replace(',', '.') + ) + ) + else: + stg.kt_corrected[freq_id] = ( + float(self.lineEdit_kt.text()) + ) + self.lineEdit_kt.setText("%.4f" % float(self.lineEdit_kt.text())) def gain_rx_value(self): - if self.fileListWidget.count() > 0: - stg.gain_rx[self.fileListWidget.currentRow()][self.combobox_frequency_information.currentIndex()] = ( - float(self.lineEdit_rx.text())) + freq_id = self.combobox_frequency_information.currentIndex() + if self.fileListWidget.count() > 0: + stg.gain_rx[self.fileListWidget.currentRow()][freq_id] = ( + float(self.lineEdit_rx.text()) + ) def gain_tx_value(self): + freq_id = self.combobox_frequency_information.currentIndex() + if self.fileListWidget.count() > 0: - stg.gain_tx[self.fileListWidget.currentRow()][self.combobox_frequency_information.currentIndex()] = ( - float(self.lineEdit_tx.text())) + stg.gain_tx[self.fileListWidget.currentRow()][freq_id] = ( + float(self.lineEdit_tx.text()) + ) def fill_table(self): - if self.fileListWidget.currentRow() != -1: + file_id = self.fileListWidget.currentRow() header_list = [] header_list.clear() @@ -1956,19 +2018,37 @@ class AcousticDataTab(QWidget): header_list.append("BS - " + freq_value) if freq_ind == 0: - table_data = np.vstack((np.vstack((stg.time_reshape[self.fileListWidget.currentRow()][:, freq_ind], - stg.depth_reshape[self.fileListWidget.currentRow()][:, freq_ind])), - stg.BS_raw_data_reshape[self.fileListWidget.currentRow()][:, freq_ind])) - + table_data = np.vstack( + ( + np.vstack( + ( + stg.time_reshape[file_id][:, freq_ind], + stg.depth_reshape[file_id][:, freq_ind] + ) + ), + stg.BS_raw_data_reshape[file_id][:, freq_ind] + ) + ) else: - table_data = np.vstack((table_data, - np.vstack((np.vstack((stg.time_reshape[self.fileListWidget.currentRow()][:, freq_ind], - stg.depth_reshape[self.fileListWidget.currentRow()][:, freq_ind])), - stg.BS_raw_data_reshape[self.fileListWidget.currentRow()][:, freq_ind])) - )) + table_data = np.vstack(( + table_data, + np.vstack( + ( + np.vstack( + ( + stg.time_reshape[file_id][:, freq_ind], + stg.depth_reshape[file_id][:, freq_ind] + ) + ), + stg.BS_raw_data_reshape[file_id][:, freq_ind] + ) + ) + )) stg.DataFrame_acoustic = pd.DataFrame(None) - stg.DataFrame_acoustic = pd.DataFrame(data=table_data.transpose(), columns=header_list) + stg.DataFrame_acoustic = pd.DataFrame( + data=table_data.transpose(), columns=header_list + ) self.tableModel = TableModel(stg.DataFrame_acoustic) self.tableView.setModel(self.tableModel) @@ -1994,27 +2074,45 @@ class AcousticDataTab(QWidget): ''' tmin and tmax are filled with min and max of time when data are uploaded and double slider of time are updated with these values ''' - if self.fileListWidget.currentRow() != -1: + if self.fileListWidget.currentRow() == -1: + return - # --- tmim / tmax --- - tmin_indice = np.where(np.abs(stg.time[self.fileListWidget.currentRow()][0, :] - np.nanmin( - stg.time[self.fileListWidget.currentRow()][0, :])) == - np.nanmin(np.abs(stg.time[self.fileListWidget.currentRow()][0, :] - np.nanmin( - stg.time[self.fileListWidget.currentRow()][0, :]))))[0][0] - tmin_value = np.round(np.nanmin(stg.time[self.fileListWidget.currentRow()][0, :]), 2) - stg.tmin[self.fileListWidget.currentRow()] = (tmin_indice, tmin_value) + file_id = self.fileListWidget.currentRow() - tmax_indice = np.where(np.abs(stg.time[self.fileListWidget.currentRow()][0, :] - np.nanmax( - stg.time[self.fileListWidget.currentRow()][0, :])) == - np.nanmin(np.abs(stg.time[self.fileListWidget.currentRow()][0, :] - np.nanmax( - stg.time[self.fileListWidget.currentRow()][0, :]))))[0][0] - tmax_value = np.round(np.nanmax(stg.time[self.fileListWidget.currentRow()][0, :]), 2) - stg.tmax[self.fileListWidget.currentRow()] = (tmax_indice + 1, tmax_value) + tmin_indice = np.where( + np.abs( + stg.time[file_id][0, :] - np.nanmin(stg.time[file_id][0, :]) + ) == np.nanmin( + np.abs( + stg.time[file_id][0, :] + - np.nanmin(stg.time[file_id][0, :]) + ) + ) + )[0][0] - self.set_range_for_time_boundaries_option() + tmin_value = np.round( + np.nanmin(stg.time[file_id][0, :]), 2 + ) + + stg.tmin[file_id] = (tmin_indice, tmin_value) + + tmax_indice = np.where( + np.abs( + stg.time[file_id][0, :] - np.nanmax(stg.time[file_id][0, :]) + ) == np.nanmin( + np.abs( + stg.time[file_id][0, :] + - np.nanmax(stg.time[file_id][0, :]) + ) + ) + )[0][0] + + tmax_value = np.round(np.nanmax(stg.time[file_id][0, :]), 2) + stg.tmax[file_id] = (tmax_indice + 1, tmax_value) + + self.set_range_for_time_boundaries_option() def set_range_for_time_boundaries_option(self): - self.label_time_min.clear() self.label_time_min.setText("%.5s" % str(stg.time[self.fileListWidget.currentRow()][0, 0]))