acoused/View/acoustic_inversion_tab.py

143 lines
7.5 KiB
Python

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_())
#
#