import sys from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication, QVBoxLayout, QHBoxLayout, QGroupBox from PyQt5.QtCore import QCoreApplication import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LogNorm, BoundaryNorm, CSS4_COLORS from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar import Translation.constant_string as cs _translate = QCoreApplication.translate class AcousticInversionTab(QWidget): ''' This class generates the Acoustic Inversion Tab ''' def __init__(self, widget_tab): super().__init__() # # self.verticalLayout_acoustic_inversion_tab = QVBoxLayout(widget_tab) # # self.horizontalLayout_Top_acousticInversionTab = QHBoxLayout() # # self.groupbox_AcousticInversionOption = QGroupBox() # # self.groupbox_AcousticInversionOption.setTitle("Acoustic inversion option") # # self.horizontalLayout_Top_acousticInversionTab.addWidget(self.groupbox_AcousticInversionOption) # # self.verticalLayout_acoustic_inversion_tab.addLayout(self.horizontalLayout_Top_acousticInversionTab, 4) # # self.horizontalLayout_Bottom_acousticInversionTab = QHBoxLayout() # # self.groupbox_sediment_concentration_2Dplot = QGroupBox() # # self.groupbox_sediment_concentration_2Dplot.setTitle("Fine and sand sediment concentration") # # self.verticalLayout_groupbox_sediment_concentration_2Dplot = QVBoxLayout(self.groupbox_sediment_concentration_2Dplot) # # self.figure_SSC_2Dplot, self.axis_SSC_2Dplot = plt.subplots(nrows=2, ncols=1) # self.canvas_sediments2DPlot = FigureCanvas(self.figure_SSC_2Dplot) # self.toolbar_concentration_2Dplot = NavigationToolBar(self.canvas_sediments2DPlot, self) # self.plot_SSC_fine() # self.plot_SSC_sand() # # self.verticalLayout_groupbox_sediment_concentration_2Dplot.addWidget(self.toolbar_concentration_2Dplot) # self.verticalLayout_groupbox_sediment_concentration_2Dplot.addWidget(self.canvas_sediments2DPlot) # # # self.horizontalLayout_Bottom_acousticInversionTab.addWidget(self.canvas_sediments2DPlot) # self.horizontalLayout_Bottom_acousticInversionTab.addWidget(self.groupbox_sediment_concentration_2Dplot, 7) # # self.groupbox_sediment_concentration_sample_vs_measurement = QGroupBox() # # self.groupbox_sediment_concentration_sample_vs_measurement.setTitle( # # "Suspended sediment concentration plot : acoustic inversion theory VS measurements") # # self.verticalLayout_groupbox_sediment_concentration_sample_vs_measurement = QVBoxLayout( # self.groupbox_sediment_concentration_sample_vs_measurement) # # self.figure_inverseSSC_vs_measuredSSC, self.axis_inverseSSC_vs_measuredSSC = plt.subplots(nrows=1, ncols=1) # self.canvas_InverseSSC_vs_MeasuredSSC = FigureCanvas(self.figure_inverseSSC_vs_measuredSSC) # self.toolbar_InverseSSC_vs_MeasuredSSC = NavigationToolBar(self.canvas_InverseSSC_vs_MeasuredSSC, self) # # self.verticalLayout_groupbox_sediment_concentration_sample_vs_measurement.addWidget( # # self.toolbar_InverseSSC_vs_MeasuredSSC) # self.verticalLayout_groupbox_sediment_concentration_sample_vs_measurement.addWidget( # self.canvas_InverseSSC_vs_MeasuredSSC, 3) # # self.horizontalLayout_Bottom_acousticInversionTab.addWidget(self.canvas_InverseSSC_vs_MeasuredSSC) # # self.horizontalLayout_Bottom_acousticInversionTab.addWidget( # self.groupbox_sediment_concentration_sample_vs_measurement) # # self.verticalLayout_acoustic_inversion_tab.addLayout(self.horizontalLayout_Bottom_acousticInversionTab, 6) # # self.retranslate_acoustic_inversion_tab() # # # --------------------------------------------------------------------------------------------- # # -------------------- Functions -------------------- # # --------------------------------------------------------------------------------------------- # # def retranslate_acoustic_inversion_tab(self): # # self.groupbox_AcousticInversionOption.setTitle(_translate("CONSTANT_STRING", cs.ACOUSTIC_INVERSION_OPTIONS)) # self.groupbox_sediment_concentration_2Dplot.setTitle(_translate("CONSTANT_STRING", cs.FINE_AND_SAND_SEDIMENTS_CONCENTRATION_2D_FIELD)) # self.groupbox_sediment_concentration_sample_vs_measurement.setTitle(_translate("CONSTANT_STRING", cs.SUSPENDED_SEDIMENT_CONCENTRATION_PLOT)) # # def plot_SSC_fine(self): # frequency = 0 # val_min = 1e-2 #np.nanmin(self.model.SSC_fine[:, :]) # # val_max = 15 #np.nanmax(self.model.SSC_fine[:, :]) # # # print('val_min=', val_min) # # print('val_max=', val_max) # # if val_min == 0: # # val_min = 0.5 # # print('val_min update =', val_min) # pcm_SSC_fine = self.axis_SSC_2Dplot[0].pcolormesh(self.model.dist_BS_section, np.flipud(self.model.BS_averaged_cross_section.r), # self.model.SSC_fine[:, :], # cmap='rainbow', norm=LogNorm(vmin=val_min, vmax=val_max), shading='gouraud') # self.axis_SSC_2Dplot[0].plot(self.model.dist_BS_section, # np.max(self.model.r_bottom_cross_section) - self.model.r_bottom_cross_section # + np.min(self.model.r_bottom_cross_section), # color='k', linewidth=2) # self.figure_SSC_2Dplot.supxlabel("Distance from left bank (m)", fontsize=10) # self.figure_SSC_2Dplot.supylabel("Depth (m)", fontsize=10) # self.figure_SSC_2Dplot.tight_layout() # # cbar_SSC_fine = self.figure_SSC_2Dplot.colorbar(pcm_SSC_fine, ax=self.axis_SSC_2Dplot[0], shrink=1, location='right') # cbar_SSC_fine.set_label(label='Fine SSC (g/L', rotation=270, labelpad=15) # # def plot_SSC_sand(self): # frequency = 0 # val_min = 1e-2 #np.nanmin(self.model.SSC_fine[:, :]) # # val_max = 2 #np.nanmax(self.model.SSC_fine[:, :]) # # # print('val_min=', val_min) # # print('val_max=', val_max) # # if val_min == 0: # # val_min = 0.5 # # print('val_min update =', val_min) # pcm_SSC_sand = self.axis_SSC_2Dplot[1].pcolormesh(self.model.dist_BS_section, np.flipud(self.model.BS_averaged_cross_section.r), # self.model.SSC_sand[:, :], # cmap='rainbow', norm=LogNorm(vmin=val_min, vmax=val_max), shading='gouraud') # self.axis_SSC_2Dplot[1].plot(self.model.dist_BS_section, # np.max(self.model.r_bottom_cross_section) - self.model.r_bottom_cross_section # + np.min(self.model.r_bottom_cross_section), # color='k', linewidth=2) # self.figure_SSC_2Dplot.supxlabel("Distance from left bank (m)", fontsize=10) # self.figure_SSC_2Dplot.supylabel("Depth (m)", fontsize=10) # self.figure_SSC_2Dplot.tight_layout() # # cbar_SSC_sand = self.figure_SSC_2Dplot.colorbar(pcm_SSC_sand, ax=self.axis_SSC_2Dplot[1], shrink=1, location='right') # cbar_SSC_sand.set_label(label='Sand SSC (g/L', rotation=270, labelpad=15) # # # if __name__ == "__main__": # # app = QApplication(sys.argv) # # print("class acoustic inversion tab :", AcousticInversionTab()) # # sys.exit(app.exec_()) # #